Docker编写的ARGS无法与环境配合使用

时间:2018-06-26 19:54:42

标签: docker docker-compose dockerfile

正在尝试了解 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的工作方式。

预先感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

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

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