在构建时使用卷构建 Docker

Var*_*har 8 docker docker-compose

有没有办法在 docker 镜像构建期间使用外部卷?

我有一种情况,我想在 docker 映像构建期间使用外部卷内的配置。那可能吗?

Leo*_*o K 9

如果“docker image build”是指运行单个“docker build ...”命令:不,没有办法做到这一点(至少,在我读过的最新文档中没有)。但是,没有什么可以阻止您使用直接 docker 命令执行需要外部卷的步骤,然后提交容器并将其标记为“docker build”。假设这是构建的最后一步,将所有其他命令(不需要卷)放入 Dockerfile 中,然后执行以下操作:

tmp_img=`docker build .`
tmp_container=`docker run -v $my_ext_volume:$my_mount_path --entrypoint=(your volume-dependent build command here) $tmp_img`
docker commit $tmp_container my_repo/image_tag:latest
docker rm "$tmp_container"
Run Code Online (Sandbox Code Playgroud)

这与在 Dockerfile 中使用 RUN 命令相同,但添加了卷挂载。commit示例中的命令还标记图像。

如果您需要在依赖卷的命令之后使用其他 Dockerfile 命令,那就有点复杂了,但在大多数情况下,您可以组合运行命令并重新安排您的安装,而将手动运行与卷命令放在最后,让事情变得简单。