使用 Liquibase 的 Spring Boot 未在 Docker 中执行

Posted

技术标签:

【中文标题】使用 Liquibase 的 Spring Boot 未在 Docker 中执行【英文标题】:Spring boot with Liquibase not executing in Docker 【发布时间】:2021-07-26 13:10:09 【问题描述】:

我是 Docker 新手,我一直在尝试实现数据库(Postgresql)和 API(带有 liquibase 的 Spring Boot)的容器化。但是,似乎 liquibase 没有运行。请参阅以下内容供您参考。提前致谢。

application.properties:

spring.datasource.url=jdbc:postgresql://db:5432/demo
spring.datasource.username=compose-postgres
spring.datasource.password=compose-postgres
spring.jpa.hibernate.ddl-auto=none
spring.liquibase.change-log=classpath:db/liquibase-changelog.xml

docker-compose.yml:

version: '2'

 services:
   api:
     image: 'docker-spring-boot-postgres:latest'
     build:
       context: .
     container_name: api
     depends_on:
       - db
     environment:
       - SPRING_DATASOURCE_URL=jdbc:postgresql://db:5432/demo
       - SPRING_DATASOURCE_USERNAME=compose-postgres
       - SPRING_DATASOURCE_PASSWORD=compose-postgres
       - SPRING_JPA_HIBERNATE_DDL_AUTO=update
     ports:
       - "8080:8080"
  db:
    image: 'postgres:13.1-alpine'
    container_name: db
    environment:
      - POSTGRES_USER=compose-postgres
      - POSTGRES_PASSWORD=compose-postgres
      - POSTGRES_DB=demo

Dockerfile:

FROM adoptopenjdk:11-jre-hotspot
ARG JAR_FILE=build/libs/*.jar
COPY $JAR_FILE app.jar
ENTRYPOINT ["java","-jar","/app.jar"]

liquibase-changelog.xml:

<?xml version="1.0" encoding="UTF-8"?>
<databaseChangeLog xmlns="https://www.liquibase.org/xml/ns/dbchangelog"
    xmlns:xsi="https://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="https://www.liquibase.org/xml/ns/dbchangelog
    https://www.liquibase.org/xml/ns/dbchangelog/dbchangelog-3.1.xsd">

  <include file="changelog/01-createTableUser-changelog.sql" relativeToChangelogFile="true"/>

  <!-- more <include> tags go here -->
</databaseChangeLog>

liquibase 目录结构:

用于运行的命令:

docker-compose build
docker-compose up

【问题讨论】:

我们可以看到错误吗?我只看到了配置(感谢详细的文档),但没有看到错误。 【参考方案1】:

我看到已经提供了所有的配置。您能否还提供您收到的错误,您使用的是什么 liquibase 命令?

【讨论】:

以上是关于使用 Liquibase 的 Spring Boot 未在 Docker 中执行的主要内容,如果未能解决你的问题,请参考以下文章

使用 Liquibase 的 Spring Boot 未在 Docker 中执行

具有 Liquibase 重载属性的 Spring-boot

使用 Spring-Boot 启动时的 Liquibase 迁移不起作用

使用 H2 数据库和 Liquibase 配置 Spring Boot

spring boot 中的多个 liquibase 配置

Spring Boot 和 Liquibase 示例