我打算使用docker(http://blog.keycloak.org/2015/04/running-keycloak-cluster-with-docker.html)运行我的keycloak实例,尽可能使用最简单的堆栈
我现在唯一能解决的问题是,当发布新版本和数据库架构需要迁移时,如何将keycloak升级到最新版本。他们提供了如何进行迁移的步骤(https://github.com/keycloak/keycloak-documentation/blob/master/server_admin/topics/MigrationFromOlderVersions.adoc),但我无法弄清楚当你的密钥泄露被集装箱化时会发生什么步骤。
非常感谢任何建议。
答案 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
命令并自动执行更新过程的风险,我猜这不是你想要的。最好先坚持固定版本号并自行执行更新。
另见: