首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Nginx容器wsl2上运行Laravel时,Docker非常慢

在Nginx容器wsl2上运行Laravel时,Docker非常慢
EN

Stack Overflow用户
提问于 2020-07-22 14:22:23
回答 10查看 36.7K关注 0票数 39

我更新了Windows10到2004年的最新版本,安装了wsl2并更新了它,安装了对接器和ubuntu。

当我用"Hello“创建一个简单的index.php文件时,它工作得非常完美(响应:100-400‘s ),但是当我添加了Laravel项目时,它在执行请求之前加载了7秒,响应是4-7秒,尽管PHPMyAdmin运行非常顺利(响应:1-2秒)。

我的docker-compose.yml文件:

代码语言:javascript
复制
version: '3.8'
networks:
  laravel:

services:
  nginx:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "8080:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    depends_on:
      - php
      - mysql
      - phpmyadmin
    networks:
      - laravel

  mysql:
    image: mysql:latest
    container_name: mysql
    restart: unless-stopped
    tty: true
    ports:
      - "3306:3306"
    environment:
      MYSQL_ROOT_PASSWORD: secret
      SERVICE_TAGS: dev
      SERVICE_NAME: mysql
    networks:
      - laravel

  phpmyadmin:
    image: phpmyadmin/phpmyadmin
    restart: always
    depends_on:
      - mysql
    ports:
      - 8081:80
    environment:
      PMA_HOST: mysql
      PMA_ARBITRARY: 1

  php:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: php
    volumes:
      - ./src:/var/www/html
    ports:
      - "9000:9000"
    networks:
      - laravel

  composer:
    image: composer:latest
    container_name: composer
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    depends_on:
      - php
    networks:
      - laravel

  npm:
    image: node:latest
    container_name: npm
    volumes:
      - ./src:/var/www/html
    working_dir: /var/www/html
    entrypoint: ['npm']

  artisan:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: artisan
    volumes:
      - ./src:/var/www/html
    depends_on:
      - mysql
    working_dir: /var/www/html
    entrypoint: ['php', '/var/www/html/artisan']
    networks:
      - laravel

我试着解决这个问题已经有两天了,但没有找到答案。

谢谢

EN

回答 10

Stack Overflow用户

发布于 2020-07-23 12:48:42

看起来你正在把你的Laravel项目安装在你的容器里。如果您将这些文件从Windows环境安装到WSL 2,这可能会导致文件I/O非常差,因为WSL 2目前在访问Windows环境中的文件时遇到了很多问题。这个I/O问题存在于2020年7月,您可以在Github 这里上找到该问题的持续状态。

有三个可能的解决方案,我可以想到,这将解决这个问题目前。

禁用基于WSL 2的码头引擎,直到问题得到解决为止,

由于此问题仅在WSL 2试图访问Windows文件系统时发生,因此您可以选择禁用WSL 2对接程序集成并在Windows环境中运行容器。您可以在Desktop的UI中找到禁用它的选项:

将项目存储在WSL 2的Linux文件系统中。

同样,由于WSL 2试图访问/mnt下的Windows文件系统的挂载点时会出现此问题,因此您可以选择将项目存储到WSL 2的Linux文件系统上。

构建您自己的Dockerfiles

您可以选择创建您自己的Dockerfile,而不是挂载您的项目,您可以将所需的目录COPY到停靠者映像中。这将导致较差的构建性能,因为WSL 2仍然需要访问Windows文件系统才能生成这些停靠文件映像,但是运行时性能要好得多,因为它不必每次都从Windows环境中检索这些文件。

票数 31
EN

Stack Overflow用户

发布于 2021-05-28 09:14:03

只需将所有源项目移到文件夹中即可。

代码语言:javascript
复制
\\wsl$\Ubuntu-20.04\home\<User Name>\<Project Name>

在Linux原住民上这样的运行速度将会非常快

在此之前

之后

票数 8
EN

Stack Overflow用户

发布于 2021-08-22 22:46:41

我在mysql数据库请求和响应中遇到了同样的问题,每次请求/响应大约需要8到10秒。这个问题肯定与和WindowsWSL2之间的文件安装有关。经过几天的努力解决这个问题,我发现这篇文章:

https://www.createit.com/blog/slow-docker-on-windows-wsl2-fast-and-easy-fix-to-improve-performance/

在实现post中指定的步骤之后,它完全消除了这个问题,将数据库请求/响应减少到毫秒。希望这能帮助经历同样问题的人。

票数 6
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63036490

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档