[KEYCLOAK-11336] - Updating Quarkus version and some fixes/enhancements for container image
This commit is contained in:
parent
17237ee7fc
commit
d3e59bd0d1
6 changed files with 112 additions and 10 deletions
|
@ -21,4 +21,54 @@ if [ "x$RESOLVED_NAME" = "x" ]; then
|
||||||
fi
|
fi
|
||||||
|
|
||||||
DIRNAME=`dirname "$RESOLVED_NAME"`
|
DIRNAME=`dirname "$RESOLVED_NAME"`
|
||||||
java -Dkeycloak.home.dir=$DIRNAME/../ -Dkeycloak.theme.dir=$DIRNAME/../themes -Djava.net.preferIPv4Stack=true -cp "$DIRNAME/../providers/*:$DIRNAME/../lib/keycloak-runner.jar" io.quarkus.runner.GeneratedMain "$@"
|
|
||||||
|
SERVER_OPTS="-Dkeycloak.home.dir=$DIRNAME/../ -Dkeycloak.theme.dir=$DIRNAME/../themes -Djava.util.logging.manager=org.jboss.logmanager.LogManager"
|
||||||
|
|
||||||
|
DEBUG_MODE="${DEBUG:-false}"
|
||||||
|
DEBUG_PORT="${DEBUG_PORT:-8787}"
|
||||||
|
|
||||||
|
while [ "$#" -gt 0 ]
|
||||||
|
do
|
||||||
|
case "$1" in
|
||||||
|
--debug)
|
||||||
|
DEBUG_MODE=true
|
||||||
|
if [ -n "$2" ] && [ "$2" = `echo "$2" | sed 's/-//'` ]; then
|
||||||
|
DEBUG_PORT=$2
|
||||||
|
shift
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
exit 1
|
||||||
|
fi
|
||||||
|
;;
|
||||||
|
--)
|
||||||
|
shift
|
||||||
|
break;;
|
||||||
|
*)
|
||||||
|
SERVER_OPTS="$SERVER_OPTS $1"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
shift
|
||||||
|
done
|
||||||
|
|
||||||
|
#
|
||||||
|
# Specify options to pass to the Java VM.
|
||||||
|
#
|
||||||
|
if [ "x$JAVA_OPTS" = "x" ]; then
|
||||||
|
JAVA_OPTS="-Xms64m -Xmx512m -XX:MetaspaceSize=96M -XX:MaxMetaspaceSize=256m -Djava.net.preferIPv4Stack=true"
|
||||||
|
else
|
||||||
|
echo "JAVA_OPTS already set in environment; overriding default settings with values: $JAVA_OPTS"
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Set debug settings if not already set
|
||||||
|
if [ "$DEBUG_MODE" = "true" ]; then
|
||||||
|
DEBUG_OPT=`echo $JAVA_OPTS | $GREP "\-agentlib:jdwp"`
|
||||||
|
if [ "x$DEBUG_OPT" = "x" ]; then
|
||||||
|
JAVA_OPTS="$JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=$DEBUG_PORT,server=y,suspend=n"
|
||||||
|
else
|
||||||
|
echo "Debug already enabled in JAVA_OPTS, ignoring --debug argument"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
CLASSPATH_OPTS="$DIRNAME/../providers/*:$DIRNAME/../lib/keycloak-runner.jar"
|
||||||
|
|
||||||
|
exec java $JAVA_OPTS $SERVER_OPTS -cp $CLASSPATH_OPTS io.quarkus.runner.GeneratedMain "$@"
|
|
@ -32,10 +32,6 @@
|
||||||
</exclusion>
|
</exclusion>
|
||||||
</exclusions>
|
</exclusions>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
|
||||||
<groupId>org.keycloak</groupId>
|
|
||||||
<artifactId>keycloak-server-spi-private</artifactId>
|
|
||||||
</dependency>
|
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.keycloak</groupId>
|
<groupId>org.keycloak</groupId>
|
||||||
<artifactId>keycloak-services</artifactId>
|
<artifactId>keycloak-services</artifactId>
|
||||||
|
@ -44,6 +40,10 @@
|
||||||
<groupId>org.keycloak</groupId>
|
<groupId>org.keycloak</groupId>
|
||||||
<artifactId>keycloak-server-spi-private</artifactId>
|
<artifactId>keycloak-server-spi-private</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
<dependency>
|
||||||
|
<groupId>org.keycloak</groupId>
|
||||||
|
<artifactId>keycloak-server-spi</artifactId>
|
||||||
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.infinispan</groupId>
|
<groupId>org.infinispan</groupId>
|
||||||
<artifactId>infinispan-core</artifactId>
|
<artifactId>infinispan-core</artifactId>
|
||||||
|
|
|
@ -44,7 +44,11 @@ public final class QuarkusCacheManagerProvider implements ManagedCacheManagerPro
|
||||||
try {
|
try {
|
||||||
InputStream configurationStream = loadConfiguration(config);
|
InputStream configurationStream = loadConfiguration(config);
|
||||||
ConfigurationBuilderHolder builder = new ParserRegistry().parse(configurationStream);
|
ConfigurationBuilderHolder builder = new ParserRegistry().parse(configurationStream);
|
||||||
configureTransportStack(config, builder);
|
|
||||||
|
if (builder.getNamedConfigurationBuilders().get("sessions").clustering().cacheMode().isClustered()) {
|
||||||
|
configureTransportStack(config, builder);
|
||||||
|
}
|
||||||
|
|
||||||
return (C) new DefaultCacheManager(builder, true);
|
return (C) new DefaultCacheManager(builder, true);
|
||||||
} catch (Exception e) {
|
} catch (Exception e) {
|
||||||
throw new RuntimeException(e);
|
throw new RuntimeException(e);
|
||||||
|
|
|
@ -21,17 +21,34 @@ import io.quarkus.runtime.ShutdownEvent;
|
||||||
import io.quarkus.runtime.StartupEvent;
|
import io.quarkus.runtime.StartupEvent;
|
||||||
import javax.enterprise.context.ApplicationScoped;
|
import javax.enterprise.context.ApplicationScoped;
|
||||||
import javax.enterprise.event.Observes;
|
import javax.enterprise.event.Observes;
|
||||||
|
import javax.inject.Inject;
|
||||||
|
import javax.servlet.ServletContext;
|
||||||
|
|
||||||
|
import org.keycloak.Config;
|
||||||
|
import org.keycloak.models.KeycloakSession;
|
||||||
|
import org.keycloak.models.KeycloakSessionFactory;
|
||||||
|
import org.keycloak.models.KeycloakTransactionManager;
|
||||||
import org.keycloak.platform.Platform;
|
import org.keycloak.platform.Platform;
|
||||||
|
import org.keycloak.services.ServicesLogger;
|
||||||
|
import org.keycloak.services.managers.ApplianceBootstrap;
|
||||||
|
|
||||||
@ApplicationScoped
|
@ApplicationScoped
|
||||||
public class QuarkusLifecycleObserver {
|
public class QuarkusLifecycleObserver {
|
||||||
|
|
||||||
|
private static final String KEYCLOAK_ADMIN_ENV_VAR = "KEYCLOAK_ADMIN";
|
||||||
|
private static final String KEYCLOAK_ADMIN_PASSWORD_ENV_VAR = "KEYCLOAK_ADMIN_PASSWORD";
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
ServletContext servletContext;
|
||||||
|
|
||||||
private void onStartupEvent(@Observes StartupEvent event) {
|
private void onStartupEvent(@Observes StartupEvent event) {
|
||||||
|
|
||||||
Runnable startupHook = ((QuarkusPlatform) Platform.getPlatform()).startupHook;
|
Runnable startupHook = ((QuarkusPlatform) Platform.getPlatform()).startupHook;
|
||||||
|
|
||||||
if (startupHook != null)
|
if (startupHook != null) {
|
||||||
startupHook.run();
|
startupHook.run();
|
||||||
|
createAdminUser();
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -44,4 +61,35 @@ public class QuarkusLifecycleObserver {
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private void createAdminUser() {
|
||||||
|
String adminUserName = System.getenv(KEYCLOAK_ADMIN_ENV_VAR);
|
||||||
|
String adminPassword = System.getenv(KEYCLOAK_ADMIN_PASSWORD_ENV_VAR);
|
||||||
|
|
||||||
|
if ((adminUserName == null || adminUserName.trim().length() == 0)
|
||||||
|
|| (adminPassword == null || adminPassword.trim().length() == 0)) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
KeycloakSessionFactory sessionFactory = (KeycloakSessionFactory) servletContext
|
||||||
|
.getAttribute(KeycloakSessionFactory.class.getName());
|
||||||
|
KeycloakSession session = sessionFactory.create();
|
||||||
|
KeycloakTransactionManager transaction = session.getTransactionManager();
|
||||||
|
|
||||||
|
try {
|
||||||
|
transaction.begin();
|
||||||
|
|
||||||
|
new ApplianceBootstrap(session).createMasterRealmUser(adminUserName, adminPassword);
|
||||||
|
ServicesLogger.LOGGER.addUserSuccess(adminUserName, Config.getAdminRealm());
|
||||||
|
|
||||||
|
transaction.commit();
|
||||||
|
} catch (IllegalStateException e) {
|
||||||
|
session.getTransactionManager().rollback();
|
||||||
|
ServicesLogger.LOGGER.addUserFailedUserExists(adminUserName, Config.getAdminRealm());
|
||||||
|
} catch (Throwable t) {
|
||||||
|
session.getTransactionManager().rollback();
|
||||||
|
ServicesLogger.LOGGER.addUserFailed(t, adminUserName, Config.getAdminRealm());
|
||||||
|
} finally {
|
||||||
|
session.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -31,7 +31,7 @@
|
||||||
<packaging>pom</packaging>
|
<packaging>pom</packaging>
|
||||||
|
|
||||||
<properties>
|
<properties>
|
||||||
<quarkus.version>0.25.0</quarkus.version>
|
<quarkus.version>1.0.1.Final</quarkus.version>
|
||||||
<resteasy.version>4.3.1.Final</resteasy.version>
|
<resteasy.version>4.3.1.Final</resteasy.version>
|
||||||
|
|
||||||
<surefire-plugin.version>2.22.0</surefire-plugin.version>
|
<surefire-plugin.version>2.22.0</surefire-plugin.version>
|
||||||
|
|
|
@ -269,8 +269,8 @@
|
||||||
</dependency>
|
</dependency>
|
||||||
<!--TODO Should come from Hibernate extension -->
|
<!--TODO Should come from Hibernate extension -->
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>javax.persistence</groupId>
|
<groupId>jakarta.persistence</groupId>
|
||||||
<artifactId>javax.persistence-api</artifactId>
|
<artifactId>jakarta.persistence-api</artifactId>
|
||||||
</dependency>
|
</dependency>
|
||||||
<dependency>
|
<dependency>
|
||||||
<groupId>org.hibernate</groupId>
|
<groupId>org.hibernate</groupId>
|
||||||
|
|
Loading…
Reference in a new issue