Docker compose 不会使用 .env 变量 [NodeJS, Docker]

Docker compose won't use .env variables [NodeJS, Docker]

我想在 docker 撰写文件中使用我的环境变量。当我尝试 运行 它时,我为其中的每个变量都收到此错误,就像它们未定义一样:

The password variable is not set. Defaulting to a blank string.

一些上下文:

Docker-撰写:

version: '3.3'

services:
  mysqldb:
    image: mysql:8
    restart: always
    env_file: config.env
    environment:
      - MYSQL_ROOT_PASSWORD=$password
      - MYSQL_DATABASE=$database
    ports:
      - $db_port:$db_docker_port
    volumes:
      - db:/var/lib/mysql
  app:
    depends_on:
      - mysqldb
    build: ./
    restart: unless-stopped
    env_file: config.env
    ports:
      - $port:$port_docker
    environment:
      - DB_HOST=mysqldb
      - DB_USER=$user
      - DB_PASSWORD=$password
      - DB_NAME=$database
      - DB_PORT=$db_docker_port
    stdin_open: true
    tty: true
volumes: 
  db:

config.env:

database=dbname
host=localhost
user=user
password=password
port=5005
port_docker=5004
db_port=3306
db_docker_port=3307

我是否错误地导入了 config.env 文件?

试试这个语法

env_file:
 - config.env

您的环境变量文件应称为 .env 并且您使用语法 ${password}.

来使用这些变量

当您希望在容器内部设置变量时,使用您完成它的方式 - 使用 env_file 语句。当你这样做时,你不能在 docker-compose 文件中使用它们。

您可以删除 docker-compose 文件中的 env_file 语句,除非您也需要其中的变量。但看起来你使用 docker-compose 文件传递​​了它们。