【问题标题】:Docker compose ARGS not working with environmentDocker compose ARGS 不适用于环境
【发布时间】:2018-06-26 19:54:41
【问题描述】:

我试图了解 docker-compose.yml 文件中的args: 用法,以便我可以在构建运行时设置环境变量。我明白,如果我有一个 .env 文件,那么它会自动设置它并能够访问我的 Dockerfile 内部,例如,

FROM node:alpine
ARG NODE_ENV
ENV NODE_ENV=${NODE_ENV} // --> This works fine if .env file is present

但如果我想通过environment:(在 docker-compose.yml 中并且没有 .env 文件)加载这些值,

version: '3.3'
services:
  web:
    image: web
    environment:
      - NODE_ENV=dev
    build:
      context: .
      args:
        - NODE_ENV
    ports:
      - 8100

然后它在 Dockerfile 中返回一个空白/空值。

我发现在 Dockerfile 中(或在构建期间)无法直接访问环境变量,但在硬编码环境变量时env_file 的工作原理却没有。

提前感谢您的帮助。

【问题讨论】:

    标签: docker docker-compose dockerfile


    【解决方案1】:

    检查您的 Docker 版本 - 在旧版本的 Docker 中Dockerfile ENV 命令使用空格而不是 '='

    FROM node:alpine
    ARG NODE_ENV
    ENV NODE_ENV ${NODE_ENV} 
    

    【讨论】:

    • 根据文档 - docs.docker.com/engine/reference/builder/#envENV key=value 相当于 ENV key value。它只是支持多个变量。
    • 是的,谢谢你让我知道.....这绝对是新的,因为我很确定它不会出现在旧码头上,而且它过去曾咬过我。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-03-25
    • 2017-08-20
    • 1970-01-01
    • 2018-10-15
    • 2015-06-17
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多