Docker Hosting in Kenya
Any language, any system packages, your exact image. Put a Dockerfile in your repository and Chajio Cloud builds it as written, then runs two copies with free SSL and a managed database.
$ git push origin main
▸ Found a Dockerfile: building it as written
▸ FROM golang:1.23-alpine AS build
▸ RUN CGO_ENABLED=0 go build -o /server .
▸ FROM alpine:3.20
▸ Image built and pushed
✓ Live on 2 replicas: https://my-app.live.chajio.cloud
How it works
How we build and run your Docker app
Find
A
Dockerfilein the root of your repository, or in the folder you set as the build context, switches off detection. There is no setting to change.Build
Your Dockerfile is built as written. Variables you declare with
ARGreceive the values on your Environment tab with the same name.Run
Your container starts with
PORTset. Listen on it, on0.0.0.0, and answer the health check path,/unless you change it.Roll out
The new container takes visitors once it is healthy; the old one gets
SIGTERMand a moment to finish its requests.
Get ready
Getting your Docker app ready
FROM golang:1.23-alpine AS build
WORKDIR /src
COPY go.* ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o /server .
FROM alpine:3.20
RUN adduser -D app
USER app
COPY --from=build /server /server
CMD ["/server"]Build in one stage, copy only the result into a small final one, and run as a non-root user. The image that ships holds a single binary.
.git
node_modules
.env
*.logKeeps local clutter, and secrets in .env, out of the build.
Works with
What you can run
Go
A static binary in a tiny image.
Rust
Build with cargo, ship the binary.
Java & Spring Boot
Your own JDK and JVM settings.
Elixir & Phoenix
A release built in the image.
Bun & Deno
Any runtime you can install.
System packages
ffmpeg, ImageMagick, headless Chrome and more.
In production
Running your Docker app in production
Keep secrets out of ARG
Values used during the build are recorded in the image. Database passwords and API keys need no ARG: read them when the app runs, and they never touch the image.
One process, in the foreground
Use an exec-form CMD, such as CMD ["/server"], so SIGTERM reaches your app rather than a shell. Need $PORT in the command? CMD ["sh", "-c", "exec your-server --port $PORT"].
Can’t read PORT?
If your server always listens on one port, set the Container port setting to it instead. EXPOSE lines are fine to keep but change nothing.
Smaller is faster
Smaller images build and roll out faster. Multi-stage builds and a .dockerignore do most of the work.
Every plan
Included on every plan
2 replicas of every app
Two copies behind a load balancer, so a restart or a failed machine never takes you offline.
A managed database
PostgreSQL, MariaDB or MongoDB, with its own standby replica on another machine.
Deploy on every push
Connect GitHub once; every push to your branch builds and goes live.
One-click rollbacks
Go back to any earlier successful deployment from the Deployments tab.
Free SSL, your domain
Certificates issued and renewed for you, plus a free .live.chajio.cloud address.
Build and runtime logs
Watch builds as they run, and see what your app prints as it serves visitors.
CPU, memory and network
Metrics for every app, from the last 15 minutes to the last 30 days.
Zero-downtime deploys
A new version takes visitors only once its health check passes.
Pricing
Docker hosting plans
Free Plan
5GB DB Storage · 2GB RAM
Then Ksh 350/mo
- 2 vCPU
- 2 Apps
- 1 Database
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Growth Plan
10GB DB Storage · 2GB RAM
- 3 vCPU
- 4 Apps
- 2 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Business Plan
20GB DB Storage · 4GB RAM
- 4 vCPU
- 6 Apps
- 3 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
Pro Plan
30GB DB Storage · 8GB RAM
- 8 vCPU
- 10 Apps
- 5 Databases
- 2 App Replicas (HA)
- 2 Database Replicas (HA)
- PostgreSQL, MariaDB or MongoDB
- Deploy from GitHub
- Auto-deploy on push
- One-click rollbacks
- Deployment history
- Build & runtime logs
- CPU, RAM, disk & network metrics
- Disk usage tracking
- Environment variables
- Custom domain
- Free SSL
FAQ
Docker hosting questions
Not for Node.js, Python, PHP, Ruby, .NET, Go or Java apps, or static sites, which are recognised and built automatically. Add a Dockerfile for anything else, such as Rust or Elixir, or when you want exact control over the image.
Each app is one container built from one Dockerfile. Instead of a database service in Compose, add a managed PostgreSQL, MariaDB or MongoDB database, and deploy other services as apps of their own.
The one in the PORT environment variable, on 0.0.0.0. It matches the Container port setting, 3000 unless you change it. If your server can’t read PORT, set Container port to the port it uses.
Declare each one with an ARG line before it is used. Every ARG receives the variable with the same name from your Environment tab. Secrets should be read at runtime instead, so they stay out of the image.
In the root of your repository, or in the folder you set as the build context, which suits a monorepo with several apps.
You can start on the Free plan: free for your first month, then Ksh 350 a month, with 2 vCPU, 2GB RAM, 2 apps and a managed database. The Growth, Business and Pro plans add more CPU, memory, apps and databases as you grow.
Yes. We accept M-Pesa, Visa, Mastercard, PayPal, and bank transfers, and every plan is priced in Kenyan shillings. M-Pesa is the quickest option for Kenyan customers.
More App Hosting
Deploying something else?
Deploy your Docker app today
Your first month is on us, with a managed database and two replicas from day one.