Docker 使用env_文件在compose文件中设置变量时出现警告

Docker 使用env_文件在compose文件中设置变量时出现警告,docker,docker-compose,environment-variables,Docker,Docker Compose,Environment Variables,在我的Docker/Laravel 5项目中,我试图重命名Docker的.env文件(我在Laravel项目中有类似的文件),因此我在Docker compose.yml中添加了两行代码: version: '3.1' services: web: env_file: ./docker_app.env build: context: ./web dockerfile: Docke

在我的Docker/Laravel 5项目中,我试图重命名Docker的.env文件(我在Laravel项目中有类似的文件),因此我在Docker compose.yml中添加了两行代码:

version: '3.1'

services:

    web:
        env_file:
            ./docker_app.env

        build:
            context: ./web
            dockerfile: Dockerfile.yml

        environment:
            - APACHE_RUN_USER=www-data
        volumes:
            - ${APP_PATH_HOST}:${APP_PTH_CONTAINER}

        ports:
            - 8081:80
        working_dir: ${APP_PTH_CONTAINER}


    db:
        image: mysql:5.7.24
        restart: always
        environment: 
            MYSQL_ROOT_PASSWORD: 1
        volumes:
            - ${DB_PATH_HOST}:/var/lib/mysql
但是当我运行build命令时,我得到一个错误:

$ docker-compose up -d --build
WARNING: The APP_PATH_HOST variable is not set. Defaulting to a blank string.
WARNING: The APP_PTH_CONTAINER variable is not set. Defaulting to a blank string.
WARNING: The DB_PATH_HOST variable is not set. Defaulting to a blank string.
...
Step 2/3 : RUN apt-get update &&     apt-get install -y     libfreetype6-dev     libwebp-dev     libjpeg62-turbo-dev     libpng-dev     nano     libgmp-dev     libldap2-dev     netcat     sqlite3     git     libsqlite3-dev &&     docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-webp-dir=/usr/include/  --with-jpeg-dir=/usr/include/ &&     docker-php-ext-install gd pdo pdo_mysql pdo_sqlite zip gmp bcmath pcntl ldap sysvmsg exif && a2enmod rewrite
 ...
docker\u app.env
内容包括:

DB_PATH_HOST=./databases

APP_PATH_HOST=./SiteApp

APP_PTH_CONTAINER=/var/www/html/
docker compose.yml
docker\u app.env
SiteApp
子目录位于同一根目录中

如果我在
docker compose.yml
中为
env_file
参数设置了一个无效的文件,我会得到另一个错误吗

如何修复此错误


谢谢

docker compose文件中的变量是而不是容器中的环境变量,它们是来自您的工作shell(在主机上)的环境变量。Docker从宿主环境读取这些变量,并在Docker compose文件中替换它们

您需要在docker_app.env中导出变量

一个快速的方法是

source docker_app.env
export $(cut -d= -f1 docker_app.env)
(归功于)

PS


您可以使用
docker compose config
查看替换的结果。

docker compose文件中的变量是而不是容器中的环境变量,它们是来自您的工作shell(在主机上)的环境变量。Docker从宿主环境读取这些变量,并在Docker compose文件中替换它们

您需要在docker_app.env中导出变量

一个快速的方法是

source docker_app.env
export $(cut -d= -f1 docker_app.env)
(归功于)

PS


您可以使用
docker compose config
查看替换的结果。

构建上下文为
/web
。是web目录中的
docker\u app.env
文件吗?生成上下文是
/web
docker\u app.env
文件是否在web目录中?