หน้าแรกผลงานความสำเร็จปรึกษาโปรเจกต์ของคุณ
ปรึกษาโปรเจกต์ของคุณ
สร้าง Docker image Nuxt.js ลีนๆ ด้วย Multi-stage Builds
เทคโนโลยี

สร้าง Docker image Nuxt.js ลีนๆ ด้วย Multi-stage Builds

15 ต.ค. 2569

สร้าง Docker image Nuxt.js ลีนๆ ด้วยหลักการของ Multi-stage Builds

ทริคเล็กๆ กับ Multi-stage build ดัวย Docker

Multi-stage คือ อะไร ?

แต่เดิมการสร้าง Docker image นั้นหลังจากการ build แล้ว ตัว image จะมี compiler ที่ใช้สำหรับการ compile source code ชุดนั้นๆ ติดมาด้วยเพื่อให้ code ชุดนั้นสามารถนำไปใช้งานได้ ทำให้ตัว image ที่ได้มามีขนาดที่ใหญ่เกินความจำเป็นเพราะจะติดตัว compiler หรือ ตัว package ที่ใช้ในขั้นตอนการ build เท่านั้นติดมาด้วย ต่อมาแนวคิดของ software container จึงมีการนำรูปแบบของ Multi-stage ขึ้นมาช่วยแก้ปัญหานี้ นั่นก็คือรูปแบบของการสร้าง Docker image จะแบ่งออกเป็น stage หลายๆ อัน ยกตัวอย่าง stage แรกจะกำหนดค่า package environment ต่างๅ ที่ใช้สำหรับการทำงานในการ build จากนั้นจะผ่าน stage นั้นไปอีก 1 stage ที่เอาสิ่งต่างๆ อาทิ package ที่ไม่จำเป็นออก เพื่อให้ได้ขนาดของ Docker image ที่เล็กลง

สำหรับใครอยากเรียนรู้ในเรื่อง Docker เพิ่มเติมสามารถอ่านได้จากลิงค์ข้างล่างครับ

I GEAR GEEK เราคือกลุ่มคนที่มีความหลงไหลในการเขียนโปรแกรม และ มีประสบการณ์จากการทำงานจากทั้งในและนอกประเทศอย่างโชกโชน…medium.com

หลังจากที่เรารู้จักหลักการของ Multi-Stage กันแล้ว เรามาลงมือทำกันเลย โดยในวันนี้ผมจะใช้ Nuxt.js framework เป็นตัวอย่างในการแบ่งปันครั้งนี้

Article illustration 1
Article content divider

  • Nuxt.js ใน mode SPA (Single Page Application) เมื่อทำการ build scripts เราจะได้ files dist/ ที่สามารถใช้ในการ Deploy บน static hosting ได้

  • ขั้นต่อมาเราจะให้ Dockerfile เป็นตัวทำการ build scripts แทนเรา ให้เป็น image ฝากไว้ใน Hub รอวันที่จะได้ใช้งาน

อธิบาย code ตาม step ทีละบรรทัด (Dockerfile) — ใช้งาน image node:12.14.1-alpine3.9 (ใช้ version อื่นก็ได้) จาก DockerHub เก็บ step นี้ไว้ใน dependencies — สร้าง folder /usr/app — กำหนด WORKDIR เป็น /usr/app — กำหนด argument ภายใน Docker เพื่อรอรับค่าจาก env — copy package*.json และ install — copy code และ build — จบ step แรก — ใช้งาน image nginx:1.17.2-alpine (ใช้ version อื่นก็ได้) — กำหนด WORKDIR — copy config nginx — จาก dependencies step แรก เอา folder dist/ ที่ build แล้วมา — ให้ใช้งานใน port 80

สรุป

— การทำงาน Dockerfile คล้ายๆ กับการ command ทีละบรรทัดที่เราสร้าง แต่ต่างกันที่รวมทั้งหมดเเละ run พร้อมกันทีเดียว — ลำดับคำสั่งมีผลต่อขนาด และเวลาในการ build เลือกลำดับให้ดี — Multistage ทำให้ image มีขนาดที่เล็กลง

อ้างอิง

  • https://nuxtjs.org/guide/commands#single-page-application-deployment-spa

บทความที่เกี่ยวข้อง

เทคโนโลยี

TypeScript คืออะไร? แล้วคุณรู้หรือไม่ว่าใช้งานยังไง

บทความแนะนำภาษา TypeScript ว่าคืออะไร ทำไมถึงควรเรียนรู้ และช่วยให้การเขียนโปรแกรมปลอดภัยและจัดการง่ายขึ้นอย่างไร

เทคโนโลยี

มาทำความรู้จักกับ Lodash กัน

ก่อนอื่นเลยต้องขอสวัสดีพี่ๆน้องเพื่อนๆ ชาวโปรแกรมเมอร์ กันก่อนนะครับ สำหรับ Blog นี้ผมจะพาทุกๆคนไปทำความรู้จักกับ Libary…

เทคโนโลยี

Multiple Language ด้วย i18n บน nuxt.js Framework

สวัสดีครับ พอดีผมได้มีโอกาศลองใช้งานเจ้าตัว i18n เห็นว่าเจ้าตัวเนี่ย มันใช้งานค่อนข้างง่ายพอสมควรครับ วันนี้เลยจะมาแชร์ถึงการ setting…

I GEAR GEEK

Technology Partner ขับเคลื่อน Digital Transformation ให้ธุรกิจคุณ

โซลูชัน

  • ERP และระบบธุรกิจ
  • AI Knowledge และ AI Agents
  • Customer Data & Marketing Automations

บริการ

  • Web Application, Mobile Application

บริษัท

  • บทความ
  • แกลเลอรี
  • ร่วมงานกับเรา

ติดต่อ

marketing@igeargeek.com

Malada space ชั้น 2, 89/9 หมู่ 5 ตำบลสุเทพ อำเภอเมืองเชียงใหม่ จังหวัดเชียงใหม่ 50200

LINE OA@igeargeekสอบถามโปรเจกต์083-579-5068สมัครงานและฝึกงาน083-254-2241
© 2026 I GEAR GEEK สงวนลิขสิทธิ์
ปรึกษาโปรเจกต์ของคุณ