Spring Boot 專案添加 Docker 支持
在 pom.xml-properties中添加 Docker 鏡像名稱
<properties>
<docker.image.prefix>springboot</docker.image.prefix>
</properties>
plugins 中添加 Docker 構建插件:
<!-- Docker maven plugin -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<configuration>
<imageName>${docker.image.prefix}/${project.artifactId}</imageName>
<dockerDirectory>src/main/docker</dockerDirectory>
<resources>
<resource>
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
<!-- Docker maven plugin -->
在目錄src/main/docker下創建 Dockerfile 檔案,Dockerfile 檔案用來說明如何來構建鏡像,
FROM openjdk:8-jdk-alpine
VOLUME /tmp
# xxxx是你打包時候的jar包名
ADD xxxx.jar app.jar
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
這個 Dockerfile 檔案很簡單,構建 Jdk 基礎環境,添加 Spring Boot Jar 到鏡像中,簡單解釋一下:
- FROM ,表示使用 Jdk8 環境 為基礎鏡像,如果鏡像不是本地的會從 DockerHub 進行下載
- VOLUME ,VOLUME 指向了一個 /tmp的目錄,由于 Spring Boot 使用內置的Tomcat容器,Tomcat 默認使用 /tmp作為作業目錄,這個命令的效果是:在宿主機的 /var/lib/docker目錄下創建一個臨時檔案并把它鏈接到容器中的 /tmp目錄
- ADD ,拷貝檔案并且重命名
- ENTRYPOINT ,為了縮短 Tomcat 的啟動時間,添加 java.security.egd的系統屬性指向 /dev/urandom作為 ENTRYPOINT
這樣 Spring Boot 專案添加 Docker 依賴就完成了,
構建打包環境
我們需要有一個 Docker 環境來打包 Spring Boot 專案,在 Windows 搭建 Docker 環境很麻煩,因此我這里以 Centos 7 為例,
安裝 Docker 環境(略)
輸入docker version 回傳版本資訊則安裝正常,
安裝JDK(略)
輸入java -version 回傳版本資訊則安裝正常,
安裝MAVEN(略)
輸入mvn -version 回傳版本資訊則安裝正常,
使用 Docker 部署 Spring Boot 專案
將專案 spring-boot-docker 拷貝服務器中,進入專案路徑下進行打包測驗,
#打包
mvn package
#啟動
java -jar target/xxxx.jar
看到 Spring Boot 的啟動日志后表明環境配置沒有問題,接下來我們使用 DockerFile 構建鏡像,
mvn package docker:build
使用docker images命令查看構建好的鏡像:
docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
springboot/xxxx latest 99ce9468da74 6 seconds ago 117.5 MB
springboot/xxxx 就是我們構建好的鏡像,下一步就是運行該鏡像
docker run -p 8080:8080 -t springboot/xxxx
啟動完成之后我們使用docker ps查看正在運行的鏡像
可以看到我們構建的容器正在在運行,訪問瀏覽器:http://192.168.0.x:8080
訪問成功!
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/544675.html
標籤:Java
上一篇:演算法21:折紙問題
