WSL + Docker 使用 Laravel Sail 未果

作者: hedeqiang

发布时间: 2020-12-10 15:08:24

昨天看到 Laravel 新出来一个工具 Laravel Sail ,简而言之就是 Laravel 自己出的 基于 Docker 的本地开发环境。

支持 macOS, Linux, and Windows (via WSL2)。

我现在手头上只有 Windows ,所以我们先用 Windows 来体验一下,因我机器已经装了 WSL 和 Docker,所以省略了这些安装过程。

接下来我说一下我趟过得坑,可能只适用于我的环境,你的环境有可能会一路顺风。

最开始我以为要在 WSL 中安装 Docker ,然后我突然发现,WSLdocker-for-windows 他们之间可以互通。所以不需要再 WSL 中安装 Docker。只需要简单的配置一下即可。

First

将 container 设置为“Linux container”,找到你的 Docker 图标 右击然后选择 Linux container,如果已经显示为"Switch to Windows containers",这说明已经在使用Linux container。否则,会显示为“Switch to Linux containers”。

file

Second

打开 Docker 的 Settings 的 General 勾选 Expose daemon on tcp://localhost:2375 without TLSUse the WSL 2 based engine file

ok,接下来我们进到 wsl 中试一下,打卡一个目录 cmd 输入 wsl 会自动进入到 wsl 环境中,我们看下是否 可以在 wsl 中使用 docker ,

file

发现貌似还是不能用,似乎是不支持 wsl1,

The command 'docker' could not be found in this WSL 1 distro.
We recommend to convert this distro to WSL 2 and activate
the WSL integration in Docker Desktop settings.

See https://docs.docker.com/docker-for-windows/wsl/ for details.

ok。点击 https://docs.docker.com/docker-for-windows/wsl/ 链接,我们去看下,定位到 第 6 步,试着看下版本是不是不对 file

检查 wsl 模式

wsl.exe -l -v

之后列出的信息如下所示,版本为1 file

ok,接下来,我们把版本升级 2 上。

 wsl.exe --set-version Ubuntu-20.04 2

将v2设置为以后安装的默认版本

wsl.exe --set-default-version 2

接下来我们再看下使用 wsl.exe -l -v 命令列出的版本 file

可以看到,版本已经为 2 了,那么再次进到 wsl 环境中试下,不出意外的话已经可以使用 docker 命令了

docker

file

OK,既然环境已经没有问题了,我们看下 Laravel Sail 是如何使用的。

首先安装 Laravel 项目

composer create-project laravel/laravel sail

看文档是直接可以使用命令./vendor/bin/sail up 即可

安装完成 进到 sail 项目目录里

cd sail
./vendor/bin/sail up

哇塞,原来真的可以了

file

...........运行了许久 还是报错了....

file

file

暂时先放弃了,稍后再尝试吧......

参考链接: https://zhuanlan.zhihu.com/p/61542198

https://docs.docker.com/docker-for-windows/wsl/

https://laravel.com/docs/8.x/sail

关于极客返利

极客返利 是由我个人开发的一款网课返利、返现平台。包含 极客时间返现、拉勾教育返现、掘金小册返现、GitChat返现。目前仅包含这几个平台。后续如果有需要可以考虑其他平台。 简而言之就是:你买课,我返现。让你花更少的钱,就可以买到课程。

https://geek.laravelcode.cn

https://geek.idaka.ink

版权许可

本作品采用 知识共享署名 4.0 国际许可协议 进行许可。

转载无需与我联系,但须注明出处,注明文章来源 WSL + Docker 使用 Laravel Sail 未果