GeoNetwork 是一个开源的空间参考资源目录管理系统(FOSS),用于管理空间参考资源。它提供强大的元数据编辑、搜索功能以及交互式Web地图查看器。该项目始于2001年,最初作为联合国粮农组织(FAO)、世界粮食计划署(WFP)和联合国环境规划署(UNEP)的空间数据目录系统,目前被广泛用作全球空间数据基础设施(SDI)的基础。
GeoNetwork 基于自由开源软件(FOSS)原则和国际开放标准(如ISO/TC211、OGC)构建,旨在连接空间信息社区及其数据,具有功能强大且成本低廉的特点。
!logo
| 标签 | Dockerfile链接 |
|---|---|
3.12.12, 3.12, 3 | Dockerfile |
3.12.12-postgres, 3.12-postgres, 3-postgres | Dockerfile |
4.2.14, 4.2 | Dockerfile |
4.4.9, 4.4, 4, latest | Dockerfile |
GeoNetwork 4版本需要Elasticsearch服务器存储文档索引,必须配置Elasticsearch服务器URL才能运行。建议使用与GeoNetwork版本兼容的Elasticsearch版本,具体可参考对应版本的GeoNetwork文档或pom.xml文件中的es.version属性。
以下示例展示如何快速启动GeoNetwork 4.4(最新版)用于演示,此配置在容器删除后不会保留数据。
console# 拉取所需镜像 docker pull elasticsearch:7.17.15 docker pull amd64/geonetwork:4 # 创建网络 docker network create gn-network # 启动Elasticsearch docker run -d --name my-es-host --network gn-network -e "discovery.type=single-node" elasticsearch:7.17.15 # 启动GeoNetwork docker run --name geonetwork-host --network gn-network -e GN_CONFIG_PROPERTIES="-Des.host=my-es-host -Des.protocol=http -Des.port=9200 -Des.url=[***]" -p 8080:8080 amd64/geonetwork:4
对于GeoNetwork 4.2稳定版:
consoledocker pull elasticsearch:7.17.15 docker pull amd64/geonetwork:4.2 docker network create gn-network docker run -d --name my-es-host --network gn-network -e "discovery.type=single-node" elasticsearch:7.17.15 docker run --name geonetwork-host --network gn-network -e ES_HOST=my-es-host -e ES_PROTOCOL=http -e ES_PORT=9200 -p 8080:8080 amd64/geonetwork:4.2
安装后,默认用户名为admin,密码为admin。建议安装后立即更新默认密码。
自GeoNetwork 4.4.0起,通过GN_CONFIG_PROPERTIES环境变量传递Java属性配置Elasticsearch连接:
| 参数 | 说明 | 默认值 |
|---|---|---|
-Des.host | Elasticsearch服务器主机名 | localhost |
-Des.port | Elasticsearch端口 | 9200 |
-Des.protocol | 连接协议 | http |
-Des.url | Elasticsearch完整URL | http://localhost:9200(当主机、端口或协议非默认值时为必填) |
-Des.index.records | 索引名称(多实例时需不同) | gn_records |
-Des.username | 连接Elasticsearch的用户名 | 空 |
-Des.password | 连接Elasticsearch的密码 | 空 |
-Dkb.url | Kibana URL | http://localhost:5601 |
Docker Compose配置示例:
yamlservices: geonetwork: image: amd64/geonetwork:4.4 environment: GN_CONFIG_PROPERTIES: >- -Des.host=elasticsearch -Des.protocol=http -Des.port=9200 -Des.url=[***] -Des.username=my_es_username -Des.password=my_es_password -Dkb.url=[***]
4.2及更早版本使用环境变量配置Elasticsearch:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
ES_HOST | Elasticsearch服务器主机名(必填) | - |
ES_PORT | Elasticsearch端口 | 9200 |
ES_PROTOCOL | 连接协议 | http |
ES_INDEX_RECORDS | 索引名称 | gn_records |
ES_USERNAME | 连接用户名 | 空 |
ES_PASSWORD | 连接密码 | 空 |
KB_URL | Kibana URL | http://localhost:5601 |
默认情况下,GeoNetwork使用本地H2数据库(不推荐用于生产环境)。镜像包含PostgreSQL和MySQL的JDBC驱动,可通过以下环境变量配置数据库连接:
| 环境变量 | 说明 |
|---|---|
GEONETWORK_DB_TYPE | 数据库类型,有效值:postgres、postgres-postgis、mysql;扩展驱动后可支持db2、oracle、sqlserver等 |
GEONETWORK_DB_HOST | 数据库主机名 |
GEONETWORK_DB_PORT | 数据库端口 |
GEONETWORK_DB_NAME | 数据库名称 |
GEONETWORK_DB_USERNAME | 数据库用户名 |
GEONETWORK_DB_PASSWORD | 数据库密码 |
GEONETWORK_DB_CONNECTION_PROPERTIES | 连接字符串附加属性,如search_path=test,public&ssl=true |
数据目录用于存储自定义配置、上传文件、空间索引、缩略图等。默认H2数据库文件位置因版本而异:
/var/lib/jetty/gn.h2.db/usr/local/tomcat/gn.h2.db可通过环境变量覆盖默认值:
DATA_DIR:数据目录路径(默认/opt/geonetwork/WEB-INF/data)GEONETWORK_DB_NAME:H2数据库文件名(默认gn,从3.10.3版本开始支持)GeoNetwork 4.4.0及以上版本需通过GN_CONFIG_PROPERTIES配置数据目录:
consoledocker run --name some-geonetwork -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn amd64/geonetwork
为确保数据在容器重启后保留,需将数据目录挂载到主机:
consoledocker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/catalogue-data/data -e GEONETWORK_DB_NAME=/catalogue-data/db/gn -v /host/geonetwork-docker:/catalogue-data amd64/geonetwork:3
consoledocker run --name some-geonetwork -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn -v /host/geonetwork-docker:/catalogue-data amd64/geonetwork
GeoNetwork监听8080端口,需通过-p参数发布端口以从主机访问:
consoledocker run --name some-geonetwork -d -p 8080:8080 amd64/geonetwork
在Linux系统上,可通过http://localhost:8080/geonetwork访问GeoNetwork。
以下是使用docker compose部署GeoNetwork的完整示例:
yaml# GeoNetwork # 访问地址: "http://localhost:8080/geonetwork" # 默认用户: admin # 默认密码: admin volumes: geonetwork: esdata: pgdata: pglog: services: geonetwork: image: geonetwork:4.4 healthcheck: test: curl http://localhost:8080/ interval: 5s timeout: 5s retries: 30 restart: always volumes: - geonetwork:/catalogue-data depends_on: database: condition: service_healthy ports: - 8080:8080 environment: WEBAPP_CONTEXT_PATH: /geonetwork DATA_DIR: /catalogue-data TZ: Europe/Amsterdam JAVA_OPTS: >- --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true -Xms512M -Xss512M -Xmx2G -XX:+UseConcMarkSweepGC -Djetty.httpConfig.requestHeaderSize=32768 -Dorg.eclipse.jetty.server.Request.maxFormContentSize=500000 -Dorg.eclipse.jetty.server.Request.maxFormKeys=4000 # 远程调试配置 # -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 GN_CONFIG_PROPERTIES: >- -Dgeonetwork.dir=/catalogue-data -Dgeonetwork.formatter.dir=/catalogue-data/data/formatter -Dgeonetwork.schema.dir=/opt/geonetwork/WEB-INF/data/config/schema_plugins -Dgeonetwork.indexConfig.dir=/opt/geonetwork/WEB-INF/data/config/index -Dgeonetwork.schemapublication.dir=/opt/geonetwork/WEB-INF/data/resources/schemapublication -Dgeonetwork.htmlcache.dir=/opt/geonetwork/WEB-INF/data/resources/htmlcache -Des.host=elasticsearch -Des.protocol=http -Des.port=9200 -Des.url=[***] -Des.username= -Des.password= -Dgeonetwork.ESFeaturesProxy.targetUri=[***]{_} -Dgeonetwork.HttpDashboardProxy.targetUri=[***] GEONETWORK_DB_TYPE: postgres-postgis GEONETWORK_DB_HOST: database GEONETWORK_DB_PORT: 5432 GEONETWORK_DB_NAME: geonetwork GEONETWORK_DB_USERNAME: geonetwork GEONETWORK_DB_PASSWORD: geonetwork database: image: postgis/postgis:16-3.4 environment: POSTGRES_USER: geonetwork POSTGRES_PASSWORD: geonetwork POSTGRES_DB: geonetwork command: [postgres, -c, log_statement=all, -c, logging_collector=true, -c, log_file_mode=0644, -c, log_directory=/var/log/postgresql, -c, log_filename=postgresql.log] healthcheck: test: [CMD-SHELL, pg_isready -U postgres] interval: 5s timeout: 5s retries: 5 volumes: - pgdata:/var/lib/postgresql/data - pglog:/var/log/postgresql elasticsearch: image: elasticsearch:7.17.15 ports: - 9200:9200 ulimits: memlock: soft: -1 hard: -1 nofile: soft: 65536 hard: 65536 healthcheck: test: curl -s http://localhost:9200 >/dev/null || exit 1 interval: 10s timeout: 2s retries: 10 start_period: 2m environment: ES_JAVA_OPTS: -Xms1G -Xmx1G discovery.type: single-node volumes: - esdata:/usr/share/elasticsearch/data kibana: image: kibana:7.17.15 environment: SERVER_NAME: kibana ELASTICSEARCH_URL: [***] SERVER_BASEPATH: /geonetwork/dashboards SERVER_REWRITEBASEPATH: 'false' KIBANA_INDEX: .dashboards XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED: 'true' depends_on: elasticsearch: condition: service_healthy
启动命令:
consoledocker compose up
完全初始化后,通过http://localhost:8080/geonetwork访问服务。
geonetwork:<version>默认镜像,适合大多数使用场景。首次启动时会配置并创建H2数据库。如需要其他数据库引擎,可参考数据库配置部分。
geonetwork:postgres(仅GeoNetwork 3系列)此镜像支持使用PostgreSQL作为数据库引擎。容器启动时会创建数据库并由GeoNetwork初始化数据。注意:此镜像不包含PostgreSQL服务器本身,需连接外部PostgreSQL实例或容器。
需注入以下环境变量配置连接:
| 环境变量 | 说明 | 默认值 |
|---|---|---|
POSTGRES_DB_HOST | PostgreSQL主机名(必填) | - |
POSTGRES_DB_PORT | PostgreSQL端口 | 5432 |
POSTGRES_DB_NAME | 数据库名称(不存在时会尝试创建) | - |
POSTGRES_DB_USERNAME | PostgreSQL用户名(需有创建数据库权限) | - |
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429