מדריך זה מתאר שחזור מאפס של קונטיינר overpass_israel על מחשב Windows עם WSL2 ו-Docker Engine (ללא Docker Desktop).
# בPowerShell כאדמין – הפעל WSL2
wsl --install -d Ubuntu-22.04
# ודא שהגרסה היא WSL2
wsl --set-version Ubuntu-22.04 2
wsl --set-default-version 2# פתח 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
# בתוך 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ב-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 עבור ישראל ופלסטין.
# בתוך 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 |
תהליך ה-init מוריד את קובץ ה-PBF, ממיר אותו, ובונה את הדטאבייס. זה לוקח 10-40 דקות (תלוי מהירות אינטרנט ומעבד).
# עקוב אחרי הלוגים
docker logs -f overpass_israel
# בדוק שהקונטיינר רץ ובריא
docker ps | grep overpass_israelהקונטיינר healthy רק לאחר סיום ה-init (ה-healthcheck מוגדר עם 48 שעות grace period).
מהדפדפן ב-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- בדוק שיש מספיק RAM (מינימום 4GB פנוי)
- בדוק שיש מספיק מקום דיסק (
df -h /big) - בדוק לוגים:
docker logs overpass_israel 2>&1 | tail -50
sudo apt install -y osmium-toolבדוק שה-URL עדיין תקין:
curl -I https://download.geofabrik.de/asia/israel-and-palestine-latest.osm.pbfהמתן – ה-healthcheck מוגדר ל-48 שעות grace period. הוא יחזיר תוצאות רק אחרי שה-init הסתיים לחלוטין.
cat /big/docker/overpass_db/replicate_id/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
-
osmium בתוך WSL: ה-
OVERPASS_PLANET_PREPROCESSמניח ש-osmiumנגיש בתוך הקונטיינר או שהוא מורכב.wiktorn/overpass-apiכולל osmium פנימי – לכן הפקודה עובדת בתוך הקונטיינר עצמו. -
שעון ישראל (UTC+3): ה-healthcheck מוצג בשעון מקומי.
-
עדכונים אוטומטיים: לאחר ה-init, הקונטיינר מעדכן את הדטאבייס מ-
OVERPASS_DIFF_URLאוטומטית כל דקה. -
WSL2 לעומת WSL1: חובה להשתמש ב-WSL2. Docker Engine אינו נתמך ב-WSL1.