0Pricing
Scala for Backend Engineering & Functional Programming · บทเรียน

การทำคอนเทนเนอร์ด้วย 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.class

Dockerfile: ขั้นตอนการทำงานสำหรับ 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 ในทันที — ไม่ต้องติดตั้งในเครื่องของคุณ

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

  1. การออกแบบไมโครเซอร์วิสด้วย Scala
  2. การทำคอนเทนเนอร์ด้วย Docker
  3. กลยุทธ์การนำไปใช้งานบนคลาวด์
← กลับไปที่ Scala for Backend Engineering & Functional Programming