专栏名称: 芋道源码
纯 Java 源码分享公众号,目前有「Dubbo」「SpringCloud」「Java 并发」「RocketMQ」「Sharding-JDBC」「MyCAT」「Elastic-Job」「SkyWalking」「Spring」等等
目录
相关文章推荐
芋道源码  ·  动态上传jar包热部署,看完还不会吗? ·  昨天  
芋道源码  ·  某公司新招了个牛逼的架构师后... ·  昨天  
芋道源码  ·  SpringBoot + ... ·  4 天前  
芋道源码  ·  世界上运行时间最长的服务器是多久? ·  4 天前  
51好读  ›  专栏  ›  芋道源码

IDEA+Docker 远程一键部署项目,真香!

芋道源码  · 公众号  · Java  · 2024-10-27 17:42

正文

👉 这是一个或许对你有用的社群

🐱 一对一交流/面试小册/简历优化/求职解惑,欢迎加入芋道快速开发平台知识星球。下面是星球提供的部分资料: 

👉这是一个或许对你有用的开源项目

国产 Star 破 10w+ 的开源项目,前端包括管理后台 + 微信小程序,后端支持单体和微服务架构。

功能涵盖 RBAC 权限、SaaS 多租户、数据权限、商城、支付、工作流、大屏报表、微信公众号、CRM 等等功能:

  • Boot 仓库:https://gitee.com/zhijiantianya/ruoyi-vue-pro
  • Cloud 仓库:https://gitee.com/zhijiantianya/yudao-cloud
  • 视频教程:https://doc.iocoder.cn
【国内首批】支持 JDK 21 + SpringBoot 3.2.2、JDK 8 + Spring Boot 2.7.18 双版本 

来源:juejin.cn/post/
7389168680747335717


你不会还在苦哈哈的手动打出jar包,上传jar包,java -jar来部署项目吧?我不允许你不知道如何使用IDEA+Docker一键部署项目!

一.引语

本文将学习使用IDEA+Docker远程一键部署SpringBoot项目,对比上传jar包到服务器,再通过java指令运行项目,极大程度的提高了项目部署效率。可谓不用不知道,一用再也停不下来~

为了后续学习方便,需要提前进行如下和教程无关的最基本的准备:

  • 在服务器上安装Docker,了解简单DockerFile文件编写,也可以选择让GPT生成。
  • 在本地电脑安装 IntelliJ IDEA 开发工具。
  • 能正常访问接口的SpringBoot项目,打包出jar包,此处用如下简单Demo进行演示。

至此,准备工作已完成~

基于 Spring Boot + MyBatis Plus + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/ruoyi-vue-pro
  • 视频教程:https://doc.iocoder.cn/video/

二.Jar包部署vs远程部署

Jar包部署

正常使用Jar包部署可以先在服务器上安装Java开发环境,之后将本地打包出来的jar包上传到服务器上,最后通过java -jar指令启动项目即可。

使用这种方式进行部署每次需要重新部署项目都要 先停止项目 -> 重新上传jar包到服务器 -> 启动项目 ,相对来说还是比较麻烦的,而且想实时查看日志也不是很方便。

IDEA+Docker远程一键部署

使用这种方式进行好一系列配置后,每次需要重新部署项目仅需点击绿色小三角(一步)即可自动完成项目部署:

同时还可以非常便捷的查看项目实时运行日志:

是不是非常方便?接下来学习一下如何进行配置~~~

基于 Spring Cloud Alibaba + Gateway + Nacos + RocketMQ + Vue & Element 实现的后台管理系统 + 用户小程序,支持 RBAC 动态权限、多租户、数据权限、工作流、三方登录、支付、短信、商城等功能

  • 项目地址:https://github.com/YunaiV/yudao-cloud
  • 视频教程:https://doc.iocoder.cn/video/

三.配置远程部署

1) 进行ssh配置

由于需要连接服务器进行远程部署,因此必须先进行ssh配置(File->Settings->搜索ssh)。

为了避免不必要的麻烦,推荐在Authentication type中选择Key pair进行连接,嫌麻烦也可以直接通过Password进行连接,等后续出现连接问题再切换成key pair连接方式。

使用Key pair进行连接过程比较繁琐,可参考博客:

https://blog.csdn.net/cnds123321/article/details/121947896

2) 连接Docker守护进程

接下来需要配置连接Docker守护进程(File->Settings->搜索docker)来操作Docker。

Docker daemon 补充说明:

Docker daemon(或称为 Docker 守护进程)是运行在宿主机上的一个持续运行的服务,负责管理 Docker 容器的创建、运行、停止等操作。它是 Docker 引擎的核心组件之一。

Docker daemon 有以下几个主要的作用:

  • 容器管理: Docker daemon 负责管理容器的生命周期,包括创建、运行、停止、删除等操作。它接收来自 Docker 客户端的命令,并根据命令进行相应的操作,例如根据指定的镜像创建容器,启动容器的进程等。
  • 镜像管理: Docker daemon 负责管理 Docker 镜像,它可以从 Docker Hub 或其他镜像仓库中下载镜像,并根据需要构建、打包、发布和分发镜像。它还负责缓存镜像,以便在创建容器时可以快速获取需要的镜像。
  • 网络管理: Docker daemon 负责管理容器的网络。它将为每个容器分配一个唯一的 IP 地址,并为容器提供网络连接,使得容器可以与其他容器或宿主机进行通信。
  • 存储管理: Docker daemon 负责管理容器的存储,包括容器的文件系统、数据卷和容器的持久化存储等。它可以根据指定的存储驱动程序将容器的数据保存在宿主机上的文件系统中,并为容器提供数据卷,以便对容器的存储进行管理。

Docker daemon 是 Docker 引擎运行在宿主机上的核心组件,它负责处理容器管理、镜像管理、网络管理和存储管理等任务,提供了一个方便、高效、可靠的容器化平台。

3) 编写Dockerfile文件

紧接着需要编写一个用于定义和构建 Docker 镜像的文本文件,针对本教程提供如下文件进行参考,请根据自身项目情况进行调整:

# 基础镜像
FROM openjdk:17
# 复制主机jar包至镜像内,复制的目录需放置在 Dockerfile 文件同级目录下
ADD target/demo-0.0.1-SNAPSHOT.jar app.jar
# 容器启动执行命令
ENTRYPOINT ["java","-jar""/app.jar" , "--spring.profiles.active=prod"]
# 对外暴露的端口号
EXPOSE  8080

复制主机jar包至镜像内,复制的目录需放置在 Dockerfile 文件同级目录下,例如:

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

4) 配置远程部署

  • 前往创建配置
  • 创建配置
  • 根据下述步骤填写之前所进行的一系列配置即可
  • 至此,所有配置都已完成,最后尝试一下本文开始所述”点击绿色小三角(一步)即可自动完成项目部署“

正在上传文件~~~

已经跑起来了~~~

在浏览器请求成功显示了响应结果,控制台也能看到日志输出啦~~~

至此本文教程结束。首次配置或许确实比较繁琐,但后续部署项目是真的方便,赶紧动手试一下吧~


欢迎加入我的知识星球,全面提升技术能力。

👉 加入方式,长按”或“扫描”下方二维码噢

星球的内容包括:项目实战、面试招聘、源码解析、学习路线。

文章有帮助的话,在看,转发吧。

谢谢支持哟 (*^__^*)