docker - 无法在 Dockerfile 中设置 shell 变量

标签 docker

我正在尝试编写一个设置我的 GOPATH 变量的 Dockerfile 当我稍后使用该变量时,它是空的,例如:

Step 7 : RUN export GOPATH=/root/go
---> Running in 5691396dd55b
---> 17d76f7de05f
Removing intermediate container 5691396dd55b
Step 8 : RUN echo $GOPATH
---> Running in b2cd6ef885d0

---> 54b5a3d5c697

我尝试执行 docker build -no-cache 。但我得到了相同的结果; 有什么想法吗?

最佳答案

您应该使用ENV在 Dockerfile 中设置环境变量。

请参阅https://docs.docker.com/reference/builder/#env

文档中的附加说明:

Note: Environment persistence can cause unexpected effects. For example, setting ENV DEBIAN_FRONTEND noninteractive may confuse apt-get users on a Debian-based image. To set a value for a single command, use RUN <key>=<value> <command>.

“”部分很重要,因为没有它,环境变量仅针对发生 RUN 的一层设置,因此对后续层没有影响。 ENV将保留子层。

关于docker - 无法在 Dockerfile 中设置 shell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31253455/

相关文章:

docker - 以桥接模式但固定端口且超出预定义范围部署Mesos docker容器

docker - 如何使用 Docker 工具箱退出在 Windows 10 Home 中启动的 Ubuntu Bash?

docker - SignalR 无法使用 docker compose/container 连接

docker - 如何通过docker API正确获取docker镜像的总大小?

php - Symfony进程中的docker-machine

node.js - 来自其他容器的 Docker mongo 镜像 'Connection refused'

docker - 如何以非 root 用户身份运行 docker 镜像?

docker - 如何使一个简单的 docker 服务可以从外部主机访问

docker - 当 D8 要求 FTP 凭据时,如何在 docker 环境中的 Drupal 8 上安装模块。 (恶魔盒子)

javascript - 在 Docker 容器中调试 nodejs 应用程序