Introduction
minienv creates effortless remote mini environments generated directly from your docker compose config.
The problem
You already describe your stack in docker-compose.yml. Getting that same stack
onto a shared cluster — so a teammate can click a link and review your branch —
normally means maintaining a second description of it: Kubernetes manifests, or
a Helm chart, that drifts from compose the moment anyone adds a service.
minienv removes the second description. It reads the compose file you already have, plus a small extension block, and deploys it.
What it does
Given a compose file, minienv deploy:
- Builds and pushes images for any service with a
build:section. - Prepares the target — creating the Kubernetes namespace, or the remote directory the compose project will live in.
- Deploys your services, respecting
depends_onorder. - Optionally exposes a service publicly via ngrok, so it can be reviewed from anywhere.
minienv destroy tears the whole thing down again.
A complete, working config can be this small:
x-minienv:
k8s:
context: minikube
namespace: my-feature-branch
services:
hello:
image: rgonnella/demo-hello:latest
ports:
- "8080:8080"
Swap the k8s block for a docker one and the same compose file deploys to a
remote host instead:
x-minienv:
docker:
namespace: my-feature-branch
transport:
ssh:
host: dev-box.example.com
identity: ~/.ssh/id_ed25519
Where to go next
- Getting Started — install it and deploy something.
- Configuration — the extension fields, and which compose fields minienv reads.
- Configuration Reference — every field, in tables.
Two targets, one at a time.
k8sdeploys each service as a Helm release to a cluster;dockerdeploys the whole project to a single remote host. See Deployers.
License
Licensed under either of
- Apache License, Version 2.0 (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)