【问题标题】:Laravel 8 & Laravel Sail for dev on Windows 10 is slow. How to speed up?Laravel 8 和 Laravel Sail 在 Windows 10 上的开发速度很慢。如何加快速度?
【发布时间】:2023-04-09 03:41:01
【问题描述】:

我怎样才能重新创建这个?

Laravel 8 docsLaravel Sail docs 创建安装。

我使用sail up 命令,效果很好。该命令构建 docker 容器,将它们连接起来,并使开发变得像我们想象的那样简单,尤其是对于 VSCode,它运行良好,但使用 WSL2 开发速度很慢。我的意思是像“sail npm run dev”这样的命令。有关如何加快速度的任何想法?

仅供参考:在同一台机器上运行的同一个项目至少快 10 倍。有关更多信息,我在 i9-10900X、32 GB RAM 的 Docker Desktop for Windows 10 上运行了测试。

docker-compose.yml

# For more information: https://laravel.com/docs/sail
version: '3'
services:
    laravel.test:
        build:
            context: ./vendor/laravel/sail/runtimes/8.0
            dockerfile: Dockerfile
            args:
                WWWGROUP: '${WWWGROUP}'
        image: sail-8.0/app
        ports:
            - '${APP_PORT:-80}:80'
        environment:
            WWWUSER: '${WWWUSER}'
            LARAVEL_SAIL: 1
        volumes:
            - '.:/var/www/html'
        networks:
            - sail
        depends_on:
            - mysql
            - redis
    mysql:
        image: 'mysql:8.0'
        ports:
            - '${DB_PORT}:3306'
        environment:
            MYSQL_ROOT_PASSWORD: '${DB_PASSWORD}'
            MYSQL_DATABASE: '${DB_DATABASE}'
            MYSQL_USER: '${DB_USERNAME}'
            MYSQL_PASSWORD: '${DB_PASSWORD}'
            MYSQL_ALLOW_EMPTY_PASSWORD: 'yes'
        volumes:
            - 'sailmysql:/var/lib/mysql'
        networks:
            - sail
    redis:
        image: 'redis:alpine'
        ports:
            - '${REDIS_PORT}:6379'
        volumes:
            - 'sailredis:/data'
        networks:
            - sail
    mailhog:
        image: 'mailhog/mailhog:latest'
        ports:
            - 1025:1025
            - 8025:8025
        networks:
            - sail
networks:
    sail:
        driver: bridge
volumes:
    sailmysql:
        driver: local
    sailredis:
        driver: local

【问题讨论】:

  • 可以确认在 Mac 上也很慢!

标签: php docker-compose laravel-8 laravel-sail


【解决方案1】:

如果可能,您应该从 WSL2 运行 docker。

  1. 安装dockerWSL2
  2. 通过在资源管理器中打开 \\wsl$\ 并导航到 VM 的主页(在我的情况下为 \\wsl$\Ubuntu-20.04\home\thomas),将您的项目移动到 WSL

  1. 从 VM 运行 docker-compose up -d / sail up

【讨论】:

  • 已安装最新的 Docker 和 WSL2。我正在使用 Ubuntu 20。我已将项目复制到 wsl$ 路由,然后出现权限问题....
  • 我已尝试解决权限问题,但仍无法正常工作。它似乎是一个不同的文件夹结构。仅供参考:默认情况下,“代码”目录是隐藏的。
  • 代码是我创建的目录。权限问题可以通过在 docker-compose 中定义用户和组来解决。如果您能指出到底出了什么问题,我可以尝试提供帮助。
  • 从 15 秒到 29 毫秒,哇!但是我面临一个类似的问题,将代码移动到包含供应商代码的 wsl 会带来一些权限问题,这些问题可以通过 777 解决。删除供应商并执行 composer install 将需要具有所有必需扩展的 php,这违背了使用容器的目的(我猜?)。我错过了什么,或者这是一个必要的邪恶?
  • @jeremy_nikolic 由于 Linux 和 Windows 权限已经存在了一段时间,而且从未兼容过,我担心这是您需要自己做的事情。问题是:您可以从 WSL-OS(例如 Ubuntu)share your users between this host and the container 运行您的命令,并且应该解决很多权限问题。
【解决方案2】:

我打算解释这一点,但只是到这里自己阅读。这对我有帮助。当我在默认位置打开一个项目并给我这个链接时,VSCode 有点对我大喊大叫。 https://docs.microsoft.com/en-us/windows/wsl/compare-versions

跨操作系统文件系统的性能

我们建议您不要跨操作系统处理您的文件, 除非您有特定的理由这样做。为了最快 性能速度,如果您愿意,请将您的文件存储在 WSL 文件系统中 在 Linux 命令行中工作(Ubuntu、OpenSUSE 等)。如果你是 在 Windows 命令行(PowerShell、命令提示符)中工作,存储 Windows 文件系统中的文件。

例如,在存储 WSL 项目文件时:

  • 使用Linux文件系统根目录:\\wsl$\Ubuntu-18.04\home\<user name>\Project
  • 不是Windows文件系统根目录:C:\Users\<user name>\Project

所有当前运行的发行版 (wsl -l) 都可以通过 网络连接。要到达那里,请运行命令 [WIN+R](键盘 快捷方式)或在文件资源管理器地址栏中输入\\wsl$ 查找 各自的发行版名称并访问它们的根文件系统。

您还可以在 WSL 的 Linux Terminal 中使用 windows 命令。尝试 打开 Linux 发行版(即 Ubuntu),请确保您在 Linux 主目录,输入以下命令:cd ~。然后打开你的 在文件资源管理器中输入 Linux 文件系统(不要忘记 句末):powershell.exe /c start .

【讨论】:

  • 谢谢克莱门特。我不知道我应该这样做。从现在开始我会这样做。希望我有你的 OCR 工具。
  • Clement 没有进行任何 OCR 转换,他只是复制并粘贴了 Microsoft Docs 中的文本并使用 SO markdown 对其进行格式化,您也可以这样做。我们绝不应该将文本、代码和错误作为图像发布,您可以在此处阅读相关内容Why not upload images of code/errors when asking a question?
猜你喜欢
  • 2010-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-20
  • 2013-08-18
  • 2017-02-28
  • 1970-01-01
相关资源
最近更新 更多