如何在 Dockerfile RUN 中使用环境变量

时间:2021-02-15 00:58:27

标签: docker-compose dockerfile

我已经阅读了几个关于这个的教程,看起来这段代码应该可以工作。我想在我的 Dockerfile 中使用 RUN 将环境变量写入配置文件。 Dockerfile 很简单:

FROM php:7.4-apache
RUN echo "I am ${USERNAME}" > /home/dockerfile.log

我从这个 docker-compose.yml 开始

version: "3"
services:
  web:
    build:
      context: .
    environment:
      - USERNAME=larry

docker-compose up -d 开头后,日志文件仅显示 I Am,因此环境变量为空。这里有什么问题?如果我运行 docker-compose config,我可以看到那里正确显示的变量。

1 个答案:

答案 0 :(得分:0)

Run 命令在构建时(即构建图像时)执行,而 docker-compose 中的环境变量在运行时添加到容器中。因此,当执行 Run 命令时,环境变量尚未填充。如果您想在构建时传递参数,我建议改用构建参数。在你的撰写文件中使用 arg 而不是 environment