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

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

目录

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

前言

随着容器化技术的崛起,Docker成为了现代软件开发的关键工具。在Java开发中,Spring Boot是一款备受青睐的框架,然而,将其快速部署到Docker容器中一直是个挑战。本文将介绍一种简便的方法,通过IDEA集成Docker插件,实现Spring 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 Linux 的软件包源为国内镜像源(这里使用了中国科技大学的镜像源)
RUN echo -e https://mirrors.ustc.edu.cn/alpine/v3.7/main/ > /etc/apk/repositories# 时区修改(alpine镜像需要安装tzdata包修改时区)
RUN apk --no-cache add tzdata && \cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime && \echo "Asia/Shanghai" > /etc/timezone# 安装 DejaVu 字体和 fontconfig(验证码)
RUN 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.lryc.cn/news/235015.html

相关文章:

  • IDEA无法查看源码是.class,而不是.java解决方案?
  • 机器视觉系统选型-定光照强度
  • ChatGLM3-6B:新一代开源双语对话语言模型,流畅对话与低部署门槛再升级
  • StoneDB顺利通过中科院软件所 2023 开源之夏 结项审核
  • Linux本地docker一键部署traefik+内网穿透工具实现远程访问Web UI管理界面
  • SpringCloud FeignClient声明式服务调用采坑记录(A调用服务B/C,B/C重启后必须重启A后才能成功调用配置项)
  • 安装银河麒麟linux系统docker(docker-compose)环境,注意事项(一定能解决,有环境资源)
  • BUG:编写springboot单元测试,自动注入实体类报空指针异常
  • 深度解析 InterpretML:打开机器学习模型的黑箱
  • 数据结构初阶leetcodeOJ题(二)
  • 若依框架数据源切换为pg库
  • java 访问sqlserver 和 此驱动程序不支持jre1.8错误
  • C/C++字符判断 2021年12月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • Kotlin语言实现单击任意TextVIew切换一个新页面,并且实现颜色变换
  • Flume学习笔记(4)—— Flume数据流监控
  • 使用webhook发送企业微信消息
  • C语言的由来与发展历程
  • python django 小程序博客源码
  • Android并发编程与多线程
  • ChatGPT简介及基本概念
  • 学习模拟简明教程【Learning to simulate】
  • 电子学会C/C++编程等级考试2021年12月(一级)真题解析
  • 数字游戏
  • k8s pod 处于Terminating的原因分析和解决处理——筑梦之路
  • 西南科技大学814考研二
  • oracle21c报错 【ORA-65096: 公用用户名或角色名无效】
  • C++ 递增/递减运算符重载
  • Android 13.0 无源码app增加授予相关权限
  • CI/CD相关概念学习
  • 一、认识STM32