参考: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"]
}
EOF
sudo 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