⭐⭐⭐ Spring Boot 项目实战 ⭐⭐⭐ Spring Cloud 项目实战
《Dubbo 实现原理与源码解析 —— 精品合集》 《Netty 实现原理与源码解析 —— 精品合集》
《Spring 实现原理与源码解析 —— 精品合集》 《MyBatis 实现原理与源码解析 —— 精品合集》
《Spring MVC 实现原理与源码解析 —— 精品合集》 《数据库实体设计合集》
《Spring Boot 实现原理与源码解析 —— 精品合集》 《Java 面试题 + Java 学习指南》

摘要: 原创出处 juejin.cn/post/7389168680747335717 「观止study」欢迎转载,保留摘要,谢谢!


🙂🙂🙂关注微信公众号:【芋道源码】有福利:

  1. RocketMQ / MyCAT / Sharding-JDBC 所有源码分析文章列表
  2. RocketMQ / MyCAT / Sharding-JDBC 中文注释源码 GitHub 地址
  3. 您对于源码的疑问每条留言都将得到认真回复。甚至不知道如何读源码也可以请教噢。
  4. 新的源码解析文章实时收到通知。每周更新一篇左右。
  5. 认真的源码交流微信群。

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

一.引语

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

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

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

至此,准备工作已完成~

二.Jar包部署vs远程部署

Jar包部署

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

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

IDEA+Docker远程一键部署

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

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

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


# 三.配置远程部署

### 1) 进行ssh配置

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

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

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

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

![](https://static.iocoder.cn/a1eb819b9df8ddbae6deb14678fd7113.jpg)

### 2) 连接Docker守护进程

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

![](https://static.iocoder.cn/204706318a5b4ea6379f6a5ca577f4a2.jpg)

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 镜像的文本文件,针对本教程提供如下文件进行参考,请根据自身项目情况进行调整:

```Bash
# 基础镜像
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 文件同级目录下,例如:

![](https://static.iocoder.cn/dee118d188151f274f402029b21492cf.jpg)

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

### 4) 配置远程部署

- **前往创建配置**

![](https://static.iocoder.cn/dc5344b0836adddc86adadb777b31687.jpg)

- **创建配置**

![](https://static.iocoder.cn/8e795a8f6b245ecd1343577594c181ff.jpg)

- **根据下述步骤填写之前所进行的一系列配置即可**

![](https://static.iocoder.cn/b2caec7f2a5eba91ed998ac52cbc5fe9.jpg)

- **至此,所有配置都已完成,最后尝试一下本文开始所述”点击绿色小三角(一步)即可自动完成项目部署“**

正在上传文件

已经跑起来了


![](https://static.iocoder.cn/17871c34ee412261831062cef28678b2.jpg)

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

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

文章目录
  1. 1. 一.引语
  2. 2. 二.Jar包部署vs远程部署
    1. 2.0.1. Jar包部署
    2. 2.0.2. IDEA+Docker远程一键部署