Estoy usando el siguiente docker-compose para iniciar contenedores para mysql y keycloak. Necesito usar mysql para keycloak. Cuando uso debajo de docker-compose, muestra el siguiente error. se atasca en 'inicio de la implementación de la capa de clave' o 'Fuente de datos vinculada KeycloakDS'

Lo estoy instalando en ubuntu.

Nota: El docker compose (mencionado a continuación) es todo lo que estoy ejecutando. ¿No estoy muy seguro de si necesito el conector jdbc de mysql para instalar? En caso afirmativo, ¿cómo instalar el conector mysql para keycloak en Docker? Sé cómo configurarlo para entornos no acoplables.

Agradecería su ayuda / sugerencias sobre este tema.

Error

keycloak_1  | 17:10:38,378 INFO  [org.jboss.modcluster] (ServerService Thread Pool -- 63) MODCLUSTER000032: Listening to proxy advertisements on /224.0.1.105:23364
keycloak_1  | 17:10:40,864 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-2) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/keycloak/standalone/deployments
keycloak_1  | 17:10:54,907 **INFO  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0027: Starting deployment of "keycloak-server.war" (runtime-name: "keycloak-server.war")
keycloak_1  | 17:15:21,570 ERROR [org.jboss.as.controller.management-operation] (Controller Boot** Thread) WFLYCTL0348: Timeout after [300] seconds waiting for service container stability. Operation will roll back. Step that first updated the service container was 'add' at address '[

or sometime at
keycloak_1  | 17:58:57,769 INFO  [org.jboss.as.server.deployment.scanner] (MSC service thread 1-1) WFLYDS0013: Started FileSystemDeploymentService for directory /opt/jboss/keycloak/standalone/deployments
keycloak_1  | 17:58:57,796 INFO  [org.jboss.as.server.deployment] (MSC service thread 1-2) WFLYSRV0027: Starting deployment of "keycloak-server.war" (runtime-name: "keycloak-server.war")
keycloak_1  | 17:58:58,663 INFO  [org.wildfly.extension.undertow] (MSC service thread 1-2) WFLYUT0006: Undertow HTTPS listener https listening on 0.0.0.0:8443
keycloak_1  | 17:58:58,702 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/ExampleDS]
keycloak_1  | 17:58:58,711 INFO  [org.jboss.as.connector.subsystems.datasources] (MSC service thread 1-2) WFLYJCA0001: Bound data source [java:jboss/datasources/KeycloakDS]

Docker-compose.yml

version: '3.7'

services:
  # Database
  db:
    image: mysql:8.0.23
    volumes:
     - /var/lib/mysql_data:/var/lib/mysql
     - ./config-file.cnf:/etc/mysql/conf.d/config-file.cnf
    restart: always
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: MYDB
      MYSQL_USER: testusr
      MYSQL_PASSWORD: password
    expose:
      - '3306'
    ports:
      - '3306:3306'
    networks:
      - mysqlnet
  # Keycloak
  keycloak:
    depends_on:
      - db
    image: jboss/keycloak:12.0.2
    restart: always
    environment:
        DB_VENDOR: MYSQL
        DB_DATABASE: KEYCLOAK
        DB_USER: keycloak
        DB_PASSWORD: password
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: password
        JDBC_PARAMS: "connectTimeout=30000"
    expose:
      - '8181'
    ports:
      - '8181:8080'
    networks:
      - mysqlnet
networks:
  mysqlnet:

Docker-compose actualizado. pero también se está atascando. ¿Me estoy perdiendo algo?

keycloak_1  | 16:30:40,800 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 64) WFLYCLINF0002: Started realms cache from keycloak container
keycloak_1  | 16:30:40,803 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 67) WFLYCLINF0002: Started users cache from keycloak container
keycloak_1  | 16:30:40,802 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 62) WFLYCLINF0002: Started keys cache from keycloak container
keycloak_1  | 16:30:40,803 INFO  [org.jboss.as.clustering.infinispan] (ServerService Thread Pool -- 68) WFLYCLINF0002: Started authorization cache from keycloak container
keycloak_1  | 16:30:41,162 WARN  [org.jboss.as.server.deployment] (MSC service thread 1-1) WFLYSRV0273: Excluded subsystem webservices via jboss-deployment-structure.xml does not exist.
keycloak_1  | 16:33:49,638 INFO  [org.keycloak.services] (ServerService Thread Pool -- 67) KC-SERVICES0001: Loading config from standalone.xml or domain.xml

Docker-compose

version: '3'
volumes:
  mysql_data:
services:
  mysql:
      image: mysql:8.0.23
      volumes:
        - mysql_data:/var/lib/mysql
      restart: always
      environment:
        MYSQL_ROOT_PASSWORD: rootpassword
        MYSQL_DATABASE: keycloak
        MYSQL_USER: keycloak
        MYSQL_PASSWORD: password
      expose:
        - 3306
      ports:
        - 3306:3306
  keycloak:
      image: jboss/keycloak:12.0.2
      restart: always
      environment:
        DB_VENDOR: MYSQL
        DB_ADDR: mysql
        DB_DATABASE: keycloak
        DB_USER: keycloak
        DB_PASSWORD: password
        KEYCLOAK_USER: admin
        KEYCLOAK_PASSWORD: password
        JDBC_PARAMS: "connectTimeout=1000,useSSL=false"
      ports:
        - 8080:8080
      expose:
        - 8080
      depends_on:
        - mysql

Finalmente resuelto:

  1. el archivo de composición de la ventana acoplable final: https://github.com/awstechguide/scripts/blob/master/docker/docker-compose/docker-compose-keycloak-mysql-phpmyadmin.yml

  2. Estaba usando la instancia t2.micro antes. debido a que el proceso de keycloak se atascaba con frecuencia. Cuando cambié a una instancia más grande (t2.medium) funcionó bien.

0
somspeaks 22 ene. 2021 a las 20:41

1 respuesta

La mejor respuesta

Problemas obvios en su configuración:

1.) Las credenciales de la base de datos no coinciden, deberían ser:

  db:
...
    environment:
      MYSQL_ROOT_PASSWORD: password
      MYSQL_DATABASE: MYDB
      MYSQL_USER: testusr
      MYSQL_PASSWORD: password
...
  keycloak:
...
    environment:
        DB_VENDOR: MYSQL
        DB_DATABASE: MYDB
        DB_USER: testusr
        DB_PASSWORD: password
...

2.) No está apuntando Keycloak al servicio DB:

  db:
...
  keycloak:
...
    environment:
        DB_ADDR: db
...

Esos son errores obvios, pero puede haber más problemas.

Expondría el puerto 8443 del contenedor en lugar de 8080; ha habilitado https con certificado autofirmado.

1
Jan Garaj 22 ene. 2021 a las 18:58