A production-friendly CloudBeaver (web SQL client) image that bundles Oracle JDBC (plus a few common JDBC drivers) so you can run fully offline/air-gapped. It keeps CloudBeaver’s built-in drivers (like H2 for internal metadata) intact.
✅ Works with Docker or Podman.
✅ Oracle thin + Wallet/TCPS supported.
✅ No need to mount custom drivers at runtime.
dbeaver/cloudbeaver:<tag>ojdbc17-<version>.jaroraclepki-<version>.jar, osdt_core-<version>.jar, osdt_cert-<version>.jarImportant: We never overwrite
/opt/cloudbeaver/drivers. Built-in drivers remain available.
.
├─ Dockerfile
├─ docker-compose.yml
├─ wallets/ # put Oracle Wallet(s) here (unzipped directories)
└─ conf/
└─ cloudbeaver.conf # optional; only if you want to pin server config
docker compose build
docker compose up -d
Podman:
podman compose build
podman compose up -d
# or: podman-compose up -d
Open http://:5050
Login with the bootstrap admin (see docker-compose.yml). Change the password immediately.
Add a connection → Oracle and use one of the JDBC URL patterns below.
jdbc:oracle:thin:@//HOSTNAME:1521/SERVICE_NAME
Example: jdbc:oracle:thin:@//db.example.com:1521/ORCLPDB1
./wallets/yourdb/ (this is mounted read-only)jdbc:oracle:thin:@dbname_high?TNS_ADMIN=/opt/cloudbeaver/wallets/yourdb
If you prefer a TNS alias, set
TNS_ADMINsimilarly and use
jdbc:oracle:thin:@YOUR_TNS_ALIAS
/opt/cloudbeaver/drivers/oracle/opt/cloudbeaver/drivers/extra/opt/cloudbeaver/workspaceNote: We intentionally do not mount
/opt/cloudbeaver/driversfrom the host.
That would overwrite built-in drivers and break startup.
CB_SERVER_NAME – display name in the UICB_SERVER_URL – base URL (set your public URL if behind reverse proxy)CB_ADMIN_NAME, CB_ADMIN_PASSWORD – bootstrap admin userTZ – container timezone (optional)For production, store secrets in Docker/Podman secrets or your vault of choice.
cb_workspace:/opt/cloudbeaver/workspace – user settings, saved connections, etc../wallets:/opt/cloudbeaver/wallets:ro – put Oracle Wallet directories hereExample Nginx (TLS termination + pass through):
server {
listen 443 ssl http2;
server_name cloudbeaver.example.com;
ssl_certificate /etc/ssl/certs/fullchain.pem;
ssl_certificate_key /etc/ssl/private/privkey.pem;
location / {
proxy_pass http://127.0.0.1:5050/;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-Proto https;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
If you front CloudBeaver with SSO (e.g., oauth2-proxy/Keycloak) using header auth, enable Reverse proxy mode in CloudBeaver’s Server Settings and forward a stable user header (e.g., X-Forwarded-User).
can't load driver class 'org.h2.Driver'You accidentally replaced /opt/cloudbeaver/drivers with a host mount.
Fix: don’t mount that path. Use this image as-is, or mount only subfolders (e.g., /opt/cloudbeaver/wallets). If you must restore H2 temporarily, include h2-<ver>.jar under the mounted drivers, then remove the mount.
tnsnames.ora, sqlnet.ora, ewallet.sso) are present and readableTNS_ADMIN path inside the container1522/TCPS (or your ADB port)This image already ships the jars. If the UI still can’t bind, restart the container once after first run so CloudBeaver rescans the drivers directory.
docker build -t registry.example.com/tools/cloudbeaver-oracle:25.2.0 .
docker push registry.example.com/tools/cloudbeaver-oracle:25.2.0
stack.yml:version: "3.9"
services:
cloudbeaver:
image: registry.example.com/tools/cloudbeaver-oracle:25.2.0
ports: ["5050:8978"]
environment:
CB_SERVER_NAME: "HC CloudBeaver"
CB_SERVER_URL: "https://cloudbeaver.example.com/"
CB_ADMIN_NAME: "admin"
CB_ADMIN_PASSWORD: "change_me"
volumes:
- cb_workspace:/opt/cloudbeaver/workspace
- ./wallets:/opt/cloudbeaver/wallets:ro
deploy:
replicas: 1
restart_policy: { condition: on-failure }
volumes:
cb_workspace:
CB_TAG (base image) and/or the JDBC driver versions in the build args, rebuild, then recreate the service.cb_workspace before major upgrades.CB_ADMIN_PASSWORD in a secret or vaultOracle JDBC artifacts are distributed by Oracle under their terms.
Use according to your organization’s licensing/compliance guidelines.
# Build & run (Docker)
docker compose build && docker compose up -d
# Logs
docker compose logs -f
# Stop
docker compose down
# Podman equivalent
podman compose build && podman compose up -d
Content type
Image
Digest
sha256:38ff02acf…
Size
696.6 MB
Last updated
9 months ago
docker pull mich43l/cloudbeaver