GIS开发 | 空间分析 | 软硬件技术

Docker部署GIS服务:从开发到生产的完整方案

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运维的基础。