当前位置: 首页 > news >正文

docker 离线安装postgres+postgis实践

文章目录

  • 前言
  • 一、离线安装docker
  • 二、导出导入PG镜像
    • 1.导出
    • 2.导入
  • 三、启动容器
  • 四、验证与测试


前言

在企业内网环境中部署地理信息系统(GIS)时,常常面临网络隔离导致无法在线拉取 Docker 镜像的问题。
本文将详细介绍如何通过离线方式完成 PostgreSQL+PostGIS 的完整部署。

一、离线安装docker

安装docker

二、导出导入PG镜像

如果我们的目标服务器是内网,那么没办法pull镜像。我们可以在其它环境pull镜像后,导出来,然后再传到目标服务器。离线安装好docker容器后,在导入。这里直接提供PG镜像(内含postgis),下载即可。没有积分的私信我,浇个朋友。

PG_VERSION=14.5-1
POSTGIS_VERSION=3.2.3

1.导出

#查看要导出的镜像
docker images
#导出
docker save postgis/postgis -o pg_14-3.2.tar

2.导入

docker load -i pg_14-3.2.tar

三、启动容器

创建数据卷,保存容器内数据

docker volume create postgis_data;

通过在 /etc/docker/daemon.json 中设置 data-root 参数,就已经将 Docker 的默认存储路径从 /var/lib/docker 修改为 /data/server/docker。这意味着:

  1. 所有数据卷(volumes) 将存储在 /data/server/docker/volumes/ 目录下
  2. 镜像(images) 和 容器(containers) 的数据也会存储在该路径下的对应子目录
  3. 之前创建的 postgis_data 卷会被移动到新路径(如果在修改配置前已创建,则需要重启 Docker 后生效)

启动容器

docker run -d \--privileged \--restart always \-e ALLOW_IP_RANGE=0.0.0.0/0 \-e POSTGRES_USER=system \-e POSTGRES_PASSWORD=liaoning@Gsafety.123 \-p 54321:5432 \--name postgis \-v postgis_data:/var/lib/postgresql/data \【镜像id】;
  1. docker run: 运行一个新的容器。
  2. -d: 在后台运行容器,即以守护进程方式运行。
  3. --privileged: 赋予容器特权,可以执行一些特殊操作,如访问宿主机的设备。
  4. --restart always: 设置容器的重启策略为始终自动重启。
  5. ALLOW_IP_RANGE=0.0.0.0/0 : 允许所有ip访问
  6. -p 54321:5432: 将容器内部的 5432 端口映射到宿主机的 54321 端口,用于访问 PostgreSQL 数据库。
  7. --name postgis: 为容器指定一个名称,即 “postgis”。
  8. -v postgis_data:/var/lib/postgresql/data: 创建一个数据卷,将容器内的 /var/lib/postgresql/data 目录挂载到名为 “postgis_data” 的数据卷上,用于持久化存储数据库数据。
  9. -e POSTGRES_USER=postgres: 指定用户名
  10. -e POSTGRES_PASSWORD=Postgis@123: 设置 PostgreSQL 数据库的密码为 “Postgis@123”,通过环境变量传递给容器。
  11. 【镜像id】: docker images 查看。

四、验证与测试

# 进入容器内部
docker exec -it postgis bash# 注意密码需要用单引号包裹,避免 @ 被解析 -U 用户名 -d 数据库名
psql -h localhost -p 5432 -U postgres -d postgres -W# 输入密码:Postgis@123# 验证PostGIS扩展
SELECT PostGIS_Version();

外部链接测试直接navicat链接即可,注意服务器防火墙是否关闭。


在这里插入图片描述

http://www.lryc.cn/news/597557.html

相关文章:

  • Java TCP 通信详解:从基础到实战,彻底掌握面向连接的网络编程
  • Python-docx编号列表解析:从XML迷宫到结构化数据的破局之道
  • YOLOv5模型剪枝实战教程
  • 剪枝和N皇后在后端项目中的应用
  • Django 入门详解:从零开始构建你的第一个 Web 应用
  • 【C++】C++ 的入门知识2
  • 今日行情明日机会——20250723
  • 使用JMeter进行压力测试(以黑马点评为例、详细图解)
  • Flex布局与边距计算
  • 视频、音频录制
  • 使用Docker搭建SearXNG搜索引擎
  • 从0开始学习R语言--Day55--弹性网络
  • DIOR-ViT:用于病理图像癌症分类的差分序数学习视觉Transformer|文献速递-医学影像算法文献分享
  • 9、STM32的启动过程
  • VSCODE 禁用git 功能
  • Deep learning--模型压缩的五种方法
  • DenseNet详解,附模型代码(pytorch)
  • 扫描电镜与透射电镜联用表征形貌与元素组成-测试GO
  • 【OD机试】数列构造
  • 智能Agent场景实战指南 Day 19:Agent工具使用与API调用
  • 网安-JWT
  • 1、黑马点评复盘(短信登录-Session或Redis实现)
  • BUUCTF(web)部分题解
  • Redis 的事务机制是怎样的?
  • 模仿学习(Imitation Learning, IL)和监督学习(Supervised Learning, SL)区别
  • Python--Tkinter--标准 GUI 工具包
  • STL学习(?函数对象,谓词,内建函数对象)
  • Hexo - 免费搭建个人博客05 - 更新个人博客
  • DAY 22 复习日
  • 【提示词技巧】高级提示方法与框架