Docker安装PostgreSQL及PostGIS

说来惭愧,大名鼎鼎的开源数据库PostgreSQL第一次用,由于要存储地理信息数据,也用了PostGIS插件,顺手记录下在Docker环境中的安装配置过程。


安装环境

Docker Desktop for Windows 4.10
PostgreSQL 10.19
PostGIS 10.3


1.安装PostgreSQL

拉去镜像

docker pull postgres 10.19

创建并启动容器

docker run -d --name mypostgres --restart=always -p 5432:5432 -e POSTGRES_PASSWORD=postgres -e PGDATA=/var/lib/postgresql/data/pgdata -v /custom/mount:/var/lib/postgresql/data postgres:10.19

其中的几个参数含义如下:

–name mypostgres | 容器名称
–restart=always | 始终自动重启
-p 5432:5432 | 端口映射(主机Host端口:容器端口)
-e POSTGRES_PASSWORD=postgres | 自定义参数(密码)
-e PGDATA=/var/lib/postgresql/data/pgdata | 自定义参数(数据存储路径)
-v /custom/mount:/var/lib/postgresql/data | 路径映射

2.安装PgAdmin

docker run -p 5050:80 -e '[email protected]' -e 'PGADMIN_DEFAULT_PASSWORD=admin' -d --name pgadmin4 dpage/pgadmin4

由于端口已映射到5050,使用浏览器访问http://localhost:5050,登录后连接PostgreSQL
Docker安装PostgreSQL及PostGIS_第1张图片

3.安装PostGIS

这里使用在docker容器中安装PostGIS
进入postgresql容器

docker exec -it postgres bash

使用apt安装postgis,由于PostgreSQL使用的版本是10系列,所以PostGIS也使用对应版本

apt-get install postgresql-10-postgis-3 postgresql-10-postgis-3-dbgsym postgresql-10-postgis-3-scripts

Docker安装PostgreSQL及PostGIS_第2张图片

使用apt-get有时会出现安装失败的问题,提示找不到对应的包或者依赖库,需要将apt先进行更新

apt update   //更新apt
apt-get update  //更新apt-get

此外也可以使用yum安装postgis,或者使用wget下载postgis压缩包解压运行,但都需要对组件进行安装和更新

apt install yum
apt install wget

4.数据迁移

4.1.备份数据

打开pgAdmin,在需要备份数据的数据库上右键选择“备份”,选择或输入备份文件名称,其他参数根据情况选择,点击备份开始执行。
Docker安装PostgreSQL及PostGIS_第3张图片
对应的命令为:

/usr/local/pgsql-10/pg_dump --file "/var/lib/pgadmin/storage/admin_admin.org/backup-20220706" --host "192.168.199.38" --port "5432" --username "postgres" --no-password --verbose --role "postgres" --format=c --blobs --encoding "UTF8" "GISDB"

4.2.还原数据

打开pgAdmin,在需要还原数据的数据库上右键选择“还原中”,选择备份文件名称,点击还原开始执行。
Docker安装PostgreSQL及PostGIS_第4张图片
对应的命令为:

/usr/local/pgsql-10/pg_restore --host "host.docker.internal" --port "5432" --username "postgres" --no-password --role "postgres" --dbname "GISDB" --verbose "/var/lib/pgadmin/storage/admin_admin.org/backup-20220706"

你可能感兴趣的:(学习实践,postgresql,docker,数据库)