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 |
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 and memory limits only |
restart_policy | ❌ Not supported | Defaults to unless-stopped |
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