วันนี้ทำการ review project ที่พัฒนาด้วยภาษา Go
มีสิ่งที่น่าสนใจคือ การเขียน Dockerfile
ซึ่งมีหลายรูปแบบเลย แถมแปลก ๆ ด้วย
จึงนำมาสรุปไว้นิดหน่อย

แบบที่ 1 Start มันไปเลย ไม่ต้อง Build

ทำงานได้นะ แต่แบบนี้มันใช่ไหมเนี่ย !!!

แบบที่ 2 ทำการ build และ run ด้วยกันไปเลย

สามารถทำงานได้เป็นปกติ
แต่ขนาดของ Docker image ใหญ่มาก ๆ ขนาด 300+ MB ขึ้นไป
คำถามคือ เราจะส่งมอบอะไร ? มันเยอะเกินไหม

แบบที่ 3 ทำการ copy binary จากเครื่องเข้าไปเลย !!

ก็ทำงานได้ปกตินะ แต่การ build binary
ต้องกำหนด parameter พวก GOOS, GOARCH ให้ถูกด้วย
มิเช่นนั้นจะไม่สามารถใช้งานได้ เพราะว่า binary ที่ copy มาใส่ไม่ถูกต้องตา OS นั้น ๆ
และขนาดของ Docker image ก็เล็กมาก ๆ ด้วย

คำถามคือ ทั้ง 3 แบบ มันดีแล้วใช่ไหม ?