Docker部署PostgreSQL+PostGIS服務的實現(xiàn)
引言
在進行空間數(shù)據(jù)開發(fā)、GIS 數(shù)據(jù)處理或數(shù)據(jù)科學任務時,PostgreSQL 是一款非常受歡迎的開源數(shù)據(jù)庫,而其擴展模塊 PostGIS 更是為其帶來了強大的地理空間支持。
本文將介紹如何使用 Docker 快速部署 PostgreSQL,并手動安裝 PostGIS 模塊,實現(xiàn)一個可持久化的空間數(shù)據(jù)庫服務。
為什么選擇 Docker 部署 PostgreSQL?
Docker 可以讓我們以容器化方式快速啟動數(shù)據(jù)庫服務,避免繁瑣的環(huán)境配置過程,具有如下優(yōu)點:
- 快速啟動、重啟和銷毀數(shù)據(jù)庫服務
- 容器與宿主環(huán)境隔離,配置安全清晰
- 配置持久化,支持掛載宿主機目錄保存數(shù)據(jù)
- 易于遷移、復制和多平臺部署
接下來我們就一步步完成部署!
拉取鏡像
使用 docker pull 命令從 Docker Hub 拉取 PostgreSQL 官方鏡像,這里我們以最新的 16 版本為例:
docker pull postgres:16.2
運行容器
方法1:docker直接運行
通過以下命令運行 PostgreSQL 容器,并進行以下設置:
- 設置容器名稱為 postgres
- 配置數(shù)據(jù)庫密碼為 123456
- 將宿主機目錄 /opt/postgres/data 掛載到容器內(nèi)部的數(shù)據(jù)庫目錄,實現(xiàn)數(shù)據(jù)持久化
- 映射主機的 5432 端口
docker run -d \ --name postgres \ -e POSTGRES_PASSWORD=123456 \ -v /opt/postgres/data:/var/lib/postgresql/data \ -p 5432:5432 \ postgres:16.2
?? 注意事項:
- 請確保宿主機 /opt/postgres/data 目錄存在,并具有適當權限
- 如果已有其他服務占用 5432 端口,請修改映射端口
方法2:docker-compose
- 編寫docker-compose.yml文件:
services:
postgres:
image: postgres:16.2
container_name: postgres
restart: unless-stopped
ports:
- "5432:5432"
volumes:
- /opt/postgres/data:/var/lib/postgresql/data
environment:
POSTGRES_PASSWORD: 123456
- 啟動容器
在docker-compose.yml文件所在的目錄下,打開終端或命令行界面,運行以下命令:
docker-compose up -d
安裝PostGIS模塊
PostGIS 并不默認包含在 PostgreSQL 鏡像中,因此需要我們手動進入容器并安裝。
- 進入容器:
docker exec -it postgres /bin/bash
- 更新 apt 包索引:
apt-get update
這里如果用國內(nèi)源會速度快些
tee /etc/apt/sources.list.d/debian.sources >/dev/null <<'EOF' Types: deb URIs: http://mirrors.aliyun.com/debian Suites: bookworm bookworm-updates Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg Types: deb URIs: http://mirrors.aliyun.com/debian-security Suites: bookworm-security Components: main contrib non-free non-free-firmware Signed-By: /usr/share/keyrings/debian-archive-keyring.gpg EOF
- 安裝 PostGIS 模塊:
apt-get install -y postgis postgresql-16-postgis-3
postgresql-16-postgis-3 是對應 PostgreSQL 16 的 PostGIS 模塊名稱
如果你使用其他版本,請根據(jù)版本號調整命令
- 驗證PostGIS是否成功安裝:
- 進入PostgreSQL數(shù)據(jù)庫
psql -U postgres
- 默認進入的是 postgres 數(shù)據(jù)庫,你也可以在后面指定目標數(shù)據(jù)庫:
psql -U postgres -d your_database
- 執(zhí)行創(chuàng)建擴展
CREATE EXTENSION postgis;
- 查看擴展版本
SELECT PostGIS_Version();
- 正確會輸出類似以下信息:
postgis_version ------------------- 3.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
直接部署PostGIS容器
當然,我們也可以采用dockerhub上的PostGIS鏡像來進行部署。
docker pull postgis/postgis:11-3.3
docker run --restart=always -d --name postgis \ -p 5432:5432 \ -v /mnt/data/docker/volumes/postgis/data/:/var/lib/postgresql/data/ \ -e POSTGRES_PASSWORD=123456 postgis/postgis:11-3.3
總結
通過本文,我們已經(jīng)完成了使用Docker快速部署PostgreSQL16,并且實現(xiàn)數(shù)據(jù)持久化掛載,同時安裝并驗證PostGIS模塊。
后續(xù)我們可以:
使用 pgAdmin 可視化管理工具連接容器數(shù)據(jù)庫,并進行一系列的數(shù)據(jù)庫操作啦。
如果在安裝過程中遇到任何問題,歡迎留言交流。
到此這篇關于Docker部署PostgreSQL+PostGIS服務的實現(xiàn)的文章就介紹到這了,更多相關Docker部署PostgreSQL+PostGIS服務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
docker部署nodejs開發(fā)環(huán)境詳細步驟(基礎示例篇)
這篇文章主要給大家介紹了docker部署nodejs開發(fā)環(huán)境詳細步驟,docker是一個開源的應用容器引擎,可以為我們提供安全、可移植、可重復的自動化部署的方式,需要的朋友可以參考下2023-10-10

