Reference

Coming from Dokku

Same commands, same git push. What changes is where your apps run and how many servers they can use.

Jokku keeps Dokku's command names, argument order and output. apps:create, config:set, ps:scale, domains:add, ssh-keys:add and git push all work the way you expect, and tools that speak Dokku's protocol, like dokku/github-action, work unchanged.

What's different#

AreaDokkuJokku
IsolationContainersFirecracker microVMs
ServersOneA cluster, with the same commands
Buildersherokuish, CNB, Dockerfile, nixpacks, ...Dockerfiles, compose files and registry images; buildpacks later
Proxynginx (pluggable)Caddy, built in, with certificates shared across servers
storage:mountA host directory, shared by all containersA named volume attached to one instance; it runs where the disk is, and the disk moves with it
PluginsThe bash plugin ecosystemNone for now; services like Postgres and Redis later, as apps plus volumes
ReleasesNo rollbackreleases, and releases:rollback planned
Serversn/anodes:* and cluster:*

Choosing a builder#

This is the one area that departs from Dokku. Rather than builder:set selected and per-builder settings, Jokku has one command per way of building:

Terminal
jokku builder:dockerfile myapp                     # build the Dockerfile (the default)
jokku builder:dockerfile myapp docker/prod.Dockerfile
jokku builder:compose myapp                        # deploy a compose file
jokku builder:image myapp ghcr.io/you/myapp:v2     # run a registry image (replaces git:from-image)

builder:set still handles build-dir and procfile; the Procfile path moved there from ps:set procfile-path.

Things to know#

  • Volumes are disks, not directories. A process with a volume runs one instance, and its deploys stop the old instance first. See Volumes.
  • HTTPS is off for new apps, as in Dokku. Turn it on with letsencrypt:enable.
  • resource:reserve isn't needed. In a microVM, the memory limit is the reservation.
  • Apps listen on $PORT. ports:* mapping is planned.
  • Not planned: nginx:* (Caddy replaces nginx), plugin:* and ps:inspect (use ps:report).

See the command reference for every command and its status.