将docker-compose args传递到ENTRYPOINT脚本

时间:2019-01-24 23:46:49

标签: docker docker-compose

我的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传递,但是没有任何效果。我需要将它们作为环境变量传递,而不是参数传递。

1 个答案:

答案 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"]