ARTICLE DETAIL

资讯详情

深耕郑州网站建设与运营推广的一线实战洞察。

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

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),仅供参考
返回列表