Использование библиотеки pdfkit/wkhtmltopdf внутри контейнера Docker для приложения Flask ⇐ Python
Использование библиотеки pdfkit/wkhtmltopdf внутри контейнера Docker для приложения Flask
Я создаю приложение Flask, которое использует библиотеку PDFkit для создания PDF-файла из строки HTML. При локальном запуске кода он работает нормально, однако когда я пытаюсь запустить его внутри контейнера Docker, возникает эта ошибка:
Ошибка ОС: исполняемый файл wkhtmltopdf не найден: «C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe»
Функция, используемая для создания PDF-файла, приведена ниже:
defgenerate_pdf_schedule(расписания): html_string = Schedule_to_html_string (расписания) config = pdfkit.configuration(wkhtmltopdf='C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe') pdf = pdfkit.from_string(html_string, Configuration=config) вернуть PDF Внутри этой функции html_string необходимо преобразовать в PDF-файл, при запуске генерируется вышеупомянутая ошибка.
Мой файл Dockerfile выглядит так:
ИЗ Python: последний ENV PYTHONНЕБУФЕРИРОВАННЫЙ 1 ENV PYTHONDONTWRITEBYTECODE 1 КОПИРОВАТЬ требования.txt ЗАПУСТИТЬ pip install -r требования.txt РАБОЧИЙ ПАРАМЕТР/приложение Я использую docker-compose.yml, поскольку у меня одновременно работает несколько контейнеров, мой файл docker-compose.yml:
услуги: редис: изображение: редис порты: - '6379:6379' сеть: строить: контекст: . среда: FLASK_APP: приложение ФЛАСК_ДЕБУГ: 1 объемы: - .:/приложение команда: запуск колбы -h 0.0.0.0 порты: - 5000:5000 сельдерей: строить: контекст: . среда: FLASK_APP: приложение объемы: - .:/приложение команда: celery -A app.celery worker --loglevel=info зависит от: - переделать Я новичок в Docker и программировании в целом, поэтому не смог разобраться в этом самостоятельно. Я попробовал несколько ответов на вопросы, похожие на этот. Самая большая проблема, похоже, заключается в корректировке ответов таким образом, чтобы они соответствовали моему проекту.
Некоторые вещи, которые я нашел в других вопросах, которые пробовал: Добавляем это в мой Dockerfile
# https://stackoverflow.com/a/62737156/152016 # Создаём образ на основе официального образа openjdk 8-jre-alpine из dockerhub ИЗ openjdk:8-jre-alpine # Установите wkhtmltopdf # https://stackoverflow.com/a/56925361/152016 ЗАПУСТИТЬ apk добавить --no-cache wkhtmltopdf ttf-dejavu ТОЧКА ВХОДА ["ш"] А это в моем файле docker-compose.yml:
версия: '3.8' услуги: wkhtmltopdf: изображение: wkhtmltopdf имя_контейнера: wkhtmltopdf строить: файл докеров: файл докеров контекст: . Однако, похоже, это не сработает, если я вытащу оба
ИЗ Python: последняя версия ИЗ openjdk:8-jre-alpine
Это приводит к тому, что либо pip не найден, либо apk не найден.
Как интегрировать pdfkit/wkhtmltopdf в мой проект?
Я создаю приложение Flask, которое использует библиотеку PDFkit для создания PDF-файла из строки HTML. При локальном запуске кода он работает нормально, однако когда я пытаюсь запустить его внутри контейнера Docker, возникает эта ошибка:
Ошибка ОС: исполняемый файл wkhtmltopdf не найден: «C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe»
Функция, используемая для создания PDF-файла, приведена ниже:
defgenerate_pdf_schedule(расписания): html_string = Schedule_to_html_string (расписания) config = pdfkit.configuration(wkhtmltopdf='C:/Program Files/wkhtmltopdf/bin/wkhtmltopdf.exe') pdf = pdfkit.from_string(html_string, Configuration=config) вернуть PDF Внутри этой функции html_string необходимо преобразовать в PDF-файл, при запуске генерируется вышеупомянутая ошибка.
Мой файл Dockerfile выглядит так:
ИЗ Python: последний ENV PYTHONНЕБУФЕРИРОВАННЫЙ 1 ENV PYTHONDONTWRITEBYTECODE 1 КОПИРОВАТЬ требования.txt ЗАПУСТИТЬ pip install -r требования.txt РАБОЧИЙ ПАРАМЕТР/приложение Я использую docker-compose.yml, поскольку у меня одновременно работает несколько контейнеров, мой файл docker-compose.yml:
услуги: редис: изображение: редис порты: - '6379:6379' сеть: строить: контекст: . среда: FLASK_APP: приложение ФЛАСК_ДЕБУГ: 1 объемы: - .:/приложение команда: запуск колбы -h 0.0.0.0 порты: - 5000:5000 сельдерей: строить: контекст: . среда: FLASK_APP: приложение объемы: - .:/приложение команда: celery -A app.celery worker --loglevel=info зависит от: - переделать Я новичок в Docker и программировании в целом, поэтому не смог разобраться в этом самостоятельно. Я попробовал несколько ответов на вопросы, похожие на этот. Самая большая проблема, похоже, заключается в корректировке ответов таким образом, чтобы они соответствовали моему проекту.
Некоторые вещи, которые я нашел в других вопросах, которые пробовал: Добавляем это в мой Dockerfile
# https://stackoverflow.com/a/62737156/152016 # Создаём образ на основе официального образа openjdk 8-jre-alpine из dockerhub ИЗ openjdk:8-jre-alpine # Установите wkhtmltopdf # https://stackoverflow.com/a/56925361/152016 ЗАПУСТИТЬ apk добавить --no-cache wkhtmltopdf ttf-dejavu ТОЧКА ВХОДА ["ш"] А это в моем файле docker-compose.yml:
версия: '3.8' услуги: wkhtmltopdf: изображение: wkhtmltopdf имя_контейнера: wkhtmltopdf строить: файл докеров: файл докеров контекст: . Однако, похоже, это не сработает, если я вытащу оба
ИЗ Python: последняя версия ИЗ openjdk:8-jre-alpine
Это приводит к тому, что либо pip не найден, либо apk не найден.
Как интегрировать pdfkit/wkhtmltopdf в мой проект?
-
- Похожие темы
- Ответы
- Просмотры
- Последнее сообщение
-
-
Преобразовать HTML в PDF с использованием WKHTMLTOPDF, Docker в ASP.NET Core
Anonymous » » в форуме C# - 0 Ответы
- 7 Просмотры
-
Последнее сообщение Anonymous
-