ASP.NET Coreアプリケーションを実行するために、アプリケーションをビルドし、Jenkinsを使用してGitによってフェッチされたソースコードをコンテナーにコピーするdockerfileを生成しました。したがって、私のワークスペースでは、dockerfileで次のことを行います。
WORKDIR /app
COPY src src
JenkinsはGitを使用してホスト上のファイルを正しく更新しますが、Dockerはこれをイメージに適用しません。
構築するための私の基本的なスクリプト:
#!/bin/bash
imageName=xx:my-image
containerName=my-container
docker build -t $imageName -f Dockerfile .
containerRunning=$(docker inspect --format="{{ .State.Running }}" $containerName 2> /dev/null)
if [ "$containerRunning" == "true" ]; then
docker stop $containerName
docker start $containerName
else
docker run -d -p 5000:5000 --name $containerName $imageName
fi
新しいコンテナをビルドする前に、コンテナのパラメータや停止/削除など--rm
、さまざまなことを試しました。ここで何が間違っているのかわかりません。dockerはイメージを正しく更新しているようです。これを呼び出すと、レイヤーIDが生成され、キャッシュ呼び出しは行われません。--no-cache
docker run
COPY src src
Step 6 : COPY src src
---> 382ef210d8fd
コンテナを更新するための推奨される方法は何ですか?
私の典型的なシナリオは次のとおりです。アプリケーションはサーバー上のDockerコンテナーで実行されています。これで、ファイルを変更するなどして、アプリの一部が更新されます。これで、コンテナは新しいバージョンを実行するはずです。Dockerは、既存のコンテナーを変更するのではなく、新しいイメージをビルドすることを推奨しているようです。そのため、私のように再構築する一般的な方法は正しいと思いますが、実装の詳細を改善する必要があります。