@l4m3r

Почему добавление расширений к PHP такое ... сложное?

Вопросы новичка, но всё же. Вот типичный Dockerfile, который у меня получился:
FROM php:7.3-fpm-alpine
RUN apk add --no-cache --virtual .build-deps $PHPIZE_DEPS git \
            imagemagick \
            imagemagick-dev \
            freetype-dev \
            libjpeg-turbo-dev \
            libpng-dev \
    && pecl install xdebug imagick \
    && docker-php-ext-enable xdebug \
    && docker-php-ext-enable imagick \
    && docker-php-ext-install -j$(nproc) pdo_mysql intl json curl iconv \
    && docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ \
    && docker-php-ext-install -j$(nproc) gd \
    && apk del -f .build-deps \
    && ln -sf "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"


1. Получается, что чтобы поставить банальное расширение, надо заново качать ворох $PHPIZE_DEPS, которые уже были скачаны и удалены в базовом образе. Избыточность 100500, как по мне.

2. Есть ли какое-то адекватное описание того, как корректно добавлять каждое расширение в alpine?
Чтобы, например, было написано, что чтобы добавить gd, нужно поставить такие-то зависимости (libpng, libjpeg, ...) и сделать docker-php-ext-configure. Чтобы intl, нужно поставить libicu-dev. И т. д. Что xdebug надо pecl'ом добавлять. Ну и так по остальным основным модулям.

С таким гемором иногда хочется забить на alpine, сделать FROM ubuntu и apt install php-xdebug php-mysql php-gd ...
  • Вопрос задан
  • 4705 просмотров
Пригласить эксперта
Ответы на вопрос 3
Понимаю, что вопрос уже отрастил метровую бороду, но тем не менее, быть может кто-нибудь его случайно нагуглит и мои три копейки помогут:

Есть коммьюнити проект - скрипт для автоматической установки PHP расширений внутри Docker образов.
Сам скачивает зависимости, правильно конфигурирует расширения и подчищает ненужные после установки пакеты, вот:

https://github.com/mlocati/docker-php-extension-in...
Ответ написан
@HEKET313
Делал я как-то сборку на alpine, а потом выяснилось, что на alpine драйвера pdo для работы с mssql нет и не планируется. Пришлось переделать всё на привычную и всеми поддерживаемую ubuntu.
Ответ написан
Комментировать
SilenceOfWinter
@SilenceOfWinter Куратор тега PHP
та еще зажигалка...
это ты еще рубин с явой не видел, там бы тебя апоплексический удар хватил)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
YCLIENTS Москва
от 200 000 до 350 000 ₽
Ведисофт Екатеринбург
от 25 000 ₽
ИТЦ Аусферр Магнитогорск
от 100 000 до 160 000 ₽