p2-inc / keycloak-magic-link

Magic Link Authentication for Keycloak
https://phasetwo.io
Other
222 stars 44 forks source link

ModuleNotFoundException: org.keycloak.keycloak-admin-client" in Docker container #7

Closed AlexZeitler closed 1 year ago

AlexZeitler commented 1 year ago

I tried the following (I'm a Java noob):

I checked out this repo.

Then I ran

docker run -it --rm --name my-maven-project -v "$(pwd)":/usr/src/mymaven -w /usr/src/mymaven maven:3.3-jdk-8 mvn clean install

I created an empty folder where I copied the file keycloak-magic-link-0.2-SNAPSHOT.jar from the target folder into. Next, I created a docker-compose.yml file inside the same folder.

version: "3"

services:
  keycloaktestdb:
    container_name: keycloaktestdb
    image: postgres:14
    ports:
      - 5434:5432
    environment:
      - POSTGRES_DB=keycloak
      - POSTGRES_USER=keycloak
      - POSTGRES_PASSWORD=password
  idptest:
    image: quay.io/keycloak/keycloak:16.1.1
    container_name: idptest
    depends_on:
      - keycloaktestdb
    ports:
      - 8081:8080
    environment:
      - DB_VENDOR=POSTGRES
      - DB_ADDR=keycloaktestdb
      - DB_DATABASE=keycloak
      - DB_USER=keycloak
      - DB_SCHEMA=public
      - DB_PASSWORD=password
      - KEYCLOAK_USER=admin
      - KEYCLOAK_PASSWORD=admin
    volumes:
        - ./keycloak-magic-link-0.2-SNAPSHOT.jar:/opt/jboss/keycloak/standalone/deployments/keycloak-magic-link-0.2-SNAPSHOT.jar

As you can see, I've mapped the keycloak-magic-link-0.2-SNAPSHOT.jar into the deployments folder.

Next I ran docker compose up -d.

docker logs idptest gave me these errors:

12:30:02,963 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-3) MSC000001: Failed to start service jboss.module.service."deployment.keycloak-magic-link-0.2-SNAPSHOT.jar".main: org.jboss.msc.service.StartException in service jboss.module.service."deployment.keycloak-magic-link-0.2-SNAPSHOT.jar".main: WFLYSRV0179: Failed to load module: deployment.keycloak-magic-link-0.2-SNAPSHOT.jar
    at org.jboss.as.server@18.0.4.Final//org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:116)
    at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1739)
    at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$StartTask.execute(ServiceControllerImpl.java:1701)
    at org.jboss.msc@1.4.13.Final//org.jboss.msc.service.ServiceControllerImpl$ControllerTask.run(ServiceControllerImpl.java:1559)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.ContextClassLoaderSavingRunnable.run(ContextClassLoaderSavingRunnable.java:35)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor.safeRun(EnhancedQueueExecutor.java:1990)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.doRunTask(EnhancedQueueExecutor.java:1486)
    at org.jboss.threads@2.4.0.Final//org.jboss.threads.EnhancedQueueExecutor$ThreadBody.run(EnhancedQueueExecutor.java:1377)
    at java.base/java.lang.Thread.run(Thread.java:829)
Caused by: org.jboss.modules.ModuleNotFoundException: org.keycloak.keycloak-admin-client
    at org.jboss.modules.Module.addPaths(Module.java:1259)
    at org.jboss.modules.Module.link(Module.java:1615)
    at org.jboss.modules.Module.relinkIfNecessary(Module.java:1643)
    at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:303)
    at org.jboss.modules.ModuleLoader.loadModule(ModuleLoader.java:287)
    at org.jboss.as.server@18.0.4.Final//org.jboss.as.server.moduleservice.ModuleLoadService.start(ModuleLoadService.java:93)
    ... 8 more

and

12:30:22,399 ERROR [org.jboss.as.controller.management-operation] (Controller Boot Thread) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "keycloak-magic-link-0.2-SNAPSHOT.jar")]) - failure description: {"WFLYCTL0080: Failed services" => {"jboss.module.service.\"deployment.keycloak-magic-link-0.2-SNAPSHOT.jar\".main" => "WFLYSRV0179: Failed to load module: deployment.keycloak-magic-link-0.2-SNAPSHOT.jar
    Caused by: org.jboss.modules.ModuleNotFoundException: org.keycloak.keycloak-admin-client"}}
12:30:22,489 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 33) WFLYSRV0010: Deployed "keycloak-magic-link-0.2-SNAPSHOT.jar" (runtime-name : "keycloak-magic-link-0.2-SNAPSHOT.jar")
12:30:22,490 INFO  [org.jboss.as.server] (ServerService Thread Pool -- 45) WFLYSRV0010: Deployed "keycloak-server.war" (runtime-name : "keycloak-server.war")
12:30:22,491 INFO  [org.jboss.as.controller] (Controller Boot Thread) WFLYCTL0183: Service status report
WFLYCTL0186:   Services which failed to start:      service jboss.module.service."deployment.keycloak-magic-link-0.2-SNAPSHOT.jar".main: WFLYSRV0179: Failed to load module: deployment.keycloak-magic-link-0.2-SNAPSHOT.jar

12:30:22,570 INFO  [org.jboss.as.server] (Controller Boot Thread) WFLYSRV0212: Resuming server
12:30:22,575 ERROR [org.jboss.as] (Controller Boot Thread) WFLYSRV0026: Keycloak 16.1.1 (WildFly Core 18.0.4.Final) started (with errors) in 23445ms - Started 686 of 989 services (2 services failed or missing dependencies, 698 services are lazy, passive or on-demand)
12:30:22,577 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0060: Http management interface listening on http://127.0.0.1:9990/management
12:30:22,578 INFO  [org.jboss.as] (Controller Boot Thread) WFLYSRV0051: Admin console listening on http://127.0.0.1:9990

Did I do something wrong?

xgp commented 1 year ago

You're running "legacy" Wildfly version of Keycloak. Because of that, it's looking in the jar manifest (specified in the pom.xml), in which I mistakenly reference a custom module that is not part of the standard Keycloak distribution. I fixed it and updated main. However, I have no idea if this will even work in the Wildfly version, as I haven't touched that version in a year. I'd suggest upgrading.