Docker-compose автоматическая установка для wkhtmltopdf

Я работаю над проектом symfony с докером, и для того, чтобы иметь возможность создавать файлы PDF в проекте, мне нужно было установить SnappyBundle https://github.com/KnpLabs/KnpSnappyBundle. Для создания файлов pdf также необходимо установить wkhtmltopdf.

Вот что я сделал: Я подключился к своему контейнеру приложения как root docker exec -u root -t -i container_id /bin/bash

затем я установил два пакета

apt-get update
apt-get install wkhtmltopdf
apt-get install xvfb

Затем я изменил свой файл config.yml для выполнения wkhtmltopdf с xvfb

Таким образом, это работает, но есть ли способ просто автоматизировать установку этих пакетов с помощью моего docker-compose?

version: '2'

networks:
    community:
        external: true

services:

    app:
        build: docker/php72
        working_dir: /var/www/app
        networks:
            community:
                aliases:
                    - app
            default:
                aliases:
                    - app.myapp
        volumes:
            - .:/var/www/app
            - ~/.composer:/var/www/.composer
        dns:
            - X.X.X.X
            - X.X.X.X
            - X.X.X.X
            - X.X.X.X
    web:
        image: nginx:1-alpine
        working_dir: /var/www/app
        networks:
            myapp:
                aliases:
                    - app
            default:
                aliases:
                    - app.myapp
        volumes:
            - ./docker/nginx/app.conf:/etc/nginx/conf.d/default.conf:ro
            - .:/var/www/app
            - ./var/logs/nginx/:/var/log/nginx
        expose:
            - 80
        depends_on:
            - app
        dns:
            - X.X.X.X
            - X.X.X.X
            - X.X.X.X
            - X.X.X.X

    mysql:
        image: mysql:5.7
        environment:
            MYSQL_ROOT_PASSWORD: XXXX
            MYSQL_USER: XXXX
            MYSQL_PASSWORD: XXXX
            MYSQL_DATABASE: XXXX
        ports:
            - "3306:3306"
        networks:
            community:
                aliases:
                    - bdd
            default:
                aliases:
                    - bdd.myapp
        dns:
            - X.X.X.X
            - X.X.X.X
            - X.X.X.X
            - X.X.X.X

Мой docker-compose выглядит так (я скрыл некоторую информацию)

Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Symfony Station Communiqué - 17 февраля 2023 г
Symfony Station Communiqué - 17 февраля 2023 г
Это коммюнике первоначально появилось на Symfony Station , вашем источнике передовых новостей Symfony, PHP и кибербезопасности.
Управление ответами api для исключений на Symfony с помощью KernelEvents
Управление ответами api для исключений на Symfony с помощью KernelEvents
Много раз при создании api нам нужно возвращать клиентам разные ответы в зависимости от возникшего исключения.
0
0
3 437
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Создайте файл с именем Dockerfile в том же месте, что и docker-compose.yml.

Это должно быть содержимое вашего файла докеров:

FROM docker/php72

RUN apt-get update && apt-get install -y wkhtmltopdf xvfb

затем измените службу приложения для создания докеров на:

app:
    build: .

затем запустите docker-compose build, вы создадите новый образ докера с нужными вам зависимостями и запустите приложение оттуда.

Также небольшой совет: docker-compose exec service_name bash - это то же самое, что и docker exec -t -i container_id /bin/bash.

Удивительный. Спасибо

Thomas Fournet 22.10.2018 16:34

Спасибо, у меня это работает, но, есть ли более элегантный способ, это установит много неиспользуемой библиотеки .. :(

Budi Mulyo 06.03.2019 08:29

Другие вопросы по теме