在构建一个Docker映像时,是否可以显示'WORKDIR'?

wb1gzix0  于 2023-02-03  发布在  Docker
关注(0)|答案(6)|浏览(173)

我们在构建Docker映像时遇到了WORKDIR的问题。是否可以打印WORKDIR的值?
我们尝试:

ECHO ${WORKDIR}

但是没有这样的指令ECHO

eoxn13cs

eoxn13cs1#

Docker没有内置的方法在构建过程中打印WORKDIR。你可以通过inspect输出中的.Config.WorkingDir属性检查图像/层的最终工作目录:

docker image inspect -f '{{.Config.WorkingDir}}' {image-name}

可以通过打印shell默认工作目录来查看Linux容器构建步骤工作目录:

RUN pwd

或者shell通常将工作目录存储在PWD环境变量中

RUN echo "$PWD"

如果您使用的是带有 BuildKit 的较新版本的Docker,则需要使用--progress=plain启用stdout

docker build --progress=plain .
jgwigjjp

jgwigjjp2#

docker build命令最近似乎做了一些更改,它在构建过程中隐藏了stdout
简而言之,使用DOCKER_BUILDKIT=0 docker build可以恢复"旧的"行为。
reference

xiozqbni

xiozqbni3#

您可以在构建步骤中检查目录的内容,并使用以下命令将其打印出来

RUN ls
RUN ls ..

在ubuntu 20.04.4 LTS WSL2下,我必须将--progress=plain与调试模式和无缓存结合起来才能看到输出:

docker -D build --progress=plain --no-cache.
7ivaypg9

7ivaypg94#

您可以在Dockerfile中使用以下命令

RUN pwd && ls

使用--progress=plain运行构建

docker build -t <image-name-you-want-to-give> --progress=plain .
xggvc2p6

xggvc2p65#

如果我使用docker-compose up,RUN不会在IDE控制台中打印出来,但是CMD可以,所以尝试一下
CMD pwd
如果你在图片中有python,这也应该可以工作
CMD ["python", "-c", "import os;print(os.getcwd())"]
请注意,一个命令,最后一个CMD命令将在“container-run”阶段执行。所有其他命令将被忽略。另一方面,有一个标准管道解决方案:
CMD pwd && ls

blpfk2vs

blpfk2vs6#

我把这行代码添加到我的dockerfile中:
RUN pwd
要打印当前工作目录,然后使用以下命令构建映像:

docker compose build --no-cache <name of service> 2>&1 | tee build.log

这将在终端中以更详细的格式打印输出,并将完整的日志记录到文件build.log中
如果您不使用Docker compose,我希望您能够仅使用Docker命令来执行类似的操作。

相关问题