Global registry credential updates do not propagate to applications (statically stored credentials in application table)
Nobody has claimed this yet.
- Dominant language
- TypeScript
- Stars
- 37.4k
- Forks
- 3k
- Avg merge
- 1d 3h
- Merged PRs (30d)
- 73
Description
What problem will this feature address?
Description
When updating credentials (e.g., a GitHub Personal Access Token) for a registry in the global Registry
Settings UI, the changes do not propagate to existing applications using that registry. Subsequent
deployments for those applications continue to fail using the old credentials.
Steps to Reproduce
- Create a registry (e.g., ghcr.io with credentials user and token-1 ) under global Registry
settings. - Create applications using custom Docker images hosted on this registry.
- Update the global registry token in the Registry UI from token-1 to token-2 .
- Deploy one of the applications. It will fail with a denied: denied (unauthorized) error because it
is still using token-1 .
Technical Details & Database State
We verified the database state directly inside the Postgres container:
• The global registry table was successfully updated and contained token-2 .
• However, the application table contains individual username and password columns. For the
existing applications, these columns still held the old token-1 values, and the registryId column
on those application rows was null .
• During deployment, Dokploy constructs the login command using the static strings stored in the
application row ( application.username / application.password ), completely bypassing the updated
global registry table.
Expected Behavior
Either:
- Applications should dynamically look up registry credentials using a foreign key reference (
registryId ) at build/pull time instead of storing credentials statically. - Or, if credentials must be copied, updating a global registry's credentials should propagate the
updates to all applications matching that registryUrl .
Describe the solution you'd like
Make registry credential lookup dynamic at deploy/pull time rather than duplicating and hardcoding
credentials into the application database table.
Specifically:
- When a deployment/pull is triggered, Dokploy should look up the latest credentials from the
registry table using a relational key (or match by the registryUrl / host if registryId is not
explicitly set). - The docker login command should use these resolved credentials dynamically. This ensures that any
update to a registry token globally is instantly picked up by all applications utilizing that registry
without requiring manual updates to each application record.
Describe alternatives you've considered
Alternative 1 (Normalization): Remove the static username and password columns from the
application table entirely. Force custom-image applications to link to a registry in the global
settings via the registryId relation.
Alternative 2 (Database Hooks/Propagation): If the application-level credentials must remain
customizable, implement a hook or migration that triggers when a global registry is updated. This hook
would find all applications matching that registryUrl (where their custom username matches) and
propagate the updated token to their respective application.password columns automatically.
Additional context
No response
Will you send a PR to implement it?
Maybe, need help
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by tracing the deployment or image-pull path that builds the docker login command, then inspect how the registry and application tables use registryId, registryUrl, username, and password. Done means deployments resolve current global registry credentials instead of stale application values, with the chosen relationship or propagation behavior verified.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- docker, postgresql, typescript
- Domain
- backend, databases, devops
- Issue type
- Feature
- Difficulty
- 5/5
- Estimated time
- Over a week
- Activity status
- Quiet
- Clarity
- Mostly clear
- Newbie friendliness
- 42/100