Контейнер Keycloak Docker не запускается после перезапуска контейнера - PullRequest
0 голосов
/ 16 июня 2020

У меня есть установка Keycloak, работающая как контейнер docker в среде docker -compose. Каждую ночь моя резервная копия останавливает соответствующие контейнеры, выполняет резервное копирование БД и тома и снова перезапускает контейнеры. В большинстве случаев это работает, но у Keycloak, похоже, есть проблема, и он больше не запускается. При просмотре журналов появляется сообщение об ошибке:

The batch failed with the following error: : 
keycloak           | WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:
keycloak           | Step: step-9
keycloak           | Operation: /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql, driver-module-name=org.postgresql.jdbc, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
keycloak           | Failure: WFLYCTL0212: Duplicate resource [
keycloak           |     ("subsystem" => "datasources"),
keycloak           |     ("jdbc-driver" => "postgresql")
keycloak           | ]
...
The batch failed with the following error: : 
keycloak           | WFLYCTL0062: Composite operation failed and was rolled back. Steps that failed:
keycloak           | Step: step-9
keycloak           | Operation: /subsystem=datasources/jdbc-driver=postgresql:add(driver-name=postgresql, driver-module-name=org.postgresql.jdbc, driver-xa-datasource-class-name=org.postgresql.xa.PGXADataSource)
keycloak           | Failure: WFLYCTL0212: Duplicate resource [
keycloak           |     ("subsystem" => "datasources"),
keycloak           |     ("jdbc-driver" => "postgresql")
keycloak           | ]

Запись docker-compose.yml для Keycloak выглядит следующим образом: важные данные явно удалены

  keycloak:
    image: jboss/keycloak:8.0.1
    container_name: keycloak
    environment:
      - PROXY_ADDRESS_FORWARDING=true
      - DB_VENDOR=postgres
      - DB_ADDR=db
      - DB_DATABASE=keycloak
      - DB_USER=keycloak
      - DB_PASSWORD=<password>
      - VIRTUAL_HOST=<url>
      - VIRTUAL_PORT=8080
      - LETSENCRYPT_HOST=<url>
    volumes:
      - /opt/docker/keycloak-startup:/opt/jboss/startup-scripts

Объем, который я отображаю, является там, чтобы внести некоторые изменения в WildFly, чтобы убедиться, что он хорошо работает с обратным прокси:

embed-server --std-out=echo

#  Enable https listener for the new security realm
/subsystem=undertow/ \
  server=default-server/ \
    http-listener=default \
      :write-attribute(name=proxy-address-forwarding, \
                       value=true)

#  Create new socket binding with proxy https port
/socket-binding-group=standard-sockets/ \
  socket-binding=proxy-https \
    :add(port=443)

#  Enable https listener for the new security realm
/subsystem=undertow/ \
  server=default-server/ \
    http-listener=default \
      :write-attribute(name=redirect-socket, \
                       value="proxy-https")

После остановки контейнера он больше не запускается с сообщениями, показанными выше. Однако удаление контейнера и его воссоздание работает нормально. Я пробовал убрать громкость после первоначального запуска, это тоже ничего не меняет. Я уже узнал, что мне нужно удалить переменные среды KEYCLOAK_USER=admin и KEYCLOAK_PASSWORD после начальной загрузки, поскольку в противном случае контейнер жалуется, что пользователь уже существует и больше не запускается. Есть идеи, как это исправить?

1 Ответ

0 голосов
/ 24 июня 2020

По словам службы поддержки RedHat, это известная «проблема», которую не предполагается устранять. Они хотят сконцентрироваться на рабочем процессе, в котором контейнер удаляется и создается заново, а не запускается и останавливается. Они согласились с общей проблемой, но заявили, что в настоящее время нет доступных ресурсов. Остановка и запуск контейнера - операция, которая в настоящее время не поддерживается.

См. Например, https://issues.redhat.com/browse/KEYCLOAK-13094?jql=project%20%3D%20KEYCLOAK%20AND%20text%20 ~% 20% 22docker% 20restart% 22 * ​​1005 * для справки

...