web-dev-qa-db-ja.com

docker-composeで既存の画像を更新する方法は?

複数のマイクロサービスがあり、開発展開にdocker-composeを使用しています。マイクロサービスのコードベースにいくつかの変更があると、ciジョブをトリガーしてそれらを再デプロイします。これを行うスクリプトがあります。しかし、毎回すべてのイメージをゼロから構築し、実行する必要があります。このすべての操作の後、anonymousイメージがあります。そのため、最後のスクリプトを使用してそれらを削除しています。このプロセスをより実用的にすることを提案しますか?新しい変更で削除せずに既存のイメージを更新する方法はありますか?

- docker-compose build
- docker-compose down
- docker-compose up -d --force-recreate
- docker rmi $(docker images -f "dangling=true" -q) -f

追加情報:gitlab-ciを使用しています

26
Efe

Dockerコンテナは、短命になるように設計されています。既存のコンテナを更新するには、古いコンテナを削除して新しいコンテナを開始します。したがって、あなたがフォローしているプロセスは正しいものです。

コマンドを次のように単純化できます。

docker-compose up --force-recreate --build
docker image Prune -f
47
yamenk

以下を使用して更新できます。

docker-compose pull
12
Evgen Bodunov

Docker-composeバージョン3では、イメージにタグを追加し、ロジックに応じてタグをクリーンアップできます。

build: ./dir
image: yourapp:tag

クリーンアップするために匿名の画像を避けるのに役立ちます

2
AlexGera