在我的CI环境有几个内部版本,我需要得到特定的版本为docker-compose
:Docker:在哪里存储Docker-compose的多个图像的版本?
registry.example.com/foo/core 0.1.3
registry.example.com/foo/core 0.2.2
... # multiple packages in several versions like this
图像被建造这样的:
build:
stage: build
script:
...
- docker build -t $CI_REGISTRY_IMAGE:$VERSION .
- docker push $CI_REGISTRY_IMAGE:$VERSION
他们被拉上部署管道像这样:
production:
stage: deploy
script:
- docker pull $CI_REGISTRY_IMAGE:$VERSION
我还使用docker-compose从该映像启动所有微服务:
$ docker-compose up -d
但现在这是我的问题。我在哪里可以存储应该使用哪个版本的每个图像?硬编码它看起来像这样 - 但是这将始终启动0.2.2,虽然部署管道可以拉一个不同的版本,如0.1.3:
core:
container_name: core
image: 'registry.example.com/foo/core:0.2.2'
restart: always
links:
- 'mongo_live'
environment:
- ROOT_URL=https://example.com
- MONGO_URL=mongodb://mongo_live/example
但版本应该更好地设置为一个变量。所以我会认为在部署我必须存储当前的$VERSION
值。在运行docker-compose应读取版本值以获取正确的版本,因为最新版本并不总是选定的版本。
如何标记现有图像与第二个?例如0.2.2也应该得到'当前'标签。如果我想给另一个版本加上当前的标签,会发生什么情况,比如说0.2.3应该是'current',但是然后0.2.2应该会松动'current'标签... – user3142695
我已经用docker更新了这个问题标签“命令。当你创建一个标签时,你正在创建一个指向图像ID的指针。如果该标签已经存在(本地运行标签命令,或者远程运行push命令时),现有标签将被替换。您需要在目标主机上拉取图像,以便对该主机上的此标记进行任何更改,并且'docker-compose up -d'知道图像是否发生了变化,并且将重新创建具有正在使用的旧图像的任何容器。 – BMitch