使用satis自建私有镜像

建立目的

为了不让代码公开,能够让项目基于gitlab快速自动化部署,简化单个composer.json文件配置内容

安装

使用composer

composer create-project composer/satis --keep-vcs

安装完之后与github中的目录结构一致

配置satis.json

接着在项目根目录下创建satis.json文件

{
    "name": "satis packages",
    "homepage": "http://satis.example.com",
    "repositories": [
        { "type": "git", "url": "ssh://git@gitlab.example.com/tim/test.git" }
    ],
    "require":{
        "tim/test":"dev-master"
    }
}
  • homepage

    在satis上显示的默认私有镜像地址
  • repositories

    需要被索引的git代码仓库地址
  • require

    明确定义包名可以减少索引内容,[官方配置](https://getcomposer.org/doc/articles/handling-private-packages-with-satis.md#setup)中使用require-all经过测试发现会索引全网的php包
    

接下来对镜像中的packages创建索引

php bin/satis build  satis.json ./web -v #-v参数可以看到被索引的包

使用docker

pull image

git pull composer/satis

在build目录下创建satis.json文件之后运行

docker run --rm -it -v /build:/build composer/satis

上面这条命令的作用与bin/satis命令一样,都是创建索引

自动更新

使用crontab执行创建索引命令,时间间隔看具体情况

访问web界面

配置nginx将root指向索引输出目录
访问域名之后可以看到如下界面

与gitlab一起工作

配置satis.json中看到repositories的定义是使用ssh://协议

目的在于方便管理项目成员开发以及项目部署中的权限。
假设同一个包有多个开发人员则将其他人员设置为组成员,在同一台跳板机上部署项目,并且设置项目的Visibility LevelInternal

这样在开发环境中通过登陆gitlab来判断权限。
在跳板机上则通过添加该机器的公钥到deploy keys来判断权限

这样就算其他人有仓库地址也不能拉到代码,目的基本达成。

使用私有镜像中的包建立项目

创建一个目录,再创建一个composer.json文件,依赖添加刚刚创建的包

{
    "repositories": [
        { "type": "composer", "url": "http://satis.example.com" }
    ],
    "config": {
        "secure-http": false
    },
    "require": {
          "tim/test": "dev-master"
    }
}
  • secure-http设置为false是因为satis默认为https

  • repositories是为了告诉composer镜像源不仅仅只有packagist.org,还包括了刚刚我们设置的私有镜像
    这些配置可以单独在每个composer.json文件中设置,也可以像下面这样全局配置

composer config -g secure-http false

创建完之后composer install(忽略域名于之前配置的不同,因为我已经弄完了懒得改)

同时附上tim/test包的composer.json

{
    "name": "tim/test",
    "authors": [
        {
            "name": "tim",
            "email": "tim@example.com"
        }
    ],
    "require":{
        "monolog/monolog":"1.0.*"
    }
}
IT文库 » 使用satis自建私有镜像
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址