วิธีจำลองเซิฟเวอร์ PHP Docker และ PostgreSQL บน Container แทน XAMPP !

ปฏิวัติการพัฒนาแอปพลิเคชันด้วย Docker สร้างสภาพแวดล้อม PHP และ PostgreSQL ที่พร้อมใช้งานได้ทันที ช่วยเพิ่มความเร็วในการพัฒนา และสามารถพกพาโค้ดไปได้ทุกที่ วันนี้ Keancode.com จะพาจับมือทำสำหรับผู้เริ่มต้น – วิธีติดตั้ง PHP Docker และ PostgreSQL บน Container Engine กันน

ภาพนี้เป็นคีย์สำคัญในการเริ่มต้นใช้งาน หากผู้พัฒนาเข้าใจภาพนี้ การใช้งานก็จะง่ายขึ้นไปอี๊กก

ภาพรวม Docker Components , ที่มา : ภาพรวม Docker Components ที่มา : //www.xenonstack.com/blog/laravel-docker//www.xenonstack.com/blog/laravel-docker
ภาพรวมดอกเกอร์ Components , ที่มา : //www.xenonstack.com/blog/laravel-docker

สารบัญ

การติดตั้ง Engine

ก่อนจะไปเริ่มต้นสร้าง Environment (สภาพแวดล้อมเสมือน) จำเป็นต้องติดตั้งแอปฯสำหรับจัดการ Container ให้เรียบร้อยเสียก่อน

เริ่มต้นให้ผู้พัฒนาทุกคนไปที่เว็บไซต์ dockerdocs – Official Website กันก่อน จากนั้นมองหา เมนู “Docker Desktop”

Official Website - Dockerdocs
Official Website - Dockerdocs

เลือกติดตั้งให้ตรงกับเวอร์ชันบนอุปกรณ์คอมพิวเตอร์ที่ต้องการใช้งาน จากนั้นดาวน์โหลด และติดตั้งให้เรียบร้อย การตรวจสอบเพื่อให้มั่นใจว่าได้ทำการติดตั้ง Engine เรียบร้อยแล้ว สามารถเปิดโปรแกรมเวอร์ชัน Desktop ขึ้นมาดูหน้าต่างเริ่มต้นได้ 

เพียงเท่านี้เราก็มีดอกเกอร์ UI ไว้ใช้งานแล้วว ไปต่อ !

การจัดเตรียม Directory Project (โฟลเดอร์โปรเจค)

ในที่นี้ผมได้ สร้างโฟลเดอร์ชื่อว่า “php-postgres-docker” วางไว้ที่หน้า Desktop

ภายในโฟลเดอร์ผมจะเน้นไปที่ 4 ไฟล์หลักๆ ก่อน ได้แก่

  1. Folder “app” : เตรียมไว้เพื่อจัดเก็บไฟล์ Project ของเราที่จะทำการพัฒนาในอนาคต
  2. Dockerfile (ตั้งชื่อไฟล์ dockerfile ไม่ต้องมีนามสกุล) : ไฟล์นี้มีไว้เพื่อระบุความต้องการภายใน Envs ของเรา หรือ Image File ที่เรารู้จักนั่นเอง
  3. index.php : สร้างไฟล์นี้เตรียมไว้เพื่อทดสอบการทำงานของภาษา Php
  4. docker-compose.yml : สร้างไว้จัดการคอนเทนเนอร์หลายๆ ตัวในโปรเจกต์เดียวกัน

จัดเตรียม Directory Project สำหรับสร้าง Php docker
จัดเตรียม Directory Project สำหรับสร้าง Php docker

เริ่มต้นสร้าง Php Docker Container

1. กำหนดความต้องใน Dockerfile

เปิดไฟล์ด้วย Text Editor
เปิดไฟล์ด้วย Text Editor

เปิดไฟล์ 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 ได้เลย

หมายเหตุ : เข้าผ่านเว็บไซต์
เชื่อมต่อฐานข้อมูลผ่าน DBMS - Navicat
เชื่อมต่อฐานข้อมูลผ่าน DBMS - Navicat

จากรูปผมได้ทำการเชื่อมต่อ DB Postgres โดยใช้โปรแกรมจัดการฐานข้อมูลผ่าน DBMS อย่าง Navicat และได้สร้างฐานข้อมูลตัวอย่างไว้สำหรับทดสอบเชื่อมต่อกับภาษา Php เพื่อนำไปใช้ในขั้นตอนถัดไป

ถ้าอยากปิด Container เมื่อเลิกใช้งาน ให้พิมพ์ชุดคำสั่งนี้ “docker-compose stop” และเมื่อต้องการกลับมาใช้งานอีกครั้ง ก็สามารถรันชุดคำสั่ง “docker-compose up” ได้เลย

หมายเหตุ : กรณีควบคุมการใช้งานผ่าน cmd

เปิด-ปิด Container ด้วย Docker Desktop

นอกจากการใช้ชุดคำสั่ง cmd ในการใช้งาน Docker Engine แล้ว นักพัฒนายังสามารถใช้ Docker Desktop ซึ่งเป็น UI ที่ใช้งานง่าย ซึ่งทางผู้พัฒนาเค้าได้สร้างขึ้นมาไว้ให้เราใช้งานได้อีกด้วย 

ใช้งานคอนเทนเนอร์ผ่าน Docker Desktop UI
ใช้งานคอนเทนเนอร์ผ่าน Docker Desktop UI

จากรูปเราจะเห็นว่ามีคอนเทนเนอร์ที่เราได้สร้างไว้ในขั้นตอนที่แล้วแสดงอยู่ เราสามารถจัดการ เปิด-ปิด หรือติดตั้งคอนเทนเนอร์ใหม่ๆ ผ่าน Docker Desktop ได้ด้วยเช่นเดียวกัน แต่หากนักพัฒนาบางคนถนัดใช้ชุดคำสั่งเพียวๆ มากกว่าก็สามารถทำได้

ทดสอบการใช้งานภาษา Php เชื่อมกับ Postgres DB

เริ่มต้นให้เปิดไฟล์ index.php ด้วย Text Editor ขึ้นมาก่อน จากนั้นให้ลองเขียนโค้ดเพื่อติดต่อกับฐานข้อมูล ดังนี้

				
					<?php
echo "Hello, PHP 7.4.6! <br>";
// =====

// ---
// 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! <br>";
} 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 "<h2>Users:</h2>";
  foreach ($users as $user) {
      echo "ID: " . $user['id'] . "<br>";
      echo "Name: " . $user['name'] . "<br>";
  }
} catch (PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
// =====
?>

				
			

เมื่อเรียบร้อยแล้วให้ทดลองรันเว็บไซต์อีกครั้งด้วย localhost:999 จะพบว่าเราสามารถใช้งานเว็บไซต์ที่เชื่อมต่อฐานข้อมูลได้แล้ว เพียงเท่านี้ก็สามารถจำลองสภาพแวดล้อมเสมือนสำหรับพัฒนาเว็บไซต์ได้ด้วย Docker สำเร็จจจ !

ทดลองใช้งาน Php และ PostgreSQL บน Docker

เอ่ออ แล้วโฟลเดอร์ app มีไว้ทำไม ? เราเตรียมไว้เพื่อจัดเก็บไฟล์ Project ขนาดใหญ่ของเราต่อไปยังไงหล่ะ

เป็นยังไงกันบ้างครับไม่ยากเลยใช่ไหมสำหรับ การใช้งาน Docker ครั้งแรก

บทสรุป

การใช้งานเครื่องมือจัดการคอนเทนเนอร์เปลี่ยนวิธีการพัฒนาแอปพลิเคชันให้ง่าย รวดเร็ว และมีประสิทธิภาพมากยิ่งขึ้น ด้วยการสร้างสภาพแวดล้อมที่เป็นอิสระ และสามารถเคลื่อนย้ายไปใช้งานบนสภาพแวดล้อมอื่นๆ ได้อย่างง่ายดาย ซึ่งช่วยให้นักพัฒนาสามารถโฟกัสไปที่การพัฒนาแอปฯได้อย่างเต็มที่ ช่วยลดระยะเวลาที่ต้องเสียไปกับการตั้งค่าระบบฯ และสภาพแวดล้อมได้อย่างมากก

← Docker Containers คีย์สำคัญสู่การจัดการแอปพลิเคชันที่ง่าย และมีประสิทธิภาพ – Docker คืออะไร ?

เข้าใจ Docker Security สร้างกำแพงป้องกันที่แข็งแกร่งให้แอปพลิเคชันของคุณ →

AI เปลี่ยนโลก (Admin.earth)
AI เปลี่ยนโลก (Admin.earth)

Blogger technology in programmers' stains.

Articles: 117

Copyright © 2024 - เขียนโค้ดดอทคอม


Verified by MonsterInsights