Files
uncloud/website/docs/8-compose-file-reference/1-support-matrix.md
T

8.9 KiB

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:

Feature Support Status Notes
Services
build ⚠️ Limited Build context and Dockerfile
command ✅ Supported Override container command
configs ✅ Supported File-based and inline configs
cpus ✅ Supported CPU limit
depends_on ⚠️ Limited Services deployed in order but conditions not checked
dns ❌ Not supported Built-in service discovery
dns_search ❌ Not supported Built-in service discovery
entrypoint ✅ Supported Override container entrypoint
env_file ✅ Supported Environment file
environment ✅ Supported Environment variables
gpus ✅ Supported GPU device access
image ✅ Supported Container image specification
init ✅ Supported Run init process in container
labels ❌ Not supported
links ❌ Not supported Use service names for communication
logging ✅ Supported Defaults to local log driver
mem_limit ✅ Supported Memory limit
mem_reservation ✅ Supported Memory reservation
mem_swappiness ❌ Not supported
memswap_limit ❌ Not supported
networks ❌ Not supported All containers share cluster network
ports ⚠️ Limited mode: host only, use x-ports for HTTP/HTTPS
privileged ✅ Supported Run containers in privileged mode
pull_policy ✅ Supported always, missing, never
secrets ❌ Not supported Use configs or environment variables
security_opt ❌ Not supported
storage_opt ❌ Not supported
user ✅ Supported Set container user
volumes ✅ Supported Named volumes, bind mounts, tmpfs
Deploy
labels ❌ Not supported
mode ✅ Supported Either global or replicated
placement ❌ Not supported Use x-machines extension
replicas ✅ Supported Number of container replicas
resources ⚠️ Limited CPU, memory limits and device reservations
restart_policy ❌ Not supported Defaults to unless-stopped
rollback_config ❌ Not supported See #151
update_config ❌ Not supported See #151
Volumes
Named volumes ✅ Supported Docker volumes
Bind mounts ✅ Supported Host path binding
Tmpfs mounts ✅ Supported In-memory filesystems
Volume labels ✅ Supported Custom labels
External volumes ✅ Supported Must exist before deployment
Volume drivers ⚠️ Limited Local driver only
Configs
File-based configs ✅ Supported Read from file
Inline configs ✅ Supported Defined in compose file
External configs ❌ Not supported Not supported
Short syntax ❌ Not supported Use long syntax only
Extensions
x-caddy ✅ Uncloud-specific Custom Caddy configuration
x-machines ✅ Uncloud-specific Machine placement constraints
x-ports ✅ Uncloud-specific Service 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