通过Docker Compose运行FSCrawler时遭遇NoSuchElementException异常求助
解决FSCrawler Docker Compose启动时的NoSuchElementException异常
问题概述
按FSCrawler 2.9官方Docker Compose流程部署,配置如下:
ELASTIC_VERSION = "7.17.8" FSCRAWLER_VERSION = "2.9" PWD = ""
Elasticsearch运行正常,但执行docker-compose up fscrawler时触发NoSuchElementException异常。
解决方案
以下是针对性的排查和修复步骤:
补全PWD环境变量:
空的PWD变量会导致容器无法映射本地待爬取目录,需将其设置为本地实际要爬取的文件夹绝对路径,例如:PWD = "/home/user/documents"同时确保该目录存在且具备读写权限,避免容器访问失败。
生成FSCrawler初始化配置:
首次启动前需先生成任务配置文件,执行以下命令初始化:docker-compose run --rm fscrawler your_job_id替换
your_job_id为自定义的任务名称,这会在容器内创建对应的配置文件,完成后再执行docker-compose up fscrawler启动服务。校验Elasticsearch连接配置:
确保docker-compose.yml中FSCrawler的ES连接地址正确,同一Docker网络下直接使用服务名访问:environment: - ELASTICSEARCH_URL=http://elasticsearch:9200避免使用
localhost(容器内的localhost指向自身,而非宿主机的ES)。检查容器网络连通性:
验证FSCrawler容器能否正常访问ES:docker-compose exec fscrawler curl http://elasticsearch:9200若返回ES节点信息则网络正常,否则检查Docker网络配置,确保两个服务处于同一网络。
清理缓存后重启:
如果之前的容器残留了异常缓存,执行以下命令清理后重新构建启动:docker-compose down -v docker-compose up --build fscrawler
内容的提问来源于stack exchange,提问作者Fried
相关产品推荐
相关产品推荐

