Skip to main content

Compose support matrix

Uncloud supports a subset of the Compose specification with some extensions and limitations. The following table shows the support status for main Compose features:

FeatureSupport StatusNotes
Services
build⚠️ LimitedBuild context and Dockerfile
command✅ SupportedOverride container command
configs✅ SupportedFile-based and inline configs
cpus✅ SupportedCPU limit
depends_on⚠️ LimitedServices deployed in order but conditions not checked
dns❌ Not supportedBuilt-in service discovery
dns_search❌ Not supportedBuilt-in service discovery
entrypoint✅ SupportedOverride container entrypoint
env_file✅ SupportedEnvironment file
environment✅ SupportedEnvironment variables
image✅ SupportedContainer image specification
init✅ SupportedRun init process in container
labels❌ Not supported
links❌ Not supportedUse service names for communication
logging✅ SupportedDefaults to local log driver
mem_limit✅ SupportedMemory limit
mem_reservation✅ SupportedMemory reservation
mem_swappiness❌ Not supported
memswap_limit❌ Not supported
networks❌ Not supportedAll containers share cluster network
ports⚠️ Limitedmode: host only, use x-ports for HTTP/HTTPS
privileged✅ SupportedRun containers in privileged mode
pull_policy✅ Supportedalways, missing, never
secrets❌ Not supportedUse configs or environment variables
security_opt❌ Not supported
storage_opt❌ Not supported
user✅ SupportedSet container user
volumes✅ SupportedNamed volumes, bind mounts, tmpfs
Deploy
labels❌ Not supported
mode✅ SupportedEither global or replicated
placement❌ Not supportedUse x-machines extension
replicas✅ SupportedNumber of container replicas
resources⚠️ LimitedCPU and memory limits only
restart_policy❌ Not supportedDefaults to unless-stopped
Volumes
Named volumes✅ SupportedDocker volumes
Bind mounts✅ SupportedHost path binding
Tmpfs mounts✅ SupportedIn-memory filesystems
Volume labels✅ SupportedCustom labels
External volumes✅ SupportedMust exist before deployment
Volume drivers⚠️ LimitedLocal driver only
Configs
File-based configs✅ SupportedRead from file
Inline configs✅ SupportedDefined in compose file
External configs❌ Not supportedNot supported
Short syntax❌ Not supportedUse long syntax only
Extensions
x-caddy✅ Uncloud-specificCustom Caddy configuration
x-machines✅ Uncloud-specificMachine placement constraints
x-ports✅ Uncloud-specificService port publishing

Legend

  • Supported: Feature works as documented
  • ⚠️ Limited: Partial support or with restrictions
  • Not supported: Feature is not (yet) available

Uncloud extensions

Uncloud provides several custom extensions to enhance the Compose experience:

x-ports

Expose HTTP/HTTPS service ports via the Caddy reverse proxy, or bind TCP/UDP ports directly to the host:

services:
web:
image: nginx
x-ports:
- 80/https
- example.com:80/https
- 8080:80/tcp@host

See Publishing services for more details.

x-caddy

Custom Caddy reverse proxy configuration for a service:

services:
web:
image: nginx
x-caddy: |
example.com {
reverse_proxy {{upstreams 80}}
}

See Publishing services for more details.

x-machines

Restrict which machines can run your service. If you deploy multiple replicas, Uncloud automatically spreads them across the specified machines.

services:
web:
image: nginx
x-machines:
- machine-1
- machine-2
# Short syntax for a single machine
# x-machines: machine-1