Docker / Python / LibreOffice: Ошибка [Java framework] в функции createSettingsDocument (elements.cxx). javaldx потерпел неудачу

#python #docker #libreoffice

Вопрос:

В настоящее время я довольно сильно застрял в поиске решения для следующей ошибки:

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

Я запускаю LibreOffice в безголовом режиме с помощью подпроцесса.запуск из приложения Python / gunicorn для преобразования 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. Странно то, что раньше это работало довольно хорошо, когда я использовал процесс сборки S2I OpenShift для создания и развертывания образа. Теперь, после отказа от S2I, локального создания образа и его развертывания на OpenShift, я получаю это сообщение об ошибке. Я нашел несколько обсуждений того же самого сообщения об ошибке в других контекстах, в котором говорилось, что рабочий каталог должен быть доступен для записи для пользователей, не являющихся пользователями root, и экспортирован как ДОМАШНИЙ. К сожалению, это не имело значения. Я сделал рабочий каталог доступным для записи для всех пользователей. ГЛАВНАЯ страница установлена в правильный каталог. В процессе сборки S2I должна быть какая-то разница по сравнению с локальной сборкой докера, что имеет значение с точки зрения разрешений.
Это два файла Dockerfile, которые я использую для локального создания образа:

Базовое изображение:

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

RUN yum -y --disablerepo=* --enablerepo=base,updates update amp;amp; 
    yum -y install libreoffice amp;amp; 
    yum -y install unoconv amp;amp; 
    yum -y install cairo amp;amp; 
    yum -y install cups-libs amp;amp; 
    yum -y install java-1.8.0-openjdk amp;amp; 
    yum clean all -y amp;amp; 
    rm -rf /var/cache/yum
    
RUN chown 1001:0 /usr/bin/soffice amp;amp; 
    chown 1001:0 /usr/share/fonts/local amp;amp; 
    chown -R 1001:0 /usr/lib64/libreoffice amp;amp; 
    fix-permissions /usr/lib64/libreoffice -P amp;amp; 
    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 amp;amp; 
    chmod -R a rwx ${APP_ROOT}/src amp;amp; 
    chgrp -R 0 ${APP_ROOT}/src amp;amp; 
    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"]
 

Некоторые советы или идеи, которые можно было бы опробовать, действительно помогли бы мне, так как у меня совершенно не осталось вариантов для продолжения.

Большое спасибо.