2016-07-11 7 views
1

を構築し実行するに変更するならば、私は、次のようなコマンドラインを使用してドッカーイメージを構築しています検出しますDockerfileで指定されている値は変更されていません。このコマンドを再実行せずにDockerfile(またはビルドコンテキストファイルの1つ)がその後に変更されるかどうかを検出する方法はありますか?はドッカーイメージが

+0

のですか?いくつかの実行中のプロセス?それを実行するときに行く? – johnharris85

+0

@ldgが彼の答えで示唆しているように、私は '--dry-run'オプションまたは同等のものを探していると思います。 –

答えて

1

あなたが探しているのであれば、dry-runオプションはありません。別のタグを使用して既存の画像に影響を与えないようにし、出力に---> Using cacheがあるかどうかを調べることができます。

0

docker inspect image_nameを1つのビルドから別のビルドに見ると、ドッカーイメージが変更されていない場合、いくつかの情報は変更されません。それらの1つはドッカーIdです。だから、私はIdの情報を使って、ドッカーが以下のように変更されているかどうかを確認しました。まず、次のように1はIdを画像を得ることができます:ビルド後に変更がある場合

docker inspect --format {{.Id}} docker_image_name 

は検証するには、次の手順を実行することができます。

  1. ビルド前の画像IDを取得
  2. イメージを作成する
  3. ビルド後にイメージIDを取得する
  4. 2つのIDを比較します。一致しない場合は変更されません。

具体的には、ここで/どのようにあなたがそれを検出するであろうどのような作業はbash例

docker inspect --format {{.Id}} docker_image_name > deploy/last_image_build_id.log 
# I get the docker last image id from a file 
last_docker_id=$(cat deploy/last_image_build_id.log) 
docker build -t docker_image_name . 
docker_id_after_build=$(docker inspect --format {{.Id}} docker_image_name 
if [ "$docker_id_after_build" != "$last_docker_id" ]; then 
    echo "image changed" 
else 
    echo "image didn't change" 
fi 
関連する問題