複数のマイクロサービスがあり、開発展開に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
を使用しています
Dockerコンテナは、短命になるように設計されています。既存のコンテナを更新するには、古いコンテナを削除して新しいコンテナを開始します。したがって、あなたがフォローしているプロセスは正しいものです。
コマンドを次のように単純化できます。
docker-compose up --force-recreate --build
docker image Prune -f
以下を使用して更新できます。
docker-compose pull
Docker-composeバージョン3では、イメージにタグを追加し、ロジックに応じてタグをクリーンアップできます。
build: ./dir
image: yourapp:tag
クリーンアップするために匿名の画像を避けるのに役立ちます