jar
我們到項(xiàng)目的根目錄,運(yùn)行mvn clean package
對項(xiàng)目進(jìn)行打包,運(yùn)行之后會在target
目錄下生成一個xxx.jar
的可執(zhí)行jar
文件。
Docker
鏡像首先我們將準(zhǔn)備的xxx.jar
拷貝到我們的 Ubuntu18 機(jī)器上,拷貝的方法就不做描述了,大家各顯神通吧。這里我是將我生成docker-demo-0.0.1.jar
拷貝到了/var/docker/
文件夾下。這里大家也不一定使用Linux
機(jī)器,這里只是我用了演示,盡量符合生產(chǎn)環(huán)境。
Dockerfile
使用vi Dockerfile
對文件進(jìn)行編輯。
FROM openjdk:8-jdk-alpine
VOLUME /tmp
ADD docker-demo-0.0.1.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
上面命令的相關(guān)解釋:
從docker倉庫獲取openjdk
作為我們項(xiàng)目的容器
VOLUME
指向了一個/tmp
的目錄,由于Spring Boot使用內(nèi)置的Tomcat容器,Tomcat默認(rèn)使用/tmp
作為工作目錄。效果就是在主機(jī)的/var/lib/docker
目錄下創(chuàng)建了一個臨時文件,并連接到容器的/tmp
。
項(xiàng)目的docker-demo-0.0.1.jar
作為app.jar
添加到容器。
ENTRYPOINT
執(zhí)行項(xiàng)目 app.jar
。為了縮短 Tomcat 啟動時間,添加一個系統(tǒng)屬性指向/dev/urandom
作為 Entropy Source
我們在/var/docker/testdocker
目錄下,執(zhí)行Docker
的命令來構(gòu)建鏡像。
docker build -t docker-user-service:latest .
這個命令就是使用Docker
的build
命令來構(gòu)建鏡像,并給鏡像起了一個名字docker-demo-user-service
其TAG
為latest
在當(dāng)前文件夾下。
我們使用docker images
來查看所有的鏡像。
我們發(fā)現(xiàn)鏡像列表里面有我們生成的鏡像docker-demo
。
通過上面的步驟我們就已經(jīng)完成了鏡像的創(chuàng)建,接下來我們只需要使用docker run -p 8080:8080 -t jerome.xin/docker-demo
命令來運(yùn)行我們的項(xiàng)目。接下來我們通過http://192.168.2.119:8080/
來訪問項(xiàng)目。得到如下結(jié)果:
我們能看到正常的返回了我們預(yù)期結(jié)果。這里說明一下192.168.2.119
這個是我的虛擬機(jī)的地址。如果不想看到Spring Boot
的啟動日志我們可以使用這個命令docker run -d -p 8080:8080 -t jerome.xin/docker-demo
啟動項(xiàng)目。
執(zhí)行docker ps
來查看我們已經(jīng)運(yùn)行的鏡像。
docker ps
如果需要停止容器,可以執(zhí)行下面的命令。
docker stop 55e9e3a65e07
使用Docker
使用可以執(zhí)行的jar
制作并運(yùn)行鏡像,可以總結(jié)為兩步。第一步準(zhǔn)備好一個可以執(zhí)行的jar
文件,第二步編寫Dockerfile
文件,最后使用Docker
的build
命令就可以把一個可執(zhí)行jar
文件制作成鏡像。因?yàn)槲覀兊目蓤?zhí)行的jar
文件是用來內(nèi)嵌的Tomcat
容器,所以我們只需要從Docker
的中心倉庫拉取一個JDK
作為我們鏡像的容器即可。
Spring Boot,Docker,Jar
聯(lián)系客服