IDEA+Docker一键部署项目SpringBoot项目

文章目录
  • 1. 部署项目的传统方式
  • 2. 前置工作
  • 3. SSH配置
  • 4. 连接Docker守护进程
  • 5. 创建简单的SpringBoot应用程序
  • 6. 编写Dockerfile文件
  • 7. 配置远程部署
    • 7.1 创建配置
    • 7.2 绑定端口
    • 7.3 添加执行前要运行的任务
  • 8. 部署项目
  • 9. 开放防火墙的 11020 端口
  • 10. 访问项目
  • 11. 可能遇到的问题
    • 11.1 Cannot connect to the Docker daemon. Is the docker daemon running?
    • 11.2 no main manifest attribute, in /one-click-deployment-0.0.1-SNAPSHOT.jar

更多 IDEA 的使用技巧可查看 IDEA 专栏中的文章:IDEA

1. 部署项目的传统方式

我们先来看一下部署项目的传统方式:

  1. 将项目打成 jar 包
  2. 将本地打包出来的 jar 包上传到服务器上
  3. 通过java -jar指令启动项目

如果项目需要重新部署,需要重新执行一次以上步骤,非常麻烦,而且传统的部署项目方式也不方便查看日志

今天为大家介绍的 IDEA + Docker 一键部署项目正是为了解决这个问题,不仅操作简单,而且查看日志也非常方便


本次演示的环境为:

  • JDK 17
  • IDEA 2024.2(安装了汉化插件的 IDEA,英文版的 IDEA 操作类似)
  • Ubuntu 22.04 LTS
  • Docker 26.1.3

2. 前置工作

  1. 服务器已安装 Docker,并且能够正常拉取镜像
  2. 了解简单 Dockerfile 文件的编写
  3. 本地电脑已安装 IntelliJ IDEA 开发工具
  4. 能正常访问接口的 SpringBoot 项目

3. SSH配置

由于需要连接服务器进行远程部署,需要先配置 SSH


打开 IDEA 的设置界面

在设置界面中找到 SSH 配置

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

4. 连接Docker守护进程

成功连接 Docker 守护进程后才能执行与 Docker 相关的操作


在设置中找到 Docker,点击 +,选择以 SSH 方法连接到 Docker 守护进程,接着点击下拉列表,选择刚才创建的 SSH 配置

完成以上操作后点击应用,再点击确定

5. 创建简单的SpringBoot应用程序

我们创建一个简单的 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 # 容器启动执行命令 ENTRYPOINT ["java", "-jar", "/one-click-deployment-0.0.1-SNAPSHOT.jar", "--spring.profiles.active=prod"] # 对外暴露的端口号 EXPOSE 11020

jar 包的名称需要与 pom.xml 文件中的配置保持一致


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


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

至此准备工作已经全部完成,接下来即可正式开始配置远程一键部署

7. 配置远程部署

首次配置可能比较繁琐,但后续部署项目是真的方便,赶紧动手试一下吧

7.1 创建配置

点击 +,选择 Dockerfile

  • 勾选存储为项目文件,这样 IDEA 重启后改配置也会继续保存

  • 自定义名称

  • 服务器选择我们刚才连接的 Docker 守护进程(如果没有自动识别,可以点击后面的三个小点自行配置)

  • 选择我们刚才编写的 Dockerfile 文件

  • 自定义镜像标记

  • 自定义容器名称

    one-click-deployment:1.0.0

7.2 绑定端口

根据实际情况填写端口

7.3 添加执行前要运行的任务

选择运行 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,表示启用打包插件)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/1125434.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

2026年乌镇黑科技,AI眼镜解放双手,逛展不用愁!

2026年世界互联网大会乌镇峰会&#xff0c;正以硬核科技之力&#xff0c;刷新人们对国际盛会的认知。从AI眼镜沉浸式导览&#xff0c;到数字技术让古籍重焕生机&#xff1b;从AI义诊守护健康&#xff0c;到支付宝“碰一下”实现快速过闸、自助消费与资料收藏——这场由大会主办…

2026年乌镇黑科技,AI眼镜解放双手,逛展不用愁!

2026年世界互联网大会乌镇峰会&#xff0c;正以硬核科技之力&#xff0c;刷新人们对国际盛会的认知。从AI眼镜沉浸式导览&#xff0c;到数字技术让古籍重焕生机&#xff1b;从AI义诊守护健康&#xff0c;到支付宝“碰一下”实现快速过闸、自助消费与资料收藏——这场由大会主办…

golang debug调试

1. 本地调试 1&#xff1a;Add Configurations 添加配置文件&#xff08;Run kind &#xff1a;Directory&#xff09; 2&#xff1a;进入run运行窗口 3&#xff1a;debug断点调试模式 1. Resume Program (继续运行) 图标: ?? 或 ? 快捷键: F9&#xff08;Windows/Linux&a…

Google广告频繁被拒如何解决?附解决与防封指南

在出海广告投放中&#xff0c;谷歌广告是众多品牌和独立站的核心渠道之一。然而&#xff0c;不少投手在实操中频繁遭遇广告被拒登&#xff0c;甚至账户直接被封&#xff0c;严重影响投放进度和预算使用效率。那么&#xff0c;Google广告被拒的原因到底有哪些&#xff1f;如何快…

【毕业设计】基于python训练鲜花识别基于python机器学习训练鲜花识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

IDEA + Spring Boot 的三种热加载方案,看完弄懂,不用加班

背景 在日常开发中&#xff0c;我们需要经常修改 Java 代码&#xff0c;手动重启项目&#xff0c;查看修改后的效果。如果在项目小时&#xff0c;重启速度比较快&#xff0c;等待的时间是较短的。但是随着项目逐渐变大&#xff0c;重启的速度变慢&#xff0c;等待时间 1-2 min …

彼得林奇的“成长型价值股“定义

彼得林奇的“成长型价值股”定义 关键词:彼得林奇、成长型价值股、股票投资、价值分析、成长潜力 摘要:本文深入探讨了彼得林奇所提出的“成长型价值股”定义。通过对其背景的介绍,详细阐述了成长型价值股的核心概念、核心算法原理、数学模型等内容。结合实际案例,分析了如…

【课程设计/毕业设计】基于python深度学习训练鲜花识别基于python训练鲜花识别

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

authfwcfg.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

python_flask求职招聘岗位信息分析系统的设计与实现_xz0yin70可视化大屏

目录摘要项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理摘要 Python Flask求职招聘岗位信息分析系统基于Flask框架开发&#xff0c;整合了数据爬取、清洗、存储、分析及可视化功能&#xff0c;旨在为求职者、招聘方及人力资源管理者提供数据驱动…

AuthFWGP.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

深度学习毕设选题推荐:基于人工智能的玉米粒品质检测基于深度学习的玉米粒品质检测

博主介绍&#xff1a;✌️码农一枚 &#xff0c;专注于大学生项目实战开发、讲解和毕业&#x1f6a2;文撰写修改等。全栈领域优质创作者&#xff0c;博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围&#xff1a;&am…

学长亲荐10个一键生成论文工具,专科生轻松搞定毕业论文!

学长亲荐10个一键生成论文工具&#xff0c;专科生轻松搞定毕业论文&#xff01; 论文写作的救星&#xff0c;AI 工具正在改变你的学习方式 在专科生的毕业论文写作过程中&#xff0c;常常会遇到选题困难、资料搜集繁杂、逻辑梳理不清等问题。而随着 AI 技术的不断成熟&#xff…

AuxiliaryDisplayApi.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

大模型面试题48:从白话到进阶详解LoRA 中 r 和 alpha 参数

这两个参数是 LoRA 最核心的超参数&#xff0c;r 决定了 LoRA 的「信息容量上限」&#xff0c;alpha 决定了 LoRA 的「更新强度」&#xff0c;两者配合才能让 LoRA 既轻量化又有好效果。 一、白话入门&#xff1a;用「水杯倒水」理解两个参数 我们继续沿用之前的「汽车改装」比…

python_flask汽车销售推荐交流系统小程序_61iro583

目录系统概述核心功能技术实现应用价值项目开发技术介绍PHP核心代码部分展示系统结论源码获取/同行可拿货,招校园代理系统概述 Python Flask汽车销售推荐交流系统小程序是一款基于Flask框架开发的轻量级Web应用&#xff0c;旨在为用户提供汽车销售信息推荐和在线交流平台。系统…

AuxiliaryDisplayCpl.dll文件丢失找不到 打不开问题 免费下载方法分享

在使用电脑系统时经常会出现丢失找不到某些文件的情况&#xff0c;由于很多常用软件都是采用 Microsoft Visual Studio 编写的&#xff0c;所以这类软件的运行需要依赖微软Visual C运行库&#xff0c;比如像 QQ、迅雷、Adobe 软件等等&#xff0c;如果没有安装VC运行库或者安装…

云平台一键部署【FunAudioLLM/Fun-ASR-Nano】音乐背景下歌词识别

Fun-ASR 是通义实验室推出的端到端语音识别大模型&#xff0c;是基于数千万小时真实语音数据训练而成&#xff0c;具备强大的上下文理解能力与行业适应性&#xff0c;支持低延迟实时听写&#xff0c; 并且覆盖 31 个语种。 在教育、金融等垂直领域表现出色&#xff0c;能准确识…

告别GPT-4o付费焦虑,Moonshot视觉模型带你飞!

一、引言 在当今数字化时代,图文分析与报告生成的需求日益增长,无论是在商业领域进行数据可视化分析,还是在科研领域处理实验图像数据,又或是在教育领域制作教学资料,都离不开高效准确的图文分析与报告生成工具。GPT-4o 凭借其强大的多模态能力,在图文分析与报告生成方面…

基于STM32的智能鞋柜设计

基于STM32的智能鞋柜设计摘要随着人们生活水平的不断提高&#xff0c;对个人卫生和健康的要求也日益增强。鞋柜作为家庭日常生活中不可或缺的家具&#xff0c;其功能已从简单的储物空间逐渐向智能化、健康化方向发展。传统的鞋柜仅提供基本的收纳功能&#xff0c;无法有效解决鞋…