diff --git a/website/docs/3-concepts/5-compose/1-support-matrix.md b/website/docs/3-concepts/5-compose/1-support-matrix.md index 034b0829..9d0bf551 100644 --- a/website/docs/3-concepts/5-compose/1-support-matrix.md +++ b/website/docs/3-concepts/5-compose/1-support-matrix.md @@ -3,60 +3,60 @@ Uncloud supports a subset of the [Compose specification](https://compose-spec.io/) with some extensions and limitations. The following table shows the support status for main Compose features: -| Feature | Support Status | Notes | -| ------------------ | ------------------- | --------------------------------------------------- | -| **Services** | | | -| `build` | ✅ Supported | Build context and Dockerfile | -| `command` | ✅ Supported | Override container command | -| `configs` | ✅ Supported | File-based and inline configs | -| `cpus` | ✅ Supported | CPU limit | -| `depends_on` | ❌ Not supported | Services start independently | -| `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 | Not currently needed | -| `links` | ❌ Not supported | Use service names for communication | -| `logging` | ✅ Supported | Uses Docker daemon logging | -| `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 | Basic port publishing. 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 | Not needed | -| `mode` | ⚠️ Limited | Only `replicated` supported | -| `placement` | ❌ Not supported | Use `x-machines` extension | -| `replicas` | ✅ Supported | Number of container replicas | -| `resources` | ⚠️ Limited | CPU and memory limits only | -| `restart_policy` | ❌ Not supported | Services auto-restart | -| **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 | ⚠️ Limited | 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 | HTTP/HTTPS port publishing | +| 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](https://docs.docker.com/engine/logging/drivers/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 @@ -64,13 +64,13 @@ The following table shows the support status for main Compose features: - ⚠️ **Limited**: Partial support or with restrictions - ❌ **Not supported**: Feature is not (yet) available -## Uncloud Extensions +## Uncloud extensions Uncloud provides several custom extensions to enhance the Compose experience: ### `x-ports` -Define HTTP/HTTPS endpoints for services: +Expose HTTP/HTTPS service ports via the Caddy reverse proxy, or bind TCP/UDP ports directly to the host: ```yaml services: @@ -79,11 +79,14 @@ services: x-ports: - 80/https - example.com:80/https + - 8080:80/tcp@host ``` +See [Publishing services](../1-ingress/2-publishing-services.md) for more details. + ### `x-caddy` -Custom Caddy reverse proxy configuration: +Custom Caddy reverse proxy configuration for a service: ```yaml services: @@ -91,17 +94,24 @@ services: image: nginx x-caddy: | example.com { - reverse_proxy {{ upstreams 80 }} + reverse_proxy {{upstreams 80}} } ``` +See [Publishing services](../1-ingress/2-publishing-services.md) for more details. + ### `x-machines` -Specify on what machines the service should run: +Restrict which machines can run your service. If you deploy multiple replicas, Uncloud automatically spreads them across +the specified machines. ```yaml services: web: image: nginx - x-machines: ["web-1", "web-2"] + x-machines: + - machine-1 + - machine-2 + # Short syntax for a single machine + # x-machines: machine-1 ```