You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
150 lines
5.3 KiB
150 lines
5.3 KiB
FROM php:7.3-fpm
|
|
RUN apt-get update && apt-get install -y \
|
|
libfreetype6-dev \
|
|
libjpeg62-turbo-dev \
|
|
libpng-dev \
|
|
libwebp-dev \
|
|
&& docker-php-ext-install -j$(nproc) iconv \
|
|
&& docker-php-ext-configure gd --with-freetype-dir=/usr/include/ --with-jpeg-dir=/usr/include/ --with-webp-dir=/usr/include/ \
|
|
&& docker-php-ext-install -j$(nproc) gd \
|
|
&& docker-php-ext-install mysqli \
|
|
&& docker-php-ext-enable mysqli
|
|
|
|
RUN apt-get update && docker-php-ext-install pdo pdo_mysql && docker-php-ext-enable pdo pdo_mysql
|
|
|
|
###########################################################################
|
|
# xDebug:
|
|
###########################################################################
|
|
|
|
ARG INSTALL_XDEBUG=false
|
|
|
|
RUN if [ ${INSTALL_XDEBUG} = true ]; then \
|
|
# Install the xdebug extension
|
|
if [ $(php -r "echo PHP_MAJOR_VERSION;") = "5" ]; then \
|
|
pecl install xdebug-2.5.5; \
|
|
else \
|
|
pecl install xdebug; \
|
|
fi && \
|
|
docker-php-ext-enable xdebug && \
|
|
sed -i 's/^zend_extension=/;zend_extension=/g' /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
|
|
;fi
|
|
|
|
# Copy xdebug configuration for remote debugging
|
|
COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini
|
|
|
|
RUN sed -i "s/xdebug.remote_autostart=0/xdebug.remote_autostart=1/" /usr/local/etc/php/conf.d/xdebug.ini && \
|
|
sed -i "s/xdebug.remote_enable=0/xdebug.remote_enable=1/" /usr/local/etc/php/conf.d/xdebug.ini && \
|
|
sed -i "s/xdebug.cli_color=0/xdebug.cli_color=1/" /usr/local/etc/php/conf.d/xdebug.ini
|
|
|
|
|
|
###########################################################################
|
|
# Redis and igbinary:
|
|
###########################################################################
|
|
|
|
ARG INSTALL_REDIS=false
|
|
|
|
RUN if [ ${INSTALL_REDIS} = true ]; then \
|
|
pecl install igbinary \
|
|
&& pecl install -a redis \
|
|
&& docker-php-ext-enable igbinary redis \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# Zip:
|
|
###########################################################################
|
|
|
|
ARG INSTALL_ZIP=false
|
|
|
|
RUN if [ ${INSTALL_ZIP} = true ]; then \
|
|
apt update && apt install -y libzip-dev \
|
|
&& docker-php-ext-install zip \
|
|
&& docker-php-ext-enable zip \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# Pear Mail and Mail_Mime:
|
|
###########################################################################
|
|
|
|
ARG INSTALL_PEAR_MAIL=false
|
|
|
|
RUN if [ ${INSTALL_PEAR_MAIL} = true ]; then \
|
|
pear install Mail && pear install Mail_Mime \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# BZ2 function:
|
|
###########################################################################
|
|
|
|
ARG INSTALL_BZ2=false
|
|
|
|
RUN if [ ${INSTALL_BZ2} = true ]; then \
|
|
apt update && apt install -y libbz2-ocaml-dev \
|
|
&& docker-php-ext-install bz2 \
|
|
&& docker-php-ext-enable bz2 \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# INTL function:
|
|
###########################################################################
|
|
|
|
ARG INSTALL_INTL=false
|
|
|
|
RUN if [ ${INSTALL_INTL} = true ]; then \
|
|
apt update && apt install -y libicu-dev \
|
|
&& docker-php-ext-install intl \
|
|
&& docker-php-ext-enable intl \
|
|
;fi
|
|
|
|
###########################################################################
|
|
# php.ini opts:
|
|
###########################################################################
|
|
|
|
# https://github.com/php/php-src/blob/master/php.ini-development
|
|
RUN mv "$PHP_INI_DIR/php.ini-development" "$PHP_INI_DIR/php.ini"
|
|
|
|
ARG PHP_OPT_SHORT_OPEN_TAG=Off
|
|
|
|
RUN sed -i "s/^short_open_tag = .*/short_open_tag = $PHP_OPT_SHORT_OPEN_TAG/g" "$PHP_INI_DIR/php.ini"
|
|
|
|
ARG PHP_OPT_MAX_EXECUTION_TIME=30
|
|
|
|
RUN sed -i "s/^max_execution_time = .*/max_execution_time = $PHP_OPT_MAX_EXECUTION_TIME/g" "$PHP_INI_DIR/php.ini"
|
|
|
|
ARG PHP_OPT_MEMORY_LIMIT=128M
|
|
|
|
RUN sed -i "s/^memory_limit = .*/memory_limit = $PHP_OPT_MEMORY_LIMIT/g" "$PHP_INI_DIR/php.ini"
|
|
|
|
ARG PHP_OPT_UPLOAD_MAX_FILESIZE=2M
|
|
|
|
RUN sed -i "s/^upload_max_filesize = .*/upload_max_filesize = $PHP_OPT_UPLOAD_MAX_FILESIZE/g" "$PHP_INI_DIR/php.ini"
|
|
|
|
|
|
###########################################################################
|
|
# Prepend nginx 502 on showing errors:
|
|
# @see https://stackoverflow.com/questions/55260221/laravel-php-7-3-nginx-502-upstream-prematurely-closed-fastcgi-stdout
|
|
###########################################################################
|
|
|
|
RUN sed -i "s/^log_limit = .*/log_limit = 1024/g" "$PHP_INI_DIR/../php-fpm.d/docker.conf"
|
|
|
|
###########################################################################
|
|
# BCMATH functions:
|
|
###########################################################################
|
|
|
|
RUN docker-php-ext-install bcmath && docker-php-ext-enable bcmath
|
|
|
|
###########################################################################
|
|
# GEOIP:
|
|
###########################################################################
|
|
|
|
RUN apt update \
|
|
&& apt install -y libgeoip-dev wget \
|
|
&& rm -rf /var/lib/apt/lists/* \
|
|
&& pecl install geoip-1.1.1 \
|
|
&& docker-php-ext-enable geoip
|
|
|
|
###########################################################################
|
|
# PGSQL:
|
|
###########################################################################
|
|
|
|
RUN apt-get update && apt install -y libpq-dev \
|
|
&& docker-php-ext-install pdo_pgsql && docker-php-ext-enable pdo_pgsql
|