นี่อยู่ใน Dockerfile ด้วย
จาก phusion/baseimage:hirsute
เป็นรองพื้น
ส่วนนี้ทำงานกับ php7.2 แต่เราจำเป็นต้องเปลี่ยนเป็น php7.4
ตัวแปรสภาพแวดล้อมมีอยู่ในไฟล์ .env ในรูปแบบ DB_USER='ชื่อผู้ใช้'
หรือใน docker-compose.yml เป็นสภาพแวดล้อมดังนี้:
สิ่งแวดล้อม:
- DB_USER=${DB_USER:-default}
- DB_PASS=รหัสผ่าน
- DB_NAME=ฐานข้อมูล
ต้นฉบับตอนที่ 1 ของการสร้าง dbconnect.php (Dockerfile)
วิ่ง { \
echo "<?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') ?: 'ฐานข้อมูล';"; \
echo " \$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';
ดังนั้นรหัสผ่านและผู้ใช้จึงไม่มีค่าเริ่มต้น แต่อย่างไรก็ตาม มันก็สะท้อนออกมาโดยไม่ต้องใช้ตัวแปรใดๆ
ฉันลองเล่นและสร้างตัวแปรทดสอบ
กำลังติดตามตัวแปร Part2: ทั้งหมดไม่ทำงาน:
เรียกใช้ { echo "<?php"; \
เสียงสะท้อน "\$pass=";\
echo "${tikipass}" ; \
echo "getenv ${DB_USER}" ; \
echo "$DB_USER" ; \
echo "getenv('DB_USER')"; \
เสียงสะท้อน "สวัสดี"; \
echo "จำนวน = $DB_USER.\n"; \
} > /var/www/html/db/dbconnect.php
ผลลัพธ์ของตัวแปรส่วนที่ 2 ของการสร้าง dbconnect.php ผลิตในคอนเทนเนอร์ที่กำลังรัน:
<?php
$pass=
เกเตน
getenv('DB_USER')
สวัสดี
นับ = .
ดังนั้นตัวแปรทั้งหมดที่ฉันคิดได้ก็แค่อย่าจับเนื้อหาตัวแปร
ผลลัพธ์ dbconnect.php ควรอยู่ในรูปแบบต่อไปนี้:
<?php
$db='mysqli';
$dbversion='8.0';
$host='localhost';
$user='ผู้ใช้';
$pass='รหัสผ่าน';
$dbs='ฐานข้อมูล';
$client_charset='utf8mb4';
ขอบคุณสำหรับความช่วยเหลือล่วงหน้า