🍊
翻译橙
🍊返回主站🤖参与贡献
  • hello,这里是翻译橙
  • spring boot参考文档
    • 1. 法律
    • 2. 寻求帮助
    • 3. 文档概述
    • 4. 入门
    • 5. 升级Spring Boot
    • 6. 使用 Spring Boot 进行开发
      • 6.1. 构建系统
      • 6.2. 构建你的代码
      • 6.3. 配置类
      • 6.4. 自动配置
      • 6.5. Spring Bean 和依赖注入
      • 6.6. 使用@SpringBootApplication注解
      • 6.7. 运行您的应用程序
      • 6.8. 开发者工具
      • 6.9. 打包您的生产应用程序
      • 6.10. 接下来读什么
    • 7.核心特性
      • 7.1. SpringApplication
      • 7.2. 外部化配置
      • 7.3.Profile配置
      • 7.4.日志记录
      • 7.5.国际化
      • 7.6 面向切面的编程
      • 7.7. JSON
      • 7.8. 任务执行与调度
      • 7.9. 单元测试
        • 7.9.1. 测试范围依赖
        • 7.9.2. 测试 Spring 应用程序
        • 7.9.3. 测试 Spring Boot 应用程序
        • 7.9.4. 测试容器
        • 7.9.5. 测试工具
      • 7.10. Docker Compose 支持
      • 7.11. 测试容器支持
      • 7.12. 创建您自己的自动配置
      • 7.13. Kotlin 支持
      • 7.14 SSL
      • 7.15.接下来要读什么
    • 8. 网络
      • 8.1. Servlet Web 应用程序
        • 8.1.1. “Spring Web MVC 框架”
        • 8.1.2. JAX-RS 和Jersey
        • 8.1.3. 嵌入式 Servlet 容器支持
      • 8.2 反应式网络应用程序
        • 8.2.1. “Spring WebFlux 框架”
        • 8.2.2. 嵌入式反应式服务器支持
        • 8.2.3. 反应式服务器资源配置
      • 8.3. 优雅关机
      • 8.4. spring安全
        • 8.4.1. MVC安全
        • 8.4.2. WebFlux 安全
        • 8.4.3. OAuth2
        • 8.4.4. SAML 2.0
      • 8.5. spring 会话
      • 8.6.GraphQL
      • 8.7. Spring HATEOAS
      • 8.8.接下来读什么
    • 9. 数据
      • 9.1. SQL数据库
      • 9.2. 使用 NoSQL 技术
      • 9.3. 接下来读什么
    • 10. 消息
      • 10.1. JMS
      • 10.2. AMQP
      • 10.3. Apache Kafka 支持
      • 10.4. Apache Pulsar 支持
      • 10.5. RSocket
      • 10.6. Spring Integration
      • 10.7. WebSockets
      • 10.8. What to Read Next
    • 11. IO
      • 11.1. 缓存
      • 11.2. Hazelcast
      • 11.3. Quartz 调度程序
      • 11.4. 发送电子邮件
      • 11.5. 验证
      • 11.6. 调用 REST 服务
      • 11.7. web services
      • 11.8. 使用 JTA 进行分布式事务
      • 11.9. 接下来读什么
    • 12. 容器镜像
  • Spring核心功能
    • 1.IOC容器和Bean简介
      • 1.2. 容器概述
      • 1.3. Bean概述
      • 1.4. 依赖项
        • 1.4.1. 依赖注入
        • 1.4.2. 详细的依赖关系和配置
        • 1.4.3. 使用depends-on
        • 1.4.4. 延迟初始化的 Bean
        • 1.4.5. 自动装配协作者
        • 1.4.6. 方法注入
    • 2. Resources
      • 2.1. 介绍
      • 2.2. Resource接口
      • 2.3. 内置Resource实现
      • 2.4. ResourceLoader接口
      • 2.5. ResourcePatternResolver接口
      • 2.6. ResourceLoaderAware接口
      • 2.7. 资源作为依赖
      • 2.8. 应用程序上下文和资源路径
    • 3. 验证、数据绑定和类型转换
      • 3.1. 使用 Spring 的 Validator 接口进行验证
      • 3.2. 将代码解析为错误消息
      • 3.3. Bean 操作和BeanWrapper
      • 3.4. spring类型转换
      • 3.5. spring字段格式
      • 3.6. 配置全局日期和时间格式
      • 3.7. Java Bean 验证
    • 4. SpEL表达式
    • 5. Spring 面向切面编程
      • 5.1. AOP 概念
      • 5.2. Spring AOP 的能力和目标
      • 5.3. AOP 代理
      • 5.4. @AspectJ 支持
        • 5.4.1. 启用@AspectJ 支持
        • 5.4.2. 声明一个切面
        • 5.4.3. 声明切入点
        • 5.4.4. 声明切点
        • 5.4.5. 切面说明
        • 5.4.6. 切面实例化模型
        • 5.4.7. AOP 示例
      • 5.5. 基于模式的 AOP 支持
      • 5.6. 选择要使用的 AOP 声明样式
      • 5.7. 混合切面类型
      • 5.8. 代理机制
      • 5.9. @AspectJ 代理的程序化创建
      • 5.10. 在 Spring 应用程序中使用 AspectJ
      • 5.11.更多资源
    • 6. Spring AOP API
      • 6.1. Spring中的切入点API
      • 6.2. Spring 中的 Advice API
      • 6.3. Spring 中的 Advisor API
      • 6.4. 使用ProxyFactoryBean创建 AOP 代理
      • 6.5. 简洁的代理定义
      • 6.6. 以编程方式创建 AOP 代理ProxyFactory
      • 6.7. 操作切面对象
      • 6.8. 使用“自动代理”工具
      • 6.9. 使用TargetSource实现
      • 6.10. 定义新的切面类型
    • 7. 空指针安全
    • 8. 数据缓冲器和编解码器
    • 9. 日志
    • 10. 附录
      • 10.1. XML 模式
      • 10.2. 自定义XML Schema
        • 10.2.1. 创作 Schema
        • 10.2.2. 编码一个NamespaceHandler
        • 10.2.3. 使用BeanDefinitionParser
        • 10.2.4. 注册处理程序和模式
        • 10.2.5. 在 Spring XML 配置中使用自定义扩展
        • 10.2.6. 更详细的例子
      • 10.3. 应用程序启动步骤
  • 使用redis实现分布式锁
  • Java 安全标准算法名称
  • JDK 9 JEP
  • JDK 10 JEP
  • 人件
    • 《人件》
    • 第一部分 管理人力资源
      • 01 此时此刻,一个项目正在走向失败
      • 02 干酪汉堡,做一个,卖一个
      • 03 维也纳在等你
      • 04 质量——如果时间允许
      • 05 再谈帕金森定律
      • 06 苦杏素
    • 第二部分 办公环境
      • 07 家具警察
      • 08 “朝九晚五在这里啥也完成不了。”
      • 09 在空间上省钱
      • 间奏曲:生产效率度量和不明飞行物
      • 10 大脑时问与身体时间
      • 11 电话
      • 12 门的回归
      • 13 采取保护步骤
    • 第三部分 正确的人
      • 14 霍恩布洛尔因素
      • 15 谈谈领导力
      • 16 雇一名杂耍演员
      • 17 与他人良好合作
      • 18 童年的终结
      • 19 在这儿很开心
      • 20 人力资本
    • 第四部分 高效团队养成
      • 21 整体大于部分之和
      • 22 黑衣团队
      • 23 团队自毁
      • 24 再谈团队自毁
      • 25 竞争
      • 26 一顿意面晚餐
      • 27 敞开和服
      • 28 团队形成的化学反应
    • 第五部分 沃土
      • 29 自我愈复系统
      • 30 与风险共舞
      • 3l 会议、独白和交流
      • 32 终极管理罪恶得主是……
      • 33 “邪恶”电邮
      • 34 让改变成为可能
      • 35 组织型学习
      • 36 构建社区
    • 第六部分 快乐地工作
      • 37 混乱与秩序
      • 38 自由电子
      • 39 霍尔加·丹斯克
由 GitBook 提供支持
在本页

这有帮助吗?

在GitHub上编辑
  1. spring boot参考文档
  2. 7.核心特性

7.10. Docker Compose 支持

Docker Compose 是一种流行的技术,可用于定义和管理应用程序所需服务的多个容器。通常会在应用程序旁边创建一个compose.yml文件,用于定义和配置服务容器。

Docker Compose 的典型工作流程是运行docker compose up,处理您的应用程序并连接到已启动的服务,然后在完成后运行docker compose down。

spring-boot-docker-compose模块可以包含在项目中,为使用 Docker Compose 处理容器提供支持。将模块依赖项添加到您的构建中,如以下 Maven 和 Gradle 清单所示:

Maven

<dependencies>
    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-docker-compose</artifactId>
        <optional>true</optional>
    </dependency>
</dependencies>

Gradle

dependencies {
    developmentOnly("org.springframework.boot:spring-boot-docker-compose")
}

docker-compose或docker compose CLI 应用程序需要位于您的路径上,以便 Spring Boot 的支持正常工作 。

当此模块作为依赖项包含时,Spring Boot 将执行以下操作:

  • 在应用程序目录中搜索compose.yml和其他常见的撰写文件名

  • 使用找到的compose.yml调用docker compose up

  • 为每个受支持的容器创建服务连接 Bean

  • 当应用程序关闭时调用docker compose stop

如果启动应用程序时 Docker Compose 服务已经在运行,Spring Boot 将仅为每个支持的容器创建服务连接 Bean。它不会再次调用docker compose up,并且当应用程序关闭时也不会调用docker compose stop。

默认情况下,Spring Boot 的 Docker Compose 支持在运行测试时处于禁用状态。要启用它,请设置spring.docker.compose.skip.in-tests为false。

7.10.1. 服务连接

服务连接是与任何远程服务的连接。Spring Boot 的自动配置可以使用服务连接的详细信息,并使用它们来建立与远程服务的连接。执行此操作时,连接详细信息优先于任何与连接相关的配置属性。

当使用 Spring Boot 的 Docker Compose 支持时,服务连接将建立到容器映射的端口。

Docker compose 通常的使用方式是将容器内的端口映射到计算机上的临时端口。例如,Postgres 服务器可能使用端口 5432 在容器内运行,但在本地映射到完全不同的端口。服务连接将始终发现并使用本地映射的端口。

通过容器的镜像名称建立服务连接。目前支持以下服务连接:

连接详情

匹配于

ActiveMQConnectionDetails

名为“symptoma/activemq”的容器

CassandraConnectionDetails

名为“cassandra”的容器

ElasticsearchConnectionDetails

名为“elasticsearch”的容器

JdbcConnectionDetails

名为“gvenzl/oracle-free”、“gvenzl/oracle-xe”、“mariadb”、“mssql/server”、“mysql”或“postgres”的容器

MongoConnectionDetails

名为“mongo”的容器

Neo4jConnectionDetails

名为“neo4j”的容器

OtlpMetricsConnectionDetails

名为“otel/opentelemetry-collector-contrib”的容器

OtlpTracingConnectionDetails

名为“otel/opentelemetry-collector-contrib”的容器

PulsarConnectionDetails

名为“apachepulsar/pulsar”的容器

R2dbcConnectionDetails

名为“gvenzl/oracle-free”、“gvenzl/oracle-xe”、“mariadb”、“mssql/server”、“mysql”或“postgres”的容器

RabbitConnectionDetails

名为“rabbitmq”的容器

RedisConnectionDetails

名为“redis”的容器

ZipkinConnectionDetails

名为“openzipkin/zipkin”的容器。

7.10.2. 自定义镜像

有时您可能需要使用您自己的镜像版本来提供服务。您可以使用任何自定义镜像,只要其行为方式与标准镜像相同即可。具体来说,标准映像支持的任何环境变量也必须在您的自定义映像中使用。

如果您的映像使用不同的名称,您可以在compose.yml文件中使用标签,以便 Spring Boot 可以提供服务连接。使用名为的标签org.springframework.boot.service-connection来提供服务名称。

例如:

services:
  redis:
    image: 'mycompany/mycustomredis:7.0'
    ports:
      - '6379'
    labels:
      org.springframework.boot.service-connection: redis

7.10.3. 跳过特定容器

如果您的compose.yml定义了一个容器映像,并且不想连接到您的应用程序,则可以使用标签来忽略它。任何带有org.springframework.boot.ignore 标签的容器都会被 Spring Boot 忽略。

例如:

services:
  redis:
    image: 'redis:7.0'
    ports:
      - '6379'
    labels:
      org.springframework.boot.ignore: true

7.10.4. 使用特定的撰写文件

如果您的撰写文件与应用程序不在同一目录中,或者名称不同,则可以在您的application.yaml 中使用application.properties或spring.docker.compose.file来指向不同的文件。属性可以定义为精确路径或与应用程序相关的路径。

例如:

spring.docker.compose.file=../my-compose.yml

7.10.5. 等待容器准备就绪

由 Docker Compose 启动的容器可能需要一些时间才能完全准备好。检查准备情况的建议方法是在compose.yml文件中的服务定义下添加一个healthcheck部分。

由于从compose.yml文件中省略healthcheck配置的情况并不少见,因此 Spring Boot 还会直接检查服务准备情况。默认情况下,当可以建立到容器映射端口的 TCP/IP 连接时,容器被视为准备就绪。

您可以通过在compose.yml文件中添加org.springframework.boot.readiness-check.tcp.disable标签来针对每个容器禁用此功能。

例如:

services:
  redis:
    image: 'redis:7.0'
    ports:
      - '6379'
    labels:
      org.springframework.boot.readiness-check.tcp.disable: true

您还可以更改application.properties或application.yaml文件中的超时值:

spring.docker.compose.readiness.tcp.connect-timeout=10s
spring.docker.compose.readiness.tcp.read-timeout=5s

总体超时可以使用spring.docker.compose.readiness.timeout配置。

7.10.6. 控制 Docker Compose 生命周期

默认情况下,Spring Boot在应用程序启动调用docker compose up和关闭时调用docker compose stop。如果您希望有不同的生命周期管理,您可以使用spring.docker.compose.lifecycle-management属性。

支持以下值:

  • none- 不要启动或停止 Docker Compose

  • start-only- 在应用程序启动时启动 Docker Compose 并使其保持运行

  • start-and-stop- 当应用程序启动时启动 Docker Compose,并在 JVM 退出时停止它

此外,您可以使用spring.docker.compose.start.command属性来更改是否使用docker compose up或docker compose start。spring.docker.compose.stop.command允许您配置是否使用docker compose down或docker compose stop。

以下示例显示了如何配置生命周期管理:

spring.docker.compose.lifecycle-management=start-and-stop
spring.docker.compose.start.command=start
spring.docker.compose.stop.command=down
spring.docker.compose.stop.timeout=1m

7.10.7. 激活 Docker Compose 配置文件

Docker Compose 配置文件与 Spring 配置文件类似,它们允许您针对特定环境调整 Docker Compose 配置。如果您想激活特定的 Docker Compose 配置文件,您可以使用您的application.properties或application.yaml文件中的spring.docker.compose.profiles.active属性:

spring.docker.compose.profiles.active=myprofile
上一页7.9.5. 测试工具下一页7.11. 测试容器支持

最后更新于1年前

这有帮助吗?