Docker + Spring Boot:天生一对的完美部署

简介: 使用Docker部署Spring Boot项目能极大简化环境配置和应用分发。要将Spring Boot项目部署到Docker,主要流程是:准备项目、创建Docker镜像、运行Docker容器。

使用Docker部署Spring Boot项目能极大简化环境配置和应用分发。下面是一个清晰的操作流程,以及一些常见问题的解决方法。

🚀 部署Spring Boot项目到Docker

要将Spring Boot项目部署到Docker,主要流程是:准备项目、创建Docker镜像、运行Docker容器。以下是关键步骤:

  1. 准备Spring Boot项目
    首先,你需要一个可运行的Spring Boot项目,并将其打包成JAR文件。你可以使用Maven命令mvn clean package在项目根目录下完成打包。打包后,生成的JAR文件通常位于项目下的target目录中。
  2. 编写Dockerfile
    在项目根目录下创建一个名为Dockerfile的文件(没有后缀),它是构建Docker镜像的蓝图。这里是一个参考示例:
# 使用OpenJDK作为基础镜像
FROM openjdk:11-jre-slim
# 设置工作目录
WORKDIR /app
# 将本地的JAR文件复制到容器中的/app目录下,并重命名为app.jar
COPY target/your-spring-boot-app.jar app.jar
# 暴露Spring Boot应用默认的8080端口
EXPOSE 8080
# 设置启动命令
ENTRYPOINT ["java", "-jar", "app.jar"]

注意:请务必将your-spring-boot-app.jar替换为你实际的JAR文件名。

3、构建Docker镜像

在终端中,进入到包含Dockerfile的项目根目录,执行以下命令来构建镜像:

docker build -t your-spring-boot-app:latest .

-t参数用于给镜像命名和打标签。

4、运行Docker容器

镜像构建成功后,使用以下命令来启动容器:

docker run -d -p 8080:8080 --name your-container-name your-spring-boot-app:latest

-d:表示容器在后台运行。

-p 8080:8080:将主机的8080端口映射到容器的8080端口。

--name:为容器指定一个名称。

完成以上步骤后,你就可以通过浏览器访问 http://你的服务器IP:8080 来查看你的应用了。

⚠️ 常见问题与解决方法

在部署过程中,你可能会遇到一些典型问题,这里提供一些解决方案:

问题现象 可能原因与解决方法
构建镜像时无法下载JDK基础镜像(错误信息可能包含 failed to resolve source metadata 或 DeadlineExceeded) 网络问题:Docker默认从Docker Hub拉取镜像,国内网络环境可能导致速度慢或失败。
解决方法:配置国内镜像加速器。例如,在Docker Desktop中,进入设置 -> Docker Engine,在配置中添加如 https://hub-mirror.c.163.comhttps://mirror.baidubce.com 等镜像地址。
执行 docker build 命令时,提示 COPY failed: file not found JAR文件路径错误:Dockerfile中COPY指令指定的JAR文件路径或名称与实际不符。
解决方法:确认项目已成功执行mvn package命令打包,并检查Dockerfile中COPY指令的源JAR文件路径和文件名是否正确。

💡 进阶使用:Docker Compose

如果你的应用还依赖其他服务,例如MySQL、Redis等,推荐使用Docker Compose来定义和运行多容器应用。

  1. 在项目根目录下创建一个docker-compose.yml文件。
  2. 下面是一个简单的示例,它同时启动了Spring Boot应用和MySQL数据库:
version: '3.8'
services:
  app:
    image: your-spring-boot-app:latest  # 使用你构建的Spring Boot应用镜像
    ports:
      - "8080:8080"
    depends_on:
      - db  # 表明应用依赖于db服务
  db:
    image: mysql:5.7  # 使用MySQL 5.7的官方镜像
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: your_database_name
      MYSQL_USER: your_database_user
      MYSQL_PASSWORD: your_database_password
  1. 在终端中,进入该文件所在目录,运行docker-compose up命令,即可一键启动所有服务。

💎 总结

总的来说,使用Docker部署Spring Boot项目主要包含四个步骤:打包项目 → 编写Dockerfile → 构建镜像 → 运行容器。掌握这个流程,你就能轻松地将自己的应用容器化。

Docker + Spring Boot:天生一对的完美部署.png


谢谢你看我的文章,既然看到这里了,如果觉得不错,随手点个赞、转发、在看三连吧,感谢感谢。那我们,下次再见。


您的一键三连,是我更新的最大动力,谢谢

山水有相逢,来日皆可期,谢谢阅读,我们再会

我手中的金箍棒,上能通天,下能探海

相关文章
|
网络协议 Windows
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
这篇文章提供了解决IDEA插件下载慢或超时问题的方案,通过查找国内插件节点IP地址并修改本地hosts文件来加速下载。
两步带你解决IDEA 插件下载安装慢、超时、不成功问题
|
5月前
|
人工智能 运维 Java
Spring AI Alibaba Admin 开源!以数据为中心的 Agent 开发平台
Spring AI Alibaba Admin 正式发布!一站式实现 Prompt 管理、动态热更新、评测集构建、自动化评估与全链路可观测,助力企业高效构建可信赖的 AI Agent 应用。开源共建,现已上线!
6189 84
|
3月前
|
监控 Java Nacos
手把手搭建Java微服务:从技术选型到生产部署
每个服务边界的确立,都是在回答一个基本问题:"什么应该在一起,什么应该分离?"这与我们人生中关于人际关系、职业发展的决策何其相似。
127 0
|
3月前
|
监控 数据可视化 Java
Spring Boot 整合 Elasticsearch 及实战应用
这次内容详细介绍如何使用 Spring Boot 整合 Elasticsearch,并提供几个实际应用案例。内容涵盖 Elasticsearch 的基本概念、Spring Boot 整合步骤、实战应用示例以及优化建议。
374 0
|
4月前
|
机器学习/深度学习 人工智能 前端开发
终端里的 AI 编程助手:OpenCode 使用指南
OpenCode 是开源的终端 AI 编码助手,支持 Claude、GPT-4 等模型,可在命令行完成代码编写、Bug 修复、项目重构。提供原生终端界面和上下文感知能力,适合全栈开发者和终端用户使用。
36099 10
|
安全 Java API
Spring Boot 3.x 在 2.x基础上有什么重大的改进?
Spring Boot 3.x于2022年11月发布,带来了诸多重大更新。主要改进包括:最低要求Java 17,整合Jakarta EE 9,优化实例化和配置支持,基于Spring Framework 6.x,引入AOT编译,增强GraalVM原生映像支持,改进日志管理和集成测试,提供更详细的Actuator监控功能,以及对Spring Cloud的兼容性更新。这些变化为现代云原生应用开发提供了更强支持。
1449 36
|
10月前
|
网络协议 Ubuntu Docker
Docker Compose--命令说明
Docker Compose--命令说明
1680 30
|
Java Linux 虚拟化
Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
Docker 部署spring-boot项目(超详细 包括Docker详解、Docker常用指令整理等)
7997 2
|
11月前
|
JSON 前端开发 Java
深入理解 Spring Boot 中日期时间格式化:@DateTimeFormat 与 @JsonFormat 完整实践
在 Spring Boot 开发中,处理前后端日期交互是一个常见问题。本文通过 **@DateTimeFormat** 和 **@JsonFormat** 两个注解,详细讲解了如何解析前端传来的日期字符串以及以指定格式返回日期数据。文章从实际案例出发,结合代码演示两者的使用场景与注意事项,解决解析失败、时区偏差等问题,并提供全局配置与局部注解的实践经验。帮助开发者高效应对日期时间格式化需求,提升开发效率。
3183 2
|
Cloud Native Java Nacos
springcloud/springboot集成NACOS 做注册和配置中心以及nacos源码分析
通过本文,我们详细介绍了如何在 Spring Cloud 和 Spring Boot 中集成 Nacos 进行服务注册和配置管理,并对 Nacos 的源码进行了初步分析。Nacos 作为一个强大的服务注册和配置管理平台,为微服务架构提供
4684 14

热门文章

最新文章