[+] chore(root): Initialise le projet avec une structure de base Crée la structure de base du projet Symfony, incluant les entités, services, formulaires, et templates nécessaires pour la gestion des comptes utilisateurs, la sécurité, et la gestion des mots de passe oubliés. Ajoute également la configuration pour la gestion des assets avec Vite, la gestion des fichiers avec Flysystem, et la génération de sitemaps. ```
92 lines
3.3 KiB
Docker
92 lines
3.3 KiB
Docker
# Utiliser une image PHP 8.3 FPM (Ubuntu-based)
|
|
FROM php:8.3-fpm
|
|
|
|
# Arguments pour les permissions de fichiers
|
|
ARG UID
|
|
ARG GID
|
|
|
|
# Mettre à jour et installer les dépendances système requises
|
|
RUN apt-get update && apt-get install -y --no-install-recommends \
|
|
# Outils de compilation et dépendances pour PHP extensions
|
|
build-essential \
|
|
libpq-dev \
|
|
libzip-dev \
|
|
libpng-dev \
|
|
libjpeg-dev \
|
|
libfreetype6-dev \
|
|
libwebp-dev \
|
|
libicu-dev \
|
|
# Dépendance pour GMP (bibliothèque de développement)
|
|
libgmp-dev \
|
|
# Outils généraux
|
|
zip \
|
|
unzip \
|
|
ffmpeg \
|
|
jq \
|
|
wget \
|
|
nodejs \
|
|
npm \
|
|
postgresql-client \
|
|
git \
|
|
# Nettoyage des listes de paquets pour réduire la taille de l'image
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
|
|
# Installer le client HashiCorp Vault
|
|
ENV VAULT_VERSION=1.17.1
|
|
RUN wget https://releases.hashicorp.com/vault/${VAULT_VERSION}/vault_${VAULT_VERSION}_linux_amd64.zip -O vault.zip && \
|
|
unzip vault.zip -d /usr/local/bin && \
|
|
rm vault.zip
|
|
|
|
# Installer le client MinIO (mc)
|
|
RUN wget https://dl.min.io/client/mc/release/linux-amd64/mc -O /usr/local/bin/mc && \
|
|
chmod +x /usr/local/bin/mc
|
|
|
|
RUN npm install -g mjml
|
|
# Configurer et installer les extensions PHP
|
|
# Utilisation de -j$(nproc) pour paralléliser la compilation et accélérer le build
|
|
RUN docker-php-ext-configure gd --with-freetype --with-jpeg --with-webp \
|
|
&& docker-php-ext-install -j$(nproc) gd pdo pdo_pgsql zip gmp bcmath intl exif
|
|
|
|
# Installer Redis via pecl
|
|
RUN pecl install redis && docker-php-ext-enable redis
|
|
|
|
# Installer Excimer via pecl
|
|
RUN pecl install excimer && docker-php-ext-enable excimer
|
|
|
|
# Configuration et installation de Xdebug
|
|
# Utilisation de --no-install-recommends pour éviter l'installation de paquets inutiles
|
|
RUN apt-get update && apt-get install -y --no-install-recommends git \
|
|
&& mkdir -p /usr/src/php/ext/xdebug \
|
|
&& git clone https://github.com/xdebug/xdebug.git /usr/src/php/ext/xdebug \
|
|
&& cd /usr/src/php/ext/xdebug \
|
|
&& phpize \
|
|
&& ./configure --enable-xdebug \
|
|
&& make && make install \
|
|
&& rm -rf /usr/src/php/ext/xdebug \
|
|
&& apt-get autoremove -y build-essential git \
|
|
&& apt-get clean \
|
|
&& rm -rf /var/lib/apt/lists/* /tmp/* /var/tmp/*
|
|
COPY ./docker/php/custom.ini /usr/local/etc/php/conf.d/custom.ini
|
|
|
|
RUN echo "zend_extension=xdebug" > /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
|
|
RUN echo "xdebug.mode=develop,debug" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
|
|
&& echo "xdebug.start_with_request=yes" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini \
|
|
&& echo "xdebug.client_host=host.docker.internal" >> /usr/local/etc/php/conf.d/docker-php-ext-xdebug.ini
|
|
RUN mkdir -p /opt/phpstorm-coverage && \
|
|
chmod -R 777 /opt/phpstorm-coverage
|
|
|
|
# Installer Composer globalement
|
|
COPY --from=composer:latest /usr/bin/composer /usr/bin/composer
|
|
RUN mkdir -p /opt/phpstorm-coverage/ && chmod -R 777 /opt/phpstorm-coverage/
|
|
|
|
# Créer un utilisateur et un groupe non-root pour l'application
|
|
# Utilisation de useradd/groupadd pour les systèmes basés sur Debian/Ubuntu
|
|
RUN groupadd -g $GID appuser && \
|
|
useradd -u $UID -g appuser -ms /bin/bash appuser
|
|
|
|
# Changer pour l'utilisateur non-root
|
|
USER appuser
|
|
# Définir le répertoire de travail
|
|
WORKDIR /srv/app
|