OpenStreetMapの地図タイル配信サーバ(ラスタ形式)をDockerを使ってWindows PC上にたてる。
環境
Windows 10でDocker Desktop (WSL 2バックエンド) がインストール済み。
- Windows 10 Home: 20H2
- Docker Desktop: 3.5.2
- Docker Engine: 20.10.7
参考
- Switch2OSMのUsing a Docker containerページに書かれた手順に沿って作業を進める。
- 上記手順で使用する
overv/openstreetmap-tile-server
コンテナのイメージは、こちらのDocker Hub上に置かれている。 overv/openstreetmap-tile-server
コンテナのイメージのもとになっているファイルは、こちらのGithub上で管理されている。
タイルサーバを構築する手順
1. コンテナイメージの取得
Docker Hubからイメージを取得する。
> docker pull overv/openstreetmap-tile-server > docker images
2. OpenStreetMapのデータ取得
OpenStreetMapのデータを配信しているWebサイト(今回はGeofabrik)から、.osm.pbf
形式のOpenStreetMapデータをダウンロードする。Switch2OSMの手順ではザンビアのデータを使っているが、ここでは日本の関東地方をダウンロードする。(Windows 10のPower Shellで作業を行うため、wget
コマンドのオプションがSwitch2OSMの手順と異なる点に注意)
> wget https://download.geofabrik.de/asia/japan/kanto-latest.osm.pbf -OutFile "C:/path/to/osm/data/kanto-latest.osm.pbf"
3. Dockerのボリューム作成
コンテナが削除されてもデータの格納先となるPostgreSQLが保持されるよう、ボリュームを作成する。
> docker volume create openstreetmap-data > docker volume ls
4. データベースの構築とインポート
overv/openstreetmap-tile-server
コンテナをimport
パラメータで実行し、PostgreSQLデータベースの構築とデータのインポートを行う
> docker run -v C:/path/to/osm/data/kanto-latest.osm.pbf:/data.osm.pbf -v openstreetmap-data:/var/lib/postgresql/12/main overv/openstreetmap-tile-server import
PostgreSQLデータベースの構築に関する補足
- 上記のコマンドをそのまま実行すると、データベース名は
gis
、ユーザ名 / パスワードはともにrenderer
となる - コマンドの完了時にコンテナは停止し、PostgreSQLも停止状態になる
5. タイルサーバの起動
overv/openstreetmap-tile-server
コンテナを今度はrun
パラメータでバックグラウンド実行し、OpenStreetMapのタイルサーバを起動する。
> docker run -p 80:80 -v openstreetmap-data:/var/lib/postgresql/12/main -d overv/openstreetmap-tile-server run
6. タイルの表示確認
ブラウザで以下のURLにアクセスし世界地図の画像が表示されることを確認する。
http://localhost/tile/0/0/0.png