Docker容器化部署已成为GIS服务的标准实践。本文分享从开发到生产的完整Docker部署方案。
一、Docker Compose编排
version: "3.8"
services:
postgis:
image: postgis/postgis:15-3.4
environment:
POSTGRES_DB: gisdb
POSTGRES_PASSWORD: secret
volumes:
- pgdata:/var/lib/postgresql/data
ports:
- "5432:5432"
geoserver:
image: kartoza/geoserver:2.24
environment:
GEOSERVER_ADMIN_PASSWORD: geoserver
volumes:
- gsdata:/opt/geoserver/data_dir
ports:
- "8080:8080"
depends_on:
- postgis
nginx:
image: nginx:alpine
volumes:
- ./nginx.conf:/etc/nginx/nginx.conf
- ./dist:/usr/share/nginx/html
ports:
- "80:80"
depends_on:
- geoserver
volumes:
pgdata:
gsdata:
二、数据初始化
使用init脚本在容器启动时自动导入空间数据和发布服务:
# init-db.sql
CREATE EXTENSION IF NOT EXISTS postgis;
\i /docker-entrypoint-initdb.d/schema.sql
\i /docker-entrypoint-initdb.d/data.sql
三、生产环境优化
- 使用非root用户运行服务
- 配置健康检查与自动重启
- 设置资源限制(CPU/内存)
- 使用命名卷持久化数据
- 配置日志收集与监控
Docker让GIS服务的部署和管理变得标准化、可复制,是现代化GIS运维的基础。