mysql - keycloak docker mysql连接链接失败
问题描述
我正在尝试将 mysql 用于 keycloak 并且之前使用过相同的配置,但这次它给出了链接失败。
volumes:
mysql_data:
driver: local
services:
mysql:
image: mysql:5.7
volumes:
- mysql_data:/var/lib/mysql
ports:
- 3306:3306
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: keycloak
MYSQL_USER: keycloak
MYSQL_PASSWORD: password
keycloak:
build: keycloak-image
image: km-keycloak
environment:
PROXY_ADDRESS_FORWARDING: "true"
DB_VENDOR: MYSQL
DB_ADDR: mysql
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: password
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: admin
volumes:
- mysql_data:/opt/jboss/mysql_data
depends_on:
- mysql
links:
- mysql
我的 keycloak 图像 docker 文件看起来像
FROM jboss/keycloak
COPY km.json /opt/jboss
COPY entrypoint.sh /opt/jboss
USER root
RUN chown jboss /opt/jboss/entrypoint.sh && chmod +x /opt/jboss/entrypoint.sh
USER 1000
ENTRYPOINT ["/opt/jboss/entrypoint.sh"]
CMD [""]
关键斗篷的入口点看起来像
#!/bin/bash
if [[ -e /opt/jboss/mysql_data/keycloak ]]; then
/opt/jboss/tools/docker-entrypoint.sh -b 0.0.0.0
else
/opt/jboss/tools/docker-entrypoint.sh -Dkeycloak.migration.action=import -Dkeycloak.migration.provider=singleFile -Dkeycloak.migration.file='km.json' -b 0.0.0.0
fi
我得到的错误是
引起:javax.resource.ResourceException:IJ031084:无法创建连接引起:com.mysql.jdbc.exceptions.jdbc4.CommunicationsException:通信链接失败引起:javax.net.ssl.SSLHandshakeException:没有适当的协议(协议是禁用或密码套件不合适)
解决方案
添加
JDBC_PARAMS: "useSSL=false"
到keycloak
environment
docker-compose 文件中的变量。
(例如直接在 之后KEYCLOAK_PASSWORD
)
根据您的设置,可能不需要在 2 个容器之间使用受 SSL 保护的连接。
我不确定为什么现在会发生此错误。它在 keycloak 版本中工作,7.0.0
但它不再工作7.0.1
了。也许java版本改变了,不再信任默认的mysql-containers ssl cert
错误 [stderr] (ServerService Thread Pool -- 70) Thu Nov 14 20:55:46 UTC 2019 警告:不建议在没有服务器身份验证的情况下建立 SSL 连接。根据 MySQL 5.5.45+、5.6.26+ 和 5.7.6+ 的要求,如果未设置显式选项,则默认情况下必须建立 SSL 连接。为了符合不使用 SSL 的现有应用程序,verifyServerCertificate 属性设置为“false”。您需要通过设置 useSSL=false 来显式禁用 SSL,或者设置 useSSL=true 并为服务器证书验证提供信任库。
推荐阅读
- delphi - 如何禁用以 Windows API 结尾的曲线?
- python - 如何使用 Scrapy 和 Xpath 抓取多个元素?
- react-native - 无法解析配置 ':unimodules-react-native-adapter:debugCompileClasspath' 的所有任务依赖项,
- c# - 如何提高 OCR 识别率?
- javascript - 如何使用javascript获取要单击的表格行特定列?
- python - 为什么//计算更快//计算(或不)
- vue.js - 如果道具为空而不使用道具的“默认”属性,如何传递具有默认值的道具
- python - 从资源文件播放 QSound?
- angular - 更改值格式时在输入中显示 NaN
- apache-spark - 如何通过 Spark 结构化流以编程方式在 Kafka 中创建主题