จากบทความเรื่อง
การวางโครงสร้างระบบด้วย Spring boot
ก็มีถึงกระบวนการ deploy กันบ้าง
ซึ่งเลือกที่จะจัดการผ่าน Docker
โดยสิ่งที่คิดไว้จะมี 2 container คือ
- สำหรับ Database ซึ่งคือ MariaDB
- สำหรับการ run ระบบด้วย Spring boot
ดังนั้นมาลงมือทำกันหน่อย
เพื่อทำให้กระบวนการพัฒนาและ deploy มันสะดวกสบายมากขึ้น
แน่นอนว่า สนุกสนานกันอย่างแน่นอน
ปล. ก่อนที่จะมาใช้ Docker นั้น
ขอแนะนำให้ทำการติดตั้งและ configuration แบบปกติให้ได้ก่อนนะครับ
ถ้าทำไม่ได้อย่าเพิ่งนำ Docker มาใช้นะ
มิเช่นนั้น มันจะงงไปกันใหญ่
มาเริ่มกันเลย
Container ที่ 1 คือ MariaDB
ซึ่งทำการสร้าง container จาก image ของ
MariaDB ที่ Docker Hub
การสร้าง container สำหรับ MariaDB นั้น
สามารถกำหนดได้ง่าย ๆ เหมือนกับ MySQL เลย ดังนี้
[gist id="5ba4a46f5fb1cc37f504ac54aebe6666" file="1.txt"]
คำอธิบาย
container ชื่อว่า demo
กำหนด password ของ root และสร้าง username สำหรับเข้าใช้
Container ที่ 2 คือ Spring boot application ของเรานั่นเอง
ซึ่งมีวิธีการหลายแบบตามความชอบ
แต่วิธีการที่เลือกใช้คือ
Docker maven plug-in
เพราะว่าใช้งาน Apache Maven ในการพัฒนาอยู่แล้ว
จะทำการสร้าง image ของระบบงานมาให้
จากนั้นจึงทำการสร้าง container จาก image นี้นั่นเอง
วิธีการก็ไม่ยากดังนี้
1. ทำการเลือก based image ของ Java และสร้าง Dockerfile
สำหรับการเพิ่มไฟล์ JAR ของ Spring boot application ชื่อว่า demo-api.jar เข้าไป
[gist id="5ba4a46f5fb1cc37f504ac54aebe6666" file="Dockerfile"]
2. เพิ่มขั้นตอนการ build image ใน Apache Maven
[gist id="5ba4a46f5fb1cc37f504ac54aebe6666" file="pom.xml"]
3. ทำการ build และสร้าง image ผ่าน Apache Maven
ด้วยคำสั่ง
[code]
$mvn clean package docker:build
[/code]
ผลที่ได้คือ image นั่นเอง
โดยจากตัวอย่างนั้น image ชื่อว่า demo/rest
4. ทำการสร้าง container จาก image จากข้อ 3
สิ่งที่สำคัญก็คือ กำหนด link ไปยัง container ของ MariaDB ด้วย
และกำหนด port สำหรับเข้าใช้งานซะนั่นคือ 8080
[gist id="5ba4a46f5fb1cc37f504ac54aebe6666" file="2.txt"]
เพียงเท่านี้ก็สามารถสร้าง container ที่เราต้องการขึ้นมาอย่างง่ายดาย
และสามารถทำขั้นตอนเหล่านี้ซ้ำแล้วซ้ำเล่าได้เท่าที่ต้องการ
ชีวิตของการพัฒนาระบบน่าจะดีขึ้นและสนุกมากขึ้นไปอีกนะ !!
หรือถ้าชอบใช้ Docker compose สามารถ config ได้ดังนี้
[gist id="5ba4a46f5fb1cc37f504ac54aebe6666" file="docker-compose.yml"]
Reference websites
https://spring.io/guides/gs/spring-boot-docker/