概念

1.通过docker快照打镜像,参考https://bbs.huaweicloud.com/blogs/231bfdd3b5b811e89fc57ca23e93a89f

步骤

1.dockerhub 上启动centos7必须要用特权方式启动:

 

docker run --privileged -itd --name=pg10_postgis2_pipelinedb1_jj 9f38484d220f /usr/sbin/init

2.进入容器开始制作新镜像

docker exec -it d6415e876d14 /bin/bash

  

安装pg10.5:

1.首先安装PostgreSQL的rpm

yum install https://download.postgresql.org/pub/repos/yum/10/redhat/rhel-7-x86_64/pgdg-centos10-10-2.noarch.rpm -y  

2.安装postgresql10-contrib和postgresql10-server

yum install postgresql10-contrib postgresql10-server -y

装好后这样会自动给我们的系统增加一个postgres用户以及postgres组!

3.

修改默认数据目录
Postgresql默认的数据目录是/var/lib/pgsql/版本号/data目录,这要求你在/var下有足够的存储空间,我们这里将其换掉,假设/home的空间很大。

首先在/home下创建一个Postgresql的数据目录,指定所有者postgres同时分配权限

mkdir /home/postgresql_data
chown postgres:postgres /home/postgresql_data
chmod 750 /home/postgresql_data

设置环境变量/etv/profile

export PATH=/usr/pgsql-10/bin:$PATH
export LD_LIBRARY_PATH=/usr/pgsql-10/lib
export PGDATA=/home/postgresql_data

记住要重置环境变量:source /etc/profile

切换到postgres用户,使用initdb初始化数据库,这样在/home/postgresql_data下会增加很多东西.

 

 

接着修改/usr/lib/systemd/system/postgresql-10.service文件的内容,在#Location of database direcotry里面指定正确的PGDATA:

#Location of database directory
Environment=PGDATA=/home/postgresql_data

  

4.配置数据库服务开机启动并立即启动数据库服务

systemctl enable postgresql-10.service
systemctl start postgresql-10.service
systemctl status postgresql-10.service

  

 

 5.修改密码
分为postgres用户密码和数据库密码,保持一致吧

passwd postgres

 

设置数据库密码:

su postgres
psql
ALTER USER postgres WITH PASSWORD '密码';

 

 

\l 列出当前库:

 

\q退出pg,exit退出postgres用户

 

 

安装postgis2.4插件


1.先安装几个工具包

 

yum  install wget net-tools epel-release -y

2.安装pg

yum install postgis24_10 postgis24_10-client -y

3.安装拓展工具

yum install ogr_fdw10 -y
yum install pgrouting_10 -y

4.进入postgres用户,创建数据库originaltek_testdb

su postgres
psql
CREATE DATABASE originaltek_testdb OWNER postgres;

 

 

进入数据库

\c spatial_testdb

安装PostGis扩展

spatial_testdb=# CREATE EXTENSION postgis;
spatial_testdb=# CREATE EXTENSION postgis_topology;
验证是否安装成功
SELECT postgis_full_version();或者用 \dx 查看所有状态

 

 

安装pipelinedb1.0.0插件


先吐槽一下官网的方法有问题!!导致yum源一直302,不懂什么原因有知道的烦请指点一二,小生换了一招成功装上插件,但听我娓娓道来!

1.根据自己的环境下载pipelinedb包。(我是centos7 x86_32)

wget https://github.com/pipelinedb/pipelinedb/releases/download/1.0.0rev4/pipelinedb-postgresql-10-1.0.0-4.centos7.x86_64.rpm

 

2.安装rpm包

 rpm -ivh pipelinedb-postgresql-10-1.0.0-4.centos7.x86_64.rpm

3.

我们来到data目录。如果是yum安装,默认目录在 /var/lib/pgsql/10/data/,我已经给这个目录重置了,到 /home/postgresql_data

修改这两个参数。要使PipelineDB运行,shared_preload_libraries必须设置配置参数,该参数可以在postgresql.conf数据目录下找到。设置max_worker_processes相当高的值以使PipelineDB工作进程具有足够的容量也是一个好主意

shared_preload_libraries = 'pipelinedb'

max_worker_processes = 128

4.重启数据库

systemctl restart postgresql-10.service

  

 

5.同gis进入数据库创建pipelinedb插件扩展

create extension pipelinedb;

 

6.设置远程连接

修改配置文件
首先修改/home/postgresql_data/pg_hba.conf,改为trust!图片懒得截图了用的网上的不要参考

其次修改/home/postgresql_data/postgresql.conf,改为:

重启。

systemctl restart postgresql-10.service
systemctl status postgresql-10.service

  

oh yeh 大功告成,恭喜兄弟入门!

 

打成docker 镜像


1.最后打成镜像差点忘掉,不好依稀~~

 

docker commit -m "originaltekj_guanghedb" -a "jy" d6415e876d14 originaltek/originaltekj_guanghedb:1.0.0
给刚才的容器,打个快照
docker commit -m "xx" -a "tsj" container-id tsj/image:tag

-a : 提交的镜像作者;

container-id : 刚才跑命令的容器id。可以使用 docker ps -a 查询得到;

-m : 提交时的说明文字;

tsj/image:tag : 仓库名/镜像名:TAG名

docker images查看

  

 

 

总结

1.所有进入数据库命令都要带上分号!不然会认为你一直没有结束语句!!!!!!!

2.dockerhub上的centos7没有sudo命令,因此开始装!

 

yum -y install sudo

 

 

 

3.安装locate便于查找东西

 

 yum install mlocate -y
sudo updatedb

 

  

 

 

4.postgres

目录:/usr/pgsql-10/bin

data目录:/home/postgresql_data

5.postgis

目录:/usr/pgsql-10/share/extension

6.pipelinedb

目录:

/usr/pgsql-10/share/extension

 

7,运行自定义好的镜像

a.一定别忘了端口映射哦,pg默认5432 小生木有修改

b.千万记住要用–privileged方式起容器!

 

docker run --privileged -itd --name=guanghedb -p5210:5432 7462b3e8f560 /usr/sbin/init

 

  

 

版权声明:本文为jiyang2018原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.cnblogs.com/jiyang2018/p/11168953.html