Skip to content

Migrate from plain Docker Compose

If you’re running stacks with bare docker compose up commands today, switching to dockmesh takes about 5 minutes — and your compose files stay exactly the same.

dockmesh treats the filesystem as the source of truth. Your existing directory of Compose projects is the dockmesh stack library. You don’t convert anything, you don’t move files around, you just point dockmesh at them.

On the host running your compose stacks:

Terminal window
curl -fsSL https://get.dockmesh.dev | bash

This installs the binary to /usr/local/bin/dockmesh, sets up a systemd service, and starts it on port 8080.

Step 2 — Point dockmesh at your compose directory

Section titled “Step 2 — Point dockmesh at your compose directory”

By default dockmesh stores stacks under ./stacks/. If you already have compose projects somewhere else — say /srv/docker/ — configure dockmesh to use that path.

Edit /etc/systemd/system/dockmesh.service:

[Service]
Environment="DOCKMESH_STACKS_ROOT=/srv/docker"

Then:

Terminal window
systemctl daemon-reload
systemctl restart dockmesh

dockmesh expects the structure <root>/<host>/<stack-name>/compose.yaml. If your layout is simpler (e.g. /srv/docker/<stack-name>/compose.yaml without a host directory), create a local symlink:

Terminal window
mkdir -p /srv/docker/local
cd /srv/docker/local
for dir in ../*/; do
[ "$dir" != "./" ] && [ "$dir" != "../local/" ] && ln -s "$dir" .
done

dockmesh now sees all your stacks under the local host.

Open http://your-server:8080. The dashboard shows every container on the host — including stacks you started before dockmesh was installed. dockmesh discovers running containers via the Docker labels Compose sets (com.docker.compose.project).

Already-running stacks show up automatically. You don’t need to restart anything.

Step 4 — Optional: Import docker run containers

Section titled “Step 4 — Optional: Import docker run containers”

Any containers started with plain docker run (not Compose) can be converted to stacks:

  1. Stacks → New stack → Import from docker run
  2. Paste your command
  3. dockmesh generates the compose.yaml

Once converted, you manage them like any other stack.

From now on:

  • docker compose up on the command line still works
  • dockmesh sees the same containers
  • You can deploy, stop, and edit via either interface

If you want to go full-UI, stop using docker compose CLI and let dockmesh handle it. If you want hybrid, do whatever feels natural — both approaches coexist.

Same compose files, but now:

  • Web UI for logs, stats, exec
  • Multi-host — add remote Docker hosts with one command
  • RBAC + SSO — if multiple people need access
  • Backups — scheduled volume backups to NAS/SFTP/S3
  • Alerts — get paged on container failures
  • docker-compose.yml files stay where they are
  • You can still run docker compose commands manually
  • dockmesh doesn’t require any vendor lock-in files or databases for your stack configs
  • Uninstalling dockmesh removes nothing — your stacks keep running