#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"]
Некоторые советы или идеи, которые можно было бы опробовать, действительно помогли бы мне, так как у меня совершенно не осталось вариантов для продолжения.
Большое спасибо.