SpringBoot 整合 Docker的詳細過程
最近備忘錄新加的東西倒是挺多的,但到了新環(huán)境水土不服沒動力去整理筆記
1. Demo Project
首先準備一個簡單的項目,用來部署到 Docker 主機上,并且能驗證該項目是否成功運行
1.1 接口準備
準備一個測試接口,用于校驗 Docker 部署是否成功
@RestController
@RequestMapping("/")
public class HelloController {
@GetMapping("/hello")
public String helle() {
return "Hello World";
}
}
1.2 配置準備
在 application.yml 文件中添加 Docker 宿主機地址,方便統(tǒng)一管理(該功能需要安裝依賴插件)
server:
port: 8080
spring:
application:
name: docker-deploy-test
docker:
host: http://xxx.xxx.xxx.xxx:2375
2. Docker 開啟遠程連接
Docker 也是 Client/Serve 架構(dameon守護進程),其默認只能本地訪問, 所以得設置成可外網訪問我們才能部署項目到 Docker 上
1.1 修改配置文件
在 Docker 宿主機上編輯配置,添加下面一行配置(意思是任何地址都能訪問 2375 端口)
$vim /usr/lib/systemd/system/docker.service # ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
1.2 刷新配置、重啟
$systemctl daemon-reload $systemctl restart docker
1.3 認證登錄
直接開放 2357 端口,那么任何人都可以往 Docker 宿主機推送東西,筆者當初就被推送了挖礦的鏡像,主機卡死登不上去,后來只能無奈重裝系統(tǒng)鏡像。Docker支持使用 SSL 證書登錄,如果在外網環(huán)境請務必使用 SSL 登錄(筆者記錄了 OpenSSL 的筆記 ---- 用于認證,還沒來得及整理)
3. IDEA 安裝 Docker 插件
筆者 2019 版的 IDEA 已經默認集成了 Docker 插件,不需要再次安裝。只需把遠程主機地址和端口配上讓 IDEA 連接 ,最后驗證是否連接上遠程 Docker 主機即可

這里新建一個 Docker,填上主機地址會自動連接,顯示 Connection successful 則表示 IDEA 連上宿主機了
4. Maven 添加 Docker 插件
上一步的 IDEA 插件可以構建鏡像并部署了,還能管理 Docker。但筆者是 maven 插件 和 IDEA 插件并用,能夠方便構建程序和部署
<!-- docker 插件 -->
<plugin>
<groupId>com.spotify</groupId>
<artifactId>docker-maven-plugin</artifactId>
<version>1.0.0</version>
<!-- 綁定 docker:build 到 maven 的 package 生命周期 -->
<executions>
<execution>
<id>docker-build-image</id>
<phase>package</phase>
<goals>
<goal>build</goal>
</goals>
</execution>
</executions>
<!-- 插件的配置 -->
<configuration>
<!-- 構建的鏡像的名字 :標簽 -->
<imageName>${project.artifactId}:${project.version}</imageName>
<!-- 存放dockerfile的路徑 -->
<dockerDirectory>${project.basedir}</dockerDirectory>
<!-- docker Host 地址,用插件在 initialize 階段從 application.yml 解析 -->
<dockerHost>${docker.host}</dockerHost>
<!-- SSL 認證證書地址,若開啟 SSL 登錄 -->
<!-- <dockerCertPath></dockerCertPath> -->
<resources>
<resource>
<!-- 使用什么資源來構建鏡像(就是jar包),以及將鏡像推送到容器的那個目錄下 -->
<targetPath>/</targetPath>
<directory>${project.build.directory}</directory>
<include>${project.build.finalName}.jar</include>
</resource>
</resources>
</configuration>
</plugin>
5. 編寫Dockerfile
創(chuàng)建 Dockerfile 文件,填入下面的內容,然后將其放入到項目的根目錄
FROM openjdk:8-jdk-alpine
MAINTAINER [author] [Howl@email.com]
ARG JAR_FILE=/target/*.jar
COPY ${JAR_FILE} app.jar
EXPOSE 8080
ENTRYPOINT ["java","-jar","/app.jar"]

6. 打包項目
在 Maven 插件中綁定了 Package 與 Docker:build 的執(zhí)行過程,即把項目打包成 jar 之后會自動執(zhí)行 Dockr:build 來構建鏡像并發(fā)布到遠程 Docker 宿主機上(若項目較大,那么等待鏡像推送到 Docker 宿主機上的時間會較長)

7. 創(chuàng)建容器
在 IDEA 的插件中可以管理 Docker,點開右下角 services 里面可以看到連接上的 Docker 里有剛才構建的鏡像,然后我們可以選擇這個鏡像右鍵來創(chuàng)建容器
在彈出框里面填入要創(chuàng)建的容器的名字,以及容器映射的端口,最后點擊 Run,等待容器啟動即可。啟動完成后可以在 IDEA 的插件里看到新建的容器,點擊可以查看容器的詳情

8. 校驗部署
使用宿主機的 IP 地址或域名來訪問剛才發(fā)布的測試接口

到此這篇關于SpringBoot 整合 Docker的文章就介紹到這了,更多相關SpringBoot 整合 Docker內容請搜索本站以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持本站!
版權聲明:本站文章來源標注為YINGSOO的內容版權均為本站所有,歡迎引用、轉載,請保持原文完整并注明來源及原文鏈接。禁止復制或仿造本網站,禁止在非maisonbaluchon.cn所屬的服務器上建立鏡像,否則將依法追究法律責任。本站部分內容來源于網友推薦、互聯(lián)網收集整理而來,僅供學習參考,不代表本站立場,如有內容涉嫌侵權,請聯(lián)系alex-e#qq.com處理。
關注官方微信