文章目錄
- 前言
- 一、離線安裝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。這意味著:
- 所有數據卷(volumes) 將存儲在 /data/server/docker/volumes/ 目錄下
- 鏡像(images) 和 容器(containers) 的數據也會存儲在該路徑下的對應子目錄
- 之前創建的 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】;
docker run
: 運行一個新的容器。-d
: 在后臺運行容器,即以守護進程方式運行。--privileged
: 賦予容器特權,可以執行一些特殊操作,如訪問宿主機的設備。--restart always
: 設置容器的重啟策略為始終自動重啟。ALLOW_IP_RANGE=0.0.0.0/0
: 允許所有ip訪問-p 54321:5432
: 將容器內部的 5432 端口映射到宿主機的 54321 端口,用于訪問 PostgreSQL 數據庫。--name postgis
: 為容器指定一個名稱,即 “postgis”。-v postgis_data:/var/lib/postgresql/data
: 創建一個數據卷,將容器內的 /var/lib/postgresql/data 目錄掛載到名為 “postgis_data” 的數據卷上,用于持久化存儲數據庫數據。-e POSTGRES_USER=postgres
: 指定用戶名-e POSTGRES_PASSWORD=Postgis@123
: 設置 PostgreSQL 數據庫的密碼為 “Postgis@123”,通過環境變量傳遞給容器。【鏡像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鏈接即可,注意服務器防火墻是否關閉。