ป้ายกำกับ: ตรรกศาสตร์

Docker: MySQL ContainerDocker: MySQL Container

ในโลกของการพัฒนาซอฟต์แวร์ การจัดการฐานข้อมูล (Database) เป็นส่วนสำคัญที่ขาดไม่ได้ การใช้ Docker Container เป็นวิธีที่ยอดเยี่ยมในการแยกสภาพแวดล้อมของฐานข้อมูลออกจากระบบหลัก ทำให้การติดตั้ง การทดสอบ และการแชร์โปรเจกต์ทำได้ง่ายและสม่ำเสมอ

บทความนี้จะนำเสนอวิธีการสร้างและรัน PostgreSQL Database ใน Docker Container อย่างละเอียด โดยใช้เครื่องมือ Docker Compose ซึ่งเป็นมาตรฐานสำหรับนักพัฒนาที่ต้องการสภาพแวดล้อมฐานข้อมูลที่เชื่อถือได้และพร้อมใช้งานทันที

🛠️ ขั้นตอนที่ 1: การเตรียมสภาพแวดล้อม (Setup Environment)

ก่อนที่เราจะเริ่มสร้างไฟล์คอนฟิก เราต้องเตรียมโฟลเดอร์สำหรับเก็บข้อมูลของ PostgreSQL Container ก่อนเสมอ เพื่อให้ข้อมูลที่บันทึกไว้ไม่หายเมื่อ Container ถูกลบ

  1. สร้างโฟลเดอร์: ใช้คำสั่งนี้เพื่อสร้างไดเรกทอรีสำหรับเก็บข้อมูลฐานข้อมูล
  2. BASH / Shell

    mkdir -p ./data-postgres
    
  3. เข้าสู่โฟลเดอร์: ย้ายไปยังโฟลเดอร์ที่คุณต้องการสร้างไฟล์คอนฟิก
  4. BASH / Shell

    cd ./data-postgres
    
  5. สร้างไฟล์ Compose: สร้างไฟล์ที่ชื่อว่า docker-compose.yml
  6. 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 เวอร์ชัน 14
  • POSTGRES_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 อย่างมืออาชีพ