Это в Dockerfile с
ОТ phusion/baseimage:hirsute
как фундамент.
Эта часть работала с php7.2, но нам нужно было переключиться на php7.4.
Переменная среды содержится в файле .env в формате DB_USER='username'.
или в среде docker-compose.yml как:
среда:
- DB_USER=${DB_USER:-по умолчанию}
- DB_PASS=пароль
- DB_NAME=база данных
Оригинальная часть 1 создания dbconnect.php (Dockerfile)
БЕГ { \
эхо "<?php"; \
echo "\$db = getenv('DB_DRIVER') ?: 'mysqli';"; \
echo "\$dbversion = getenv('DB_VERSION') ?: '8';"; \
echo " \$host = getenv('DB_HOST') ?: 'db';"; \
эхо " \$user = getenv('DB_USER');"; \
echo " \$pass = getenv('DB_PASS');"; \
echo " \$dbs = getenv('ИМЯ_БД') ?: 'база данных';"; \
эхо " \$client_charset = 'utf8mb4';"; \
} > /var/www/html/db/dbconnect.php
Исходная часть 1 создания dbconnect.php Производит в текущем работающем контейнере:
<?php
$db = getenv('DB_DRIVER') ?: 'mysqli';
$dbversion = getenv('DB_VERSION') ?: '8';
$host = getenv('DB_HOST') ?: 'db';
$user = getenv('DB_USER');
$pass = getenv('DB_PASS');
$dbs = getenv('DB_NAME') ?: 'база данных';
$client_charset = 'utf8mb4';
Таким образом, пароль и пользователь не имеют значения по умолчанию, но в любом случае это просто эхо без использования переменных.
Я поигрался и сделал тестовые варианты.
Следующие варианты Часть 2: все не работает:
ВЫПОЛНИТЬ { эхо "<?php"; \
эхо "\$pass=";\
эхо "${tikipass}" ; \
эхо "getenv ${DB_USER}" ; \
эхо "$DB_USER" ; \
эхо "getenv('DB_USER')"; \
эхо "привет"; \
echo "Количество = $DB_USER.\n"; \
} > /var/www/html/db/dbconnect.php
Вывод Варианта Часть 2 создания dbconnect.php Выдает в работающем контейнере:
<?php
$ пройти =
getenv
getenv('DB_USER')
привет
Считать = .
Итак, все варианты, которые я мог придумать, просто не улавливают переменное содержимое
Результирующий файл dbconnect.php должен иметь следующий формат:
<?php
$db='mysqli';
$dbversion='8.0';
$host='локальный';
$ пользователь = 'пользователь';
$pass='пароль';
$dbs='база данных';
$client_charset='utf8mb4';
Спасибо за помощь заранее.