У меня есть докер-контейнер:
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
Я сделал :
Когда я обновляю страницу, я получаю: Environment variable not found: "DATABASE_HOST".. В чем проблема, я не понимаю. Я потратил много времени на анализ этого вопроса. Вы знаете об этом? Спасибо заранее. Кстати, когда я делаю docker inspect, я вижу, что все эти переменные среды назначены.
Возможно, вы смешиваете Docker environment var, которые похожи на вашу системную var (например, Unix ENV) и вашу Symfony var? Не могли бы вы показать, где вы пытаетесь использовать DATABASE_HOST?






Я сам столкнулся с этой проблемой. Вы должны явно сопоставить переменные среды, которые вы хотите сделать доступными для 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, или вы можете добавить их по одному, если хотите, как показано Робертом.
возможный дубликат stackoverflow.com/questions/41115003/…?