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

Docker 部署 SpringBoot 项目超详细教程

Docker 部署 SpringBoot 项目超详细教程

一篇适合新手的 Docker 部署 SpringBoot 实战教程,包含:

  • Docker 安装
  • 镜像加速
  • SpringBoot 打包
  • Dockerfile 编写
  • 构建镜像
  • 容器部署
  • 日志查看
  • 防火墙开放
  • 常见问题解决

图文并茂,保姆级教学。

本文假设你已拥有一台安装了 Docker 的 CentOS 8 服务器,直接聚焦于如何将 SpringBoot 应用打包成 Docker 镜像并运行。
全程提供清晰的操作步骤与生产环境建议,新手也能无痛上手。


一、Docker 核心概念速览

概念说明类比
镜像(Image)包含应用及其运行环境的只读模板安装包
容器(Container)镜像的运行实例运行中的程序
Dockerfile构建镜像的步骤描述文件安装说明书


二、准备工作:项目 jar 包

  1. 在本地通过mvn package打包 SpringBoot 项目,生成可执行 jar 文件(例如springboot-ai-chatbot-0.0.1-SNAPSHOT.jar)。
  2. 在服务器上创建专属目录,并将 jar 上传到此目录。
mkdir-p/usr/local/springboot-ai-chatbotcd/usr/local/springboot-ai-chatbot# 通过 SFTP 等工具将 jar 包上传至此

三、编写 Dockerfile

在项目目录下创建Dockerfile文件:

viDockerfile

填入以下内容:

# jdk FROM eclipse-temurin:17 # 作者 LABEL maintainer="nicky" # 工作目录 WORKDIR /app # 拷贝 jar COPY springboot-ai-chatbot-0.0.1-SNAPSHOT.jar app.jar # 暴露端口 EXPOSE 8080 # 时区(可选) ENV TZ=Asia/Shanghai # 启动命令 ENTRYPOINT ["java","-jar","/app/app.jar"]

逐行解释:

  • FROM:选择 Amazon Corretto 17 镜像,体积小且包含 JDK17。
  • WORKDIR:指定工作目录,后续命令均在该目录下执行。
  • COPY:将宿主机上的 jar 拷贝进镜像。
  • EXPOSE:告知 Docker 容器内应用监听 8080 端口。
  • ENTRYPOINT:容器启动时执行java -jar app.jar启动应用。

四、构建 Docker 镜像

Dockerfile所在目录执行:

dockerbuild-tspringboot-ai-chatbot:1.0.

注意命令末尾的.表示使用当前目录作为构建上下文,不可省略

构建成功后,查看本地镜像:

dockerimages

输出示例:

REPOSITORY TAG IMAGE ID CREATED SIZE springboot-ai-chatbot 1.0 abc123def456 10 seconds ago 350MB

五、运行容器

使用以下命令启动容器:

dockerrun-d\--namespringboot-ai-chatbot\-p8080:8080\--restart=always\springboot-ai-chatbot:1.0

参数详解:

参数作用
-d后台运行容器
--name为容器起一个名字,便于后续管理
-p 宿主机端口:容器端口将宿主机 8080 端口映射到容器 8080 端口
--restart=always容器异常退出或 Docker 重启后自动拉起容器

检查容器是否正常运行:

dockerps

看到STATUSUp即表示成功。


六、验证部署与查看日志

6.1 访问应用

在浏览器中访问http://服务器IP:8080
若无法访问,请先开放防火墙端口:

firewall-cmd--permanent--add-port=8080/tcp firewall-cmd--reload

6.2 查看实时日志

dockerlogs-fspringboot-ai-chatbot

当终端出现Started XxxApplication字样时,说明 SpringBoot 启动成功。


七、生产环境优化:目录挂载

将容器内的日志和配置文件目录挂载到宿主机,便于持久化和动态调整配置。

先创建宿主机目录:

mkdir-p/usr/local/springboot-ai-chatbot/{logs,config}

重新启动容器时加入-v参数:

# 先删除旧容器dockerrm-fspringboot-ai-chatbot# 带挂载启动dockerrun-d\--namespringboot-ai-chatbot\-p8080:8080\-v/usr/local/springboot-ai-chatbot/logs:/app/logs\-v/usr/local/springboot-ai-chatbot/config:/app/config\--restart=always\springboot-ai-chatbot:1.0
  • /app/logs目录挂载后,应用日志会直接写入宿主机,方便日志收集。
  • /app/config目录可放入application.yml,修改后重启容器即可应用新配置。

八、常用 Docker 管理命令

操作命令
查看运行中容器docker ps
停止容器docker stop springboot-ai-chatbot
启动已停止的容器docker start springboot-ai-chatbot
重启容器docker restart springboot-ai-chatbot
强制删除容器docker rm -f springboot-ai-chatbot
删除镜像docker rmi springboot-ai-chatbot:1.0
进入容器内部调试docker exec -it springboot-ai-chatbot /bin/bash

九、常见问题排查

1. 构建镜像时拉取基础镜像超时

现象i/o timeout
解决:为 Docker 配置国内镜像加速。编辑/etc/docker/daemon.json,添加:

{"registry-mirrors":["https://docker.m.daocloud.io","https://dockerproxy.com"]}

然后重启 Docker:systemctl restart docker

2. 端口无法访问

  • 检查容器是否运行:docker ps
  • 检查防火墙:firewall-cmd --list-ports,确保 8080 已放行
  • 确认端口映射正确:docker port springboot-ai-chatbot

3. 容器启动后立即退出

使用docker logs springboot-ai-chatbot查看错误信息,常见原因包括:jar 包损坏、端口冲突、数据库连接失败等,根据日志提示修正后重新构建镜像即可。


十、总结

Docker 部署 SpringBoot 项目的核心流程仅需四步:

编写 Dockerfile → docker build → docker run → docker logs 验证

掌握这一流程后,你不仅能轻松部署单体应用,还将为后续微服务、CI/CD 流水线、Kubernetes 容器编排打下坚实基础。


如果觉得教程有用,欢迎分享给更多需要的小伙伴!

http://www.jsqmd.com/news/826732/

相关文章:

  • 中文提示词仓库:提升AI对话效率的结构化方法与工程实践
  • 基于Rust与WebGPU的本地大模型推理服务器:Ai00 Server部署与应用指南
  • IO模型详解
  • Slack式智能光标:重构IDE代码导航,告别上下文丢失
  • AI编码助手增强:Cursor-Sisyphus智能审查工作流实战
  • JetBrains IDE试用重置终极指南:高效管理30天评估期
  • HacxGPT:本地化AI安全分析平台架构与应用实践
  • 宝塔面板 SyntaxError: invalid syntax 报错 完美修复教程
  • 外贸工厂转型做跨境,为什么广告也投了销量却上不来?
  • 「数据下载」国家级观测研究站2021—2023年云南大理农业生态系统观测点的氮磷干湿沉积数据
  • AI开发工具精选集:多语言资源库助力高效选型与实战
  • 边缘网关实战指南:从架构设计到部署运维的物联网关键节点
  • Claude任务大师浏览器扩展:AI自动化工作流与Chrome插件开发实战
  • 开发者会话管理工具:提升多任务开发效率的利器
  • TypeScript代码质量扫描利器tscanner:超越tsc的类型安全检查实践
  • Awesome-Mind-Network:心智网络交叉领域资源导航与高效学习方法论
  • RISC-V异构SoC架构与机器学习加速技术解析
  • 用CircuitPython改造Xteink X4电子书:打造低功耗天气信息站
  • DPDK 教程(四):Offload、Flow、NUMA、IOVA 与性能剖析
  • Sora 2的“世界模型”真能理解物理规则?Runway的“Prompt-to-Video”为何屡现穿模崩坏?(附12组物理仿真对比动图)
  • 深度解析:DsHidMini如何让经典PS3手柄在现代Windows系统重生
  • 基于Circuit Playground Express与MakeCode的光效雨伞制作指南
  • 会计学论文降AI工具免费推荐:2026年会计学毕业论文免费4.8元降AI知网达标完整方案
  • ssm高校学生综合测评管理系统(10029)
  • OpenClaw-China:中文场景下开源大语言模型高效微调与部署实战指南
  • 如何选择射击游戏?2026年5月推荐五款产品评测夜间娱乐防操作疲劳 - 品牌推荐
  • 碧蓝航线Alas自动化脚本:告别重复劳动,实现全智能游戏管理
  • 16. LangChain ChatPromptTemplate多模态应用实战
  • Cadence 17.4重装系统后,PCB快捷键失灵?别急着重装,先检查这个‘文件类型’
  • 基于MCP协议的AI屏幕视觉交互:CyberLens服务器部署与自动化实战