在 Dockerfile ENV 指令中访问 $HOME

问题描述 投票:0回答:2

我正在尝试使用 $HOME 变量动态设置带有 ENV 指令的环境变量(我认为它是系统环境变量)。

但是 ENV 无法访问 $HOME。它是空白的。虽然我能够回应$HOME。

FROM somebaseimage

....
....

USER 5051

RUN echo $HOME
# prints /home/myuser

ENV MY_JSON_FILEPATH="${HOME}/my_file.json"

RUN echo $MY_JSON_FILEPATH
# prints /my_file.json

我已经尝试过 "${HOME}/my_file.json", "$HOME/my_file.json";两者都不起作用。

设置此类环境变量的最佳方法是什么?

linux docker dockerfile
2个回答
2
投票

您应该在

ARG HOME
行之后添加行
FROM ...
并传递构建选项 --build-arg 或在 docker-compose 文件中添加 build:args 参数。


0
投票

如果您需要该变量仅在构建期间

FROM ubuntu

SHELL ["/bin/bash", "-c"]

ENV BASH_ENV="/etc/bash_env"

USER root

RUN echo "export MY_JSON_FILEPATH=$HOME/MY_JSON_FILEPATH" >>$BASH_ENV

RUN echo $MY_JSON_FILEPATH
#6 [3/3] RUN echo $MY_JSON_FILEPATH
#6 0.246 /root/MY_JSON_FILEPATH
#6 DONE 0.3s

参考

© www.soinside.com 2019 - 2024. All rights reserved.