จากคำถามในกลุ่ม Docker in Thai
เรื่องการ build Angular project ใน Docker
ว่าเกิด error ขึ้นมา คือ ไม่เจอคำสั่ง ng (Angular CLI)
ในการสร้าง Docker Image ด้วย Dockerfile
ดังนั้นจึงสรุปแนวทางการแก้ไขไว้นิดหน่อย

ในการใช้ Docker เพื่อ build Docker image

ควรรู้และเข้าใจก่อนว่า
เราต้องทำการติดตั้งอะไรบ้าง
เมื่อติดตั้งในแต่ละ OS แล้วจะเข้าใช้งานอย่างไร
จะทำให้การทำงานง่ายขึ้นและสามารถทำซ้ำได้
ทั้งในเครื่องเราและเครื่องอื่น ๆ (Repeatable)
ไม่ควรเกิดเหตุการณ์ที่ Work on my Machaine/Docker อีกแล้ว
นั่นหมายความว่า มีอะไรที่แตกต่างอย่างแน่นอน

สิ่งที่ควรระวังมีดังต่อไปนี้

  • อย่า copy node_modules จากเครื่องเราไป ให้ทำการ build ในการสร้าง Image เท่านั้น
  • เพื่อไม่ให้ลืมหรือพลาด ควรกำหนดพวก node_module ในไฟล์ .dockerignore ไปด้วยเสมอ
  • ใช้คำสั่ง COPY . . เมื่อคุณเข้าใจและต้องการมันจริง ๆ อย่าใช้เพราะว่า เห็นตัวอย่างเขาก็ทำแบบนี้

มาดูตัวอย่าง Dockerfile ในการ build Angular app แบบง่าย ๆ

โดยสิ่งที่ทำเพิ่มเข้ามาคือ การ set PATH ไปยัง node_module ที่สร้างใน Image ด้วย

ลองใช้งานดูครับ

ปล. จะสังเกตได้ว่า ในการสร้าง Dockerfile นั้น
จำเป็นต้องใช้ skill ทั้ง developer และ operation ด้วย
ดังนั้นควรทำงานร่วมกันเพื่อสร้าง Dockerfile ขึ้นมา
ไม่ใช่กำหนดไปเลยว่าต้องหน้าที่ใคร
เพราะว่าต้องใช้งานจากทั้งคู่ครับ