From c01ddeed31877827b656769fd62fc0551d74b7df Mon Sep 17 00:00:00 2001 From: Conrad Schulz Date: Sat, 13 Jun 2026 10:41:49 +0000 Subject: [PATCH] =?UTF-8?q?feat:=20docker-compose.build.yml=20=E2=80=93=20?= =?UTF-8?q?Europa=20z16=20Build-Config,=2012=20CPUs=2028GB=20RAM?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docker-compose.build.yml | 48 +++++++++++-------- docs/ADMIN.md | 28 ++++++----- ...-06-13_tile-raster-architecture_session.md | 25 +++++++++- docs/history/summary/PROJECT_CONTEXT.md | 2 +- 4 files changed, 69 insertions(+), 34 deletions(-) diff --git a/docker-compose.build.yml b/docker-compose.build.yml index 65faa8b..18faa7a 100644 --- a/docker-compose.build.yml +++ b/docker-compose.build.yml @@ -4,17 +4,28 @@ # Voraussetzung: Docker Desktop (macOS/Windows) oder Docker Engine (Linux) # # ══════════════════════════════════════════════════════════════════════ +# DISK-ANFORDERUNGEN (auf dem Host-Rechner) +# ══════════════════════════════════════════════════════════════════════ +# +# AREA=germany MAX_ZOOM=16: ~30 GB temp + ~12 GB output = ~50 GB frei +# AREA=europe MAX_ZOOM=16: ~200 GB temp + ~80 GB output = ~350 GB frei +# AREA=planet MAX_ZOOM=15: ~200 GB temp + ~80 GB output = ~350 GB frei +# AREA=planet MAX_ZOOM=16: ~500 GB temp + ~300 GB output = ~900 GB frei +# +# ══════════════════════════════════════════════════════════════════════ # SCHRITT 1: Build starten # ══════════════════════════════════════════════════════════════════════ # -# # Germany z0-16 (~12 GB Output, ~2h, 8 GB RAM) +# # Germany z0-16 (empfohlen als Einstieg) # AREA=germany MAX_ZOOM=16 RAM=8g docker compose -f docker-compose.build.yml up # -# # Austria z0-16 (~2 GB Output, ~20min, 4 GB RAM) -# AREA=austria MAX_ZOOM=16 RAM=4g docker compose -f docker-compose.build.yml up +# # Planet z0-15 (~80 GB Output, ~8h, 28 GB RAM, ~350 GB Temp+Output Disk) +# AREA=planet MAX_ZOOM=15 RAM=28g BUILD_CPUS=12 BUILD_MEM=30g \ +# docker compose -f docker-compose.build.yml up # -# # Europe z0-16 (~80 GB Output, ~12h, 16 GB RAM) -# AREA=europe MAX_ZOOM=16 RAM=16g docker compose -f docker-compose.build.yml up +# # Planet z0-16 (~300 GB Output, ~15h, 28 GB RAM, ~900 GB Temp+Output Disk) +# AREA=planet MAX_ZOOM=16 RAM=28g BUILD_CPUS=12 BUILD_MEM=30g \ +# docker compose -f docker-compose.build.yml up # # Status verfolgen (zweites Terminal): # docker compose -f docker-compose.build.yml logs -f @@ -23,8 +34,8 @@ # SCHRITT 2: Ergebnis auf Server übertragen # ══════════════════════════════════════════════════════════════════════ # -# rsync -avh --progress \ -# ./build/.mbtiles \ +# rsync -avh --progress --partial \ +# ./build/output/.mbtiles \ # rd13server@192.168.178.6:/mnt/services-data/rd13_tile_server/data/osm-.mbtiles # # ══════════════════════════════════════════════════════════════════════ @@ -35,32 +46,31 @@ # "cd /mnt/services-data/rd13_tile_server && docker compose restart martin" # # # Neue Source prüfen: -# curl https://tiles.rd13server.de/catalog | grep osm- -# -# ══════════════════════════════════════════════════════════════════════ -# UMGEBUNGSVARIABLEN (Defaults) -# ══════════════════════════════════════════════════════════════════════ -# AREA = germany (germany | austria | switzerland | europe | planet) -# MAX_ZOOM = 16 (14 = Planet-Level, 16 = Detail) -# RAM = 8g (Java Heap: 8g für DE, 16g für EU) +# curl https://tiles.rd13server.de/catalog | python3 -m json.tool | grep -i area services: planetiler-build: image: ghcr.io/onthegomap/planetiler:latest container_name: rd13_planetiler_build volumes: - - ./build:/data + # Output: fertige MBTiles + - ./build/output:/output + # Source-Cache: OSM-PBF wird hier gecacht (verhindert Re-Download bei Neustart) + - ./build/sources:/data/sources + # Temp: sehr viel Platz nötig (siehe Tabelle oben) + - ./build/tmp:/data/tmp environment: - - JAVA_TOOL_OPTIONS=-Xmx${RAM:-8g} + - JAVA_TOOL_OPTIONS=-Xmx${RAM:-8g} -Xms2g -XX:+UseG1GC -XX:MaxGCPauseMillis=200 command: - "--download" - "--area=${AREA:-germany}" - - "--output=/data/${AREA:-germany}.mbtiles" + - "--output=/output/${AREA:-germany}.mbtiles" - "--maxzoom=${MAX_ZOOM:-16}" + - "--nodemap-type=sortedtable" - "--force" restart: "no" deploy: resources: limits: - cpus: "${BUILD_CPUS:-8.0}" + cpus: "${BUILD_CPUS:-4.0}" memory: ${BUILD_MEM:-12g} diff --git a/docs/ADMIN.md b/docs/ADMIN.md index 5de51af..797b07a 100644 --- a/docs/ADMIN.md +++ b/docs/ADMIN.md @@ -66,30 +66,34 @@ curl -s "http://localhost:9983/osm-intl/0/0/0.png" > /tmp/test.png && file /tmp/ Planetiler läuft in einem eigenen Container auf dem **Host-Rechner** (MacBook, Desktop-PC etc.) mit genug RAM. Das Ergebnis wird per `rsync` auf den Server übertragen. +**Europa z16 (empfohlen):** ~280 GB Host-Disk, ~8–12h, 12 CPUs / 28 GB RAM + ```bash -# Auf dem HOST-RECHNER ausführen (nicht auf dem Server): -cd /path/to/rd13_tile_server +# Auf dem HOST-RECHNER ausführen (im geklonten Repo-Verzeichnis): -# Germany z0-16 (~12 GB, ~2h, 8 GB RAM) -AREA=germany MAX_ZOOM=16 RAM=8g docker compose -f docker-compose.build.yml up +# Europa z0-16 (~80 GB Output, ~8-12h, ~280 GB Disk nötig) +AREA=europe MAX_ZOOM=16 RAM=28g BUILD_CPUS=12 BUILD_MEM=30g \ + docker compose -f docker-compose.build.yml up -# Europe z0-16 (~80 GB, ~12h, 16 GB RAM) -AREA=europe MAX_ZOOM=16 RAM=16g docker compose -f docker-compose.build.yml up +# Germany z0-16 (kleiner Test: ~12 GB Output, ~2h, ~50 GB Disk) +AREA=germany MAX_ZOOM=16 RAM=8g \ + docker compose -f docker-compose.build.yml up -# Fertige Datei auf Server übertragen (resume-fähig via rsync): -rsync -avh --progress \ - ./build/germany.mbtiles \ - rd13server@192.168.178.6:/mnt/services-data/rd13_tile_server/data/osm-germany.mbtiles +# Fertiges MBTiles auf Server übertragen (resume-fähig): +rsync -avh --progress --partial \ + ./build/output/europe.mbtiles \ + rd13server@192.168.178.6:/mnt/services-data/rd13_tile_server/data/osm-europe.mbtiles # Martin auf dem Server neu starten: ssh rd13server@192.168.178.6 \ "cd /mnt/services-data/rd13_tile_server && docker compose restart martin" # Neue Source prüfen: -curl https://tiles.rd13server.de/catalog | python3 -m json.tool | grep osm-germany +curl https://tiles.rd13server.de/catalog | python3 -m json.tool | grep osm-europe ``` -Output liegt lokal unter `./build/.mbtiles` (gitignored). +Build-Output liegt lokal unter `./build/output/.mbtiles` (gitignored). +Sources-Cache unter `./build/sources/` – bei Rebuild nicht löschen (spart Re-Download). ### Satellit-Tiles herunterladen (einmalig, ~38 GB, ~24h) diff --git a/docs/history/prompts/2026-06-13_tile-raster-architecture_session.md b/docs/history/prompts/2026-06-13_tile-raster-architecture_session.md index a3d2502..7f059d8 100644 --- a/docs/history/prompts/2026-06-13_tile-raster-architecture_session.md +++ b/docs/history/prompts/2026-06-13_tile-raster-architecture_session.md @@ -66,8 +66,29 @@ Lösung: eigenständiger Docker-Container für Downloads. `docker-compose.download.yml` erstellt, Script mit `flush=True` robuster gemacht. Überreste bereinigt: satellite.mbtiles (4 KB stub), satellite.mbtiles-shm/wal, satellite.log. -### Prompt 10 -Starte nochmal alle neu ich habe nochmal etwas mehr Ressourcen bereitgestellt. +### Prompt 11 +Lass uns gleich planet bauen wenn das geht. Und achte wieder auf Robustheit und Ressourcenverbrauch. Du kannst bis zu 12 CPUs und 32 GB RAM verwenden auf meinem Host-Rechner. + +### Antwort 11 +Disk-Analyse: Server hat 555 GB frei, Planet z16 bräuchte ~900 GB auf dem Host → nicht empfohlen. +docker-compose.build.yml robuster gemacht: Volumes aufgeteilt (output/sources/tmp getrennt), `--nodemap-type=sortedtable` für weniger RAM, G1GC-JVM-Flags, Disk-Anforderungen in Kommentaren. + +### Prompt 12 +Ok dann lass uns das nur für Europa in z16 bauen. Wie viel wären es dann? + +### Antwort 12 +Europa z16: ~25 GB Sources + ~150 GB Temp + ~80 GB Output = ~280 GB auf Host. Server: +80 GB (555 GB frei → kein Problem). Buildzeit: ~8–12h mit 12 CPUs. + +### Prompt 13 +Ok ja so bauen wir es! + +### Antwort 13 +docker-compose.build.yml committed. Startbefehl für Host: +```bash +AREA=europe MAX_ZOOM=16 RAM=28g BUILD_CPUS=12 BUILD_MEM=30g \ + docker compose -f docker-compose.build.yml up +``` + ### Antwort 10 OOM-Ursache identifiziert: Script submittete alle 5,5 Mio Futures gleichzeitig in eine Liste → Memory-Spike beim Aufbau. diff --git a/docs/history/summary/PROJECT_CONTEXT.md b/docs/history/summary/PROJECT_CONTEXT.md index 0bac89e..6abaeaa 100644 --- a/docs/history/summary/PROJECT_CONTEXT.md +++ b/docs/history/summary/PROJECT_CONTEXT.md @@ -1,6 +1,6 @@ # PROJECT_CONTEXT – rd13_tile_server -**Letzte Aktualisierung:** 2026-06-13 – Satellit-Download läuft stabil (16 Threads, 2GB RAM-Limit, OOM-Fix). Download-Container eigenständig. +**Letzte Aktualisierung:** 2026-06-13 – Satellit-Download läuft (~372 MB, stabil). Europa z16 Build-Container vorbereitet für Host-Rechner. ---