2017-06-22 10 views
0

を更新していない構築:ドッキングウィンドウ・コン後にドッキングウィンドウ-作曲ラン古い私は問題以下のドッキングウィンドウ-構成と見つけ使用した容器

私は私のコードを変更し、私は

docker-compose stop 
docker-compose build 
を使用ドッカーズを再構築したいときに

そして、私は、システムを実行したい:

docker-compose up 

しかし、ノーコード/コンテナの新しいバージョンで実行されますが、古いもの。何をすべきか?

答えて

0

この場合、まず古い容器を取り除く必要があります(rm -f)。だから我々は、で新しいコードを展開することができます: - 最初の命令のビルドイメージ、古いイメージが実行している場合 - 配列の上に

docker-compose build 
docker-compose stop 
docker-compose rm -f 
docker-compose up 

ことは偶然ではないですが、建物が終了したとき、古いコンテナは、停止して削除して新しいものを建てことにより、為替れます。

私は便利なコピー&ペーストonelinerでコマンドの上に置く:サイクル、私は私達の連続何とかなるように、すべてをハァハァするヘルパー関数を持っている、あなたが使用することができ

docker-compose build && docker-compose stop && docker-compose rm -f && docker-compose up

+0

いや、同じ問題から借りました。実際に働いたのは、 'up'の後に' --build'を追加することです。 – Axalix

1

docker-compose up --buildまたはdocker-compose up --build --force-recreate

+1

NOT WORKING - 私はあなたのソリューションをテストし、両方とも動作しません。最初のこと:私が走っていないと私は見ました: 'docker-compose stop'(それぞれの命題の前に、私はバックグラウンドで複数の走っているコンテナを持っています...)。 2番目のこと:実行中のコードは更新されませんでした(ドッカー作成者が古いコンテナを実行するため、新しいコードでconainerを実行する前に 'docker-compose rm -f'を使用する必要があります)。最後:もし 'stop'と' rm'を使い、あなたのバージョン 'up --build'を使うと、非稼働サービスの大きなギャップ(ビルド時間)を持つコンテナを交換します。 –

+0

私のために働いた – Axalix

+0

ドッカーの新しいバージョン(と 'up --build')で何か変わることがありますか? –

3

をテストすることができます、erm ...継続的に。基本的には次のように要約:

コンテナをクリアするには:

docker rm -f $(docker ps -a -q) 

画像消去するには:明確なボリュームに

docker rmi -f $(docker images -a -q) 

を:

docker volume rm $(docker volume ls -q) 

ネットワークをクリアするには:

docker network rm $(docker network ls | tail -n+2 | awk '{if($2 !~ /bridge|none|host/){ print $1 }}') 

私は一般的に古いコンテナ、ボリューム、ネットワークを必要としないので、それらをすべて消去するために、各ビルド前にドッカー環境をクリーンアップするためのbashスクリプトを作成しました。そして、更新されたコードを使用してドッキングウィンドウを再構築するために、私はmarcelmfsdocker-compose up --build

クレジットを使用してSource

関連する問題