Liquibase RollBack против Dockerized Postgresql? - PullRequest
0 голосов
/ 08 декабря 2018

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

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

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

Это dockerfile из Spring-Boot app :

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

Update

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

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

Ответы [ 2 ]

0 голосов
/ 10 декабря 2018

Вы можете запустить миграцию для файла WAR.Искать больше здесь «Запустить Migrator, извлекая журналы изменений из файла .WAR».Таким образом, если вы можете выполнить команду внутри контейнера, вы также сможете выполнить и жидкость.

0 голосов
/ 09 декабря 2018

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

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

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

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

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

...