Skip to content

Bug: Unable to run healthcheck #1024

@harrismck

Description

@harrismck

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions