สร้างระบบ Continuous Delivery ให้ Django บน DigitalOcean ด้วย GitHub Actions และ Docker
สรุปสั้น ๆ: บทความนี้จะแนะนำขั้นตอนแบบครบวงจรในการสร้าง ระบบ Continuous Delivery (CD) สำหรับโปรเจกต์ Django โดยใช้เครื่องมือยอดนิยมอย่าง GitHub Actions, Docker และ DigitalOcean (VM Ubuntu) เพื่อให้คุณสามารถทดสอบและนำโค้ดขึ้น Production ได้โดยอัตโนมัติทันทีที่ Push ไปยัง GitHub
💡 Continuous Delivery คืออะไร?
Continuous Delivery (CD) คือกระบวนการพัฒนา Software ที่ทำให้โค้ดของคุณอยู่ในสถานะที่สามารถนำขึ้น Production ได้เสมอ โดยมีจุดเด่นคือ
- ✅ อัปเดตฟีเจอร์ได้รวดเร็ว
- 🔄 ลดขั้นตอน Manual ที่อาจเกิดข้อผิดพลาด
- 🔐 ส่งมอบได้บ่อยและปลอดภัย
- 🧪 ทดสอบโค้ดอัตโนมัติทุกครั้งที่มีการเปลี่ยนแปลง
🔄 แผนภาพการทำงานของ CD Pipeline
graph TD
A["Push โค้ดขึ้น GitHub"] --> B["GitHub Actions เริ่มทำงาน"]
B --> C[Checkout code]
C --> D["SSH เข้าสู่ DigitalOcean VM"]
D --> E["ดึงโค้ดล่าสุดจาก Git"]
E --> F["Build Docker ใหม่"]
F --> G["Restart Django ด้วย Docker Compose"]
G --> H["แอปออนไลน์แบบอัตโนมัติ"]
| ลำดับ | รายละเอียด |
|---|---|
| A | นักพัฒนาส่งโค้ดขึ้น GitHub |
| B | GitHub Actions เริ่ม Pipeline โดยอัตโนมัติ |
| C | ดึงโค้ดมาบน runner |
| D | เชื่อมต่อเซิร์ฟเวอร์ผ่าน SSH |
| E | ใช้ git pull เพื่อดึงโค้ดล่าสุด |
| F | Rebuild Docker |
| G | รีสตาร์ทแอปด้วย Docker Compose |
| H | ระบบออนไลน์โดยไม่ต้องแตะเซิร์ฟเวอร์เลย |
🛠️ เครื่องมือที่ใช้
| หน้าที่ | เครื่องมือ |
|---|---|
| CI/CD | GitHub Actions |
| เซิร์ฟเวอร์จริง | DigitalOcean (Ubuntu) |
| Containerization | Docker + Docker Compose |
| Web Server | Nginx |
| การเข้าถึงจาก GitHub | SSH + Secret Key |
📦 ขั้นตอนที่ 1: สร้าง Dockerfile สำหรับ Django
FROM python:3.11-slim
ENV PYTHONDONTWRITEBYTECODE 1
ENV PYTHONUNBUFFERED 1
WORKDIR /app
COPY requirements.txt .
RUN pip install --no-cache-dir -r requirements.txt
COPY . .
CMD ["gunicorn", "myproject.wsgi:application", "--bind", "0.0.0.0:8000"]
🐳 ขั้นตอนที่ 2: สร้าง docker-compose.prod.yml
version: '3.9'
services:
web:
build: .
env_file: .env
volumes:
- .:/app
expose:
- 8000
nginx:
image: nginx:alpine
ports:
- "80:80"
volumes:
- ./nginx.conf:/etc/nginx/conf.d/default.conf
depends_on:
- web
🌐 ขั้นตอนที่ 3: ตั้งค่า Nginx
server {
listen 80;
server_name yourdomain.com;
location / {
proxy_pass http://web:8000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
}
}
🔐 ขั้นตอนที่ 4: ตั้งค่า SSH ให้ GitHub Actions
- สร้าง SSH Key:
ssh-keygen -t ed25519 -C "your_email@example.com"
- นำ public key ไปใส่ใน
/home/deploy/.ssh/authorized_keysบน VM - นำ private key ไปใส่ใน GitHub Secrets ชื่อว่า:
DO_SSH_PRIVATE_KEY
🤖 ขั้นตอนที่ 5: GitHub Actions Workflow
name: Django CD to DigitalOcean
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup SSH
run: |
mkdir -p ~/.ssh
echo "${{ secrets.DO_SSH_PRIVATE_KEY }}" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
ssh-keyscan your.server.ip >> ~/.ssh/known_hosts
- name: Deploy via SSH
run: |
ssh -i ~/.ssh/id_ed25519 deploy@your.server.ip << 'EOF'
cd /home/deploy/myproject/
git pull origin main
docker compose -f docker-compose.prod.yml down
docker compose -f docker-compose.prod.yml up -d --build
EOF
🧠 อย่าลืมเปลี่ยน
your.server.ipและdeployให้ตรงกับเครื่องของคุณ
🔧 ไฟล์ .env ตัวอย่าง
DJANGO_SECRET_KEY=super-secret-key
DEBUG=False
ALLOWED_HOSTS=yourdomain.com
📁 โครงสร้างไฟล์บนเซิร์ฟเวอร์
/home/deploy/myproject/
├── manage.py
├── myproject/
├── Dockerfile
├── docker-compose.prod.yml
├── .env
├── nginx.conf
✅ ผลลัพธ์ที่ได้
- ทุกครั้งที่ push → ระบบจะ pull, build, restart ให้อัตโนมัติ
- ลดเวลา deploy เหลือเพียงไม่กี่วินาที
- ไม่ต้อง ssh เข้าไปจัดการเองอีกต่อไป
🌟 เคล็ดลับเพิ่มเติม
- เพิ่ม Sentry เพื่อติดตาม Error
- ใช้
systemdหรือsupervisorเพื่อดูแล container - ใช้ Let’s Encrypt + Certbot สำหรับ HTTPS ฟรี
🧠 สรุป
คุณสามารถสร้างระบบ Continuous Delivery สำหรับ Django ด้วยเครื่องมือฟรีและง่ายต่อการใช้งาน ตั้งแต่การพัฒนาไปจนถึงการส่งมอบบน VM จริง ด้วยความมั่นใจและอัตโนมัติเต็มรูปแบบ
Get in Touch with us
Related Posts
- Fine-Tuning vs Prompt Engineering แบบเข้าใจง่ายสำหรับผู้นำองค์กรไทย
- บทนำสู่ระบบชลประทานแบบแม่นยำ (Precision Irrigation)
- IoT Sensors ไม่ได้สำคัญที่สุด — “การเชื่อมข้อมูล” ต่างหากคือหัวใจของ Smart Farming
- พัฒนา Mobile Application ด้วย React / React Native
- AI Vertical Integration: เปลี่ยนธุรกิจไทยให้ฉลาดขึ้น เร็วขึ้น และขับเคลื่อนด้วยข้อมูล
- คู่มือองค์กรไทย: วิธีนำ AI มาใช้แบบเป็นขั้นตอน — ฉบับปี 2025
- ทำไม EV Fleet Management SaaS ที่มี AI Optimization คือ “หัวใจสำคัญ” ของธุรกิจยานยนต์ไฟฟ้าในไทย
- 7 Use Cases ของระบบ Machine Learning ที่กำลังเปลี่ยนอนาคตโรงงานและธุรกิจไทย
- การใช้ LSTM ในการพยากรณ์ระดับน้ำท่วม: ทางออกใหม่ของเมืองไทยเพื่อรับมือฝนตกหนักและน้ำรอระบาย
- ข้อเสนอระบบ SimpliMES Lite — โซลูชัน MES แบบเบาสำหรับโรงงานไทย
- ทำไมร้านค้าออนไลน์ที่ประสบความสำเร็จถึงเลือกใช้ SimpliShop: สร้าง เติบโต และชนะตลาดของคุณ
- Vertical Integration of AI: อนาคตใหม่ของธุรกิจยุคดิจิทัล
- ระบบ AI Prediction — เปลี่ยนการตัดสินใจของคุณให้ทรงพลังยิ่งกว่าเดิม
- ถ้า AI Bubble แตก จะเกิดอะไรขึ้น? (วิเคราะห์จริง ไม่อิงกระแส)
- ใช้ Deep Learning + วิเคราะห์ข่าว (News Sentiment) ทำนายราคาหุ้น – คู่มือฉบับสมบูรณ์
- เปลี่ยนงาน COI ให้ง่ายขึ้นด้วย AI: ตัวอย่างใช้งานจริงในโรงงาน (Hybrid Rasa + LangChain)
- SimpliAgentic — อนาคตของโรงงานอัตโนมัติอัจฉริยะมาถึงแล้ว
- ทำไม “Android Internals” จึงสำคัญ — และบริการระดับสูงที่ธุรกิจของคุณสามารถสร้างได้จากความรู้นี้
- ทำไมธุรกิจควรพัฒนาระบบอีคอมเมิร์ซของตัวเอง (แทนการเช่าแพลตฟอร์มสำเร็จรูป)
- Upstream, Downstream และ Fork คืออะไร? คู่มือเข้าใจง่ายสำหรับนักพัฒนา Android & Linux













