PHP 8 - универсальный Docker образ с поддержкой MySQL, PostgreSQL и MongoDB

Собираем Docker образ PHP-FPM 8 версии с поддержкой MySQL, PostgreSQL и MongoDB

Совсем недавно (26 ноября 2020г.) состоялся релиз 8-й версии PHP и теперь можно его использовать для запуска в Docker контейнере. Дистрибутив в официальном image остался тем же (Debian 10 Buster), что и для PHP 7-й версии. Поэтому, если у вас уже есть Dockerfile для PHP7, то для создания контейнера для PHP8 надо всего лишь поменять имя базового образа в директиве FROM.

Я использую образ сразу с поддержкой MySQL, PostgreSQL и MongoDB, чтобы не собирать его под каждую БД отдельно.

Мой Dockerfile для PHP8:

FROM php:8-fpm

RUN apt-get update \
  && apt-get install -y \
             apt-utils \
             man \
             curl \
             git \
             bash \
             vim \
             zip unzip \
             acl \
             iproute2 \
             dnsutils \
             fonts-freefont-ttf \
             fontconfig \
             dbus \
             openssh-client \
             sendmail \
             libfreetype6-dev \
             libjpeg62-turbo-dev \
             icu-devtools \
             libicu-dev \
             libmcrypt4 \
             libmcrypt-dev \
             libpng-dev \
             zlib1g-dev \
             libxml2-dev \
             libzip-dev \
             libonig-dev \
             graphviz \
             libcurl4-openssl-dev \
             pkg-config \
             libldap2-dev \
             libpq-dev \
  && pecl install mongodb \
  && echo "extension=mongodb.so" > /usr/local/etc/php/conf.d/mongodb-ext.ini

RUN docker-php-ext-configure intl --enable-intl && \
    docker-php-ext-configure gd --with-freetype --with-jpeg && \
    docker-php-ext-install -j$(nproc) gd && \
    docker-php-ext-install pdo \
        pgsql pdo_pgsql \
        mysqli pdo_mysql \
        intl iconv mbstring \
        zip pcntl \
        exif opcache \
    && docker-php-source delete

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer