Вопросы новичка, но всё же. Вот типичный 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 ...