Я работаю с докером, создающим группу сервисов:
Это довольно простая настройка.Я просто тестирую некоторые вещи с помощью Keycloak.
Я замечаю, что иногда, когда я перезагружаю все службы, Keycloak дает сбой и жалуется на отсутствие таблиц liqubase dbchangelog.Но когда я проверяю таблицы, они там.
Похоже, что происходит, что что-то заставляет Keycloak регенерировать таблицы базы данных (через Liquibase).Я могу обойти это, поддерживая MySQL все время включенным и только запуская и останавливая Keycloak, но в случае, если кто-то еще работает с этим и случайно останавливает все службы, они могут потерять все в таблицах Keycloak.
Два вопроса:
- Почему это происходит?Почему Keycloak думает, что таблицы не существуют?Есть ли условия гонки между Keycloak и MySQL?У меня сложилось впечатление, что «disabled_on» должен заставить docker ждать, пока MySQL запустится, прежде чем запускать Keycloak
- Есть ли параметр Keycloak для отключения автоматического создания таблиц?Еще лучше, есть ли переменная env, которую я могу установить в моем файле docker-compose, который отключит это?
Мой файл docker-compose:
version: '3'
services:
mysql:
image: mysql:5.7
ports:
- "3319:3306"
environment:
MYSQL_USER: keycloak
MYSQL_PASSWORD: keycloak
MYSQL_RANDOM_ROOT_PASSWORD: "yes"
MYSQL_DATABASE: keycloak
volumes:
- ~/test/mysql:/var/lib/mysql
keycloak:
image: jboss/keycloak:4.6.0.Final
depends_on:
- mysql
environment:
DB_VENDOR: MYSQL
DB_ADDR: mysql
DB_DATABASE: keycloak
DB_USER: keycloak
DB_PASSWORD: keycloak
KEYCLOAK_LOGLEVEL: INFO
ROOT_LOGLEVEL: INFO
PROXY_ADDRESS_FORWARDING: "true"
KEYCLOAK_USER: admin
KEYCLOAK_PASSWORD: password
JDBC_PARAMS: "useSSL=false"
ports:
- "6982:8080"