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: ########################################################################### # Copy xdebug configuration for remote debugging COPY ./xdebug.ini /usr/local/etc/php/conf.d/xdebug.ini 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-2.9.8; \ 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 ########################################################################### # Redis and igbinary: ########################################################################### ARG INSTALL_REDIS=false COPY ./igbinary.ini /usr/local/etc/php/conf.d/igbinary.ini RUN if [ ${INSTALL_REDIS} = true ]; then \ pecl install -a igbinary \ && docker-php-ext-enable igbinary \ && printf "yes\n" | pecl install redis \ && docker-php-ext-enable 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 ########################################################################### # BZ2: ########################################################################### 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: ########################################################################### 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 ########################################################################### # PGSQL: ########################################################################### ARG INSTALL_PGSQL=false RUN if [ ${INSTALL_PGSQL} = true ]; then \ apt update && apt install -y libpq-dev \ && docker-php-ext-install pgsql \ && docker-php-ext-install pdo_pgsql \ ;fi ########################################################################### # BCMATH: ########################################################################### ARG INSTALL_BCMATH=false RUN if [ ${INSTALL_BCMATH} = true ]; then \ && docker-php-ext-install bcmath \ ;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 ########################################################################### # 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" ########################################################################### # Locales: ########################################################################### RUN apt update && \ apt install -y locales && \ sed -i 's/# en_US.UTF-8 UTF-8/en_US.UTF-8 UTF-8/' /etc/locale.gen && \ sed -i 's/# ru_RU.UTF-8 UTF-8/ru_RU.UTF-8 UTF-8/' /etc/locale.gen && \ locale-gen