ConfigurationTriggersHTTP

Http

The http trigger lets you send container update notifications via HTTP.

The http trigger lets you send container update notifications via HTTP.

Variables

Env varRequiredDescriptionSupported valuesDefault value when missing
DD_NOTIFICATION_HTTP_{trigger_name}_URL🔴The URL of the webhookValid http or https endpoint
DD_NOTIFICATION_HTTP_{trigger_name}_METHODThe HTTP method to useGET, POSTPOST
DD_NOTIFICATION_HTTP_{trigger_name}_AUTH_TYPEThe auth typeBASIC, BEARERBASIC
DD_NOTIFICATION_HTTP_{trigger_name}_AUTH_USERThe Auth user if BASIC Auth is enabled
DD_NOTIFICATION_HTTP_{trigger_name}_AUTH_PASSWORDThe Auth user password if BASIC Auth is enabled
DD_NOTIFICATION_HTTP_{trigger_name}_AUTH_BEARERThe Auth bearer token if BEARER Auth is enabled
DD_NOTIFICATION_HTTP_{trigger_name}_PROXYThe HTTP ProxyValid http or https proxy URL
DD_NOTIFICATION_HTTP_{trigger_name}_ALLOWMETADATAAllow requests to cloud metadata / link-local addressestrue, falsefalse
HTTP trigger auth now fails closed. If AUTH_TYPE=BASIC, both AUTH_USER and AUTH_PASSWORD are required. If AUTH_TYPE=BEARER, AUTH_BEARER is required.
The PROXY URL must use an http:// or https:// scheme. Any other scheme (e.g. socks5://) is rejected at configuration-validation time and prevents the trigger from registering.
HTTP requests have a 30-second timeout. If the remote server does not respond within 30 seconds, the trigger will fail.
Metadata endpoint guard: Before sending each request, the trigger resolves the target hostname and rejects any address in the cloud metadata / link-local ranges: 169.254.0.0/16 (IPv4, including the AWS IMDSv1 endpoint 169.254.169.254), fe80::/10 (IPv6 link-local), and fd00:ec2::254 (AWS IMDSv2 IPv6). RFC-1918 private ranges (10.x, 172.16–31.x, 192.168.x) are not blocked — self-hosted webhook targets on your local network work normally. Set ALLOWMETADATA=true on a specific trigger if you have a legitimate need to reach a link-local address.
This trigger also supports the common configuration variables.

Examples

Post an HTTP request to an existing server

services:
  drydock:
    image: codeswhat/drydock
    ...
    environment:
      - DD_NOTIFICATION_HTTP_MYREMOTEHOST_URL=https://my-remote-host/new-version
docker run \
  -e DD_NOTIFICATION_HTTP_MYREMOTEHOST_URL="https://my-remote-host/new-version" \
  ...
  codeswhat/drydock

Example of payload (POST request, simple mode)

{
  "id":"31a61a8305ef1fc9a71fa4f20a68d7ec88b28e32303bbc4a5f192e851165b816",
  "name":"homeassistant",
  "watcher":"local",
  "includeTags":"^\\d+\\.\\d+.\\d+$",
  "image":{
    "id":"sha256:d4a6fafb7d4da37495e5c9be3242590be24a87d7edcc4f79761098889c54fca6",
    "registry":{
      "url":"123456789.dkr.ecr.eu-west-1.amazonaws.com"
    },
    "name":"test",
    "tag":{
      "value":"2021.6.4",
      "semver":true
    },
    "digest":{
      "watch":false,
      "repo":"sha256:ca0edc3fb0b4647963629bdfccbb3ccfa352184b45a9b4145832000c2878dd72"
    },
    "architecture":"amd64",
    "os":"linux",
    "created":"2021-06-12T05:33:38.440Z"
  },
  "result":{
    "tag":"2021.6.5"
  },
  "updateAvailable": true
}

Batch mode payload

When MODE=batch, the POST body is an array of all containers with available updates:

[
  { "id": "...", "name": "app1", "image": { ... }, "result": { "tag": "2.0.0" }, "updateAvailable": true },
  { "id": "...", "name": "app2", "image": { ... }, "result": { "tag": "3.1.0" }, "updateAvailable": true }
]