Переменные окружения не найдены Symfony - PullRequest
0 голосов
/ 07 июня 2018

У меня есть докер-контейнер:

services:
php-fpm:
    build:
        context: ./docker/php-fpm

    volumes:
        - ./symfony:/home/home
    container_name: php
    ports:
        - "9004:9001"
    networks:
        - local
    working_dir: /home/home
    environment:
        - DATABASE_HOST=test
        - DATABASE_PORT=
        - DATABASE_NAME=test

Я сделал:

  1. сборка docker-compose --no-cache
  2. docker-compose up
  3. очистить кеш

Когда я обновляю страницу, я получаю: Environment variable not found: "DATABASE_HOST"..В чем проблема, я не понимаю.Я провел много времени, анализируя эту проблему.У вас есть идея об этом?Спасибо заранее.Кстати, когда я делаю docker inspect, я вижу все эти переменные среды назначены.

Ответы [ 2 ]

0 голосов
/ 21 июня 2018

Если вы выходите из официального образа PHP Docker, он устанавливает для вас clear_env = no или вы можете установить его самостоятельно в конфигурации вашего пула.

Вот строка , добавляющая clear_env = no в конфиг в официальном образе.Вам просто нужно добавить это в конфигурацию пула FPM, или вы можете добавить их один за другим, если хотите, как показано Робертом.

0 голосов
/ 07 июня 2018

Я сам столкнулся с этой проблемой.Вы должны явно отобразить переменные окружения, которые вы хотите сделать доступными для php / symfony, в php-fpm.conf, например:

[www]
env[MY_ENV_VAR_1] = 'value1'
env[MY_ENV_VAR_2] = 'value2'

Однако, похоже, это не работает с фактическими переменными окружения с хоста!,

Здесь долго обсуждается это (наряду с несколькими, как мне кажется, кропотливыми обходными путями решения проблемы: https://groups.google.com/forum/#!topic/docker-user/FCzUbjTIp_0

Я успешно сделал это в пулеФайл конфигурации .d выглядит так:

env[DATABASE_HOST] = $DATABASE_HOST
env[DATABASE_PORT] = $DATABASE_PORT
env[DATABASE_NAME] = $DATABASE_NAME

Я просто добавляю это как часть файла Docker:

ADD fpm/app.pool.conf /etc/php5/fpm/pool.d/
...