|
| 1 | +FROM php:8.4.1-cli-alpine3.20 AS base |
| 2 | +LABEL maintainer= "Rémi Marseille <[email protected]>" |
| 3 | + |
| 4 | +ARG APCU_VERSION |
| 5 | +ARG COMPOSER_VERSION |
| 6 | +ARG MEMCACHED_VERSION |
| 7 | +ARG MODD_VERSION |
| 8 | +ARG PHP_CS_FIXER_VERSION |
| 9 | +ARG REDIS_VERSION |
| 10 | +ARG SSH2_VERSION |
| 11 | +ARG XDEBUG_VERSION |
| 12 | +ARG TARGETARCH |
| 13 | + |
| 14 | +# iconv issue https://github.com/docker-library/php/issues/240 |
| 15 | +FROM base AS base-amd64 |
| 16 | +ARG MODD_ARCH="linux64" |
| 17 | + |
| 18 | +FROM base AS base-arm64 |
| 19 | +ARG MODD_ARCH="linuxARM" |
| 20 | + |
| 21 | +FROM base-$TARGETARCH |
| 22 | +ENV COMPOSER_NO_INTERACTION=1 \ |
| 23 | + COMPOSER_MEMORY_LIMIT=-1 \ |
| 24 | + TERM=xterm \ |
| 25 | + LD_PRELOAD="/usr/lib/preloadable_libiconv.so php" \ |
| 26 | + PHP_CPPFLAGS="$PHP_CPPFLAGS -std=c++17" |
| 27 | + |
| 28 | +RUN version=$(php -r "echo PHP_MAJOR_VERSION.PHP_MINOR_VERSION;") && \ |
| 29 | + apk add --update --upgrade alpine-sdk apk-tools autoconf bash bzip2 cyrus-sasl-dev curl freetype-dev gettext git \ |
| 30 | + icu-dev icu-data-full jq libgcrypt-dev libjpeg-turbo-dev \ |
| 31 | + libmcrypt-dev libmemcached-dev libpng-dev libssh2-dev libxml2-dev libxslt-dev libzip-dev linux-headers make \ |
| 32 | + mysql-client openssh-client patch postgresql-client postgresql-dev rsync tzdata && \ |
| 33 | + # Install Modd" |
| 34 | + curl -sSL https://github.com/cortesi/modd/releases/download/v${MODD_VERSION}/modd-${MODD_VERSION}-${MODD_ARCH}.tgz | tar -xOvzf - modd-${MODD_VERSION}-${MODD_ARCH}/modd > /usr/bin/modd && \ |
| 35 | + chmod 755 /usr/bin/modd && \ |
| 36 | + echo "Starting PHP with $version" && \ |
| 37 | + docker-php-ext-configure gd --with-freetype=/usr/include/ --with-jpeg=/usr/include/ && \ |
| 38 | + CFLAGS_PREVIOUS=$CFLAGS && \ |
| 39 | + export CFLAGS="$CFLAGS -D_GNU_SOURCE" && \ |
| 40 | + docker-php-ext-install -j$(getconf _NPROCESSORS_ONLN) bcmath exif gd intl mysqli pcntl pdo_mysql pdo_pgsql pgsql soap sockets xsl zip && \ |
| 41 | + export CFLAGS=$CFLAGS_PREVIOUS && \ |
| 42 | + pecl install apcu-${APCU_VERSION} && \ |
| 43 | + pecl install memcached-${MEMCACHED_VERSION} && \ |
| 44 | + pecl install pcov && \ |
| 45 | + docker-php-ext-enable pcov && \ |
| 46 | + docker-php-ext-enable memcached && \ |
| 47 | + docker-php-ext-configure pgsql -with-pgsql=/usr/local/pgsql && \ |
| 48 | + echo -e "\ |
| 49 | + date.timezone=${PHP_TIMEZONE:-UTC} \n\ |
| 50 | + short_open_tag=Off \n\ |
| 51 | + extension=apcu.so \n\ |
| 52 | + zend_extension=opcache.so \n\ |
| 53 | + " > /usr/local/etc/php/php.ini && \ |
| 54 | + curl -sSL https://getcomposer.org/download/${COMPOSER_VERSION}/composer.phar -o /usr/local/bin/composer && chmod a+x /usr/local/bin/composer && \ |
| 55 | + curl -sSL https://github.com/FriendsOfPHP/PHP-CS-Fixer/releases/download/v${PHP_CS_FIXER_VERSION}/php-cs-fixer.phar -o /usr/local/bin/php-cs-fixer && chmod a+x /usr/local/bin/php-cs-fixer && \ |
| 56 | + curl -sSL https://github.com/phpredis/phpredis/archive/${REDIS_VERSION}.tar.gz | tar xz -C /tmp && \ |
| 57 | + cd /tmp/phpredis-${REDIS_VERSION} && phpize && ./configure && make && make install && \ |
| 58 | + echo "extension=redis.so" > /usr/local/etc/php/conf.d/redis.ini && \ |
| 59 | + curl -sSL https://github.com/xdebug/xdebug/archive/${XDEBUG_VERSION}.tar.gz | tar xz -C /tmp && \ |
| 60 | + cd /tmp/xdebug-${XDEBUG_VERSION} && phpize && ./configure --enable-xdebug && make && make install && \ |
| 61 | + echo -e "zend_extension=xdebug.so \nxdebug.mode=coverage \n" > /usr/local/etc/php/conf.d/xdebug.ini && \ |
| 62 | + mkdir -p /tmp/blackfire-probe && \ |
| 63 | + curl -A "Docker" -o /tmp/blackfire-probe/blackfire-probe.tar.gz -D - -L -s https://blackfire.io/api/v1/releases/probe/php/alpine/${TARGETARCH}/$version && \ |
| 64 | + tar zxpf /tmp/blackfire-probe/blackfire-probe.tar.gz -C /tmp/blackfire-probe && \ |
| 65 | + mv /tmp/blackfire-probe/blackfire-*.so $(php -r "echo ini_get('extension_dir');")/blackfire.so && \ |
| 66 | + printf "extension=blackfire.so\nblackfire.agent_socket=tcp://blackfire:8707\n" > $PHP_INI_DIR/conf.d/blackfire.ini && \ |
| 67 | + mkdir -p /tmp/blackfire-client && \ |
| 68 | + curl -A "Docker" -L https://blackfire.io/api/v1/releases/client/linux/${TARGETARCH} | tar zxp -C /tmp/blackfire-client && \ |
| 69 | + mv /tmp/blackfire-client/blackfire /usr/bin/blackfire && \ |
| 70 | + # Starting AWS |
| 71 | + apk add aws-cli && \ |
| 72 | + # Adding an up to date mime-types definition file |
| 73 | + curl -sSL https://salsa.debian.org/debian/mime-support/raw/master/mime.types -o /etc/mime.types && \ |
| 74 | + # Cleaning files |
| 75 | + apk del --purge alpine-sdk autoconf && \ |
| 76 | + rm -rf /tmp/* /usr/share/doc /var/cache/apk/* |
0 commit comments