DigitalOcean App Platform คืออะไร: deploy เว็บและแอปจาก GitHub โดยไม่ต้องดูแลเซิร์ฟเวอร์
คู่มือ DigitalOcean App Platform ภาษาไทย อธิบายแนวคิด Static Site, Service, Worker, Job, วิธี deploy จาก GitHub, ตัวแปรสภาพแวดล้อม, โดเมน, ราคา และเมื่อไรควรเลือก App Platform แทน Droplet
App Platform คืออะไร
App Platform คือบริการแบบ PaaS (Platform as a Service) ของ DigitalOcean คุณเชื่อมต่อ repository จาก GitHub/GitLab (หรือใช้ Docker image) แล้วแพลตฟอร์มจะ build, deploy, ติดตั้ง SSL, จัดการโดเมน และ deploy ใหม่อัตโนมัติ ทุกครั้งที่คุณ push โค้ด โดยไม่ต้องตั้งค่าเซิร์ฟเวอร์ Linux เอง
เทียบกับ Droplet: Droplet คือเครื่อง Linux ที่คุณดูแลเองทุกชั้น ส่วน App Platform ดูแลระบบปฏิบัติการ การอัปเดต และการ deploy ให้ คุณโฟกัสที่โค้ด
ราคา
ตามหน้าราคาทางการ ณ 3 พ.ย. 2569 App Platform เริ่มต้น $0/เดือน โดยเว็บแบบ Static Site ฟรี 3 เว็บ ส่วนระดับที่ชำระเงินสำหรับ Service/Worker/Job ราคาขึ้นกับขนาดคอนเทนเนอร์ จึงควรดูตารางล่าสุดที่หน้า App Platform Pricing เนื่องจากโครงสร้างราคาอาจเปลี่ยน
องค์ประกอบ (Component) ของแอป
แอปหนึ่งตัวบน App Platform ประกอบด้วยหลาย component
| ประเภท | ใช้ทำอะไร | ตัวอย่าง |
|---|---|---|
| Static Site | ไฟล์เว็บสำเร็จรูป เสิร์ฟผ่าน CDN | React, Vue, Astro, Hugo, Jekyll, HTML ธรรมดา |
| Service | เว็บแอป/API ที่รันตลอดเวลาและรับ HTTP | Node.js, Python (Flask/Django/FastAPI), PHP, Go, Ruby |
| Worker | งานเบื้องหลังที่ไม่รับ HTTP | ประมวลผลคิว, bot |
| Job | งานที่รันครั้งเดียว/ตามเวลา | migration ฐานข้อมูล, cron |
| Database | ฐานข้อมูลที่เชื่อมกับแอป | dev database หรือ Managed Database |
วิธี deploy ทีละขั้น
ตัวอย่าง: เว็บ Static (ฟรี)
- Push โค้ดขึ้น GitHub (เช่น Astro หรือ Vite project)
- ใน Control Panel เลือก Create → App Platform
- เชื่อมบัญชี GitHub และเลือก repository กับ branch
- App Platform ตรวจชนิดโปรเจกต์อัตโนมัติ ตรวจ build command (เช่น
npm run build) และ output directory (เช่นdist) - เลือกประเภท Static Site และแผนที่ใช้
- กด Create Resources รอ build ไม่กี่นาที จะได้ URL ลักษณะ
*.ondigitalocean.app - เพิ่ม Custom Domain และชี้ DNS ตามที่ระบบบอก SSL จะออกให้อัตโนมัติ
ตัวอย่าง: Node.js Service
สมมติ repository มี package.json และสคริปต์ start
{
"scripts": {
"start": "node server.js"
},
"engines": { "node": "20.x" }
}
แอปต้องฟังที่พอร์ตจากตัวแปร PORT ที่แพลตฟอร์มกำหนด
const port = process.env.PORT || 8080;
app.listen(port, '0.0.0.0');
App Platform จะใช้ buildpack ตรวจจับภาษาและรัน npm install, npm run build (ถ้ามี) และ npm start ให้เอง
ใช้ Dockerfile
ถ้าโปรเจกต์มี Dockerfile ในรากของ repository App Platform สามารถ build จากไฟล์นั้นได้ เหมาะกับแอปที่ต้องการ dependency เฉพาะ
ตัวแปรสภาพแวดล้อมและความลับ
อย่าใส่รหัสผ่านหรือ API key ในโค้ด ให้ตั้งใน App Settings → Environment Variables และเลือกชนิด Encrypted สำหรับค่าลับ ในโค้ดอ่านผ่าน process.env.DB_URL (Node) หรือ os.environ['DB_URL'] (Python)
เมื่อเชื่อม Database component แพลตฟอร์มมีตัวแปรอ้างอิงให้ใช้ในรูปแบบเทมเพลต (เช่น ${db.DATABASE_URL}) ดูไวยากรณ์ล่าสุดจากเอกสารทางการ
App Spec: เก็บการตั้งค่าไว้ใน YAML
App Platform ใช้ไฟล์ spec เป็น YAML อธิบายแอปทั้งตัว เก็บใน repository (.do/app.yaml) เพื่อให้ทำซ้ำได้ ตัวอย่างโครงโดยย่อ
name: my-app
region: sgp
services:
- name: web
github:
repo: your-user/your-repo
branch: main
deploy_on_push: true
run_command: npm start
http_port: 8080
envs:
- key: NODE_ENV
value: production
ฟิลด์และชื่อ region ที่ถูกต้องควรเทียบกับเอกสาร App Spec ล่าสุดก่อนใช้งานจริง
ข้อดีของ App Platform
- ไม่ต้องดูแล OS ไม่ต้องอัปเดตแพตช์ ไม่ต้องตั้งไฟร์วอลล์
- Deploy อัตโนมัติ Push โค้ดแล้วขึ้นระบบเอง พร้อมประวัติ deployment และ rollback
- SSL อัตโนมัติ ออกและต่ออายุให้
- ขยายง่าย เพิ่มจำนวน instance หรือขนาดคอนเทนเนอร์ได้จากหน้าเว็บ
- เริ่มฟรี สำหรับ Static Site
ข้อจำกัดที่ควรรู้
- ควบคุมน้อยกว่า Droplet ติดตั้งซอฟต์แวร์ระดับระบบเองไม่ได้ ไฟล์ในคอนเทนเนอร์เป็น ephemeral (หายเมื่อ deploy ใหม่) ต้องเก็บไฟล์ที่อัปโหลดไว้ใน Spaces หรือ storage ภายนอก ดู คู่มือ Spaces Object Storage
- ต้นทุนต่อหน่วยอาจสูงกว่า Droplet สำหรับงานที่ใช้ทรัพยากรสูง เพราะคุณจ่ายค่าความสะดวก
- ไม่เหมาะกับ WordPress ทั่วไป เพราะ WordPress ต้องการดิสก์ถาวร ให้ใช้ Droplet ตาม ติดตั้ง WordPress บน DigitalOcean
- ภูมิภาคจำกัด ตรวจว่ามีภูมิภาคที่ใกล้ผู้ใช้ของคุณ (เช่น สิงคโปร์) ณ ตอนที่ใช้
เลือก App Platform หรือ Droplet
| คำถาม | ถ้าใช่ → |
|---|---|
| ต้องการ deploy จาก Git โดยไม่แตะเซิร์ฟเวอร์ | App Platform |
| ต้องติดตั้งซอฟต์แวร์เฉพาะระดับระบบ | Droplet |
| เว็บ static / SPA / JAMstack | App Platform (ฟรี) |
| WordPress / แอปที่เก็บไฟล์บนดิสก์ | Droplet |
| ทีมเล็กไม่มีคนดูแลระบบ | App Platform |
| อยากควบคุมต้นทุนต่อหน่วยสูงสุด | Droplet |
| ต้องการเรียนรู้ DevOps | Droplet |
เคล็ดลับ
- ใช้ Static Site ฟรี สำหรับหน้า Landing, เอกสาร, และ front-end
- แยก front-end (static) กับ API (service) ช่วยประหยัดและขยายง่าย
- ตั้ง Health Check ให้ตรงกับ endpoint จริง
- ใช้ Managed Database + Trusted Sources ดู คู่มือ Managed Databases
- ตั้ง Alerts เมื่อ deployment ล้มเหลวหรือ CPU/memory สูง
- ทดลองด้วยเครดิตผู้ใช้ใหม่ ดู วิธีรับเครดิตฟรี $200 DigitalOcean
คำถามที่พบบ่อย
App Platform รองรับภาษาอะไรบ้าง
รองรับผ่าน buildpack และ Docker หลายภาษา เช่น Node.js, Python, PHP, Go, Ruby และอื่น ๆ รายการล่าสุดดูในเอกสารทางการ
เว็บฟรีใช้โดเมนของตัวเองได้ไหม
ได้ ตั้ง Custom Domain ใน App Settings และชี้ DNS ตามที่ระบุ
ข้อมูลที่อัปโหลดจะหายไหมเมื่อ deploy ใหม่
ไฟล์ในดิสก์ของคอนเทนเนอร์ไม่ถาวร ให้เก็บใน Spaces หรือฐานข้อมูลแทน
ใช้ App Platform ควบคู่กับ Droplet ได้ไหม
ได้ ทั้งสองอยู่ในบัญชีเดียวกัน และสามารถเชื่อมกับ Managed Database ร่วมกันผ่าน Trusted Sources/VPC