สร้างระบบ 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
- NSM vs AV vs IPS vs IDS vs EDR: ระบบความปลอดภัยของคุณขาดอะไรอยู่?
- ระบบ Network Security Monitoring (NSM) ผสานพลัง AI
- วิธีสร้างระบบ Enterprise ด้วย Open-Source + AI
- AI จะมาแทนที่บริษัทพัฒนาซอฟต์แวร์ในปี 2026 หรือไม่? ความจริงที่ผู้บริหารองค์กรต้องรู้
- วิธีสร้าง Enterprise System ด้วย Open-Source + AI (คู่มือเชิงปฏิบัติ ปี 2026)
- การพัฒนาซอฟต์แวร์ด้วย AI — สร้างเพื่อธุรกิจ ไม่ใช่แค่เขียนโค้ด
- Agentic Commerce: อนาคตของระบบการสั่งซื้ออัตโนมัติ (คู่มือฉบับสมบูรณ์ ปี 2026)
- วิธีสร้าง Automated Decision Logic ใน SOC ยุคใหม่ (ด้วย Shuffle + SOC Integrator)
- ทำไมเราจึงออกแบบ SOC Integrator แทนการเชื่อมต่อเครื่องมือแบบตรง ๆ (Tool-to-Tool)
- การพัฒนาระบบสถานีชาร์จ EV ด้วย OCPP 1.6 คู่มือสาธิตการใช้งานจริง: Dashboard, API และสถานีชาร์จ EV
- การเปลี่ยนแปลงทักษะของนักพัฒนาซอฟต์แวร์ (2026)
- Retro Tech Revival: จากความคลาสสิกสู่ไอเดียผลิตภัณฑ์ที่สร้างได้จริง
- OffGridOps — ระบบงานภาคสนามแบบออฟไลน์ สำหรับโลกการทำงานจริง
- SmartFarm Lite — แอปบันทึกฟาร์มแบบออฟไลน์ ใช้งานง่าย อยู่ในกระเป๋าคุณ
- การประเมินทิศทางราคาช่วงสั้นด้วย Heuristics และ News Sentiment (Python)
- Rust vs Python: เลือกภาษาให้เหมาะกับระบบในยุค AI และระบบขนาดใหญ่
- ซอฟต์แวร์ช่วยเกษตรกรจันทบุรีฟื้นอำนาจการกำหนดราคาผลไม้อย่างไร
- AI ช่วยค้นหาโอกาสทางการเงินได้อย่างไร
- วิธีใช้งานโมเดล ONNX ใน React Native และ Mobile App Framework อื่น ๆ
- อัลกอริทึมตรวจจับโรคใบพืชทำงานอย่างไร: จากกล้องสู่การตัดสินใจ













