Environnement Docker pour un projet PHP 8.1 sur Symfony 6 et postgresql


Pour cet exercice sur Docker je me suis basée en partie du tuto en vidéo de YoanDev, il utilise uniquement les fonctionnalités en lignes de commandes mais moi j’ai fait un mix avec l’interface Docker Desktop.

Première étape Télécharger docker Ici je passe par Docker Desktop

Lancer l’installation et prendre en main l’interface grâce au petit tuto inclus

Créer son fichier de config Dockerfile dans un dossier docker de son projet Symfony :

# Image de base pour build du php 8.1 avec apache disponible sur le Hub Docker
FROM php:8.1-apache

# Répo Github qui permet d'installer toutes les extentions necessaires à un bon fonctionnement
ADD https://github.com/mlocati/docker-php-extension-installer/releases/latest/download/install-php-extensions /usr/local/bin/

#
RUN chmod +x /usr/local/bin/install-php-extensions && \
    install-php-extensions pdo_pgsql intl
	
# Commande pour lancer composer
RUN curl -sSk https://getcomposer.org/installer | php -- --disable-tls && \
	mv composer.phar /usr/local/bin/composer
	
# Commande pour lancer les apt update et install
RUN apt update && apt install -yqq nodejs npm

# Permet de copier notre projet dans le /var/www/ du conteneur 
COPY . /var/www/

# Surcharge la configuration apache
COPY ./docker/apache.conf /etc/apache2/sites-available/000-default.conf

# Commandes pour se déplacer dans /var/www/ et lancer un composer install
RUN cd /var/www && \
    composer install

WORKDIR /var/www/

# Expose le port 80 en dehors du conteneur
EXPOSE 80

Lance le build de l’image grâce au fichier de conf :

docker build -t selenegamesimage . -f ./docker/Dockerfile

-t pour nommer son image

Lancer son conteneur :

docker run -it selenegamesimage

Quand on modifie une conf, commande pour relance le conteneur :

docker-composer up -d 

Un fois lancé, j’ai eu un soucis d’accès à mon app

Le problème venais du fait que je n’avais pas surchargé ma configuration apache pour que mon index.php soit bien déclaré.

J’ai placé ce fichier dans le dossier docker de mon projet que j’ai appelé apache.conf

# /etc/apache2/conf.d/example.com.conf
<VirtualHost *:80>
    ServerName localhost

    DocumentRoot /var/www/public
    DirectoryIndex /index.php
    <Directory /var/www/project/public>
        AllowOverride None
        Order Allow,Deny
        Allow from All
        FallbackResource /index.php
    </Directory>

    # uncomment the following lines if you install assets as symlinks
    # or run into problems when compiling LESS/Sass/CoffeeScript assets
    # <Directory /var/www/project>
    #     Options FollowSymlinks
    # </Directory>

    ErrorLog /var/log/apache2/project_error.log
    CustomLog /var/log/apache2/project_access.log combined
</VirtualHost>

Il faut ensuite déclarer ce nouveau fichier de configuration dans notre Dockerfile


COPY ./docker/apache.conf /etc/apache2/sites-available/000-default.conf

Et relancer le conteneur avec la nouvelle configuration :

docker-composer up -d