一、概述
目前java采用的框架是Spring,服務器直接通過
java -jar xxx.jar
就可以啟動服務了。
二、jdk鏡像
在docker中跑java應用,需要有jdk環境支持才行。
獲取jdk鏡像,有2種方式。
1. 自己制作jdk鏡像
2. 使用Docker Hub 現成的jdk鏡像。
首先說明一下,自己制作jdk鏡像。如果基礎鏡像采用centos,ubuntu,那么制作出來的鏡像會特別大。
Alpine只有5M,可以通過作為基礎鏡像,來制作鏡像。但是會有2個問題:1. 直接調用java命令會報錯。2. 時區不是中國時區。
基於2個問題,我采用的是2種方式。
https://hub.docker.com/r/mayan31370/openjdk-alpine-with-chinese-timezone/tags
這個鏡像,已經幫你解決了,上面2個問題。而且,鏡像本身,也做了優化。只有68M左右,非常小。
三、封裝java鏡像
有了jdk鏡像后,封裝java就簡單多了。
創建目錄
創建應用目錄,文件如下:
.
├── Dockerfile
└── RMS.jar
Dockerfile
FROM mayan31370/openjdk-alpine-with-chinese-timezone:8-jdk ADD RMS.jar . EXPOSE 8080 ENTRYPOINT [ "java", "-jar", "RMS.jar" ]
注意:這個jar啟動,會監聽8080端口。
RMS.jar是已經打包好的java應用。
生成鏡像
docker build -t rms .
啟動鏡像
docker run -it -p 8080:8080 rms /bin/bash
輸出:
. ____ _ __ _ _ /\\ / ___'_ __ _ _(_)_ __ __ _ \ \ \ \ ( ( )\___ | '_ | '_| | '_ \/ _` | \ \ \ \ \\/ ___)| |_)| | | | | || (_| | ) ) ) ) ' |____| .__|_| |_|_| |_\__, | / / / / =========|_|==============|___/=/_/_/_/ :: Spring Boot :: (v1.5.9.RELEASE) 2019-10-31 16:10:02.517 [main] INFO com.iaicmt.rms.RmsApplication - Starting RmsApplication v1.0-SNAPSHOT on e6c7908e56ab with PID 1 (/RMS.jar started by root in /) ... 2019-10-31 16:10:13.321 [main] INFO o.s.j.e.a.AnnotationMBeanExporter - Registering beans for JMX exposure on startup 2019-10-31 16:10:13.549 [main] INFO o.s.b.c.e.u.UndertowEmbeddedServletContainer - Undertow started on port(s) 8080 (http) 2019-10-31 16:10:13.570 [main] INFO com.iaicmt.rms.RmsApplication - Started RmsApplication in 12.483 seconds (JVM running for 14.623)
訪問頁面
# curl 127.0.0.1:8080 {"timestamp":1572509686431,"status":200,"error":"","message":"Null","path":"/"}