当前位置:

首页 > 编程开发 > 使用idea部署springboot项目到docker实践

使用idea部署springboot项目到docker实践

今天咱们来聊聊一个非常实用的开发场景:如何利用IntelliJ IDEA内置的Docker插件,将SpringBoot项目一键部署到远程服务器的Docker容器中。整个过程清晰明了,跟着步骤走,你也能轻松搞定。 相关Linux的准备工作 在开始IDEA端的操作之前,服务器端需要先打好基础。这就像盖房

本文目录

    今天咱们来聊聊一个非常实用的开发场景:如何利用IntelliJ IDEA内置的Docker插件,将SpringBoot项目一键部署到远程服务器的Docker容器中。整个过程清晰明了,跟着步骤走,你也能轻松搞定。

    相关Linux的准备工作

    在开始IDEA端的操作之前,服务器端需要先打好基础。这就像盖房子,地基得先稳。

    1、配置docker远程连接端口

    首先,需要让Docker守护进程监听一个TCP端口,以便IDEA能够远程连接。编辑服务器上的docker.service文件:

    vi /usr/lib/systemd/system/docker.service

    找到ExecStart这一行,关键来了:根据你的CentOS版本,添加方式略有不同。

    对于CentOS 7及以上版本,需要在指定位置添加 -H tcp://0.0.0.0:2375 参数,具体位置可参考下图:

    使用idea部署springboot项目到docker实践

    如果版本是CentOS 7以下,则直接在ExecStart这一行的末尾添加即可。添加后的完整代码通常如下:

    ExecStart=/usr/bin/dockerd -H fd:// -H tcp://0.0.0.0:2375

    2、保存修改退出,重启docker

    修改完成后,别忘记让配置生效。依次执行以下两条命令:

    systemctl daemon-reload
    service docker restart

    3、测试远程连接是否正常

    重启后,先在服务器本地测试一下端口是否已成功监听:

    curl http://localhost:2375/version

    如果返回一大段包含Docker版本信息的JSON数据,那就说明本地连接配置成功了。类似下图所示:

    使用idea部署springboot项目到docker实践

    4、开放端口

    本地通了还不够,需要让防火墙放行这个端口,IDEA才能从外部连进来。

    如果你用的是阿里云、腾讯云等云服务器,通常需要登录云平台的控制台,在安全组规则中添加入站规则,允许TCP协议的2375端口。

    使用idea部署springboot项目到docker实践

    如果是在本地虚拟机,可以使用firewalld命令开放端口:

    firewall-cmd --zone=public --add-port=2375/tcp --permanent
    firewall-cmd --reload

    最后,用你开发机的浏览器访问 http://你的Linux主机IP:2375/version,如果能得到同样的版本信息,恭喜你,远程连接通道已经打通了。

    5、在docker里装MySQL数据库

    (如果服务器上已有可用的MySQL,此步可跳过)

    很多SpringBoot项目都需要数据库,这里以MySQL 5.7为例,快速在Docker中部署一个:

    #拉取MySQL镜像
    docker pull mysql:5.7
    #使用镜像开启服务(注意将PASSWORD后面的`123456`替换为你自己的root密码)
    docker run -d -p 3308:3306 --name mysql5.7 -e MYSQL_ROOT_PASSWORD=123456 mysql:5.7

    执行后,使用 docker ps 命令查看容器是否已启动:

    使用idea部署springboot项目到docker实践

    这里有个关键点:我们将容器内的3306端口映射到了宿主机的3308端口。所以,后续用数据库连接工具(如Na vicat)连接时,端口要填3308。

    6、在docker里装redis

    (同样,如果已有可跳过)

    缓存服务Redis的安装也非常简单:

    #拉取redis镜像(默认最新版)
    docker pull redis
    #启动redis容器
    #--restart=always 确保容器随Docker服务自动重启
    #redis-server --appendonly yes 开启持久化
    #--requirepass "123456" 设置连接密码
    docker run --name redis -p 6379:6379 -d --restart=always redis redis-server --appendonly yes --requirepass "123456"

    同样,用 docker ps 确认Redis容器运行状态:

    使用idea部署springboot项目到docker实践

    Redis容器端口映射是标准的6379到6379,连接时使用6379端口即可。

    相关idea的操作

    服务器端准备就绪,现在把舞台交给IDEA。

    1、下载docker插件

    确保你的IDEA安装了Docker插件。路径是:File -> Settings -> Plugins,在市场中搜索“Docker”并安装。

    使用idea部署springboot项目到docker实践

    2、使用docker插件连接到Linux上的docker容器

    插件安装好后,需要配置连接。打开 File -> Settings -> Build, Execution, Deployment -> Docker。

    点击“+”号,添加一个“TCP socket”类型的连接,地址填入 tcp://你的Linux主机IP:2375。连接成功后,下方会显示“Connection successful”。

    使用idea部署springboot项目到docker实践

    此时,IDEA界面底部的“Services”或“Docker”工具窗口,就能看到远程服务器上的所有镜像和容器了,非常直观。

    使用idea部署springboot项目到docker实践

    3、在项目中添加一个docker文件夹并创建Dockerfile文件

    在SpringBoot项目的 src/main 目录下,新建一个名为 docker 的文件夹,并在其中创建 Dockerfile 文件。

    使用idea部署springboot项目到docker实践

    Dockerfile 是构建镜像的蓝图,内容通常如下:

    #指定基础镜像
    FROM ja va:8
    #挂载临时卷
    VOLUME /tmp
    #将jar包复制到镜像内,并重命名
    ADD springboot_project.jar app.jar
    #容器启动时执行的命令
    ENTRYPOINT ["ja va","-Dja va.security.egd=file:/dev/./urandom","-jar","/app.jar"]

    一个小建议:可以提前在Linux服务器上执行 docker pull ja va:8 拉取基础镜像,避免后续在IDEA中构建时现拉,节省等待时间。

    4、在pom.xml里添加docker相关配置

    为了让Ma ven打包时能处理Docker相关文件,需要在pom.xml中配置插件:

    
        com.spotify
        docker-ma ven-plugin
        1.0.0
        
            src/main/docker
            
                
                    /
                    ${project.build.directory}
                    ${project.build.finalName}.jar
                
            
        
    
    
        ma ven-antrun-plugin
        
        
            
                package
                
                    
                        
                    
                
                
                    run
                
            
        
    

    5、添加一个docker配置

    接下来,在IDEA中创建一个Docker运行配置。点击运行配置下拉框,选择“Edit Configurations...”,然后添加一个“Docker”配置。

    使用idea部署springboot项目到docker实践

    配置项虽然多,但理解后很简单:

    使用idea部署springboot项目到docker实践

    • Name:给这个部署配置起个名字,比如你的项目名。
    • Server:选择刚才配置好的远程Docker连接。
    • Dockerfile:指定项目中的Dockerfile文件路径。
    • Image Tag:给将要构建的镜像打上标签,如 myapp:latest。
    • Container name:指定容器运行时的名称。
    • Bind ports:端口映射,格式为 [宿主机端口]:[容器内部端口]。例如 8080:8080。
    • Bind mounts:目录挂载,用于持久化数据,格式为 [宿主机目录]:[容器内部目录]。
    • Command line options:高级参数。例如,如果你的应用容器需要连接上面的MySQL容器,可以在这里配置 --link mysql5.7:db。

    6、将项目打成jar包

    在IDEA右侧的Ma ven工具窗口中,执行 package 命令。打包成功后,不仅target目录下会有jar包,配置的docker目录下也会同步一份。

    使用idea部署springboot项目到docker实践

    7、运行docker来build镜像

    万事俱备。现在,直接运行刚才创建好的Docker配置。

    IDEA会执行一系列操作:首先,基于Dockerfile构建Docker镜像;然后,将镜像推送到远程服务器;最后,在服务器上创建并启动一个容器。整个过程可以在IDEA的“Run”或“Services”窗口看到实时日志。

    使用idea部署springboot项目到docker实践

    使用idea部署springboot项目到docker实践

    8、用浏览器访问项目看效果

    容器启动成功后,打开浏览器,访问 http://你的Linux主机IP:映射的端口/项目路径。如果看到你的应用界面,比如登录页,那就大功告成了!

    使用idea部署springboot项目到docker实践

    使用idea部署springboot项目到docker实践

    部署期间遇到的问题

    实践过程中难免会遇到坑。比如,有一次部署成功后,登录页面的验证码图片死活显示不出来,查看日志发现报空指针异常。

    使用idea部署springboot项目到docker实践

    产生原因

    排查后发现,问题出在Dockerfile的基础镜像上。最初为了追求镜像体积小,使用了 openjdk:8-jdk-alpine。这个Alpine Linux版本的JDK是精简版的,缺少了一些标准的库文件(比如字体相关库),导致应用内某些功能无法正常工作,从而抛出空指针。

    解决方案

    将基础镜像换成更完整的 ja va:8。虽然镜像体积会大一些,但兼容性更好,避免了因基础环境缺失导致的诡异问题。

    使用idea部署springboot项目到docker实践

    总结

    通过IDEA Docker插件进行部署,将本地开发与远程容器化部署无缝衔接,大大提升了效率。整个过程从服务器环境准备、IDEA插件配置,到项目打包、镜像构建与运行,形成了一条清晰的流水线。希望这份详细的记录能为大家提供一个可靠的参考,在实践时少走弯路。

    您可能感兴趣的文章:

    • 如何用IDEA+Docker一键部署项目SpringBoot项目
    • IDEA 集成 Docker 插件一键部署 SpringBoot 应用小结
    • idea快速实现将SpringBoot项目打包Docker镜像并部署
    • IDEA通过Docker插件部署SpringBoot项目的过程详解
    • idea整合docker快速部署springboot应用的详细过程
    • IDEA集成docker部署springboot项目的全过程
    • IDEA2021.2配置docker如何将springboot项目打成镜像一键发布部署
    本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系bd@zhengruan.com
    作者最新文章
    编程开发
    相关文章 更多
    SpringBoot项目Docker部署全流程详解
    SpringBoot项目Docker部署全流程详解

    SpringBoot项目Docker部署时,需要先修改配置文件以适配生产环境,然后打包JAR并且编写Dockerfile设置时区与JVM参数。容器启动后,Quartz定时任务常常因为缺少数据库表而报错,此时需要关闭外键检查后手动建表,然后再重启容器即可正常运行。

    opencode安装skills教程及本地配置方法
    opencode安装skills教程及本地配置方法

    遇到OpenCode Skills无法加载或配置无效?本文手把手教你完成Skills的安装、环境变量设置及本地调试,避开常见坑点,让AI助手更懂你的代码习惯。

    如何开启Visual Studio2022实时代码分析警告提示
    如何开启Visual Studio2022实时代码分析警告提示

    解决 Visual Studio 2022 编辑时不显示代码分析警告的问题。指南涵盖 .NET 项目实时分析设置、Roslyn 分析器范围调整及错误列表来源筛选,确保开发者能高效利用实时代码诊断功能。

    如何在Visual Studio2022查看变量监视窗口调试程序
    如何在Visual Studio2022查看变量监视窗口调试程序

    详解 Visual Studio 2022 调试技巧:包括断点设置、监视窗口开启方法、变量添加步骤以及通过 F10 单步执行观察变量值变化的全过程。

    Visual Studio2017设置默认编码为UTF-8不带BOM
    Visual Studio2017设置默认编码为UTF-8不带BOM

    针对 Visual Studio 2017 缺乏全局默认编码选项的情况,详解如何利用 .editorconfig 设定项目级 UTF-8 无 BOM 规则,以及手动转换现有文件并校验字节的方法。

    Visual Studio2022F5调试提示启动项目未配置怎么修复
    Visual Studio2022F5调试提示启动项目未配置怎么修复

    解决 Visual Studio 2022 F5 调试报错问题,通过设置启动项目、检查解决方案属性及正确区分类库与应用项目,快速恢复调试功能。

    Visual Studio2022NuGet包还原失败离线处理方案
    Visual Studio2022NuGet包还原失败离线处理方案

    解决Visual Studio 2022离线环境中NuGet包还原失败的难题,涵盖依赖链分析、本地源配置、包集收集及隔离验证步骤,帮助开发者构建稳定的离线开发环境。

    Visual Studio2017大项目加载缓慢,优化加载性能技巧
    Visual Studio2017大项目加载缓慢,优化加载性能技巧

    解决Visual Studio 2017大型项目加载慢的实用指南。涵盖性能监测、扩展管理、文档恢复优化及版本兼容性检查,帮助开发者精准定位瓶颈并提升工作效率。

    Visual Studio2022设置多启动项目同时调试运行
    Visual Studio2022设置多启动项目同时调试运行

    详解 Visual Studio 2022 多启动项目配置方法,包括启动动作选择、顺序调整及调试技巧,帮助开发者高效调试分布式或前后端分离应用。

    fastapi下载文件接口实现教程
    fastapi下载文件接口实现教程

    深入解析在FastAPI框架中实现文件下载接口的完整方案,涵盖基于FileResponse的本地静态文件传输、基于StreamingResponse的分块流式传输、RFC 5987中文文件名编码规范、路径穿越安全防御及BackgroundTasks临时文件清理,并配备详细代码示例与架构解析图。

    查看更多
    精品专题 更多
    装机必备
    装机必备

    正软商城装机必备专区,精选办公、浏览器、安全防护、影音播放、压缩解压、设计创作和系统工具等电脑常用正版软件,帮助用户快速完成新电脑软件配置。

    Windows
    Windows

    正软商城Windows软件专区,汇集适用于Windows电脑的办公、设计、安全防护、影音播放、开发工具和系统优化软件,提供软件介绍、系统要求、正版授权及购买下载服务。

    PDF教程
    PDF教程

    正软商城PDF教程频道提供PDF编辑、转换、合并、拆分、压缩及格式处理方法,同时介绍常用PDF软件和工具的使用技巧。

    Mac软件 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    Aperty macOS版
    Aperty macOS版
    macOS

    Aperty 是 Skylum 推出的 AI 人像修图软件,支持自然肤质修饰、瑕疵处理、面部与身体调整、预设及批量同步。

    WINDOWS 更多
    讯飞智作 网页版
    讯飞智作 网页版
    Windows/ macOS/ Linux

    讯飞智作是一款基于语音合成技术、虚拟人驱动技术与数字人形象声音构建能力的 AI 数字人音视频创作平台。

    火山引擎 网页版
    火山引擎 网页版
    Windows/ macOS/ Linux

    火山引擎是字节跳动旗下企业级云与AI服务平台。聚焦大模型核心能力,依托字节自研豆包多模态大模型,凭借火山方舟一站式平台,提供模型精调、推理部署、智能应用搭建等全链路服务,结合高性能AI算力,助力各行业快速落地大模型数字化与智能化应用。

    PixTV 网页版
    PixTV 网页版
    Windows

    PixTV 是一款在浏览器中使用的 AI 视觉内容创作平台,提供图片、视频、音频、文字生成、AI 分镜、局部重绘、提示词反推和无限画布等工具,适合短剧、漫剧、广告及社交媒体内容制作。