使用 docker compose 将环境变量从外部 env 文件传递​​到容器

xoo*_*ack 5 environment-variables docker docker-compose

我有一个 docker-compose 文件,它有一个运行 postgres 数据库映像的服务。数据库的环境变量(用户、密码、db_name)位于名为 的 env 文件中db.env

DB_USERNAME=some_user
DB_PASSWORD=thepassword
DB_NAME=database
Run Code Online (Sandbox Code Playgroud)

因为我只想在一个文件中包含这些变量,所以我想使用这个backand/db.env文件。问题是,环境变量名称与 postgres 使用的不同(DB_USERNAME <=> POSTGRES_USER)。

这是docker-compose.yml 文件:

services:
  db:
    image: postgres
    ports:
      - 5432:5432
    env_file: 
      - backend/db.env
    environment:
      - POSTGRES_PASSWORD=${DB_PASSWORD}
      - POSTGRES_USER=${DB_TEST}
      - POSTGRES_DB=${DB_DATABASE}
Run Code Online (Sandbox Code Playgroud)

我尝试使用与使用标准.env文件时相同的方法:Compose 中的环境变量

Lin*_*nPy 4

env_file将在撰写文件本身的容器中可用,因此您需要在此处.env使用.env

解决方法:

for i in $(cat < db.env); do export $i;done && docker-compose up -d
Run Code Online (Sandbox Code Playgroud)

数据库环境:

DB_USERNAME=some_user
DB_PASSWORD=thepassword
DB_NAME=database
Run Code Online (Sandbox Code Playgroud)