Skip to content

Commit 72b36f0

Browse files
committed
chore: docs & readme -> swarm + k3s
1 parent 9661f1f commit 72b36f0

9 files changed

Lines changed: 39 additions & 27 deletions

File tree

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,9 @@
1818

1919
---
2020

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.
2222

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.
2424

2525
## Documentation
2626

docs/app/cli/page.mdx

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -679,6 +679,14 @@ dockflow setup swarm <env>
679679

680680
Initialize a Docker Swarm cluster for an environment. Joins all servers configured in `servers.yml` into the Swarm.
681681

682+
### Initialize k3s
683+
684+
```bash
685+
dockflow setup k3s <env>
686+
```
687+
688+
Install and configure k3s on the target server for an environment.
689+
682690
### Check Dependencies
683691

684692
```bash

docs/app/configuration/accessories/page.mdx

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ Accessories are **stateful services** (databases, caches, message queues, etc.)
1010
**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.
1111
</Callout>
1212

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.
1414

1515
```
1616
myapp-production ← Main app (redeployed often)
@@ -61,9 +61,9 @@ volumes:
6161
Environment variables can be accessed using template syntax: `{{ variable_name }}`
6262
</Callout>
6363

64-
## Automatic Swarm Configuration
64+
## Automatic Deploy Configuration
6565

66-
Dockflow automatically injects a minimal Swarm configuration for each accessory service:
66+
Dockflow automatically injects a minimal deploy configuration for each accessory service:
6767

6868
```yaml
6969
deploy:

docs/app/configuration/backup/page.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -162,7 +162,7 @@ backup:
162162

163163
### Redis
164164

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).
166166

167167
```yaml
168168
backup:

docs/app/configuration/build-strategy/page.mdx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ Images are built in your CI/CD pipeline and transferred to the server via SSH. N
1919
**How it works:**
2020
1. Dockflow parses `docker-compose.yml` to extract build commands
2121
2. Images are built locally (in parallel if multiple services)
22-
3. Images are streamed to all Swarm nodes via SSH:
22+
3. Images are streamed to all cluster nodes via SSH:
2323
```
2424
docker save IMAGE | gzip -1 | ssh user@host "gunzip | docker load"
2525
```
@@ -32,12 +32,12 @@ This is the simplest strategy and works for both single-node deployments and mul
3232

3333
## Registry Build
3434

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.
3636

3737
**How it works:**
3838
1. Images are built locally (same as default)
3939
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
4141

4242
See [Docker Registry](/configuration/registry) for full configuration (GHCR, GitLab, Docker Hub, self-hosted).
4343

@@ -79,7 +79,7 @@ For private repositories, add a `GIT_TOKEN` secret to your CI/CD environment. Do
7979
| **Setup complexity** | None | Registry config needed | Git access on server |
8080
| **Network usage** | SSH stream per node | Single push, nodes pull | Git clone only |
8181
| **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 |
8383
| **CI resources** | Needs Docker on runner | Needs Docker on runner | Minimal CI resources |
8484
| **Private repos** | N/A | N/A | Needs `GIT_TOKEN` |
8585

docs/app/configuration/docker-compose/page.mdx

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -71,7 +71,7 @@ This behavior can be disabled with `image_auto_tag: false` in [config.yml](/conf
7171

7272
## Deploy Configuration
7373

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.
7575

7676
### Default Values
7777

@@ -129,7 +129,7 @@ services:
129129

130130
## Health Checks
131131

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:
133133

134134
```yaml
135135
services:
@@ -162,7 +162,7 @@ volumes:
162162
```
163163

164164
<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.
166166
</Callout>
167167

168168
## Networks
@@ -260,8 +260,8 @@ networks:
260260
Dockflow ensures complete isolation between environments (production, staging, etc.) through:
261261

262262
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)
265265

266266
---
267267

docs/app/configuration/multi-host/page.mdx

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,11 @@
22

33
import { Callout } from 'nextra/components'
44

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+
<Callout type="info">
8+
The orchestrator is selected with `orchestrator: swarm | k3s` in `config.yml`. See [Orchestrator](/configuration/orchestrator) for details.
9+
</Callout>
610

711
## Swarm Architecture
812

@@ -42,7 +46,7 @@ PRODUCTION_WORKER2_CONNECTION=eyJob3N0Ijoi...
4246
```
4347

4448
<Callout type="info">
45-
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.
4650
</Callout>
4751

4852
## Multi-Manager for High Availability
@@ -83,7 +87,7 @@ servers:
8387
When deploying with multiple managers, Dockflow automatically:
8488
8589
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)
8791
3. Falls back to the next available manager if one is down
8892
8993
```bash
@@ -105,12 +109,12 @@ Example output with failover:
105109
## How Deployment Works
106110

107111
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
109113
3. **Images are transferred to workers** — Via SSH streaming or [registry](/configuration/registry)
110114

111115
```bash
112116
dockflow deploy production
113-
# ✓ Deployment completed! Swarm cluster: 3 managers + 2 worker(s)
117+
# ✓ Deployment completed! Swarm cluster: 3 managers, 2 worker(s)
114118
```
115119

116120
## Server-Specific Environment Variables

docs/app/getting-started/page.mdx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ You need a Debian/Ubuntu server with SSH access (root or sudo user).
6363
dockflow setup root@your-server-ip
6464
```
6565

66-
The wizard handles everything: Docker installation, Swarm initialization, SSH keys, and deployment user creation.
66+
The wizard handles everything: Docker installation, orchestrator setup (Swarm or k3s), SSH keys, and deployment user creation.
6767
At the end, it generates a **connection string** — save it for later.
6868
</Tabs.Tab>
6969
<Tabs.Tab>

docs/app/page.tsx

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -27,7 +27,7 @@ export default function Page() {
2727

2828
<p className="mt-5 text-lg text-neutral-500 dark:text-neutral-400 max-w-[560px] mx-auto leading-relaxed">
2929
A CLI that scaffolds, provisions, and deploys Docker applications to your own servers.
30-
Powered by Docker Swarm. No Kubernetes needed.
30+
Supports Docker Swarm and k3s. No cloud vendor lock-in.
3131
</p>
3232

3333
<div className="flex justify-center gap-3 mt-8 flex-wrap">
@@ -84,7 +84,7 @@ export default function Page() {
8484
Skip the complexity
8585
</h2>
8686
<p className="text-neutral-500 dark:text-neutral-400 text-center text-[15px] mt-3 mb-12">
87-
Server provisioning, Swarm orchestration, rollbacks — handled for you.
87+
Server provisioning, orchestration, rollbacks — handled for you.
8888
</p>
8989

9090
<div className="grid grid-cols-1 md:grid-cols-2 gap-5">
@@ -94,7 +94,7 @@ export default function Page() {
9494
Without Dockflow
9595
</div>
9696
{[
97-
"Install Docker & init Swarm by hand",
97+
"Install Docker & set up the orchestrator by hand",
9898
"Manage SSH keys and user accounts",
9999
"Write bash deploy scripts",
100100
"Transfer images to servers manually",
@@ -115,7 +115,7 @@ export default function Page() {
115115
</div>
116116
{[
117117
["dockflow init", "Scaffolds config, Compose & Dockerfile"],
118-
["dockflow setup", "Installs Docker, creates user, inits Swarm"],
118+
["dockflow setup", "Installs Docker, creates user, sets up Swarm or k3s"],
119119
["Connection strings", "Generated automatically after setup"],
120120
["dockflow deploy", "Builds, transfers & deploys via SSH"],
121121
["Health checks", "Auto rollback on failure"],
@@ -147,7 +147,7 @@ export default function Page() {
147147
<FeatureCard
148148
icon={<IconTerminal />}
149149
title="One command deploy"
150-
desc="dockflow deploy builds your image, transfers it to the server, and updates your Docker Swarm stackin a single command."
150+
desc="dockflow deploy builds your image, transfers it to the server, and deploys your stack via SSHwhether you run Docker Swarm or k3s."
151151
large
152152
/>
153153
<FeatureCard
@@ -160,7 +160,7 @@ export default function Page() {
160160
{/* Row 2: 4 small */}
161161
<div className="grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-4">
162162
<FeatureCard icon={<IconRollback />} title="Auto rollback" desc="Configurable health checks on deploy. Roll back on failure, notify, or ignore." />
163-
<FeatureCard icon={<IconServer />} title="Single node to cluster" desc="Start on one server. Add workers and scale to multi-node Swarm when ready." />
163+
<FeatureCard icon={<IconServer />} title="Single node to cluster" desc="Start on one server. Scale to a multi-node Swarm cluster or deploy on k3s when ready." />
164164
<FeatureCard icon={<IconGitBranch />} title="CI/CD workflows" desc="Ships with ready-made GitHub Actions and GitLab CI pipelines. Push a tag, trigger a deploy." />
165165
<FeatureCard icon={<IconMonitor />} title="Web dashboard" desc="Monitor services, stream logs, and trigger deploys from the built-in web UI." />
166166
</div>

0 commit comments

Comments
 (0)