How it works
When you runuc deploy with a compose.yaml file, Uncloud:
- Parses your compose.yaml file
- Converts service definitions to Uncloud service specifications
- Plans volume creation and service deployments
- Executes the deployment plan across your cluster
Key differences from standard Docker Compose
While Uncloud aims for Docker Compose compatibility, there are important differences:Cluster-wide deployment
Uncloud deploys services across multiple machines in your cluster, not just a single host. Services can scale across machines, and Uncloud handles placement automatically.Networking
Uncloud uses a single cluster-wide network instead of project-specific networks. All containers can communicate directly using service names.The
networks section in compose.yaml is ignored. All services share the cluster network and can discover each other by name.Service discovery
Services are automatically discoverable at<service-name> within the cluster. Uncloud runs a built-in DNS server that resolves service names to container IPs.
Volume placement
Volumes are machine-local in Uncloud. When you use named volumes, Uncloud ensures containers using the same volume run on the same machine.For replicated services with volumes, all replicas will be placed on the same machine to access the shared volume.
Rolling updates
By default,uc deploy performs zero-downtime rolling updates. Uncloud compares your compose.yaml with the current deployment and only updates services that changed.
HTTPS ingress
Uncloud provides automatic HTTPS via Caddy reverse proxy using thex-ports extension. Standard Compose ports are limited to host mode.
Complete example
Here’s a complete compose.yaml showing common patterns:What’s supported
Uncloud supports most common Docker Compose features:- Service definitions (image, build, command, entrypoint)
- Environment variables and env files
- Volumes (named, bind mounts, tmpfs)
- Configs (file-based and inline)
- Resource limits (CPU, memory)
- Health checks
- Placement constraints via
x-machines - Rolling updates configuration
What’s not supported
Some Docker Compose features don’t apply to Uncloud’s cluster model:- Custom networks (all services use cluster network)
- Container links (use service names instead)
- Depends_on conditions (startup order only)
- Secrets (use configs or environment variables)
Uncloud extensions
Uncloud adds severalx- extensions for cluster-specific features:
x-ports
Publish HTTP/HTTPS services via Caddy or bind TCP/UDP ports to hosts:x-caddy
Custom Caddy configuration for advanced routing:x-machines
Constrain where services can run:Next steps
- Learn about service configuration
- Understand volume management
- Configure deployment behavior
- Review the support matrix
