Bonjour tout le monde !
Cela fait plusieurs années que j'utilise Symfony au quotidien donc je commence à bien connaître.
Voulant utiliser la dernière version (la 6.1 qui utilise PHP 8.1) je me suis dis que ça serait l'occasion de me mettre à Docker.
Seulement voilà, je n'arrive pas à trouver une config Docker qui répond à mes critères :

  • Symfony 6.1 avec PHP 8.1 - la base du projet
  • Base Mysql - la base de données
  • PhpMyAdmin - très utile pour voir ce qu'il se passe dans la base
  • yarn - permet d'utiliser le webpack Encore plus facilement

Qu'avez-vous l'habitude de faire ?
Que me conseillez-vous ?

Merci beaucoup
Bonne journée

3 réponses


hello,

j'ai créer une stack docker pour répondre à tes besoins
https://github.com/Theo-W/symfony-template

isox

Hello, alors il y a bien celui la:

https://github.com/dunglas/symfony-docker

C'est le Docker proposé dans la doc officielle de Symfony

Après faut aussi voir si tu veux passer par Apache ou Nginx, si tu veux passer par Nginx tu peux utiliser le docker proposé par Symfo, ou alors si tu n'as pas démarré ton projet tu peux essayer le template du voisin du dessus

Pour du Apache je sais pas, faudra chercher dans https://hub.docker.com/ (perso j'ai rien trouvé ^^') ou alors construire toi même ton docker (FROM php:8.1-{fpm ou apache} tu installes les extensions php tu copies ton projet tu exposes en 80 et en 443 et tu lances apache/nginx)

Sinon dans la doc de Symfony ça explique que tu peux utiliser SymfonyFlex pour configurer automatiquement un docker, perso je connais pas Symfo mais a voir si ça vaut le coup :p

Effectivement au début j'ai utilisé la config de la doc de Symfony.
J'ai récupéré le projet et j'ai tapé le commande
SKELETON=symfony/website-skeleton docker-compose up --build

Mais j'ai une erreur, impossible d'afficher symfony sur le navigateur c'est bizarre

Mmmmh bizarre, perso je préfère avoir la main sur Docker plutot que d'utiliser un repo tout fait, tu peux essayer de faire ton Docker

Pour du NGINX ce sera le repo php:8.1-fpm et pour Apache php:8.1-apache

Pour être tranquille tu peux mettre USER root

Tu installes des dépendances necessaires à Symfony (curl, zip et unzip c'est surement necessaire, pour le reste faudra voir)

RUN apt update && apt install -y \
    curl \
    zip \
    unzip

Tu installes les extensions PHP requis par Symfo (C'est des extensions requis pous Laravel, regardes ici si il manque des choses https://symfony.com/doc/current/setup.html )

RUN docker-php-ext-configure gd \
    && docker-php-ext-install -j$(nproc) gd \
    && docker-php-ext-install pdo_mysql \
    && docker-php-ext-install mysqli \
    && docker-php-ext-install zip \
    && docker-php-ext-install pcntl \
    && docker-php-source delete

Tu installes Composer

RUN curl -sS https://getcomposer.org/installer | php -- --install-dir=/usr/local/bin --filename=composer

RUN composer install --optimize-autoloader

Tu donnes ton projet à ton serveur web

RUN chown -R www-data:www-data /app && a2enmod rewrite headers

Tu exposes en 80 et en 443

EXPOSE 80
EXPOSE 443

Tu lances apache (ou NGINX, a changer dans ce cas)

CMD ["apache2-foreground"]

Juste avec ça ça devrait fonctionner, tu configures docker-compose.yml pour chopper ton dockerfile et lui attribuer un port et c'est good :)