Acesta este într-un Dockerfile cu
FROM phusion/baseimage:hirsute
ca fundaţie.
Această parte a funcționat cu php7.2, dar trebuia să trecem la php7.4
Variabilele de mediu sunt conținute într-un fișier .env în formatul DB_USER='nume utilizator'
sau în docker-compose.yml ca mediu ca:
mediu inconjurator:
- DB_USER=${DB_USER:-implicit}
- DB_PASS=parolă
- DB_NAME=bază de date
Partea originală 1 a creării dbconnect.php (Dockerfile)
ALERGA { \
ecou „<?php”; \
echo " \$db = getenv('DB_DRIVER') ?: 'mysqli';"; \
echo " \$dbversion = getenv('DB_VERSION') ?: '8';"; \
echo " \$host = getenv('DB_HOST') ?: 'db';"; \
echo " \$user = getenv('DB_USER');"; \
echo " \$pass = getenv('DB_PASS');"; \
echo " \$dbs = getenv('DB_NAME') ?: 'bază de date';"; \
echo " \$client_charset = 'utf8mb4';"; \
} > /var/www/html/db/dbconnect.php
Partea originală 1 a creării dbconnect.php Produce în containerul care rulează curent:
<?php
$db = getenv('DB_DRIVER') ?: 'mysqli';
$dbversion = getenv('DB_VERSION') ?: '8';
$gazdă = getenv('DB_HOST') ?: 'db';
$user = getenv('DB_USER');
$pass = getenv('DB_PASS');
$dbs = getenv('DB_NAME') ?: 'bază de date';
$client_charset = 'utf8mb4';
Deci parola și utilizatorul nu au implicit, dar oricum e doar ecou fără nicio utilizare a variabilelor.
M-am jucat și am produs variante de testare.
Următoarele variante Partea 2: toate nu funcționează:
RUN { echo "<?php"; \
echo „\$pass=";\
echo "${tikipass}" ; \
echo "getenv ${DB_USER}" ; \
echo „$DB_USER” ; \
echo "getenv('DB_USER')"; \
ecou „bună ziua”; \
echo "Număr = $DB_USER.\n"; \
} > /var/www/html/db/dbconnect.php
Ieșirea Variantei Partea 2 a creării dbconnect.php Produce în containerul care rulează:
<?php
$trece=
getenv
getenv('DB_USER')
salut
Număr = .
Deci, toate variantele la care m-aș putea gândi, nu prind conținutul variabil
Dbconnect.php rezultat ar trebui să fie în următorul format:
<?php
$db='mysqli';
$dbversion='8.0';
$host='localhost';
$user='utilizator';
$pass='parola';
$dbs='bază de date';
$client_charset='utf8mb4';
Multumesc pentru ajutor in avans.