Это в 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';
Спасибо за помощь заранее.