我们在构建 docker 镜像时遇到了
WORKDIR
的问题。是否可以打印WORKDIR
的值?
我们尝试过:
ECHO ${WORKDIR}
但是没有这样的指示
ECHO
Docker 没有内置方法可以在构建过程中打印
WORKDIR
。您可以通过 .Config.WorkingDir
输出中的 inspect
属性检查图像/图层的最终工作目录:
docker image inspect -f '{{.Config.WorkingDir}}' {image-name}
可以通过打印 shell 默认工作目录来查看 Linux 容器构建步骤 workdir:
RUN pwd
或者shell经常将工作目录存储在PWD环境变量中
RUN echo "$PWD"
如果
RUN
步骤之前已运行并已缓存,请添加 --no-cache
标志。
如果您使用带有 BuildKit 的较新版本的 docker,则需要使用 --progress=plain
启用构建中的标准输出
docker build --no-cache --progress=plain .
最近似乎对
docker build
命令进行了一些更改,它在构建过程中隐藏了 stdout
。
简而言之,使用
DOCKER_BUILDKIT=0 docker build
恢复“旧”行为。
(参考)
您可以在 Dockerfile 中使用以下命令
RUN pwd && ls
使用 --progress=plain 运行构建
docker build -t <image-name-you-want-to-give> --progress=plain .
您可以在构建步骤中检查目录的内容并使用类似的命令打印它
RUN ls
RUN ls ..
在 ubuntu 20.04.4 LTS WSL2 下,我必须将
--progress=plain
与调试模式和无缓存结合起来才能看到输出:
docker -D build --progress=plain --no-cache.
我将这一行添加到我的 dockerfile 中:
RUN pwd
要打印当前工作目录,然后使用以下命令构建映像:
docker compose build --no-cache <name of service> 2>&1 | tee build.log
这将以更详细的格式在终端中打印输出,并且还会将完整的日志记录到文件 build.log 中
如果您不使用 docker compose,我希望您能够仅使用 docker 命令执行类似的操作。
docker-compose up
,则RUN 不会在我的 IDE 控制台中打印。 但 CMD 确实如此。所以尝试一下吧
CMD pwd
如果图像中有 python,这也应该有效
CMD ["python", "-c", "import os;print(os.getcwd())"]
请注意,只有一个,最后一个CMD命令将在“容器运行”阶段执行。所有其他人都将被默默地忽略。另一方面,有一个标准的管道解决方法:
CMD pwd && ls
RUN `echo ls`