Keycloak Docker 容器未连接到 MySQL 数据库

Keycloak Docker container does not connect to MySQL database

我正在尝试在 Docker 容器中设置一个 Keycloak 服务器,我希望 它利用存储在主机上的 MySQL 数据库,但我想要这个 由 MySQL 实例管理的数据库,该实例也在 运行 内部 Docker 容器。但是,我无法让它工作。

到目前为止,我已经尝试了以下方法:

# Create network for keycloak
docker network create edci-network

# First start up MySQL server…
docker run \
    --name edci-keycloak-mysql \
    -d \
    --net edci-network \
    -e MYSQL_DATABASE=edci-keycloak \
    -e MYSQL_USER=edci-keycloak \
    -e MYSQL_PASSWORD=password \
    -v /path/to/local/database:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root_password \
    mysql

# … then run Keycloak with token exchange enabled.
docker run \
    --name edci-keycloak \
    -d \
    -p 9000:8080 \
    --net edci-network \
    -e KEYCLOAK_USER=admin \
    -e KEYCLOAK_PASSWORD=admin \
    -e DB_ADDR=edci-keycloak-mysql \
    -e DB_PASSWORD=password \
    -e JAVA_OPTS_APPEND="
        -Dkeycloak.profile.feature.token_exchange=enabled
        -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled
    " \
    quay.io/keycloak/keycloak:15.0.2

但是,Keycloak 日志宣称

Using H2 database

随着服务器启动。我在这里做错了什么? MySQL 示例 Keycloak Docker Hub 页面也无法正常工作。

请注意,使用 Docker Compose 不是一个选项,因此答案依赖于它 不予考虑。感谢您的帮助。


Keycloak 容器日志:https://pastebin.com/b56cmxBJ

您没有使用预定义值(例如 Keycloak 容器期望数据库名称 keycloak),因此您需要显式配置所有数据库详细信息(环境变量 DB_*):

# Create network for keycloak
docker network create edci-network

# First start up MySQL server…
docker run \
    --name edci-keycloak-mysql \
    -d \
    --net edci-network \
    -e MYSQL_DATABASE=edci-keycloak \
    -e MYSQL_USER=edci-keycloak \
    -e MYSQL_PASSWORD=password \
    -v /path/to/local/database:/var/lib/mysql \
    -e MYSQL_ROOT_PASSWORD=root_password \
    mysql

# … then run Keycloak with token exchange enabled.
docker run \
    --name edci-keycloak \
    -d \
    -p 9000:8080 \
    --net edci-network \
    -e KEYCLOAK_USER=admin \
    -e KEYCLOAK_PASSWORD=admin \
    -e DB_VENDOR=mysql \
    -e DB_ADDR=edci-keycloak-mysql \
    -e DB_DATABASE=edci-keycloak \
    -e DB_USER=edci-keycloak \
    -e DB_PASSWORD=password \
    -e JAVA_OPTS_APPEND="
        -Dkeycloak.profile.feature.token_exchange=enabled
        -Dkeycloak.profile.feature.admin_fine_grained_authz=enabled
    " \
    quay.io/keycloak/keycloak:15.0.2