Commit a9add541 by Bambang Adrian

fix(osrm): release v3.8 fundamental filename logic fix

parent c9b26f67
Ketika Anda menggunakan Docker, file-file yang ada di dalam
image Docker tidak dapat diubah secara langsung setelah image dibuat. Untuk memodifikasi leaflet_options.js, Anda harus membuat image Docker kustom yang menggantikan file asli dengan versi yang sudah Anda ubah. Anda dapat melakukan ini dengan bantuan Dockerfile dan mengelola semuanya dengan docker-compose.yml.
Berikut adalah panduan langkah demi langkah untuk menerapkan perubahan ini menggunakan Docker Compose.
Langkah 1: Siapkan semua file
Pertama, Anda perlu mengumpulkan semua file yang diperlukan di satu direktori proyek Anda.
Struktur direktori:
my-osrm-project/
├── docker-compose.yml
├── leaflet_options.js
├── Dockerfile.frontend
└── (direktori data, misalnya ./data untuk .osrm files)
Penjelasan:
docker-compose.yml: File utama untuk mendefinisikan dan menjalankan layanan multi-kontainer Anda.
leaflet_options.js: File ini adalah versi kustom dari src/leaflet_options.js dari repositori osrm-frontend. Di sinilah Anda akan mendefinisikan profil rute yang berbeda.
Dockerfile.frontend: File ini digunakan untuk membuat image Docker kustom untuk frontend Anda.
data: Direktori lokal tempat Anda menyimpan semua file .osm.pbf dan .osrm yang sudah diproses.
Langkah 2: Buat file leaflet_options.js kustom
Buat file baru bernama leaflet_options.js di direktori proyek Anda, dan isi dengan konfigurasi untuk setiap profil yang Anda inginkan.
Isi file leaflet_options.js:
javascript
// leaflet_options.js
module.exports = {
services: [
{
label: 'Mobil (Tercepat)',
path: 'http://backend-car:5000/route/v1' // Ganti dengan nama service backend mobil
},
{
label: 'Sepeda (Tercepat)',
path: 'http://backend-bike:5000/route/v1' // Ganti dengan nama service backend sepeda
},
{
label: 'Jalan Kaki (Tercepat)',
path: 'http://backend-foot:5000/route/v1' // Ganti dengan nama service backend jalan kaki
}
],
center: [ -6.2, 106.8 ], // Koordinat pusat peta (contoh untuk Jakarta)
zoom: 13,
// Tambahkan opsi konfigurasi lain di sini jika diperlukan
};
Gunakan kode dengan hati-hati.
Penting: Perhatikan bahwa path mengarah ke nama layanan Docker (misalnya, backend-car) yang akan didefinisikan di docker-compose.yml, bukan localhost.
Langkah 3: Buat Dockerfile kustom untuk frontend
Buat file baru bernama Dockerfile.frontend untuk membuat image Docker frontend kustom Anda.
Isi file Dockerfile.frontend:
dockerfile
# Gunakan image osrm-frontend resmi sebagai basis
FROM osrm/osrm-frontend:latest
# Salin file leaflet_options.js kustom Anda ke dalam direktori src
COPY leaflet_options.js src/leaflet_options.js
# Kompilasi ulang aset frontend dengan konfigurasi baru
RUN npm run compile
Gunakan kode dengan hati-hati.
COPY akan menimpa file asli di dalam image dengan versi kustom Anda. Perintah RUN npm run compile memastikan bahwa semua aset JavaScript diperbarui dengan perubahan konfigurasi Anda.
Langkah 4: Tulis file docker-compose.yml
Buat docker-compose.yml yang akan menyatukan semua layanan (backend dan frontend) yang berbeda.
Isi file docker-compose.yml:
yaml
version: '3.7'
services:
# OSRM Backend untuk profil Mobil
backend-car:
image: osrm/osrm-backend:latest
container_name: osrm_backend_car
volumes:
- ./data:/data
command: osrm-routed --algorithm mld /data/indonesia-latest-car.osrm
ports:
- "5000:5000" # Tetap menggunakan port 5000 di dalam container
restart: always
# OSRM Backend untuk profil Sepeda
backend-bike:
image: osrm/osrm-backend:latest
container_name: osrm_backend_bike
volumes:
- ./data:/data
command: osrm-routed --algorithm mld /data/indonesia-latest-bike.osrm
ports:
- "5001:5000" # Mapping ke port 5001 di host
restart: always
# OSRM Backend untuk profil Jalan Kaki
backend-foot:
image: osrm/osrm-backend:latest
container_name: osrm_backend_foot
volumes:
- ./data:/data
command: osrm-routed --algorithm mld /data/indonesia-latest-foot.osrm
ports:
- "5002:5000" # Mapping ke port 5002 di host
restart: always
# Frontend menggunakan image kustom
frontend:
build:
context: .
dockerfile: Dockerfile.frontend
container_name: osrm_frontend
ports:
- "9966:9966"
depends_on:
- backend-car
- backend-bike
- backend-foot
restart: always
Gunakan kode dengan hati-hati.
Penjelasan penting:
build: Menunjuk ke direktori saat ini (.) dan Dockerfile.frontend untuk membuat image kustom.
volumes: Pastikan semua backend mengacu pada direktori data yang sama.
ports: Backend berjalan pada port 5000 di dalam setiap kontainer, tetapi dipetakan ke port yang berbeda di host untuk menghindari konflik. Frontend tidak perlu terhubung ke port host ini karena ia berkomunikasi dengan nama layanan backend (misalnya backend-car) di jaringan Docker.
depends_on: Memastikan bahwa semua backend sudah berjalan sebelum frontend mencoba untuk memulai.
Langkah 5: Jalankan Docker Compose
Dari direktori proyek Anda, jalankan perintah berikut di terminal:
bash
# Lakukan proses data terlebih dahulu (extract, partition, customize)
# Perintah ini akan memakan waktu.
docker compose run --rm backend-car osrm-extract -p /opt/car.lua /data/indonesia-latest.osm.pbf
docker compose run --rm backend-car osrm-partition /data/indonesia-latest.osrm
docker compose run --rm backend-car osrm-customize /data/indonesia-latest.osrm
# Lakukan hal yang sama untuk profil sepeda dan jalan kaki
docker compose run --rm backend-bike osrm-extract -p /opt/bicycle.lua /data/indonesia-latest.osm.pbf
# ... dan seterusnya ...
# Jalankan semua layanan
docker compose up --build -d
Gunakan kode dengan hati-hati.
Setelah semua kontainer berjalan, Anda bisa mengakses frontend Anda di http://localhost:9966. Anda akan melihat dropdown dengan profil rute yang telah Anda definisikan.
\ No newline at end of file
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment