ข้ามไปยังเนื้อหาหลัก

ค้นหาใน CooLWJ

选择搜索范围,输入关键词后按回车。

ภาษา

3 วิธีที่ดีที่สุดในการสร้างอิมเมจ Docker ด้วย SpringBoot

บทความนี้จะแนะนำ 3 เทคนิคในการใช้ Maven สร้างแอปพลิเคชัน SpringBoot ให้เป็นอิมเมจ Docker。

(1)ใช้สิ่งที่มีมาใน spring-boot-maven-plugin ได้แก่ build-image.

(2)ใช้ ของ Google jib-maven-plugin。

(3)ใช้ dockerfle-maven-plugin。

แอปพลิเคชัน Spring Boot

เพื่อให้ทดลองปฏิบัติได้สะดวก จำเป็นต้องมีโปรเจกต์ Spring Boot。

ที่อยู่โครงการ Demo:

https://github.com/davelms/me...

สภาพแวดล้อมของโครงการ:

  • Java 11

  • Maven 3.6.3

ใช้ mvn package สามารถสร้างแพ็กเกจ jar ได้ตามปกติ。

ก็ทำงานได้ตามปกติเช่นกัน:

java -jar target/demo-application-0.0.1-SNAPSHOT.jar

หน้าทดสอบ:

http://localhost:8080/hello

โปรเจกต์ Demo พร้อมแล้ว ต่อไปมาเริ่มลองสร้างอิมเมจด้วย 3 วิธีนี้กัน。

หนึ่ง、build-image ของปลั๊กอิน Spring Boot maven

Spring Boot มีปลั๊กอินสำหรับสร้างอิมเมจ Docker ของตัวเองติดตั้งมาให้แล้ว เราไม่จำเป็นต้องเปลี่ยนแปลงอะไร เพราะปลั๊กอินนี้อยู่ใน spring-boot-starter-parent ใน pom.xml อยู่แล้ว

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

เพียงเรียกใช้คำสั่งง่าย ๆ:

mvn spring-boot:build-image

เมื่อดำเนินการเสร็จจะเห็นข้อความแจ้งว่าสำเร็จ:

รันคอนเทนเนอร์เพื่อทดสอบ:

docker run -p 9090:8080 -t demo-application:0.0.1-SNAPSHOT

หมายเหตุ:พอร์ตของเครื่องภายในที่แมปไว้ที่นี่คือ9090。

สอง、jib-maven-plugin

Jib เป็นปลั๊กอินสำหรับ Maven และ Gradle ที่ใช้สร้างอิมเมจ Docker。

ปลั๊กอินนี้มีลักษณะเด่นที่เห็นได้ชัดมากอย่างหนึ่ง:ไม่จำเป็นต้องติดตั้ง Docker ในเครื่อง,ซึ่งสะดวกมากสำหรับการผสานรวมอย่างต่อเนื่อง Jib สามารถพุชไปยังรีจิสทรี Docker ที่ระบุได้โดยตรง

Jib ก็ไม่จำเป็นต้องเขียน Dockerfile เช่นกัน。

ใช้งานสะดวกมากเช่นกัน ไม่ต้องแก้โค้ด และจะไม่แก้ pom.xml ก็ได้

เพียงเรียกใช้:

mvn compile com.google.cloud.tools:jib-maven-plugin:2.3.0:dockerBuild
  • mvn compile

คือคำสั่งคอมไพล์ของ maven ที่เราคุ้นเคยกันดี

  • com.google.cloud.tools:jib-maven-plugin:2.3.0

ระบุให้ใช้ปลั๊กอิน Jib

  • dockerBuild

เป็นเป้าหมายการทำงานของปลั๊กอิน Jib,dockerBuild กำหนดให้ Jib ใช้ Docker ที่เราติดตั้งไว้ในเครื่อง

เมื่อดำเนินการเสร็จจะเห็นข้อความแจ้งว่าสำเร็จ:

เริ่มคอนเทนเนอร์เพื่อทดสอบ:

docker run -p 9091:8080 -t demo-application:0.0.1-SNAPSHOT

หมายเหตุ:พอร์ตของเครื่องภายในที่แมปไว้ที่นี่คือ9091。

สาม、dockerfile-maven-plugin

ปลั๊กอินนี้จำเป็นต้องให้เราเขียน Dockerfile ซึ่งในโปรเจกต์ Domo ได้เตรียมไว้แล้ว。

ต้องวาง Dockerfile ไว้ในไดเรกทอรีรากของโปรเจกต์ อยู่ด้วยกันกับ pom.xml。

จากนั้น ต้องเพิ่มการกำหนดค่าบางอย่างใน pom.xml เพื่อระบุรีโพซิทอรี ป้ายกำกับ tag และสิ่งที่กำหนดไว้ใน Dockerfile ข้างต้น JAR_FILE。

ดำเนินการ mvn package ก็จะสร้างอิมเมจโดยอัตโนมัติ เมื่อประมวลผลเสร็จจะเห็นข้อความแจ้ง:

รูปภาพ

เรียกใช้คอนเทนเนอร์:

docker run -p 9092:8080 -t demo-application:0.0.1-SNAPSHOT

หมายเหตุ:พอร์ตบนเครื่องที่แมปไว้คือ 9092。

สรุปย่อ

ในบรรดา 3 วิธีนี้ วิธีที่สะดวกที่สุดคือวิธีที่ SpringBoot รองรับมาในตัว ไม่ต้องทำอะไรเองเลย ก็ใช้งานได้ทันที

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

ดูเหมือนว่าปลั๊กอิน dockerfile-maven-plugin นี้จะยุ่งยากที่สุด ต้องเขียน Dockerfile และยังต้องเพิ่มการตั้งค่าอีก,แต่,ที่จริงแล้วตัวนี้ใช้งานได้ดีที่สุด เพราะ 2 ตัวแรกเกี่ยวข้องกับสภาพแวดล้อมเครือข่าย(คุณก็รู้กันอยู่) แม้จะตั้งค่าอิมเมจ Docker แล้ว ก็ยังเกิดข้อผิดพลาด คุณลองดูได้

ภาพประกอบหัวข้อ Spring Boot、Maven และการสร้างอิมเมจ Docker


ความคิดเห็น

กำลังส่ง

บทความยอดนิยม

เลือกธีมที่ชอบ

ธีมที่เลือกจะใช้ทั่วทั้งเว็บไซต์