最近项目里有个在麒麟ARM64平台部署项目的需要,项目里有用到postgis,但是苦于服务器不能联网,安装十分困难。经过摸索最终完成安装。
一、找一台能联网的服务器
二、在联网的服务器里利用docker拉去镜像
docker pull nickblah/postgis:11-bullseye-postgis-3
,安装的docker-compose.yaml信息如下:
version: '3'
services:
postgres:
restart: always
image: nickblah/postgis:12-bullseye-postgis-3
container_name: postgis_arm
volumes:
- ./data/pgdata/:/var/lib/postgresql/data/pgdata/
- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime
- /usr/local/share/postgresql/extension:/usr/local/share/postgresql/extension
environment:
POSTGRES_USER: postgres
POSTGRES_DB: postgres
POSTGRES_PASSWORD: ***@123
ALLOW_IP_RANGE: 0.0.0.0/0
PGDATA: /var/lib/postgresql/data/pgdata
ports:
- "5432:5432"
其中postgis的镜像来源(这个很关键,找兼容的postgis版本找了很久!):
https://hub.docker.com/r/nickblah/postgis/tags
三、此处采用docker-compose方式进行启动,查看启动结果,并用客户端远程连接看数据库是否正常
[root@server postgres-docker]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
f7d74628f978 nickblah/postgis:12-bullseye-postgis-3 "docker-entrypoint.s…" 5 hours ago Up 5 hours 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgis_arm
用navicat远程连接数据库正常访问,新建查询窗口,执行插件引入:
CREATE EXTENSION postgis;
提示执行成功,表示POSTGIS安装成功。
四、导出POSTGIS容器
docker export -o postgis_arm > postgis_arm64.tar
在当前目录会生成一个tar文件,将文件从服务器下载到自己电脑的磁盘上
五、远程离线的麒麟服务器,上传tar文件,并执行导入指令
import postgis_arm64.tar postgis_arm64:postgis_arm64
docker images查看镜像是否存在,下面内容说明完成导入
[root@host-10-84-30-9 PG]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
postgis_arm64 postgis_arm64 655b57bacd54 8 seconds ago 527MB
六、启动容器
docker run -it -d --name postgis_arm64 -p 5432:5432 655b57bacd54 bash
七、查看服务状态,是否正常启动
[root@host-10-84-30-9 PG]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0bdb25b2684f 655b57bacd54 "bash" 4 minutes ago Up 4 minutes 0.0.0.0:5432->5432/tcp, :::5432->5432/tcp postgis_arm64
八、用navicat远程最新安装的postgis,看看是否能连接正常,并且绑定插件正常
CREATE EXTENSION postgis;
到此完成安装。
备注:本文阅读有基础要求,对docker和docker-compose的使用有一定了解,否则前几步看不懂,这里不赘述如何安装docker,docker-compose及一些docker的基操。