將Spring Boot打包成Docker Image
要將Sprint Boot打包後的軟體部署到Kubernates裡面,首先得先將它們打包成Docker Image.
以下範例為打包一個Sprint Boot,提供用camel建立的rest api,首先使用Maven archetype快速建立一個Spring Boot的Maven專案
mvn archetype:generate \
-DarchetypeGroupId=org.apache.camel.archetypes \
-DarchetypeArtifactId=camel-archetype-spring-boot \
-DarchetypeVersion=3.1.0
輸入groupId等屬性
Define value for property ‘groupId’: com.wordpress.ericchen231
Define value for property ‘artifactId’: spring-boot-demo1
Define value for property ‘version’ 1.0-SNAPSHOT: : 1.0.0
Define value for property ‘package’ com.wordpress.ericchen231: : com.wordpress.ericchen231.spring_boot_demo1
[INFO] Using property: spring-boot-version = 1.4.3.RELEASE
Confirm properties configuration:
groupId: com.wordpress.ericchen231
artifactId: spring-boot-demo1
version: 1.0.0
package: com.wordpress.ericchen231.spring_boot_demo1
spring-boot-version: 1.4.3.RELEASE
Y: : Y
這時會產生spring-boot-demo1資料夾,會產生以下的檔案
test資料夾此時沒有要處理它,就不列出來了.
修改MySpringBootRouter.java,修改方式如下
接著調整pom.xml,指定Java版本
增加maven.compiler.target及maven.compiler.source屬性
因為會使用Servlet元件來提供Rest API功能,須增加camel-rest與camel-servlet的依賴
調整src/main/resources/application.properties,增加camel.component.servlet.mapping.contextPath=/api/*,Spring Boot預設啟動的port是8080,可以透過server.port來改變
再來進行打包,透過以下指令
mvn package
啟動Spring Boot測試是否正常
mvn spring-boot:run
成功啟動的樣子
測試是否可運作,用瀏覽器打開http://localhost:8888/api/say/hello,會顯示錯誤,檢視原始碼就可以看到「Hello World」,測試完畢可以按ctrl + c結束Spring Boot.
檢視原始碼就可以看到Hello World的文字
要打包Docker Image要先準備一個Dockerfile,用vim編輯
vim Dockerfile
輸入以下的內容
FROM openjdk:8-jdk-alpine
RUN addgroup -S spring && adduser -S spring -G spring
USER spring:spring
ARG JAR_FILE=target/*.jar
COPY ${JAR_FILE} app.jar
ENTRYPOINT [“java”,”-jar”,”/app.jar”]
接著就可以開始產生Docker Image,可以使用Docker指令來打包
docker build -t spring-boot-demo1 .
啟動Docker載入剛剛建立的image
docker run -p 8888:8888 -t spring-boot-demo1
啟動後,一樣用瀏覽器開啟http://localhost:8888/api/say/hello,應該會出現相同的測試結果.










