Docker compose conversion support

Behind the scenes, we use kompose.io to perform the initial translation from docker-compose.yml to the bunnyshell.yaml definition.

The table below states the support for each possible Docker Compose key.

KeysSupportedKubernetesNotes
buildyesBuilds/Pushes to Docker repository.
build: contextyes
build: dockerfileyes
build: argsyes
build: cache_fromno
cap_add, cap_dropyesPod.Spec.Container.SecurityContext.Capabilities.Add/Drop
commandyesPod.Spec.Container.Args
configsyes
configs: short-syntaxyesOnly create configMap
configs: long-syntaxyesIf target path is /, ignore this and only create configMap
cgroup_parentn/aNot supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/11986
container_nameyesMetadata.Name + Deployment.Spec.Containers.Name
credential_specnoOnly applicable to Windows containers
deployyes
deploy: modeyes
deploy: replicasyesDeployment.Spec.Replicas / DeploymentConfig.Spec.Replicas
deploy: placementyesPod.Spec.Affinity
deploy: update_configyesWorkload.Spec.StrategyDeployment / DeploymentConfig
deploy: resourcesyesContainers.Resources.Limits.Memory / Containers.Resources.Limits.CPUSupport for memory as well as cpu
deploy: restart_policyyesPod generationThis generated a Pod, see the user guide on restart
deploy: labelsyesWorkload.Metadata.LabelsOnly applied to workload resource
devicesn/aNot supported within Kubernetes, See issue https://github.com/kubernetes/kubernetes/issues/5607
depends_onn/a
dnsn/aNot used within Kubernetes. Kubernetes uses a managed DNS server
dns_searchn/aSee dns key
domainnameyes
tmpfsyesCreates emptyDirvolume with medium set to Memory & mounts given directory inside container
entrypointyes
env_fileyes
environmentyes
exposeyes
endpoint_modeyesIf endpoint_mode=vip, the created Service will be forced to set to NodePort type
extendsyesExtends by utilizing the same image supplied
external_linksn/aKubernetes uses a flat-structure for all containers and thus external_links does not have a 1-1 conversion
extra_hostsno
group_addyes
healthcheckno
hostnameyesPod.Spec.HostName
imageyesDeployment.Spec.Containers.Image
isolationn/aNot applicable as this applies to Windows with HyperV support
labelsyesMetadata.Annotations
linksn/aAll containers in the same pod are accessible in Kubernetes
loggingn/aKubernetes has built-in logging support at the node-level
network_moden/aKubernetes uses its own cluster networking
networksonSee networks key
networks: aliasesn/aSee networks key
networks: addressesn/aSee networks key
pidyesPod.Spec.HostPID
portsyesService.Spec.Ports
ports: short-syntaxyesService.Spec.Ports
ports: long-syntaxyesService.Spec.Ports
secretsyesSecretExternal Secret is not Supported
secrets: short-syntaxyesSecretExternal Secret is not Supported
secrets: long-syntaxyesSecretExternal Secret is not Supported
security_optn/aKubernetes uses its own container naming scheme
stop_grace_periodyesPod.Spec.TerminationGracePeriodSeconds
stop_signaln/aNot supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/30051
sysctlsno
ulimitsn/aNot supported within Kubernetes. See issue https://github.com/kubernetes/kubernetes/issues/3595
userns_moden/aNot supported within Kubernetes and ignored in Docker Compose Version 3
volumesyesPersistentVolumeClaimCreates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster
volumes: short-syntaxyesPersistentVolumeClaimCreates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster
volumes: long-syntaxyesPersistentVolumeClaimCreates a PersistentVolumeClaim. Can only be created if there is already a PersistentVolume within the cluster
restartno
KeysSupported
Volumen/a
drivern/a
driver_optsn/a
externaln/a
labelsn/a
Networkn/a
drivern/a
driver_optsn/a
enable_ipv6n/a
ipamn/a
internaln/a
labelsn/a
externaln/a