使用专用存储库在Docker中运行包安装程序的最佳实践



使用私有存储库在本地运行命令很简单,这一部分也很好。

我想做的是确保Docker通过Makefile被用作运行项目的标准部件。

我目前正在尝试让Docker安装私人软件包。没有VPN和托管我们自己的git服务(如gitlab或bitbucket(的选项,这会带来无法在Docker compose中安装私人软件包的问题。

有两种方法可以解决这个问题,我遇到并成功地工作了:

  1. 将我的SSH密钥复制到盒子中,并使其在该容器内部运行
  2. 将auth.json/.npmrc等复制到容器中

这两者都有问题:

  1. 如果有人共享容器或推送到包存储库,那么他们的SSH密钥可能会被泄露,需要重置并可能更新他们用来访问的任何服务器/服务
  2. 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上的私有变量传递的令牌,团队中的每个人都有自己的令牌可以使用。

最新更新