Docker สำหรับ Next.js ฉบับเริ่มต้น
Docker ช่วยให้เรา package แอปพลิเคชันพร้อม dependencies ทั้งหมดลงใน container ทำให้ run ได้เหมือนกันทุกที่ไม่ว่าจะเป็น local, staging หรือ production
การเขียน Dockerfile สำหรับ Next.js ที่ดีควรใช้ multi-stage build โดยแบ่งเป็น deps stage สำหรับติดตั้ง dependencies, builder stage สำหรับ build แอป และ runner stage สำหรับ run production เท่านั้น ทำให้ image สุดท้ายมีขนาดเล็กที่สุด
การใช้ .dockerignore เพื่อ exclude ไฟล์ที่ไม่จำเป็นออกจาก build context เช่น node_modules, .next, .env ช่วยทำให้ build เร็วขึ้นมากและลดความเสี่ยงที่ secrets จะรั่วไหลเข้าไปใน image
สำหรับ development ใช้ docker-compose.yml ในการ run ทั้ง Next.js app และ PostgreSQL database พร้อมกัน ทำให้ทีมทุกคน setup environment ได้เหมือนกันด้วยคำสั่งเดียวคือ docker-compose up