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都可执行):
    docker 部署带postgis扩展的postgresql_第1张图片
    将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 4月  17 10:26 main/

你可能感兴趣的:(数据库,docker,docker,postgis,postgresql)