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 compose
或docker-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 Details | Matched 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.properties
或 application.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.properties
或 application.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 Composestart-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.properties
或application.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 是一种流行的技术,可用于为…...
智慧城市/一网统管建设:人员危险行为检测算法,为城市安全保驾护航
随着人们压力的不断增加,经常会看见在日常生活中由于小摩擦造成的大事故。如何在事故发生时进行及时告警,又如何在事故发生后进行证据搜索与事件溯源?旭帆科技智能视频监控人员危险行为/事件检测算法可以给出答案。 全程监控,有源…...
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; }...
学习什么知识不会过时
近况💁🏻 最近这段时间,我真的很糟糕。工作中满负荷做需求,闲了就想玩游戏放松,业余搞些东西的时间很少。本来就有些焦虑,这种状态下更是有些 suffering。究其原因,都是因为部门转换的问题。 一…...
C# WPF上位机开发(ExtendedWPFToolkit扩展包使用)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 虽然个人人为当前的c# wpf内容已经足够多,但是肯定还是有很多个性化的需求没有满足。比如说不够好看,比如说动画效果不好&a…...
【IOS开发】传感器 SensorKit
资源 官方文档 https://developer.apple.com/search/?qmotion%20graph&typeDocumentation SensorKit 使应用程序能够访问选定的原始数据或系统从传感器处理的指标。 步骤信息加速度计或旋转速率数据用户手腕上手表的配置物理环境中的环境光有关用户日常通勤或旅行的详细…...
【C++】封装:练习案例-点和圆的关系
练习案例:点和圆的关系 设计一个圆形类(Circle),和一个点类(Point),计算点和圆的关系。 思路: 1)创建点类point.h和point.cpp 2)创建圆类circle.h和circle…...
【vue】正则表达式限制input的输入:
文章目录 1、只能输入大小写字母、数字、下划线:/[^\w_]/g2、只能输入小写字母、数字、下划线:/[^a-z0-9_]/g3、只能输入数字和点:/[^\d.]/g4、只能输入小写字母、数字、下划线:/[^\u4e00-\u9fa5]/g5、只能输入数字:/\…...
异步导入中使用SecurityUtils.getSubject().getPrincipal()获取LoginUser对象导致的缓存删除失败问题
结论 SecurityUtils.getSubject().getPrincipal()实际用的也是ThreadLocal,而ThreadLocal和线程绑定,异步会导致存数据丢失,注意! 业务背景 最近,系统偶尔会出现excel导入成功,但系统却提示存在进行中的…...
大数据机器学习深度解读决策树算法:技术全解与案例实战
大数据机器学习深度解读决策树算法:技术全解与案例实战 本文深入探讨了机器学习中的决策树算法,从基础概念到高级研究进展,再到实战案例应用,全面解析了决策树的理论及其在现实世界问题中的实际效能。通过技术细节和案例实践&…...
【开源Mongdb驱动】SpringBoot+Mybatis+Mongdb融合使用教程
#【开源Mongdb驱动】SpringBootMybatisMongdb无缝融合使用教程 介绍 本文介绍一款基于JAVA开源的mongodb jdbc驱动为基础的无缝与springbootmybatis融合使用案例 mongodb JDBC 使用案例 https://blog.csdn.net/gongbing798930123/article/details/135002530 《基于开源的JA…...
freeRTOS使用
创建第一个FreeRTOS程序 1、官网源码下载 (1)进入FreeRTOS官网FreeRTOS professional services for application and RTOS development and consulting. FreeRTOS is an Open Source Code RTOS (2)点击下载FreeRTOS 2、处理目录 &…...
基于vue的线上点餐系统论文
基于vue的线上点餐系统 摘要 随着信息技术在管理上越来越深入而广泛的应用,管理信息系统的实施在技术上已逐步成熟。本文介绍了线上点餐系统的开发全过程。通过分析线上点餐系统管理的不足,创建了一个计算机管理线上点餐系统的方案。文章介绍了线上点餐…...
【Windows】windows11右键默认显示更多选项的办法
Windows11系统的右键菜单显示,需要多点一次“显示更多选项”才能看到所有菜单内容,按下面步骤简单设置一下就能恢复成Windows经典的右键菜单显示。 1. 2.输入命令【reg.exe add "HKCU\Software\Classes\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a…...
推荐使用过很好用的api,含免费次数
IP归属地-IPv4城市级:根据IP地址查询归属地信息,支持到城市级,包含国家、省、市、和运营商等信息。IP归属地-IPv6城市级:根据IP地址(IPv6版本)查询归属地信息,支持到中国大陆地区(不…...
QT最大线程并发
声明一个处理函数;int timeTask(); 头文件: #include <QtConcurrent> #include <QFuture> 并发处理改函数的任务,直到处理完成: QFuture<int> ft QtConcurrent::run(this, &ch72_concurrent::timeTask);while (!f…...
在金属/绝缘体/p-GaN栅极高电子迁移率晶体管中同时实现大的栅压摆幅和增强的阈值电压稳定性
标题:Simultaneously Achieving Large Gate Swing and Enhanced Threshold Voltage Stability in Metal/Insulator/p-GaN Gate HEMT (IEDM2023) 摘要 摘要:对于增强型GaN功率晶体管的发展,栅压摆幅和阈值电压稳定性通常是互相排斥的。本文展…...
Redis第1讲——入门简介
Java并发编程的总结和学习算是告一段落了,这段时间思来想去,还是决定把Redis再巩固和学习一下。毕竟Redis不论是在面试还是实际应用中都是极其重要的,在面试中诸如Redis的缓存问题、热key、大key、过期策略、持久化机制等;还有在实…...
数据科学知识库
我的博客是一个技术分享平台,涵盖了机器学习、数据可视化、大数据分析、数学统计学、推荐算法、Linux命令及环境搭建,以及Kafka、Flask、FastAPI、Docker等组件的使用教程。 在这个信息时代,数据已经成为了一种新的资源,而机…...
设计模式——责任链模式(行为模式)
引言 责任链模式是一种行为设计模式, 允许你将请求沿着处理者链进行发送。 收到请求后, 每个处理者均可对请求进行处理, 或将其传递给链上的下个处理者。 问题 假如你正在开发一个在线订购系统。 你希望对系统访问进行限制, 只允…...
【谭浩强C语言:前八章编程题(多解)】
文章目录 第一章1. 求两个整数之和(p7) 第二章2. 求三个数中的较大值(用函数)(p14、p107)3.求123...n(求n的阶乘,用for循环与while循环)(P17)1.循环求n的阶乘2.递归求n的阶乘(n< 10) 4.有M个学生,输出成绩在80分以上的学生的学…...
程序人生15年人生感悟
计算机程序员并不是一件什么高大上的职业。而仅仅是一份普通的工作。就像医生能治病救人,我们能治蓝屏救程序,我们都在为这个世界默默的做出自己的贡献。刻意或无意宣扬某个职业高大上,其实质是对其它行业从业者的不公平。但是有些人却常常这…...
React与AJAX
大家好,欢迎来到 《React与AJAX》 课程。在这一课中,我们将学习如何在 React 中使用 AJAX。 什么是 AJAX? AJAX(Asynchronous JavaScript and XML)是一种使用 JavaScript 在浏览器和服务器之间进行异步通信的技术。A…...
C++ STL泛型算法
泛型算法 <algorithm>定义了大约 80 个标准算法。 它们操作由一对迭代器定义的(输入)序列或单一迭代器定义的(输出)序列。 当对两个序列进行拷贝、比较操作时,第一个序列由一对迭代器[b,e)表示,但第…...
使用OpenSSL生成PKCS#12格式的证书和私钥
要使用OpenSSL生成PKCS12格式的证书和私钥,可以按照以下步骤进行操作: 1. 安装OpenSSL 首先,确保已在计算机上安装了OpenSSL。可以从OpenSSL官方网站(https://www.openssl.org/)下载并安装适用于您的操作系统的版本。…...
超详细 | 哈里斯鹰优化算法原理、实现及其改进与利用(Matlab/Python)
测试函数为F9 在MATLAB中执行程序结果如下: 在Python中执行程序结果如下: 哈里斯鹰优化算法(Harris Hawks Optimization , HHO)是 Heidari等[1]于2019年提出的一种新型元启发式算法,设计灵感来源于哈里斯鹰在捕食猎物过程中的合作行为以及突…...
git 切换远程地址分支 推送到指定地址分支 版本回退
切换远程地址 1、切换远程仓库地址: 方式一:修改远程仓库地址 【git remote set-url origin URL】 更换远程仓库地址,URL为新地址。 git remote set-url https://gitee.com/xxss/omj_gateway.git 方式二:先删除远程仓库地址&…...
YOLOv3-YOLOv8的一些总结
0 写在前面 这个文档主要总结YOLO系列的创新点,以YOLOv3为baseline。参考(抄)了不少博客,就自己看看吧。有些模型的trick不感兴趣就没写进来,核心的都写了。 YOLO系列的网络都由四个部分组成:Input、Backbone、Neck、Prediction…...
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)控件的部分公共属性和事件
鸿蒙(HarmonyOS)项目方舟框架(ArkUI)控件的部分公共属性和事件 一、操作环境 操作系统: Windows 10 专业版 IDE:DevEco Studio 3.1 SDK:HarmonyOS 3.1 二、公共属性 常用的公共属性有: 宽(with)、高(height)、…...
最新同步云盘推荐:实现轻松管理与便捷同步的理想选择
同步云盘——可以轻松管理文件,同步不同设备之间的文件,受到了许多用户的青睐!目前国内有什么值得推荐的同步云盘? Zoho Workdrive同步云盘,助您轻松管理文件,进行多设备同步,便捷使用文件&…...
怎么通过做网站赚钱/seo搜索引擎优化关键词
L2-016. 愿天下有情人都是失散多年的兄妹 时间限制200 ms内存限制65536 kB代码长度限制8000 B判题程序Standard作者陈越呵呵。大家都知道五服以内不得通婚,即两个人最近的共同祖先如果在五代以内(即本人、父母、祖父母、曾祖父母、高祖父母)则…...
wordpress系统付费/软文代写平台
Unity 3D 是目前主流的游戏开发引擎,有数据显示,全球最赚钱的 1000 款手机游戏中,有 30% 是使用 Unity 3D 开发出来的。尤其在 VR 设备中,Unity 3D 游戏开发引擎具有统治地位。 Unity 3D 能够创建实时、可视化的 2D 和 3D 动画、…...
衢州建设职业学校网站/北京官网优化公司
今天早上在写一个.scala文件时,控制台一直出现这个错误。 原本以为这个错误是找不到URL地址,不能使用local[*]这种模式,后来发现这个错误的根本是在上一行,也就是: SparkContext: Error initializing SparkContext 原…...
学校网站建设的申请/南昌企业网站建设
基于SSMMavenBootStrapMySQL的在线商城系统[实战视频]—304人已学习 课程介绍 本课程基于MavenSpringSpringMVCMyBatisMySQLBootStrap技术,使用IntelliJ IDEA开发工具。 主要是锻炼SSM技术的运用,通过项目实战,加强对框架技术的理解和运用…...
洛阳平台公司/seo成都培训
可以使用 IN 子句代替许多 OR 条件。要想理解 IN 子句,还以表 employee_tbl 为例,它的所有记录如下所示:mysql> SELECT * FROM employee_tbl;--------------------------------------------| id | name | work_date | daily_typing_pages …...
便宜网站建设成都/在线企业管理培训课程
临界区(criticalSection) 又称阻塞,它能够使一段代码只由一个线程来执行,其它线程被挡在这段代码之外,直到第一个线程执行完代码。临界区的使用主要涉及如下API函数: initializeCriticalSection(), 在临界区…...