Multi-stage builds

Docker ระดับกลาง

Mike Metzger

Data Engineering Consultant

Single-stage builds

  • โดยทั่วไป Docker image สร้างด้วยคำสั่ง FROM เพียงคำสั่งเดียว
  • ทุกสิ่งที่เพิ่มเข้าไปใน image ต้นทางจะทำให้ขนาดใหญ่ขึ้นและการจัดการยากขึ้น
  • ลองนึกถึงแอปพลิเคชันที่ต้องคอมไพล์ก่อนใช้งาน
    • สามารถเพิ่มส่วนประกอบที่จำเป็นทั้งหมดลงใน image คอมไพล์ แล้วกำหนดค่า image สุดท้ายสำหรับใช้งานได้
    • วิธีนี้มักทิ้งเนื้อหาที่ไม่จำเป็นไว้ใน image แม้จะไม่ได้ใช้
FROM ubuntu
RUN apt update
RUN apt install gcc -y
...
RUN make
CMD ["data_app"]
Docker ระดับกลาง

Multi-stage builds

  • Multi-stage builds ใช้หลาย container
  • โดยทั่วไปจะมีขั้นตอนการ build หนึ่งขั้นตอนหรือมากกว่า
  • ส่วนประกอบสุดท้ายจะถูกคัดลอกไปยัง container image สุดท้าย
  • ขั้นตอน build จะถูกลบออกโดยอัตโนมัติ
    • ช่วยประหยัดพื้นที่และลดขนาด container image
  • ใช้ syntax เพิ่มเติมใน Dockerfile
    • AS <alias>
    • COPY --from=<alias>
Docker ระดับกลาง

ตัวอย่าง Multi-stage build

# Create initial build stage
FROM ubuntu AS stage1

# Install compiler and compile code RUN apt install gcc -y ... RUN make
# Start new stage to create final image FROM alpine-base
# Copy from first stage to final COPY --from=stage1 /data_app /data_app
# Run application on container start CMD ["data_app"]
Docker ระดับกลาง

มาฝึกกันเถอะ!

Docker ระดับกลาง

Preparing Video For Download...