Spring Boot 对 Docker Compose 的支持

这篇具有很好参考价值的文章主要介绍了Spring Boot 对 Docker Compose 的支持。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

https://docs.spring.io/spring-boot/docs/3.2.0/reference/htmlsingle/#features.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")
}

注意:为了使Spring Boot的支持能够正常工作,docker composedocker-compose CLI应用程序需要在你的路径中。

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

  • 在应用程序目录中搜索compose.yml和其它常见的compose文件名
  • 使用找到的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

服务连接

服务连接是到任何远程服务的连接。Spring Boot的自动配置可以消耗服务连接的详细信息,并使用它们来建立与远程服务的连接。在这样做时,连接详细信息优先于任何与连接相关的配置属性。

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

注意:Docker Compose通常以这样的方式使用,即将容器内部的端口映射到计算机上的临时端口。例如,PostgreSQL服务器可能在容器内部使用端口5432运行,但在本地映射到完全不同的端口。服务连接将始终发现和使用本地映射的端口。

通过使用容器的镜像名称来建立服务连接。目前支持以下服务连接:
Spring Boot 对 Docker Compose 的支持,spring boot
Spring Boot 对 Docker Compose 的支持,spring boot

自定义镜像

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

如果你的镜像使用不同的名称,则可以在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文件

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

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

等待容器就绪

通过Docker Compose启动的容器可能需要一些时间才能完全就绪。检查就绪状态的推荐方法是在compose.yml文件中的服务定义下添加healthcheck部分。

由于compose.yml文件中省略健康检查配置并不罕见,因此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=10s
spring.docker.compose.readiness.tcp.read-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退出时停止它

此外,还可以使用spring.docker.compose.start.command属性来更改是使用docker compose up还是docker compose startspring.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

激活Docker Compose profile

Docker Compose profile类似于Spring profile,它允许你为特定环境调整Docker Compose配置。如果要激活特定的Docker Compose profile,可以在application.propertiesapplication.yaml文件中使用spring.docker.compose.profiles.active属性:文章来源地址https://www.toymoban.com/news/detail-834145.html

spring.docker.compose.profiles.active=myprofile

到了这里,关于Spring Boot 对 Docker Compose 的支持的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • JDK1.8 支持的spring boot版本问题

    最近,官方的spring boot版本已经更新到了3.0.3,跨入3这个大版本了,但是发现如果JDK依然是1.8则项目不能启动会报如下的错误:  错误提示是java的版本,此时我们修改pom.xml文件,将spring boot的版本降低即可:如下:  

    2024年02月11日
    浏览(45)
  • spring boot es 支持中文精准查询的方法QueryBuilders.termQuery

    1,问题: 当我们使用QueryBuilders.termQuery方法对指定的字段进行精准查询时,如果查询的条件为英文字母时,是没有问题的 当查询条件为中文时,则可能会查询不出数据,如下:当algorithmTag为中文时,即使es中有对应的记录,也是查询不出来的 附:依赖的es版本: 2,解决方法

    2024年02月11日
    浏览(46)
  • Docker部署spring boot项目

    在docker部署时首先要保证一般部署能够访问。 目前主流的java框架为spring,软件包为jar包,只需以jar为基础构建容器环境。打包为jar后只需要jvm就可以运行,因此需要以jdk为镜像构建容器。 基于命令构建jdk环境 拉取openjdk镜像: docker pull openjdk:8 上传web文件,启动容器和web服务

    2024年02月03日
    浏览(39)
  • Docker化Spring Boot应用

    本文翻译自国外论坛 medium,原文地址:https://medium.com/@bubu.tripathy/dockerizing-your-spring-boot-application-75bf2c6568d0 Docker 是一个强大的工具,允许开发人员将他们的应用程序打包在容器中可以在任何平台上轻松部署和运行。在对 Spring Boot 应用程序进行 Docker 化时,每个开发人员都应遵

    2024年02月08日
    浏览(40)
  • Bee2.1.8支持Spring Boot 3.0.11,active命令行选择多环境,多表查改增删(bee-spring-boot发布,更新maven)

    天下大势,分久必合! Hibernate/MyBatis+ plus +Sharding JDBC + Jpa+ Spring data+ GraphQL+ App ORM (Android, 鸿蒙)= Bee Spring Cloud 微服务使用数据库更方便: Bee + Spring Boot; 轻松支持多数据源,Sharding, Mongodb. 要整合一堆的工具,还不如只用一个小巧又功能强大的工具。犹如 JAVA 界的数据源连接池

    2024年02月07日
    浏览(34)
  • 快速解决Spring Boot跨域困扰:使用CORS实现无缝跨域支持

    什么是跨域? 跨域(Cross-Origin Issue)的存在是因为浏览器的安全限制,它防止恶意网站利用跨域请求来获取用户的敏感信息或执行恶意操作。浏览器通过实施同源策略来限制网页在不同源之间进行资源访问或交互的情况。当一个网页的协议、域名、或端口与当前页面的协议、

    2024年02月12日
    浏览(55)
  • Spring Boot 3.2发布:大量Java 21的支持上线,改进可观测性

    就在今天凌晨,Spring Boot 3.2正式发布了!该版本是在Java 21正式发布之后的重要支持版本,所以在该版本中包含大量对Java 21支持的优化。 下面,我们分别通过Spring官方发布的博文和Josh Long长达80+分钟的介绍视频,一起认识一下Spring Boot 3.2最新版本所带来的全新内容。 官方博文

    2024年02月05日
    浏览(63)
  • [AIGC] Spring Boot Docker 部署指南

    近年来,容器化部署成为了越来越流行的部署方式。Docker 是目前最受欢迎的容器化平台之一,它提供了一种将应用程序与其依赖项打包在一起,并以容器的形式运行的方法。Spring Boot 是一种用于快速开发和微服务架构的框架,它与 Docker 结合使用可以简化应用的部署和管理过

    2024年01月17日
    浏览(59)
  • spring-boot 实现接口转发服务,同时支持get 和 post等多种请求

    spring-boot 实现接口转发服务,同时支持get 和 post等多种请求 (1)新建类:ProxyController.java (2)代码说明: 这是一个 Java 类,名称为 ProxyController 。代码中包含以下方法: handleRequest(HttpServletRequest request) 这是一个公共方法,返回类型为 ResponseEntityString ,会抛出一些可能的异

    2024年02月09日
    浏览(44)
  • DevOps系列文章之 Spring Boot Docker打包

    应用准备容器化,因为几十个应用从测试到发布太麻烦了,而且还会因为环境的因素导致部署中出现各种问题。为了在开发、测试、生产都能保持一致的环境,就引进了容器技术,而目前常用的应用使用基于spring boot的。 在Spring Boot应用中,我们可以约定不同的标识来定义不

    2024年02月11日
    浏览(47)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包