Coolify's docker compose workdir doesn't always resolve ./config.yaml,
so Docker silently created the mount target as a directory, breaking
runner startup with 'is a directory'. Embed the config in the compose
file via the configs: top-level key — no external file dependency.