代码之家  ›  专栏  ›  技术社区  ›  arielnmz

将docker compose参数传递给entrypoint脚本

  •  0
  • arielnmz  · 技术社区  · 5 年前

    我的 docker-compose.yml 如下所示:

    ...
    build:
      context: myimg
      args:
        - FOO=bar
    

    我的dockerfile是这样做的:

    ...
    ARG FOO
    ENTRYPOINT run.sh
    

    但是,我的脚本看不到 FOO 变…

    内部运行

    echo $FOO
    

    不输出任何内容。我尝试了shell和exec表单的几种组合,并将var作为env vars传递,但没有任何效果。我需要把它们作为env变量传递,而不是参数传递。

    1 回复  |  直到 5 年前
        1
  •  0
  •   David Maze    5 年前

    args: 只有 影响构建初始图像,并且初始图像构建不知道您可能在 docker-compose.yml 文件。

    如果您希望将此用于运行时配置,则 environment: 设置会更好。与构建时参数不同,您不必仅仅为了更改环境变量设置而重建图像。移除 ARG 线从 Dockerfile 并且改变 docker-compose.yml公司 文件说

    build:
      context: myimg
    environment:
      - FOO=bar
    

    如果你想要一个 精氨酸 稍后作为环境变量可见的值(例如 ENTRYPOINT 脚本)您需要添加 ENV 也为它设置;有 a couple of examples in the Dockerfile documentation . 这可能看起来像

    FROM ...
    ARG FOO
    ENV FOO=$FOO
    COPY run.sh /
    ENTRYPOINT ["/run.sh"]