What scripts/validate.py enforces. Source: scripts/lib/validator.py (STANDARD_CHECKS).
| Check | Severity | Requirement |
|---|---|---|
| healthcheck | ERROR | Service has healthcheck: with test defined |
| restart_policy | ERROR | Service has restart: (e.g. unless-stopped) |
| container_name | WARNING | Service has explicit container_name: |
| resource_limits | ERROR | Service has deploy.resources.limits (memory/cpus) |
| watchtower_label | WARNING | Service has Watchtower enable label (opt-in updates) |
| bind_mount_missing | WARNING | Bind mount host path must exist (stack-level) |
| named_volume_undeclared | WARNING | Named volume must be declared in top-level volumes (stack-level) |
| mount_unexpanded_variable | INFO | Mount path contains ${...}; existence not checked (stack-level) |
Validation also checks: compose syntax (docker compose config), stack-level mount validation (bind paths exist, named volumes declared), .env.example coverage for required env vars, port conflicts, image tags. See scripts/lib/validator.py, scripts/lib/ports.py, scripts/lib/images.py.