You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+2-2Lines changed: 2 additions & 2 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -18,9 +18,9 @@
18
18
19
19
---
20
20
21
-
A deployment framework for Docker applications, leveraging Swarm for orchestration.
21
+
A CLI-first deployment framework for Docker applications. Supports Docker Swarm and k3s (Kubernetes) as orchestrators.
22
22
23
-
Dockflow automates the deployment of containerized applications to remote servers using Docker Swarm. It handles image building, transfer, stack deployment, health monitoring, and automatic rollback.
23
+
Dockflow automates the deployment of containerized applications to remote servers via direct SSH — no runtime dependencies beyond the binary itself. It handles image building, transfer, stack deployment, health monitoring, and automatic rollback.
**Problem**: If you put your database in the main `docker-compose.yml`, it gets restarted on every deployment. This can cause data corruption or downtime.
11
11
</Callout>
12
12
13
-
**Solution**: Accessories are deployed as a separate Docker Swarm stack. Your app can be deployed 100 times without touching the database.
13
+
**Solution**: Accessories are deployed as a separate stack (Swarm) or namespace (k3s). Your app can be deployed 100 times without touching the database.
14
14
15
15
```
16
16
myapp-production ← Main app (redeployed often)
@@ -61,9 +61,9 @@ volumes:
61
61
Environment variables can be accessed using template syntax: `{{ variable_name }}`
62
62
</Callout>
63
63
64
-
## Automatic Swarm Configuration
64
+
## Automatic Deploy Configuration
65
65
66
-
Dockflow automatically injects a minimal Swarm configuration for each accessory service:
66
+
Dockflow automatically injects a minimal deploy configuration for each accessory service:
Copy file name to clipboardExpand all lines: docs/app/configuration/backup/page.mdx
+1-1Lines changed: 1 addition & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -162,7 +162,7 @@ backup:
162
162
163
163
### Redis
164
164
165
-
Triggers `BGSAVE` and copies the RDB dump file. Restore writes the new dump file, issues `SHUTDOWN NOSAVE` to prevent Redis from overwriting it, then explicitly restarts the Swarm service via `docker service update --force`.
165
+
Triggers `BGSAVE` and copies the RDB dump file. Restore writes the new dump file, issues `SHUTDOWN NOSAVE` to prevent Redis from overwriting it, then restarts the service (`docker service update --force` on Swarm, `kubectl rollout restart` on k3s).
@@ -32,12 +32,12 @@ This is the simplest strategy and works for both single-node deployments and mul
32
32
33
33
## Registry Build
34
34
35
-
For larger multi-node Swarm clusters, use a Docker registry so all nodes can pull images independently. This avoids streaming large images over SSH to each node individually.
35
+
For larger multi-node clusters, use a Docker registry so all nodes can pull images independently. This avoids streaming large images over SSH to each node individually.
36
36
37
37
**How it works:**
38
38
1. Images are built locally (same as default)
39
39
2. Images are pushed to your configured registry
40
-
3. During `docker stack deploy`, each Swarm node pulls the image from the registry
40
+
3. During deployment, each node pulls the image from the registry
41
41
42
42
See [Docker Registry](/configuration/registry) for full configuration (GHCR, GitLab, Docker Hub, self-hosted).
43
43
@@ -79,7 +79,7 @@ For private repositories, add a `GIT_TOKEN` secret to your CI/CD environment. Do
79
79
| **Setup complexity** | None | Registry config needed | Git access on server |
80
80
| **Network usage** | SSH stream per node | Single push, nodes pull | Git clone only |
81
81
| **Build cache** | Full local cache | Full local cache | Pruned between deploys |
82
-
| **Multi-node** | Streaming to each node | Native Swarm pull | Streaming to workers |
82
+
| **Multi-node** | Streaming to each node | Registry pull per node | Streaming to workers |
83
83
| **CI resources** | Needs Docker on runner | Needs Docker on runner | Minimal CI resources |
Copy file name to clipboardExpand all lines: docs/app/configuration/docker-compose/page.mdx
+5-5Lines changed: 5 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -71,7 +71,7 @@ This behavior can be disabled with `image_auto_tag: false` in [config.yml](/conf
71
71
72
72
## Deploy Configuration
73
73
74
-
The `deploy` section controls how Docker Swarm manages your services. Dockflow injects sensible defaults, so you only need to specify what you want to override.
74
+
The `deploy` section controls how the orchestrator manages your services. Dockflow injects sensible defaults for Swarm — on k3s these settings are translated to Kubernetes resource equivalents. You only need to specify what you want to override.
75
75
76
76
### Default Values
77
77
@@ -129,7 +129,7 @@ services:
129
129
130
130
## Health Checks
131
131
132
-
Docker health checks let Swarm verify that containers are actually working:
132
+
Docker health checks let the orchestrator verify that containers are actually working:
133
133
134
134
```yaml
135
135
services:
@@ -162,7 +162,7 @@ volumes:
162
162
```
163
163
164
164
<Callout type="info">
165
-
Volumes and networks are automatically prefixed with the stack name by Docker Swarm (e.g., `myapp-production_app-data`). No manual prefixing needed.
165
+
On Swarm, volumes and networks are automatically prefixed with the stack name (e.g., `myapp-production_app-data`). On k3s, resources are scoped to the `dockflow-{stackName}` namespace.
166
166
</Callout>
167
167
168
168
## Networks
@@ -260,8 +260,8 @@ networks:
260
260
Dockflow ensures complete isolation between environments (production, staging, etc.) through:
261
261
262
262
1. **Image names** — automatically tagged with environment and version (`my-app-production:1.0.0`)
263
-
2. **Stack names** — each environment gets its own Swarm stack
264
-
3. **Networks and volumes** — automatically prefixed with the stack name by Docker Swarm
263
+
2. **Stack names** — each environment gets its own isolated stack or namespace
264
+
3. **Networks and volumes** — scoped per stack (Swarm prefix, k3s namespace)
Copy file name to clipboardExpand all lines: docs/app/configuration/multi-host/page.mdx
+9-5Lines changed: 9 additions & 5 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -2,7 +2,11 @@
2
2
3
3
import { Callout } from'nextra/components'
4
4
5
-
Deploy your application across multiple servers using Docker Swarm with managers and workers.
5
+
Deploy your application across multiple servers. Multi-node clusters are supported for **Docker Swarm**. k3s deployments currently target a single node via dockflow.
6
+
7
+
<Callouttype="info">
8
+
The orchestrator is selected with `orchestrator: swarm | k3s` in `config.yml`. See [Orchestrator](/configuration/orchestrator) for details.
Workers automatically join the Swarm cluster. You only deploy to the manager — Swarm distributes workloads automatically.
49
+
Workers automatically join the Swarm cluster during `dockflow setup swarm`. You only deploy to the manager — Swarm distributes workloads automatically.
46
50
</Callout>
47
51
48
52
## Multi-Manager for High Availability
@@ -83,7 +87,7 @@ servers:
83
87
When deploying with multiple managers, Dockflow automatically:
84
88
85
89
1. Checks each manager's status via SSH
86
-
2. Finds the Swarm leader (or any reachable manager)
90
+
2. Finds the active Swarm leader (or any reachable manager)
87
91
3. Falls back to the next available manager if one is down
88
92
89
93
```bash
@@ -105,12 +109,12 @@ Example output with failover:
105
109
## How Deployment Works
106
110
107
111
1.**Deploy targets the manager** — Dockflow connects only to the active manager
108
-
2.**Swarm distributes workloads** — Containers are scheduled across all nodes
112
+
2.**Swarm schedules workloads** — Containers are distributed across all nodes automatically
109
113
3.**Images are transferred to workers** — Via SSH streaming or [registry](/configuration/registry)
<FeatureCardicon={<IconRollback/>}title="Auto rollback"desc="Configurable health checks on deploy. Roll back on failure, notify, or ignore."/>
163
-
<FeatureCardicon={<IconServer/>}title="Single node to cluster"desc="Start on one server. Add workers and scale to multi-node Swarm when ready."/>
163
+
<FeatureCardicon={<IconServer/>}title="Single node to cluster"desc="Start on one server. Scale to a multi-node Swarm cluster or deploy on k3s when ready."/>
164
164
<FeatureCardicon={<IconGitBranch/>}title="CI/CD workflows"desc="Ships with ready-made GitHub Actions and GitLab CI pipelines. Push a tag, trigger a deploy."/>
165
165
<FeatureCardicon={<IconMonitor/>}title="Web dashboard"desc="Monitor services, stream logs, and trigger deploys from the built-in web UI."/>
0 commit comments