【问题标题】:How to set environment variables within Dockerfile's RUN?如何在 Dockerfile 的 RUN 中设置环境变量?
【发布时间】:2019-12-20 14:46:05
【问题描述】:

我需要将RUN 命令的输出设置为容器构建后可用的环境变量:

...

RUN ...
    GO111MODULE=on go get github.com/emersion/hydroxide/cmd/hydroxide && \
    echo "the_password" | hydroxide auth the_username@protonmail.com > bridge_password.txt && \
    BRIDGE_PASSWORD=`sed -n 's/Password: Bridge password: //p' bridge_password.txt` && \
    hydroxide smtp

...

在上面,我需要 $BRIDGE_PASSWORD 在我的 NodeJS 项目中可用 (process.env.BRIDGE_PASSWORD)。我怎样才能做到这一点?

【问题讨论】:

  • 在容器运行(即部署)时密码是否需要在容器中,还是仅在镜像构建期间需要?我建议不要将任何密码放入 docker 映像(它被提交到映像层,如果您将其放入存储库,它将可供所有人查看)并且只将它们传递到容器在运行时使用 `-e "BRIDGE_PASSWORD=".
  • 嗯,我需要 BRIDGE_PASSWORD 在容器运行时在容器内可用。获取密码的唯一方法是在构建时运行这些命令,否则我只需将其传入。

标签: docker docker-compose dockerfile containers


【解决方案1】:

你需要:

  1. 使用 Dockerfile 中的ENV 命令声明您的环境变量。
  2. 将当前的RUN 替换为映像入口点中的命令,以便每次启动新容器时都能正确设置该变量,并可用于任何已启动的命令。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-09-11
    • 1970-01-01
    • 2020-11-21
    • 2018-01-13
    • 1970-01-01
    • 2019-01-09
    • 2018-10-22
    • 1970-01-01
    相关资源
    最近更新 更多