在docker上运行时进行Keycloak升级

时间:2017-12-23 23:38:51

标签: docker database-migration keycloak

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

  1. keycloak本身的Docker镜像,最新标签
  2. keycloak数据库的mysql映像,附加了docker volume for persistance
  3. 我现在唯一能解决的问题是,当发布新版本和数据库架构需要迁移时,如何将keycloak升级到最新版本。他们提供了如何进行迁移的步骤(https://github.com/keycloak/keycloak-documentation/blob/master/server_admin/topics/MigrationFromOlderVersions.adoc),但我无法弄清楚当你的密钥泄露被集装箱化时会发生什么步骤。

    非常感谢任何建议。

1 个答案:

答案 0 :(得分:4)

数据库迁移

用于管理数据库版本的Keycloak comes with Liquibase。升级你的keycloak你需要做的是:

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

  • 使用较新的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"]

提供商,主题......迁移

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

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

另见: