From fc9e9380a16d9b7c741fbcca432e3ac3f284a50a Mon Sep 17 00:00:00 2001 From: Bitnami Bot Date: Tue, 18 Aug 2026 18:41:54 +0200 Subject: [PATCH] [bitnami/neo4j] Release 2026.7.1-debian-12-r1 (#96597) Signed-off-by: Bitnami Bot --- bitnami/neo4j/2026/debian-12/Dockerfile | 4 +- .../rootfs/opt/bitnami/scripts/libneo4j.sh | 20 +++++++ .../rootfs/opt/bitnami/scripts/neo4j-env.sh | 38 +++++++++++++ .../rootfs/opt/bitnami/scripts/neo4j/setup.sh | 4 ++ bitnami/neo4j/README.md | 54 ++++++++++++------- 5 files changed, 99 insertions(+), 21 deletions(-) diff --git a/bitnami/neo4j/2026/debian-12/Dockerfile b/bitnami/neo4j/2026/debian-12/Dockerfile index 40ccd9123fcc..d6dec6092297 100644 --- a/bitnami/neo4j/2026/debian-12/Dockerfile +++ b/bitnami/neo4j/2026/debian-12/Dockerfile @@ -8,7 +8,7 @@ ARG JAVA_EXTRA_SECURITY_DIR="/bitnami/java/extra-security" ARG TARGETARCH LABEL org.opencontainers.image.base.name="docker.io/bitnami/minideb:bookworm" \ - org.opencontainers.image.created="2026-08-07T20:00:43Z" \ + org.opencontainers.image.created="2026-08-18T16:08:33Z" \ org.opencontainers.image.description="Application packaged by Broadcom, Inc." \ org.opencontainers.image.documentation="https://github.com/bitnami/containers/tree/main/bitnami/neo4j/README.md" \ org.opencontainers.image.source="https://github.com/bitnami/containers/tree/main/bitnami/neo4j" \ @@ -52,7 +52,7 @@ RUN /opt/bitnami/scripts/java/postunpack.sh RUN /opt/bitnami/scripts/neo4j/postunpack.sh ENV APP_VERSION="2026.7.1" \ BITNAMI_APP_NAME="neo4j" \ - IMAGE_REVISION="0" \ + IMAGE_REVISION="1" \ JAVA_HOME="/opt/bitnami/java" \ JAVA_OPTS="-Duser.home=/opt/bitnami/neo4j/.home" \ PATH="/opt/bitnami/java/bin:/opt/bitnami/neo4j/bin:$PATH" diff --git a/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/libneo4j.sh b/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/libneo4j.sh index 92b22bfb7a14..fa25ce8586e7 100644 --- a/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/libneo4j.sh +++ b/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/libneo4j.sh @@ -73,6 +73,19 @@ neo4j_validate() { ! is_empty_value "$NEO4J_HOST" && check_resolved_hostname "$NEO4J_HOST" + # Enterprise-only settings (clustering, metrics) are validated by neo4j_validate_enterprise, + # defined only in libneo4j-enterprise.sh - a file that is only present in the neo4j-enterprise + # image. Its mere absence is itself the "this is Community" signal (no packaging_info/edition + # parsing needed), but still worth a clear error rather than a silent no-op if someone sets + # one of these on an image that doesn't have the file. + if declare -F neo4j_validate_enterprise >/dev/null; then + neo4j_validate_enterprise + else + is_boolean_yes "${NEO4J_CLUSTERING_ENABLED:-false}" && print_validation_error "NEO4J_CLUSTERING_ENABLED is set to 'true' but this image does not support Causal Clustering (requires Neo4j Enterprise Edition)" + is_boolean_yes "${NEO4J_METRICS_PROMETHEUS_ENABLED:-false}" && print_validation_error "NEO4J_METRICS_PROMETHEUS_ENABLED is set to 'true' but this image does not support Prometheus metrics (requires Neo4j Enterprise Edition)" + is_boolean_yes "${NEO4J_BACKUP_ENABLED:-false}" && print_validation_error "NEO4J_BACKUP_ENABLED is set to 'true' but this image does not support online backup (requires Neo4j Enterprise Edition)" + fi + [[ "$error_code" -eq 0 ]] || exit "$error_code" } @@ -219,6 +232,13 @@ neo4j_initialize() { info "Configuring Neo4j with settings provided via environment variables" if ! [[ -f "${NEO4J_MOUNTED_CONF_DIR}/neo4j.conf" ]]; then configure_neo4j_connector_settings + # Enterprise-only settings (clustering, metrics, backup): configure_neo4j_cluster_settings, + # configure_neo4j_metrics_settings, and configure_neo4j_backup_settings are defined in + # libneo4j-enterprise.sh, which is only present in the neo4j-enterprise image, so these + # are no-ops on Community. + declare -F configure_neo4j_cluster_settings >/dev/null && configure_neo4j_cluster_settings + declare -F configure_neo4j_metrics_settings >/dev/null && configure_neo4j_metrics_settings + declare -F configure_neo4j_backup_settings >/dev/null && configure_neo4j_backup_settings else info "Found mounted neo4j.conf file in ${NEO4J_MOUNTED_CONF_DIR}/neo4j.conf. The general Neo4j configuration will be skipped" fi diff --git a/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j-env.sh b/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j-env.sh index 72a7b4b761e4..1bdc44454b69 100644 --- a/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j-env.sh +++ b/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j-env.sh @@ -41,6 +41,22 @@ neo4j_env_vars=( NEO4J_HTTP_X_FORWARD_ENABLED NEO4J_HTTP_X_FORWARD_ALLOW_PROXIES NEO4J_HTTP_X_FORWARD_ALLOW_HOSTS + NEO4J_CLUSTERING_ENABLED + NEO4J_CLUSTER_DISCOVERY_TYPE + NEO4J_CLUSTER_DISCOVERY_ENDPOINTS + NEO4J_CLUSTER_MINIMUM_SIZE + NEO4J_CLUSTER_DISCOVERY_LABEL_SELECTOR + NEO4J_CLUSTER_DISCOVERY_SERVICE_PORT_NAME + NEO4J_CLUSTER_DISCOVERY_PORT_NUMBER + NEO4J_CLUSTER_TRANSACTION_PORT_NUMBER + NEO4J_CLUSTER_RAFT_PORT_NUMBER + NEO4J_CLUSTER_ROUTING_PORT_NUMBER + NEO4J_CLUSTER_ADVERTISED_ADDRESS + NEO4J_METRICS_PROMETHEUS_ENABLED + NEO4J_METRICS_PROMETHEUS_PORT_NUMBER + NEO4J_BACKUP_ENABLED + NEO4J_BACKUP_PORT_NUMBER + NEO4J_BACKUP_ADVERTISED_ADDRESS ) for env_var in "${neo4j_env_vars[@]}"; do file_env_var="${env_var}_FILE" @@ -102,6 +118,28 @@ export NEO4J_HTTP_X_FORWARD_ENABLED="${NEO4J_HTTP_X_FORWARD_ENABLED:-false}" export NEO4J_HTTP_X_FORWARD_ALLOW_PROXIES="${NEO4J_HTTP_X_FORWARD_ALLOW_PROXIES:-}" export NEO4J_HTTP_X_FORWARD_ALLOW_HOSTS="${NEO4J_HTTP_X_FORWARD_ALLOW_HOSTS:-}" +# Neo4j clustering configuration (Enterprise Edition only) +export NEO4J_CLUSTERING_ENABLED="${NEO4J_CLUSTERING_ENABLED:-false}" +export NEO4J_CLUSTER_DISCOVERY_TYPE="${NEO4J_CLUSTER_DISCOVERY_TYPE:-}" +export NEO4J_CLUSTER_DISCOVERY_ENDPOINTS="${NEO4J_CLUSTER_DISCOVERY_ENDPOINTS:-}" +export NEO4J_CLUSTER_MINIMUM_SIZE="${NEO4J_CLUSTER_MINIMUM_SIZE:-3}" +export NEO4J_CLUSTER_DISCOVERY_LABEL_SELECTOR="${NEO4J_CLUSTER_DISCOVERY_LABEL_SELECTOR:-}" +export NEO4J_CLUSTER_DISCOVERY_SERVICE_PORT_NAME="${NEO4J_CLUSTER_DISCOVERY_SERVICE_PORT_NAME:-tcp-discovery}" +export NEO4J_CLUSTER_DISCOVERY_PORT_NUMBER="${NEO4J_CLUSTER_DISCOVERY_PORT_NUMBER:-5000}" +export NEO4J_CLUSTER_TRANSACTION_PORT_NUMBER="${NEO4J_CLUSTER_TRANSACTION_PORT_NUMBER:-6000}" +export NEO4J_CLUSTER_RAFT_PORT_NUMBER="${NEO4J_CLUSTER_RAFT_PORT_NUMBER:-7000}" +export NEO4J_CLUSTER_ROUTING_PORT_NUMBER="${NEO4J_CLUSTER_ROUTING_PORT_NUMBER:-7688}" +export NEO4J_CLUSTER_ADVERTISED_ADDRESS="${NEO4J_CLUSTER_ADVERTISED_ADDRESS:-}" + +# Neo4j metrics configuration +export NEO4J_METRICS_PROMETHEUS_ENABLED="${NEO4J_METRICS_PROMETHEUS_ENABLED:-false}" +export NEO4J_METRICS_PROMETHEUS_PORT_NUMBER="${NEO4J_METRICS_PROMETHEUS_PORT_NUMBER:-2004}" + +# Neo4j backup configuration (Enterprise Edition only) +export NEO4J_BACKUP_ENABLED="${NEO4J_BACKUP_ENABLED:-false}" +export NEO4J_BACKUP_PORT_NUMBER="${NEO4J_BACKUP_PORT_NUMBER:-6362}" +export NEO4J_BACKUP_ADVERTISED_ADDRESS="${NEO4J_BACKUP_ADVERTISED_ADDRESS:-}" + # Default JVM configuration export JAVA_HOME="${BITNAMI_ROOT_DIR}/java" diff --git a/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j/setup.sh b/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j/setup.sh index 75a571c71b1c..1d166933e021 100755 --- a/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j/setup.sh +++ b/bitnami/neo4j/2026/debian-12/rootfs/opt/bitnami/scripts/neo4j/setup.sh @@ -14,6 +14,10 @@ set -o pipefail # Load libraries . /opt/bitnami/scripts/libneo4j.sh +# Enterprise-only extensions (clustering, metrics): only shipped in the neo4j-enterprise image +if [[ -f /opt/bitnami/scripts/libneo4j-enterprise.sh ]]; then + . /opt/bitnami/scripts/libneo4j-enterprise.sh +fi # Ensure Neo4j environment variables are valid neo4j_validate diff --git a/bitnami/neo4j/README.md b/bitnami/neo4j/README.md index 87a44f8a98ec..c65be74894e3 100644 --- a/bitnami/neo4j/README.md +++ b/bitnami/neo4j/README.md @@ -72,25 +72,41 @@ The following tables list the main variables you can set. #### Customizable environment variables -| Name | Description | Default Value | -|-------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| -| `NEO4J_HOST` | Hostname used to configure Neo4j advertised address. It can be either an IP or a domain. If left empty, it will be resolved to the machine IP | `nil` | -| `NEO4J_BIND_ADDRESS` | Neo4j bind address | `0.0.0.0` | -| `NEO4J_ALLOW_UPGRADE` | Allow automatic schema upgrades | `true` | -| `NEO4J_PASSWORD` | Neo4j password. | `bitnami1` | -| `NEO4J_APOC_IMPORT_FILE_ENABLED` | Allow importing files using the apoc library | `true` | -| `NEO4J_APOC_IMPORT_FILE_USE_NEO4J_CONFIG` | Use neo4j configuration with the apoc library | `true` | -| `NEO4J_BOLT_PORT_NUMBER` | Port used for the bolt protocol. | `7687` | -| `NEO4J_HTTP_PORT_NUMBER` | Port used for the http protocol. | `7474` | -| `NEO4J_HTTPS_PORT_NUMBER` | Port used for the https protocol. | `7473` | -| `NEO4J_BOLT_ADVERTISED_PORT_NUMBER` | Advertised port for the bolt protocol. | `$NEO4J_BOLT_PORT_NUMBER` | -| `NEO4J_HTTP_ADVERTISED_PORT_NUMBER` | Advertised port for the http protocol. | `$NEO4J_HTTP_PORT_NUMBER` | -| `NEO4J_HTTPS_ADVERTISED_PORT_NUMBER` | Advertised port for the https protocol. | `$NEO4J_HTTPS_PORT_NUMBER` | -| `NEO4J_HTTPS_ENABLED` | Enables the HTTPS connector. | `false` | -| `NEO4J_BOLT_TLS_LEVEL` | The encryption level to be used to secure communications with Bolt connector. Allowed values: REQUIRED, OPTIONAL, DISABLED | `DISABLED` | -| `NEO4J_HTTP_X_FORWARD_ENABLED` | Enable processing of X-Forwarded-Host and X-Forwarded-Proto headers. | `false` | -| `NEO4J_HTTP_X_FORWARD_ALLOW_PROXIES` | Enable processing of X-Forwarded-Host and X-Forwarded-Proto headers. | `nil` | -| `NEO4J_HTTP_X_FORWARD_ALLOW_HOSTS` | List of allowed hostnames that can appear in X-Forwarded-Host header. | `nil` | +| Name | Description | Default Value | +|---------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|----------------------------| +| `NEO4J_HOST` | Hostname used to configure Neo4j advertised address. It can be either an IP or a domain. If left empty, it will be resolved to the machine IP | `nil` | +| `NEO4J_BIND_ADDRESS` | Neo4j bind address | `0.0.0.0` | +| `NEO4J_ALLOW_UPGRADE` | Allow automatic schema upgrades | `true` | +| `NEO4J_PASSWORD` | Neo4j password. | `bitnami1` | +| `NEO4J_APOC_IMPORT_FILE_ENABLED` | Allow importing files using the apoc library | `true` | +| `NEO4J_APOC_IMPORT_FILE_USE_NEO4J_CONFIG` | Use neo4j configuration with the apoc library | `true` | +| `NEO4J_BOLT_PORT_NUMBER` | Port used for the bolt protocol. | `7687` | +| `NEO4J_HTTP_PORT_NUMBER` | Port used for the http protocol. | `7474` | +| `NEO4J_HTTPS_PORT_NUMBER` | Port used for the https protocol. | `7473` | +| `NEO4J_BOLT_ADVERTISED_PORT_NUMBER` | Advertised port for the bolt protocol. | `$NEO4J_BOLT_PORT_NUMBER` | +| `NEO4J_HTTP_ADVERTISED_PORT_NUMBER` | Advertised port for the http protocol. | `$NEO4J_HTTP_PORT_NUMBER` | +| `NEO4J_HTTPS_ADVERTISED_PORT_NUMBER` | Advertised port for the https protocol. | `$NEO4J_HTTPS_PORT_NUMBER` | +| `NEO4J_HTTPS_ENABLED` | Enables the HTTPS connector. | `false` | +| `NEO4J_BOLT_TLS_LEVEL` | The encryption level to be used to secure communications with Bolt connector. Allowed values: REQUIRED, OPTIONAL, DISABLED | `DISABLED` | +| `NEO4J_HTTP_X_FORWARD_ENABLED` | Enable processing of X-Forwarded-Host and X-Forwarded-Proto headers. | `false` | +| `NEO4J_HTTP_X_FORWARD_ALLOW_PROXIES` | Enable processing of X-Forwarded-Host and X-Forwarded-Proto headers. | `nil` | +| `NEO4J_HTTP_X_FORWARD_ALLOW_HOSTS` | List of allowed hostnames that can appear in X-Forwarded-Host header. | `nil` | +| `NEO4J_CLUSTERING_ENABLED` | Enable Neo4j Causal Clustering. Requires Neo4j Enterprise Edition. | `false` | +| `NEO4J_CLUSTER_DISCOVERY_TYPE` | Cluster discovery mechanism (dbms.cluster.discovery.resolver_type), e.g. K8S, LIST, DNS, SRV. No default: depends entirely on where this container runs, so it must be set explicitly whenever clustering is enabled. | `nil` | +| `NEO4J_CLUSTER_DISCOVERY_ENDPOINTS` | Comma-separated list of peer host:port discovery endpoints (dbms.cluster.endpoints), used with LIST/DNS-style discovery types, e.g. for a docker-compose deployment. Not used with NEO4J_CLUSTER_DISCOVERY_TYPE=K8S. | `nil` | +| `NEO4J_CLUSTER_MINIMUM_SIZE` | Minimum number of core cluster members required to reach Raft quorum. | `3` | +| `NEO4J_CLUSTER_DISCOVERY_LABEL_SELECTOR` | Kubernetes label selector used to discover peer cluster pods via the Kubernetes API. Only used with NEO4J_CLUSTER_DISCOVERY_TYPE=K8S. | `nil` | +| `NEO4J_CLUSTER_DISCOVERY_SERVICE_PORT_NAME` | Name of the Kubernetes Service port that maps to the cluster discovery port. | `tcp-discovery` | +| `NEO4J_CLUSTER_DISCOVERY_PORT_NUMBER` | Port used for cluster member discovery. | `5000` | +| `NEO4J_CLUSTER_TRANSACTION_PORT_NUMBER` | Port used for cluster transaction-shipping. | `6000` | +| `NEO4J_CLUSTER_RAFT_PORT_NUMBER` | Port used for cluster Raft consensus. | `7000` | +| `NEO4J_CLUSTER_ROUTING_PORT_NUMBER` | Port used for cluster server-side routing. | `7688` | +| `NEO4J_CLUSTER_ADVERTISED_ADDRESS` | Address this cluster member advertises to its peers. If left empty, it will be resolved to the machine IP. | `nil` | +| `NEO4J_METRICS_PROMETHEUS_ENABLED` | Enable the native Prometheus metrics endpoint. | `false` | +| `NEO4J_METRICS_PROMETHEUS_PORT_NUMBER` | Port used for the Prometheus metrics endpoint. | `2004` | +| `NEO4J_BACKUP_ENABLED` | Enable the online backup service (neo4j-admin database backup). Requires Neo4j Enterprise Edition. | `false` | +| `NEO4J_BACKUP_PORT_NUMBER` | Port used for the online backup service. | `6362` | +| `NEO4J_BACKUP_ADVERTISED_ADDRESS` | Address this server advertises for the backup service. If left empty, it will be resolved to the machine IP. | `nil` | #### Read-only environment variables