环境:Ubuntu 16
docker: 18.06.1-ce
使用 kartoza/postgis
镜像安装,github地址
- 拉取镜像
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
- 跑起来
$ 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’ 指定密码
其他阅读官方文档
附上其他几个额外问题:
- 该镜像的数据库默认 SQL_ASCII,中文会显示乱码
解决方案:改为UTF8(改完能正常显示),网上也有说改成GBK(没试过)
查看编码情况(终端psql或者pgAdmin都可执行):
将SQL_ASCII改成UTF8,可以通过SQL语句执行
update pg_database set encoding = pg_char_to_encoding('UTF8') where datname = 'yourDbName'
其中,yourDbName
,是数据库名称
- 查看 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/
2024-01-22 写的话:
以上方法是2019年,有点过时。
推荐官方镜像 postgis/postgis,例如11版本带postgis3.3版本,postgis/postgis:11-3.3