Docker images for team 10 - SilverSky9/DevToolNo1 GitHub Wiki
Backend
Frontend
สรุป Best practices for writing Dockerfiles
Backend
- image ที่ใช้คือ golang 1.17-alpine
- ติดตั้ง cors
- ติดตั้ง go air
- ติดตั้ง package ของ go เนื่องจาก Dockerfile ใช้ในการช่วง dev ด้วย ทำให้ทีมตัดสินใจที่ยังไม่ build binary file ออกมา โดยวางแผนที่จะใช้ใน v.2.0
Frontend
- Copy package.json ไปยัง /app/ ภายใน Container
- ติดตั้ง package
- Build static file และ export ออกมา
- นำ Output จาก Stage Build นำมา Deploy ใน Path ของ nginx
Best practices in Dockerfile
Dockerfile instructions
- ใช้ Alpine ในการใช้งานเป็น Base OS ของ Docker container ที่เป็น Linux distributes ที่มีขนาดเล็ก เพื่อไม่ให้ขนาดของ Docker image มีขนาดใหญ่เกินไป โดยปัจจุบันมีขนาดที่น้อยกว่า 6 MB
Use multi-stage builds
- ใช้งาน multi-stage builds ใน Dockerfile ของ front end เพื่อช่วยลด Layer ในการทำงานของ Dockerfile
Don’t install unnecessary packages
- ไม่ติดตั้ง Package ที่ไม่มีความจำเป็นใน Dockerfile เพื่อไม่ให้ขนาดของ Docker image ใหญ่จนเกินไป และใช้เวลานานในการ Build จึงไม่ควรติดตั้ง Packge ที่ไม่ใช้งานหรือไม่มีความจำเป็นในการใช้งาน Docker
RUN
- แยกคำสั่งออกมาเป็น Array เพื่อทดแทนการใช้งานคำสั่งในรูปแบบ String เพื่อลดความผิดพลาดในการพิมพ์ Spacebar ในคำสั่ง