diff --git a/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/keycloak-env.sh b/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/keycloak-env.sh index bb46956940cb..c1ababe0b27c 100644 --- a/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/keycloak-env.sh +++ b/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/keycloak-env.sh @@ -151,6 +151,7 @@ export KEYCLOAK_ROOT_LOG_LEVEL="${KEYCLOAK_ROOT_LOG_LEVEL:-INFO}" export KEYCLOAK_PROXY="${KEYCLOAK_PROXY:-passthrough}" export KEYCLOAK_PRODUCTION="${KEYCLOAK_PRODUCTION:-false}" export KEYCLOAK_EXTRA_ARGS_PREPENDED="${KEYCLOAK_EXTRA_ARGS_PREPENDED:-}" +export KEYCLOAK_DATABASE_VENDOR="${KEYCLOAK_DATABASE_VENDOR:-postgresql}" KEYCLOAK_DATABASE_HOST="${KEYCLOAK_DATABASE_HOST:-"${DB_ADDR:-}"}" export KEYCLOAK_DATABASE_HOST="${KEYCLOAK_DATABASE_HOST:-postgresql}" KEYCLOAK_DATABASE_PORT="${KEYCLOAK_DATABASE_PORT:-"${DB_PORT:-}"}" diff --git a/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh b/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh index 17c85a1f4124..1e0e4cbf9c94 100644 --- a/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh +++ b/bitnami/keycloak/20/debian-11/rootfs/opt/bitnami/scripts/libkeycloak.sh @@ -132,10 +132,14 @@ keycloak_configure_database() { jdbc_params="$(echo "$KEYCLOAK_JDBC_PARAMS" | sed -E '/^$|^\&.+$/!s/^/\&/;s/\&/\\&/g')" info "Configuring database settings" - keycloak_conf_set "db" "postgres" - keycloak_conf_set "db-username" "$KEYCLOAK_DATABASE_USER" - keycloak_conf_set "db-password" "$KEYCLOAK_DATABASE_PASSWORD" - keycloak_conf_set "db-url" "jdbc:postgresql://${KEYCLOAK_DATABASE_HOST}:${KEYCLOAK_DATABASE_PORT}/${KEYCLOAK_DATABASE_NAME}?currentSchema=${KEYCLOAK_DATABASE_SCHEMA}${jdbc_params}" + if [[ "KEYCLOAK_DATABASE_VENDOR" == "postgresql" ]]; then + keycloak_conf_set "db" "postgres" + keycloak_conf_set "db-username" "$KEYCLOAK_DATABASE_USER" + keycloak_conf_set "db-password" "$KEYCLOAK_DATABASE_PASSWORD" + keycloak_conf_set "db-url" "jdbc:postgresql://${KEYCLOAK_DATABASE_HOST}:${KEYCLOAK_DATABASE_PORT}/${KEYCLOAK_DATABASE_NAME}?currentSchema=${KEYCLOAK_DATABASE_SCHEMA}${jdbc_params}" + else + keycloak_conf_set "db" "$KEYCLOAK_DATABASE_VENDOR" + fi } ######################## @@ -276,17 +280,19 @@ keycloak_configure_spi_tls() { ######################### keycloak_initialize() { # Clean to avoid issues when running docker restart - # Wait for database - info "Trying to connect to PostgreSQL server $KEYCLOAK_DATABASE_HOST..." - if ! retry_while "wait-for-port --host $KEYCLOAK_DATABASE_HOST --timeout 10 $KEYCLOAK_DATABASE_PORT" "$KEYCLOAK_INIT_MAX_RETRIES"; then - error "Unable to connect to host $KEYCLOAK_DATABASE_HOST" - exit 1 - else - info "Found PostgreSQL server listening at $KEYCLOAK_DATABASE_HOST:$KEYCLOAK_DATABASE_PORT" - fi + if [[ "KEYCLOAK_DATABASE_VENDOR" == "postgresql" ]]; then + # Wait for database + info "Trying to connect to PostgreSQL server $KEYCLOAK_DATABASE_HOST..." + if ! retry_while "wait-for-port --host $KEYCLOAK_DATABASE_HOST --timeout 10 $KEYCLOAK_DATABASE_PORT" "$KEYCLOAK_INIT_MAX_RETRIES"; then + error "Unable to connect to host $KEYCLOAK_DATABASE_HOST" + exit 1 + else + info "Found PostgreSQL server listening at $KEYCLOAK_DATABASE_HOST:$KEYCLOAK_DATABASE_PORT" + fi - if ! is_dir_empty "$KEYCLOAK_MOUNTED_CONF_DIR"; then - cp -Lr "$KEYCLOAK_MOUNTED_CONF_DIR"/* "$KEYCLOAK_CONF_DIR" + if ! is_dir_empty "$KEYCLOAK_MOUNTED_CONF_DIR"; then + cp -Lr "$KEYCLOAK_MOUNTED_CONF_DIR"/* "$KEYCLOAK_CONF_DIR" + fi fi keycloak_configure_database keycloak_configure_metrics diff --git a/bitnami/keycloak/README.md b/bitnami/keycloak/README.md index ffe65e5dc3b7..4f1c78541515 100644 --- a/bitnami/keycloak/README.md +++ b/bitnami/keycloak/README.md @@ -82,7 +82,13 @@ The Bitnami Keycloak container can create a default admin user by setting the fo * `KEYCLOAK_MANAGEMENT_USER`: WildFly default management user. Default: **manager**. * `KEYCLOAK_MANAGEMENT_PASSWORD`: WildFly default management password. Default: **bitnami1**. -### Connecting to a PostgreSQL database +### Connecting to a database + +The Bitnami Keycloak container can connect to a database by setting the following environment variables: + +- `KEYCLOAK_DATABASE_VENDOR`: Database vendor. Default: **postgres**. Use **dev-mem** or **dev-file** to use an in-memory or file-based database for development purposes. + +### PostgreSQL database connection configuration The Bitnami Keycloak container requires a PostgreSQL database to work. This is configured with the following environment variables: