私の Docker イメージは Jenkins CI サーバー上で構築され、プライベート Docker レジストリにプッシュされます。私の目標は、常にイメージの元のビルド状態から開始する docker-compose を使用して環境をプロビジョニングすることです。
現在、私は異なるマシンで docker-compose 1.3.2 と 1.4.0 を使用していますが、以前は古いバージョンも使用していました。
私は常にdocker-compose pull && docker-compose up -d
コマンドを使用して、レジストリから新しいイメージを取得して起動していました。ある時点までは期待どおりに動作していたのが私の好みの動作だったと思いますが、それ以降は、docker-compose up
最初にビルドされたイメージを毎回起動するのではなく、以前に停止したコンテナを再実行するようになりました。
この動作を取り除く方法はありますか? その方法は、docker-compose.yml 構成ファイルで配線され、呼び出しごとにコマンド ラインで何かを「忘れない」ことに依存しないようにする方法でしょうか?
追伸: 目標を達成する方法を見つけるだけでなく、この動作の背景についてももう少し知りたいと思います。Docker の基本的な考え方は、不変のインフラストラクチャを構築することだと思います。docker-compose の現在の動作は、このアプローチと明らかに衝突しているように見えます。それとも、ここで何かポイントを見逃しているのでしょうか?
ベストアンサー1
私にとって唯一うまくいった解決策は次の--no-cache
フラグでした:
docker-compose build --no-cache
これにより、リポジトリから新しいイメージが自動的にプルされます。また、以前使用していたパラメータで事前に構築されたキャッシュ バージョンも使用されません。