ปฏิวัติการพัฒนาแอปพลิเคชันด้วย Docker สร้างสภาพแวดล้อม PHP และ PostgreSQL ที่พร้อมใช้งานได้ทันที ช่วยเพิ่มความเร็วในการพัฒนา และสามารถพกพาโค้ดไปได้ทุกที่ วันนี้ Keancode.com จะพาจับมือทำสำหรับผู้เริ่มต้น – วิธีติดตั้ง PHP Docker และ PostgreSQL บน Container Engine กันน
ภาพนี้เป็นคีย์สำคัญในการเริ่มต้นใช้งาน หากผู้พัฒนาเข้าใจภาพนี้ การใช้งานก็จะง่ายขึ้นไปอี๊กก
สารบัญ
การติดตั้ง Engine
ก่อนจะไปเริ่มต้นสร้าง Environment (สภาพแวดล้อมเสมือน) จำเป็นต้องติดตั้งแอปฯสำหรับจัดการ Container ให้เรียบร้อยเสียก่อน
เริ่มต้นให้ผู้พัฒนาทุกคนไปที่เว็บไซต์ dockerdocs – Official Website กันก่อน จากนั้นมองหา เมนู “Docker Desktop”
เลือกติดตั้งให้ตรงกับเวอร์ชันบนอุปกรณ์คอมพิวเตอร์ที่ต้องการใช้งาน จากนั้นดาวน์โหลด และติดตั้งให้เรียบร้อย การตรวจสอบเพื่อให้มั่นใจว่าได้ทำการติดตั้ง Engine เรียบร้อยแล้ว สามารถเปิดโปรแกรมเวอร์ชัน Desktop ขึ้นมาดูหน้าต่างเริ่มต้นได้
เพียงเท่านี้เราก็มีดอกเกอร์ UI ไว้ใช้งานแล้วว ไปต่อ !
การจัดเตรียม Directory Project (โฟลเดอร์โปรเจค)
ในที่นี้ผมได้ สร้างโฟลเดอร์ชื่อว่า “php-postgres-docker” วางไว้ที่หน้า Desktop
ภายในโฟลเดอร์ผมจะเน้นไปที่ 4 ไฟล์หลักๆ ก่อน ได้แก่
- Folder “app” : เตรียมไว้เพื่อจัดเก็บไฟล์ Project ของเราที่จะทำการพัฒนาในอนาคต
- Dockerfile (ตั้งชื่อไฟล์ dockerfile ไม่ต้องมีนามสกุล) : ไฟล์นี้มีไว้เพื่อระบุความต้องการภายใน Envs ของเรา หรือ Image File ที่เรารู้จักนั่นเอง
- index.php : สร้างไฟล์นี้เตรียมไว้เพื่อทดสอบการทำงานของภาษา Php
- docker-compose.yml : สร้างไว้จัดการคอนเทนเนอร์หลายๆ ตัวในโปรเจกต์เดียวกัน
เริ่มต้นสร้าง Php Docker Container
1. กำหนดความต้องใน Dockerfile
เปิดไฟล์ Dockerfile ด้วย Text Editor ที่เราชื่นชอบ จากตัวอย่างผมใช้ VScode เพื่อเปิดไฟล์
จากนั้น ระบุความต้องการของ Envs ที่เราต้องการลงในไฟล์ และบันทึกให้เรียบร้อย ดังโค้ด
# Use the official PHP 7.4.6 image as the base
FROM php:7.4.6-apache
# Install PostgreSQL client libraries and other dependencies
RUN apt-get update && \
apt-get install -y \
libpq-dev \
&& docker-php-ext-install pdo_pgsql pgsql
# Copy your PHP application files to the container
COPY . /var/www/html/
# Expose port 80 to the host
EXPOSE 80
2. กำหนดตัวจัดการคอนเทนเนอร์ด้วย docker-compose.yml
ผมได้ทำการกำหนด Port ที่ต้องการใช้งานในส่วนของ Php Server และ PostgreSQL รวมถึงการตั้งค่ารหัสผ่านต่างๆ ไว้ในส่วนนี้ ดังโค้ด
version: '3.8'
services:
php:
build: .
ports:
- "999:80"
depends_on:
- db
volumes:
- .:/var/www/html
db:
image: postgres:13
environment:
POSTGRES_DB: mydatabase
POSTGRES_USER: myuser
POSTGRES_PASSWORD: 1234
ports:
- "5432:5432"
volumes:
- pgdata:/var/lib/postgresql/data
volumes:
pgdata:
3. เริ่มต้น Build Container
หลังจากที่เราได้กำหนดรายละเอียดต่างๆ ที่ต้องการใส่ใน Envs ลงในไฟล์ทั้ง 2 เรียบร้อยแล้ว ขั้นตอนต่อไปคือให้ เปิด Command Prompt (CMD) ขึ้นมา แล้วเข้าไปยังโฟลเดอร์ที่เก็บไฟล์โปรเจคของเรา “php-postgres-docker” หรือเข้าไปที่โฟลเดอร์ก่อน แล้วพิมพ์ “cmd” ในช่องพาร์ทของโฟลเดอร์ได้เช่นกัน
แล้วทำการรันชุดคำสั่งสำหรับสร้างคอนเทนเนอร์ ดังต่อไปนี้
docker-compose up --build
ชุดคำสั่งนี้เป็นการบอกให้ Engine ทำการ Build และ Start Container เพื่อเริ่มต้นใช้งานในครั้งแรก
เราสามารถทดสอบการทำงานของ Server ได้โดยการเข้าไปที่
"localhost:999" (ผมกำหนด Port 999 ไว้) สำหรับการใช้งาน Php Server
"localhost:5432" สำหรับการใช้งาน PostgreSQL สามารถระบุ Username & Password ตามที่กำหนดไว้ในไฟล์ YAML ได้เลย
จากรูปผมได้ทำการเชื่อมต่อ DB Postgres โดยใช้โปรแกรมจัดการฐานข้อมูลผ่าน DBMS อย่าง Navicat และได้สร้างฐานข้อมูลตัวอย่างไว้สำหรับทดสอบเชื่อมต่อกับภาษา Php เพื่อนำไปใช้ในขั้นตอนถัดไป
ถ้าอยากปิด Container เมื่อเลิกใช้งาน ให้พิมพ์ชุดคำสั่งนี้ “docker-compose stop” และเมื่อต้องการกลับมาใช้งานอีกครั้ง ก็สามารถรันชุดคำสั่ง “docker-compose up” ได้เลย
เปิด-ปิด Container ด้วย Docker Desktop
นอกจากการใช้ชุดคำสั่ง cmd ในการใช้งาน Docker Engine แล้ว นักพัฒนายังสามารถใช้ Docker Desktop ซึ่งเป็น UI ที่ใช้งานง่าย ซึ่งทางผู้พัฒนาเค้าได้สร้างขึ้นมาไว้ให้เราใช้งานได้อีกด้วย
จากรูปเราจะเห็นว่ามีคอนเทนเนอร์ที่เราได้สร้างไว้ในขั้นตอนที่แล้วแสดงอยู่ เราสามารถจัดการ เปิด-ปิด หรือติดตั้งคอนเทนเนอร์ใหม่ๆ ผ่าน Docker Desktop ได้ด้วยเช่นเดียวกัน แต่หากนักพัฒนาบางคนถนัดใช้ชุดคำสั่งเพียวๆ มากกว่าก็สามารถทำได้
ทดสอบการใช้งานภาษา Php เชื่อมกับ Postgres DB
เริ่มต้นให้เปิดไฟล์ index.php ด้วย Text Editor ขึ้นมาก่อน จากนั้นให้ลองเขียนโค้ดเพื่อติดต่อกับฐานข้อมูล ดังนี้
";
// =====
// ---
// Connect Pgsql
// ---
$host = 'db';
$db = 'mydatabase';
$user = 'myuser';
$pass = '1234';
$port = "5432";
$dsn = "pgsql:host=$host;port=$port;dbname=$db;";
// ---
// Check connect Pgsql
// ---
try {
$pdo = new PDO($dsn, $user, $pass);
echo "Connected to PostgreSQL!
";
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
// ---
// Check query Pgsql
// ---
try {
$pdo = new PDO($dsn, $user, $pass);
// Query the users table
$query = $pdo->query("SELECT * FROM users");
// Fetch and display the results
$users = $query->fetchAll(PDO::FETCH_ASSOC);
echo "Users:
";
foreach ($users as $user) {
echo "ID: " . $user['id'] . "
";
echo "Name: " . $user['name'] . "
";
}
} catch (PDOException $e) {
echo "Connection failed: " . $e->getMessage();
}
// =====
?>
เมื่อเรียบร้อยแล้วให้ทดลองรันเว็บไซต์อีกครั้งด้วย localhost:999 จะพบว่าเราสามารถใช้งานเว็บไซต์ที่เชื่อมต่อฐานข้อมูลได้แล้ว เพียงเท่านี้ก็สามารถจำลองสภาพแวดล้อมเสมือนสำหรับพัฒนาเว็บไซต์ได้ด้วย Docker สำเร็จจจ !
เอ่ออ แล้วโฟลเดอร์ app มีไว้ทำไม ? เราเตรียมไว้เพื่อจัดเก็บไฟล์ Project ขนาดใหญ่ของเราต่อไปยังไงหล่ะ
เป็นยังไงกันบ้างครับไม่ยากเลยใช่ไหมสำหรับ การใช้งาน Docker ครั้งแรก
บทสรุป
การใช้งานเครื่องมือจัดการคอนเทนเนอร์เปลี่ยนวิธีการพัฒนาแอปพลิเคชันให้ง่าย รวดเร็ว และมีประสิทธิภาพมากยิ่งขึ้น ด้วยการสร้างสภาพแวดล้อมที่เป็นอิสระ และสามารถเคลื่อนย้ายไปใช้งานบนสภาพแวดล้อมอื่นๆ ได้อย่างง่ายดาย ซึ่งช่วยให้นักพัฒนาสามารถโฟกัสไปที่การพัฒนาแอปฯได้อย่างเต็มที่ ช่วยลดระยะเวลาที่ต้องเสียไปกับการตั้งค่าระบบฯ และสภาพแวดล้อมได้อย่างมากก
← Docker Containers คีย์สำคัญสู่การจัดการแอปพลิเคชันที่ง่าย และมีประสิทธิภาพ – Docker คืออะไร ?
เข้าใจ Docker Security สร้างกำแพงป้องกันที่แข็งแกร่งให้แอปพลิเคชันของคุณ →