Chuyển đến nội dung chính
Quay lại danh sách bài viết

Dokku: Deploy แอปด้วย Git Push บนเซิร์ฟเวอร์ที่ดูแลเอง

เริ่มต้น Dokku สร้างแอป ส่งโค้ดผ่าน Git และตรวจข้อจำกัดของการโฮสต์บนเซิร์ฟเวอร์เดียว

Dokku: Deploy แอปด้วย Git Push บนเซิร์ฟเวอร์ที่ดูแลเอง

Dokku เป็น PaaS โอเพนซอร์สแบบติดตั้งบนเซิร์ฟเวอร์ของตนเอง แนวคิดเด่นคือส่งโค้ดด้วย git push แล้วให้ Dokku สร้าง image จาก Dockerfile หรือ Buildpacks และเริ่มคอนเทนเนอร์ให้ เหมาะกับทีมเล็กที่ต้องการขั้นตอน deploy สั้น แต่ยังควบคุมเครื่องได้ บทความนี้อ้างอิง Getting Started และ Git deployment

สิ่งที่ Dokku จัดการและสิ่งที่เราต้องจัดการ

Dokku จัดการแอป การ build การรัน web process และ route ผ่าน Nginx ให้ แต่ host, ระบบปฏิบัติการ, DNS, backup, ความปลอดภัยของ SSH และทรัพยากรยังเป็นงานของผู้ดูแล เอกสารเริ่มต้นเน้นการใช้งานบนเครื่องเดียว หากต้องการความทนต่อการล่มระดับหลายเครื่อง ต้องออกแบบเพิ่ม อย่าตีความว่า git push สำเร็จเท่ากับระบบพร้อมรับ traffic จริง

เตรียมก่อนติดตั้ง

ตรวจ OS และสถาปัตยกรรมตามรุ่น Dokku ที่จะติดตั้ง เอกสารปัจจุบันรองรับ Ubuntu/Debian x64 หรือ arm64 ตามเวอร์ชันที่ระบุ และ Docker scheduler ต้องมี RAM อย่างน้อยประมาณ 1 GB หรือเพิ่ม swap เตรียม DNS แบบ wildcard เช่น *.apps.example.com เพื่อให้แอปแต่ละตัวได้ subdomain แยกกัน และเตรียม SSH key สำหรับ deployer อย่าใช้คำสั่งติดตั้งที่จำจากบทความเก่าโดยไม่ตรวจ version ล่าสุดในเอกสารต้นทาง

เมื่อติดตั้งตามคู่มือแล้ว ให้เพิ่ม SSH key และตั้ง global domain บน host เช่น:

cat ~/.ssh/authorized_keys | sudo dokku ssh-keys:add admin
sudo dokku domains:set-global apps.example.com
sudo dokku apps:create sample-app

คำสั่งแรกเป็นตัวอย่างกรณีไฟล์ key นั้นมีเฉพาะ key ที่ตั้งใจให้สิทธิ์ admin; ถ้าเป็นเครื่องร่วมกัน ให้เลือก key ที่เหมาะสมแทน อย่าคัดลอกไฟล์ key ทั้งก้อนโดยไม่ตรวจ

ส่งแอปด้วย Git

ใน repository ที่มี Dockerfile หรือโครงสร้างภาษาที่ Buildpacks รู้จัก ให้เพิ่ม remote ของ Dokku แล้ว push branch ที่ต้องการ:

git remote add dokku dokku@SERVER_IP:sample-app
git push dokku main

จากนั้นตรวจ dokku ps:report sample-app, log ของแอป และเปิด URL จริง หาก build สำเร็จแต่เว็บตอบ 502 ให้ดูว่า process ฟังพอร์ตที่ Dokku route ไปหรือไม่; หากโดเมนไม่ตรง ตรวจ global/app domain และ DNS การ deploy ผ่าน Git push ไม่ส่ง uncommitted changes ไปด้วย จึงควรทดสอบ commit เดียวกับที่ push และเก็บค่าคอนฟิก/secret ในระบบ config ของ Dokku แทนการ commit ลง Git

ดูแลหลัง deploy

วางแผน TLS, การต่ออายุ certificate, backup ของข้อมูลถาวร และวิธีย้อนเวอร์ชัน สถานะของแอปแบบ stateless กับฐานข้อมูลต่างกันมาก: การ push โค้ดใหม่ย้อนกลับได้ง่ายกว่าการย้อน schema หรือไฟล์ผู้ใช้ กำหนด endpoint ตรวจสุขภาพและทดสอบ URL ก่อนสลับ traffic งาน background process และ scheduled job ควรตรวจ log แยกจาก web process

Dokku ช่วยย่อเส้นทางจาก Git ไปคอนเทนเนอร์บนเครื่องเดียว แต่ไม่ตัดภาระผู้ดูแลเครื่อง เริ่มจากแอปตัวอย่างที่ไม่มีข้อมูลถาวร แล้วเพิ่มฐานข้อมูลหลังทดสอบ backup/restore และความสามารถของ host อ่านขั้นตอนที่ตรงรุ่นจาก เอกสาร Dokku.

Chia sẻ bài viết:
Xem thêm bài viết