Как подключить FSCrawler REST к docker-compose
Я успешно проиндексировал PDF-файл с помощью FSCrawler, но я не могу подключиться к REST-клиенту для FSCrawler, чтобы создать конвейер для elasticsearch. Это моя команда в docker-compose:
command: fscrawler fscrawler_rest
Я могу запросить elasticsearch с индексом моего имени задания FSCrawler и получить результаты. Затем, когда я добавлю--rest
флаг моей команды docker-compose, я успешно запускаю клиент REST (хотя и с предупреждением, которого я не понимаю):
WARN [o.g.j.i.i.Providers] A provider fr.pilato.elasticsearch.crawler.fs.rest.UploadApi registered in SERVER runtime does not implement any provider interfaces applicable in the SERVER runtime.
Due to constraint configuration problems the provider fr.pilato.elasticsearch.crawler.fs.rest.UploadApi will be ignored.
INFO [f.p.e.c.f.r.RestServer] FS crawler Rest service started on [http://127.0.0.1:8080/fscrawler]
Тогда, когда я попробую curl
с косой чертой в конце или без: curl -XGET "127.0.0.1:8080/fscrawler/"
я получил curl: (7) Failed to connect to 127.0.0.1 port 8080: Connection refused
новая команда docker-compose для справки:
command: fscrawler fscrawler_rest --loop 0 --rest debug
Кажется, я не могу его отлаживать, поскольку docker-compose не разрешает команды CLI во время работы контейнеров, но я не понимаю, почему я все еще могу достичь своего индекса задания в elasticsearch с http://localhost:9200/fscrawler_rest
.
FSCrawler работает с elasticsearch, но служба REST, похоже, не работает. Кому-нибудь удалось успешно использовать FSCrawler REST API?
РЕДАКТИРОВАТЬ:
version: '3.6'
services:
postgres:
image: "postgres:12.1"
env_file:
- '.env'
ports:
- '127.0.0.1:5432:5432'
restart: "${DOCKER_RESTART_POLICY:-unless-stopped}"
stop_grace_period: "${DOCKER_STOP_GRACE_PERIOD:-3s}"
volumes:
- postgres:/var/lib/postgresql/data
networks:
- esnet
elasticsearch:
image: docker.elastic.co/elasticsearch/elasticsearch:7.8.0
# build: ./es
container_name: elasticsearch
env_file:
- ".env"
depends_on:
- "postgres"
volumes:
- esdata:/usr/share/elasticsearch/data
environment:
- node.name=elasticsearch
- bootstrap.memory_lock=true
- "ES_JAVA_OPTS=-Xms512m -Xmx512m"
- discovery.type=single-node
- network.host=0.0.0.0
- network.publish_host=0.0.0.0
- http.cors.enabled=true
- http.cors.allow-origin=*
- http.host=0.0.0.0
- transport.host=0.0.0.0
ulimits:
memlock:
soft: -1
hard: -1
ports:
- 9200:9200
- 9300:9300
networks:
- esnet
fscrawler:
# I have taken this docker image and updated to 2.7 snapshot: toto1310/fscrawler
build:
context: ${PWD}
dockerfile: Dockerfile-toto
container_name: fscrawler
depends_on:
- elasticsearch
restart: always
volumes:
- ${PWD}/config:/root/.fscrawler
- ${PWD}/data:/tmp/es
networks:
- esnet
environment:
- FS_URL=/tmp/es
- ELASTICSEARCH_URL=http://elasticsearch:9200
- ELASTICSEARCH_INDEX=fscrawler_rest
command: fscrawler fscrawler_rest --loop 0 --rest debug
volumes:
postgres:
esdata:
driver: local
networks:
esnet:
1 ответ
Добавление портов в fscrawler
ports:
- 8080:8080
дает пустой ответ, если вы не измените settings.yaml
остальной URL:
rest:
url: “http://fscrawler:8080”
Чтобы добраться до контейнера докеров с именем fscrawler
.