การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง
เรียนรู้ว่า Dockerfile แบบหลายขั้นตอนช่วยให้คุณส่งมอบอิมเมจสำหรับระบบจริงที่กะทัดรัดได้อย่างไร โดยแยกเครื่องมือสร้างออกจากสภาพแวดล้อมขณะทำงานสุดท้าย เพื่อลดขนาดอิมเมจลงอย่างมาก
การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง เป็นบทเรียน 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_modulesDockerfile แบบหลายระยะฉบับเต็ม
การรวมระยะต่าง ๆ เข้าด้วยกันจะได้อิมเมจสุดท้ายขนาดเล็ก ซึ่งมีแอปที่สร้างเสร็จแล้ว แต่ไม่มีชุดเครื่องมือสร้าง
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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- ทำความเข้าใจ Dockerfile
- การสร้างอิมเมจ Docker แบบกำหนดเอง
- เลเยอร์อิมเมจและการเพิ่มประสิทธิภาพ
- การสร้างหลายขั้นตอนและอิมเมจที่เล็กลง