Ich befasse mich gerade mit Docker.
Hierzu habe ich eine docker-compose - Datei angelegt, die folgende Container startet:
Das passt auch soweit alles.
Mein Problem ist aber der Zugriff auf Keycloak.
Die URL muss ich in der shiro.ini angeben:
Gebe ich die IP Adresse von der Hostmaschine an, funktioniert der Zugriff:
Aber ich hätte das gerne dynamisch.
Eigentlich hätte ich erwartet, dass innerhalb dem Docker Container auch localhost funktioniert?
Ich habe auch schon das probiert:
Ebenfalls habe ich probiert:
Wenn ich im Browser (auf der lokalen Maschine) folgendes aufrufe:
-> Dann funktioniert es ebenfalls.
Hat noch jemand eine Idee?
Hier meine docker-compose.yaml
Hierzu habe ich eine docker-compose - Datei angelegt, die folgende Container startet:
- Keycloak
- Wildfly mit JAVA EE App
- MySQL
Das passt auch soweit alles.
Mein Problem ist aber der Zugriff auf Keycloak.
Die URL muss ich in der shiro.ini angeben:
Gebe ich die IP Adresse von der Hostmaschine an, funktioniert der Zugriff:
Java:
oidcConfig.baseUri = http://192.168.178.93:9009/auth
Eigentlich hätte ich erwartet, dass innerhalb dem Docker Container auch localhost funktioniert?
Ich habe auch schon das probiert:
Code:
oidcConfig.baseUri = http://keycloak_myapp:9009/auth
Ebenfalls habe ich probiert:
Code:
oidcConfig.baseUri = http://host.docker.internal:9009/auth
Wenn ich im Browser (auf der lokalen Maschine) folgendes aufrufe:
-> Dann funktioniert es ebenfalls.
Hat noch jemand eine Idee?
Hier meine docker-compose.yaml
Code:
version: '3.8'
services:
keycloak:
image: quay.io/keycloak/keycloak:23.0.5
container_name: keycloak_myapp
environment:
- KEYCLOAK_ADMIN=admin
- KEYCLOAK_ADMIN_PASSWORD=admin
- KEYCLOAK_IMPORT=/opt/keycloak/data/import/realm-export.json -Dkeycloak.profile.feature.upload_scripts=enabled
volumes:
- ./keycloak/realm-export.json:/opt/keycloak/data/import/realm-export.json
command:
#- "start"
- start-dev
- --import-realm
- --http-port=9009
- --http-enabled=true
- --http-relative-path=auth
#command:
# -v start-dev --import-realm
ports:
- "9009:9009"
depends_on:
- mysql
networks:
- app-network
wildfly:
#image: quay.io/wildfly/wildfly:31.0.0.Final-jdk11
build:
context: ./wildfly
dockerfile: Dockerfile
container_name: wildfly_myapp
ports:
- "8080:8080"
volumes:
- ./wildfly/configuration/standalone.xml:/opt/jboss/wildfly/standalone/configuration/standalone.xml
- ./wildfly/lib/mysql/mysql-connector-java-8.0.12.jar:/opt/jboss/wildfly/modules/system/layers/base/com/mysql/main/mysql-connector-java-8.0.12.jar
- ./wildfly/lib/mysql/module.xml:/opt/jboss/wildfly/modules/system/layers/base/com/mysql/main/module.xml
- ./wildfly/myapp.war:/opt/jboss/wildfly/standalone/deployments/myapp.war
environment:
#- "start"
- JAVA_OPTS=-server
- --Xms512m -Xmx2048m
- --XX:MetaspaceSize=96M
- --XX:MaxMetaspaceSize=256m
- --XX:+UseAdaptiveSizePolicy
- --XX:MaxMetaspaceSize=1024m
- --Djava.net.preferIPv4Stack=true
- --Djboss.modules.system.pkgs=org.jboss.byteman
- --Djava.awt.headless=true-Djava.net.preferIPv4Stack=true
depends_on:
- mysql
networks:
- app-network
mysql:
image: mysql:8.2.0
container_name: mysql_myapp
environment:
MYSQL_ROOT_PASSWORD: test1234
MYSQL_DATABASE: myapp
ports:
- "3306:3306"
volumes:
- ./database/init.sql:/docker-entrypoint-initdb.d/init.sql
networks:
- app-network
networks:
app-network:
driver: bridge