Terminal & DevOps

Docker Compose to Kubernetes Converter

Convert Docker Compose definitions into production-grade Kubernetes Deployments, Services, ConfigMaps, PersistentVolumeClaims, and Ingress manifests. Free, offline, and instant.

Quick Presets:
100% In-Browser Private
Kubernetes Manifest Settings
Production Kubernetes YAML
apiVersion: v1
kind: ConfigMap
metadata:
  name: web-config
  namespace: production
  labels:
    app: web
    tier: backend
data:
  NODE_ENV: production
  PORT: "3000"
  REDIS_HOST: redis-service
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: redis-redis-data-pvc
  namespace: production
  labels:
    app: redis
    tier: backend
spec:
  accessModes:
    - ReadWriteOnce
  resources:
    requests:
      storage: 10Gi
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  namespace: production
  labels:
    app: web
    tier: backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
        - name: web
          image: myorg/nextjs-app:v1.0.0
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 3000
              name: port-1
          envFrom:
            - configMapRef:
                name: web-config
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            tcpSocket:
              port: 3000
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            tcpSocket:
              port: 3000
            initialDelaySeconds: 5
            periodSeconds: 10
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: redis
  namespace: production
  labels:
    app: redis
    tier: backend
spec:
  replicas: 2
  selector:
    matchLabels:
      app: redis
  template:
    metadata:
      labels:
        app: redis
    spec:
      containers:
        - name: redis
          image: redis:7-alpine
          imagePullPolicy: IfNotPresent
          ports:
            - containerPort: 6379
              name: port-1
          volumeMounts:
            - name: redis-data
              mountPath: /data
          resources:
            requests:
              cpu: 100m
              memory: 128Mi
            limits:
              cpu: 500m
              memory: 512Mi
          livenessProbe:
            tcpSocket:
              port: 6379
            initialDelaySeconds: 15
            periodSeconds: 20
          readinessProbe:
            tcpSocket:
              port: 6379
            initialDelaySeconds: 5
            periodSeconds: 10
      volumes:
        - name: redis-data
          persistentVolumeClaim:
            claimName: redis-redis-data-pvc
---
apiVersion: v1
kind: Service
metadata:
  name: web-service
  namespace: production
  labels:
    app: web
    tier: backend
spec:
  type: ClusterIP
  selector:
    app: web
  ports:
    - name: port-1
      port: 3000
      targetPort: 3000
---
apiVersion: v1
kind: Service
metadata:
  name: redis-service
  namespace: production
  labels:
    app: redis
    tier: backend
spec:
  type: ClusterIP
  selector:
    app: redis
  ports:
    - name: port-1
      port: 6379
      targetPort: 6379
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: production-ingress
  namespace: production
  annotations:
    kubernetes.io/ingress.class: nginx
    cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
  tls:
    - hosts:
        - app.example.com
      secretName: app-example-com-tls
  rules:
    - host: app.example.com
      http:
        paths:
          - path: /web
            pathType: Prefix
            backend:
              service:
                name: web-service
                port:
                  number: 3000
          - path: /redis
            pathType: Prefix
            backend:
              service:
                name: redis-service
                port:
                  number: 6379
Advertisement

How to use

  1. 1Paste your docker-compose.yml file into the left editor, or select one of the quick presets (Next.js + Redis, FastAPI + PostgreSQL).
  2. 2Configure your target Kubernetes Namespace, replica count, and Service Type (ClusterIP, LoadBalancer, or NodePort).
  3. 3Enable Ingress generation and specify your domain host if you want public HTTP/HTTPS routing with TLS cert-manager annotations.
  4. 4Review the generated YAML in the right pane, switch between manifest tabs, or click "Download .yaml" to save the full production manifest.

Frequently asked questions

How does Docker Compose mapping to Kubernetes work?
Each service in your docker-compose.yml is mapped to a Kubernetes Deployment and a matching ClusterIP Service. Environment variables are grouped into a dedicated ConfigMap, port bindings are converted to containerPort and Service targetPort specs, and named volumes generate PersistentVolumeClaims (PVCs).
Is my Docker Compose YAML sent to any remote server?
No. The parsing and translation executes 100% inside your browser using client-side JavaScript. Your internal image names, ports, and environment secrets never leave your device.
Does this tool support Docker Compose v2, v3, and Compose Spec?
Yes. It parses standard Docker Compose formats, handles array and key-value environment variables, single and host-mapped port declarations, volume mounts, restart policies, and custom entrypoint commands.
Why does it generate both a Deployment and a Service?
In Kubernetes, a Deployment manages the desired state and replication of your container Pods. A Service provides a stable internal DNS name (e.g. redis-service) and virtual IP for other pods or ingress controllers to communicate with your containers.
Can I customize resource limits and health probes?
Yes. Toggle "Resource Limits" and "Health Probes" in the settings panel to automatically inject production-ready CPU/memory requests and limits, along with TCP socket liveness and readiness probes.

The Senior Full-Stack Production Kit (2026)

Checklists, Docker recipes, and SSR error fixes in one dense PDF.

Get Free Kit

Related articles