我们先来看一下部署项目的传统方式:
如果项目需要重新部署,需要重新执行一次以上步骤,非常麻烦,而且传统的部署项目方式也不方便查看日志
今天为大家介绍的 IDEA + Docker 一键部署项目正是为了解决这个问题,不仅操作简单,而且查看日志也非常方便
本次演示的环境为:
- IDEA 2024.2(安装了汉化插件的 IDEA,英文版的 IDEA 操作类似)
基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
- 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
- 视频教程:https://doc.iocoder.cn/video/
- 本地电脑已安装 IntelliJ IDEA 开发工具
基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能
- 项目地址:https://github.com/YunaiV/yudao-cloud
- 视频教程:https://doc.iocoder.cn/video/
由于需要连接服务器进行远程部署,需要先配置 SSH
打开 IDEA 的设置界面

在设置界面中找到 SSH 配置

点击 +,创建一个新的 SSH 连接,填入主机、用户名和密码后点击测试连接

成功连接 Docker 守护进程后才能执行与 Docker 相关的操作
在设置中找到 Docker,点击 +,选择以 SSH 方法连接到 Docker 守护进程,接着点击下拉列表,选择刚才创建的 SSH 配置
完成以上操作后点击应用,再点击确定

我们创建一个简单的 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 "Hello, world
";
}
}
接着需要编写一个用于定义和构建 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
# 容器启动执行命令
ENTRYPOINT ["java", "-jar", "/one-click-deployment-0.0.1-SNAPSHOT.jar", "--spring.profiles.active=prod"]
# 对外暴露的端口号
EXPOSE11020
jar 包的名称需要与 pom.xml 文件中的配置保持一致

也可以在 Maven 管理界面执行 package 操作后直接复制 jar 包的名称


复制本地的 jar 包至镜像内,jar 包所在的目录需放置在与 Dockerfile 文件同级的目录下

至此准备工作已经全部完成,接下来即可正式开始配置远程一键部署
首次配置可能比较繁琐,但后续部署项目是真的方便,赶紧动手试一下吧

点击 +,选择 Dockerfile

- 勾选存储为项目文件,这样 IDEA 重启后改配置也会继续保存
- 服务器选择我们刚才连接的 Docker 守护进程(如果没有自动识别,可以点击后面的三个小点自行配置)



根据实际情况填写端口


选择运行 Maven 目标

添加 clean 和 package 操作


最后点击应用和确定

至此,所有配置都已完成
点击绿色小三角即可自动完成项目部署(如果项目需要重新部署,再次点击绿色小三角即可)

成功部署之后,就能够很方便地在 IDEA 的控制台看到项目的运行日志了

- 如果你使用的是云服务器,在安全组中放行 11020 端口
- 如果你安装了宝塔,除了在安全组中放行 11020 端口,还要在宝塔中放行 11020 端口
- 完成以上两个操作后,输入以下指令开放 11020 端口
sudo ufw allow 11020
sudo ufw reload
sudo firewall-cmd --zone=public --add-port=11020 /tcp --permanent
sudo firewall-cmd --reload
在浏览器输入以下网址,访问项目(将 ip 地址更改为你的服务器的地址)
http://127.0.0.1:11020/
访问成功后的界面

如果你点击小三角后部署失败,并且 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 后的界面

错误信息 “no main manifest attribute, in /one-click-deployment-0.0.1-SNAPSHOT.jar” 表明 JAR 文件中没有指定主类(即程序的入口点)
之所以产生这种情况,有可能是因为项目的 pom.xml 文件没有指定主类,也有可能是因为 SpringBoot 打包插件没生效
解决方法:修改项目的 pom.xml 文件,同时确保 SpringBoot 打包插件生效了(skip 属性默认为 false,表示启用打包插件)
