Docker部署PostgreSQL+PostGIS服務(wù)的實(shí)現(xiàn)
引言
在進(jìn)行空間數(shù)據(jù)開(kāi)發(fā)、GIS 數(shù)據(jù)處理或數(shù)據(jù)科學(xué)任務(wù)時(shí),PostgreSQL 是一款非常受歡迎的開(kāi)源數(shù)據(jù)庫(kù),而其擴(kuò)展模塊 PostGIS 更是為其帶來(lái)了強(qiáng)大的地理空間支持。
本文將介紹如何使用 Docker 快速部署 PostgreSQL,并手動(dòng)安裝 PostGIS 模塊,實(shí)現(xiàn)一個(gè)可持久化的空間數(shù)據(jù)庫(kù)服務(wù)。
為什么選擇 Docker 部署 PostgreSQL?
Docker 可以讓我們以容器化方式快速啟動(dòng)數(shù)據(jù)庫(kù)服務(wù),避免繁瑣的環(huán)境配置過(guò)程,具有如下優(yōu)點(diǎn):
- 快速啟動(dòng)、重啟和銷毀數(shù)據(jù)庫(kù)服務(wù)
- 容器與宿主環(huán)境隔離,配置安全清晰
- 配置持久化,支持掛載宿主機(jī)目錄保存數(shù)據(jù)
- 易于遷移、復(fù)制和多平臺(tái)部署
接下來(lái)我們就一步步完成部署!
拉取鏡像
使用 docker pull 命令從 Docker Hub 拉取 PostgreSQL 官方鏡像,這里我們以最新的 16 版本為例:
docker pull postgres:16.2
運(yùn)行容器
方法1:docker直接運(yùn)行
通過(guò)以下命令運(yùn)行 PostgreSQL 容器,并進(jìn)行以下設(shè)置:
- 設(shè)置容器名稱為 postgres
- 配置數(shù)據(jù)庫(kù)密碼為 123456
- 將宿主機(jī)目錄 /opt/postgres/data 掛載到容器內(nèi)部的數(shù)據(jù)庫(kù)目錄,實(shí)現(xiàn)數(shù)據(jù)持久化
- 映射主機(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
?? 注意事項(xiàng):
- 請(qǐng)確保宿主機(jī) /opt/postgres/data 目錄存在,并具有適當(dāng)權(quán)限
- 如果已有其他服務(wù)占用 5432 端口,請(qǐng)修改映射端口
方法2:docker-compose
- 編寫(xiě)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
- 啟動(dòng)容器
在docker-compose.yml文件所在的目錄下,打開(kāi)終端或命令行界面,運(yùn)行以下命令:
docker-compose up -d
安裝PostGIS模塊
PostGIS 并不默認(rèn)包含在 PostgreSQL 鏡像中,因此需要我們手動(dòng)進(jìn)入容器并安裝。
- 進(jìn)入容器:
docker exec -it postgres /bin/bash
- 更新 apt 包索引:
apt-get update
這里如果用國(guó)內(nèi)源會(huì)速度快些
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 是對(duì)應(yīng) PostgreSQL 16 的 PostGIS 模塊名稱
如果你使用其他版本,請(qǐng)根據(jù)版本號(hào)調(diào)整命令
- 驗(yàn)證PostGIS是否成功安裝:
- 進(jìn)入PostgreSQL數(shù)據(jù)庫(kù)
psql -U postgres
- 默認(rèn)進(jìn)入的是 postgres 數(shù)據(jù)庫(kù),你也可以在后面指定目標(biāo)數(shù)據(jù)庫(kù):
psql -U postgres -d your_database
- 執(zhí)行創(chuàng)建擴(kuò)展
CREATE EXTENSION postgis;
- 查看擴(kuò)展版本
SELECT PostGIS_Version();
- 正確會(huì)輸出類似以下信息:
postgis_version ------------------- 3.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
直接部署PostGIS容器
當(dāng)然,我們也可以采用dockerhub上的PostGIS鏡像來(lái)進(jìn)行部署。
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
總結(jié)
通過(guò)本文,我們已經(jīng)完成了使用Docker快速部署PostgreSQL16,并且實(shí)現(xiàn)數(shù)據(jù)持久化掛載,同時(shí)安裝并驗(yàn)證PostGIS模塊。
后續(xù)我們可以:
使用 pgAdmin 可視化管理工具連接容器數(shù)據(jù)庫(kù),并進(jìn)行一系列的數(shù)據(jù)庫(kù)操作啦。
如果在安裝過(guò)程中遇到任何問(wèn)題,歡迎留言交流。
到此這篇關(guān)于Docker部署PostgreSQL+PostGIS服務(wù)的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker部署PostgreSQL+PostGIS服務(wù)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker部署nodejs開(kāi)發(fā)環(huán)境詳細(xì)步驟(基礎(chǔ)示例篇)
這篇文章主要給大家介紹了docker部署nodejs開(kāi)發(fā)環(huán)境詳細(xì)步驟,docker是一個(gè)開(kāi)源的應(yīng)用容器引擎,可以為我們提供安全、可移植、可重復(fù)的自動(dòng)化部署的方式,需要的朋友可以參考下2023-10-10
Docker多階段鏡像構(gòu)建的實(shí)現(xiàn)
本篇文章主要介紹了Docker多階段鏡像構(gòu)建的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2018-04-04
docker容器內(nèi)缺少命令的簡(jiǎn)單解決辦法
有時(shí)候在docker容器里面不僅沒(méi)有你期望的那些常用的命令,甚至沒(méi)有yum命令讓你去安裝那些常用的命令,下面這篇文章主要給大家介紹了關(guān)于docker容器內(nèi)缺少命令的簡(jiǎn)單解決辦法,需要的朋友可以參考下2023-03-03
docker中的jenkins配置sonarQube的過(guò)程
SonarQube是一個(gè)開(kāi)源的代碼分析平臺(tái),用來(lái)持續(xù)分析和評(píng)測(cè)項(xiàng)目源代碼的質(zhì)量,通過(guò)SonarQube可以檢測(cè)出項(xiàng)目中重復(fù)代碼,潛在bug,?代碼規(guī)范,安全性漏洞等問(wèn)題,并通過(guò)SonarQube?web?UI展示出來(lái),這篇文章主要介紹了docker中的jenkins配置sonarQube,需要的朋友可以參考下2023-08-08
Docker volume 掛載卷的實(shí)現(xiàn)方法
這篇文章主要介紹了Docker volume 掛載卷的實(shí)現(xiàn)方法,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2019-03-03

