Docker & DevOps Fundamentals · บทเรียน

การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง

เรียนรู้ว่า Dockerfile แบบหลายขั้นตอนช่วยให้คุณส่งมอบอิมเมจสำหรับระบบจริงที่กะทัดรัดได้อย่างไร โดยแยกเครื่องมือสร้างออกจากสภาพแวดล้อมขณะทำงานสุดท้าย เพื่อลดขนาดอิมเมจลงอย่างมาก

บทเรียน 4 จาก 413 ขั้นตอน

การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง เป็นบทเรียน Docker & DevOps Fundamentals ฟรีบน CoddyKit นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Docker & DevOps Fundamentals และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

เหตุใดขนาดอิมเมจจึงสำคัญ

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

ปัญหาอิมเมจที่มีสิ่งเกินจำเป็น

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

การสร้างหลายระยะคืออะไร

การสร้างหลายระยะ ใช้คำสั่ง FROM หลายรายการใน Dockerfile เดียว ระยะแรก ๆ ใช้สร้างแอป ส่วนระยะสุดท้ายจะคัดลอกเฉพาะไฟล์ผลลัพธ์ที่สร้างเสร็จแล้ว จึงไม่รวมเครื่องมือสร้างไว้ด้วย

การตั้งชื่อระยะ

ตั้งชื่อระยะด้วย AS เพื่อให้ระยะถัดไปสามารถอ้างอิงถึงระยะนั้นได้

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci

การสร้างในระยะแรก

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

COPY . .
RUN npm run build

ระยะสุดท้ายที่กระชับ

เริ่มระยะสุดท้ายจากอิมเมจพื้นฐานขนาดเล็ก จากนั้นคัดลอกเฉพาะสิ่งที่แอปจำเป็นต้องใช้ในการทำงานด้วย COPY --from

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY --from=builder /app/node_modules ./node_modules

Dockerfile แบบหลายระยะฉบับเต็ม

การรวมระยะต่าง ๆ เข้าด้วยกันจะได้อิมเมจสุดท้ายขนาดเล็ก ซึ่งมีแอปที่สร้างเสร็จแล้ว แต่ไม่มีชุดเครื่องมือสร้าง

FROM node:20 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build

FROM node:20-slim
WORKDIR /app
COPY --from=builder /app/dist ./dist
CMD ['node', 'dist/main.js']

การเลือกอิมเมจพื้นฐานขนาดเล็ก

อิมเมจพื้นฐานมักเป็นปัจจัยที่มีผลมากที่สุด รุ่น Slim และ Alpine ช่วยลดขนาดอิมเมจได้อย่างมาก:

  • node:20 ~ ใหญ่
  • node:20-slim ~ เล็กกว่ามาก
  • node:20-alpine ~ เล็กที่สุด มีไลบรารีขั้นต่ำ

สิ่งที่จำเป็นสำหรับใช้งานจริงเท่านั้น

ข้ามสิ่งที่จำเป็นสำหรับการพัฒนาในอิมเมจขณะทำงาน การติดตั้งด้วยแฟล็กสำหรับใช้งานจริงจะไม่นำแพ็กเกจสำหรับการทดสอบและการสร้างเข้ามา

RUN npm ci --omit=dev

การใช้ .dockerignore

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

node_modules
.git
.env
Dockerfile
*.log

การวัดผลลัพธ์

ตรวจสอบงานของคุณด้วยการตรวจดูขนาดอิมเมจ อิมเมจแบบหลายระยะที่สร้างอย่างดีอาจมีขนาดเพียงเศษเสี้ยวของอิมเมจแบบระยะเดียวที่สร้างโดยไม่ปรับแต่ง

docker images myapp

ตรวจสอบอย่างรวดเร็ว

ทดสอบความรู้เกี่ยวกับการสร้างแบบหลายระยะ

สรุป

คุณได้เรียนรู้วิธีส่งมอบอิมเมจ Docker ที่กระชับ:

  • การสร้างหลายระยะใช้ระยะ FROM หลายรายการใน Dockerfile เดียว
  • สร้างในระยะแรก จากนั้นใช้ COPY --from เพื่อคัดลอกเฉพาะไฟล์ผลลัพธ์ไปยังระยะสุดท้ายแบบ Slim
  • เลือกอิมเมจพื้นฐานขนาดเล็ก (Slim/Alpine) และติดตั้งเฉพาะสิ่งที่จำเป็นสำหรับใช้งานจริง
  • ใช้ .dockerignore เพื่อลดบริบทการสร้าง

อิมเมจที่เล็กกว่าจะสร้างได้เร็วขึ้น นำไปใช้งานได้เร็วขึ้น และปลอดภัยกว่า

เริ่มต้นได้ฟรี

เรียนรู้ Docker & DevOps Fundamentals ด้วย AI tutor — ฟรี

เขียนและเรียกใช้โค้ดจริงในเบราว์เซอร์ของคุณ รับความช่วยเหลือทันทีจาก AI tutor 24/7 และเรียนรู้ต่อจากที่คุณหยุดบนเว็บหรือในแอป

คอร์ส
12
บทเรียน
48

คำถามที่พบบ่อย

บทเรียน “การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง” ฟรีหรือไม่

ใช่ — ข้อความเต็มของ “การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Docker & DevOps Fundamentals ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Docker & DevOps Fundamentals มีบทเรียนทั้งหมด 4 บทเรียน

คุณจะเรียนรู้อะไรในบทเรียน “การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง”

เรียนรู้ว่า Dockerfile แบบหลายขั้นตอนช่วยให้คุณส่งมอบอิมเมจสำหรับระบบจริงที่กะทัดรัดได้อย่างไร โดยแยกเครื่องมือสร้างออกจากสภาพแวดล้อมขณะทำงานสุดท้าย เพื่อลดขนาดอิมเมจลงอย่างมาก คุณปฏิบัติ Docker & DevOps Fundamentals ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน

คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Docker & DevOps Fundamentals หรือไม่

ไม่จำเป็นต้องมีประสบการณ์มาก่อน Docker & DevOps Fundamentals บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 4 จากทั้งหมด 4 บทเรียน

บทเรียน “การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง” ใช้เวลานานแค่ไหน

บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย

ฉันเขียนและรันโค้ดในบทเรียน Docker & DevOps Fundamentals นี้ได้ไหม

ได้ บทเรียน Docker & DevOps Fundamentals ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

บทเรียนทั้งหมดในหลักสูตรนี้

  1. ทำความเข้าใจ Dockerfile
  2. การสร้างอิมเมจ Docker แบบกำหนดเอง
  3. เลเยอร์อิมเมจและการเพิ่มประสิทธิภาพ
  4. การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง
← กลับไปที่ Docker & DevOps Fundamentals