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