当前位置: 首页 > news >正文

Spring Boot Docker Compose 支持中文文档

本文为官方文档直译版本。原文链接

Spring Boot Docker Compose 支持中文文档

    • 引言
    • 服务连接
    • 自定义镜像
    • 跳过特定的容器
    • 使用特定Compose文件
    • 等待容器就绪
    • 控制 Docker Compose 的生命周期
    • 激活 Docker Compose 配置文件

引言

Docker Compose 是一种流行的技术,可用于为应用程序所需的服务定义和管理多个容器。通常会在应用程序旁边创建一个 compose.yml 文件,用于定义和配置服务容器。
使用 Docker Compose 的典型工作流程是:运行 docker compose up,在应用程序中连接已启动的服务,完成后再运行 docker compose down
Spring-boot-docker-compose 模块可以包含在项目中,为使用 Docker Compose 处理容器提供支持。将模块依赖关系添加到你的构建中,如以下列表中的 Maven 和 Gradle 所示:

<dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-docker-compose</artifactId><optional>true</optional></dependency>
</dependencies>
dependencies {developmentOnly("org.springframework.boot:spring-boot-docker-compose")
}

为了让 Spring Boot 支持正常工作,路径上必须有 docker composedocker-compose CLI 应用程序。

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

  • 在应用程序目录中搜索 compose.yml 和其他常见的 compose 文件名
  • 使用发现的 compose.yml 调用 docker compose up
  • 为每个受支持的容器创建服务连接Beans
  • 当应用程序关闭时,调用 docker compose stop

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

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

服务连接

服务连接是与任何远程服务的连接。Spring Boot 的自动配置可以获取服务连接的详细信息,并利用它们建立与远程服务的连接。这样做时,连接细节优先于任何与连接相关的配置属性。
使用 Spring Boot 的 Docker Compose 支持时,服务连接会建立到容器映射的端口。

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

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

Connection DetailsMatched on
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” 的容器

自定义镜像

有时,您可能需要使用自己版本的镜像来提供服务。您可以使用任何自定义镜像,只要其行为方式与标准镜像相同即可。具体来说,标准镜像支持的环境变量也必须在自定义镜像中使用。
如果你的映像使用不同的名称,你可以在 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

跳过特定的容器

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

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

使用特定Compose文件

如果编译文件与应用程序不在同一目录下,或者文件名不同,可以在 application.propertiesapplication.yaml 中使用 spring.docker.compose.file 指向不同的文件。属性可以定义为准确的路径,也可以定义为与应用程序相对的路径。
例如:

spring:docker:compose:file: "../my-compose.yml"

等待容器就绪

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.propertiesapplication.yaml 文件中更改超时值:

spring:docker:compose:readiness:tcp:connect-timeout: 10sread-timeout: 5s

整体超时可使用 spring.docker.compose.readiness.timeout 进行配置。

控制 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 退出时停止 Docker Compose

此外,你还可以使用 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-stopstart:command: startstop:command: downtimeout: 1m

激活 Docker Compose 配置文件

Docker Compose 配置文件与 Spring 配置文件类似,可以让你针对特定环境调整 Docker Compose 配置。如果要激活特定的 Docker Compose 配置文件,可以在application.propertiesapplication.yaml 文件中使用 spring.docker.compose.profiles.active 属性:

spring:docker:compose:profiles:active: "myprofile"

相关文章:

Spring Boot Docker Compose 支持中文文档

本文为官方文档直译版本。原文链接 Spring Boot Docker Compose 支持中文文档 引言服务连接自定义镜像跳过特定的容器使用特定Compose文件等待容器就绪控制 Docker Compose 的生命周期激活 Docker Compose 配置文件 引言 Docker Compose 是一种流行的技术&#xff0c;可用于为…...

智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航

随着人们压力的不断增加&#xff0c;经常会看见在日常生活中由于小摩擦造成的大事故。如何在事故发生时进行及时告警&#xff0c;又如何在事故发生后进行证据搜索与事件溯源&#xff1f;旭帆科技智能视频监控人员危险行为/事件检测算法可以给出答案。 全程监控&#xff0c;有源…...

C语言:求和1+1/2-1/3+1/4-1/5+……-1/99+1/100

#include<stdio.h> int main() {int i 0;double sum 0.0;int flag 1;for (i 1;i < 100;i){sum 1.0 / i * flag;flag -flag;}printf("sum%lf\n", sum);return 0; }...

学习什么知识不会过时

近况&#x1f481;&#x1f3fb; 最近这段时间&#xff0c;我真的很糟糕。工作中满负荷做需求&#xff0c;闲了就想玩游戏放松&#xff0c;业余搞些东西的时间很少。本来就有些焦虑&#xff0c;这种状态下更是有些 suffering。究其原因&#xff0c;都是因为部门转换的问题。 一…...

C# WPF上位机开发(ExtendedWPFToolkit扩展包使用)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 虽然个人人为当前的c# wpf内容已经足够多&#xff0c;但是肯定还是有很多个性化的需求没有满足。比如说不够好看&#xff0c;比如说动画效果不好&a…...

【IOS开发】传感器 SensorKit

资源 官方文档 https://developer.apple.com/search/?qmotion%20graph&typeDocumentation SensorKit 使应用程序能够访问选定的原始数据或系统从传感器处理的指标。 步骤信息加速度计或旋转速率数据用户手腕上手表的配置物理环境中的环境光有关用户日常通勤或旅行的详细…...

【C++】封装:练习案例-点和圆的关系

练习案例&#xff1a;点和圆的关系 设计一个圆形类&#xff08;Circle&#xff09;&#xff0c;和一个点类&#xff08;Point&#xff09;&#xff0c;计算点和圆的关系。 思路&#xff1a; 1&#xff09;创建点类point.h和point.cpp 2&#xff09;创建圆类circle.h和circle…...

【vue】正则表达式限制input的输入:

文章目录 1、只能输入大小写字母、数字、下划线&#xff1a;/[^\w_]/g2、只能输入小写字母、数字、下划线&#xff1a;/[^a-z0-9_]/g3、只能输入数字和点&#xff1a;/[^\d.]/g4、只能输入小写字母、数字、下划线&#xff1a;/[^\u4e00-\u9fa5]/g5、只能输入数字&#xff1a;/\…...

异步导入中使用SecurityUtils.getSubject().getPrincipal()获取LoginUser对象导致的缓存删除失败问题

结论 SecurityUtils.getSubject().getPrincipal()实际用的也是ThreadLocal&#xff0c;而ThreadLocal和线程绑定&#xff0c;异步会导致存数据丢失&#xff0c;注意&#xff01; 业务背景 最近&#xff0c;系统偶尔会出现excel导入成功&#xff0c;但系统却提示存在进行中的…...

大数据机器学习深度解读决策树算法:技术全解与案例实战

大数据机器学习深度解读决策树算法&#xff1a;技术全解与案例实战 本文深入探讨了机器学习中的决策树算法&#xff0c;从基础概念到高级研究进展&#xff0c;再到实战案例应用&#xff0c;全面解析了决策树的理论及其在现实世界问题中的实际效能。通过技术细节和案例实践&…...

【开源Mongdb驱动】SpringBoot+Mybatis+Mongdb融合使用教程

#【开源Mongdb驱动】SpringBootMybatisMongdb无缝融合使用教程 介绍 本文介绍一款基于JAVA开源的mongodb jdbc驱动为基础的无缝与springbootmybatis融合使用案例 mongodb JDBC 使用案例 https://blog.csdn.net/gongbing798930123/article/details/135002530 《基于开源的JA…...

freeRTOS使用

创建第一个FreeRTOS程序 1、官网源码下载 &#xff08;1&#xff09;进入FreeRTOS官网FreeRTOS professional services for application and RTOS development and consulting. FreeRTOS is an Open Source Code RTOS &#xff08;2&#xff09;点击下载FreeRTOS 2、处理目录 &…...

基于vue的线上点餐系统论文

基于vue的线上点餐系统 摘要 随着信息技术在管理上越来越深入而广泛的应用&#xff0c;管理信息系统的实施在技术上已逐步成熟。本文介绍了线上点餐系统的开发全过程。通过分析线上点餐系统管理的不足&#xff0c;创建了一个计算机管理线上点餐系统的方案。文章介绍了线上点餐…...

【Windows】windows11右键默认显示更多选项的办法

Windows11系统的右键菜单显示&#xff0c;需要多点一次“显示更多选项”才能看到所有菜单内容&#xff0c;按下面步骤简单设置一下就能恢复成Windows经典的右键菜单显示。 1. 2.输入命令【reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a…...

推荐使用过很好用的api,含免费次数

IP归属地-IPv4城市级&#xff1a;根据IP地址查询归属地信息&#xff0c;支持到城市级&#xff0c;包含国家、省、市、和运营商等信息。IP归属地-IPv6城市级&#xff1a;根据IP地址&#xff08;IPv6版本&#xff09;查询归属地信息&#xff0c;支持到中国大陆地区&#xff08;不…...

QT最大线程并发

声明一个处理函数;int timeTask(); 头文件&#xff1a; #include <QtConcurrent> #include <QFuture> 并发处理改函数的任务&#xff0c;直到处理完成&#xff1a; QFuture<int> ft QtConcurrent::run(this, &ch72_concurrent::timeTask);while (!f…...

在金属/绝缘体/p-GaN栅极高电子迁移率晶体管中同时实现大的栅压摆幅和增强的阈值电压稳定性

标题&#xff1a;Simultaneously Achieving Large Gate Swing and Enhanced Threshold Voltage Stability in Metal/Insulator/p-GaN Gate HEMT (IEDM2023) 摘要 摘要&#xff1a;对于增强型GaN功率晶体管的发展&#xff0c;栅压摆幅和阈值电压稳定性通常是互相排斥的。本文展…...

Redis第1讲——入门简介

Java并发编程的总结和学习算是告一段落了&#xff0c;这段时间思来想去&#xff0c;还是决定把Redis再巩固和学习一下。毕竟Redis不论是在面试还是实际应用中都是极其重要的&#xff0c;在面试中诸如Redis的缓存问题、热key、大key、过期策略、持久化机制等&#xff1b;还有在实…...

数据科学知识库

​ 我的博客是一个技术分享平台&#xff0c;涵盖了机器学习、数据可视化、大数据分析、数学统计学、推荐算法、Linux命令及环境搭建&#xff0c;以及Kafka、Flask、FastAPI、Docker等组件的使用教程。 在这个信息时代&#xff0c;数据已经成为了一种新的资源&#xff0c;而机…...

设计模式——责任链模式(行为模式)

引言 责任链模式是一种行为设计模式&#xff0c; 允许你将请求沿着处理者链进行发送。 收到请求后&#xff0c; 每个处理者均可对请求进行处理&#xff0c; 或将其传递给链上的下个处理者。 问题 假如你正在开发一个在线订购系统。 你希望对系统访问进行限制&#xff0c; 只允…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

day52 ResNet18 CBAM

在深度学习的旅程中&#xff0c;我们不断探索如何提升模型的性能。今天&#xff0c;我将分享我在 ResNet18 模型中插入 CBAM&#xff08;Convolutional Block Attention Module&#xff09;模块&#xff0c;并采用分阶段微调策略的实践过程。通过这个过程&#xff0c;我不仅提升…...

uni-app学习笔记二十二---使用vite.config.js全局导入常用依赖

在前面的练习中&#xff0c;每个页面需要使用ref&#xff0c;onShow等生命周期钩子函数时都需要像下面这样导入 import {onMounted, ref} from "vue" 如果不想每个页面都导入&#xff0c;需要使用node.js命令npm安装unplugin-auto-import npm install unplugin-au…...

反射获取方法和属性

Java反射获取方法 在Java中&#xff0c;反射&#xff08;Reflection&#xff09;是一种强大的机制&#xff0c;允许程序在运行时访问和操作类的内部属性和方法。通过反射&#xff0c;可以动态地创建对象、调用方法、改变属性值&#xff0c;这在很多Java框架中如Spring和Hiberna…...

《基于Apache Flink的流处理》笔记

思维导图 1-3 章 4-7章 8-11 章 参考资料 源码&#xff1a; https://github.com/streaming-with-flink 博客 https://flink.apache.org/bloghttps://www.ververica.com/blog 聚会及会议 https://flink-forward.orghttps://www.meetup.com/topics/apache-flink https://n…...

九天毕昇深度学习平台 | 如何安装库?

pip install 库名 -i https://pypi.tuna.tsinghua.edu.cn/simple --user 举个例子&#xff1a; 报错 ModuleNotFoundError: No module named torch 那么我需要安装 torch pip install torch -i https://pypi.tuna.tsinghua.edu.cn/simple --user pip install 库名&#x…...

安宝特方案丨船舶智造的“AR+AI+作业标准化管理解决方案”(装配)

船舶制造装配管理现状&#xff1a;装配工作依赖人工经验&#xff0c;装配工人凭借长期实践积累的操作技巧完成零部件组装。企业通常制定了装配作业指导书&#xff0c;但在实际执行中&#xff0c;工人对指导书的理解和遵循程度参差不齐。 船舶装配过程中的挑战与需求 挑战 (1…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)

漏洞概览 漏洞名称&#xff1a;Apache Flink REST API 任意文件读取漏洞CVE编号&#xff1a;CVE-2020-17519CVSS评分&#xff1a;7.5影响版本&#xff1a;Apache Flink 1.11.0、1.11.1、1.11.2修复版本&#xff1a;≥ 1.11.3 或 ≥ 1.12.0漏洞类型&#xff1a;路径遍历&#x…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

NPOI Excel用OLE对象的形式插入文件附件以及插入图片

static void Main(string[] args) {XlsWithObjData();Console.WriteLine("输出完成"); }static void XlsWithObjData() {// 创建工作簿和单元格,只有HSSFWorkbook,XSSFWorkbook不可以HSSFWorkbook workbook new HSSFWorkbook();HSSFSheet sheet (HSSFSheet)workboo…...