ในโลกของการพัฒนาซอฟต์แวร์ การจัดการฐานข้อมูล (Database) เป็นส่วนสำคัญที่ขาดไม่ได้ การใช้ Docker Container เป็นวิธีที่ยอดเยี่ยมในการแยกสภาพแวดล้อมของฐานข้อมูลออกจากระบบหลัก ทำให้การติดตั้ง การทดสอบ และการแชร์โปรเจกต์ทำได้ง่ายและสม่ำเสมอ
บทความนี้จะนำเสนอวิธีการสร้างและรัน PostgreSQL Database ใน Docker Container อย่างละเอียด โดยใช้เครื่องมือ Docker Compose ซึ่งเป็นมาตรฐานสำหรับนักพัฒนาที่ต้องการสภาพแวดล้อมฐานข้อมูลที่เชื่อถือได้และพร้อมใช้งานทันที
🛠️ ขั้นตอนที่ 1: การเตรียมสภาพแวดล้อม (Setup Environment)
ก่อนที่เราจะเริ่มสร้างไฟล์คอนฟิก เราต้องเตรียมโฟลเดอร์สำหรับเก็บข้อมูลของ PostgreSQL Container ก่อนเสมอ เพื่อให้ข้อมูลที่บันทึกไว้ไม่หายเมื่อ Container ถูกลบ
- สร้างโฟลเดอร์: ใช้คำสั่งนี้เพื่อสร้างไดเรกทอรีสำหรับเก็บข้อมูลฐานข้อมูล
- เข้าสู่โฟลเดอร์: ย้ายไปยังโฟลเดอร์ที่คุณต้องการสร้างไฟล์คอนฟิก
- สร้างไฟล์ Compose: สร้างไฟล์ที่ชื่อว่า
docker-compose.yml
BASH / Shell
mkdir -p ./data-postgres
BASH / Shell
cd ./data-postgres
BASH / Shell
touch docker-compose.yml
🐳 ขั้นตอนที่ 2: การกำหนดค่าด้วย Docker Compose
เปิดไฟล์ docker-compose.yml และใส่เนื้อหาต่อไปนี้ การตั้งค่านี้กำหนดให้ Container ใช้ Image ของ PostgreSQL พร้อมทั้งตั้งค่า Environment Variables สำหรับการเข้าถึงฐานข้อมูล
YAML
services:
postgresdb:
command: -c "host all=all"
container_name: docker-postgres
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_DB: mydatabase
image: postgres:14
ports:
- "5432:5432"
restart: unless-stopped
volumes:
- ./data-postgres:/var/lib/postgresql/data
คำอธิบายการตั้งค่าที่สำคัญ:
image: postgres:14: ระบุว่าเราใช้ PostgreSQL เวอร์ชัน 14POSTGRES_USER: ชื่อผู้ใช้สำหรับฐานข้อมูล (เช่นuser)POSTGRES_PASSWORD: รหัสผ่านสำหรับผู้ใช้ (เช่นpassword)POSTGRES_DB: ชื่อฐานข้อมูลเริ่มต้น (เช่นmydatabase)ports: 5432:5432: เปิดพอร์ต 5432 ของ Container ให้เข้าถึงได้จากเครื่องโฮสต์volumes: ./data-postgres:/var/lib/postgresql/data: การแมป Volume เพื่อให้ข้อมูลคงอยู่แม้ Container จะถูกลบ
🚀 ขั้นตอนที่ 3: การรัน Container
เมื่อไฟล์คอนฟิกพร้อมแล้ว ให้รันคำสั่งเพื่อดาวน์โหลด Image และสร้าง Container ในโหมด Background:
BASH / Shell
docker compose up -d
หากต้องการตรวจสอบว่า Container ทำงานอยู่หรือไม่ ให้ใช้คำสั่ง:
BASH / Shell
docker ps
🧪 ขั้นตอนที่ 4: การทดสอบการเชื่อมต่อ (Testing Connection)
คุณสามารถเข้าถึง PostgreSQL Shell (psql) ภายใน Container เพื่อทดสอบการเชื่อมต่อได้ทันที โดยใช้คำสั่ง docker exec:
BASH / Shell
docker exec -it docker-postgres psql -U user -d mydatabase
ระบบจะแจ้งให้คุณใส่รหัสผ่าน (password) เมื่อเข้าสู่ Prompt psql ได้สำเร็จ แสดงว่าการติดตั้งสำเร็จแล้ว คุณสามารถรันคำสั่ง SQL เพื่อทดสอบได้ เช่น:
SQL
SELECT version();
เมื่อเสร็จสิ้น ให้พิมพ์ ye เพื่อออกจาก psql shell
💡 คำสั่งที่พบบ่อย (Common Commands)
- เข้าถึง Shell:
BASH / Shell
docker exec -it docker-postgres psql -U user
- ตรวจสอบ Log: ดู Log การทำงานของ Container
BASH / Shell
docker logs docker-postgres
- หยุด Container:
BASH / Shell
docker compose down
✅ บทสรุป (Conclusion)
การใช้ Docker Compose เพื่อรัน PostgreSQL Container ไม่เพียงแต่ช่วยให้การตั้งค่าฐานข้อมูลเป็นมาตรฐานเท่านั้น แต่ยังช่วยให้ทีมพัฒนาสามารถทำงานร่วมกันได้อย่างราบรื่น โดยไม่ต้องกังวลเรื่องความแตกต่างของสภาพแวดล้อม (Environment Parity) การทำความเข้าใจการแมป Volume และการใช้คำสั่ง docker exec คือกุญแจสำคัญในการจัดการฐานข้อมูลในรูปแบบ Containerization อย่างมืออาชีพ