ในตอนนี้ทาง Spring ได้ปล่อย Spring Boot 2.3.0.M1 ออกมา
มีความสามารถที่น่าสนใจคือ
- สร้าง Docker image ด้วย Cloud Native Buildpacks แล้ว
- ทำการ optimized layer ต่าง ๆ ใน JAR file เพื่อให้สร้างได้ดีและเร็วขึ้น
มาดูว่าใช้งานกันอย่างไรบ้าง
เริ่มต้นด้วยการใช้งานร่วมกับ Buildpacks
โดยจะเพิ่ม task ใหม่เข้ามาทั้ง Apache Maven และ Gradle
- Apache maven คือ spring-boot:build-image
- Gradle คือ bootBuildImage
เพื่อให้เราสร้าง Docker image ได้เลย
จะช้าในครั้งแรกเพราะว่า ทำการดึง base image
ชื่อว่า cloudfoundry/run:base-cnb จาก Docker Hub
จากนั้นก็เข้าสู่ขั้นตอนการ build ของ buildpacks
ตัวอย่างของ Apache Maven
เมื่อได้ Docker image มาแล้ว ก็นำไปสร้าง container ต่อได้เลย
น่าจะทำให้ชีวิตง่ายขึ้นเยอะ
แต่ความสามารถนี้ ตอนนี้ยังไม่สนับสนุนบน Windows นะ !!
มาถึงตรงนี้น่าจะเป็นจุดเริ่มต้นที่ดี
ว่าในอนาคตจะเดินไปทิศทางใดบ้าง
ต่อมา ลองสร้าง Layered JAR กัน
ทำการแก้ไข configuration นิดหน่อย
ตัวอย่างใช้งาน Apache Maven ดังนั้นจึงแก้ไขในไฟล์ pom.xml ดังนี้
จากนั้นทำการสร้างไฟล์ JAR ใหม่
ทำการดูได้ด้วยว่า แต่และ layer เป็นอย่างไร รวมทั้ง extract ออกมาได้ดังนี้
เมื่อ extract ออกมาแล้วจะมี folder ต่าง ๆ ออกมาดังนี้
- Dependencies จะเก็บ library ทั้งหมดที่ระบบงานใช้งาน ซึ่งเยอะมาก ๆ ที่สำคัญจะไม่ค่อยเปลี่ยน
- Application จะเก็บ class file ต่าง ๆ ของระบบงานที่เราเขียนขึ้นมา พร้อมทั้ง spring loader
Layer ต่าง ๆ ของไฟล์ JAR แล้ว จะมีทั้งที่เป็น static และ dynamic
ถ้าเราจัดการดี ๆ แล้ว จะช่วยให้การ build เร็วขึ้นอย่างมาก
และเราสามารถสร้าง Docker image
ด้วยการนำ layer ต่าง ๆ มารวมกันใน Dockerfile ของเราได้เลย
ยกตัวอย่างเช่น
ลองใช้งานดูครับ สะดวกขึ้นเยอะเลย
Reference Websites