FROM php:8.3-apache-bullseye ENV DEBIAN_FRONTEND=noninteractive # Install system dependencies and PHP extensions RUN apt-get update -qq && \ apt-get install -qy --no-install-recommends \ nano vim \ libfreetype6-dev libjpeg62-turbo-dev libpng-dev libwebp-dev libxpm-dev \ zlib1g-dev libicu-dev g++ \ libxslt-dev \ libzip-dev unzip zip \ libmagick++-dev libmagickwand-dev \ libmemcached-dev \ ldap-utils libldap2-dev \ locales \ git zsh htop \ ca-certificates curl gnupg \ mariadb-client \ && echo "fr_FR.UTF-8 UTF-8" > /etc/locale.gen \ && locale-gen fr_FR.UTF-8 \ && update-locale LANG=fr_FR.UTF-8 \ && docker-php-ext-configure gd --enable-gd --with-webp --with-jpeg --with-xpm --with-freetype \ && docker-php-ext-configure intl \ && docker-php-ext-configure zip --with-zip \ && docker-php-ext-configure ldap \ && docker-php-ext-install -j$(nproc) exif gd gettext intl mysqli pdo_mysql xsl opcache zip bcmath ldap \ && pecl install imagick-3.7.0 redis-6.0.2 xdebug pcov \ && docker-php-ext-enable imagick redis xdebug pcov \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/* # Set locale environment variables ENV LC_ALL=fr_FR.UTF-8 ENV LANG=fr_FR.UTF-8 ENV LANGUAGE=fr_FR.UTF-8:fr # Install Node.js 18.x RUN mkdir -p /etc/apt/keyrings \ && curl -fsSL https://deb.nodesource.com/gpgkey/nodesource-repo.gpg.key | gpg --dearmor -o /etc/apt/keyrings/nodesource.gpg \ && echo "deb [signed-by=/etc/apt/keyrings/nodesource.gpg] https://deb.nodesource.com/node_18.x nodistro main" > /etc/apt/sources.list.d/nodesource.list \ && apt-get update -qq \ && apt-get install -y --no-install-recommends nodejs \ && apt-get clean \ && rm -rf /var/lib/apt/lists/* # Install Composer RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer --version=2.5.5 # Setup Oh-My-Zsh and plugins (dev only) RUN sh -c "$(curl -fsSL https://raw.github.com/robbyrussell/oh-my-zsh/master/tools/install.sh)" \ && git clone https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-~/.oh-my-zsh/custom}/plugins/zsh-autosuggestions \ && sed -i 's/plugins=(git)/plugins=(git laravel zsh-autosuggestions)/g' ~/.zshrc ENV SHELL=/bin/zsh # Set default shell to zsh RUN chsh -s /bin/zsh # Copy configuration files COPY conf/common-apache.conf /etc/apache2/conf-available/z-app.conf COPY conf/common-ports.conf /etc/apache2/ports.conf COPY conf/common-security.conf /etc/apache2/conf-enabled/security.conf COPY conf/php.ini /usr/local/etc/php/conf.d/app.ini COPY conf/vhost.conf /etc/apache2/sites-available/000-default.conf # Enable Apache modules and configuration RUN a2enmod rewrite remoteip headers http2 && \ a2enconf z-app WORKDIR /app/srcs