正在尝试了解 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
的工作方式。
预先感谢您的帮助。
答案 0 :(得分:1)
检查您的Docker版本-在较旧的Docker版本中 Dockerfile ENV命令使用空格而不是'='
FROM node:alpine
ARG NODE_ENV
ENV NODE_ENV ${NODE_ENV}