Files
e-cosplay/docker/php/Dockerfile
Serreau Jovann 2b03f715e3 feat: Initialise l'infrastructure de base et ajoute la gestion des comptes administrateurs
Ce commit initialise la structure de base du projet, ajoute une nouvelle fonctionnalité de gestion des comptes administrateurs, et configure l'environnement de développement.

Les modifications comprennent :

- Ajout d'une commande `mainframe:admin` pour créer des comptes administrateurs via la console.
- Implémentation d'un service de Mailer avec un subscriber pour envoyer des emails lors de la création d'un compte administrateur.
- Création d'un contrôleur `Artemis/DashboardController` pour la partie administration (artemis).
- Mise à jour du `HomeController` pour rediriger les utilisateurs connectés vers le dashboard.
- Ajout de dépendances Symfony (UID) et configuration du Dockerfile (ajout de l'extension exif)
- Suppression du test `HomeControllerTest.php`
- Configuration de SonarQube et de PHPUnit pour exclure certains dossiers du code coverage.
2025-07-17 12:05:39 +02:00

91 lines
3.2 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/*
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