camptocamp/mapserverMapServer Docker 镜像是基于开源地理信息系统(GIS)服务器 MapServer 的容器化部署方案。该镜像旨在简化 MapServer 的安装、配置和运行流程,提供跨平台、隔离化的地图服务部署环境。主要用途包括地理空间数据发布、Web 地图服务(如 WMS/WFS/WCS)提供、地图可视化及空间数据分析等场景。
从 Docker Hub 或 GitHub Container Registry 拉取镜像(具体地址需参考官方文档):
bashdocker pull camptocamp/mapserver:latest
docker run)bashdocker run -d -p 80:80 --name mapserver camptocamp/mapserver:latest
-d:后台运行容器。-p 80:80:将容器内 80 端口映射到主机 80 端口(MapServer 默认 HTTP 端口)。--name mapserver:指定容器名称为 mapserver。启动后,访问 http://localhost 可验证服务是否正常(默认可能返回示例地图或服务列表)。
MapServer 的核心配置通过 MapFile 定义,需将本地配置文件和数据挂载到容器内。假设本地目录结构如下:
./mapserver/ ├── mapfiles/ # 存放 MapFile 文件(如 mymap.map) └── data/ # 存放地理数据(如 Shapefile、GeoTIFF)
运行命令:
bashdocker run -d \ -p 8080:80 \ --name mapserver \ -v $(pwd)/mapserver/mapfiles:/etc/mapserver/mapfiles \ -v $(pwd)/mapserver/data:/etc/mapserver/data \ camptocamp/mapserver:latest \ sh -c "mapserver -k 'REQUEST=GetCapabilities&SERVICE=WMS&VERSION=1.3.0' /etc/mapserver/mapfiles/mymap.map"
-v $(pwd)/mapserver/mapfiles:/etc/mapserver/mapfiles:挂载本地 MapFile 目录到容器内配置目录。-v $(pwd)/mapserver/data:/etc/mapserver/data:挂载本地数据目录到容器内数据目录。mymap.map)并验证 WMS 服务能力。docker-compose 配置示例创建 docker-compose.yml 文件,定义服务、卷挂载和端口映射:
yamlversion: '3.8' services: mapserver: image: camptocamp/mapserver:latest container_name: mapserver ports: - "8080:80" # 主机端口:容器端口 volumes: - ./mapserver/mapfiles:/etc/mapserver/mapfiles:ro # 只读挂载配置文件 - ./mapserver/data:/etc/mapserver/data:ro # 只读挂载数据文件 - ./mapserver/logs:/var/log/mapserver # 挂载日志目录(可选) restart: unless-stopped # 容器退出时自动重启(除非手动停止) environment: - TZ=Asia/Shanghai # 设置时区(可选) - LOG_LEVEL=INFO # 设置日志级别(可选,如 DEBUG/INFO/WARN/ERROR)
启动服务:
bashdocker-compose up -d
MapFile 是 MapServer 的核心配置文件,定义地图图层、数据源、投影、样式等。需将自定义 MapFile 挂载到容器内的 /etc/mapserver/mapfiles 目录,并通过启动命令或环境变量指定加载路径。
示例 MapFile(mymap.map)片段:
mapfileMAP NAME "MyMap" EXTENT -180 -90 180 90 # 全球范围 SIZE 800 600 PROJECTION "init=epsg:4326" # WGS84 坐标系 END LAYER NAME "Countries" TYPE POLYGON DATA "/etc/mapserver/data/countries.shp" # 容器内数据路径 CLASS STYLE COLOR 240 240 240 # 背景色 OUTLINECOLOR 0 0 0 # 边界色 END END END END
80:默认 HTTP 服务端口(用于提供 WMS/WFS 等 HTTP 服务)。| 环境变量 | 说明 | 默认值 |
|---|---|---|
TZ | 容器时区 | UTC |
LOG_LEVEL | 日志级别(DEBUG/INFO) | INFO |
MAPFILE_PATH | 默认加载的 MapFile 路径 | /etc/mapserver/mapfiles/default.map |
manifest unknown 错误
TLS 证书验证失败
DNS 解析超时
410 错误:版本过低
402 错误:流量耗尽
身份认证失败错误
429 限流错误
凭证保存错误
来自真实用户的反馈,见证轩辕镜像的优质服务