当前位置: 首页 > article >正文

IDEA 集成 Docker 插件一键部署 SpringBoot 应用

目录

  • 前言
  • IDEA 安装 Docker 插件
  • 配置 Docker 远程服务器
  • 编写 DockerFile
  • SpringBoot 部署配置
  • SpringBoot 项目部署
  • 结语

前言

随着容器化技术的崛起,Docker成为了现代软件开发的关键工具。在Java开发中,Spring Boot是一款备受青睐的框架,然而,将其快速部署到Docker容器中一直是个挑战。本文将介绍一种简便的方法,通过IDEA集成Docker插件,实现Spring Boot应用的一键部署,为开发者提供更便捷的开发和部署体验。

本文项目源码:youlai-boot

IDEA 安装 Docker 插件

IDEA菜单栏File → Settings → Plugins 插件市场搜索 Docker 安装并重启IDEA

在这里插入图片描述

配置 Docker 远程服务器

IDEA菜单栏File → Settings → Build,Execution,Deployment → Docker 配置远程服务器的连接信息

第4步添加远程服务器通过 SSH 方式连接,只要输入目标服务器主机名、用户名和密码,测试连接成功即可。

编写 DockerFile

在项目根目录下创建一个名为 Dockerfile 的文件,以构建 Docker 镜像。

以 youlai-boot 项目为例,以下是一个针对 Spring Boot 单体应用的配置示例:

# 基础镜像
FROM openjdk:17-jdk-alpine

# 维护者信息
MAINTAINER youlai <youlaitech@163.com>

# 设置国内镜像源(中国科技大学镜像源),修改容器时区(alpine镜像需安装tzdata来设置时区),安装字体库(验证码)
RUN echo -e https://mirrors.ustc.edu.cn/alpine/v3.7/main/ > /etc/apk/repositories  \
    && apk --no-cache add tzdata && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && echo "Asia/Shanghai" > /etc/timezone \
    && apk --no-cache add ttf-dejavu fontconfig 

# 在运行时自动挂载 /tmp 目录为匿名卷,提高可移植性
VOLUME /tmp

# 将构建的 Spring Boot 可执行 JAR 复制到容器中,重命名为 app.jar
ADD target/youlai-boot.jar app.jar

# 指定容器启动时执行的命令
CMD java \
    -Djava.security.egd=file:/dev/./urandom \
    -jar /app.jar

# 暴露容器的端口
EXPOSE 8989

在这里插入图片描述

SpringBoot 部署配置

IDEA 顶部打开 Edit Configurations 打开 Run/Debug Configurations 界面

在这里插入图片描述

选择 Dockerfile

[外链图片转存中…(img-MbyquFc0-1700241589122)]

项目部署配置

image-20231118003354547

SpringBoot 项目部署

部署配置完成之后,选择配置点击启动将会自动完成: 项目编译 + 打包 + 制作Docker 镜像 + 推送镜像至远程服务器 + 启动容器应用

在这里插入图片描述

启动成功

image-20231118011231744

访问 http://ip:port/doc.html 接口文档测试部署是否成功。

image-20231118011519269

结语

容器化技术的普及为开发者提供了更高效、一致的部署方式。通过本文介绍的方法,我们期望能帮助开发者更轻松地在IDEA中实现Spring Boot应用的Docker化部署,为现代软件开发提供更便捷的解决方案。


http://www.kler.cn/a/134602.html

相关文章:

  • 知识图谱6:neo4j查询语句
  • MySQL45讲 第二十讲 幻读是什么,幻读有什么问题?
  • 使用 start-local 脚本在本地运行 Elasticsearch
  • 轻松上手:使用Docker部署Java服务
  • 一文详解java的数据类型
  • const限定符-C语言中指针的“可变与不可变”法则
  • 解决小程序路由超过10层限制
  • 面试题c/c++--语言基础
  • SDL2 播放音频数据(PCM)
  • TP_Link WR886N 硬改闪存16M内存64M,刷入openwrt
  • JSP 四大域对象
  • 分类预测 | Matlab实现基于PSO-SDAE粒子群优化算法优化堆叠去噪自编码器的数据分类预测
  • 【开源】基于JAVA的超市自助付款系统
  • NewStarCTF2023 Reverse方向Week3 ez_chal WP
  • Unity开发之C#基础-集合(字典)(Dictionary)
  • 【C++】​——多态性与模板(其一)
  • 前端 webpack 面试题
  • nginx学习(3)Nginx 负载均衡
  • 2023年中国地产SaaS分类、产业链及市场规模分析[图]
  • 在Go编程中调用外部命令的几种场景
  • 大学生如何免费认证,下载,安装MATLAB
  • 2023年中国稀土精密加工分类、市场规模及发展趋势分析[图]
  • 【SpringBoot3+Vue3】四【基础篇】-前端(vue基础)
  • 2023年中国全自动烘干机产业链、产能及发展趋势分析[图]
  • webpack 中,filename 和 chunkFilename 的区别
  • 全屋智能:鱼很大,但水更深