【问题标题】:Keycloak upgrade while running on docker在 docker 上运行时升级 Keycloak
【发布时间】:2018-06-06 00:26:06
【问题描述】:

我打算使用 docker (http://blog.keycloak.org/2015/04/running-keycloak-cluster-with-docker.html) 以最简单的堆栈运行我的 keycloak 实例

  1. keycloak 自身的 Docker 镜像,最新标签
  2. keycloak db 的 Mysql 映像,附加了 docker 卷以实现持久性

我现在唯一想不通的问题是,当他们发布新版本并且数据库架构需要迁移时,如何将 keycloak 升级到最新版本。他们提供了如何进行迁移的步骤 (https://github.com/keycloak/keycloak-documentation/blob/master/server_admin/topics/MigrationFromOlderVersions.adoc),但我无法弄清楚当您的 keycloak 被容器化时应该执行哪些步骤。

任何建议将不胜感激。

【问题讨论】:

    标签: docker database-migration keycloak


    【解决方案1】:

    数据库迁移

    Keycloak comes with Liquibase 用于管理数据库版本。升级密钥斗篷需要做的事情是:

    • 备份您的数据库内容和非数据库内容(自定义提供程序、主题、 等等)。

    • 使用更新的 keycloak 标签再次运行 docker。然后,Liquibase 将 检测旧版本的数据库并执行必要的步骤 为了让它更新。请记住,您必须提供 keycloak 某些用户授予数据库更改权限。

    配置文件迁移

    这个任务没有自动化。如果您没有更改配置文件,只需运行新映像。如果您已编辑它们,则需要为新版本准备它们并运行映像。

    由于我已将 keycloak 配置为在反向代理后面运行并且需要自定义配置文件,因此我编写了一个 Dockerfile 来拥有我自己的 keycloak docker 映像,并包装了我自己的配置:

    FROM jboss/keycloak-mysql:2.4.0.Final
    ADD standalone.xml /opt/jboss/keycloak/standalone/configuration
    ADD standalone-ha.xml /opt/jboss/keycloak/standalone/configuration
    CMD ["-b", "0.0.0.0"]
    

    提供者、主题...迁移

    如果您实现了自定义提供程序或其他类型的东西,您需要检查它们与新版本的兼容性。否则,您可能需要重写它们。


    通常,对于任何图像,使用 latest 标签对于生产环境来说通常是个坏主意。有任何开发人员/系统管理员运行docker pull 命令并自动执行更新过程的风险,我猜这不是你想要的。最好坚持固定版本号并自己执行更新,先完成备份。

    另请参阅:

    【讨论】:

    • 谢谢,XBiker 我不知道 liquibase。抱歉,错过了有关使用最新标签的信息,绝对是为了生产,我将使用特定版本。如果 liquibase 可以在我的案例中检测到所需的更改,更新图像版本应该可以解决问题,因为我不会为主题/设置添加任何自定义(可能会滚动更新我的 docker 图像)。
    猜你喜欢
    • 2014-12-15
    • 2021-10-03
    • 2021-10-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2023-02-04
    • 1970-01-01
    相关资源
    最近更新 更多