是否有一种简单的方法可以在部署时隔离Liquibase执行的上下文?

问题描述 投票:0回答:1

我正在为使用Spring Boot的新服务定义架构。我正在寻找一种方法来配置Liquibase部署,以便仅在某个配置文件处于活动状态时执行。我还想在可能的情况下禁用所有其他组件,以避免在数据库部署完成之前来自服务逻辑的操作。

我已成功启动我的服务,并看到我的变更集已执行。我不确定除了对所有组件进行极端配置文件操作之外的其他方法,以使我的Liquibase配置文件成为独立执行,从而避免在应用程序上下文中实例化组件。

这是我的配置:

spring:
  application:
    name: liquibase-spring-postgres-example
  liquibase:
    enabled: false
---
spring:
  profiles: dev
  datasource:
    username: ${service_user}
    password: ${DATASOURCE_DB_PASS}
    url: jdbc:postgresql://{db}:{port}/schema
  liquibase:
    url: jdbc:postgresql://{db}:{port}/schema
---
spring:
  profiles: liquibase
  datasource:
    ## provided to get spring boot to start up
    url: jdbc:postgresql://{db}:{port}/schema
  liquibase:
    user: ${liquibase_user}
    password: ${LIQUIBASE_DB_PASS}
    contexts: release
    enabled: true

我已经尝试在我发现here的评论的帮助下成功禁用嵌入式jetty服务器之类的东西:

spring:
...
  main:
    web-application-type: none

是否存在除所有bean的极限配置文件定义之外的方法,或者在Spring Boot之外手动运行Liquibase以实现此目的?

spring-boot deployment liquibase
1个回答
1
投票

要针对spring-boot jar文件执行脚本,这样可以帮助您:

java -cp /path/to/spring-boot-fat.jar \
    -Dloader.system=true \
    -Dloader.main=liquibase.integration.commandline.Main \
    org.springframework.boot.loader.PropertiesLauncher \
    --changeLogFile=db/changelog/db-changelog-master.xml \
    --driver=org.h2.Driver \
    --url="jdbc:h2:~/h2db/liquibase-test;AUTO_SERVER=TRUE;DB_CLOSE_DELAY=-1;DB_CLOSE_ON_EXIT=FALSE" \
    --password=sa \
    --username=sa \
    updateSQL

编辑:这是针对spring-boot 1.5.x测试的,但我猜它也应该对2.x起作用。

© www.soinside.com 2019 - 2024. All rights reserved.