# K3s inside Docker-in-Docker # A lightweight Kubernetes cluster running inside a Docker container # See README.md for usage instructions x-defaults: &defaults restart: unless-stopped logging: driver: json-file options: max-size: 100m max-file: "3" services: k3s: <<: *defaults image: ${GLOBAL_REGISTRY:-}alexsuntop/k3s-inside-dind:${K3S_DIND_VERSION:-0.2.2} build: context: . dockerfile: Dockerfile platforms: - linux/amd64 - linux/arm64 args: K3S_VERSION: ${K3S_VERSION:-v1.28.2+k3s1} PRELOAD_IMAGES: ${PRELOAD_IMAGES:-true} privileged: true volumes: - k3s_data:/var/lib/rancher/k3s - docker_data:/var/lib/docker ports: - "${K3S_API_PORT_OVERRIDE:-6443}:6443" # Kubernetes API server - "${DOCKER_TLS_PORT_OVERRIDE:-2376}:2376" # Docker daemon TLS port environment: - TZ=${TZ:-UTC} - K3S_TOKEN=${K3S_TOKEN:-} - K3S_DISABLE_SERVICES=${K3S_DISABLE_SERVICES:-traefik} - K3S_NODE_NAME=${K3S_NODE_NAME:-k3s-server} healthcheck: test: ["CMD", "k3s", "kubectl", "get", "--raw", "/healthz"] interval: 30s timeout: 10s retries: 5 start_period: 60s deploy: resources: limits: cpus: ${K3S_DIND_CPU_LIMIT:-2.00} memory: ${K3S_DIND_MEMORY_LIMIT:-4G} reservations: cpus: ${K3S_DIND_CPU_RESERVATION:-0.50} memory: ${K3S_DIND_MEMORY_RESERVATION:-1G} volumes: k3s_data: docker_data: