Задать вопрос
@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 ...
  • Вопрос задан
  • 4941 просмотр
Подписаться 2 Простой Комментировать
Пригласить эксперта
Ответы на вопрос 3
Понимаю, что вопрос уже отрастил метровую бороду, но тем не менее, быть может кто-нибудь его случайно нагуглит и мои три копейки помогут:

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

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

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

Похожие вопросы