參考:https://github.com/openstreetmap/openstreetmap-website/blob/master/DOCKER.md
OpenStreeMap 部署
操作系統建議使用 Ubuntu 22
版本
安裝 Docker
# 更新軟件包索引:
sudo apt-get update
# 允許APT使用HTTPS:
sudo apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
# 添加Docker官方GPG密鑰:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
# 添加Docker的穩定版本倉庫:
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
# 再次更新軟件包索引:
sudo apt-get update
# 安裝Docker CE(社區版):
sudo apt-get install docker-ce
# 驗證Docker是否安裝成功并運行:
sudo systemctl status docker# 配置鏡像加速器
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{"registry-mirrors": ["https://onau6ame.mirror.aliyuncs.com"]
}
EOFsudo systemctl daemon-reload
sudo systemctl restart docker
OpenStreemap 部署
1、克隆源碼
git clone https://github.com/openstreetmap/openstreetmap-website.git
2、初始設置
cd openstreetmap-website
cp config/example.storage.yml config/storage.yml
cp config/docker.database.yml config/database.yml
touch config/settings.local.yml
3、構建 docker 鏡像
docker compose build
注意:命令可能會執行失敗,多試幾次。[web 2/10]、[web 7/10]
階段執行緩慢,失敗了繼續執行就行,失敗前的進度會保存。
4、啟動應用
docker compose up -d# 啟動成功后可以查看下日志
docker compose logs -f web
docker compose logs -f db
5、遷移
# 運行 Rails 數據庫遷移
docker compose run --rm web bundle exec rails db:migrate
6、下載地圖數據
# 下載 OSM 測試數據
wget https://download.geofabrik.de/north-america/us/district-of-columbia-latest.osm.pbf# 其他地圖數據下載地址
https://download.geofabrik.de/
http://www.geofabrik.de/data/
7、加載 OSM 提取文件
注意!數據大的話會很慢;需要使用esxi界面的虛機窗口界面執行,避免中途終端長時間無人操作中斷。
# 將 OSM 數據提取加載到基于 Docker 的 OSM 實例中
# 數據大的話會很慢(注意使用虛機窗口執行,避免中途終端斷了)
docker compose run --rm web osmosis -verbose --read-pbf district-of-columbia-latest.osm.pbf --log-progress --write-apidb host="db" database="openstreetmap" user="openstreetmap" validateSchemaVersion="no"
命令參數說明:
docker compose run --rm web osmosis \ # 啟動并在 web 的容器中執行 osmosis命令-verbose \ # 啟用 osmosis 的詳細輸出--read-pbf district-of-columbia-latest.osm.pbf \ # 從指定的PBF文件(OSM 數據格式)中讀取數據--log-progress \ # 顯示進度日志--write-apidb \ # 將數據寫入到APIDB(API數據庫)host="db" \ # 數據庫的主機名database="openstreetmap" \ # 要寫入數據的數據庫名user="openstreetmap" \ # 數據庫進行交互的用戶名validateSchemaVersion="no" # 禁用了驗證數據庫模式版本的選項
8、訪問 OpenStreeMap
# 訪問URL
http://[服務器IP]:3000/#map=12/38.8938/-77.0146
禁用了驗證數據庫模式版本的選項
#### 8、訪問 OpenStreeMap ```shell
# 訪問URL
http://[服務器IP]:3000/#map=12/38.8938/-77.0146