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
我正在尝试在 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