Docker x Laravel incroyablement lent Docker pour Windows explose

@ ucan-lab [Docker x Laravel fait exploser Docker pour Mac](https://qiita.com/ucan-lab/items/ La proposition 4 de a88e2e5c2a79f2426163) a été vérifiée sous Windows 10.

Proposition 4. Utiliser le montage en volume

Un plan pour stocker les données fournisseur et node_modules dans un volume nommé et les gérer séparément du côté hôte et du côté conteneur. Le traitement de synchronisation n'ayant pas lieu, il sera plus rapide.

Ajoutez le paramètre de montage de volume à docker-compose.yml et comparez les installations de composer et de npm. Cet article n'aborde pas les raisons pour lesquelles il est plus rapide.

résultat

Nous comparons respectivement les vitesses de «composer install» et de «npm install».

$ time composer install
real    6m26.446s  -> 0m57.445s  # 6.7 fois
user    0m9.375s   -> 0m3.035s
sys     0m51.148s  -> 0m1.544s

$ time npm install
real    1m31.764s  -> 0m22.720s  # 4.0 fois
user    0m46.022s  -> 0m23.705s
sys     0m32.465s  -> 0m13.917s

4 à 7 fois plus rapide dans l'environnement Windows 10! Ce n'était pas 20 fois plus que le référent Mac, mais je suis heureux que l'ajout de quelques lignes soit assez rapide!

environnement

Environnement du système d'exploitation hôte

--Windows 10 Home version 2004 (build du système d'exploitation 19041.508)

L'article suivant sera utile pour créer l'environnement. Windows Subsystem for Linux Installation Guide for Windows 10 Utilisation de WSL 2 + Docker sur Windows 10 Famille | Qiita

récipient

Validez à l'aide de l'environnement de développement Laravel + Nginx + MySQL. Les détails sont disponibles sur Blog.

Composer et package.json sont dans l'état de la création du projet à l'installation d'Inertia de laravel / jetstream.

Validez docker-compose.yml

La vitesse est comparée avec et sans la ligne de commentaire ʻadd`.


version: '3'

volumes: # add
  vendor-store: # add
  node_modules-store: # add

services:
  php:
    container_name: php
    build: ./docker/php
    volumes:
    - ./web:/var/www
    - vendor-store:/var/www/laravel/vendor # add
    - node_modules-store:/var/www/laravel/node_modules # add
    environment:
      TZ: Asia/Tokyo

  nginx:
    image: nginx
    container_name: nginx
    ports:
    - 80:80
    volumes:
    - ./web:/var/www
    - ./docker/nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
    - php

  db:
    image: mysql:8.0
    container_name: db
    environment:
      MYSQL_ROOT_PASSWORD: root
      MYSQL_DATABASE: database
      MYSQL_USER: docker
      MYSQL_PASSWORD: docker
      TZ: 'Asia/Tokyo'
    command: mysqld --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci
    volumes:
    - ./docker/db/data:/var/lib/mysql
    - ./docker/db/my.cnf:/etc/mysql/conf.d/my.cnf
    - ./docker/db/sql:/docker-entrypoint-initdb.d
    ports:
    - 3306:3306

La procédure d'exécution est la même que la source de référence. Veuillez lire le chemin.

Recommended Posts

Docker x Laravel incroyablement lent Docker pour Windows explose
Créer un conteneur pour Docker x Laravel phpMyAdmin
Docker pour Mac Slow: Countermeasure II
Docker Desktop pour Windows 2.4.0.0 (48506) Erreur de démarrage après la mise à jour
Utiliser Docker Desktop pour Windows avec Linux (WSL)
[Docker pour Windows] L'application Docker a soudainement cessé de fonctionner ...
Docker + Laravel + Codeception
Chargement automatique du navigateur Docker x Laravel (remplacement du module à chaud)
Mémo de problème lent d'accès aux fichiers Docker pour Mac récent (2020/08)