如何用IDEA+Docker一鍵部署項目SpringBoot項目
1. 部署項目的傳統(tǒng)方式
我們先來看一下部署項目的傳統(tǒng)方式:
- 將項目打成 jar 包
- 將本地打包出來的 jar 包上傳到服務器上
- 通過
java -jar指令啟動項目
如果項目需要重新部署,需要重新執(zhí)行一次以上步驟,非常麻煩,而且傳統(tǒng)的部署項目方式也不方便查看日志
今天為大家介紹的 IDEA + Docker 一鍵部署項目正是為了解決這個問題,不僅操作簡單,而且查看日志也非常方便
本次演示的環(huán)境為:
- JDK 17
- IDEA 2024.2(安裝了漢化插件的 IDEA,英文版的 IDEA 操作類似)
- Ubuntu 22.04 LTS
- Docker 26.1.3
2. 前置工作
- 服務器已安裝 Docker,并且能夠正常拉取鏡像
- 了解簡單 Dockerfile 文件的編寫
- 本地電腦已安裝 IntelliJ IDEA 開發(fā)工具
- 能正常訪問接口的 SpringBoot 項目
3. SSH配置
由于需要連接服務器進行遠程部署,需要先配置 SSH
打開 IDEA 的設置界面

在設置界面中找到 SSH 配置

點擊 +,創(chuàng)建一個新的 SSH 連接,填入主機、用戶名和密碼后點擊測試連接

4. 連接Docker守護進程
成功連接 Docker 守護進程后才能執(zhí)行與 Docker 相關的操作
在設置中找到 Docker,點擊 +,選擇以 SSH 方法連接到 Docker 守護進程,接著點擊下拉列表,選擇剛才創(chuàng)建的 SSH 配置
完成以上操作后點擊應用,再點擊確定

5. 創(chuàng)建簡單的SpringBoot應用程序
我們創(chuàng)建一個簡單的 SpringBoot 應用程序,編寫一個簡單的接口,在 11020 端口上啟動項目

import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
public class HelloWorldController {
@GetMapping("/")
public String index() {
return "<h1>Hello, world</h1>";
}
}
6. 編寫Dockerfile文件
接著需要編寫一個用于定義和構建 Docker 鏡像的文本文件,文件名為 Dockerfile,Dockerfile 中的配置可根據自身項目情況進行調整
one-click-deployment # 基礎鏡像 FROM openjdk:17 # 復制jar包至鏡像內 # 復制的目錄需放置在與 Dockerfile 文件同級的目錄下 ADD target/one-click-deployment-0.0.1-SNAPSHOT.jar /one-click-deployment-0.0.1-SNAPSHOT.jar # 容器啟動執(zhí)行命令 ENTRYPOINT ["java", "-jar", "/one-click-deployment-0.0.1-SNAPSHOT.jar", "--spring.profiles.active=prod"] # 對外暴露的端口號 EXPOSE 11020
jar 包的名稱需要與 pom.xml 文件中的配置保持一致

也可以在 Maven 管理界面執(zhí)行 package 操作后直接復制 jar 包的名稱


復制本地的 jar 包至鏡像內,jar 包所在的目錄需放置在與 Dockerfile 文件同級的目錄下

至此準備工作已經全部完成,接下來即可正式開始配置遠程一鍵部署
7. 配置遠程部署
首次配置可能比較繁瑣,但后續(xù)部署項目是真的方便,趕緊動手試一下吧
7.1 創(chuàng)建配置

點擊 +,選擇 Dockerfile

勾選存儲為項目文件,這樣 IDEA 重啟后改配置也會繼續(xù)保存
自定義名稱
服務器選擇我們剛才連接的 Docker 守護進程(如果沒有自動識別,可以點擊后面的三個小點自行配置)
選擇我們剛才編寫的 Dockerfile 文件
自定義鏡像標記
自定義容器名稱
one-click-deployment:1.0.0

7.2 綁定端口


根據實際情況填寫端口

7.3 添加執(zhí)行前要運行的任務

選擇運行 Maven 目標

添加 clean 和 package 操作


最后點擊應用和確定

至此,所有配置都已完成
8. 部署項目
點擊綠色小三角即可自動完成項目部署(如果項目需要重新部署,再次點擊綠色小三角即可)

成功部署之后,就能夠很方便地在 IDEA 的控制臺看到項目的運行日志了

9. 開放防火墻的 11020 端口
- 如果你使用的是云服務器,在安全組中放行 11020 端口
- 如果你安裝了寶塔,除了在安全組中放行 11020 端口,還要在寶塔中放行 11020 端口
完成以上兩個操作后,輸入以下指令開放 11020 端口
Ubuntu
sudo ufw allow 11020 sudo ufw reload
CentOS
sudo firewall-cmd --zone=public --add-port=11020 /tcp --permanent sudo firewall-cmd --reload
10. 訪問項目
在瀏覽器輸入以下網址,訪問項目(將 ip 地址更改為你的服務器的地址)
http://127.0.0.1:11020/
訪問成功后的界面

11. 可能遇到的問題
11.1 Cannot connect to the Docker daemon. Is the docker daemon running
如果你點擊小三角后部署失敗,并且 IDEA 給出了以下提示,可能是因為 SSH 配置中的用戶并沒有連接 Docker 的權限
Cannot connect to the Docker daemon. Is the docker daemon running

解決方法:將 SSH 配置中的用戶添加到 docker 用戶組
sudo usermod -aG docker $USER

運行以下指令,確保SSH 配置中的用戶已經成功添加到 docker 用戶組
getent group docker

注意:添加用戶到 docker 用戶組后需要重啟 IDEA
成功連接 Docker 后的界面

11.2 no main manifest attribute, in /one-click-deployment-0.0.1-SNAPSHOT.jar

錯誤信息 “no main manifest attribute, in /one-click-deployment-0.0.1-SNAPSHOT.jar” 表明 JAR 文件中沒有指定主類(即程序的入口點)
之所以產生這種情況,有可能是因為項目的 pom.xml 文件沒有指定主類,也有可能是因為 SpringBoot 打包插件沒生效
解決方法:修改項目的 pom.xml 文件,同時確保 SpringBoot 打包插件生效了(skip 屬性默認為 false,表示啟用打包插件)

總結
到此這篇關于如何用IDEA+Docker一鍵部署SpringBoot項目的文章就介紹到這了,更多相關IDEA Docker一鍵部署SpringBoot內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
項目連接nacos配置中心報錯:Client not connected, current
這篇文章主要介紹了項目連接nacos配置中心報錯:Client not connected, current status:STARTING的解決方案,采用了mysql作為持久化的數(shù)據庫,docker作為運行的環(huán)境,感興趣的朋友跟隨小編一起看看吧2024-03-03
SpringBoot整合Web開發(fā)之Json數(shù)據返回的實現(xiàn)
這篇文章主要介紹了SpringBoot整合Web開發(fā)其中Json數(shù)據返回的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2022-08-08
Java Kafka實現(xiàn)優(yōu)先級隊列的示例詳解
在分布式系統(tǒng)中,消息隊列是一種常見的異步通信機制,而優(yōu)先級隊列則是消息隊列的一種特殊形式,下面我們來看看如何利用Kafka實現(xiàn)優(yōu)先級隊列吧2025-03-03

