Comprehensive Architectural Guide to Deploying CloudBeaver via Docker and Docker Compose

The deployment of CloudBeaver, the web-based database management tool by DBeaver, leverages containerization technology to provide a scalable, portable, and isolated environment for database administration. By utilizing Docker, administrators can abstract the application from the underlying host operating system, ensuring that the Jetty server—which CloudBeaver uses for web application hosting—runs with consistent dependencies regardless of whether the host is Ubuntu, macOS, or Windows. This containerized approach is critical for modern DevOps workflows, allowing for rapid deployment of both Community and Enterprise editions through standardized images hosted on Docker Hub. The technical foundation of this deployment rests on the ability to map network ports and persist critical workspace data through volume mounting, ensuring that configuration changes and connection settings survive container restarts or updates.

CloudBeaver Community Edition Deployment via Docker Image

The Community Edition of CloudBeaver is designed for streamlined deployment using standalone Docker images. This method is ideal for users seeking a lightweight installation without the complexity of multi-container orchestration.

The initial step in the deployment process is the retrieval of the official image from the Docker Hub repository. To acquire the most recent stable release, the following command is executed:

docker pull dbeaver/cloudbeaver:latest

For environments requiring a specific version for compatibility or stability reasons, the latest tag is replaced with a specific version tag. This ensures that the deployment is deterministic and avoids unexpected breaking changes that may accompany the latest edge release.

To initialize the CloudBeaver container, a specific docker run command is utilized to define the container's behavior, networking, and data persistence:

docker run --name cloudbeaver --rm -ti -p 8978:8978 -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest

The technical breakdown of this command is as follows:

  • The --name cloudbeaver flag assigns a unique identifier to the container, simplifying management tasks such as stopping or logging.
  • The --rm flag ensures that the container is automatically removed once it stops, preventing the accumulation of dead containers on the host.
  • The -ti flags enable interactive mode and a pseudo-TTY, which is useful for viewing real-time logs during the initial setup.
  • The -p 8978:8978 argument maps the internal container port 8978 to the host port 8978. The first value (host port) can be modified if port 8978 is already occupied on the host machine.
  • The -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace flag creates a bind mount. This is a critical administrative requirement because it maps the host directory /var/cloudbeaver/workspace to the container's internal workspace. This ensures that all database connections and configurations are persisted on the host's disk.

For users deploying behind a proxy or requiring strict IP binding, the port mapping can be modified to bind to a specific interface:

docker run --name cloudbeaver --rm -ti -p 127.0.0.1:8978:8978 -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest

To transition the container into a background service (daemon mode) that ensures high availability, the --restart unless-stopped flag must be added. This prevents the container from remaining offline after a host reboot or an unexpected crash.

Once the container is active, the application is accessible via the browser at http://<server-ip>:8978.

Advanced Network Connectivity and Host Integration

A common technical challenge in Docker deployments is the communication between the containerized application and databases residing on the same host machine. Because Docker containers operate in their own isolated network namespace, they cannot reach the host via localhost.

For Linux environments, the most efficient method to resolve this is by using the host network mode:

--network host

This removes the network isolation between the container and the Docker host, allowing the container to share the host's IP and port space. Alternatively, for a more granular approach or for non-Linux hosts, the --add-host flag can be used to map a specific hostname to the host's IP address:

--add-host=host.docker.internal:<your_host_ip>

This allows the CloudBeaver application to reference the host machine using the hostname host.docker.internal, bridging the gap between the isolated container network and the local database services.

CloudBeaver Enterprise Edition and Docker Compose Orchestration

CloudBeaver Enterprise Edition (EE) offers a more robust deployment model via Docker Compose. This method is exclusive to the Enterprise edition and is designed for complex environments requiring web services, load balancing, and cluster management.

The Enterprise deployment involves a pre-configured web service and relies on a .env file for system configuration. This separation of configuration from the orchestration logic allows administrators to modify environment variables without altering the docker-compose.yml file.

Required Network Infrastructure

For a successful Enterprise deployment, the server must have outbound network access to specific domains. If these domains are blocked by a firewall or proxy, license validation and component updates will fail.

Domain Purpose
hub.docker.com Pulling Docker images from Docker Hub
Docker image mirrors Delivery of image layers via content delivery domains
dbeaver.com Validation of Enterprise licenses
databases.team Provisioning Let's Encrypt certificates for custom domains

Environment Variable Configuration

The .env file is the central point of configuration for CloudBeaver Enterprise. The following variables define the behavior of the deployment:

Variable Description Default Value
IMAGE_SOURCE Primary source of the Docker image dbeaver
PODMANIMAGESOURCE Image source for Podman environments docker.io/dbeaver
COMPOSEPROJECTNAME Project name for Docker Compose dbeaver
CLOUDBEAVERVERSIONTAG Specific version of CloudBeaver to deploy 24.3.0
REPLICACOUNTEE Number of replicas for scaling Enterprise Edition 1
PROXY_TYPE Proxy server type (nginx or haproxy) nginx

A critical security requirement during the setup is the modification of the CLOUDBEAVER_DB_PASSWORD variable. Administrators must replace the default value with a strong, unique password to secure the database backend of the Enterprise cluster.

Platform-Specific Installation Workflows

The deployment of CloudBeaver Enterprise varies slightly depending on the host operating system, primarily regarding the tooling required.

Installation on macOS

The macOS workflow requires the installation of Docker Desktop, which provides the Docker Engine and Docker Compose.

  • Install Docker Desktop for macOS.
  • Ensure Docker Desktop is running before initiating deployment.
  • Install Docker Compose if it is not bundled with the current version of Docker Desktop.
  • Install Git for repository management.

Once tools are verified, the deployment follows these steps:

  1. Clone the deployment repository.
  2. Navigate to the CloudBeaver deploy directory.
  3. Configure the .env file and update the CLOUDBEAVER_DB_PASSWORD.
  4. Start the cluster using the compose command.

Installation on Windows

Deployment on Windows is supported on Windows 10 and 11. It is important to note that Docker Desktop is not supported on Windows Server.

  • Install Docker Desktop.
  • Install Git.

The configuration process requires the creation of the environment file from a template:

bash cp .env.example .env

After creating the file, the administrator must manually set a strong CLOUDBEAVER_DB_PASSWORD before starting the cluster to prevent security vulnerabilities.

Life Cycle Management: Updates and Air-Gapped Deployments

Maintaining the software requires a structured approach to updates, as downgrades are explicitly not supported by the system.

Standard Update Procedure

To update a standalone Docker installation of CloudBeaver, the existing container must be completely replaced:

  1. Stop the running container:
    docker stop cloudbeaver
  2. Remove the container:
    docker rm cloudbeaver
  3. Pull the latest image:
    docker pull dbeaver/cloudbeaver:latest
  4. Restart the container with persistence and restart policies:
    docker run --name cloudbeaver -d --restart unless-stopped -p 8978:8978 -v /var/cloudbeaver/workspace:/opt/cloudbeaver/workspace dbeaver/cloudbeaver:latest

A critical warning is issued for all users: always back up the workspace directory before performing an update to prevent data loss during the migration of the internal database schema.

Air-Gapped (Offline) Deployment

In secure environments without internet access, the "Save and Load" method is used to transfer the image from a connected machine to the target server.

  1. On a machine with internet access, archive the image:
    docker save dbeaver/cloudbeaver | gzip > cloudbeaver.tar.gz
  2. Transfer cloudbeaver.tar.gz to the offline server via physical media or internal network.
  3. Load the image into the local Docker daemon:
    docker load < cloudbeaver.tar.gz
  4. Run the container using the standard docker run parameters.

Analysis of Docker Hub Repositories and Image Specifications

The DBeaver organization maintains a comprehensive suite of images on Docker Hub to support different deployment scales and architectural needs.

Image Variants and Specifications

The cloudbeaver-ee image is the core of the Enterprise edition. As of the latest metadata, the image size is approximately 819.2 MB. It is frequently updated, with the latest versions often being pushed within hours of release. To obtain the Enterprise edition, the following command is used:

docker pull dbeaver/cloudbeaver-ee:ea

Ecosystem Components

Beyond the main application, the DBeaver Team Edition Cluster consists of several specialized nodes, each serving a distinct role in the distributed architecture:

  • Web Services Node: Handles the frontend and API requests.
  • Resource Manager Node: Manages system resources and allocations.
  • Query Manager Node: Orchestrates the execution and tracking of SQL queries.
  • Controller Node: Acts as the orchestrator for the cluster.
  • Task Manager Node: Handles scheduled jobs and background tasks.
  • MQ Controller Node: Manages message queuing for inter-node communication.
  • Postgres Dependency: Provides the necessary database backend for the Team Edition server.
  • Web Server Containers: Specialized images based on Nginx OpenResty on Alpine or Haproxy on Alpine for high-performance traffic routing.

Conclusion

The deployment of CloudBeaver via Docker transforms a complex database management installation into a manageable, repeatable process. For individual users or small teams, the Community Edition provides a rapid-start path using a single container and a bind-mounted workspace for persistence. For enterprise-grade environments, the transition to Docker Compose allows for the deployment of a sophisticated cluster featuring dedicated nodes for query management, resource allocation, and professional-grade proxying via Nginx or Haproxy.

The technical success of these deployments relies on three pillars: correct network mapping (especially when accessing host-local databases), strict adherence to environment variable security (specifically the database password), and a disciplined update cycle that prioritizes workspace backups. By utilizing the various image variants provided on Docker Hub—ranging from the lightweight Community image to the heavy-duty Team Edition components—administrators can scale their database tooling from a single local instance to a distributed enterprise cluster.

Related Posts