如何从.env文件获取环境变量到docker-compose.yml?

时间:2018-03-04 14:55:35

标签: docker environment-variables docker-compose

我有一个.env文件和一个docker-compose文件。我使用docker-compose上的env_file属性引用env文件。然后我使用变量插值来设置另一个环境变量,使用.env文件中定义的变量。出于某种原因,Docker无法识别.env文件中定义的变量。

app.env

MYSQL_DATABASE=wordpress
DB_USER=root
MYSQL_ROOT_PASSWORD=example

搬运工-compose.yml

version: '3.1'
services:
  wordpress:
    container_name: 'wp'
    build: .
    restart: unless-stopped
    links:
      - mysql
    env_file:
      - app.env
    environment:
      - WORDPRESS_DB_USER=${DB_USER}
      - WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - WORDPRESS_DB_NAME=${MYSQL_DATABASE}
    ports:
      - 80:80

1 个答案:

答案 0 :(得分:2)

似乎你混淆了env_file配置选项的含义。它将多个环境变量从外部文件传递到服务的容器。它与environment相同,但它们是从文件加载的。

如果您想docker compose识别.env文件中定义的变量,则该文件应该是.env文件。

实现您的需求:

1。app.env重命名为.env

mv app.env .env

2。env_file删除docker-compose.yaml配置选项:

version: '3.1'
services:
  wordpress:
    container_name: 'wp'
    build: .
    restart: unless-stopped
    links:
      - mysql
    environment:
      - WORDPRESS_DB_USER=${DB_USER}
      - WORDPRESS_DB_PASSWORD=${MYSQL_ROOT_PASSWORD}
      - WORDPRESS_DB_NAME=${MYSQL_DATABASE}
    ports:
      - 80:80