dokploy icon indicating copy to clipboard operation
dokploy copied to clipboard

Webhook deployment fails with "Webhook Docker Image Name Not Found" after v0.25.10 update

Open tolgamorf opened this issue 1 month ago • 18 comments

To Reproduce

  1. Update Dokploy to v0.25.10
  2. Trigger a deployment via webhook URL for any Docker-based application
  3. Observe the error response

Current vs. Expected behavior

Expected Behavior

Webhook should trigger a deployment successfully, as it did in previous versions.

Actual Behavior

Webhook returns the following error:

{"message":"Webhook Docker Image Name Not Found"}

Provide environment information

- **Dokploy Version:** v0.25.10
- **Provider:** Docker
- **Number of affected apps:** 7

Which area(s) are affected? (Select all that apply)

Docker, Application

Are you deploying the applications where Dokploy is installed or on a remote server?

Same server where Dokploy is installed

Additional context

After updating to v0.25.10, all webhook URLs for deploying applications have stopped working. Previously, webhooks were functioning correctly for all my applications.

  • GHCR was previously added to Docker Registry and authenticated
  • Docker image field is configured with a valid image path (e.g., ghcr.io/username/app-name:latest)
  • Only the Docker image input is filled (Registry URL, Username and Password are empty)
  • Manual deployment via the "Deploy" button works correctly
  • This issue affects all applications that were previously working with webhooks before the update

Will you send a PR to fix it?

No

tolgamorf avatar Nov 22 '25 01:11 tolgamorf

I also tried refreshing the webhook URLs, but the new URLs did not work either.

tolgamorf avatar Nov 22 '25 01:11 tolgamorf

Same issue here

juandl avatar Nov 22 '25 18:11 juandl

Same issue here

hkhangus avatar Nov 24 '25 09:11 hkhangus

Yea, is there an alternative way to fix this, i got the same issue

drithh avatar Nov 24 '25 09:11 drithh

Same issue here

SR6Glory avatar Nov 24 '25 10:11 SR6Glory

Temporary hack, instead of calling the webhook, you can trigger the deploy API manually. Copy the request as curl when you click deploy.

curl --location 'http://ip:3000/api/trpc/application.deploy?batch=1' \ --header 'Accept: */*' \ --header 'content-type: application/json' \ --header 'Cookie: better-auth.session_token=token' \ --data '{"0":{"json":{"applicationId":"applicationId"}}}'

You may optionally extend the session_token’s expires_at value, which i think typically lasts 3–7 days.

drithh avatar Nov 24 '25 10:11 drithh

Inspected the source code of Dokploy and made this, it mocks as a GitHub registry_package event Webhook and sends all the information needed by Dokploy: (Add as a step in your GitHub Actions workflow)

- name: Trigger deployment webhook
        env:
          COMMIT_MESSAGE: ${{ github.event.head_commit.message }}
          COMMIT_SHA: ${{ github.sha }}
          PACKAGE_URL: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}:latest
        run: |
          set -euo pipefail
          jq -n --arg id "$COMMIT_SHA" --arg msg "$COMMIT_MESSAGE" --arg url "$PACKAGE_URL" '{head_commit: {id: $id, message: $msg}, registry_package: {package_version: {package_url: $url}}}' > payload.json
          curl -sS --fail-with-body --retry 3 --retry-delay 2 --retry-connrefused \
            -X POST "${{ secrets.DEPLOYMENT_WEBHOOK_URL }}" \
            -H "x-github-event: registry_package" \
            -H "Content-Type: application/json" \
            --data-binary @payload.json \
            -w "\nHTTP %{http_code}\n"

seriaati avatar Nov 24 '25 14:11 seriaati

You can generate an api key and use the api to execute a deploy, https://docs.dokploy.com/docs/api

juandl avatar Nov 24 '25 16:11 juandl

0.25.7 same issue

DieselNiu avatar Nov 25 '25 05:11 DieselNiu

Yes, we recently added support for ghcr packages. I think we need to add documentation for this. The change now is that you must use it in the webhooks section of your repository, paste the webhook URL, and select the registry packages event, and it should work (we need to add documentation for this similar to dockerhub).

The other option is to use the API directly and use the application.deploy endpoint and just pass it the applicationId.

Siumauricio avatar Nov 26 '25 08:11 Siumauricio

Yes, we recently added support for ghcr packages. I think we need to add documentation for this. The change now is that you must use it in the webhooks section of your repository, paste the webhook URL, and select the registry packages event, and it should work (we need to add documentation for this similar to dockerhub).

The other option is to use the API directly and use the application.deploy endpoint and just pass it the applicationId.

Does this mean there is no way to just have a simple endpoint to trigger a re-deploy if you are using your own registry?

Arthurdw avatar Nov 26 '25 18:11 Arthurdw

Yes, we recently added support for ghcr packages. I think we need to add documentation for this. The change now is that you must use it in the webhooks section of your repository, paste the webhook URL, and select the registry packages event, and it should work (we need to add documentation for this similar to dockerhub).

The other option is to use the API directly and use the application.deploy endpoint and just pass it the applicationId.

This seems to be a break change that was not mentioned on any release.

juandl avatar Nov 26 '25 20:11 juandl

I would say that I'm not a huge fan of this change because GitHub's webhook doesn't have granular control, like only triggering for a specific branch, or triggering different ones for different branches. Our team had been triggering the webhook manually in GitHub CI and it had worked well so far, and this approach provided us with more granular control.

The new change also made it not possible to carry the commit message into the deployment description (as I'm aware, correct me if I'm wrong).

I haven't looked into the Dokploy API yet, but if we can specify a custom deployment message then I think we will just move over to that.

seriaati avatar Nov 27 '25 02:11 seriaati

Yeah, we use webhook.. under the same concept "webhook", from another CI tool and slack bot, etc.

We did a bypass using the api, but is not that "okay" for us, because it contains an secret key.

juandl avatar Nov 27 '25 10:11 juandl

Same issue here

w95 avatar Nov 27 '25 17:11 w95

In my case, I was building my app locally, pushing the image to ghcr, and then calling the webhook URL within the same script after everything was successful. It worked like a charm. But, since this webhook update, I had to change my script to make an API call to /api/application.deploy in order to deploy the app. The downside is, now I need to include the Dokploy API key and also the app ID in my .env variables.

By the way, accessing the app ID is a bit of a hassle; you need to fetch /api/project.all and then find the app ID manually from the JSON response. I am happy to hear if there is a better and easier way to get the app ID, maybe in the Dokploy UI?

tolgamorf avatar Nov 28 '25 14:11 tolgamorf

From the application/service detail url, u can get the ID

http://ip/dashboard/project/-P1C6vobji3u4Dze7c0Kv/environment/env_prod_-P1C6vobji3u4Dze7c0Kv_1757640339.341349/services/application/Cm0DawyTQ40600yP3bEjq?tab=deployments

For example, this applicationId is Cm0DawyTQ40600yP3bEjq

drithh avatar Nov 28 '25 14:11 drithh

Same issue, i use docker image on my gitlab registry and since the update i get "Webhook Docker Image Name Not Found"

YMS-GBH avatar Nov 28 '25 15:11 YMS-GBH

Hi,

I solved the issue: You need to send the Docker image you want to deploy in the JSON body of the webhook. Example:

curl -X POST "YOUR_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "x-github-event: registry_package" \
  -d '{"registry_package": {"package_version": {"package_url": "ORG/IMAGE_NAME:TAG"}}}'

package_url → the Docker image and tag you want to deploy
This way, the webhook can detect the image and the deployment succeeds ✅

When successful, the webhook responds with:

{
  "message": "Application deployed successfully"
}

kurtulusmengukan avatar Nov 30 '25 20:11 kurtulusmengukan

I don't think this change make any sense. We should make it stateless like what previous version and GH CI interface as well

thanhlmm avatar Dec 01 '25 05:12 thanhlmm

Agree. It is more logical to work like a button in ui: deploy. If we need to change image it is some other functionality. And probably it is already possible to do with api

outluch avatar Dec 01 '25 05:12 outluch

same issue, hope fix it next update

andylee20014 avatar Dec 03 '25 08:12 andylee20014

Hi,

I solved the issue: You need to send the Docker image you want to deploy in the JSON body of the webhook. Example:

curl -X POST "YOUR_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "x-github-event: registry_package" \
  -d '{"registry_package": {"package_version": {"package_url": "ORG/IMAGE_NAME:TAG"}}}'

package_url → the Docker image and tag you want to deploy This way, the webhook can detect the image and the deployment succeeds ✅

When successful, the webhook responds with:

{
  "message": "Application deployed successfully"
}

maybe this need to be added to the docs. Thanks you for finding this

YMS-GBH avatar Dec 04 '25 19:12 YMS-GBH

Hi,

I solved the issue: You need to send the Docker image you want to deploy in the JSON body of the webhook. Example:

curl -X POST "YOUR_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "x-github-event: registry_package" \
  -d '{"registry_package": {"package_version": {"package_url": "ORG/IMAGE_NAME:TAG"}}}'

package_url → the Docker image and tag you want to deploy This way, the webhook can detect the image and the deployment succeeds ✅

When successful, the webhook responds with:

{
  "message": "Application deployed successfully"
}

This works after using the full ghcr.io link, not just ORG/IMAGE_NAME.

But I don't understand why this change was made, as now my configuration for an app is duplicated inside the dashboard and the CI job.

sidharthv96 avatar Dec 05 '25 07:12 sidharthv96

Hi,

I solved the issue: You need to send the Docker image you want to deploy in the JSON body of the webhook. Example:

curl -X POST "YOUR_WEBHOOK_URL" \
  -H "Content-Type: application/json" \
  -H "x-github-event: registry_package" \
  -d '{"registry_package": {"package_version": {"package_url": "ORG/IMAGE_NAME:TAG"}}}'

package_url → the Docker image and tag you want to deploy This way, the webhook can detect the image and the deployment succeeds ✅

When successful, the webhook responds with:

{
  "message": "Application deployed successfully"
}

Thank you very much, brother. I spent hours and hours trying to fix it, thinking it was my instance or the AWS security groups.

Enmvnuel avatar Dec 06 '25 02:12 Enmvnuel

I see that this change has negatively impacted many people; Do you think we should reverse this change?

Siumauricio avatar Dec 06 '25 20:12 Siumauricio

man - this almost made me run mad - full blown argument with app users about not seeing changes, and this was the change???

serenity-ops avatar Dec 06 '25 20:12 serenity-ops

I see that this change has negatively impacted many people; Do you think we should reverse this change?

Maybe a toggle or something to keep both ?

juandl avatar Dec 07 '25 20:12 juandl

Same issue

toanbku avatar Dec 08 '25 03:12 toanbku

I see that this change has negatively impacted many people; Do you think we should reverse this change?

that would be great

pt-nolas avatar Dec 09 '25 14:12 pt-nolas