我想插入/传递 * ENV * 变量从docker-compose. yml到Dockerfile。
- 停靠-编写. yml**:
version: '3.8'
services:
app:
container_name: app-container
image: app:latest
build:
context: ./
dockerfile: Dockerfile
env_file: # Interpolation source files
- ./env
- .环境*:
PORT=3000
- 停靠文件**
FROM node:16
RUN echo ${PORT} # Output should be '3000'
有什么方法可以让我做到这一点吗?我正在尝试找到一种方法来传递.env
文件,特别是为了更好的组织。我还希望避免使用 * ARG *。
1条答案
按热度按时间h22fl7wq1#
如果.env文件默认在同一目录中,则由docker compose读取。变量可以由${key}在compose预处理(=compose文件)中使用。它不应该与移交给docker run的env文件混淆。它应该以其他方式命名。在我看来,将两者混淆是一个常见的错误。
构建时间变量可以由compose中的args、docker file和docker build --build-arg中的ARG、环境(docker run - e)或compose中的env_file(与docker run --env-file相同)提供运行时变量。您需要构建时间变量(args)。因此: