【问题标题】:Warning when setting variables in compose file with env_file使用 env_file 在撰写文件中设置变量时发出警告
【发布时间】:2019-01-04 12:42:26
【问题描述】:

在我的 Docker/Laravel 5 项目中,我试图重命名 Docker 的 .env 文件(我在 Laravel 项目中有类似的文件),所以我在 docker-compose.yml 中添加了 2 行:

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

但是当我运行构建命令时出现错误:

$ 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_app.env 内容为:

DB_PATH_HOST=./databases

APP_PATH_HOST=./SiteApp

APP_PTH_CONTAINER=/var/www/html/

docker-compose.ymldocker_app.envSiteApp子目录在同一个根目录下

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

如何解决这个错误?

谢谢!

【问题讨论】:

  • 构建上下文是./webdocker_app.env 文件在 web 目录中吗?

标签: docker docker-compose environment-variables


【解决方案1】:

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

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

一个快速的方法是

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

(感谢https://unix.stackexchange.com/questions/79064/how-to-export-variables-from-a-file

PS

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

【讨论】:

    猜你喜欢
    • 2018-07-14
    • 2012-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-06-09
    • 2022-11-03
    相关资源
    最近更新 更多