docker - компоновка load .env из динамического c пути - PullRequest
1 голос
/ 27 мая 2020

У меня есть структура ниже

enter image description here

Проект root .env определяет путь к ./docker/dev/.env или ./docker/prod/.env, как показано ниже:

environment=dev
dot_env_path=./docker/dev/.env

My docker -compose.yml содержит следующий фрагмент службы:

services:
    db:
        image: mysql:5.7
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        env_file: ${dot_env_path} <--notice this variable points to the actual .env
        environment:
            - MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
            - MYSQL_USER=${MYSQL_USER}
            - MYSQL_PASSWORD=${MYSQL_PASSWORD}
        ports: 
            - 3306:3306
        expose: 
            - 3306
        volumes:
            - db-tmc:/var/lib/mysql

Однако, когда я выполняю сборку docker-compose, я получаю предупреждения ниже; он не обнаруживает ${dot_env_path} и не загружает его содержимое

enter image description here

Любая идея, очень признательна?

1 Ответ

1 голос
/ 27 мая 2020

Не используйте environment:, если вы используете опцию env_file. Он отменяет переменные, уже добавленные в среду из параметра env_file:

Используйте это вместо этого.

services:
    db:
        image: mysql:5.7
        command: --default-authentication-plugin=mysql_native_password
        restart: always
        env_file: ${dot_env_path}   
        ports: 
            - 3306:3306
        expose: 
            - 3306
        volumes:
            - db-tmc:/var/lib/mysql
...