新闻详情

新闻详情

首页 / 资讯中心 / 详情

Spring Boot 如何启用 Docker Compose 支持让应用自动启动依赖的数据库服务

发布时间:2026/9/9 18:54:39来源:尧图网络
Spring Boot 如何启用 Docker Compose 支持让应用自动启动依赖的数据库服务
Spring Boot 如何启用 Docker Compose 支持让应用自动启动依赖的数据库服务【免费下载链接】spring-bootSpring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss.项目地址: https://gitcode.com/gh_mirrors/sp/spring-boot如果你的应用依赖数据库等外部服务传统开发流程要手动执行docker compose up、应用启动后再手动docker compose down。Spring Boot 的spring-boot-docker-compose模块可以把这条流程接进应用生命周期应用启动时自动调用docker compose up启动 compose 文件中定义的数据库容器为受支持的容器创建 service connection服务连接并在应用关闭时自动停止容器。该功能属于开发期服务Development-time services只应在开发环境使用应用在部署环境中会被禁用。前提条件按 Docker Compose Support 一节的要求机器上需要满足docker和docker compose或docker-composeCLI 在 PATH 中可用Docker Compose 最低支持版本为2.2.0。添加 spring-boot-docker-compose 依赖在构建中引入该模块。Maven 示例dependencies dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-docker-compose/artifactId optionaltrue/optional /dependency /dependenciesGradle 示例dependencies { developmentOnly(org.springframework.boot:spring-boot-docker-compose) }注意一点文档以 TIP 形式明确说明repackaged 可执行归档默认不包含 Spring Boot 的 Docker Compose 支持。如果需要在打包后的应用中启用Maven 插件要设置excludeDockerCompose属性为falseGradle 插件则需配置任务 classpath 包含developmentOnly配置。编写 compose 文件在应用工作目录旁创建 compose 文件定义数据库服务。Spring Boot 按以下顺序在工作目录中查找 compose 文件顺序见 DockerComposeFile 的SEARCH_ORDERcompose.yaml、compose.yml、docker-compose.yaml、docker-compose.yml。以下 PostgreSQL 示例取自 Docker Compose how-to 文档其中myuser、secret、mydb是文档给出的示例值请替换为你自己的账号密码和库名services: postgres: image: postgres:15.3 environment: - POSTGRES_USERmyuser - POSTGRES_PASSWORDsecret - POSTGRES_DBmydb ports: - 5432:5432 labels: org.springframework.boot.jdbc.parameters: ssltruesslmoderequire服务连接是按容器镜像名匹配来建立的。与数据库相关的支持见 Service Connections 一节的表格镜像名为postgres、mysql、mariadb、mssql/server、gvenzl/oracle-free、gvenzl/oracle-xe、clickhouse/clickhouse-server的容器会分别提供JdbcConnectionDetails和R2dbcConnectionDetails连接详情。service connection 建立到容器映射后的本地端口上——即使容器内 Postgres 使用 5432 而本地映射到别的临时端口Spring Boot 也会发现并使用本地映射端口。连接细节会优先于任何连接相关的配置属性生效。上例中的org.springframework.boot.jdbc.parameterslabel 用于自定义 JDBC URL 的参数。文档示例加上该 label 后实际使用的 JDBC URL 为jdbc:postgresql://127.0.0.1:5432/mydb?ssltruesslmoderequire文档示例输出取决于你替换的用户名和库名。应用启动时发生了什么依赖加入后Spring Boot 会自动做以下四件事在工作目录中查找compose.yml及其他常见 compose 文件名对发现的 compose 文件调用docker compose up为每个受支持的容器创建 service connection bean应用关闭时调用docker compose stop。如果启动应用时 Docker Compose 服务已经在运行Spring Boot 只创建 service connection bean不会再次调用docker compose up应用关闭时也不会调用docker compose stop。容器启动后可能需要时间才就绪。推荐在compose.yml的服务定义下添加healthcheck段若省略Spring Boot 默认以能建立到映射端口的 TCP/IP 连接作为就绪判断并可通过spring.docker.compose.readiness.timeout配置总超时属性定义见 DockerComposeProperties。这就是结果验证方式应用完成启动并创建好数据库连接 bean说明容器已就绪、连接可用。可选指定其他 compose 文件与生命周期管理compose 文件不在应用同目录或命名不同时在application.properties/application.yaml中用spring.docker.compose.file指向目标文件可写绝对路径或相对应用的路径spring: docker: compose: file: ../my-compose.yml多应用共享同一批服务在一个应用中放compose.yaml其他应用用spring.docker.compose.file引用它并把spring.docker.compose.lifecycle-management设为start-only——默认值start-and-stop下一个应用停止会连带停掉其他仍在运行的应用共享的服务。注意start-only下所有应用都关闭后服务仍会残留需要在含compose.yaml的目录手动执行docker compose stop。生命周期控制spring.docker.compose.lifecycle-management支持none、start-only、start-and-stop三个值还可用spring.docker.compose.start.command/spring.docker.compose.stop.command在up与start、down与stop之间切换用spring.docker.compose.arguments、spring.docker.compose.start.arguments、spring.docker.compose.stop.arguments追加参数。限制与测试场景该功能面向开发期应用在部署时会禁用此开发期服务。默认在运行测试时禁用 Docker Compose 支持。若要在测试中启用设置spring.docker.compose.skip.in-tests为false使用 Gradle 时还需把依赖配置从developmentOnly改为testAndDevelopmentOnly。SSL 支持只配置客户端侧容器内服务的 SSL 仍需自行启用受 SSL 支持的服务连接范围见 SSL support 一节。【免费下载链接】spring-bootSpring Boot helps you to create Spring-powered, production-grade applications and services with absolute minimum fuss.项目地址: https://gitcode.com/gh_mirrors/sp/spring-boot创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

专科生AI论文写作工具实测:10款神器助你从初稿到降重一次搞定 2026/9/9 19:30:46

专科生AI论文写作工具实测:10款神器助你从初稿到降重一次搞定

开头部分我先说明一下,这篇文章的受众非常明确:正在写专科毕业论文、毕业设计、或者在准备专升本/自考论文的同学。专科生的论文体量和深度跟本科、研究生不一样,核心诉求是“快速成稿、格式达标、文献够用、查重过关”,不需要跟学…

阅读更多 →
SpringBoot+Vue居家办公系统毕设项目:功能解析与部署指南 2026/9/9 19:30:46

SpringBoot+Vue居家办公系统毕设项目:功能解析与部署指南

毕设季总能看到一个现象:宿舍楼里几个计算机专业的同学,白天跑招聘、晚上开会写文档,到了交中期检查的前一周才开始疯狂找能跑的源码。我不是说临时抱佛脚是对的,但如果你正处在"需要一个完整全栈项目作为毕业设计或课程设计…

阅读更多 →
Spring Bean生命周期详解:从实例化到销毁的完整流程与最佳实践 2026/9/9 19:30:46

Spring Bean生命周期详解:从实例化到销毁的完整流程与最佳实践

SpringBean的生命周期这个问题,我从刚学Spring就被面试官问过,工作几年后又因为线上启动变慢、AOP代理不生效这些怪问题,回头认真把生命周期重新盘了一遍。说句大实话,它绝对不只是用来应付八股问答的知识,而是把IoC容…

阅读更多 →
Redis分布式核心技术与工程实践:从主从复制到集群高可用 2026/9/9 19:30:46

Redis分布式核心技术与工程实践:从主从复制到集群高可用

1. 单机撑不住之后:分布式到底在解决什么问题我印象特别深,第一次真正被分布式系统“逼到墙角”,是在负责一个用户积分系统的深夜。当时单机MySQL加单机Redis的架构已经跑了快两年,某天活动运营突然上线了一个签到裂变玩法&#x…

阅读更多 →
React三阶段通关指南:新面试题与踩坑记录全整理 2026/9/9 19:30:45

React三阶段通关指南:新面试题与踩坑记录全整理

前端三阶段里,React 这关到底怎么过?我把新增面试题和踩坑记录一次整理完了 如果你是正在培训机构学前端、刚好走到第三阶段 React 的朋友,或者你已经在用 React 写项目但总感觉自己面试时说不清楚原理,那这篇内容应该能帮上忙。…

阅读更多 →
frp 如何把 INI 配置迁移到 TOML、YAML 或 JSON 格式 2026/9/9 19:27:45

frp 如何把 INI 配置迁移到 TOML、YAML 或 JSON 格式

frp 如何把 INI 配置迁移到 TOML、YAML 或 JSON 格式 【免费下载链接】frp A fast reverse proxy to help you expose a local server behind a NAT or firewall to the internet. 项目地址: https://gitcode.com/GitHub_Trending/fr/frp frp 从 v0.52.0 起支持 TOML、Y…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞