如何启动Nominatim Docker容器?已部署容器意外停机后免重新加载数据的重启方法问询
无需重新加载数据重启Nominatim Docker容器的方法
当然可以不用重新执行耗时的数据加载步骤!你的容器只是因为主机意外关机而停止运行,只要容器本身没有被删除,核心的地理数据和PostgreSQL数据库文件就还保存在容器的关联存储卷中,直接重启即可。
具体操作步骤:
检查容器状态
先确认容器的当前状态,执行以下命令:docker ps -a你应该能看到名为
nominatim的容器,状态显示为Exited。重启容器
直接使用docker start命令重启容器:docker start nominatim如果需要查看容器启动后的实时日志(确认服务正常运行),可以执行:
docker logs -f nominatim等待日志显示Nominatim服务正常启动后,就可以通过
http://localhost:8080访问服务了,数据和之前完全一致,不需要重新导入。
后续优化建议(避免类似问题)
这次主机关机没有丢失数据是因为容器还存在,但如果未来不小心删除了容器,未挂载到宿主机的数据会丢失。建议下次启动容器时,添加PostgreSQL数据目录的挂载,把核心数据持久化到宿主机:
docker run -it --shm-size=4g \ -e PBF_URL=https://download.geofabrik.de/north-america/us-latest.osm.pbf \ -e REPLICATION_URL=https://download.geofabrik.de/north-america/us-updates/ \ -e IMPORT_US_POSTCODES=true \ -e IMPORT_TIGER_ADDRESSES=true \ -e IMPORT_WIKIPEDIA=/nominatim/extras/wikimedia-importance.sql.gz \ -p 8080:8080 \ -v /osm-maps/extras:/nominatim/extras \ # 添加这一行,将PostgreSQL数据目录挂载到宿主机 -v /osm-maps/postgres-data:/var/lib/postgresql/14/main \ --name nominatim \ mediagis/nominatim:4.0
这样所有的地理数据都会保存在宿主机的/osm-maps/postgres-data目录下,无论容器重启、删除重建,都不需要重新加载数据,直接挂载该目录即可恢复服务。
异常排查
如果重启后服务无法正常运行,可以通过以下命令查看详细日志定位问题:
docker logs nominatim
意外关机可能导致PostgreSQL数据库出现轻微损坏,但通常PostgreSQL会在启动时自动修复这类问题。如果遇到无法自动修复的情况,可以进入容器执行数据库修复命令:
docker exec -it nominatim bash # 切换到postgres用户 su postgres # 执行修复命令 pg_resetwal -f /var/lib/postgresql/14/main
完成后重启容器即可。
内容的提问来源于stack exchange,提问作者Dennis
相关产品推荐
相关产品推荐

