Docker撰写并不能识别' env_file'

时间:2016-06-23 04:25:20

标签: docker environment-variables docker-compose dockerfile docker-build

我正在尝试使用以下配置运行docker-compose up

php:
    image: php:7.0-fpm
    expose:
        - 9000
    links:
        - nginx

nginx:
    env_file: .env
    image: nginx:latest
    ports:
        - 80:80
        - 433:433
    environment:
        - NGINX_HOST: ${APP_URL}

mysql:
    env_file: .env
    image: mysql:latest
    ports:
        - 3306:3306
    environment:
        - MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
        - MYSQL_DATABASE: ${DB_DATABASE}
        - MYSQL_USER: ${DB_USERNAME}
        - MYSQL_PASSWORD: ${DB_PASSWORD}
        - MYSQL_ALLOW_EMPTY_PASSWORD: no

我在同一目录中有一个.env文件,并且能够测试shell中的变量,但是docker似乎无法加载.env

  

警告:未设置APP_URL变量。默认为空字符串。

     

警告:未设置DB_PASSWORD变量。默认为空字符串。

     

警告:未设置DB_DATABASE变量。默认为空字符串。

     

警告:未设置DB_USERNAME变量。默认为空字符串。

     

错误:文件' ./ docker-compose.yaml'

中的验证失败


更新

我刚刚将env_file值更改为指向不存在的文件,并且不会抛出任何错误。好像码头工人完全无视选项。

3 个答案:

答案 0 :(得分:2)

与许多其他版本相关的问题一样,更新到 docker-compose v1.7.1 解决了这个问题,就像魅力一样!

答案 1 :(得分:0)

建议您也使用卷..否则,当删除或升级数据库容器时,您将丢失所有数据库数据。 :) 不要将包含敏感数据的ENV传递给NGINX .. 您还缺少FPM中与DB的链接。

答案 2 :(得分:0)

我遇到了这个问题,因为我没有从$docker-compose up.env文件所在的目录运行docker-compose.yml。该命令仍可以通过搜索找到docker-compose.yml文件,但不会在该位置搜索.env文件。