docker - Dockerfile 中的 WORKDIR $HOME 似乎不起作用

标签 docker dockerfile

我有一个 Dockerfile,其中包含两个 WORKDIR 语句(以及其他语句),如下所示:

RUN pwd # reports /root
WORKDIR /tmp
RUN wget ...
RUN tar zxvf ...
RUN cd ... && ; ./configure && make && make install 
RUN sed ...
RUN sed ...
RUN rm ...
RUN rm -fr ...
WORKDIR $HOME
RUN pwd # reports /tmp (instead of /root)

我希望 pwd 之后是 /root (即 $HOME for root),但它保留在 /tmp。我在这里犯了一个明显的错误吗?有没有更好的方法将 pwd 恢复到“原始”值。

最佳答案

似乎最好的方法是明确设置您自己的默认值,这样您就可以确保它是一致的,例如:

ENV HOME /root

WORKDIR $HOME
.. do something in /root ..

WORKDIR /tmp
.. do something else in /tmp ..

WORKDIR $HOME
.. continue back in /root ..

注意:

The WORKDIR instruction can resolve environment variables previously set using ENV. You can only use environment variables explicitly set in the Dockerfile.

https://docs.docker.com/engine/reference/builder/#/workdir

关于docker - Dockerfile 中的 WORKDIR $HOME 似乎不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38423202/

相关文章:

Docker - 在正在运行的容器中安装 vcredist_x86.exe

visual-studio - ASPNET Core 3.1 - Dockerfile 更改在 Visual Studio 中运行时不起作用

Apache 与 Docker Alpine Linux

powershell - 如何在 Windows 10 上使用 Powershell 将 Google Colab 与本地 TensorFlow Jupyter 服务器结合使用?

docker - 同步pod出错,无法进行Registry.access.redhat.com(Kubernetes)

docker - 为什么Docker build没有-f参数?

python - fatal error : *. h : No such file or directory. 运行 docker build 命令为 python 项目创建图像时

docker - 如何使用 docker-compose 启动中间 ca?

azure - azure自托管代理linux不能与 “--once”参数一起运行

docker - 从Docker文件运行Impala SQL脚本