Windows环境下,Hyperf启动太慢的解决姿势参考Windows环境下,Hyperf启动太慢的解决姿势参考

简述

由于我大多数情况下都是在 windows 机器上利用 docker 进行日常开发, 主要项目均为 hyperf ,由于 hyperf 本身的扫描机制,在代码层级较多、代码文件较多的情况下,启动超过 1 分钟,甚至超过 2 分钟是常态,这相当难以忍受,这个问题在 linux 或 mac 下并不会出现,是由于 windows 下的 Docker Desktop 文件共享机制和功能不是那么完美,而且还有很多奇奇怪怪的问题,比如长时间启动(几小时,比如下班忘了关服务)必然出现断开连接的问题,并且只能通过重启整个docker软件甚至重启电脑来恢复正常,无论用的 wsl1 还是 wsl2 都一样有此问题,在最近不是那么忙的时候,尝试解决此问题,也给各位提供参考。

前置准备:

  • windows 中应已经安装好了 Docker Desktop 最新版本
  • 知道 linux 基本指令操作
  • 知道 windows 下如何安装 wsl,如何升级 wsl1 到 wsl2
    • https://learn.microsoft.com/zh-cn/windows/wsl/install

方案讨论

基本思路其实主要是通过 windows 下,启用/安装 wsl 之后,进入市场去搜索 ubuntu 并自行选择一个版本进行安装,我这里习惯18.04,之后的操作,有如下可以选择:

  • ubuntu 中自行通过 apt install xxxx ,自行安装或编译你需要的环境
  • 通过 Docker Desktop 最新版的功能,同步已经安装好的镜像至 ubt 内部,直接可以通过Docker Desktop 工具在 windows 下进行同步的管理

这里我选择的是第二种,因为我跑着 easyswoole 和 hyperf, 他们跑在不同版本的swoole上

为了更优雅的在windows下开发,需要做的操作:

  • sourcetree

    • 为了方便 sourcetree 找到子系统中的文件夹,对ubuntu整个文件右键映射网络驱动盘(默认Z盘),方便 sourcetree 进行识别文件
    • 为了避免 sourcetree 因为 git版本>2.34 会报权限方面的错误,因为高版本的 git 会检测是否属于当前用户,一劳永逸的解决办法就是直接降级 git 到 2.34.1 版本:https://github.com/git-for-windows/git/releases/tag/v2.34.1.windows.1
      • 当前你也可以跟随提示,设置 git config --global --add safe.directory Z:\nbo-project\api,但我觉得没必要了,直接降级一劳永逸,更何况2.34并不老,21年发版的
  • ubuntu的文件换行符与windows下不匹配,CRLF与LF

    • 设置项目级别的 git 参数:
      • 在初次clone项目在ubt之后,打开项目本身的.git 文件,设置 core.safecrlf = true,core.autocrlf = input,参数具体意义下面详细解释,这里单说目的,是为了在windows的phpstorm中打开项目不因为换行符而git提示文件修改,并且完美和使用mac电脑的同事适配
    • 当然你也可以直接设置全局 git config --global core.autocrlf input,但我不建议这样,可能影响别的项目

实操

wsl和ubuntu

参考:https://learn.microsoft.com/zh-cn/windows/wsl/install

  • 进入 windows 市场,
    • 搜索 ubuntu,我这里习惯了 18.04 版本的 ubuntu
    • 安装

image.png

image.png

image.png

  • 安装好了以后,点击
    image.png

  • 第一次点击启动之后,会让你输入用户名和密码,自行输入并成功启动即可

    • 这里的账号密码记住即可,后面基本不用,因为一般设置默认 root 启动
  • 成功安装之后,设置默认 root 启动

    • ubuntu1804.exe config --default-user root

image.png

  • 设置完成点开,可以看到启动时已是 root 用户

image.png

  • ubt 文件在此处,代码编辑器中也可以识别

image.png

  • 你随便新开一个文件夹去放你想放的项目文件
    • 这里你可以选择为你的子系统生成 ssh
    • 但我就偷懒懒得弄了,直接从我的电脑进去ubuntu的文件 右键换出 git bash 即可

docker 设置 wsl2 模式

在安装或升级好 wsl2 以后才可以配置

image.png

  • 升级好了以后,会出现此按钮,点击即可同步原先镜像至ubt中

image.png

日常写代码姿势

在进行上述操作后,我们得到了一个 ubuntu 子系统,并且子系统中的docker与外层windows中的docker其实是共用的东西,无非就是文件地址不一样而已,这给我们开发带来了很多的便利,而不是像以前那样去套娃,wsl中再次安装docker。

但其中一个需要处理的git,因为git的sshkey其实是在windows下的,日常代码git操作,其实可以直接这样,而不必在ubuntu里再次生成git秘钥公钥,再上传至代码云端管理工具处。

你需要在 linux 也就是你的子系统 ubuntu 中启动你的docker,我一般是在子系统直接 docker-compose up -d,然后日常基本上都在windows的docker桌面应用中进行点击操作,进入容器启动项目

image.png

即如图所示,git代码管理可以在windows上直接从我的电脑处进入至ubuntu的文件系统中进行操作,sourcetree phpstorm也可以直接识别这个目录

image.png

经过实测,我这边速度从至少1分钟降低到10S以内,偶尔也可以实现秒启动,开发状态下的热更新问题也少了很多,至此,纵享丝滑,再也不用忍受漫长的扫描时间了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值