Рейтинг:0

Переключитесь с php7.2 на 7.4 и с alpine на сценарий оболочки ubuntu/вопрос о файле Docker

флаг cn

Это в 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';

Спасибо за помощь заранее.

Carsten Aevermann avatar
флаг cn
так что один очистил код, но в полной версии был весь вопрос, nioce :-) Переформатирование файла путем удаления всех комментариев не поможет.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.