如何在Docker容器中安装java for tabula

jhkqcmku  于 2023-02-11  发布在  Java
关注(0)|答案(2)|浏览(162)

我找不到与我的问题相关的任何内容
我在Docker文件下面试过了

RUN apt-get update && apt-get install -y \
software-properties-common

RUN apt-get update && \
    apt-cache search openjdk && \
    apt-get install openjdk-8-jdk && \
    apt-get clean;

RUN apt-get update && \
    apt-get install ca-certificates-java && \
    apt-get clean && \
    update-ca-certificates -f;

ENV JAVA_HOME /usr/lib/jvm/java-8-openjdk-amd64/
RUN export JAVA_HOME  

#tabula.errors.JavaNotFoundError: `java` command is not found from this Python 
#process.Please ensure Java is installed and PATH is set for `java`

当我使用导入表格时,我得到了tabula.errors.javannotfounderror.can somebody please help what to do to get get the error in docker?
更新:
我使用 flask 和mongodb。在 flask 中有一个代码负责读取pdf文件,这是tabula,它需要Java,因为它在其错误中说。对于其他python包,我安装了pipfile和pipfile. lock

RUN pip install pipenv
COPY Pipfile .         #<---- contains tabula package
COPY Pipfile.lock .    #<---- contains tabula package
RUN PIPENV_VENV_IN_PROJECT=1 pipenv install --deploy 

##But i have no idea how to install java for tabula dependecy.

最终更新*

我用pdfplumber替换了tabula。现在工作良好,感谢所有试图帮助我的人。

kqlmhetl

kqlmhetl1#

一般来说,我们应该避免使用一个容器映像有多个主进程,比如python和java,我个人建议找到一个不需要java环境的tabula-py的替代品,因为这是使用here指定的容器时的最佳实践:
通常建议您通过对每个容器使用一个服务来区分关注的区域。
考虑到这一点,因为我不知道你是否能做这些事情,我也会提供一个替代方案。
this docker image将多个可运行的环境打包成一个,如java和python,它的docker文件列在here中,因为它包含了比你需要的更多的环境,你可以根据你的需要精简它。
也有this项目,虽然它没有更新一段时间或this文章描述了一个consise自制的python和java dockerfile

2q5ifsrm

2q5ifsrm2#

如果有人试图实现这一点,而不想切换到另一个库,这里有一个方法,使它与Tabula的工作。
顺便说一句,这里我使用的是Jupyter笔记本中的Tabula...但你只需要将Jupyter的图像更改为Python,就可以实现你想要的 flask 。
您的docker-compose将如下所示:

jupyter:
  container_name: jupyter_lab
  build: .
  ports: 
    - "8888:8888"
  environment: 
    - JUPYTER_ENABLE_LAB=yes
  volumes: 
    - ./work:/home/jovyan/work

这是您的Docker文件:

# Image base-notebook 
FROM jupyter/minimal-notebook #getting the basic one. 

# Change to root user to install java 8
USER root

# Install java 8
RUN apt-get update \
    && echo "Updated apt-get" \
    && apt-get install -y openjdk-8-jre \
    && echo "Installed openjdk 8"
  
# Install requirements
COPY requirements.txt ./
RUN pip3 install -r requirements.txt

RUN rm -rf requirements.txt

# Change to  "$NB_USER" command so the image runs as a non root user by default
USER $NB_UID

您的要求. txt

tabula.py

创建文件夹“work”(即将与容器同步的文件夹)。
现在打开终端并输入docker-compose up --build这个命令将构建并启动你的容器。完成这些步骤后,你应该准备好了。
使用笔记本中的以下代码行进行测试:

from tabula import read_pdf
pdf = read_pdf("path_to_your_pdf.pdf", pages='all')

相关问题