首页 > 解决方案 > 带有 Docker 的 Tika 解析器 python 给出 RuntimeError:详细信息:无法启动 Tika 服务器

问题描述

如果没有 Docker,脚本能够使用 tika 解析 pdf 文件。

但是,当我尝试使用 Docker 时,我收到以下错误,因为 tika 服务器未运行:通过一些阅读,我尝试了以下操作 - 但错误仍然存​​在。

有人可以帮忙吗?

我最后附上 Dockerfile 并列出正在运行的 docker 容器 -

  1. 码头工人拉阿帕奇/蒂卡
  2. docker run -d -p 9998:9998 apache/tika
  3. cat Dockerfile(最后列出)
  4. docker build -t docker_parser 。
  5. docker 运行 docker_parser

  6. 码头工人ps -a


    CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS                    NAMES

    8ff9fd3d0a84        docker_parser       "python ./scripts/..."   2 days ago          Exited (0) 4 minutes ago                            adoring_mestorf

    fdf132926c61        apache/tika         "/bin/sh -c 'java ..."   2 days ago          Up 6 minutes               0.0.0.0:9998->9998/tcp   optimistic_ride
  1. Dockerfile:

    FROM python:3

    RUN pip3 install --upgrade pip requests
    RUN pip3 install python-docx tika numpy pandas

    RUN mkdir scripts
    RUN mkdir pdfs
    RUN mkdir output

    ADD runner.py /scripts/
    ADD header_parser.py /scripts/
    ADD keyword_parser.py /scripts/

    ADD *.pdf /pdfs/

    CMD [ "python", "./scripts/runner.py" ]

8. 代码错误:sentence_parser 哎呀!错误类型:发生。详细信息:无法启动 Tika 服务器。错误类型:在行:156

标签: pythondockerapache-tikatika-server

解决方案


看起来您没有指定容器之间的链接,因此 tika-python 无法连接到端口 9998。您可以在 docker_parser 容器中添加 Java 并让它托管 Tika Server,否则您需要链接容器。

如果您想使用这两个镜像,您可以在运行时使用 Docker CLI 上的 --link 选项,或者构建一个网络(docker network create)并将两个容器连接在一起(docker network connect)。我通常使用docker-compose来简化这些事情并在那里指定链接。


推荐阅读