亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

SpringBoot3 整合Docker-Compose的實現(xiàn)步驟

 更新時間:2025年08月07日 10:25:46   作者:秋錦  
本文主要介紹了SpringBoot3 整合Docker-Compose的實現(xiàn)步驟,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧

它有什么優(yōu)勢

同樣的約定大于配置,使用docker-compose時寫的配置可以被SpringBoot3自動發(fā)現(xiàn),在使用它時我們可以減少更多的書寫配置,一切由它自動完成,比如常見的mysql,redis等都可以省略配置了,后面有具體的例子

添加依賴

 <!--  springboot3 -->
    <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>3.3.4</version>
        <relativePath/> <!-- lookup parent from repository -->
    </parent>

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

 <!--  mysql-->
         <dependency>
            <groupId>com.mysql</groupId>
            <artifactId>mysql-connector-j</artifactId>
            <scope>runtime</scope>
        </dependency>

 <!--  redis-->
         <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
        </dependency>

compose推薦配置

注意skip 需要在start_only下才能正常執(zhí)行,不然在start_and_stop模式下應用啟動->啟動容器->關閉容器->關機 ,skip等于無效參數(shù)

spring:
  docker:
    compose:
      profiles:
        active: dev # 指定當前運行環(huán)境
      enabled: true # 開啟compose
      start:
        skip: if_running  # 如果容器在運行就不再去再啟動了
      lifecycle-management: start_only # 這個參數(shù)不會在停機后關閉容器
services:
  mysql:
    image: 'mysql:latest'
    restart: always
    environment:
      - MYSQL_DATABASE=root
      - MYSQL_ROOT_PASSWORD=123456
    ports:
      - '3306:3306'
    profiles:
      - dev
    labels:
      # 特殊參數(shù)特殊處理
      org.springframework.boot.jdbc.parameters: useUnicode=true&allowPublicKeyRetrieval=true&characterEncoding=utf-8&useSSL=false
  redis:
    image: 'redis:latest'
    restart: always
    environment:
      - 'REDIS_PASSWORD=redis'
    ports:
      - '6379:6379'
    profiles:
      - dev

docker-compose生命管理器

org.springframework.boot.docker.compose.lifecycle.DockerComposeLifecycleManager 負責整合后的compose生命管理,包括容器創(chuàng)建,啟動,停止,以及最后的配置自動發(fā)現(xiàn),其中我們需要的配置也在讀取docker-compose.yml后存了下來,

然后在容器啟動完成后隨之發(fā)布事件DockerComposeServicesReadyEvent,在被DockerComposeServiceConnectionsApplicationListener監(jiān)聽到后開始注冊配置

    private void registerConnectionDetails(BeanDefinitionRegistry registry, List<RunningService> runningServices) {
         //  runningServices是前面docker-compose中寫的service
        for (RunningService runningService : runningServices) {
            DockerComposeConnectionSource source = new DockerComposeConnectionSource(runningService);
            // getConnectionDetails獲取`spring.factories`里面注冊的`ConnectionDetailsFactory`具體實現(xiàn)
            this.factories.getConnectionDetails(source, false).forEach((connectionDetailsType, connectionDetails) -> {
                register(registry, runningService, connectionDetailsType, connectionDetails);
                this.factories.getConnectionDetails(connectionDetails, false)
                    .forEach((adaptedType, adaptedDetails) -> register(registry, runningService, adaptedType,
                            adaptedDetails));
            });
        }
    };
        }
    }

最后跟以前的配置自動發(fā)現(xiàn)一樣由org.springframework.boot.autoconfigure.service.connection.ConnectionDetails

這個接口負責,比如其中關于mysqldocker-compose整合的實現(xiàn)類為org.springframework.boot.docker.compose.service.connection.mysql.MySqlJdbcDockerComposeConnectionDetailsFactory

注意事項

  • skip 需要搭配 lifecycle-management使用

  • 常規(guī)的environment 參數(shù)由SpringBoot自動發(fā)現(xiàn),一些特殊參數(shù),比如mysql連接參數(shù)可以放到labels下面,格式類似于org.springframework.boot.jdbc.parameters,具體的話可以翻看源碼,一般會直接定義在ConnectionDetails實現(xiàn)類里面

到此這篇關于SpringBoot3 整合Docker-Compose的實現(xiàn)步驟的文章就介紹到這了,更多相關SpringBoot3 整合Docker-Compose內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • spring?batch線上異常定位記錄

    spring?batch線上異常定位記錄

    這篇文章主要為大家介紹了spring?batch線上異常定位記錄及異常解決,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步早日升職加薪
    2022-03-03
  • Java實現(xiàn)數(shù)據(jù)脫敏(Desensitization)的操作指南

    Java實現(xiàn)數(shù)據(jù)脫敏(Desensitization)的操作指南

    數(shù)據(jù)脫敏是指通過對敏感數(shù)據(jù)進行部分或完全隱藏處理,保護敏感信息在存儲和使用過程中的安全性,常見的應用場景包括日志記錄、接口返回、報表展示、數(shù)據(jù)分析等,本文給大家介紹了Java實現(xiàn)數(shù)據(jù)脫敏(Desensitization)的操作指南,需要的朋友可以參考下
    2025-02-02
  • Maven構建生命周期詳細介紹

    Maven構建生命周期詳細介紹

    這篇文章主要介紹了Maven構建生命周期詳細介紹,小編覺得還是挺不錯的,這里分享給大家,需要的朋友可以參考下。
    2017-11-11
  • 淺析Java中內部鎖和顯示鎖的使用

    淺析Java中內部鎖和顯示鎖的使用

    在java中鎖主要兩類,內部鎖synchronized和顯示鎖java.util.concurrent.locks.Lock,本文將來和大家聊聊這兩者的相關知識,需要的可以參考一下
    2023-06-06
  • 一文帶你了解Java設計模式之原型模式

    一文帶你了解Java設計模式之原型模式

    原型模式其實就是從一個對象在創(chuàng)建另外一個可定制的對象,不需要知道任何創(chuàng)建的細節(jié)。本文就來通過示例為大家詳細聊聊原型模式,需要的可以參考一下
    2022-09-09
  • 深入分析JAVA Vector和Stack的具體用法

    深入分析JAVA Vector和Stack的具體用法

    這篇文章主要介紹了深入分析JAVA Vector和Stack的具體用法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-12-12
  • java中文轉全拼工具類分享

    java中文轉全拼工具類分享

    這篇文章主要介紹了一個JAVA將漢字轉換為全拼的工具類,大參考使用吧
    2014-01-01
  • IDEA實現(xiàn)添加 前進后退 到工具欄的操作

    IDEA實現(xiàn)添加 前進后退 到工具欄的操作

    這篇文章主要介紹了IDEA 前進 后退 添加到工具欄的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-02-02
  • Jenkins遠程部署war包過程圖解

    Jenkins遠程部署war包過程圖解

    這篇文章主要介紹了Jenkins遠程部署war包過程圖解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-05-05
  • Java多線程生產(chǎn)者消費者模式實現(xiàn)過程解析

    Java多線程生產(chǎn)者消費者模式實現(xiàn)過程解析

    這篇文章主要介紹了Java多線程生產(chǎn)者消費者模式實現(xiàn)過程解析,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2020-03-03

最新評論