Java 入门指南:使用 Docker 创建容器化 Spring Boot 应用程序

本文涉及的产品
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 高可用系列,价值2615元额度,1个月
简介: 接下来,我们需要创建一个 Dockerfile,其中包含了构建 Java 映像所需的指令。在 Spring Boot 项目的根目录下创建一个名为 Dockerfile 的文件,并将以下内容添加到其中:

Docker 已经成为现代应用程序开发和部署的不可或缺的一部分。它使开发人员能够在不同环境中轻松部署应用程序,确保一致性和可重复性。本入门指南将教您如何使用 Docker 容器化一个简单的 Spring Boot 应用程序。您将学习如何使用 Maven 克隆和运行 Spring Boot 应用程序,创建一个包含构建 Java 映像所需指令的新 Dockerfile,将生成的映像作为容器运行,设置本地开发环境以连接到容器中的数据库,并使用 Docker Compose 运行 Spring Boot 应用程序。最后,我们还将使用 GitHub Actions 配置 CI/CD 管道以自动化构建和部署您的应用程序。


步骤 1: 准备工作

在开始之前,确保您已经安装了以下工具:


  • Docker:您需要在本地系统上安装 Docker。您可以从 Docker 官方网站 下载适合您操作系统的版本。


  • Maven:如果您尚未安装 Maven,可以在 Maven 官方网站 上找到安装说明。


  • Java 开发工具:您需要一个 Java 集成开发环境(IDE),如 Eclipse、IntelliJ IDEA 或 Visual Studio Code。


步骤 2: 克隆 Spring Boot 应用程序

首先,我们需要获取一个 Spring Boot 应用程序的源代码,以便后续容器化操作。您可以使用 Git 克隆一个示例项目,也可以使用您自己的 Spring Boot 项目。

# 使用 Git 克隆示例 Spring Boot 项目
git clone https://github.com/spring-projects/spring-petclinic.git
cd spring-petclinic

c95f2d954904a1b0e630bf3403e9ecf3_76dcbe780a3a4f3e93a64fd9ce3f229f.png

步骤 3: 创建 Dockerfile

接下来,我们需要创建一个 Dockerfile,其中包含了构建 Java 映像所需的指令。在 Spring Boot 项目的根目录下创建一个名为 Dockerfile 的文件,并将以下内容添加到其中:


# 使用官方的 OpenJDK 11 基础映像
FROM openjdk:11-jre-slim
# 在容器中创建一个目录来存放应用程序文件
RUN mkdir /app
# 复制应用程序 JAR 文件到容器中的 /app 目录
COPY target/*.jar /app/app.jar
# 指定容器启动时要执行的命令
CMD ["java", "-jar", "/app/app.jar"]


这个 Dockerfile 基于官方的 OpenJDK 11 基础映像,将 Spring Boot 应用程序的 JAR 文件复制到容器中,并定义了容器启动时要执行的命令。

0c72e66af59a0829dac3ec31c24282ae_a341f96e29934dc795beee3bb4f1408b.png

步骤 4: 构建 Docker 映像

现在,我们可以使用 Docker 命令构建我们的 Docker 映像。在 Spring Boot 项目的根目录中执行以下命令:


docker build -t spring-boot-app .


这将使用我们的 Dockerfile 构建一个名为 spring-boot-app 的 Docker 映像。确保在命令后面有一个 .,表示使用当前目录中的 Dockerfile。


8fc49af26e91345be5607029726f3645_a704462ff40744b8b02dcde67e8d7c6e.png

步骤 5: 运行容器

一旦 Docker 映像构建完成,我们可以使用 Docker 运行容器。在命令行中执行以下命令:


docker run -p 8080:8080 spring-boot-app


这将在容器内运行我们的 Spring Boot 应用程序,并将容器的端口 8080 映射到主机的端口 8080。您可以通过浏览器访问 http://localhost:8080 来查看应用程序是否正常运行。

步骤 6: 链接到本地数据库

通常情况下,应用程序需要与数据库进行交互。


在容器化环境中,您可以链接到本地数据库或使用容器化的数据库。


如果您希望链接到本地数据库,请确保您的 Spring Boot 应用程序的配置文件中已经正确配置了数据库连接信息。容器内的应用程序可以访问主机上的本地数据库,因为它们共享相同的网络。


步骤 7: 使用 Docker Compose 运行多个容器

在实际应用中,通常需要多个容器来支持不同的服务和组件。Docker Compose 是一个用于定义和运行多个 Docker 容器的工具。


您可以创建一个名为 docker-compose.yml 的 Docker Compose 配置文件,其中定义了应用程序的各个服务、网络和卷。以下是一个示例 docker-compose.yml 文件:


version: '3'
services:
  app:
    build: .
    ports:
      - "8080:8080"
  database:
    image: mysql:latest
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: mydb


这个示例使用 Docker Compose 同时运行我们的 Spring Boot 应用程序和一个 MySQL 数据库容器。

b9762509a2623ccc69aab7aae5afd59a_ce4289290d4045079a8c314c67712b5a.png


步骤 8: 设置 CI/CD 管道

最后,为了自动化构建和部署您的应用程序,您可以使用 CI/CD 管道。GitHub Actions 是一个流行的 CI/CD 工具,可以与 Docker 结合使用,以实现持续集成和持续交付。


通过在项目的 GitHub 存储库中配置 GitHub Actions,您可以设置自动构建 Docker 映像、运行测试、部署应用程序到生产环境等任务。

77e9218f4629bd135902684765bd5fd3_f3553195bb334bb9ae9a6fa528a05d2c.png


结论

Docker 提供了一种强大的方式来容器化应用程序,使其在不同环境中运行一致性和可重复性。本指南介绍了如何将一个简单的 Spring Boot 应用程序容器化,以及如何使用 Docker Compose 运行多个容器来支持应用程序的不同服务。此外,GitHub Actions 的集成使自动化构建和部署变得更加容易。希望这个指南对您的 Docker 容器化旅程有所帮助,让您更轻松地管理和部署应用程序。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
30天前
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
91 33
|
1月前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
142 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
18天前
|
JavaScript Java 测试技术
基于Java+SpringBoot+Vue实现的车辆充电桩系统设计与实现(系统源码+文档+部署讲解等)
面向大学生毕业选题、开题、任务书、程序设计开发、论文辅导提供一站式服务。主要服务:程序设计开发、代码修改、成品部署、支持定制、论文辅导,助力毕设!
45 6
|
22天前
|
Java 应用服务中间件 API
【潜意识Java】javaee中的SpringBoot在Java 开发中的应用与详细分析
本文介绍了 Spring Boot 的核心概念和使用场景,并通过一个实战项目演示了如何构建一个简单的 RESTful API。
37 5
|
22天前
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
40 2
|
1月前
|
Java 开发者 Spring
java springboot监听事件和处理事件
通过上述步骤,开发者可以在Spring Boot项目中轻松实现事件的发布和监听。事件机制不仅解耦了业务逻辑,还提高了系统的可维护性和扩展性。掌握这一技术,可以显著提升开发效率和代码质量。
67 13
|
22天前
|
监控 Java API
【潜意识Java】使用SpringBoot构建高效的RESTfulAPI
本文介绍了使用Spring Boot构建RESTful API的完整流程,涵盖从项目创建到API测试的各个步骤。
42 1
|
1月前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
133 11
|
域名解析 NoSQL Java
Springboot docker jenkins 自动化部署并上传镜像
本文为大家讲解Springboot docker jenkins 自动化部署并上传镜像的过程。
3699 0
Springboot docker jenkins 自动化部署并上传镜像
|
18天前
|
JavaScript Java 测试技术
基于SpringBoot+Vue实现的留守儿童爱心网站设计与实现(计算机毕设项目实战+源码+文档)
博主是一位全网粉丝超过100万的CSDN特邀作者、博客专家,专注于Java、Python、PHP等技术领域。提供SpringBoot、Vue、HTML、Uniapp、PHP、Python、NodeJS、爬虫、数据可视化等技术服务,涵盖免费选题、功能设计、开题报告、论文辅导、答辩PPT等。系统采用SpringBoot后端框架和Vue前端框架,确保高效开发与良好用户体验。所有代码由博主亲自开发,并提供全程录音录屏讲解服务,保障学习效果。欢迎点赞、收藏、关注、评论,获取更多精品案例源码。
54 10