|
| 1 | +FROM php:8.5.0-fpm |
| 2 | + |
| 3 | +LABEL maintainer="Riddhesh Sanghvi <riddhesh237@gmail.com>" |
| 4 | +LABEL org.label-schema.schema-version="1.0.0" |
| 5 | +LABEL org.label-schema.vendor="EasyEngine" |
| 6 | +LABEL org.label-schema.name="php" |
| 7 | + |
| 8 | +RUN set -ex; \ |
| 9 | + apt-get update; \ |
| 10 | + apt-get install -y --no-install-recommends \ |
| 11 | + imagemagick \ |
| 12 | + less \ |
| 13 | + mariadb-client msmtp \ |
| 14 | + libfreetype6-dev \ |
| 15 | + libjpeg-dev \ |
| 16 | + libjpeg62-turbo-dev \ |
| 17 | + libkrb5-dev \ |
| 18 | + libmagickwand-dev \ |
| 19 | + libgraphicsmagick1-dev \ |
| 20 | + libmcrypt-dev \ |
| 21 | + libicu-dev \ |
| 22 | + libmemcached-dev \ |
| 23 | + libxml2-dev \ |
| 24 | + libpng-dev \ |
| 25 | + libzip-dev \ |
| 26 | + libssl-dev \ |
| 27 | + libgmp-dev \ |
| 28 | + tmux \ |
| 29 | + unzip \ |
| 30 | + vim \ |
| 31 | + zip |
| 32 | + |
| 33 | +# Install libc-client-dev for imap from sury as not available for debian trixie |
| 34 | +RUN curl -fsSL https://packages.sury.org/php/README.txt | bash && \ |
| 35 | + apt-get update && \ |
| 36 | + apt-get install -y libc-client-dev |
| 37 | + |
| 38 | +RUN pecl install memcached; \ |
| 39 | + pecl install redis; \ |
| 40 | + pecl install apcu; \ |
| 41 | + # https://github.com/php/pecl-encryption-mcrypt/issues/7#issuecomment-1050994596 |
| 42 | + pecl install -n mcrypt; \ |
| 43 | + echo "yes" | pecl install imap; \ |
| 44 | + pecl install timezonedb; \ |
| 45 | + # pecl install imagick; \ |
| 46 | + docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp; \ |
| 47 | + docker-php-ext-configure zip; \ |
| 48 | + docker-php-ext-install gd; \ |
| 49 | + docker-php-ext-install mysqli; \ |
| 50 | + docker-php-ext-install pdo_mysql; \ |
| 51 | + docker-php-ext-install opcache; \ |
| 52 | + docker-php-ext-install soap; \ |
| 53 | + docker-php-ext-install intl; \ |
| 54 | + docker-php-ext-install zip; \ |
| 55 | + docker-php-ext-install exif; \ |
| 56 | + docker-php-ext-install calendar; \ |
| 57 | + docker-php-ext-install gmp; \ |
| 58 | + docker-php-ext-install pcntl; \ |
| 59 | + docker-php-ext-install shmop; \ |
| 60 | + docker-php-ext-install sockets; \ |
| 61 | + docker-php-ext-install sysvsem; \ |
| 62 | + docker-php-ext-install sysvshm; \ |
| 63 | + docker-php-ext-install bcmath; \ |
| 64 | + docker-php-ext-enable mcrypt; \ |
| 65 | + docker-php-ext-enable redis; \ |
| 66 | + docker-php-ext-enable timezonedb; \ |
| 67 | + docker-php-ext-enable apcu; \ |
| 68 | + # docker-php-ext-enable imagick; \ |
| 69 | + echo "extension=memcached.so" >> /usr/local/etc/php/conf.d/memcached.ini; \ |
| 70 | + echo "extension=imap.so" > /usr/local/etc/php/conf.d/imap.ini; \ |
| 71 | + apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false; \ |
| 72 | + rm -rf /var/lib/apt/lists/*; |
| 73 | + |
| 74 | +# Temp workaround for imagick |
| 75 | +RUN apt update && apt install -y git --no-install-recommends && \ |
| 76 | + git clone https://github.com/Imagick/imagick.git --depth 1 /tmp/imagick && \ |
| 77 | + cd /tmp/imagick && \ |
| 78 | + git fetch origin master && \ |
| 79 | + git switch master && \ |
| 80 | + cd /tmp/imagick && \ |
| 81 | + phpize && \ |
| 82 | + ./configure && \ |
| 83 | + make && \ |
| 84 | + make install && \ |
| 85 | + docker-php-ext-enable imagick && \ |
| 86 | + apt remove -y git && \ |
| 87 | + apt autoremove -y && \ |
| 88 | + apt clean && \ |
| 89 | + rm -rf /var/lib/apt/lists/* && \ |
| 90 | + rm -rf /tmp/imagick |
| 91 | + |
| 92 | +# set recommended PHP.ini settings |
| 93 | +# see https://secure.php.net/manual/en/opcache.installation.php |
| 94 | +RUN { \ |
| 95 | + echo 'opcache.memory_consumption=128'; \ |
| 96 | + echo 'opcache.interned_strings_buffer=8'; \ |
| 97 | + echo 'opcache.max_accelerated_files=4000'; \ |
| 98 | + echo 'opcache.revalidate_freq=2'; \ |
| 99 | + echo 'opcache.fast_shutdown=1'; \ |
| 100 | + echo 'opcache.enable_cli=1'; \ |
| 101 | + } > /usr/local/etc/php/conf.d/opcache-recommended.ini |
| 102 | + |
| 103 | +# Donwload and install composer |
| 104 | +RUN curl -sSL "https://getcomposer.org/installer" | php \ |
| 105 | + && mv composer.phar /usr/local/bin/composer |
| 106 | + |
| 107 | +# Install wp-cli |
| 108 | +RUN curl -O "https://raw.githubusercontent.com/wp-cli/builds/gh-pages/phar/wp-cli.phar" \ |
| 109 | + && chmod +x wp-cli.phar \ |
| 110 | + && mv wp-cli.phar /usr/local/bin/wp |
| 111 | + |
| 112 | +# Setup a config file |
| 113 | +RUN mkdir -p /etc/wp-cli |
| 114 | +RUN { \ |
| 115 | + echo 'path: /var/www/htdocs'; \ |
| 116 | + } > /etc/wp-cli/config.yml |
| 117 | + |
| 118 | +RUN mkdir /usr/local/etc/misc && \ |
| 119 | +touch /usr/local/etc/misc/msmtprc && \ |
| 120 | +ln -s /usr/local/etc/misc/msmtprc /etc/msmtprc && \ |
| 121 | +chown www-data:www-data /usr/local/etc/misc/msmtprc && \ |
| 122 | +chown www-data:www-data /etc/msmtprc |
| 123 | + |
| 124 | +#RUN latest_build=$(curl -s https://download.newrelic.com/php_agent/release/ | grep 'linux.tar.gz' | sed 's/.*"\(.*\)".*/\1/') && \ |
| 125 | +#curl -L "https://download.newrelic.com$latest_build" | tar -C /tmp -zx && \ |
| 126 | +#export NR_INSTALL_USE_CP_NOT_LN=1 && \ |
| 127 | +#export NR_INSTALL_SILENT=1 && \ |
| 128 | +#/tmp/newrelic-php5-*/newrelic-install install && \ |
| 129 | +#rm -rf /tmp/newrelic-php5-* /tmp/nrinstall* |
| 130 | +# |
| 131 | +#ENV NR_PORT=/run/newrelic/newrelic.sock |
| 132 | + |
| 133 | +# Setup logs |
| 134 | +RUN mkdir -p /var/log/php; \ |
| 135 | + chown -R www-data: /var/log/php; \ |
| 136 | + rm /usr/local/etc/php-fpm.d/*; |
| 137 | +COPY php.ini /usr/local/etc/php/php.ini |
| 138 | +COPY easyengine.conf /usr/local/etc/php-fpm.d/easyengine.conf |
| 139 | + |
| 140 | +COPY expose_off.ini /usr/local/etc/php/conf.d/expose_off.ini |
| 141 | +COPY bashrc /root/.bashrc |
| 142 | +COPY bashrc /var/www/.bashrc |
| 143 | +COPY docker-entrypoint.sh /usr/local/bin/ |
| 144 | +#COPY newrelic.ini /usr/local/etc/php/conf.d/newrelic.ini |
| 145 | +#COPY newrelic.ini /data/newrelic.ini |
| 146 | + |
| 147 | +WORKDIR /var/www/htdocs |
| 148 | +RUN usermod -s /bin/bash www-data |
| 149 | +USER www-data |
| 150 | + |
| 151 | +ENTRYPOINT ["docker-entrypoint.sh"] |
| 152 | +CMD ["php-fpm"] |
0 commit comments