Skip to content

Instantly share code, notes, and snippets.

@idshklein
Created April 28, 2026 08:13
Show Gist options
  • Select an option

  • Save idshklein/59867a0dfb2ca7f7207f86192c0c524c to your computer and use it in GitHub Desktop.

Select an option

Save idshklein/59867a0dfb2ca7f7207f86192c0c524c to your computer and use it in GitHub Desktop.

שחזור מוחלט – overpass_israel בדוקר (Windows + WSL)

מדריך זה מתאר שחזור מאפס של קונטיינר overpass_israel על מחשב Windows עם WSL2 ו-Docker Engine (ללא Docker Desktop).


דרישות מקדימות

1. Windows עם WSL2

# בPowerShell כאדמין – הפעל WSL2
wsl --install -d Ubuntu-22.04

# ודא שהגרסה היא WSL2
wsl --set-version Ubuntu-22.04 2
wsl --set-default-version 2

הפעלת WSL מ-PowerShell

# פתח WSL עם Ubuntu-22.04
wsl -d Ubuntu-22.04

# אם היא ה-distro ברירת המחדל, פשוט:
wsl

אם WSL לא מגיב (שירות עצור):

# בPowerShell כאדמין
wsl --shutdown        # איפוס מלא
wsl -d Ubuntu-22.04   # הפעלה מחדש

בדיקת סטטוס ה-distros המותקנות:

wsl --list --verbose
פלט לדוגמה:
  NAME            STATE           VERSION
* Ubuntu-22.04    Running         2

2. Docker Engine בתוך WSL (ללא Docker Desktop)

# בתוך WSL Ubuntu-22.04
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# הוסף את ה-GPG key של Docker
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg

# הוסף את ה-repository
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# התקן
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# הפעל את ה-daemon
sudo service docker start

# הוסף את המשתמש לקבוצת docker (כדי לא לדרוש sudo)
sudo usermod -aG docker $USER
newgrp docker

טיפ: כדי שה-daemon יתחיל אוטומטית עם WSL, הוסף שורה ל-~/.bashrc:

> [ $(service docker status | grep -c 'not running') -gt 0 ] && sudo service docker start
> ```

</div>

### 3. osmium-tool בתוך WSL (נדרש לעיבוד מקדים של קובץ PBF)
<div dir="ltr">

```bash
# בתוך WSL Ubuntu-22.04
sudo apt update && sudo apt install -y osmium-tool

שלב 1 – יצירת ספריית נתונים

ב-WSL, מחיצת /big היא דיסק נוסף (1TB). אם אין לך כזה, השתמש בנתיב אחר (למשל /home/<user>/docker/overpass_db).

# בתוך WSL Ubuntu-22.04
sudo mkdir -p /big/docker/overpass_db
sudo chmod 777 /big/docker/overpass_db

חשוב: הספרייה הזו תשמש כ-volume לדטאבייס של Overpass. היא תגדל עד ~4GB עבור ישראל ופלסטין.


שלב 2 – הרצת הקונטיינר

# בתוך WSL Ubuntu-22.04
docker run \
  -e OVERPASS_MODE=init \
  -e OVERPASS_META=yes \
  -e OVERPASS_PLANET_URL=https://download.geofabrik.de/asia/israel-and-palestine-latest.osm.pbf \
  -e OVERPASS_PLANET_PREPROCESS='mv /db/planet.osm.bz2 /db/planet.osm.pbf ; osmium cat /db/planet.osm.pbf -f osm | bzip2 -c > /db/planet.osm.bz2 ; rm -f /db/planet.osm.pbf' \
  -e OVERPASS_DIFF_URL=http://download.openstreetmap.fr/replication/asia/israel_and_palestine/minute/ \
  -e OVERPASS_RULES_LOAD=10 \
  -e OVERPASS_USE_AREAS=true \
  -e OVERPASS_ALLOW_DUPLICATE_QUERIES=no \
  -v /big/docker/overpass_db/:/db \
  -p 12345:80 \
  --restart unless-stopped \
  --name overpass_israel \
  wiktorn/overpass-api

הסבר על הפרמטרים

פרמטר ערך הסבר
OVERPASS_MODE init מאתחל את הדטאבייס מאפס בהרצה הראשונה
OVERPASS_META yes שומר מטא-דאטה (משתמש, זמן עדכון) בדטאבייס
OVERPASS_PLANET_URL geofabrik כתובת ה-PBF להורדה – ישראל ופלסטין מ-Geofabrik
OVERPASS_PLANET_PREPROCESS פקודת המרה ממיר PBF ל-bz2 (הקונטיינר צריך .osm.bz2)
OVERPASS_DIFF_URL openstreetmap.fr URL לעדכונים מינוטאליים אחרי ה-init
OVERPASS_RULES_LOAD 10 מגביל קצב טעינת הכללים
OVERPASS_USE_AREAS true מחשב areas (polygons) לשאילתות area
OVERPASS_ALLOW_DUPLICATE_QUERIES no חוסם בקשות כפולות
-v /big/docker/overpass_db/:/db bind mount ספריית הנתונים בWSL
-p 12345:80 port שירות נגיש בפורט 12345
--restart unless-stopped restart policy מופעל מחדש אוטומטית אחרי restart

שלב 3 – מעקב אחרי ה-init

תהליך ה-init מוריד את קובץ ה-PBF, ממיר אותו, ובונה את הדטאבייס. זה לוקח 10-40 דקות (תלוי מהירות אינטרנט ומעבד).

# עקוב אחרי הלוגים
docker logs -f overpass_israel

# בדוק שהקונטיינר רץ ובריא
docker ps | grep overpass_israel

הקונטיינר healthy רק לאחר סיום ה-init (ה-healthcheck מוגדר עם 48 שעות grace period).


שלב 4 – בדיקה שהשירות עובד

מהדפדפן ב-Windows:

http://localhost:12345/api/interpreter?data=[out:json];node["name"="ירושלים"]["place"="city"];out;

או מWSL עם curl:

curl "http://localhost:12345/api/interpreter?data=[out:json];node[%22name%22=%22%D7%99%D7%A8%D7%95%D7%A9%D7%9C%D7%99%D7%9D%22][%22place%22=%22city%22];out;"

פקודות שימושיות לאחר ההתקנה

# עצור את הקונטיינר
docker stop overpass_israel

# הפעל מחדש
docker start overpass_israel

# הצג לוגים (100 שורות אחרונות)
docker logs --tail 100 overpass_israel

# הצג את הסטטוס הנוכחי
docker inspect --format='{{.State.Status}} | Health: {{.State.Health.Status}}' overpass_israel

# כנס לתוך הקונטיינר לבדיקות
docker exec -it overpass_israel bash

מחיקה מוחלטת ושחזור מאפס

# עצור ומחק את הקונטיינר
docker stop overpass_israel
docker rm overpass_israel

# מחק את כל הנתונים (אם רוצים init מחדש)
sudo rm -rf /big/docker/overpass_db/*

# הרץ מחדש לפי שלב 2

פתרון תקלות

הקונטיינר מת תוך כדי init

  • בדוק שיש מספיק RAM (מינימום 4GB פנוי)
  • בדוק שיש מספיק מקום דיסק (df -h /big)
  • בדוק לוגים: docker logs overpass_israel 2>&1 | tail -50

שגיאת osmium: command not found

sudo apt install -y osmium-tool
> osmium חייב להיות מותקן **בתוך ה-WSL**, לא רק בWindows, כי הוא מופעל במהלך ה-`OVERPASS_PLANET_PREPROCESS`.

הורדת ה-PBF נכשלת

בדוק שה-URL עדיין תקין:

curl -I https://download.geofabrik.de/asia/israel-and-palestine-latest.osm.pbf

הקונטיינר לא מגיב אחרי init

המתן – ה-healthcheck מוגדר ל-48 שעות grace period. הוא יחזיר תוצאות רק אחרי שה-init הסתיים לחלוטין.

בדוק את replicate_id (מצב עדכונים)

cat /big/docker/overpass_db/replicate_id

מבנה ספריית הנתונים לאחר init מוצלח

/big/docker/overpass_db/
├── db/               # דטאבייס Overpass הראשי
├── diffs/            # diff files לעדכונים מינוטאליים
├── changes.log       # לוג שינויים
├── cookie.jar        # cookies לבקשות HTTP
├── init_done         # קובץ flag שמציין ש-init הסתיים
├── replicate_id      # מספר ה-sequence הנוכחי לעדכונים
└── replicate_id.backup

הערות חשובות

  1. osmium בתוך WSL: ה-OVERPASS_PLANET_PREPROCESS מניח ש-osmium נגיש בתוך הקונטיינר או שהוא מורכב. wiktorn/overpass-api כולל osmium פנימי – לכן הפקודה עובדת בתוך הקונטיינר עצמו.

  2. שעון ישראל (UTC+3): ה-healthcheck מוצג בשעון מקומי.

  3. עדכונים אוטומטיים: לאחר ה-init, הקונטיינר מעדכן את הדטאבייס מ-OVERPASS_DIFF_URL אוטומטית כל דקה.

  4. WSL2 לעומת WSL1: חובה להשתמש ב-WSL2. Docker Engine אינו נתמך ב-WSL1.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment