简体   繁体   中英

docker-compose load .env from dynamic path

I have below structure

在此处输入图像描述

The project root .env defines the path to either ./docker/dev/.env or ./docker/prod/.env as depicted below:

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

My docker-compose.yml contains the below service snippet:

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

However, when I do docker-compose build I receive below warnings; it's not detecting the ${dot_env_path} and loading it's content

在此处输入图像描述

Any idea, much appreciated?

Dont use environment: if you are using the env_file option. It overrides the variables already added to the environment from the env_file: option

Use this instead.

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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM