我正在使用如下命令行来构建Docker映像:
docker build -t myimage .
Run Code Online (Sandbox Code Playgroud)
成功执行此命令后,将不再运行它,因为所指定的映像Dockerfile未更改。有没有一种方法可以检测Dockerfile(或其中一个构建上下文文件)随后是否更改而无需重新运行此命令?
看着docker inspect image_name从一个构建到另一个,如果码头工人形象并没有改变一些信息也不会改变。其中之一是码头工人Id。因此,我使用该Id信息来检查泊坞窗是否已更改,如下所示。首先,可以得到Id如下图像:
docker inspect --format {{.Id}} docker_image_name
Run Code Online (Sandbox Code Playgroud)
要验证构建后是否有更改,可以按照以下步骤操作:
代码:这是一个实现上述想法的有效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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1750 次 |
| 最近记录: |