0

我有一个 docker 映像,我想在更新时使用和重用它。我想避免对图像本身进行任何更改,以半自动化提取最新图像并基于它部署容器的过程,而无需跳过额外的环节。

该过程的一部分涉及能够修改位于容器中的 docker-entrypoint.sh 文件

/usr/local/bin/docker-entrypoint.sh

我的逻辑是将它作为绑定挂载点挂载到本地文件,我可以根据需要对其进行编辑 - 这样我就不必在每次发布对原始图像的更新时都更新图像并提交以更改docker-entrypoint.sh 文件。

我正在使用以下命令运行容器:

docker run -d --name test10-new  --mount type=bind,source=/data/docker-entrypoint.sh,target=/usr/local/bin/docker-entrypoint.sh new-test:latest

没有挂载它运行良好,但挂载失败,日志中只有这个:

': No such file or directory

知道可能出了什么问题吗?docker-entrypoint.sh 的本地副本是可执行的。提前致谢!

4

1 回答 1

0

对我来说, --mount 参数需要一个绝对路径。您可以使用“$(pwd)”或在我的情况下(Makefile)提供它:

ROOT_DIR:=$(shell dirname $(realpath $(firstword $(MAKEFILE_LIST))))
up:
    docker run -it --mount type=bind,source="${ROOT_DIR}"/tmp/,target=/root/var/task/tmp/

在你的情况下:

docker run -d --name test10-new --mount type=bind,source="$(pwd)"/data/docker-entrypoint.sh,target=/usr/local/bin/docker-entrypoint.sh new-test:latest

感谢如何获取 Makefile 的当前相对目录?

于 2021-11-14T11:10:55.910 回答