Run with Docker
Outcome
Build one development image, run one isolated Decentralization Manager container with persistent state, connect it to Canton, and verify that its identity survives a restart.
This guide is for development. Use Decentralization Manager production deployment for production images, orchestration, TLS, secrets, backups, monitoring, and upgrades.
Before you begin
Docker Engine with BuildKit and Docker Compose v2.
An Engineering-approved Decentralization Manager tag or commit.
A GitHub SSH key loaded into
ssh-agentfor the current development build.Reachable Canton Admin and Ledger APIs.
An approved Keycloak or Auth0 development configuration.
A writable directory for the Noise identity, SQLite database, and DAR files.
1. Build the development image
git clone <https://github.com/DLC-link/decentralization-manager.git>
cd decentralization-manager
git checkout <approved-release-tag-or-commit>
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
DOCKER_BUILDKIT=1 docker build \
--ssh default \
-f development/Dockerfile \
-t dec-party-manager:dev \
.Confirm the image exists:
2. Prepare persistent state
The mounted directory must preserve:
Replacing noise.key changes the peer identity. Deleting decpm.db removes local peer, credential, and workflow state.
3. Configure the container
Create ./development/docker-node/decman.env. Include the reviewed values for:
HTTP and Noise listener addresses and ports.
Public peer address.
Canton Admin and Ledger hosts, ports, network, and synchronizer.
TLS or mTLS settings when the Canton endpoints require them.
Keycloak or Auth0 browser authentication.
DECPM_DIR=/appso state is written under/app/data.
Do not store production credentials in this file or commit it to source control.
4. Start one container
The HTTP port serves the operator interface. Expose the Noise port only to intended peers.
5. Verify startup and persistence
Confirm that:
The operator interface is reachable and uses the configured identity provider.
Canton Admin and Ledger connections report the expected state.
The same
noise.keyanddecpm.dbremain after restart.Logs do not expose credentials or tokens.
Optional development mesh
The repository includes development/docker-compose.yml for a three-instance development stack. Use the repository environment templates and verified Canton port forwards. Each instance must have a separate persistent directory. Treat the example participant count and ports as development assumptions, not production architecture.
Troubleshooting
Build cannot fetch canton-lib
BuildKit, SSH agent, GitHub key registration, and --ssh default.
Container exits
Required environment values, file permissions, and identity-provider configuration.
Canton connection fails
Container routing, ports, and independent Admin and Ledger TLS settings.
Login redirects repeatedly
Provider origin, redirect URI, client ID, realm or audience, and PKCE configuration.
Peer identity changes after restart
DECPM_DIR, the /app/data mount, and host-directory persistence.
Technical sources
Next step
👉 Form the development mesh: Connect Decentralization Manager peers.
Last updated