เมื่อวานทำการแบ่งปันความรู้เรื่องการใช้งาน Docker
สำหรับการพัฒนา web application ด้วย Vue.js นิดหน่อย
โดยแบ่งขั้นตอนการนำ Docker มาใช้งานดังนี้

1. สรุปขั้นตอนการพัฒนา
2. สรุปเครื่องมือต่าง ๆ ที่ใช้ในการพัฒนา
3. ลงมือทำ เพื่อให้เห็นผล
4. เริ่มนำ Docker เข้ามาใช้งานหรือมาช่วย
5. รออะไรลงมือกันเลย

เริ่มต้นด้วยสรุปขั้นตอนการพัฒนาด้วย Vue.js

ซึ่งผมก็ไม่รู้หรอกว่าทำอย่างไร !!
เลยให้ทำการสรุปมา รวมทั้งเครื่องมือที่ใช้งานด้วย
มีดังนี้

1. สร้างระบบงานด้วย Vue CLI
2. ทำการติดตั้ง dependency/library ด้วยคำสั่ง npm install
3. ทำการทดสอบบนเครื่องของ developer แต่ละคนด้วยคำสั่ง npm run dev
4. ทำการ build เพื่อแปลงเป็น HTML/JS/CSS สำหรับการ deploy บน production ด้วยคำสั่ง npm run build จะทำการสร้างใน directory ชื่อว่า dist มาให้

จากนั้นลงมือทำซะ

สามารถสรุปขั้นตอนของการพัฒนาได้ดังนี้

$vue init webpack hello
$cd hello
$npm install
$npm run build

ต่อมาต้องคิดก่อนว่า จะนำ Docker มาใช้เพื่ออะไรบ้าง ?

สิ่งที่แนะนำไปมี 2 เรื่องคือ
1. สำหรับการพัฒนาของ developer ทุกคนในทีม
2. สำหรับการ deploy ระบบงาน

สำหรับการพัฒนาของ developer ทุกคนในทีม
เป้าหมายเพื่อแก้ไขปัญหาเรื่อง version ของเครื่องมือและ library ที่ใช้งาน
ดังนั้นทุกคนในทีมควรใช้สิ่งเดียวกัน
นั่นคือ เราจะทำการสร้าง Docker image เพื่อให้ developer ทุกคนใช้งาน
ประกอบไปด้วย

  • npm install
  • npm run dev
  • npm run build

ดังนั้นสร้าง Dockerfile เพื่อเอาไว้ใช้แบบขำ ๆ ดังนี้

คำอธิบาย

  • สิ่งสำคัญมาก ๆ คือการเลือก Based image ซึ่งเลือกใช้ NodeJS นั่นเอง
  • ต้องกำหนด tag หรือ version ของ Docker image ด้วยเสมอ อย่าใช้ latest นะ
  • ทำการกำหนด Working directory
  • ทำการกำหนด Entry point default ให้เป็น npm
  • ทำการกำหนดคำสั่ง default ให้เป็น install

ดังนั้นถ้าสร้าง container จาก image นี้จะทำการ npm install ให้ทันที
แต่ถ้าต้องการ run คำสั่งอื่น ๆ เพียงใส่ run dev และ run build ไป ดังนี้

$docker container run --rm  -v $(pwd):/somkiat/src -t web:0.1
$docker container run --rm  -v $(pwd):/somkiat/src -t web:0.1 run dev
$docker container run --rm  -v $(pwd):/somkiat/src -t web:0.1 run build

สำหรับการ deploy ระบบงาน

ซึ่งแน่นอนว่าต้องมีกระบวนการคล้าย ๆ กับการพัฒนามาก่อน
แต่เพิ่มอีกขั้นตอนคือ การ deploy ไฟล์ต่าง ๆ จาก directory dist ไปยัง server
ดังนั้น เพื่อความง่ายก็เลยเลือกใช้ nginx เป็น Web server
และสามารถเขียน Dockerfile สำหรับการ deploy ได้แบบนี้
ใช้ความสามารถ Multi-stage build

เพียงเท่านี้ก็จะได้ Docker image สำหรับการ deploy แล้ว
นำไปใส่ในขั้นตอนของระบบ CI/CD ต่อไปได้เลย

ดังนั้นก่อนจะนำเครื่องมือใด ๆ มาใช้งานนั้น

ต้องรู้ก่อนว่าปัจจุบันทำอะไร อย่างไร และลงมือทำ
จากนั้นจึงมองหาเครื่องมือที่เหมาะสมมาใช้และช่วยงานให้ง่ายและเร็วขึ้น
มิใช่มาทำให้ช้าลง

ขอให้สนุกกับการ coding ครับ