Как подключить 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.

Другие вопросы по тегам