微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Docker / Python / LibreOffice:[Java 框架] 函数 createSettingsDocument (elements.cxx) 中的错误 javaldx 失败

如何解决Docker / Python / LibreOffice:[Java 框架] 函数 createSettingsDocument (elements.cxx) 中的错误 javaldx 失败

我目前正在为以下错误寻找解决方案:

LibreOfficeError: [Java framework] Error in function createSettingsDocument (elements.cxx).
javaldx Failed!
Warning: Failed to read path from javaldx

我使用 Python/gunicorn 应用程序中的 subprocess.run 以无头模式启动 libreOffice,用于将 docx 转换为 pdf 文件

args = ['/usr/lib64/libreoffice/program/soffice','--headless','--convert-to','pdf','--outdir',pdfDocFolder,tmpDocName]
process = subprocess.run(args,stdout=subprocess.PIPE,stderr=subprocess.PIPE,timeout=timeout)

上面的错误消息是我在尝试开始转换时得到的。 我的应用程序在 docker 容器中运行。奇怪的是,当我使用 OpenShift 的 S2I 构建过程来构建和部署映像时,它以前运行得很好。现在,在放弃 S2I、在本地构建映像并将其部署在 OpenShift 上之后,我收到了该错误消息。我在其他上下文中发现了一些关于相同错误消息的讨论,指出必须使工作目录对非 root 用户可写并导出为 HOME。不幸的是,这并没有什么不同。我为所有用户设置了可写的工作目录。 HOME 设置为正确的目录。与本地 docker 构建相比,S2I 构建过程肯定存在一些差异,这在许可方面有所不同。 这是我用于在本地构建映像的两个 Dockerfile:

基础图片

FROM centos/python-36-centos7
EXPOSE 8080
USER root

RUN yum -y --disablerepo=\* --enablerepo=base,updates update && \
    yum -y install libreoffice && \
    yum -y install unoconv && \
    yum -y install cairo && \
    yum -y install cups-libs && \
    yum -y install java-1.8.0-openjdk && \
    yum clean all -y && \
    rm -rf /var/cache/yum
    
RUN chown 1001:0 /usr/bin/soffice && \
    chown 1001:0 /usr/share/fonts/local && \
    chown -R 1001:0 /usr/lib64/libreoffice && \
    fix-permissions /usr/lib64/libreoffice -P && \
    rpm-file-permissions
    
USER 1001

这是建立在基础镜像之上的 Dockerfile:

ARG REGISTRY_PATH=
ARG BRANCH_NAME=

FROM $REGISTRY_PATH:$BRANCH_NAME-latest
USER root

ENV APP_ROOT=/opt/app-root
ENV PATH=${APP_ROOT}/bin:${PATH} HOME=${APP_ROOT}/src
copY src ${APP_ROOT}/src
RUN pip install -r requirements.txt
RUN mkdir -p ${APP_ROOT}/.config/libreoffice/4/user && \
    chmod -R a+rwx ${APP_ROOT}/src && \
    chgrp -R 0 ${APP_ROOT}/src && \
    chmod -R g=u ${APP_ROOT}/src /etc/passwd

EXPOSE 8080

USER 1001
workdir ${APP_ROOT}/src

CMD ["gunicorn","wsgi","--bind","0.0.0.0:8080","--config","config.py"]

尝试一些提示或想法确实对我有帮助,因为我完全没有选择可以追求。

非常感谢。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。