fix: bring scrutiny, stack-auth and vault in line with the compose conventions - #1048
fix: bring scrutiny, stack-auth and vault in line with the compose conventions#1048DPS0340 wants to merge 3 commits into
Conversation
built with Refined Cloudflare Pages Action⚡ Cloudflare Pages Deployment
|
|
CI caught the thing I predicted in the PR body, which is worth spelling out because it's a nice demonstration of #1047.
That is not from my change. It's the pre-existing empty Fixed in The diff is now 3 deleted |
There was a problem hiding this comment.
Pull request overview
This PR removes container_name from three Dokploy blueprints (scrutiny, stack-auth, vault) to align with the repository’s Docker Compose validation rules and documented Dokploy conventions.
Changes:
- Removed
container_namefromblueprints/scrutiny/docker-compose.yml - Removed
container_namefromblueprints/stack-auth/docker-compose.yml - Removed
container_namefromblueprints/vault/docker-compose.yml
Reviewed changes
Copilot reviewed 4 out of 4 changed files in this pull request and generated 4 comments.
| File | Description |
|---|---|
| blueprints/scrutiny/docker-compose.yml | Drops container_name from the scrutiny service definition. |
| blueprints/stack-auth/docker-compose.yml | Drops container_name from the stack-auth service definition. |
| blueprints/vault/docker-compose.yml | Drops container_name from the vault service definition. |
| services: | ||
| scrutiny: |
| restart: unless-stopped | ||
| container_name: scrutiny | ||
| image: ghcr.io/analogj/scrutiny:master-omnibus | ||
| cap_add: |
| vault: | ||
| image: hashicorp/vault:latest | ||
| container_name: vault | ||
| cap_add: |
| stack-auth: | ||
| image: stackauth/server:latest | ||
| container_name: stack-auth | ||
| environment: | ||
| - POSTGRES_USER=${POSTGRES_USER} |
| [config.env] | ||
| VAULT_DEV_ROOT_TOKEN_ID = "${root_token}" | ||
| VAULT_DEV_LISTEN_ADDRESS = "0.0.0.0:8200" |
|
Thanks — I checked all four against Adopted:
Not adopted, with a reason:
One piece of context on scope. The Validation after the changes: |
There was a problem hiding this comment.
Pull request overview
Copilot reviewed 6 out of 6 changed files in this pull request and generated 1 comment.
Comments suppressed due to low confidence (1)
blueprints/stack-auth/docker-compose.yml:21
stackauth/server:lateststill uses thelatesttag, which makes the blueprint non-reproducible and can break unexpectedly when upstream updates. Since this file is being touched anyway, consider pinning to a specific published image tag and updating the blueprint's metadata version to match.
stack-auth:
image: stackauth/server:latest
environment:
| "name": "Vault", | ||
| "version": "latest", | ||
| "version": "2.0.3", | ||
| "description": "Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log. To sign in: In the Vault UI, select 'Token' as the authentication method (not GitHub), then enter the root token from the VAULT_DEV_ROOT_TOKEN_ID environment variable (auto-generated).", |
|
Fair point, and taken. The PR did outgrow its title: it started as the Retitled to Happy to split the pins into their own PR if you'd still prefer to assess them separately — say the word and I'll do that rather than argue for the combined form. |
What
Brings three blueprints —
scrutiny,stack-auth,vault— in line with the repository's documented Docker Compose conventions. Six files, all deletions or one-line edits.Part of #1047.
Changes
1. Removed no-op
container_name(all three)validate-docker-compose.tsrejectscontainer_name, and CONTRIBUTING says not to use it. In each of these the value is identical to the service name, so removing it changes nothing about service-to-service DNS:container_namescrutinyscrutinyscrutinystack-authstack-auth-db,stack-authstack-authvaultvaultvaultI checked that last column rather than assuming it: parsed each file, stripped comments, and searched for any use of the name outside its own declaration.
2. Pinned floating image tags (
scrutiny,vault).github/copilot-instructions.md: "Pin images to specific versions … NEVER uselatesttag", andmeta.json.versionmust match.vault:hashicorp/vault:latest→2.0.3. Verified on Docker Hub, multi-arch (386/amd64/arm64), published 2026-06-17.scrutiny:master-omnibus→v0.8.3-omnibus. Worth noting the upstream release isv0.9.2, but there is nov0.9.xomnibus image — the omnibus tags stop atv0.8.3. Pinning to the newest release would have produced a template that can't pull. Manifest confirmed HTTP 200 via a GHCR pull token.meta.json.versionfields updated to match.Not pinned:
stack-auth.stackauth/serverpublishes no semantic version tags at all — the tag list is commit SHAs (5186b14,27456b8,dc2eed6, …) pluslatestanddev. Pinning to a SHA satisfies the letter of the rule while making the template harder to maintain and impossible to express as a meaningfulmeta.json.version. Left for you to decide.3. Added the missing
version: "3.8"header (scrutiny)4. Removed the empty
[[config.mounts]]block (vault/template.toml)Not cosmetic, and not something I went looking for — CI surfaced it. Editing
vault/docker-compose.ymlmade the workflow validatevault/template.tomlfor the first time since the rule tightened, and it failed withconfig.mounts[0]: Missing required field 'filePath'. TOML parses a bare[[config.mounts]]as[{}]— one mount with no fields. I confirmed it predates this PR by stashing my change and re-running (same two errors).That is #1047, where 80 blueprints share the same problem. I fixed only
vaulthere, since it was blocking this PR's CI; the other 79 are untouched pending your call on how you'd like them handled.Scope I deliberately did not take
:latestelsewhere. It appears in 205 of 500 blueprints (259 of 1109 image lines). This PR happened to touch two of them. A 205-file sweep belongs in its own change.enshrouded,wg-easy. Theircontainer_nameis a no-op too, but both files also fail onportsmappings (15637/udpgame server,51820/udpWireGuard) that I am not proposing to change — those genuinely need host ports and Dokploy's HTTP routing can't substitute. I didn't want to half-fix a file and leave it red.datalens,elastic-search,pre0.22.5-supabase. Multi-service, and their container names differ from the service names, so removing them could change resolvable hostnames.systemprompt— false positive; the match is inside a comment.Testing
All three failed
validate-docker-compose.tsbefore this change. All four CI checks (build-preview, validate, validate-docker-compose, validate-meta) pass.What I did not do: I have no Dokploy instance, so this is validator-level plus static reference and image-manifest checks, not a live redeploy. The image pins are the part with real behavioural risk —
vault:2.0.3is a major version ahead of whateverlatestresolved to on any given day, so if you'd prefer a more conservative pin for that one, say the word.