使用Docker容器化部署Spring Boot应用程序

本文涉及的产品
云数据库 RDS MySQL,集群系列 2核4GB
推荐场景:
搭建个人博客
RDS MySQL Serverless 基础系列,0.5-2RCU 50GB
云数据库 RDS MySQL,高可用系列 2核4GB
简介: 使用Docker容器化部署Spring Boot应用程序

引言

随着微服务的兴起和容器化技术的普及,Docker已经成为部署和管理应用程序的热门选择。Spring Boot作为一个轻量级的Java框架,非常适合与Docker结合使用,以实现快速、可靠的应用程序部署。本文将介绍如何使用Docker容器化部署Spring Boot应用程序,从准备环境到构建和运行容器,全面覆盖整个流程。

环境准备

在开始之前,请确保您已经安装了以下软件:

  • Docker:用于创建和管理容器。
  • Docker Compose(可选):用于定义和运行多容器应用程序。
  • JDK:Java开发工具包,用于编译和运行Java代码。
  • Maven或Gradle:Java构建工具,用于构建Spring Boot项目。

构建Spring Boot应用程序

首先,您需要有一个Spring Boot项目。如果您还没有现成的项目,可以使用Spring Initializr快速生成一个包含所需依赖的Spring Boot项目。

在Spring Boot项目中,您需要编写业务逻辑、配置数据库连接、创建RESTful API等。这里不再赘述Spring Boot项目的开发过程,而是直接跳到构建Docker镜像的步骤。

创建Dockerfile

在Spring Boot项目的根目录下创建一个名为Dockerfile的文件,并添加以下内容:

# 使用OpenJDK作为基础镜像
FROM openjdk:11-jre-slim

# 将JAR文件复制到容器中
COPY target/your-spring-boot-app.jar /app.jar

# 暴露应用程序的端口(例如8080)
EXPOSE 8080

# 运行Spring Boot应用程序
ENTRYPOINT ["java","-jar","/app.jar"]

请确保将your-spring-boot-app.jar替换为您的Spring Boot项目的实际JAR文件名。

构建Docker镜像

在终端中导航到Spring Boot项目的根目录,并运行以下命令来构建Docker镜像:

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

请确保将your-spring-boot-app替换为您想要为镜像指定的名称。

运行Docker容器

构建完成后,您可以使用以下命令运行Docker容器:

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

在这个命令中:

  • -d表示以守护进程模式运行容器。
  • -p 8080:8080将容器的8080端口映射到主机的8080端口。
  • --name your-container-name为容器指定一个名称。
  • your-spring-boot-app:latest是您刚刚构建的Docker镜像的名称和标签。

使用Docker Compose(可选)

如果您的应用程序包含多个服务(如数据库、前端应用等),您可以使用Docker Compose来定义和运行这些服务。在Spring Boot项目的根目录下创建一个名为docker-compose.yml的文件,并添加以下内容:

version: '3.8'

services:
  app:
    image: your-spring-boot-app:latest
    ports:
      - "8080:8080"
    depends_on:
      - db

  db:
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: root_password
      MYSQL_DATABASE: your_database_name
      MYSQL_USER: your_database_user
      MYSQL_PASSWORD: your_database_password

请根据您的实际需求修改这个配置文件,然后运行docker-compose up命令来启动所有服务。

结论

通过本文的介绍,您已经了解了如何使用Docker容器化部署Spring Boot应用程序。从准备环境到构建和运行容器,我们全面覆盖了整个流程。Docker为Spring Boot应用程序提供了快速、可靠、可扩展的部署方案,使得开发人员能够更加专注于业务逻辑的实现,而无需担心底层基础设施的搭建和管理。希望本文能够帮助您更好地理解和应用Docker容器化技术。

相关实践学习
如何快速连接云数据库RDS MySQL
本场景介绍如何通过阿里云数据管理服务DMS快速连接云数据库RDS MySQL,然后进行数据表的CRUD操作。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
7天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
153 93
|
1月前
|
监控 NoSQL 时序数据库
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
《docker高级篇(大厂进阶):7.Docker容器监控之CAdvisor+InfluxDB+Granfana》包括:原生命令、是什么、compose容器编排,一套带走
260 77
|
9天前
|
Ubuntu NoSQL Linux
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
77 6
《docker基础篇:3.Docker常用命令》包括帮助启动类命令、镜像命令、有镜像才能创建容器,这是根本前提(下载一个CentOS或者ubuntu镜像演示)、容器命令、小总结
|
20天前
|
搜索推荐 安全 数据安全/隐私保护
7 个最能提高生产力的 Docker 容器
7 个最能提高生产力的 Docker 容器
103 35
|
1月前
|
监控 Docker 容器
在Docker容器中运行打包好的应用程序
在Docker容器中运行打包好的应用程序
|
8天前
|
数据库 Docker 容器
docker容器为啥会开机自启动
通过配置适当的重启策略,Docker容器可以在主机系统重启后自动启动。这对于保持关键服务的高可用性和自动恢复能力非常有用。选择适合的重启策略(如 `always`或 `unless-stopped`),可以确保应用程序在各种情况下保持运行。理解并配置这些策略是确保Docker容器化应用可靠性的关键。
38 17
|
20天前
|
Ubuntu Linux 开发工具
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖项打包成标准化单元(容器),确保在任何支持 Docker 的操作系统上一致运行。容器共享主机内核,提供轻量级、高效的执行环境。本文介绍如何在 Ubuntu 上安装 Docker,并通过简单步骤验证安装成功。后续文章将探讨使用 Docker 部署开源项目。优雅草央千澈 源、安装 Docker 包、验证安装 - 适用场景:开发、测试、生产环境 通过以上步骤,您可以在 Ubuntu 系统上成功安装并运行 Docker,为后续的应用部署打下基础。
docker 是什么?docker初认识之如何部署docker-优雅草后续将会把产品发布部署至docker容器中-因此会出相关系列文章-优雅草央千澈
|
8天前
|
运维 Java 虚拟化
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
《docker基础篇:1.Docker简介》,包括Docker是什么、容器与虚拟机比较、能干嘛、去哪下
67 12
|
9天前
|
Kubernetes Linux 虚拟化
入门级容器技术解析:Docker和K8s的区别与关系
本文介绍了容器技术的发展历程及其重要组成部分Docker和Kubernetes。从传统物理机到虚拟机,再到容器化,每一步都旨在更高效地利用服务器资源并简化应用部署。容器技术通过隔离环境、减少依赖冲突和提高可移植性,解决了传统部署方式中的诸多问题。Docker作为容器化平台,专注于创建和管理容器;而Kubernetes则是一个强大的容器编排系统,用于自动化部署、扩展和管理容器化应用。两者相辅相成,共同推动了现代云原生应用的快速发展。
64 11
|
26天前
|
Unix Linux Docker
CentOS停更沉寂,RHEL巨变限制源代:Docker容器化技术的兴起助力操作系统新格局
操作系统是计算机系统的核心软件,管理和控制硬件与软件资源,为用户和应用程序提供高效、安全的运行环境。Linux作为开源、跨平台的操作系统,具有高度可定制性、稳定性和安全性,广泛应用于服务器、云计算、物联网等领域。其发展得益于庞大的社区支持,多种发行版如Ubuntu、Debian、Fedora等满足不同需求。
52 4