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 image

Use multi-stage builds

  • ใช้งาน multi-stage builds ใน Dockerfile ของ front end เพื่อช่วยลด Layer ในการทำงานของ Dockerfile image

Don’t install unnecessary packages

  • ไม่ติดตั้ง Package ที่ไม่มีความจำเป็นใน Dockerfile เพื่อไม่ให้ขนาดของ Docker image ใหญ่จนเกินไป และใช้เวลานานในการ Build จึงไม่ควรติดตั้ง Packge ที่ไม่ใช้งานหรือไม่มีความจำเป็นในการใช้งาน Docker

RUN

image

  • แยกคำสั่งออกมาเป็น Array เพื่อทดแทนการใช้งานคำสั่งในรูปแบบ String เพื่อลดความผิดพลาดในการพิมพ์ Spacebar ในคำสั่ง