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

news2025/1/5 11:12:57
文章目录
  • 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.coloradmin.cn/o/2270048.html

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

相关文章

UE5材质节点Camera Vector/Reflection Vector

Camera Vector相机向量&#xff0c;输出像素到相机的方向&#xff0c;结果归一化 会随着相机移动而改变 Reflection Vector 反射向量&#xff0c;物体表面法线反射到相机的方向&#xff0c;x和y和camera vector相反 配合hdr使用

python实现自动登录12306抢票 -- selenium

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 python实现自动登录12306抢票 -- selenium 前言其实网上也出现了很多12306的代码&#xff0c;但是都不是最新的&#xff0c;我也是从网上找别人的帖子&#xff0c;看B站视频&…

鸿蒙1.2:第一个应用

1、create Project&#xff0c;选择Empty Activity 2、配置项目 project name 为项目名称&#xff0c;建议使用驼峰型命名 Bundle name 为项目包名 Save location 为保存位置 Module name 为模块名称&#xff0c;即运行时需要选择的模块名称&#xff0c;见下图 查看模块名称&…

Docker安装(Docker Engine安装)

一、Docker Engine和Desktop区别 Docker Engine 核心组件&#xff1a;Docker Engine是Docker的核心运行时引擎&#xff0c;负责构建、运行和管理容器。它包括守护进程&#xff08;dockerd&#xff09;、API和命令行工具客户端&#xff08;docker&#xff09;。适用环境&#…

Ceph 手动部署(CentOS9)

#Ceph手动部署、CentOS9、squid版本、数字版本19.2.0 #部署服务:块、对象、文件 一、部署前规划 1、兼容性确认 2、资源规划 节点类型节点名称操作系统CPU/内存硬盘网络组件安装集群节点CephAdm01CentOS94U/8GOS:40G,OSD:2*100GIP1:192.169.0.9(管理&集群),IP2:…

springboot-启动流程

by shihang.mai 1. 启动流程图 查看springboot2.3.7源码后绘制下图。 springboot启动流程图 main启动&#xff0c;new SpringApplication()构造方法里面 判断当前应用程序类型reactive、servlet、none获取所有的ApplicationListener对应的对象获取所有的ApplicationContextInit…

Flutter:打包apk,详细图文介绍(一)

困扰了一天&#xff0c;终于能正常打包apk安装了&#xff0c;记录下打包的流程。建议参考我这篇文章时&#xff0c;同时看下官网的构建说明。 官网构建并发布 Android 应用详情 1、AS创建Flutter项目 2、cmd执行命令 生成一个sunluyi.jks的文件&#xff0c;可以自行把sunluyi替…

linux下安装tun模块详细教程

原本是要看tcp/ip协议栈&#xff0c;找到了https://github.com/chobits/tapip这个。然后需要支持tun&#xff0c;完了开始安装。 TUN/TAP是一个虚拟网络设备&#xff0c;用于实现用户态程序和内核网络协议栈之间的数据交互。 1、安装环境 我的系统是ubuntu16.04 VMWare虚拟机&a…

Ajax数据爬取

有时我们用requests 抓取页面得到的结果&#xff0c;可能和在浏览器中看到的不一样:在浏览器中可以看到正常显示的页面数据&#xff0c;而使用requests 得到的结果中并没有这些数据。这是因为 requests 获取的都是原始 HTML 文档&#xff0c;而浏览器中的页面是JavaScript 处理…

Docker 安装与配置 Nginx

摘要 1、本文全面介绍了如何在 Docker 环境中安装和配置 Nginx 容器。 2、文中详细解释了如何设置 HTTPS 安全连接及配置 Nginx 以实现前后端分离的代理服务。 2、同时&#xff0c;探讨了通过 IP 和域名两种方式访问 Nginx 服务的具体配置方法 3、此外&#xff0c;文章还涵…

SpringCloud微服务架构

文章目录 认识微服务&#xff1a;SpringCloud 服务拆分及远程调用实现夸远程服务调用使用RestTemplateEureka注册中心 搭建EruekaServer注册服务服务发现 Ribbon负载均衡 修改负载均衡规则解饿加载 Nacos注册中心&#xff08;nacos一部分功能&#xff09; 服务注册到nacosnacos…

WireShark4.4.2浏览器网络调试指南:TCP传输包分析(七)

概述 在使用Wireshark进行网络分析时&#xff0c;理解每一个数据包的组成部分对于网络分析非常重要。特别是在TCP协议中的“三次握手”过程中&#xff0c;每个数据包会包含多个层次的信息&#xff0c;从帧信息到TCP协议的详细内容。下面是对TCP握手过程中第一个SYN数据包的详细…

kafka使用常见问题

连接不上kafka,报下边的错 org.apache.kafka.common.KafkaException: Producer is closed forcefully.at org.apache.kafka.clients.producer.internals.RecordAccumulator.abortBatches(RecordAccumulator.java:760) [kafka-clients-3.0.2.jar:na]at org.apache.kafka.client…

用uniapp写一个播放视频首页页面代码

效果如下图所示 首页有导航栏&#xff0c;搜索框&#xff0c;和视频列表&#xff0c; 导航栏如下图 搜索框如下图 视频列表如下图 文件目录 视频首页页面代码如下 <template> <view class"video-home"> <!-- 搜索栏 --> <view class…

深入浅出:从入门到精通大模型Prompt、SFT、RAG、Infer、Deploy、Agent

阅读原文 渐入佳境 我们都知道&#xff0c;通过编写一个提示词&#xff08;prompt&#xff09;&#xff0c;我们可以引导大模型生成回答&#xff0c;从而开启愉快的人工智能对话&#xff0c;比如让模型介绍一下卡皮巴拉。上边简图描述了这个过程&#xff0c;我们拆成两部分 pr…

Unity-Mirror网络框架-从入门到精通之Basic示例

文章目录 前言Basic示例场景元素预制体元素代码逻辑BasicNetManagerPlayer逻辑SyncVars属性Server逻辑Client逻辑 PlayerUI逻辑 最后 前言 在现代游戏开发中&#xff0c;网络功能日益成为提升游戏体验的关键组成部分。Mirror是一个用于Unity的开源网络框架&#xff0c;专为多人…

【新方法】通过清华镜像源加速 PyTorch GPU 2.5安装及 CUDA 版本选择指南

下面详细介绍所提到的两条命令&#xff0c;它们的作用及如何在你的 Python 环境中加速 PyTorch 等库的安装。 1. 设置清华镜像源 pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple这条命令的作用是将 pip &#xff08;Python 的包管理工具&#xf…

自动化测试-Pytest测试

目录 pytest简介 基本测试实例 编写测试文件 执行测试 pytest运行时参数 mark标记 Fixture pytest插件 Allure测试报告 测试步骤 pytest简介 Pytest‌是一个非常流行的Python测试框架&#xff0c;它支持简单的单元测试和复杂的功能测试&#xff0c;具有易于上手、功…

Java-33 深入浅出 Spring - FactoryBean 和 BeanFactory BeanPostProcessor

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 大数据篇正在更新&#xff01;https://blog.csdn.net/w776341482/category_12713819.html 目前已经更新到了&#xff1a; MyBatis&#xff…

MySQL 服务器简介

通常所说的 MySQL 服务器指的是mysqld程序&#xff0c;当运⾏mysqld后对外提供MySQL 服务&#xff0c;这个专题的内容涵盖了以下关于MySQL 服务器以及相关配置的内容&#xff0c;包括&#xff1a; 服务器⽀持的启动选项。可以在命令⾏和配置⽂件中指定这些选项。 服务器系统变…