Keycloak / Docker регенерирует таблицы базы данных MySQL - PullRequest
0 голосов
/ 03 января 2019

Я работаю с докером, создающим группу сервисов:

  • Keycloak
  • MySQL

Это довольно простая настройка.Я просто тестирую некоторые вещи с помощью 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"
...