Предупреждение при установке переменных в файл compose с помощью env_file - PullRequest
0 голосов
/ 04 января 2019

В моем проекте Docker / Laravel 5 я пытаюсь переименовать файл .env Docker (у меня есть аналогичный файл в проекте Laravel), поэтому я добавил 2 строки в 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

но когда я запускаю команду сборки, я получаю сообщение об ошибке:

$ 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.yml, docker_app.env и SiteApp находятся в одном корневом каталоге

Если я задам неверный файл для параметра env_file в docker-compose.yml, получу ли я еще одну ошибку?

Как исправить эту ошибку?

Спасибо!

1 Ответ

0 голосов
/ 04 января 2019

Переменные в файле docker-compose не переменные среды в контейнере , они env из вашей рабочей оболочки (на хосте). Docker читает эти переменные из вашего хоста env и подставляет их в файл 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, чтобы увидеть замещенный результат.

...