Чтобы ваш Keycloak попытался использовать вашу MySQL DB без использования собственной встроенной БД (ссылка на мои комментарии), вы должны изменить переменную:
DB_VENDOR: mysql
в
DB_VENDOR: MYSQL
Дополнительная информация и советы
Кроме того, процесс запуска этих служб должен быть разделен (два docker-compose
файла или один сервис ожидает другого), потому что Keycloak не знает, когда MySQL завершит инициализацию DB - то есть он продолжится и выбросить исключение, когда он не сможет получить доступ к БД MySQL, так как БД все еще будет запускаться. depends_on
здесь недостаточно, потому что он не ждет, пока служба ready
, хорошо объяснено здесь
mysql-compose.yml
Я использовал:
version: '2'
services:
lab-mysql:
image: mysql/mysql-server:5.7
environment:
MYSQL_ROOT_PASSWORD: keycloak
MYSQL_ROOT_HOST: "%"
MYSQL_DATABASE: keycloak
MYSQL_USER: keycloak
MYSQL_PASSWORD: keycloak
ports:
- 3306:3306
keycloak-compose.yml
Я использовал:
version: '2'
services:
keycloak:
image: jboss/keycloak:3.4.3.Final
environment:
DB_VENDOR: MYSQL
DB_ADDR: 10.28.0.35
DB_PORT: 3306
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: keycloak
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: password
ports:
- 8070:8080
- 8443:8443
- 9990:9990
Обратите внимание на изменение DB_VENDOR
, которое здесь имеет решающее значение, поскольку теперь оно фактически меняется на использование MySQL. Также обратите внимание на переменную DB_ADDR
, чтобы вы изменили ее на адрес, по которому запускается БД.
Супер важная информация
Мне не удалось запустить его успешно из-за проблемы с сетью, которую я до сих пор решаю, из-за чего keycloak
не смог подключиться к mysql
по сети. Хотя OP может оказаться очень полезным, так как это изменение изменит соединение с embedded H2
на external MySQL
, что является заданным вопросом. И , если БД доступна, она фактически будет использовать ее . Я буду вносить изменения в этот ответ, когда решу проблему с сетью, чтобы поддерживать ее в актуальном состоянии.
Примечание
Стоит отметить, что Keycloak 3.4.3
(используется здесь) использует драйвер mysql в версии 5.1
, для которой требуется MySQL server
с версией 5.6
, 5.7
и выше.