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 !

2 réponses


ker0x
Réponse acceptée

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.

Rpostal
Auteur

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 ?