Переменные среды не найдены symfony

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

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. докер-сочинять
  3. очистить кэш

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

возможный дубликат stackoverflow.com/questions/41115003/…?

schildi 07.06.2018 16:31

Возможно, вы смешиваете Docker environment var, которые похожи на вашу системную var (например, Unix ENV) и вашу Symfony var? Не могли бы вы показать, где вы пытаетесь использовать DATABASE_HOST?

Gregoire Ducharme 07.06.2018 16:39
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
1
2
7 700
2

Ответы 2

Я сам столкнулся с этой проблемой. Вы должны явно сопоставить переменные среды, которые вы хотите сделать доступными для 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

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

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

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

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

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

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

Другие вопросы по теме