การทำคอนเทนเนอร์ด้วย Docker
เรียนรู้การทำแอปพลิเคชัน Scala ให้เป็นคอนเทนเนอร์ด้วย Docker เพื่อให้สภาพแวดล้อมสอดคล้องกันและนำไปใช้งานได้ง่ายขึ้น
การทำคอนเทนเนอร์ด้วย Docker เป็นบทเรียน Scala for Backend Engineering & Functional Programming ฟรีบน CoddyKit นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน คุณสามารถอ่านบทเรียนทั้งหมดด้านล่างฟรี — จากนั้นลองปฏิบัติด้วยตัวคุณเองในเบราว์เซอร์พร้อมตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7 บทเรียนนี้เป็นส่วนหนึ่งของเส้นทางการเรียน Scala for Backend Engineering & Functional Programming และความก้าวหน้าของคุณจะซิงค์ข้ามเว็บและแอป CoddyKit คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 3 บทเรียน
เหตุใดจึงทำแอป Scala ให้เป็นคอนเทนเนอร์
เมื่อนำแอปพลิเคชัน Scala ไปติดตั้งใช้งาน การทำให้สภาพแวดล้อมในขั้นพัฒนา ทดสอบ และใช้งานจริงเหมือนกันอาจเป็นเรื่องท้าทาย นี่คือจุดที่ การทำคอนเทนเนอร์เข้ามาช่วย!
คอนเทนเนอร์จะรวมแอปพลิเคชันและสิ่งที่ต้องพึ่งพาทั้งหมด (เช่น Java Virtual Machine ไลบรารี และการกำหนดค่า) ไว้ในหน่วยเดียวที่แยกเป็นอิสระ ทำให้มั่นใจได้ว่าแอปจะทำงานเหมือนกันในทุกที่
Docker: อิมเมจและคอนเทนเนอร์
Docker เป็นแพลตฟอร์มยอดนิยมสำหรับการทำคอนเทนเนอร์ โดยใช้แนวคิดหลักสองประการ:
- Docker Image: แพ็กเกจที่ทำงานได้ด้วยตนเอง น้ำหนักเบา และรวมทุกสิ่งที่จำเป็นต่อการเรียกใช้ซอฟต์แวร์ส่วนหนึ่งไว้ด้วยกัน ทั้งโค้ด รันไทม์ เครื่องมือระบบ ไลบรารีระบบ และการตั้งค่า ลองนึกภาพว่าเป็นพิมพ์เขียว
- Docker Container: อินสแตนซ์ที่เรียกใช้ได้ของ Docker image เมื่อคุณเรียกใช้อิมเมจ อิมเมจนั้นจะกลายเป็นคอนเทนเนอร์ คอนเทนเนอร์จะแยกจากกันเองและแยกจากระบบโฮสต์
การเรียกใช้ Docker ครั้งแรก
ลองเรียกใช้คอนเทนเนอร์ Docker แบบพื้นฐานกันครับ คำสั่งนี้จะดึงอิมเมจ hello-world (หากยังไม่มีอยู่ในเครื่อง) แล้วเรียกใช้เป็นคอนเทนเนอร์
คุณจะเห็นข้อความยืนยันว่า Docker ทำงานได้ครับ
docker run hello-world
แอป Scala แบบเรียบง่ายของเรา
ก่อนที่จะสร้างเป็นคอนเทนเนอร์ เรามาสร้างแอปพลิเคชัน Scala ขนาดเล็กกันก่อน โปรแกรมนี้จะแสดงข้อความบนคอนโซลเท่านั้น
อีกไม่นานเราจะจัดแพ็กเกจโปรแกรมนี้เป็นอิมเมจ Docker ครับ
object Main extends App {
val message = "Hello from CoddyKit's Docker container!"
println(message)
}พิมพ์เขียว: Dockerfile
Dockerfile คือไฟล์ข้อความที่บรรจุคำสั่งทั้งหมดซึ่งผู้ใช้สามารถเรียกใช้บนบรรทัดคำสั่งเพื่อประกอบอิมเมจขึ้นมา เปรียบเสมือนสูตรสำหรับสร้างอิมเมจ Docker ของคุณ
คำสั่งสำคัญมีดังนี้:
FROM: กำหนดอิมเมจพื้นฐานWORKDIR: กำหนดไดเรกทอรีทำงานCOPY: คัดลอกไฟล์เข้าไปในอิมเมจRUN: เรียกใช้คำสั่งระหว่างการสร้างอิมเมจCMD: ระบุคำสั่งที่จะเรียกใช้เมื่อคอนเทนเนอร์เริ่มทำงาน
Dockerfile: ขั้นตอนการสร้างสำหรับ Scala
สำหรับ Scala เรามักใช้การสร้างหลายขั้นตอน ขั้นตอนแรกจะสร้างแอปพลิเคชันของเรา โดยใช้ อิมเมจ OpenJDK ที่มี JDK แบบเต็มเพื่อคอมไพล์โค้ด Scala
# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.classDockerfile: ขั้นตอนการทำงานสำหรับ Scala
ขั้นตอนที่สองจะสร้างอิมเมจที่มีขนาดเล็กลงมาก โดยมีเฉพาะ JRE (Java Runtime Environment) และแอปพลิเคชัน Scala ที่คอมไพล์แล้ว (ไฟล์ JAR) วิธีนี้ช่วยให้ขนาดอิมเมจสุดท้ายเล็กที่สุด
# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]Dockerfile ฉบับสมบูรณ์สำหรับ Scala
นี่คือ Dockerfile แบบหลายขั้นตอนฉบับเต็มสำหรับแอปพลิเคชัน Scala ของเรา ไฟล์นี้ควรตั้งชื่อว่า Dockerfile และวางไว้ในไดเรกทอรีเดียวกับ Main.scala
# Stage 1: Build the Scala application
FROM adoptopenjdk/openjdk11:latest as builder
WORKDIR /app
COPY Main.scala .
RUN scalac Main.scala
RUN jar -cvf app.jar Main.class
# Stage 2: Create a minimal runtime image
FROM adoptopenjdk/openjdk11:jre-hotspot
WORKDIR /app
COPY --from=builder /app/app.jar .
CMD ["java", "-jar", "app.jar"]การสร้างอิมเมจ Docker
ตอนนี้เรามี Dockerfile และ Main.scala แล้ว มาสร้างอิมเมจ Docker กันครับ แฟล็ก -t ใช้ติดแท็กชื่อให้อิมเมจของเรา (เช่น scala-hello) ส่วน . ระบุว่าไดเรกทอรีปัจจุบันเป็นบริบทการสร้าง
docker build -t scala-hello .
การเรียกใช้แอป Scala ในคอนเทนเนอร์
หลังจากสร้างอิมเมจแล้ว คุณสามารถเรียกใช้แอปพลิเคชัน Scala ภายในคอนเทนเนอร์ Docker ด้วยคำสั่ง docker run คำสั่งนี้จะเรียกใช้คำสั่ง CMD ที่กำหนดไว้ใน Dockerfile
docker run scala-hello
คุณควรเห็นข้อความ "Hello from CoddyKit's Docker container!" แสดงบนคอนโซลครับ
ตรวจสอบความรู้ของคุณ
ทดสอบความเข้าใจเกี่ยวกับ Dockerfile ของคุณ
ทบทวน: การสร้างคอนเทนเนอร์ Scala
คุณเรียนรู้พื้นฐานของการสร้างแอปพลิเคชัน Scala ให้เป็นคอนเทนเนอร์ด้วย Docker สำเร็จแล้วครับ
- อิมเมจ Docker คือพิมพ์เขียว ส่วนคอนเทนเนอร์คืออินสแตนซ์ที่เรียกใช้ได้
- Dockerfile คือสูตรสำหรับสร้างอิมเมจของคุณ
- การสร้างหลายขั้นตอนช่วยสร้างอิมเมจขนาดเล็กและมีประสิทธิภาพสำหรับแอป Scala
- คำสั่งอย่าง
docker buildและdocker runใช้จัดการอิมเมจและคอนเทนเนอร์ของคุณ
ความรู้นี้มีความสำคัญอย่างยิ่งต่อการนำไมโครเซอร์วิส Scala ไปใช้งานอย่างสม่ำเสมอและเชื่อถือได้
คำถามที่พบบ่อย
บทเรียน “การทำคอนเทนเนอร์ด้วย Docker” ฟรีหรือไม่
ใช่ — ข้อความเต็มของ “การทำคอนเทนเนอร์ด้วย Docker” ฟรีให้อ่านที่นี่บนเว็บ เพื่อปฏิบัติแบบโต้ตอบ (ตัวแก้ไขโค้ดในตัวและติวเตอร์ AI ตลอด 24/7) และปลดล็อคส่วนที่เหลือของคอร์ส Scala for Backend Engineering & Functional Programming ให้อัปเกรดเป็น CoddyKit PRO คอร์ส Scala for Backend Engineering & Functional Programming มีบทเรียนทั้งหมด 3 บทเรียน
คุณจะเรียนรู้อะไรในบทเรียน “การทำคอนเทนเนอร์ด้วย Docker”
เรียนรู้การทำแอปพลิเคชัน Scala ให้เป็นคอนเทนเนอร์ด้วย Docker เพื่อให้สภาพแวดล้อมสอดคล้องกันและนำไปใช้งานได้ง่ายขึ้น คุณปฏิบัติ Scala for Backend Engineering & Functional Programming ด้วยโค้ดที่ใช้งานได้จริงที่คุณเรียกใช้โดยตรงในเบราว์เซอร์ และติวเตอร์ AI ตลอด 24/7 ตอบคำถามของคุณขณะที่คุณไปผ่านบทเรียน
คุณต้องมีประสบการณ์ก่อนที่จะเริ่มเรียน Scala for Backend Engineering & Functional Programming หรือไม่
ไม่จำเป็นต้องมีประสบการณ์มาก่อน Scala for Backend Engineering & Functional Programming บน CoddyKit ออกแบบมาสำหรับผู้เริ่มต้นไปจนถึงผู้เรียนขั้นสูง คุณสามารถเริ่มต้นที่นี่หรือเริ่มจากตัวแรกและเรียนด้วยความเร็วของคุณเอง นี่คือบทเรียนที่ 2 จากทั้งหมด 3 บทเรียน
บทเรียน “การทำคอนเทนเนอร์ด้วย Docker” ใช้เวลานานแค่ไหน
บทเรียน CoddyKit ส่วนใหญ่ใช้เวลาประมาณ 5–10 นาที แต่ละบทเรียนจึงสั้นและเป็นแบบโต้ตอบ คุณสามารถก้าวหน้าอย่างต่อเนื่องและกลับมาเรียนต่อจากตรงที่เพิ่งหยุดบนเว็บและแอปได้เลย
ฉันเขียนและรันโค้ดในบทเรียน Scala for Backend Engineering & Functional Programming นี้ได้ไหม
ได้ บทเรียน Scala for Backend Engineering & Functional Programming ทุกบทมีตัวแก้ไขโค้ดในตัว คุณจึงเขียนและรันโค้ดจริงได้เลยในเบราว์เซอร์ และได้รับข้อเสนอแนะจาก AI ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ
บทเรียนทั้งหมดในหลักสูตรนี้
- การออกแบบไมโครเซอร์วิสด้วย Scala
- การทำคอนเทนเนอร์ด้วย Docker
- กลยุทธ์การนำไปใช้งานบนคลาวด์