From 863688c1801a0a83532259dc1679197990b9507a Mon Sep 17 00:00:00 2001 From: DragonSlayer_14 Date: Thu, 10 Sep 2026 00:07:57 +0200 Subject: [PATCH] Fix: Nachbesserungen aus Code-Review am Cache-Setup MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Healthcheck für den Cache-Server, damit der Runner (depends_on: condition: service_healthy) wirklich wartet, bis der Cache-Server auf Port 8088 Verbindungen annimmt, statt nur den Container-Start abzuwarten - Veralteten Kommentarverweis auf "cache-config.yaml" korrigiert zu "config/cache.yaml" - README: Hinweis ergänzt, dass Port 8088 zwingend auf allen Host-Interfaces lauschen muss (sonst für Job-Container unerreichbar) und daher per Host-Firewall gegen Zugriff von außen abgesichert werden sollte Co-Authored-By: Claude Sonnet 5 Claude-Session: https://claude.ai/code/session_014kFWpJ4p1jQ2pJf3S13FWE --- README.md | 10 ++++++++++ config/runner.yaml | 2 +- docker-compose.yaml | 9 ++++++++- 3 files changed, 19 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 1a3d211..592de35 100644 --- a/README.md +++ b/README.md @@ -59,3 +59,13 @@ Job-Container erreichen den Cache-Server trotzdem über den Docker-Host (`cacheh wird per `--add-host=cachehost:host-gateway` auf das Host-Gateway gemappt, siehe `config/runner.yaml` -> `container.options`), der Port `8088` des Cache-Servers ist dafür auf dem Host veröffentlicht. + +**Achtung:** Da Job-Container den Cache-Server nur über den Host erreichen können, +muss Port `8088` auf allen Host-Interfaces lauschen (`0.0.0.0`) — eine engere Bindung +(z. B. nur `127.0.0.1`) würde den Cache für Jobs unerreichbar machen. Der Zugriff ist +zwar durch das Secret in `cache-secret` geschützt, trotzdem sollte Port `8088` per +Host-Firewall von außen (Internet/fremdes LAN) blockiert werden, z. B.: + +```sh +ufw deny 8088/tcp +``` diff --git a/config/runner.yaml b/config/runner.yaml index e0b0948..3c8e6c8 100644 --- a/config/runner.yaml +++ b/config/runner.yaml @@ -5,7 +5,7 @@ runner: cache: enabled: true - # Dedizierter, separater Cache-Server (siehe cache-config.yaml + docker-compose.yaml, + # Dedizierter, separater Cache-Server (siehe config/cache.yaml + docker-compose.yaml, # Service "cache"), erreichbar über den Docker-Host-Gateway (siehe container.options # unten), unabhängig vom isolierten Netzwerk des jeweiligen Jobs. external_server: "http://cachehost:8088/" diff --git a/docker-compose.yaml b/docker-compose.yaml index ed4432b..9059890 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -4,7 +4,8 @@ services: container_name: gitea_runner restart: unless-stopped depends_on: - - cache + cache: + condition: service_healthy environment: CONFIG_FILE: /config.yaml GITEA_INSTANCE_URL: "${INSTANCE_URL}" @@ -31,3 +32,9 @@ services: - ./cache-secret:/run/cache-secret:ro ports: - "8088:8088" + healthcheck: + test: ["CMD", "bash", "-c", "echo > /dev/tcp/127.0.0.1/8088"] + interval: 5s + timeout: 3s + retries: 10 + start_period: 5s