如何通过docker-composite.yml中的env_file将ENV变量插入到Dockerfile中?

42fyovps  于 2023-03-01  发布在  Docker
关注(0)|答案(1)|浏览(217)

我想插入/传递 * ENV * 变量从docker-compose. ymlDockerfile

    • 停靠-编写. 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 *。

h22fl7wq

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)。因此:

build:
  args:
    PORT: ${PORT}

相关问题