Dokploy / Dokploy/dokploy

Global registry credential updates do not propagate to applications (statically stored credentials in application table)

Open
#4,545 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
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
  1. Create a registry (e.g., ghcr.io with credentials user and token-1 ) under global Registry
    settings.
  2. Create applications using custom Docker images hosted on this registry.
  3. Update the global registry token in the Registry UI from token-1 to token-2 .
  4. 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:

  1. Applications should dynamically look up registry credentials using a foreign key reference (
    registryId ) at build/pull time instead of storing credentials statically.
  2. 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:

  1. 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).
  2. 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

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. 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

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.