使用私有存储库在本地运行命令很简单,这一部分也很好。
我想做的是确保Docker通过Makefile被用作运行项目的标准部件。
我目前正在尝试让Docker安装私人软件包。没有VPN和托管我们自己的git服务(如gitlab或bitbucket(的选项,这会带来无法在Docker compose中安装私人软件包的问题。
有两种方法可以解决这个问题,我遇到并成功地工作了:
- 将我的SSH密钥复制到盒子中,并使其在该容器内部运行
- 将auth.json/.npmrc等复制到容器中
这两者都有问题:
- 如果有人共享容器或推送到包存储库,那么他们的SSH密钥可能会被泄露,需要重置并可能更新他们用来访问的任何服务器/服务
- auth.json/.npmrc文件的风险较小,因为auth令牌的范围可以是只读的,并且可以很容易地重新生成,而不会产生巨大的影响
我现在将PHP Composer作为一个工作示例,我的docker compose文件如下所示:
version: "2.0"
services:
composer:
image: composer
volumes:
- ./.composer/auth.json:/tmp/auth.json
- .:/app
working_dir: /app
php:
image: php:7.2-fpm-alpine
volumes:
- .:/app
working_dir: /app
这很好,但需要添加一些内容来删除auth.json post命令,如docker-compose run --rm composer install
。是否可以运行";post_run";在docker compose中键入命令?
我最近设置了private packagist,它解决了您所描述的一个问题。
使用作为CI上的私有变量传递的令牌,团队中的每个人都有自己的令牌可以使用。