我试图了解 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 版本中,Dockerfile ENV命令使用空格而不是'='

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

关于docker - Docker撰写ARGS不适用于环境,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51050485/

10-16 12:26