为了运行ASP.NET Core应用程序,我生成了一个dockerfile,它构建应用程序并在容器中复制源代码,Git使用Jenkins获取该代码.所以在我的工作区中,我在dockerfile中执行以下操作:
WORKDIR /app
COPY src src
Run Code Online (Sandbox Code Playgroud)
虽然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
Run Code Online (Sandbox Code Playgroud)
我尝试不同的东西像--rm
和--no-cache
参数docker run
,并停止/删除容器之前,新的一个是建立.我不确定我在这里做错了什么.似乎docker正在更新图像,因为调用COPY src src
会导致图层ID并且没有缓存调用:
Step 6 : COPY src src
---> 382ef210d8fd
Run Code Online (Sandbox Code Playgroud)
更新容器的推荐方法是什么?
我的典型场景是:应用程序在Docker容器中的服务器上运行.现在部分应用程序已更新,例如通过修改文件.现在容器应该运行新版本.Docker似乎建议构建一个新的映像而不是修改现有的容器,所以我认为像我这样重建的一般方法是正确的,但实现中的一些细节必须得到改进.