Запустить exce с использованием LibreOffice в PHP под Docker?

Запуск выполнения команды или приложения в docker-контейнере может быть достигнут с помощью различных способов, включая использование команды docker exec или вызов команды через PHP функции. Для запуска LibreOffice в PHP под Docker можно использовать следующий подход:

1. Необходимо создать Docker-контейнер с установленным LibreOffice. Есть несколько готовых образов Docker, содержащих LibreOffice, или вы можете создать свой собственный. Вот пример Dockerfile:

FROM ubuntu:latest

RUN apt update && apt install -y libreoffice

CMD ["/bin/bash"]

2. Соберите образ Docker, выполнив команду docker build -t my-libreoffice . в директории, содержащей Dockerfile.

3. Создайте контейнер на основе образа, выполнив команду docker run -d -p 8080:80 my-libreoffice. Здесь -d означает, что контейнер будет запущен в фоновом режиме, -p 8080:80 пробрасывает порт 80 контейнера на порт 8080 вашей машины.

4. Создайте PHP-скрипт, который будет выполнять команду LibreOffice внутри контейнера. Вот пример скрипта convert.php:

<?php
$file = '/path/to/your/file.docx';
$output = '/path/to/output/file.pdf';

$cmd = "libreoffice --headless --convert-to pdf --outdir " . $output . " " . $file;
exec("docker exec <container-id> " . $cmd);

Здесь container-id - это идентификатор (ID) вашего контейнера Docker. Вы можете найти его, выполнив команду docker ps.

5. Выполните скрипт, выполнив команду php convert.php из командной строки.

В результате выполнения скрипта должен быть создан файл file.pdf - это сконвертированная версия вашего исходного файла file.docx.

Данный подход позволяет запускать LibreOffice внутри Docker-контейнера с использованием PHP. Вы также можете настроить параметры команды libreoffice в зависимости от ваших требований (например, указать другой формат конвертации или другой каталог для сохранения выходного файла).