启动专案 (Docker)

启动 Laravel 专案前的环境设置还是挺麻烦的,不过目前 Laravel 官方指南的安装方式变成用 Laravel Sail 直接建立一个 Docker ,就不用那麽伤脑筋了,理论上。

Sail

https://github.com/laravel/sail

Laravel Sail 会建立包含资料库在内的 Laravel 环境容器,并且让我们可以直接由指令视窗操作容器中的 Laravel 专案。

快速安装

指令

curl -s "https://laravel.build/example-app" | bash

在 Linux 跟 MacOS 下可以直接使用着个指令,不过在 windows 要藉由 WSL (Windows Subsystem Linux) 执行。

如果指令正确执行的话会做几件事:

  • 下载 laravelsail/php80-composer 这个 docker image
  • 藉由 php80-composer 建立 example-app 专案,并安装 Sail

example-app 是专案目录的名称,可以替换

顺利的话等他跑完就可以进到专案中执行 Sail

cd example-app
./vendor/bin/sail up

而我就是特别不顺利的那个,在 Windows 底下尝试安装时撞了好多墙 (大多是 WSL 的问题),这边记录一下

Windows 环境设置

安装 WSL

直接参考官方文件,蛮详细的。

安装 Docker Desktop

官方文件

这边要特别注意步骤 3 跟 4 ,要设定 Docker 可被 WSL 取用才能够在 WSL 中使用 Docker 的指令。

错误: docker is not connected

在进入 Ubuntu 试图执行 Docker 指令时可能会出现的错误。

首先确定上面安装 Docker 时有设定可被 WSL 取用。

另外我遇到的是安装 Microsoft Store 中的 Ubuntu 时不管怎麽设定都连不上 Docker,後来是改用 Ubuntu 20.04 LTS 才成功连上

错误: invalid character 'u' looking for beginning of value

执行创建专案指令时可能发生。

curl -s "https://laravel.build/example-app" | bash

问题发生在安装脚本上,可以试着开启连结 https://laravel.build/example-app ,可以看到脚本内容。

docker info > /dev/null 2>&1

# Ensure that Docker is running...
if [ $? -ne 0 ]; then
    echo "Docker is not running."

    exit 1
fi

docker run --rm \
    -v $(pwd):/opt \
    -w /opt \
    laravelsail/php80-composer:latest \
    bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailhog,selenium"

cd example-app

CYAN='\033[0;36m'
LIGHT_CYAN='\033[1;36m'
WHITE='\033[1;37m'
NC='\033[0m'

echo ""

if sudo -n true 2>/dev/null; then
    sudo chown -R $USER: .
    echo -e "${WHITE}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
    echo -e "${WHITE}Please provide your password so we can make some final adjustments to your application's permissions.${NC}"
    echo ""
    sudo chown -R $USER: .
    echo ""
    echo -e "${WHITE}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi

这边确认起来应该是因为 11~14 行的指令有退行,导致 Docker 无法执行。

解决办法就是复制这份脚本到本地,把退行删掉,然後手动执行 bash。
需要改专案名称的话就手动替换掉脚本内的 example-app

Compoer Update Dependencies 後 Killed 中断

成功执行脚本後开始建立 Laravel 专案, Composer 却安装不了套件。

原因: WSL 记忆体不足。

找到 .wslconfig,一般放在 C:\Users\<使用者> 底下

// .wslconfig
[wsl2]
memory=128GB  //将记忆体改大
swap=0
localhostForwarding=true

可以视需求调整分配给 WSL 的记忆体,我是拉到超大让 WSL 可取用所有记忆体。

专案初始画面

故障都排除的话 sail up 指令可以成功执行,就会开始容器的建置,第一次建置会跑比较久一些。

当 sail up 的指令跑完之後可以到 Chrome 网址输入 locahost ,就能看到 Laravel 预设专案的欢迎画面。

References

Laravel Installation

<<:  [Day-17] R语言 - 分群应用(一) GMM数值补值-下 ( Fill.NA with GMM in R.Studio )

>>:  检查资讯内容(我也不知道我在做啥,不要理我T^T)

万事起头难

我对VR的第一印象,就是一个人戴着罩住眼睛的头盔,手拿着摇杆的游戏。但是这个软件到底要怎麽制作,且是...

[Day25] Tableau 轻松学 - TabPy 使用方法 2

前言 直接将所有 Python 程序写在工作簿内的第一种 TabPy 使用方法我们已经学会了,但这种...

Day 15 -资料查询语言 INNER JOIN!

INNER JOIN (内部连接) 为等值连接,必需指定等值连接的条件,而查询结果只会返回符合连接条...

服务链接(service mesh)不可能在基於微服务的应用程序中直接与客户端交互

-API 闸道器和服务网格(来源:Liran Katz) 实施 API 闸道器以促进跨境通信;他们...

【第十七天 - Flutter Cloud Messaging(上)】

前言 今日的程序码 => GITHUB 这次要来介绍 Flutter 的 Cloud Mess...