Skip to content
ShawiizzPublic

About

Integration & Deployment Framework

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Repository files navigation

Dockflow

Dockflow deploys your Docker Compose applications, as written, to your own server: zero downtime, a plan before every change, a rollback that always finishes. From your laptop or your CI.

Documentation: dockflow.shawiizz.dev.

Status

Milestones M1 (walking skeleton) and M2 (shipping real apps) are implemented: a Compose app deploys to one server with zero downtime, a plan, releases and rollbacks; its images are built (buildx bake, Podman, or on the server) and sent through an SSH tunnel to a registry on the server; jobs, health checks, hooks, templates, uploads and the day-2 commands work, from a laptop or any CI. Not for general production use yet: secrets files, server provisioning and backups come in the next milestones (roadmap).

Try it

You need a Linux server with Docker 27 or later, reachable over SSH by a user that may use Docker, with ports 80 and 443 free (or another web server in front: see the external edge in the configuration).

curl -fsSL https://raw.githubusercontent.com/Shawiizz/dockflow/main/install.sh | sh # from a release
make build                                                                            # or from source: ./dockflow

dockflow.yml, next to your compose.yml:

version: 1
app: shop
environments:
  production:
    server:
      host: 203.0.113.10
      user: deploy
      host_key: SHA256:…                # ssh-keygen -lf /etc/ssh/ssh_host_ed25519_key.pub, on the server

Route a service through the switch in compose.yml:

services:
  web:
    image: ghcr.io/acme/web:1.4
    deploy:
      replicas: 2
    x-dockflow:
      routes:
        - domains: [shop.example.com]
          port: 3000

Then:

dockflow server init production         # installs the switch (Caddy) on the server
dockflow plan production
dockflow deploy production
dockflow status production
dockflow releases production
dockflow rollback production

The SSH key comes from DOCKFLOW_SSH_KEY, ssh-agent or ~/.ssh. In CI, a single PRODUCTION_CONNECTION secret replaces the server block.

Design

Start with:

License

MIT

About

Integration & Deployment Framework

Topics

Resources

Stars

3 stars

Watchers

1 watching

Forks

Releases

Used by

Contributors

Languages