首页 > 数据库 >一触即发,全栈联动:使用Docker Compose部署Spring Boot应用+MySQL+Redis实战指南

一触即发,全栈联动:使用Docker Compose部署Spring Boot应用+MySQL+Redis实战指南

时间:2024-03-24 12:58:19浏览次数:27  
标签:Compose 服务 Spring Boot compose MySQL Docker

在云原生时代的快车道上,Docker Compose无疑是那辆助您疾驰的豪华跑车,它凭借其简洁高效的YAML配置文件,让您能够轻松部署和管理包含Spring Boot应用、MySQL数据库以及Redis缓存服务在内的完整堆栈。本文将深入浅出地引导您通过一个docker-compose.yml文件来定义和配置这些服务,实现它们之间的完美衔接与高效运行,结尾处还将开放讨论话题,期待大家共同探讨Docker Compose在实际项目中的应用与优化。

一、docker-compose.yml文件基础结构与服务定义

首先,我们需要创建一个名为docker-compose.yml的文件,通过YAML语法来定义三个服务:Spring Boot应用、MySQL数据库和Redis缓存服务。

version: '3'
services:
  app:
    # Spring Boot应用服务配置
    build: .  # 假设Dockerfile位于当前目录
    ports:
      - "8080:8080"  # 映射应用端口
    depends_on:
      - db  # 应用依赖MySQL数据库服务
      - redis  # 应用依赖Redis缓存服务
    environment:
      SPRING_DATASOURCE_URL: jdbc:mysql://db:3306/springbootdb?useSSL=false&serverTimezone=UTC
      REDIS_HOST: redis
      # 其他环境变量...

  db:
    # MySQL数据库服务配置
    image: mysql:5.7
    environment:
      MYSQL_ROOT_PASSWORD: your_mysql_password
      MYSQL_DATABASE: springbootdb
    ports:
      - "3306:3306"

  redis:
    # Redis缓存服务配置
    image: redis:6.0
    ports:
      - "6379:6379"
  • app服务代表了Spring Boot应用,通过build指令指定构建该服务的Dockerfile路径,并通过环境变量SPRING_DATASOURCE_URL设置了数据库连接地址,依赖于mysql服务。
  • mysql服务使用官方MySQL镜像,并通过环境变量设置数据库名、用户名、密码以及root用户的密码。同时,使用volumes将数据持久化到宿主机的目录,以防止数据丢失。
  • redis服务同样使用官方Redis镜像,并将其数据持久化到宿主机上的目录。

二、服务间的网络与依赖关系

  • 网络:Docker Compose会自动创建一个默认网络,各个服务在同一网络下可以通过服务名相互通信,无需手动配置。

  • 依赖关系:通过depends_on关键字明确指出app服务依赖于dbredis服务,确保数据库和缓存服务先于应用启动。

三、部署与启动服务

只需一条命令,即可部署并启动整个应用栈:

docker-compose up -d
  • -d 参数表示在后台运行(detached模式),如果省略这个参数,则会在前台显示容器的日志输出。
  • 这个命令会根据docker-compose.yml中的配置构建必要的镜像(如果还没有的话),然后启动所有服务。

现在,你的Spring Boot应用应该已经在容器中运行,并与MySQL数据库和Redis缓存服务建立了连接。你可以通过访问http://localhost:8080(取决于你在compose文件中设置的端口映射)来测试Spring Boot应用是否正确启动。 

停止和清理这些服务可以使用:

docker-compose down

这将会停止并删除所有由docker-compose up创建的容器、网络和卷(除非它们被标记为外部卷)。 

结尾讨论点:

  • 在实际项目中,您是如何通过Docker Compose进行多服务集成与部署的?
  • 在使用Docker Compose部署Spring Boot应用时,您遇到了哪些挑战?又是如何解决的?
  • 如何根据不同的开发、测试、生产环境调整docker-compose.yml配置,以适应不同环境的需求?

在此,我们诚挚邀请您在评论区分享您的Docker Compose实战经验,一起探讨如何更加巧妙地运用Docker Compose部署和管理复杂应用,解锁云原生技术的新境界!

 关注<IT运维先森>微信公众号,了解更多技术内容,一起进步。

                                 

标签:Compose,服务,Spring,Boot,compose,MySQL,Docker
From: https://blog.csdn.net/guting18893110463/article/details/136932017

相关文章