Liquibase RollBack против Dockerized Postgresql?

Имея приложение Spring-Boot с Dockerized и базу данных PostgreSQL, как я могу выполнить команду cmd

mvn liquibase:rollback -Dliquibase.rollbackCount=4 -Dliquibase.password=*********

или любой эквивалент против базы данных? Обратите внимание, что все мои изменения находятся в папке ресурсов проекта Spring-Boot, и я могу запустить указанную выше CMD из корня проекта.

Это файл докеров приложения Spring-Boot:

FROM openjdk:8-jre-alpine

ENV SPRING_OUTPUT_ANSI_ENABLED=ALWAYS \
    JAVA_OPTS=""

CMD java ${JAVA_OPTS} -Djava.security.egd=file:/dev/./urandom -jar /app.war

EXPOSE 8080 5701/udp

ADD *.war /app.war

и это служба PostgreSQL внутри docker-compose:

app-postgresql:
    image: postgres:9.6.5
    mem_limit: 256m
    environment:
        - POSTGRES_USER=${DB_USER}
        - POSTGRES_PASSWORD=${DB_PWD}

Я могу войти в контейнер приложения, но не установлен файл журнала изменений, maven или liquibase, поскольку все упаковано в app.war

Обновить

Я думал сделать резервную копию докеризованной БД, восстановить ее локально, а затем запустить команду отката из корня проекта. В конце концов, я сделал резервную копию локальной БД и восстановил ее в контейнере.

Наверное, это самый простой способ. Однако я надеюсь, что существует альтернативный способ без необходимости перемещать и восстанавливать БД.


person 1Z10    schedule 08.12.2018    source источник


Ответы (2)


Вы можете выполнить миграцию с файлом WAR. Найдите больше здесь "Запустите Migrator, извлекая журналы изменений из файла .WAR". Поэтому, если вы можете выполнять команду внутри контейнера, вы также сможете выполнить Liquibase.

person bilak    schedule 09.12.2018

Я сделал это, следуя своей «странной» идее.

Сначала я сделал резервную копию докеризованной БД, затем восстановил ее в локальной БД.

Локально мне удалось запустить команду отката и сделать необходимые обновления.

В конце концов я восстановил его на докеризованной БД.

Надеюсь, это поможет, если кто-то еще столкнется с такой же проблемой.

person 1Z10    schedule 09.12.2018