@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 ...
  • Вопрос задан
  • 250 просмотров
Пригласить эксперта
Ответы на вопрос 3
OnYourLips
@OnYourLips
С таким гемором иногда хочется забить на alpine, сделать FROM ubuntu и apt install php-xdebug php-mysql php-gd
Если это лучше подходит под вашу задачу, то почему бы так и не сделать?
Если боитесь большого объема занимаемого места, то наследуйте все свои образы от одного базового, этот объем будет занят всего лишь один раз (несколько, в случае разных версий базового образа, но это уже потом).

Грубо говоря, если несете свой пакет в массы - используйте alpine, чтобы не напрягать пользователей. Если применяете внутри компании - то "FROM my-repo/ubuntu"
Ответ написан
@HEKET313
Делал я как-то сборку на alpine, а потом выяснилось, что на alpine драйвера pdo для работы с mssql нет и не планируется. Пришлось переделать всё на привычную и всеми поддерживаемую ubuntu.
Ответ написан
SilenceOfWinter
@SilenceOfWinter
та еще зажигалка...
это ты еще рубин с явой не видел, там бы тебя апоплексический удар хватил)
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы