feat: support service.gpus and reservations.devices (#156)

* feat: support compose.yaml `service.gpus` and `service.deploy.resources.reservations.devices` DeviceRequests to Docker container
* Fix lint error
* Adjust test comments to work with linter
* Rename DeviceRequests to DeviceReservations to be more consistent with compose nomenclature
* Device reservation changes are immutable and should trigger a container recreate rather than update
This commit is contained in:
Justin Bradford
2025-10-27 16:49:38 +10:00
committed by GitHub
parent 0153e9f9e2
commit 3b4bcb7932
7 changed files with 653 additions and 1 deletions
@@ -16,6 +16,7 @@ The following table shows the support status for main Compose features:
| `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 | |
@@ -39,7 +40,7 @@ The following table shows the support status for main Compose features:
| `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 |
| `resources` | ⚠️ Limited | CPU, memory limits and device reservations |
| `restart_policy` | ❌ Not supported | Defaults to `unless-stopped` |
| **Volumes** | | |
| Named volumes | ✅ Supported | Docker volumes |