Bonjour, je suis un utilisateur windows 10 home avec docker desktop installé récemment, et j'essaye de dockeriser une appliaction web (1 seule page) symfony 5.3.1 (version de php: 7.4.2). Le problème est que tous les services tournent assez bien (maildev, phpmyadmin), sauf les pages symfony en elles-mêmes qui mettent entre 12 et 80 secondes à s'afficher (valeurs données par le profiler). Je n'arrive pas à savoir si cela vient de la puissance de mon pc qui ne fait pas bien tourner docker ou de symfony en lui-même, ou autre chose...
Pour info, mon pc est un asus vivobook X412DA avec 8gb de ram et un processeur allant jusqu'à 2,1 GHz, des specs suffisantes normalement. J'ai réessayé cette config de docker avec un projet CodeIgniter4 et celui-ci tournait très rapidement, donc je ne sais pas comment régler ce pb de symfony... Surtout que j'ai plusieurs projets Symfo qui tournent sur un wamp et là aucun problème, c'est vraiment quand je les dockerise que ça ralentit. Et ce n'est pas dû à la taille du projet car pour l'instant je n'ai qu'une page qui affiche juste un titre.
Le profiler :
https://mmi19d09.mmi-troyes.fr/Capture.PNG
et l'explication donnée par symfo:
https://mmi19d09.mmi-troyes.fr/Capture4.PNG
Voici mon docker-compose.yml:
version: "3.9"
services:
db:
image: mysql
container_name: db_docker_symfony
restart: always
volumes:
- db-data:/var/lib/mysql
environment:
MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
networks:
- dev
phpmyadmin:
image: phpmyadmin
container_name: phpmyadmin_docker_symfony
restart: always
depends_on:
- db
ports:
- 8080:80
environment:
PMA_HOST: db
networks:
- dev
maildev:
image: maildev/maildev
container_name: maildev_docker_symfony
command: bin/maildev --web 80 --smtp 25 --hide-extensions STARTTLS
ports:
- "8081:80"
restart: always
networks:
- dev
www:
build: php
container_name: www_docker_symfony
ports:
- "8741:80"
volumes:
- ./php/vhosts:/etc/apache2/sites-enabled
- ./:/var/www
restart: always
networks:
- dev
networks:
dev:
volumes:
db-data:
Mon Dockerfile :
FROM php:7.4-apache
RUN echo "ServerName localhost" >> /etc/apache2/apache2.conf \
\
&& apt-get update \
&& apt-get install -y --no-install-recommends \
locales apt-utils git libicu-dev g++ libpng-dev libxml2-dev libzip-dev libonig-dev libxslt-dev unzip \
\
&& echo "en_US.UTF-8 UTF-8" > /etc/locale.gen \
&& echo "fr_FR.UTF-8 UTF-8" >> /etc/locale.gen \
&& locale-gen \
\
&& curl -sS https://getcomposer.org/installer | php -- \
&& mv composer.phar /usr/local/bin/composer \
\
&& curl -sS https://get.symfony.com/cli/installer | bash \
&& mv /root/.symfony/bin/symfony /usr/local/bin \
\
&& docker-php-ext-configure \
intl \
&& docker-php-ext-install \
pdo pdo_mysql opcache intl zip calendar dom mbstring gd xsl \
\
&& pecl install apcu && docker-php-ext-enable apcu
WORKDIR /var/www/
Et mon vhosts.conf pour apache :
<VirtualHost *:80>
ServerName localhost
DocumentRoot /var/www/MonProjet/public
DirectoryIndex /index.php
<Directory /var/www/MonProjet/public>
AllowOverride None
Order Allow,Deny
Allow from All
FallbackResource /index.php
</Directory>
<Directory /var/www/MonProjet/public/bundles>
FallbackResource disabled
</Directory>
ErrorLog /var/log/apache2/MonProjet_error.log
CustomLog /var/log/apache2/MonProjet_access.log combined
</VirtualHost>
Voilà je voulais savoir si quelqu'un pouvait avoir une idée, je suis un néophyte en matière de docker/symfony.
Merci !
Ton problème viens ni de ton PC, ni de Symfony mais simplement de Docker qui n'est absolument pas optimisé pour tourner sous Windows.
J'ai également une application Symfony et j'obtiens des temps de réponse similaire lorsque je travail sur Windows (via WSL2). En revanche; dés que je bascule sous Linux, les temps de réponse sont de l'ordre de 40/50 ms.
Je n'ai pas regardé ta configuration Docker, mais je te conseil d'utiliser dunglas/symfony-docker si tu souhaite dockerisé ton Symfony. C'est un docker "presque" officiel car Maintenu par un Core Member de Symfony.
Salut et merci pour ta réponse. J'ai du coup des questions à poser en retours, quand tu dis passer sur linux, tu parles bien de passer sur une machine physique Linux ? Et aussi, tu m'as dit que docker n'était pas optimisé pour windows, or j'ai regardé plusieurs tutos sur la config de Docker et les youtubeurs étaient toujours sous windows et ça fonctionnait très bien, et aussi moi également un projet codeigniter tournait très bien dessus, phpmyadmin ou maildev également. Pourquoi c'est uniquement symfony qui pose problème ? Et enfin, passer sur w10 pro ne serait pas meilleur ? Car pas besoin d'utiliser wsl2 et peut etre plus optimisé....
PS: je ne comprends pas comment utiliser le dunglas/symfony-docker, dois-je télécharger le code et faire un docker compose up dans le dossier ?