我正在将使用pdf2image的应用程序部署到gcp应用程序引擎。当我想测试它时,出现错误:
pdf2image.exceptions.PDFInfoNotInstalledError:无法获取页数。 poppler是否已安装并且在PATH中?
我找到了这个post并将dockerfile添加到我的项目中,外观如下:
FROM gcr.io/google-appengine/python
# Create a virtualenv for dependencies. This isolates these packages from
# system-level packages.
# Use -p python3 or -p python3.7 to select python version. Default is version 2.
RUN apt-get install poppler-utils
RUN virtualenv -p python3.7 /env
# Setting these environment variables are the same as running
# source /env/bin/activate.
ENV VIRTUAL_ENV /env
ENV PATH /env/bin:$PATH
# Copy the application's requirements.txt and run pip to install all
# dependencies into the virtualenv.
ADD requirements.txt /app/requirements.txt
RUN pip install -r /app/requirements.txt
# Add the application source code.
ADD . /app
# Run a WSGI server to serve the application. gunicorn must be declared as
# a dependency in requirements.txt.
CMD gunicorn -b :$PORT main:app
我还更改了app.yaml文件:
runtime: custom
env: flex
现在,当我尝试部署应用程序时,我得到了:
第2/9步:运行apt-get install poppler-utils
--->在db1e5bebd0a8中运行
正在阅读包裹清单...
正在构建依赖树...
正在读取状态信息...
E:无法找到软件包poppler-utils
命令'/ bin / sh -c apt-get install poppler-utils'返回非零 代码:100
错误
错误:构建步骤0“ gcr.io/cloud-builders/docker”失败:退出状态100
我也尝试使用python-poppler而不是poppler-utils并得到相同的错误。
我找到了这个post about installing poppler,现在我想知道是否可以在dockerfile中做到这一点,我以前从未使用过docker,这是我的第一个dockerfile。
答案 0 :(得分:1)
在安装之前,您应该使用apt-get update
来获取软件包,否则软件包管理器将找不到并抛出此错误。
同样,安装软件包将需要您在提示符下输入Y/n
来确认安装,而在Dockerfile中将无法执行。为避免这种情况,请将标志-y
添加到apt-get install
命令。
将此更改添加到Dockerfile中将如下所示:
FROM gcr.io/google-appengine/python
RUN apt-get update
RUN apt-get install poppler-utils -y
RUN virtualenv -p python3.7 /env
# Rest of your build steps...