## Base FROM php:8.4-fpm ## Non-interactive apt ENV DEBIAN_FRONTEND=noninteractive ## System deps and PHP build deps RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends \ curl \ git \ zip \ unzip \ net-tools \ iputils-ping \ telnet \ mc \ nano \ lsb-release \ ca-certificates \ apt-transport-https \ build-essential; \ rm -rf /var/lib/apt/lists/* ## Node.js + yarn + grunt-cli + bower RUN set -eux; \ curl -fsSL https://deb.nodesource.com/setup_lts.x | bash -; \ apt-get install -y --no-install-recommends nodejs; \ npm install -g yarn grunt-cli bower --unsafe-perm=true --allow-root; \ rm -rf /var/lib/apt/lists/* ## Xdebug (install and basic config) RUN set -eux; \ apt-get update; \ apt-get install -y --no-install-recommends $PHPIZE_DEPS; \ pecl install xdebug; \ docker-php-ext-enable xdebug; \ rm -rf /tmp/pear; \ apt-get purge -y --auto-remove -o APT::AutoRemove::RecommendsImportant=false $PHPIZE_DEPS; \ { \ echo "xdebug.mode=debug"; \ echo "xdebug.start_with_request=yes"; \ echo "xdebug.client_host=host.docker.internal"; \ echo "xdebug.client_port=9003"; \ echo "xdebug.log=/tmp/xdebug.log"; \ echo "xdebug.log_level=3"; \ } > /usr/local/etc/php/conf.d/99-xdebug.ini ## Composer (from official image) COPY --from=composer:2 /usr/bin/composer /usr/local/bin/composer ## Xdebug environment defaults ENV XDEBUG_MODE=debug \ XDEBUG_CONFIG="client_host=host.docker.internal client_port=9003" \ PHP_IDE_CONFIG="serverName=local.docker" ## Pass-through envs in FPM pool RUN set -eux; \ { \ echo ""; \ echo "clear_env = yes"; \ echo "env[APP_ENV] = \$APP_ENV"; \ echo "env[XDEBUG_CONFIG] = \$XDEBUG_CONFIG"; \ echo "env[XDEBUG_MODE] = \$XDEBUG_MODE"; \ echo "env[PHP_IDE_CONFIG] = \$PHP_IDE_CONFIG"; \ } >> /usr/local/etc/php-fpm.d/www.conf ## Workdir and permissions WORKDIR /app RUN chown -R www-data:www-data /app ## Entrypoint CMD ["php-fpm"]