Ein Wiki privater Natur

Health Check

Manche Container haben einen Healthcheck.
Das brauche ich auch.
Eigentlich ist es ganz einfach.
Leider kann man nur den bereitgestellten Dienst checken, nicht den von aussen erreichbaren Webdienst auf 443.

wikijs

version: "3"
services:
  wikijs:
    container_name: wikijs
    environment:
      - PUID=5004
      - PGID=5005
      - TZ=Europe/Berlin
      - DB_TYPE=postgres
      - DB_HOST=myserverip
      - DB_PORT=5432
      - DB_NAME=mywiki´´
      - DB_USER=myuser
      - DB_PASS=mypasswd
    ports:
      - 127.0.0.1:2999:2999
    volumes:
      - /docker/wikijs/config:/config
      - /docker/wikijs/data:/data
    restart: unless-stopped
    image: linuxserver/wikijs:latest
    healthcheck:
      test: curl --fail http://127.0.0.1:2999  || exit 1
      interval: 60s
      retries: 5
      start_period: 60s
      timeout: 10s
networks: {}

Und so sieht das dann aus. ✅

**docker-compose ps**
Name    Command      State                     Ports               
--------------------------------------------------------------------
wikijs   /init     Up (healthy)   127.0.0.1:2999->2999/tcp, 3000/tcp

wikijs-sitemap

Die Sitemap Generierung ist ein eigener Container.

Test:

docker exec -it wikijs-sitemap ls -l static
total 8
-rw-r--r--    1 root     root          4414 Apr  9 17:36 sitemap.xml

Umsetzung in docker-compose

version: "3.3"
services:
  wikijs-sitemap:
    container_name: wikijs-sitemap
    environment:
      - PUID=5004
      - PGID=5005
      - DB_TYPE=postgres
      - DB_HOST=myserverip
      - DB_PORT=5432
      - DB_NAME=mywiki´´
      - DB_USER=myuser
      - DB_PASS=mypasswd
    restart: unless-stopped
    ports:
      - 3012:3012
    image: hostwiki/wikijs-sitemap:latest
    healthcheck:
      test: find . -name "sitemap.xml" -mtime +0 -mtime -1 -exec /bin/sh -c 'exit 1' \; || true
      interval: 600s
      retries: 5
      start_period: 60s
      timeout: 10s

Das Intervall kann natürlich noch erheblich vergrössert werden.
Mir geht es nur darum, dass die sitemap täglich aktualisiert wird

wikijs-sitemap    |     at generateSitemap (/wiki/sitemap/generate-sitemap.js:54:15)
wikijs-sitemap    |     at async Task.generateSitemapAndLog [as _execution] (/wiki/sitemap/server.js:40:13)
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 14/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    |     at generateSitemap (/wiki/sitemap/generate-sitemap.js:54:15)
wikijs-sitemap    |     at async Task.generateSitemapAndLog [as _execution] (/wiki/sitemap/server.js:40:13)
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 15/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    |     at generateSitemap (/wiki/sitemap/generate-sitemap.js:54:15)
wikijs-sitemap    |     at async Task.generateSitemapAndLog [as _execution] (/wiki/sitemap/server.js:40:13)
wikijs-sitemap    | Server listening on port 3012
wikijs-sitemap    | [2024-04-11T06:39:53.025Z] sitemap generated successfully.

####################
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 1/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 2/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 3/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 4/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 5/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 6/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 7/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 8/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 9/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 10/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 11/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 12/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 13/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 14/15):  Error: Database connection error: Unable to acquire a connection
wikijs-sitemap    | [[2024-04-11T00:00:00.981Z] Error generating sitemap (attempt 15/15):  Error: Database connection error: Unable to acquire a connection

Auffallend finde ich, dass der Zeitstempel auf die microsekunde bei 15 Versuchen immer exakt gleich ist.


Quellen: