Docker部署PostgreSQL+PostGIS服務(wù)的實現(xiàn)
引言
在進(jìn)行空間數(shù)據(jù)開發(fā)、GIS 數(shù)據(jù)處理或數(shù)據(jù)科學(xué)任務(wù)時,PostgreSQL 是一款非常受歡迎的開源數(shù)據(jù)庫,而其擴(kuò)展模塊 PostGIS 更是為其帶來了強(qiáng)大的地理空間支持。
本文將介紹如何使用 Docker 快速部署 PostgreSQL,并手動安裝 PostGIS 模塊,實現(xiàn)一個可持久化的空間數(shù)據(jù)庫服務(wù)。
為什么選擇 Docker 部署 PostgreSQL?
Docker 可以讓我們以容器化方式快速啟動數(shù)據(jù)庫服務(wù),避免繁瑣的環(huán)境配置過程,具有如下優(yōu)點:
- 快速啟動、重啟和銷毀數(shù)據(jù)庫服務(wù)
- 容器與宿主環(huán)境隔離,配置安全清晰
- 配置持久化,支持掛載宿主機(jī)目錄保存數(shù)據(jù)
- 易于遷移、復(fù)制和多平臺部署
接下來我們就一步步完成部署!
拉取鏡像
使用 docker pull 命令從 Docker Hub 拉取 PostgreSQL 官方鏡像,這里我們以最新的 16 版本為例:
docker pull postgres:16.2
運行容器
方法1:docker直接運行
通過以下命令運行 PostgreSQL 容器,并進(jìn)行以下設(shè)置:
- 設(shè)置容器名稱為 postgres
- 配置數(shù)據(jù)庫密碼為 123456
- 將宿主機(jī)目錄 /opt/postgres/data 掛載到容器內(nèi)部的數(shù)據(jù)庫目錄,實現(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
?? 注意事項:
- 請確保宿主機(jī) /opt/postgres/data 目錄存在,并具有適當(dāng)權(quán)限
- 如果已有其他服務(wù)占用 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 并不默認(rèn)包含在 PostgreSQL 鏡像中,因此需要我們手動進(jìn)入容器并安裝。
- 進(jìn)入容器:
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 是對應(yīng) PostgreSQL 16 的 PostGIS 模塊名稱
如果你使用其他版本,請根據(jù)版本號調(diào)整命令
- 驗證PostGIS是否成功安裝:
- 進(jìn)入PostgreSQL數(shù)據(jù)庫
psql -U postgres
- 默認(rèn)進(jìn)入的是 postgres 數(shù)據(jù)庫,你也可以在后面指定目標(biāo)數(shù)據(jù)庫:
psql -U postgres -d your_database
- 執(zhí)行創(chuàng)建擴(kuò)展
CREATE EXTENSION postgis;
- 查看擴(kuò)展版本
SELECT PostGIS_Version();
- 正確會輸出類似以下信息:
postgis_version ------------------- 3.4 USE_GEOS=1 USE_PROJ=1 USE_STATS=1
直接部署PostGIS容器
當(dāng)然,我們也可以采用dockerhub上的PostGIS鏡像來進(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é)
通過本文,我們已經(jīng)完成了使用Docker快速部署PostgreSQL16,并且實現(xiàn)數(shù)據(jù)持久化掛載,同時安裝并驗證PostGIS模塊。
后續(xù)我們可以:
使用 pgAdmin 可視化管理工具連接容器數(shù)據(jù)庫,并進(jìn)行一系列的數(shù)據(jù)庫操作啦。
如果在安裝過程中遇到任何問題,歡迎留言交流。
到此這篇關(guān)于Docker部署PostgreSQL+PostGIS服務(wù)的實現(xiàn)的文章就介紹到這了,更多相關(guān)Docker部署PostgreSQL+PostGIS服務(wù)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù)
這篇文章主要介紹了詳解基于docker搭建lanproxy內(nèi)網(wǎng)穿透服務(wù),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-04-04
Docker如何根據(jù)名稱查詢?nèi)萜鱅D鏡像ID并停止刪除
這篇文章主要介紹了Docker如何根據(jù)名稱查詢?nèi)萜鱅D鏡像ID并停止刪除問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教2023-11-11
最新IDEA快速實現(xiàn)Docker鏡像部署運行的過程詳解
這篇文章主要介紹了最新IDEA快速實現(xiàn)Docker鏡像部署運行的過程,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2020-09-09
Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像)
這篇文章主要介紹了Docker鏡像構(gòu)建原理解析(不裝docker也能構(gòu)建鏡像),本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下2021-03-03
Docker拉取鏡像失敗解決(connect: connection refused)
最近遇到Docker拉取centos鏡像時報錯,本文主要介紹了Docker拉取鏡像失敗解決(connect: connection refused),具有一定的參考價值,感興趣的可以了解一下2024-07-07
Docker 容器內(nèi)存監(jiān)控原理及應(yīng)用
這篇文章主要介紹了Docker 容器內(nèi)存監(jiān)控原理及應(yīng)用的相關(guān)資料,需要的朋友可以參考下2016-10-10
docker 報錯 Exited (1) 4 minutes ago的原因分析
這篇文章主要介紹了docker 報錯 Exited (1) 4 minutes ago的原因分析,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Docker部署UI自動化測試環(huán)境的實現(xiàn)步驟
本文主要介紹了Docker部署UI自動化測試環(huán)境的實現(xiàn)步驟,通過Docker可以快速創(chuàng)建、部署和測試腳本,提高測試效率,具有一定的參考價值,感興趣的可以了解一下2023-08-08
CentOS系統(tǒng)下docker的安裝配置及使用介紹
這篇文章主要介紹了CentOS系統(tǒng)下docker的安裝配置及使用詳細(xì)介紹,需要的朋友可以參考下2016-10-10

