docker 部署带postgis扩展的postgresql

环境:Ubuntu 16
docker: 18.06.1-ce

使用 kartoza/postgis 镜像安装,github地址

  1. 拉取镜像
docker pull kartoza/postgis

这个是拉取最新的(即 lastest ),当然也可以指定版本:
kartoza/postgis:[postgres_version]-[postgis-version]
当前最近几个组合版本有:

  • 11.0-2.5
  • 10.0-2.4
  • 9.6-2.4
# 例如:拉取 postgresql 9.6 版本以及postgis 2.4 版本
docker pull kartoza/postgis:9.6-2.4

另外,还可以通过github源码进行构建,不做详细展开

docker build -t kartoza/postgis git://github.com/kartoza/docker-postgis
  1. 跑起来
$ docker run -d --name postgresql2 --restart always -e POSTGRES_USER=abcuser -e POSTGRES_PASS='abc123' -e ALLOW_IP_RANGE=0.0.0.0/0 -v /docker_root/postgresql11-docker:/var/lib/postgresql -v /4T/tmp:/tmp/tmp -p 55433:5432 -t kartoza/postgis

其中

  • -e ALLOW_IP_RANGE=0.0.0.0/0,这个表示允许所有ip访问,如果不加,则非本机 ip 访问不了
  • -e POSTGRES_USER=abcuser 用户名
  • -e POSTGRES_PASS=‘abc123’ 指定密码

其他阅读官方文档

附上其他几个额外问题:

  1. 该镜像的数据库默认 SQL_ASCII,中文会显示乱码
    解决方案:改为UTF8(改完能正常显示),网上也有说改成GBK(没试过)
    查看编码情况(终端psql或者pgAdmin都可执行):
    pg_encoding
    将SQL_ASCII改成UTF8,可以通过SQL语句执行
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'yourDbName'

其中,yourDbName,是数据库名称

  1. 查看 pg 版本
    有时想看看安装的到底是什么版本
show server_version;
# 或者
select version();

以上两条语句任选一条即可

此外,另外一个镜像 mdillon/postgis:11-alpine,这个镜像不需要修改编码

踩坑:

/docker_root/postgresql11-docker/11/main,这个文件路径正是数据库映射出来的路径(数据库数据都在于此),之前为了查看里面的东西,将其权限设置为777,后面数据库重启则重启不了。再将其设置为700(sudo chmod -R 700 main),才启动成功

$ ls -ld main
drwx------ 19 systemd-resolve systemd-resolve 4096 417 10:26 main/

2024-01-22 写的话:
以上方法是2019年,有点过时。
推荐官方镜像 postgis/postgis,例如11版本带postgis3.3版本,postgis/postgis:11-3.3

  • 3
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值