ERDDAP Docker镜像,包含实验性功能(下文所述的datasets.d)。
从v2.27.0版本开始,本镜像(axiom/docker-erddap)基于官方ERDDAP Docker镜像(erddap/erddap)构建。
如果您未使用axiom镜像提供的任何实验性功能(特别是datasets.d),建议使用官方ERDDAP Docker镜像。
更多详情请参见https://hub.docker.com/r/erddap/erddap%E3%80%82
最新版本:
axiom/docker-erddap:latestaxiom/docker-erddap:v2.28.1axiom/docker-erddap:v2.27.0axiom/docker-erddap:2.25.1-jdk21-openjdk查看所有可用版本https://hub.docker.com/r/axiom/docker-erddap/tags%E3%80%82%E5%8D%87%E7%BA%A7%E6%9C%8D%E5%8A%A1%E5%99%A8%E5%89%8D%EF%BC%8C%E8%AF%B7%E5%8A%A1%E5%BF%85%E6%9F%A5%E9%98%85ERDDAP%E5%8F%98%E6%9B%B4%E8%AE%B0%E5%BD%95%E6%96%87%E6%A1%A3%E3%80%82
使用任何latest-*镜像时需谨慎,它们跟踪上游镜像,未经过标记版本镜像那样彻底的测试。
重大变更仅针对本镜像添加的功能。升级前还请查阅https://erddap.github.io/changes%E3%80%82
ERDDAP_enableCors=true。bashdocker run -d -p 8080:8080 axiom/docker-erddap:latest-jdk21-openjdk
bashdocker run --rm -it \ -v $(pwd)/logs:/erddapData/logs \ --workdir /usr/local/tomcat/webapps/erddap/WEB-INF \ axiom/docker-erddap:latest \ bash GenerateDatasetsXml.sh -verbose
或者,生成基础数据集配置(无需输入,供后续自定义):
bash./make-dataset-xml.sh /path/to/your.csv EDDTableFromAsciiFiles > /path/to/your-dataset.xml
有关配置Tomcat的说明,请参见https://github.com/unidata/tomcat-docker%EF%BC%88%E6%9C%AC%E9%95%9C%E5%83%8F%E5%80%9F%E9%89%B4%E8%87%AA%E6%AD%A4Tomcat%E9%95%9C%E5%83%8F%EF%BC%89%E3%80%82
CORS默认关闭。如需启用,设置环境变量ERDDAP_enableCors=true。
可通过以下任一方式配置ERDDAP容器实例,以满足需求。
挂载自定义content/erddap目录:
bashdocker run \ -p 8080:8080 \ -v /path/to/your/erddap/directory:/usr/local/tomcat/content/erddap \ ... \ axiom/docker-erddap
自定义内容目录应包含setup.xml和dataset.xml文件。还可包含在自定义setup.xml中引用的CSS资源。
若只需修改setup.xml和dataset.xml,可单独挂载它们:
bashdocker run \ -p 8080:8080 \ -v /path/to/your/setup.xml:/usr/local/tomcat/content/erddap/setup.xml \ -v /path/to/your/datasets.xml:/usr/local/tomcat/content/erddap/datasets.xml \ ... \ axiom/docker-erddap
若挂载setup.xml文件,请确保设置<bigParentDirectory>/erddapData/</bigParentDirectory>
使用环境变量配置
从2.14版本开始,可通过环境变量配置ERDDAP的setup.xml。详情参见ERDDAP文档。这种方式无需挂载自定义setup.xml,非常实用。建议设置以下ERDDAP配置选项:
ERDDAP_baseUrlERDDAP_baseHttpsUrlERDDAP_flagKeyKeyERDDAP_emailEverythingToERDDAP_emailFromAddressERDDAP_emailUserNameERDDAP_emailPasswordERDDAP_emailSmtpHostERDDAP_emailSmtpPortERDDAP_adminInstitutionERDDAP_adminInstitutionUrlERDDAP_adminIndividualNameERDDAP_adminPositionERDDAP_adminPhoneERDDAP_adminAddressERDDAP_adminCityERDDAP_adminStateOrProvinceERDDAP_adminPostalCodeERDDAP_adminCountryERDDAP_adminEmail示例:
bashdocker run \ -p 8080:8080 \ -e ERDDAP_baseURL="http://localhost:8080" \ -e ERDDAP_adminEmail="set_via_container_env@example.com" \ axiom/docker-erddap
根据容器环境,可能会传入与资源相关的环境变量。若资源名称以ERDDAP开头,可能与ERDDAP_*配置变量冲突。
使用shell脚本配置
可挂载名为config.sh的文件至${CATALINA_HOME}/bin/config.sh,该文件可设置任何ERDDAP配置环境变量。容器提供的setenv.sh会 sourcing 此文件,并导出所有变量供ERDDAP使用。这些变量优先级高于运行容器时指定的环境变量。
bashdocker run \ -p 8080:8080 \ -e ERDDAP_adminEmail="overridden_by_config_file@example.com" \ -v /path/to/your/config.sh:/usr/local/tomcat/bin/config.sh \ ... \ axiom/docker-erddap
其中config.sh包含ERDDAP环境配置变量:
shERDDAP_adminEmail="this_is_used@example.com" ERDDAP_bigParentDirectory="/erddapData/" ERDDAP_baseUrl="http://localhost:8080" ERDDAP_baseHttpsUrl="https://localhost:8443" ERDDAP_flagKeyKey="73976bb0-9cd4-11e3-a5e2-0800200c9a66" ERDDAP_emailEverythingTo="nobody@example.com" ERDDAP_emailDailyReportTo="nobody@example.com" ERDDAP_emailFromAddress="nothing@example.com" ERDDAP_emailUserName="" ERDDAP_emailPassword="" ERDDAP_emailProperties="" ERDDAP_emailSmtpHost="" ERDDAP_emailSmtpPort="" ERDDAP_adminInstitution="Axiom Docker Install" ERDDAP_adminInstitutionUrl="https://github.com/axiom-data-science/docker-erddap" ERDDAP_adminIndividualName="Axiom Docker Install" ERDDAP_adminPosition="Software Engineer" ERDDAP_adminPhone="555-555-5555" ERDDAP_adminAddress="123 Irrelevant St." ERDDAP_adminCity="Nowhere" ERDDAP_adminStateOrProvince="AK" ERDDAP_adminPostalCode="99504" ERDDAP_adminCountry="USA"
挂载自定义bigParentDirectory:
bashdocker run \ -p 8080:8080 \ -v /path/to/your/erddap/bigParentDirectory:/erddapData \ ... \ axiom/docker-erddap
强烈建议此操作,否则容器重启后日志、缓存等数据将丢失。
指定堆内存分配(使用Java的Xms和Xmx):
bashdocker run \ -p 8080:8080 \ --env ERDDAP_MEMORY=10G \ ... \ axiom/docker-erddap
也可显式设置ERDDAP_MIN_MEMORY和ERDDAP_MAX_MEMORY(分别对应Xms和Xmx),但最佳实践是将两者设为相同值,避免运行时堆调整的性能开销。
bashdocker run \ -p 8080:8080 \ --env ERDDAP_MIN_MEMORY=8G --env ERDDAP_MAX_MEMORY=8G \ ... \ axiom/docker-erddap
或者,设置ERDDAP_MAX_RAM_PERCENTAGE将Java堆大小限制为容器可用内存的百分比(设置JVM选项-XX:MaxRAMPercentage)。例如,限制容器内存为10GB,允许Java堆使用其中90%:
bashdocker run \ -p 8080:8080 \ --memory 10g \ --env ERDDAP_MAX_RAM_PERCENTAGE=90 \ ... \ axiom/docker-erddap
datasets.d模式 - 实验性
通常ERDDAP通过单个datasets.xml配置文件描述所有数据集及全局配置,详见官方ERDDAP文档。
docker-erddap提供datasets.d模式,可将datasets.xml的dataset元素存储在datasets.d目录下的多个.xml文件中。启动时,会扫描/datasets.d目录中所有以.xml结尾的文件,按路径排序后拼接为生成的datasets.xml文件(包含空的<erddapDatasets />元素)。
此模式下,datasets.xml的顶层元素(如<cacheMinutes>、<standardLicense>等)可通过ERDDAP_DATASET_*环境变量配置,与ERDDAP_*环境变量影响setup.xml的方式类似(详见ERDDAP文档)。例如,设置standardLicense:
bashdocker run -d -v $(pwd)/datasets.d:/datasets.d:ro \ -e ERDDAP_DATASETS_standardLicense="<h1>Use as you wish</h1>" \ --name erddap \ axiom/docker-erddap
注意:此模式下,ERDDAP内容目录(/usr/local/tomcat/content/erddap)中的datasets.xml会被生成的文件替换。若原datasets.xml存在且无备份,会创建备份。
因此,使用datasets.d模式时无需挂载ERDDAP内容目录,数据集配置由datasets.d提供,顶层datasets.xml配置通过ERDDAP_DATASETS_*环境变量完成。
datasets.d模式运行示例,参见examples中的docker-compose配置。
datasets.xml的生成由脚本datasets.d.sh处理,可输出到stdout,支持容器外测试:
shellERDDAP_DATASETS_cacheMinutes=20 ./datasets.d.sh -d examples/datasets.d
从v2.27.0版本开始,生成的datasets.xml文件中的环境变量会通过envsubst替换。
datasets.d模式下优雅移除数据集
ERDDAP有特定流程移除已服务的数据集:
datasets.xml元素,设置active属性为false。datasets.xml元素(或保留active="false")。若未遵循此流程,会导致ERDDAP配置中出现“孤立”数据集。
要使datasets.d模式自动检测已移除的数据集(运行中的ERDDAP配置包含但新生成的datasets.xml中不存在的数据集ID),可设置环境变量DATASETSD_MARK_REMOVED_DATASETS_INACTIVE=1,或手动运行./datasets.d.sh时传递-i标志。此行为未来可能成为默认。
初始化脚本(/init.d)- 实验性
可在/init.d目录中放置可执行文件或shell脚本,容器启动时会运行这些脚本(必须是幂等的)。功能类似postgres Docker镜像的https://github.com/docker-library/docs/blob/master/postgres/README.md#initialization-scripts%E3%80%82
示例:
shell# 从范围请求排除中移除.hdf和.nc文件 mkdir -p init.d cat << 'EOF' > init.d/10-remove-hdf-nc-range-request-exclusion.sh sed -i 's/.hdf, .nc, //g' ${CATALINA_HOME}/webapps/erddap/WEB-INF/classes/gov/noaa/pfel/erddap/util/messages.xml EOF chmod +x init.d/10-remove-hdf-nc-range-request-exclusion.sh docker run -d -p 8080:8080 -v $(pwd)/init.d:/init.d:ro --name erddap axiom/docker-erddap
日志整合 - 实验性
ERDDAP将日志写入bigParentDirectory下的logs/log.txt,格式不标准且不易解析,也无时间戳。使用此docker镜像时,可运行rsyslog sidecar容器增强日志体验:
stdout。rsyslog sidecar容器运行示例,参见examples中的docker-compose配置。相关rsyslog配置文件位于rsyslog。需将ERDDAP的bigParentDirectory和Tomcat日志目录通过bind mount挂载到主机,或使用Docker命名卷挂载到ERDDAP和rsyslog容器。
整合日志示例:
logerddap-rsyslogd_1 | [TOMCAT] 08-Jul-2022T04:44:14.004 INFO [main] org.apache.coyote.AbstractProtocol.start Starting ProtocolHandler ["http-nio-8080"] erddap-rsyslogd_1 | [TOMCAT] 08-Jul-2022T04:44:14.011 INFO [main] org.apache.catalina.startup.Catalina.start Server startup in 3582 ms ... erddap-rsyslogd_1 | [ERDDAP] 2022-07-08T04:44:19Z Major LoadDatasets Time Series: MLD Datasets Loaded Requests (median times in ms) Number of Threads MB Open erddap-rsyslogd_1 | timestamp time nTry nFail nTotal nSuccess (median) nFail (median) memFail tooMany tomWait inotify other inUse Files erddap-rsyslogd_1 | ---------------------------- ----- ----------------- ------------------------------------------------ --------------------- ----- ----- erddap-rsyslogd_1 | 2022-07-08T04:44:18+00:00 1s 1 0 2 1 ( 8) 0 ( 0) 0 0 10 1 17 44 0% ... erddap-rsyslogd_1 | [ACCESS] 127.0.0.1 - - [08/Jul/202
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务