【问题标题】:Docker compose won't use .env variables [NodeJS, Docker]Docker compose 不会使用 .env 变量 [NodeJS, Docker]
【发布时间】:2022-01-25 19:12:03
【问题描述】:

我想在 docker compose 文件中使用我的环境变量。当我尝试运行它时,其中的每个变量都会出现此错误,就像它们没有被定义一样:

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 文件?

【问题讨论】:

    标签: docker docker-compose dockerfile environment-variables


    【解决方案1】:

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

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

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

    【讨论】:

      【解决方案2】:

      试试这个语法

      env_file:
       - config.env
      

      【讨论】:

      • 感谢您的建议,但它仍然给出错误
      猜你喜欢
      • 2021-01-24
      • 2021-08-27
      • 1970-01-01
      • 2019-02-12
      • 2018-02-11
      • 2020-02-29
      • 1970-01-01
      • 2021-12-13
      • 2021-07-02
      相关资源
      最近更新 更多