[解決済み】docker-composeが常に新しいイメージからコンテナを再作成するようにするにはどうすればよいですか?
質問
私の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の設定ファイルで、起動のたびにコマンドライン上の何かを忘れないように配線するような方法でしょうか?
ps. 私の目標を達成する方法を見つける以外に、この動作の背景についてもう少し知りたいと思います。Dockerの基本的な考え方は、イミュータブルなインフラを構築することだと思うのです。現在のdocker-composeの挙動は、このアプローチと明らかに衝突しているように見えます...それとも、私はここでいくつかのポイントを見逃したのでしょうか?
解決方法は?
docker-compose up --force-recreate
というのも一つの選択肢ですが、CIに使うのであれば、私ならビルドを開始するときに
docker-compose rm -f
でコンテナとボリュームを停止して削除します(その後、pull と up でフォローします)。
これは私が使っているものです。
docker-compose rm -f
docker-compose pull
docker-compose up --build -d
# Run some tests
./tests
docker-compose stop -t 1
コンテナが再作成される理由は、使用される可能性のあるデータボリュームを保持するためです(また、これによって
up
はかなり高速化されます)。
CIをやっている人はそんなこと望んでいないでしょうから、すべてを削除すれば思い通りになるはずです。
アップデート:使用
up --build
で追加された
docker-compose
1.7
関連
-
[解決済み] Dockerコンテナの中から、マシンのローカルホストに接続するにはどうすればよいですか?
-
[解決済み] ホストからDockerコンテナにファイルをコピーする方法は?
-
[解決済み] リポジトリを使用せずに、あるホストから別のホストにDockerイメージをコピーする方法
-
[解決済み] ホストからDockerコンテナのIPアドレスを取得する方法
-
[解決済み] Dockerコンテナのシェルに入るにはどうしたらいいですか?
-
[解決済み] 古いDockerコンテナを削除する方法
-
[解決済み] Dockerコンテナに環境変数を渡すにはどうしたらいいですか?
-
[解決済み] Dockerでコンテナを一覧表示する方法
-
[解決済み] Docker-Composeを使用して、複数のコマンドを実行する方法
-
[解決済み】Dockerは仮想マシンとどう違うの?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] Dockerエラー:無効な参照形式:リポジトリ名は小文字でなければならない
-
[解決済み] DockerFileからDockerインスタンスを実行するにはどうすればよいですか?
-
[解決済み] Dockerfileの'COPY'と'ADD'コマンドの違いは何ですか?
-
[解決済み] 不明な機関によって署名された "docker pull "証明書
-
[解決済み] docker-compose v3.1でsecret値をどのように管理するのですか?
-
[解決済み] Docker Composeでコンテナにファイルをコピーする
-
[解決済み】Dockerのプロセスへのアタッチとデタッチはどうやるの?
-
[解決済み】Dockerがlxc-tools(ユーザースペースのLXCツール)に追加するものは何ですか?)
-
[解決済み】Dockerのコンテナイメージが大きいのはなぜですか?
-
[解決済み】Kubernetes イメージを更新するデプロイメントの作り方