VPS

Docker Compose บน VPS คืออะไร
รัน Multi-Container App ได้อย่างง่ายดาย

อัปเดต 14 กันยายน 2026 · อ่าน 12 นาที

Docker Compose บน VPS รัน Multi-Container App

Docker Compose คืออะไร

Docker Compose คือเครื่องมือสำหรับนิยามและรัน multi-container Docker application ด้วยไฟล์ YAML ไฟล์เดียว แทนที่จะต้องพิมพ์คำสั่ง docker run ยาวๆ หลายบรรทัดสำหรับแต่ละ container คุณแค่เขียน docker-compose.yml แล้วรัน docker compose up คำสั่งเดียวก็จบ

ตัวอย่างเช่น เว็บแอปพลิเคชันทั่วไปมักประกอบด้วย 3 ส่วน ได้แก่ web server, application server และ database ซึ่ง Docker Compose จะช่วยให้สามเซอร์วิสนี้ทำงานร่วมกันได้ โดยไม่ต้องตั้งค่าเครือข่ายเองแต่ละตัว

💡 Docker Compose เป็นส่วนหนึ่งของ Docker ecosystem และตั้งแต่ Docker v20.10 เป็นต้นมา Compose v2 ถูกรวมเข้ามาเป็น plugin มาตรฐานแล้ว ไม่ต้องติดตั้งแยก

ต่างจาก Docker อย่างไร

ผู้เริ่มต้นมักสับสนว่า Docker กับ Docker Compose ต่างกันอย่างไร ตารางด้านล่างเปรียบเทียบให้เห็นชัด:

หัวข้อDockerDocker Compose
จัดการContainer เดียวหลาย Container พร้อมกัน
คำสั่งหลักdocker rundocker compose up
ไฟล์ configDockerfiledocker-compose.yml
Networkตั้งเองด้วย flagสร้าง network อัตโนมัติ
ความเหมาะสมSingle service, CI/CDMulti-service app, Dev/Prod
Dependency orderไม่มีdepends_on รองรับ

วิธีติดตั้ง Docker + Compose บน VPS Ubuntu

สำหรับ VPS ที่รัน Ubuntu 22.04 หรือ 24.04 ให้ทำตามขั้นตอนนี้:

ขั้นตอนที่ 1: อัปเดต package และติดตั้ง dependencies

sudo apt update && sudo apt upgrade -y
sudo apt install -y ca-certificates curl gnupg lsb-release

ขั้นตอนที่ 2: เพิ่ม Docker GPG key และ repository

sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | \
  sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] \
  https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

ขั้นตอนที่ 3: ติดตั้ง Docker Engine + Compose plugin

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io \
  docker-buildx-plugin docker-compose-plugin

ขั้นตอนที่ 4: เพิ่ม user เข้ากลุ่ม docker (ไม่ต้องพิมพ์ sudo)

sudo usermod -aG docker $USER
newgrp docker

ตรวจสอบการติดตั้ง

docker --version
docker compose version

⚠️ ถ้ายังไม่เห็น docker compose (v2) ให้ตรวจสอบว่าติดตั้ง docker-compose-plugin แล้ว — อย่าสับสนกับ docker-compose (v1 แบบ dash ที่ deprecated แล้ว)

โครงสร้างไฟล์ docker-compose.yml

ไฟล์ docker-compose.yml ใช้รูปแบบ YAML มีโครงสร้างหลัก 3 ส่วน:

services:          # นิยาม container แต่ละตัว
  web:
    image: nginx:alpine
    ports:
      - "80:80"
    volumes:
      - ./html:/usr/share/nginx/html
    depends_on:
      - app

  app:
    build: .
    environment:
      - DB_HOST=db
    networks:
      - backend

  db:
    image: mysql:8
    environment:
      MYSQL_ROOT_PASSWORD: secret
    volumes:
      - db_data:/var/lib/mysql
    networks:
      - backend

volumes:           # นิยาม named volume
  db_data:

networks:          # นิยาม custom network
  backend:
Keyความหมาย
servicesกลุ่ม container ทั้งหมด
imageDocker image ที่ใช้
buildBuild จาก Dockerfile
portsMap port host:container
volumesMount ไฟล์/โฟลเดอร์
environmentEnvironment variables
depends_onรอ service อื่นก่อนเริ่ม
networksกำหนด network ที่ใช้
restartนโยบาย restart อัตโนมัติ

ตัวอย่าง: WordPress + MySQL บน VPS

ตัวอย่างนี้เป็นการรัน WordPress พร้อม MySQL database ซึ่งเป็นกรณีใช้งานที่พบบ่อยที่สุด:

version: '3.9'

services:
  wordpress:
    image: wordpress:latest
    ports:
      - "8080:80"
    restart: always
    environment:
      WORDPRESS_DB_HOST: db
      WORDPRESS_DB_USER: wpuser
      WORDPRESS_DB_PASSWORD: ${DB_PASSWORD}
      WORDPRESS_DB_NAME: wordpress
    volumes:
      - wp_data:/var/www/html
    depends_on:
      - db

  db:
    image: mysql:8.0
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_DATABASE: wordpress
      MYSQL_USER: wpuser
      MYSQL_PASSWORD: ${DB_PASSWORD}
    volumes:
      - db_data:/var/lib/mysql

volumes:
  wp_data:
  db_data:

บันทึกเป็น docker-compose.yml แล้วรัน:

docker compose up -d
docker compose ps   # ดู status

คำสั่งที่ใช้บ่อย

คำสั่งความหมาย
docker compose up -dเริ่มทุก service (detached)
docker compose downหยุดและลบ container
docker compose down -vหยุด + ลบ volume ด้วย
docker compose psดู status ทุก service
docker compose logs -fดู log แบบ real-time
docker compose logs webดู log เฉพาะ service "web"
docker compose exec app bashเข้า shell ของ container
docker compose restart dbrestart เฉพาะ service "db"
docker compose pullดึง image ล่าสุด
docker compose build --no-cacheBuild image ใหม่

Networking และ Volume

Network

เมื่อรัน docker compose up Docker จะสร้าง default network ชื่อ <foldername>_default โดยอัตโนมัติ ทำให้ทุก service คุยกันผ่าน service name ได้เลย เช่น ถ้า service ชื่อ db สามารถเชื่อมต่อด้วย hostname db ได้จาก container อื่น

Volume ประเภทต่างๆ

ประเภทตัวอย่างเหมาะกับ
Named volumedb_data:/var/lib/mysqlDatabase, persistent data
Bind mount./src:/app/srcDevelopment, hot reload
Anonymous volume/tmp/cacheTemp data

จัดการ Environment Variables ด้วย .env

ข้อมูลที่ sensitive เช่น password ควรเก็บในไฟล์ .env แยกออกมา:

# .env
DB_PASSWORD=myS3cur3P@ss
MYSQL_ROOT_PASSWORD=r00tS3cr3t

Docker Compose จะโหลดไฟล์ .env อัตโนมัติเมื่ออยู่โฟลเดอร์เดียวกัน และ ${DB_PASSWORD} ใน YAML จะถูกแทนที่ด้วยค่าจริง

🔒 อย่าลืมเพิ่ม .env เข้า .gitignore ก่อน commit เพื่อป้องกัน credential รั่วไหล

เคล็ดลับใช้งาน Production บน VPS

📌 VPS AsiaGB มี SSD storage และ Uptime 99% เหมาะสำหรับรัน Docker Compose app ได้ทั้ง VPS ไทย (BKK) และ VPS สิงคโปร์ — เริ่มต้นได้ทันทีที่ asiagb.com/vps.html

คำถามที่พบบ่อย (FAQ)

Docker Compose ต่างจาก Docker อย่างไร?
Docker รัน container ทีละตัว ส่วน Docker Compose ช่วยให้นิยามและรัน multi-container app ได้พร้อมกันผ่านไฟล์ YAML เดียว ทำให้จัดการ service หลายตัวง่ายขึ้น
VPS spec ขั้นต่ำสำหรับ Docker Compose คืออะไร?
แนะนำ RAM อย่างน้อย 2 GB สำหรับ app เบาเช่น WordPress + MySQL และ 4 GB ขึ้นไปสำหรับ app ที่ซับซ้อน CPU 2 vCore และ SSD เพียงพอสำหรับงานทั่วไป
Docker Compose v1 กับ v2 ต่างกันอย่างไร?
Compose v1 ใช้คำสั่ง docker-compose (Python-based, deprecated) ส่วน v2 เป็น plugin ของ Docker CLI ใช้ docker compose ไม่มี dash มีประสิทธิภาพดีกว่าและรองรับ Compose Specification ล่าสุด
หยุด container แล้วข้อมูลจะหายไหม?
ถ้าใช้ volume ข้อมูลจะไม่หาย เมื่อรัน docker compose up ใหม่ volume เดิมจะถูก mount กลับมา ข้อมูลใน database จะคงอยู่ — แต่ถ้า docker compose down -v volume จะถูกลบด้วย
ใช้ Docker Compose บน VPS AsiaGB ได้ไหม?
ได้เลย VPS AsiaGB รัน Ubuntu หรือ Linux distro อื่นๆ สามารถติดตั้ง Docker และ Docker Compose ได้ตามปกติ รองรับทั้ง VPS ไทยและสิงคโปร์ มี SSD storage และ Uptime 99%
docker compose up -d หมายความว่าอะไร?
-d ย่อมาจาก detached mode หมายถึงรัน container ในพื้นหลังโดยไม่แสดง log ออกหน้าจอ ทำให้ terminal ยังใช้งานได้ตามปกติ

สรุป

Docker Compose เป็นเครื่องมือที่ขาดไม่ได้สำหรับนักพัฒนาที่ต้องการรัน multi-container app บน VPS อย่างมีระเบียบ ข้อดีหลักคือ:

  • นิยาม stack ทั้งหมดในไฟล์ YAML เดียว — ทีมทำงานร่วมกันได้ง่าย
  • สร้าง network อัตโนมัติ — service คุยกันด้วย name ได้เลย
  • จัดการ volume ง่าย — ข้อมูลไม่หายเมื่อ restart
  • คำสั่งเดียว docker compose up -d เปิด stack ทั้งหมด

เริ่มต้นด้วย VPS AsiaGB ที่มี SSD storage พร้อม Uptime 99% เหมาะสำหรับรัน Docker Compose app ทั้ง dev และ production