我的docker-compose.yml
如下:
...
build:
context: myimg
args:
- FOO=bar
我的dockerfile会这样做:
...
ARG FOO
ENTRYPOINT run.sh
但是,我的脚本看不到FOO
变量...
在run.sh内部:
echo $FOO
不输出任何内容。我已经尝试过几种shell和exec形式的组合,并将vars作为env vars传递,但是没有任何效果。我需要将它们作为环境变量传递,而不是参数传递。
答案 0 :(得分:0)
args:
仅 影响构建初始图像,并且初始图像构建不了解您可能在docker-compose.yml
文件中定义的其余上下文
如果希望将其用于运行时配置,则environment:
设置会更好。与构建时参数不同,您不必为了更改环境变量设置而重建映像。从ARG
删除Dockerfile
行,然后将docker-compose.yml
文件更改为
build:
context: myimg
environment:
- FOO=bar
如果您希望稍后将ARG
值作为环境变量显示出来(例如在ENTRYPOINT
脚本中),则还需要为其添加一个ENV
设置;有a couple of examples in the Dockerfile documentation。看起来像
FROM ...
ARG FOO
ENV FOO=$FOO
COPY run.sh /
ENTRYPOINT ["/run.sh"]