Docker Compose部署Keycloak连接本地MySQL时区乱码如何解决
解决方案
你可以直接在Keycloak服务的environment配置块中新增DB_JDBC_PARAMS环境变量传入时区参数,这个环境变量专门用来传递额外的JDBC连接参数。
具体修改步骤
- 在现有
environment列表中添加一行配置,将serverTimezone参数设为你需要的时区,例如中国大陆地区常用Asia/Shanghai:
- DB_JDBC_PARAMS=useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
你可以根据实际需求调整时区值,也可以同时追加其他需要的JDBC参数,比如是否开启SSL、字符编码配置等。
修改后完整的Docker Compose配置参考
version: '3.8' services: keycloak: container_name: keycloak image: jboss/keycloak:15.0.2 command: [ '-b', '0.0.0.0', '-Dkeycloak.migration.action=import', '-Dkeycloak.migration.provider=dir', '-Dkeycloak.migration.dir=/opt/jboss/keycloak/realm-config', '-Dkeycloak.migration.strategy=OVERWRITE_EXISTING', '-Djboss.socket.binding.port-offset=1000', '-Dkeycloak.profile.feature.upload_scripts=enabled', ] volumes: - ./realm-config:/opt/jboss/keycloak/realm-config environment: - KEYCLOAK_USER=admin - KEYCLOAK_PASSWORD=xxxxxxx - DB_VENDOR=mysql - DB_USER=xxxxxxx - DB_PASSWORD=xxxxxxxxxx - DB_DATABASE=xxxxxx - DB_ADDR=host.docker.internal # 新增下面这行配置 - DB_JDBC_PARAMS=useSSL=false&serverTimezone=Asia/Shanghai&characterEncoding=utf8
验证方法
修改配置后重新执行docker compose up -d启动服务即可,时区报错会直接消失。
内容的提问来源于stack exchange,提问作者Daniel Hua
相关产品推荐
相关产品推荐

