在我的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