บทความนี้สอนวิธีใช้ Docker ติดตั้งโปรแกรม PHP MySQL phpMyAdmin และ Apache โดยใช้ Docker Compose ร่วมกับ Dockerfile พร้อมทดลองเขียน PHP เชื่อมต่อกับฐานข้อมูล MySQL มีลำดับขั้นตอนดังนี้
ตัวอย่าง การใช้ Docker ติดตั้ง PHP MySQL phpMyAdmin
1. สร้างไฟล์ docker-compose.yml และเขียนคำสั่ง
version: '3'
services:
web:
build: .
ports:
- "80:80"
volumes:
- .:/var/www/html
depends_on:
- db
db:
image: mysql:5.7
environment:
MYSQL_ROOT_PASSWORD: mypassword
MYSQL_DATABASE: mydb
MYSQL_USER: user
MYSQL_PASSWORD: mypassword
volumes:
- db_data:/var/lib/mysql
phpmyadmin:
depends_on:
- db
image: phpmyadmin/phpmyadmin
restart: always
ports:
- 8080:80
environment:
PMA_HOST: db
MYSQL_ROOT_PASSWORD: mypassword
volumes:
db_data:
จากคำสั่งมีการติดตั้ง 3 บริการ
- บริการ web คือการติดตั้ง PHP และ Apache ด้วย Dockerfile รัน Ports 80
- บริการ db คือการติดตั้ง MySQL รัน Ports 3306 (Ports เริ่มต้น)
- บริการ phpmyadmin คือการติดตั้ง phpMyAdmin รัน Ports 8080
2. สร้าง Dockerfile สำหรับติดตั้ง PHP และ Apache พร้อมส่วนขยายต่างๆ
FROM php:8.0-apache
RUN docker-php-ext-install mysqli
WORKDIR /var/www/html
COPY . /var/www/html
EXPOSE 80
CMD ["apache2-foreground"]
3. สร้างไฟล์ index.php และเขียนโค้ดเชื่อมต่อฐานข้อมูล MySQL
<?php
$server = "db";
$username = "user";
$password = "mypassword";
$db = "mydb";
$conn = new mysqli($server, $username, $password, $db);
if ($conn->connect_error) {
die("ไม่สามารถเชื่อมต่อฐานข้อมูลได้เพราะ " . $conn->connect_error);
}
echo "เชื่อมต่อฐานข้อมูลสำเร็จ";
?>
4. ทำการ build และรัน image ให้เป็น container ด้วยคำสั่ง
docker-compose up --build
5. ทดลองรันด้วยการเข้า URL
http://localhost/
// ผลลัพธ์
เชื่อมต่อฐานข้อมูลสำเร็จ
6. ทดลองเข้า phpMyAdmin ด้วย URL
http://localhost:8080/
เข้าสู่ระบบด้วย
Username: root
Password: mypassword
(ถูกกำหนดไว้ใน docker-compose.yml ในส่วนของบริการ db และ phpmyadmin)