Docker
Docker deployment - Pentaho 11 + PostgreSQL 15 repository ..
Docker Container
Docker container deployment enables you to package and run Pentaho products within portable, production-ready containers. Containerization ensures consistent behavior across development, testing, and production environments while simplifying deployment and scaling operations.
You can create Docker containers for the Pentaho Server, which includes the complete Business Analytics and Data Integration platform with the Pentaho User Console, scheduling services, and repository management. The server supports enterprise database backends including PostgreSQL, MySQL, Oracle, and SQL Server.
For distributed ETL processing, you can deploy Carte server containers that execute transformations and jobs remotely. The Kitchen and Pan command-line tools are also available as containers, enabling integration with CI/CD pipelines and automated batch workflows.
Container deployments are particularly effective for cloud environments where you can quickly scale resources to match data processing demands. By running Pentaho workloads in containers, organizations can optimize infrastructure costs while maintaining the flexibility to move between on-premises and cloud platforms.


Pentaho Server requires three separate databases, each serving a distinct purpose:
jackrabbit
jcr_user
Java Content Repository (JCR) - Stores all Pentaho content including reports, dashboards, data sources, analysis schemas, and user files. This is the primary content storage for the Pentaho repository.
quartz
pentaho_user
Quartz Scheduler - Manages all scheduled jobs, triggers, and calendars. Contains tables for job definitions (QRTZ6_JOB_DETAILS), triggers (QRTZ6_TRIGGERS), execution history, and cluster coordination locks.
hibernate
hibuser
Hibernate Repository - Hosts security configuration, audit logging, user session data, and contains two additional schemas: pentaho_dilogs (ETL execution logging) and pentaho_operations_mart (analytics data mart).

Tomcat manages connection pools defined in context.xml. Each pool serves a specific purpose:
jdbc/Hibernate
repository:5432/hibernate
Security, Users, Roles
jdbc/Quartz
repository:5432/quartz
Job Scheduling
jdbc/jackrabbit
repository:5432/jackrabbit
Content Repository
jdbc/Audit
repository:5432/hibernate
Audit Logging
jdbc/live_logging_info
repository:5432/hibernate
ETL Runtime Logs
jdbc/PDI_Operations_Mart
repository:5432/hibernate
Operations Analytics
Before you begin the Docker deployment, ensure you have completed the Setup: Pentaho Containers
Run through the following steps to deploy Pentaho Server with PostgreSQL 15 repository.
Prepare Environment
Check Docker is up and running:
Copy Pentaho-Server-PostgreSQL assets
Copy over
pentaho-server-ee-11.0.0.0-237.zipVerify Docker & Docker Compose
Check ports
Ensure you have downloaded: pentaho-server-ee-11.0.0.0-237.zip
Create project directory & copy over assets.
Copy over the pentaho-server-ee-11.0.0.0-237.zip /docker/stagedArtefacts directory.
Verify that the file.
Check the Docker version.
Check Docker Compose version.
Verify Docker daemon is running.
Check port 8080 / 8090 is available on Host OS.
Pentaho Server requires a valid license. The
.envfile contains a LICENSE_URL pointing to the Flexera license server. Ensure your license entitlements are active before deployment.
Without a valid license, Pentaho Server will start but many features will be disabled. Verify your license status before proceeding with production deployments.
Directory Layout
This deployment configuration provides several important capabilities:
Completely self-contained and portable deployment.
Automated database initialization with SQL scripts.
Health checks and proper startup ordering between services.
Persistent data volumes for database and Pentaho content.
HashiCorp Vault for secrets management with AppRole authentication.
Read-only containers with tmpfs mounts for security.
Resource limits (CPU/memory) for stability.
Log rotation to prevent disk exhaustion.
Software override system for customizing configurations without modifying core files.
Production-ready configuration templates.
PostgreSQL JDBC driver included
Easy backup and restore procedures
Check out the other repository deployment options at:
Root Directory Files
Docker Build Context
PostgreSQL Repsoitory Database Initialization
PostgreSQL and Vault Configuration
postgres_password
PostgreSQL superuser password
pentaho_user
Pentaho database username
pentaho_password
Pentaho database password
jdbc_url
JDBC connection URL
Pentaho Configuration Overrides
Utility Scripts
User Configuration and Data Storage
Key Files
docker-compose.yml
Defines all services (pentaho-server, postgres), networks, and volumes
docker/Dockerfile
Multi-stage build using debian:trixie-slim with OpenJDK 21
docker-entrypoint.sh
Processes softwareOverride directories at container startup
.env
Environment-specific configuration (ports, passwords, memory)
deploy.sh
Automated deployment with pre-flight validation checks
db_init_postgres/*.sql
PostgreSQL database initialization scripts
vault-init.sh
Initializes Vault and stores secrets
rotate-secrets.sh
Rotates database passwords securely
Pre-flight Taks
The Pre-flight Tasks section outlines the essential preparation steps needed before deploying Pentaho Server 11 in Docker containers.
First, you need to configure the environment variables by editing the .env.template file with your deployment-specific settings. This includes defining the Pentaho version and image details, PostgreSQL credentials and port configuration (defaulting to 5432), Pentaho HTTP and HTTPS ports (8090 and 8443), JVM memory allocation (minimum 4GB, maximum 8GB), the license server URL, and Vault port settings. Once configured, this template is saved as the active .env file.
PostgreSQL performance tuning is handled through the postgres-config/custom.conf file, where you can customize connection limits (defaulting to 200 max connections), memory allocation parameters including shared buffers and cache sizes, and other performance optimizations specifically tuned for containerized environments.
Finally, the softwareOverride/ directory provides an optional mechanism for customizing Pentaho configurations without modifying core installation files. The PostgreSQL JDBC driver comes included by default, but you can optionally upgrade it by downloading from Maven Central or copying from the workshop's database drivers collection. This preparation ensures all required files, configurations, and credentials are properly staged before running the automated deployment script.
Configure .env
Edit the .env.template
Enter the following details:
PENTAHO_VERSION
11.0.0.0-237
Pentaho Server version
PENTAHO_IMAGE_NAME
pentaho/pentaho-server
Docker image name
PENTAHO_IMAGE_TAG
11.0.0.0-237
Docker image tag
POSTGRES_PASSWORD
password
PostgreSQL root password
POSTGRES_PORT
5432
PostgreSQL exposed port
PENTAHO_HTTP_PORT
8090
Pentaho HTTP port
PENTAHO_HTTPS_PORT
8443
Pentaho HTTPS port
PENTAHO_MIN_MEMORY
4096m
JVM minimum heap size
PENTAHO_MAX_MEMORY
8192m
JVM maximum heap size
LICENSE_URL
(empty)
EE license server URL
VAULT_PORT
8200
Vault API port
Save:
Create .env
Customize postgres-config/custom.conf
Edit the .env.template
Enter the following details:
Save:
softwareOverride
The PostgreSQL JDBC driver is included in the Pentaho distribution. If you need to upgrade:
Download from Maven Central
Place in
softwareOverride/1_drivers/tomcat/lib/
Or
Copy from Workshop--Installation/'Database Drivers'/
Deployment
This section walks through the deployment process using either the automated script or manual commands.
Select Deployment option:
Automated Deployment
The deploy.sh script automates the entire deployment process with pre-flight validation:
./deploy.sh
The script performs the following actions:
Validates Docker and Docker Compose installation
Verifies Pentaho package exists in:
docker/stagedArtifacts/Creates
.envfrom template if missingChecks disk space (10GB minimum)
Verifies required ports are available
Builds the Pentaho Server Docker image
Starts PostgreSQL and waits for health check
Starts Pentaho Server and monitors startup
Displays access URLs and credentials
1. Set execute permissions on the deployment scripts.
Deploy the containers.
Ensure you dont have a postgresql service up and running:


View logs
docker compose logs -f
Stop services
docker compose stop
Start services
docker compose start
Restart services
docker compose restart
Shutdown
docker compose down

Verify container status.
Run validation script.

Open a web browser and navigate to:
Login with the default credentials:
Password
password
Enter the Licensing Server URL

Last updated
Was this helpful?

