我试图了解 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/