Docker安装PostGIS,端口无法映射问题处理

PostGIS是个开源的软件,是 Postgres数据库的一款扩展插件,主要用于实现空间数据库,提供了存储空间地理数据的支持,能够进行空间数据管理、数量测量与几何拓扑分析。

因工作需要用到QGIS软件,为了避免每次都要到一次工参的麻烦,又不想在本地笔记本电脑上安装数据库软件,因此打算在openEuler的Docker上安装个PostGIS,方便日常工作使用。

本文主要参考了这位大佬的文档,非常感谢作者的分享。

https://juejin.cn/post/6844903661886242824

Docker上安装PostGIS

1、创建本地文件

命令:mkdir postgre_data && cd postgre_data

2、安装PostGIS

大佬的命令:

docker run –name=postgis -d -e POSTGRES_USER=sde -e POSTGRES_PASS=sde -e POSTGRES_DBNAME=gis -e ALLOW_IP_RANGE=0.0.0.0/0 -p 5432:5432 -v /root/postgre_data:/var/lib/postgresql –restart=always kartoza/postgis:9.6-2.4

大佬的命令在执行后,容器启动后无端口信息,无端口绑定,docker也无法访问,Google一下,有人建议将端口映射命令放在 –name= 前面 也就是一下的命令形式

docker run -p 5432:5432 –name=postgis -d -e POSTGRES_USER=sde -e POSTGRES_PASS=sde -e POSTGRES_DBNAME=gis -e ALLOW_IP_RANGE=0.0.0.0/0 -v /root/postgre_data:/var/lib/postgresql –restart=always kartoza/postgis:9.6-2.4

按照这种方式Pull镜像后,还是无法正常运行,没有端口绑定信息。

查看log信息发现提示:initdb: could not access directory “/var/lib/postgresql/9.6/main”: Permission denied

提示无目录访问权限,查看data的目录权限

修改下目录权限,再重启docker,就可以正常绑定端口了。