PlusMagi's Blog By Pitt Phunsanit Backend,Cloud Computing สร้าง Custom PHP 8.5 Development Environment บน Alpine ด้วย mlocati และ Xdebug

สร้าง Custom PHP 8.5 Development Environment บน Alpine ด้วย mlocati และ Xdebug

ในโลกของการพัฒนาเว็บแอปพลิเคชันสมัยใหม่ การสร้างสภาพแวดล้อม (Development Environment) ที่แม่นยำและสามารถทำซ้ำได้ (Reproducible) เป็นสิ่งสำคัญอย่างยิ่ง บทความนี้จะนำเสนอวิธีการสร้าง Custom PHP 8.5 Development Environment บนพื้นฐานของ Alpine Linux โดยใช้ Docker และ Docker Compose ซึ่งเป็นสถาปัตยกรรมที่ทันสมัยและมีประสิทธิภาพสูง

เราจะใช้เครื่องมือยอดนิยมอย่าง install-php-extensions ของ mlocati เพื่อจัดการติดตั้ง PHP Extensions ที่จำเป็นอย่างรวดเร็วและสะอาด โดยเฉพาะอย่างยิ่งการติดตั้ง pdo_pgsql เพื่อรองรับการเชื่อมต่อกับระบบฐานข้อมูล PostgreSQL ได้อย่างสมบูรณ์แบบ

🛠️ โครงสร้างโปรเจกต์ (Project Structure)

โครงสร้างโฟลเดอร์ที่ถูกออกแบบมานี้จะช่วยแยกส่วนประกอบต่างๆ ออกจากกันอย่างชัดเจน ทำให้การดูแลและอัปเกรดระบบทำได้ง่าย:

BASH / Shell

/Users/common/Docker/\n├── .env                      # ไฟล์ตั้งค่าส่วนกลาง (DB Credentials, etc.)\n└── language_php_8_5_dev\n    ├── build.sh              # สคริปต์อัตโนมัติสำหรับ Build และรัน\n    ├── docker-compose.yml    # ไฟล์สำหรับรัน PHP-FPM และ PostgreSQL Service\n    ├── Dockerfile            # พิมพ์เขียวหลักในการสร้าง PHP Image\n    ├── install-extensions.sh # สคริปต์ติดตั้ง Extension (ใช้ mlocati)\n    └── xdebug.ini            # ไฟล์ตั้งค่า Xdebug แยกต่างหาก

⚙️ การกำหนดค่าหลัก (Core Configuration Files)

1. Dockerfile (PHP Image)

ไฟล์นี้กำหนดฐานภาพหลักและติดตั้ง Dependencies พื้นฐาน:

Plain Text

FROM alpine:latest\nWORKDIR /var/www/html\nCOPY install-extensions.sh .\nRUN sh install-extensions.sh\n# เพิ่มขั้นตอนอื่นๆ เช่น COPY source code

2. install-extensions.sh (mlocati)

สคริปต์นี้ใช้ mlocati เพื่อติดตั้ง PHP Extensions ที่จำเป็นสำหรับเว็บแอปพลิเคชันที่ใช้ PostgreSQL:

BASH / Shell

#!/bin/sh\n# ติดตั้ง PHP Extensions ที่จำเป็น\ncomposer require mlocati/install-php-extensions\n./vendor/bin/install-php-extensions --php-version=8.5 --extensions=pdo_pgsql,mysqli,opcache

3. docker-compose.yml (Orchestration)

นี่คือหัวใจของการทำงานที่เชื่อม PHP-FPM เข้ากับ PostgreSQL Service:

YAML

version: '3.8'\nservices:\n  db:\n    image: postgres:16-alpine\n    environment:\n      POSTGRES_USER: user_dev\n      POSTGRES_PASSWORD: secret_pass\n      POSTGRES_DB: app_db\n    ports: ["5432:5432"]\n  php-fpm:\n    build: ./language_php_8_5_dev\n    volumes: - ./language_php_8_5_dev:/var/www/html\n    depends_on: [db]

4. การทดสอบการเชื่อมต่อ (PostgreSQL Context)

หลังจากตั้งค่าทุกอย่างแล้ว เราสามารถทดสอบการเชื่อมต่อ PHP กับฐานข้อมูล PostgreSQL ได้ด้วยโค้ดที่สมบูรณ์:

SQL

-- ตัวอย่างการเชื่อมต่อและเรียกใช้ข้อมูลจาก PostgreSQL\nSELECT * FROM users WHERE id IN (1, 2, 3);\n
-- PHP Code Example (Conceptual):\n$pdo = new PDO('pgsql:host=db;port=5432;dbname=app_db', 'user_dev', 'secret_pass');\n$stmt = $pdo->prepare('SELECT name, email FROM users WHERE id = :id');\n$stmt->execute(['id' => 1]);

🚀 บทสรุป (Conclusion)

การใช้สถาปัตยกรรม Docker Compose ร่วมกับ mlocati ทำให้เราสามารถสร้าง PHP Development Environment ที่มีความยืดหยุ่นสูง รองรับ PHP เวอร์ชันใหม่ (8.5) และจัดการ Dependencies ต่างๆ เช่น pdo_pgsql ได้อย่างเป็นระบบ การแยกส่วนประกอบของฐานข้อมูล (PostgreSQL) ออกมาเป็น Service ต่างหาก ทำให้มั่นใจได้ว่าสภาพแวดล้อมการพัฒนาของเรามีความเสถียรและพร้อมสำหรับการทำงานระดับ Production อย่างแท้จริง

Exit mobile version