веб-сервисы Amazon — установка переменных PHP $ _ENV в Docker-контейнере Elastic Beanstalk

У меня есть Docker-контейнер, на котором запущены nginx и php-fpm с использованием supervisord.
Я пытаюсь использовать .ebextensions / *. Config для настройки переменных среды.

Хотя переменные установлены в контейнере (например, # echo $VAR печатает ожидаемое значение), я не могу найти простой способ сделать их доступными для PHP. ИМХО, я мог только написать скрипт bash, чтобы читать и копировать переменные в www.conf или для конфигурации хоста nginx как fcgi_param. Но тогда этот скрипт должен знать, какие переменные копировать ….

Мне интересно, если кто-нибудь нашел более простой способ сделать это.

2

Решение

Есть два способа сделать это с любой надежностью. Для всего веб-содержимого установите переменные среды в файле .htaccess. Вы можете сделать это для вашей информации о соединении с базой данных, например:

# environment variables
SetEnv DBL "mysql:dbname=mydatabase;host=localhost;port=3306"SetEnv DB_USER "root"SetEnv DB_PASS "fruitygoodness"

Поместите файл .htaccess в корневой каталог вашего контейнера. Когда вам нужны переменные среды, вы можете получить их с помощью PHP getenv().

define('DBL', getenv('DBL'));
define('USER', getenv('DB_USER'));
define('PASS', getenv('DB_PASS'));

Для PHP-CLI внутри контейнера вы должны указать переменные среды в Docker run команда, указав опцию -e до каждой переменной. Вот пример:

sudo docker run --name mysite -e "DBL=mysql:dbname=mydatabase;host=localhost;port=3306" -e "DB_USER=root" -e "DB_PASS=fruitgoodness" -p 80:80 -p 443:443 -P -d  repo/mysite

Это делает переменные среды доступными для контейнера. но не на веб-сервер, работающий в контейнере.

1

Другие решения

Я написал скрипт bash, который будет копировать переменные env, начиная со списка префиксов, в файл fcon’s www.conf и запекать его в скрипт start.sh моего изображения.

Это по-прежнему не помещает переменные в $ _ENV :(, но добавляет их в $ _SERVER и доступно через getenv(),

Сценарий здесь: adrian7 / php-transfer-vars.sh

0

По вопросам рекламы [email protected]