Не так давно вышел релиз 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