要按照公司已有的postgresql重新搭建一套数据库,查看原有版本,PostgreSQL是10.5,PostGiS是2.4.5,然后查了些资料,docker内安装postgres:10.5,然后再容器内安装postgis插件,因为公司服务器是离线环境,所以打算先在阿里云服务器上安装配置好,再将容器打包成镜像,移植到的离线服务器,然后整整安装了两天,踩了各种坑,也没安装成功。

踩坑方案一:docker安装postgres:10.5,然后通过导入postgis2.4.5包进行安装,已失败告终。

踩坑方案二:docker安装postgres:10.5,然后通过apt-get安装postgres-10-postgis-2.4,因切换了各种源(阿里、163、清华)都没有10-2.4版本,失败。

搞了整整两天,头昏脑胀,也没成功,然后,突然在csdn上看到了一篇文章Docker环境安装postgres+postgis扩展,原来,直接docker安装postgis就可以了............ mmp

docker安装PostgreSQL+PostGiS_数据库

1、访问docker镜像网站查看要需要安装的版本

docker安装PostgreSQL+PostGiS_postgresql_02

docker安装PostgreSQL+PostGiS_postgresql_03

2、选择一个查找自己需要的版本

(我这里选择的是第一个corpusops/postgis,推荐postgis/postgis,里面没有我需要的10-2.4)

依次点击corpusops/postgis->Tags,将Sort by选为A-Z,可以看到下面有若干个版本,选择10-2.4

docker安装PostgreSQL+PostGiS_docker_04


从IMAGE LAYERS内可以看到,该镜像源对应的postgres和postgis版本

docker安装PostgreSQL+PostGiS_数据库_05

docker安装PostgreSQL+PostGiS_数据库_06

3、选择该版本镜像安装

复制pull命令,在阿里云服务器上执行

docker pull corpusops/postgis:10-2.4

docker安装PostgreSQL+PostGiS_docker_07

4、运行该镜像

在服务器上创建数据卷映射文件夹

mkdir -p /data/postgres/postgresql/data

mkdir -p /data/postgres/postgis/data

docker run --name postgis_postgres --restart=always -e POSTGRES_USER=postgres -e POSTGRES_PASSWORD=123456 -e POSTGRES_DBNAME=gis_db -p 5432:5432 -v /data/postgres/postgis/data:/var/lib/postgis/data -v /data/postgres/postgresql/data:/var/lib/postgresql/data -d corpusops/postgis:10-2.4

参数说明:

docker run
--name postgis_postgres     # 创建容器名称
--restart=always #自动启动
-e POSTGRES_USER=postgres     #postgresql 用户名
-e POSTGRES_PASSWORD=123456     #postgresql 密码
-e POSTGRES_DBNAME=gis_db  #添加环境变量
-p 5432:5432     # 占用服务器端口:docker内部虚拟端口
-v /data/postgres/postgis/data:/var/lib/postgis/data  #postgis数据卷映射到本地环境
-v /data/postgres/postgresql/data:/var/lib/postgresql/data #postgresql数据卷映射到本地环境
-d corpusops/postgis:10-2.4 #使用的镜像名称:版本

docker安装PostgreSQL+PostGiS_数据库_08

5、本地通过pgadmin4访问

(需要将服务的5432端口打开)

pgadmin4请访问pgadmin官网下载地址自行下载安装,需要注意的是pgadmin4无法连接老版本的pg数据库,比如我安装的macOS pgAdmin 4 v6.21 连接postgres:9.6会报如下错误:

docker安装PostgreSQL+PostGiS_数据库_09

打开安装好的pgadmin4

docker安装PostgreSQL+PostGiS_数据库_10

pgadmin官网下载地址

需要先设置软件主密码(不是连接数据库的密码),随意设置 ,记得住就好,每次使用pgadmin需要输入,比如我设置的123456

docker安装PostgreSQL+PostGiS_数据库_11

设置好之后,依次点击

docker安装PostgreSQL+PostGiS_docker_12

输入连接配置,名称自定义

docker安装PostgreSQL+PostGiS_数据库_13

docker安装PostgreSQL+PostGiS_postgresql_14

可以看到连接的pg数据库中包含一个名为postgres的数据库,该库为pg默认创建的,在扩展下除了postgis外,还包含了其它几个插件,这是这个镜像源自带的

docker安装PostgreSQL+PostGiS_docker_15

6、创建自己的数据库并添加postgis

右键点击postgis-》CREATE脚本

复制改create命令

docker安装PostgreSQL+PostGiS_数据库_16

-- Extension: postgis
-- DROP EXTENSION postgis;
CREATE EXTENSION IF NOT EXISTS postgis
SCHEMA public
VERSION "2.4.4";

创建数据库

docker安装PostgreSQL+PostGiS_数据库_17

docker安装PostgreSQL+PostGiS_postgresql_18

docker安装PostgreSQL+PostGiS_postgresql_19

添加postgis

docker安装PostgreSQL+PostGiS_docker_20

将刚才复制的create命令复制到查询窗口

docker安装PostgreSQL+PostGiS_数据库_21

查看test数据库,可以看到已经安装好了postgis和其中的函数、类型、默认表

docker安装PostgreSQL+PostGiS_postgresql_22

至此,安装posgresql+postgis完成,如需安装其它版本请自行通过docker镜像网站查找pull命令。