Flask 中的库 pdkfit 在 Docker 中不起作用

问题描述

我有一个用于创建 pdf 的代码,如下所示:

def create_report(download_uuid):
    transactions = get_transaction_for_report(download_uuid)
    html = render_template("report.html",transactions=transactions)
    config = pdfkit.configuration(wkhtmltopdf='/usr/bin/wkhtmltopdf')
    pdf = pdfkit.from_string(html,False,configuration=config)
    response = make_response(pdf)
    response.headers["Content-Type"] = "application/pdf"
    response.headers["Content-disposition"] = "inline; filename=report.pdf"
    return response

这是一个在 Swagger 中调用的操作来创建一个帖子,当一个帖子被执行时调用这个操作会返回一个 pdf 文档。现在,在我的本地计算机上它工作得很好。但是,当我将它放在 Docker 内的服务器中时,由于某种原因,当我调用此操作时,它会崩溃。我确实在 docker 中安装了 wkhtmltopdf,我用配置指向它,正如您在代码中看到的那样。当我调用此操作时,它会保持加载一段时间,然后 docker 日志会显示类似 [CRITICAL] WORKER TIMEOUT内容,然后一切都会重新启动。我也收到错误 502 代理错误。我曾尝试对 wkhtmltopdf 文件执行 chown 但我没有成功。对此的任何帮助将不胜感激。如果您需要更多信息,请告诉我。

编辑:Dockerfile:

FROM python:3.9-alpine

RUN adduser -D customuser

workdir /home/Project

copY requirements.txt requirements.txt
RUN python -m venv venv
RUN venv/bin/pip install --upgrade pip
RUN apk add make automake gcc g++ subversion python3-dev jpeg-dev zlib-dev libffi-dev musl-dev openssl-dev wkhtmltopdf xvfb
RUN venv/bin/pip install -r requirements.txt
RUN venv/bin/pip install gunicorn

copY ProjectFile ProjectFile
copY boot.sh app.py .env run.py create_database.py config.py ./
copY templates templates
copY static static
RUN chmod +x boot.sh

ENV FLASK_APP app.py

USER root
RUN chown -R customuser ./
RUN chown customuser /usr/bin/wkhtmltopdf
USER customuser

EXPOSE 9001
ENTRYPOINT ["./boot.sh"]

编辑:我几乎尝试了所有方法,但似乎没有任何效果。这实际上是我开始工作以完成我的项目所需的唯一事情。我尝试对 wkhtmltopdf 文件执行 chmod +x,我尝试安装字体库。但没什么。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)