Bug: Unable to run healthcheck #547

Open
opened 2025-11-20 04:24:50 -05:00 by saavagebueno · 0 comments
Owner

Originally created by @harrismck on GitHub (Aug 3, 2025).

TLDR: Healthcheck always fails, seems the script cannot be called

  1. Is this urgent: No

  2. DNS provider(s) you use: Cloudflare

  3. Program version:

    Running version latest built on 2024-12-24T09:20:36.130Z (commit 78f3061)

  4. What are you using to run the container: docker-compose

  5. Extra information (optional)

The healthcheck won't work for me at all. I've seen similar issues here, but none of them had solutions that worked for me. I did have to change the healthcheck address, as another container I have is already using port 9999
- HEALTH_SERVER_ADDRESS=127.0.0.1:9898
If left with the default healthcheck settings (nothing in my docker compose), it just times out:
"ExitCode": -1, "Output": "Health check exceeded timeout (5s)"
If I extend the timeout, like so:

    healthcheck:
      test: ["CMD", "/updater/app", "healthcheck"]
      interval: 60s
      timeout: 45s
      retries: 2

I get this error:
"Output": "OCI runtime exec failed: exec failed: unable to start container process: exec: \"/updater/app\": stat /updater/app: no such file or directory: unknown"

Sure enough, even running the healthcheck manually with this command:
docker exec ddns-updater /updater/app healthcheck
Gives that same error. I can't SH into the container to check if the /updater/app directory exists either...

Logs:

2025-08-03T17:39:41-07:00 INFO Settings summary:
├── HTTP client
|   └── Timeout: 10s
├── Update
|   ├── Period: 5m0s
|   └── Cooldown: 1m0s
├── Public IP fetching
|   ├── HTTP enabled: yes
|   ├── HTTP IP providers
|   |   └── all
|   ├── HTTP IPv4 providers
|   |   └── all
|   ├── HTTP IPv6 providers
|   |   └── all
|   ├── DNS enabled: yes
|   ├── DNS timeout: 3s
|   └── DNS over TLS providers
|       └── all
├── Resolver: use Go default resolver
├── Server
|   ├── Listening address: :8000
|   └── Root URL: /
├── Health
|   └── Server listening address: 127.0.0.1:9898
├── Paths
|   ├── Data directory: /updater/data
|   ├── Config file: /updater/data/config.json
|   └── Umask: system default
├── Backup: disabled
└── Logger
    ├── Level: info
    └── Caller: hidden
2025-08-03T17:39:41-07:00 INFO reading JSON config from file /updater/data/config.json
2025-08-03T17:39:41-07:00 INFO Found single setting to update record
2025-08-03T17:39:46-07:00 INFO Reading history from database: domain  owner @ ipv4
2025-08-03T17:39:46-07:00 INFO [healthcheck server] health http server listening on 127.0.0.1:9898
2025-08-03T17:39:46-07:00 INFO [http server] http server listening on [::]:8000
2025-08-03T17:39:46-07:00 INFO [backup] disabled
2025-08-03T17:39:51-07:00 INFO obtaining ipv4 address succeeded after 1 failed try
2025-08-03T17:39:56-07:00 ERROR setting initial up to date status: opening file: open /updater/data/updates.json: permission denied

^ The last line is a bit alarming. I get that whether I create the file in advance or not.

Configuration file (remove your credentials!):

{
  "settings": [
    {
      "provider": "cloudflare",
      "zone_identifier": "",
      "domain": "",
      "ttl": 600,
      "token": "",
      "ip_version": "ipv4",
      "ipv6_suffix": ""
    }
  ]
}

Host OS:
Ubuntu Server

Originally created by @harrismck on GitHub (Aug 3, 2025). <!-- YOU CAN CHAT THERE EVENTUALLY: https://github.com/qdm12/ddns-updater/discussions --> **TLDR**: *Healthcheck always fails, seems the script cannot be called* 1. Is this urgent: No 2. DNS provider(s) you use: Cloudflare 3. Program version: <!-- See the line at the top of your logs --> `Running version latest built on 2024-12-24T09:20:36.130Z (commit 78f3061)` 4. What are you using to run the container: docker-compose 5. Extra information (optional) The healthcheck won't work for me at all. I've seen similar issues here, but none of them had solutions that worked for me. I did have to change the healthcheck address, as another container I have is already using port 9999 `- HEALTH_SERVER_ADDRESS=127.0.0.1:9898` If left with the default healthcheck settings (nothing in my docker compose), it just times out: ` "ExitCode": -1, "Output": "Health check exceeded timeout (5s)"` If I extend the timeout, like so: ``` healthcheck: test: ["CMD", "/updater/app", "healthcheck"] interval: 60s timeout: 45s retries: 2 ``` I get this error: `"Output": "OCI runtime exec failed: exec failed: unable to start container process: exec: \"/updater/app\": stat /updater/app: no such file or directory: unknown"` Sure enough, even running the healthcheck manually with this command: `docker exec ddns-updater /updater/app healthcheck` Gives that same error. I can't SH into the container to check if the /updater/app directory exists either... Logs: ```log 2025-08-03T17:39:41-07:00 INFO Settings summary: ├── HTTP client | └── Timeout: 10s ├── Update | ├── Period: 5m0s | └── Cooldown: 1m0s ├── Public IP fetching | ├── HTTP enabled: yes | ├── HTTP IP providers | | └── all | ├── HTTP IPv4 providers | | └── all | ├── HTTP IPv6 providers | | └── all | ├── DNS enabled: yes | ├── DNS timeout: 3s | └── DNS over TLS providers | └── all ├── Resolver: use Go default resolver ├── Server | ├── Listening address: :8000 | └── Root URL: / ├── Health | └── Server listening address: 127.0.0.1:9898 ├── Paths | ├── Data directory: /updater/data | ├── Config file: /updater/data/config.json | └── Umask: system default ├── Backup: disabled └── Logger ├── Level: info └── Caller: hidden 2025-08-03T17:39:41-07:00 INFO reading JSON config from file /updater/data/config.json 2025-08-03T17:39:41-07:00 INFO Found single setting to update record 2025-08-03T17:39:46-07:00 INFO Reading history from database: domain owner @ ipv4 2025-08-03T17:39:46-07:00 INFO [healthcheck server] health http server listening on 127.0.0.1:9898 2025-08-03T17:39:46-07:00 INFO [http server] http server listening on [::]:8000 2025-08-03T17:39:46-07:00 INFO [backup] disabled 2025-08-03T17:39:51-07:00 INFO obtaining ipv4 address succeeded after 1 failed try 2025-08-03T17:39:56-07:00 ERROR setting initial up to date status: opening file: open /updater/data/updates.json: permission denied ``` ^ The last line is a bit alarming. I get that whether I create the file in advance or not. Configuration file (**remove your credentials!**): ```json { "settings": [ { "provider": "cloudflare", "zone_identifier": "", "domain": "", "ttl": 600, "token": "", "ip_version": "ipv4", "ipv6_suffix": "" } ] } ``` Host OS: Ubuntu Server
Sign in to join this conversation.
1 Participants
Notifications
Due Date
No due date set.
Dependencies

No dependencies set.

Reference: starred/ddns-updater#547