Sign inSign up

liquibase/liquibase-enterprise-dmc

By liquibase

Updated 6 months ago

Liquibase Enterprise Deployment Monitoring Console (DMC)

Image
0

553

liquibase/liquibase-enterprise-dmc repository overview

Liquibase Enterprise DMC

Production-ready Docker image for the Liquibase Enterprise Deployment Monitoring Console (DMC).

Full documentation: Contact Liquibase Support for detailed deployment guides.

Supported Tags

  • latest — most recent release
  • 8.10.489 — specific version (patch)
  • 8.10 — minor version (tracks latest patch)

Quick Start

Docker Run (Demo Mode)
docker run -d \
  --name dmc \
  --hostname datical-service \
  --platform linux/amd64 \
  -p 80:80 -p 443:443 \
  -v dmc-data:/opt/datical/data \
  liquibase/liquibase-enterprise-dmc:latest
Docker Compose (Demo Mode)
services:
  dmc:
    image: liquibase/liquibase-enterprise-dmc:latest
    platform: linux/amd64
    hostname: datical-service
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - dmc-data:/opt/datical/data
    healthcheck:
      test: ["CMD", "curl", "-sf", "http://localhost:8000/actuator/health"]
      interval: 30s
      timeout: 10s
      start_period: 180s
      retries: 5

volumes:
  dmc-data:
docker compose up -d

Allow ~2 minutes for startup, then access the UI at https://localhost.

Default credentials: [email protected] / datical

Verify
# Check container health
docker inspect --format='{{.State.Health.Status}}' dmc

# Check health endpoint
curl -sk https://localhost/actuator/health
# Expected: {"status":"UP"}

Note: The DMC image is x86_64 only. On Apple Silicon Macs, use --platform linux/amd64 (QEMU emulation). Startup will be slower than on native x86_64 hardware.

Configuration

Custom Hostname

Set the external hostname used for service routing and the SSL certificate:

docker run -d \
  --name dmc \
  --hostname datical-service \
  --platform linux/amd64 \
  -e DMC_HOSTNAME=dmc.example.com \
  -p 80:80 -p 443:443 \
  -v dmc-data:/opt/datical/data \
  liquibase/liquibase-enterprise-dmc:latest
External Database (Production Mode)

By default, DMC runs in demo mode with an embedded PostgreSQL. For production, connect to an external PostgreSQL (12-16) by setting DMC_DB_URL:

docker run -d \
  --name dmc \
  --hostname datical-service \
  --platform linux/amd64 \
  -e DMC_HOSTNAME=dmc.example.com \
  -e DMC_DB_URL=jdbc:postgresql://db.example.com:5432/datical \
  -e DMC_DB_USERNAME=datical \
  -e DMC_DB_PASSWORD=your-password \
  -p 80:80 -p 443:443 \
  -v dmc-data:/opt/datical/data \
  liquibase/liquibase-enterprise-dmc:latest

Setting DMC_DB_URL automatically:

  • Switches to production mode (embedded PostgreSQL is not started)
  • Auto-initializes the Keycloak realm on a fresh database
  • Runs Liquibase migrations for the application schema
Database Setup
CREATE DATABASE datical;
CREATE USER datical WITH LOGIN PASSWORD '<your-password>';
GRANT CREATE, CONNECT, TEMPORARY ON DATABASE datical TO datical WITH GRANT OPTION;
\c datical
CREATE SCHEMA datical;
ALTER SCHEMA datical OWNER TO datical;
ALTER ROLE datical IN DATABASE datical SET search_path TO datical;
Migrating Secrets from an Existing Installation

When connecting to an existing DMC database, four secrets must match. Provide them via file mount or environment variables.

Option A — Mount the original cluster.properties:

docker run -d \
  --name dmc \
  --hostname datical-service \
  --platform linux/amd64 \
  -e DMC_DB_URL=jdbc:postgresql://db.example.com:5432/datical \
  -e DMC_DB_USERNAME=datical \
  -e DMC_DB_PASSWORD=your-password \
  -e DMC_CLUSTER_PROPERTIES=/tmp/restore.cluster.properties \
  -v /path/to/old/cluster.properties:/tmp/restore.cluster.properties:ro \
  -p 80:80 -p 443:443 \
  -v dmc-data:/opt/datical/data \
  liquibase/liquibase-enterprise-dmc:latest

Option B — Pass individual secrets (base64-encoded):

docker run -d \
  --name dmc \
  --hostname datical-service \
  --platform linux/amd64 \
  -e DMC_DB_URL=jdbc:postgresql://db.example.com:5432/datical \
  -e DMC_DB_USERNAME=datical \
  -e DMC_DB_PASSWORD=your-password \
  -e DMC_KC_PASSWORD=<base64-value> \
  -e DMC_KC_CLIENT_SECRET=<base64-value> \
  -e DMC_ENCRYPT_KEY=<base64-value> \
  -e DMC_ENCRYPT_SALT=<base64-value> \
  -p 80:80 -p 443:443 \
  -v dmc-data:/opt/datical/data \
  liquibase/liquibase-enterprise-dmc:latest

Contact Liquibase Support for details on extracting secrets and pg_dump migration preparation.

Custom SSL Certificates

For production, place a reverse proxy or load balancer with your own TLS certificates in front of the DMC container. The built-in certificate is self-signed.

Environment Variables

VariableRequiredDefaultDescription
DMC_HOSTNAMENodatical-serviceExternal hostname for service routing and SSL certificate
DMC_DB_URLNo(embedded PG)JDBC URL for external database; enables production mode
DMC_DB_USERNAMENo(installed value)Database username for external database
DMC_DB_PASSWORDNo(installed value)Database password (plaintext; base64-encoded by entrypoint)
DMC_CLUSTER_PROPERTIESNo(none)Path to original cluster.properties file (for migration)
DMC_KC_PASSWORDNo(none)Keycloak internal password (base64-encoded, for migration)
DMC_KC_CLIENT_SECRETNo(none)Keycloak client secret (base64-encoded, for migration)
DMC_ENCRYPT_KEYNo(none)Encryption key (base64-encoded, for migration)
DMC_ENCRYPT_SALTNo(none)Encryption salt (base64-encoded, for migration)

Volumes

PathDescription
/opt/datical/dataPersistent data: PostgreSQL (demo mode), Keycloak caches, SSL keystore

Mount this volume to preserve data across container restarts:

-v dmc-data:/opt/datical/data

Ports

PortService
80HTTP (redirects to HTTPS)
443HTTPS (main UI and API)
5432PostgreSQL (internal, demo mode only)
8080Keycloak (internal)

Production Deployment

For production use:

  1. Use an external PostgreSQL database (set DMC_DB_URL)
  2. Place a reverse proxy with proper TLS certificates in front of the container
  3. Run as a single replica — DMC embeds Keycloak, so horizontal scaling is not supported
  4. Back up the data volume and/or external database regularly
  5. Set DMC_HOSTNAME to your actual external hostname

Contact Liquibase Support for complete production deployment instructions.

Kubernetes

A sample Kubernetes manifest is included with the product. It creates a Namespace, PVC, Deployment, and Service. Contact Liquibase Support for the manifest and deployment instructions.

Key considerations:

  • Single replica only (replicas: 1 with Recreate strategy)
  • Resource requests: 2Gi memory / 1 CPU; limits: 4Gi / 2 CPU
  • Liveness probe: /actuator/health on port 8000, initial delay 180s
  • Readiness probe: /actuator/health on port 8000, initial delay 120s

Contact Liquibase Support for detailed Kubernetes deployment instructions.

Data Persistence

Application data is stored at /opt/datical/data. On first run with an empty volume, data is automatically initialized from the image.

To back up:

docker stop dmc
docker run --rm -v dmc-data:/data -v $(pwd):/backup alpine tar czf /backup/dmc-backup.tar.gz -C /data .
docker start dmc

Upgrading

  1. Back up your data volume (see above)
  2. Pull the new version:
    docker pull liquibase/liquibase-enterprise-dmc:<new-version>
    
  3. Update your docker-compose.yml (or Kubernetes manifest) with the new image tag
  4. Recreate the container:
    docker compose up -d
    

The data volume at /opt/datical/data persists across upgrades. The DMC application auto-runs Liquibase migrations on startup, so schema updates are handled automatically.

Troubleshooting

SymptomSolution
Container takes >2 min to startNormal for first run. Check logs: docker logs -f dmc
SSL certificate warningsExpected with self-signed certs. Use a reverse proxy with your own certificates
Port conflictsChange host port mappings (e.g., -p 8443:443)
Keycloak auth fails on existing DBSecrets mismatch. See Migrating Secrets
relation "databasechangeloglock" already existsSet search_path: ALTER ROLE <user> IN DATABASE <db> SET search_path TO datical;

License

Liquibase EULA

Resources

Tag summary

Content type

Image

Digest

sha256:b68ff8497

Size

456.4 MB

Last updated

6 months ago

docker pull liquibase/liquibase-enterprise-dmc