Đây là trong Dockerfile với
TỪ phusion/baseimage:hirsute
làm nền tảng.
Phần này đã hoạt động với php7.2 nhưng chúng tôi cần chuyển sang php7.4
Biến môi trường được chứa trong tệp .env ở Định dạng DB_USER='username'
hoặc trong docker-compose.yml dưới dạng môi trường như:
môi trường:
- DB_USER=${DB_USER:-default}
- DB_PASS=mật khẩu
- DB_NAME=cơ sở dữ liệu
Phần gốc 1 của việc tạo dbconnect.php (Dockerfile)
CHẠY { \
tiếng vang "<?php"; \
echo " \$db = getenv('DB_DRIVER') ?: 'mysqli';"; \
echo " \$dbversion = getenv('DB_VERSION') ?: '8';"; \
echo " \$host = getenv('DB_HOST') ?: 'db';"; \
tiếng vang " \$user = getenv('DB_USER');"; \
echo " \$pass = getenv('DB_PASS');"; \
echo " \$dbs = getenv('DB_NAME') ?: 'cơ sở dữ liệu';"; \
echo " \$client_charset = 'utf8mb4';"; \
} > /var/www/html/db/dbconnect.php
Phần 1 gốc của quá trình tạo dbconnect.php Sản xuất trong vùng chứa đang chạy hiện tại:
<?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') ?: 'cơ sở dữ liệu';
$client_charset = 'utf8mb4';
Vì vậy, mật khẩu và người dùng không có mặc định, nhưng dù sao đi nữa, nó chỉ lặp lại mà không cần sử dụng các biến.
Tôi đã chơi xung quanh và tạo ra các biến thể thử nghiệm.
Các biến thể sau Phần 2: tất cả đều không hoạt động:
CHẠY { tiếng vang "<?php"; \
tiếng vang "\$pass=";\
tiếng vang "${tikipass}" ; \
echo "getenv ${DB_USER}" ; \
tiếng vang "$DB_USER" ; \
tiếng vang "getenv('DB_USER')"; \
tiếng vang "chào"; \
echo "Count = $DB_USER.\n"; \
} > /var/www/html/db/dbconnect.php
Đầu ra của Biến thể Phần 2 của quá trình tạo dbconnect.php Sản xuất trong vùng chứa đang chạy:
<?php
$vượt qua=
getenv
getenv('DB_USER')
ê
Đếm = .
Vì vậy, tất cả các biến thể tôi có thể nghĩ đến chỉ là không nắm bắt được nội dung biến
Kết quả dbconnect.php phải ở định dạng sau:
<?php
$db='mysqli';
$dbversion='8.0';
$host='máy chủ cục bộ';
$user='người dùng';
$pass='mật khẩu';
$dbs='cơ sở dữ liệu';
$client_charset='utf8mb4';
Thx cho sự giúp đỡ trước.