Сборка PHP 7.4 docker образа

Сборка docker образа PHP 7.4 с php-fpm, PostgreSQL и базовым набором расширений

UPD: добавил пример Dockerfile из реального проекта

Не так давно вышел релиз PHP версии 7.4 (28 ноября 2019г.). Понадобилось собрать docker image с базовыми расширениями и поддержкой СУБД PostgreSQL. Изначально хотел включить поддержку нескольких СУБД: PostgreSQL, MySQL и Sqlite, чтобы образ получился более универсальным, но при сборке постоянно вылетала ошибка phpizie. В итоге пришлось оставить только поддержку PostgreSQL.

Пример Dockerfile:

FROM php:7.4-fpm

RUN apt-get update \
  && apt-get install -y \
             vim \
             libfreetype6-dev \
             libjpeg62-turbo-dev \
             libmcrypt-dev \
             libpng-dev \
             zlib1g-dev \
             libxml2-dev \
             libzip-dev \
             libonig-dev \
             graphviz \
             libcurl4-openssl-dev \
             pkg-config \
             libpq-dev

RUN docker-php-ext-install pgsql \
  && docker-php-ext-install pdo_pgsql \
  && docker-php-ext-install intl \
  && docker-php-ext-install zip \
  && docker-php-ext-install exif \
  && docker-php-ext-install opcache \
  && docker-php-source delete

RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
  && docker-php-ext-install -j$(nproc) gd \
  && docker-php-source delete
    
# изменение UID пользователя `www-data`, (если нужно)
# RUN usermod -u 33 www-data
Собрать контейнер с поддержкой сразу нескольких СУБД у меня не получилось, так как при сборке выпадает ошибка phpizie. Сборка проходит успешно только при установке расширений для одной СУБД: PostgreSQL, MySQL или Sqlite3

Для сборки необходимо создать Dockerfile и выполнить команду типа: docker build -t vendor/php7.4-fpm:0.1.0 -t vendor/php7.4:latest .

Пример из реального проекта:

FROM php:7.4-fpm

RUN apt-get update \
  && apt-get install -y \
     apt-utils \
     vim \
     man \
     curl \
     pkg-config \
     icu-devtools \
     libicu-dev \
     libcurl4 \
     libcurl4-gnutls-dev \
     libfreetype6-dev \
     libjpeg62-turbo-dev \
     libpng-dev \
     libbz2-dev \
     libssl-dev \
     libgmp-dev \
     libtidy-dev \
     libxml2-dev \
     libxslt1-dev \
     libzip-dev \
     libonig-dev \
  &&  ln -s /usr/include/x86_64-linux-gnu/gmp.h /usr/include/gmp.h

RUN docker-php-ext-install mysqli \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install intl \
    && docker-php-ext-install zip \
    && docker-php-ext-install bz2 \
    && docker-php-ext-install calendar \
    && docker-php-ext-install bcmath \
    && docker-php-ext-install exif \
    && docker-php-ext-install gettext \
    && docker-php-ext-install gmp \
    && docker-php-ext-install mbstring \
    && docker-php-ext-install pcntl \
    && docker-php-ext-install shmop \
    && docker-php-ext-install sockets \
    && docker-php-ext-install sysvmsg \
    && docker-php-ext-install sysvsem \
    && docker-php-ext-install sysvshm \
    && docker-php-ext-install tidy \
    && docker-php-ext-install xsl \
    && docker-php-source delete

RUN docker-php-ext-configure gd --with-freetype --with-jpeg \
  && docker-php-ext-install -j$(nproc) gd \
  && docker-php-source delet