Skip to content
100% local

docker-compose to Kubernetes manifest

Convert docker-compose services into Kubernetes Deployment and Service manifests.

Input
Output

docker-compose to Kubernetes manifest

Paste a docker-compose.yml file and this tool converts each service into ready-to-apply Kubernetes manifests: a Deployment, and, when the service publishes a port, a matching Service. It is built for developers moving a Compose-based stack onto a cluster, drafting a Helm chart by hand, or just wanting a first pass at the YAML instead of writing every field from scratch.

Set a namespace and common labels to stamp onto every generated resource, and choose how many replicas each Deployment should run. Ports convert to a ClusterIP or a NodePort Service depending on what you pick, environment variables become a ConfigMap or a Secret, and volumes become a PersistentVolumeClaim or an emptyDir — whichever matches how you plan to run the workload. Turn on readiness and liveness probes to add a basic TCP check against the container's first port, and turn on Ingress generation to expose port-bearing services outside the cluster.

Compose's cpus and memory limits under deploy.resources are translated into Kubernetes' own quantity format — 0.5 cpus becomes 500m, 512M becomes 512Mi — and every generated pod template gets restartPolicy: Always, the only value a Deployment accepts. A service with no image, ports or volumes still produces a minimal Deployment. A file with no top-level services: section, or YAML that fails to parse, returns a clear error naming the line instead of a blank result.

Everything runs in your browser: the compose file never leaves your device, so it is safe to paste production configuration. Copy the generated manifests, download them as a .txt file, or send the output straight back into the input to keep refining the namespace, labels or replica count.

FAQ

Does it support Compose's long syntax for ports and volumes?
Yes. Alongside short strings like "8080:80" or "data:/var/lib/data", ports and volumes written as mappings (target, published, source) are read as well.
Why does every pod get restartPolicy: Always?
A Deployment's pod template only accepts that value — a controller, not the container runtime, decides how to react to a failed container, so Compose's own restart setting cannot carry over one-to-one.
Can it generate an Ingress for a service with no port?
No. Service and Ingress manifests are only created for services that publish at least one port in Compose, since there is nothing to route traffic to otherwise.
What happens to memory and CPU limits?
Compose's deploy.resources block converts into Kubernetes' resource quantities: decimal CPU values become millicores (0.5 → 500m) and memory units like M or G become Mi or Gi.
Is my docker-compose file uploaded anywhere?
No. Conversion runs entirely in your browser — your compose file and its contents never leave your device.