Windows搭建 Laravel Sail 开发环境遇到的坑

最近试着用sail搭建开发环境,教程地址:搭建 Laravel Sail 开发环境 - Windows
因为用到了docker等,由于网络原因,遇到了很多坑,由些可解,有些只能绕开…

前往 Docker 官网下载 Docker Desktop

官网打不开啊,下载也太慢了。用阿里云的镜像吧:developer.aliyun.com/mirror/。包括docker hub的加速也可以用阿里云的(需要阿里云的账号)。

创建测试项目时发现没有 vendor 目录

其实是因为没有把整个项目文件下载全,就是composer的问题。要设置镜像源,但是不是在 wsl 的Ubuntu里,是在新拉取的 laravelsail/php82-composer 中。
首先,修改命令,不要直接 bash 中直接运行了,改成输出成文件,然后进行修改。

# curl -s https://laravel.build/example-app | bash 改为
curl -s https://laravel.build/example-app > install.sh

看一下文件内容:

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 \
    --pull=always \
    -v "$(pwd)":/opt \
    -w /opt \
    laravelsail/php82-composer:latest \
#     bash -c "laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailpit,selenium " 改为composer用阿里云的镜像站
 bash -c "composer config -g repo.packagist composer https://mirrors.aliyun.com/composer/ && laravel new example-app && cd example-app && php ./artisan sail:install --with=mysql,redis,meilisearch,mailpit,selenium " 

cd example-app

# Allow build with no additional services..
if [ "mysql redis meilisearch mailpit selenium" == "none" ]; then
    ./vendor/bin/sail build
else
    ./vendor/bin/sail pull mysql redis meilisearch mailpit selenium
    ./vendor/bin/sail build
fi

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

echo ""

if sudo -n true 2>/dev/null; then
    sudo chown -R $USER: .
    echo -e "${BOLD}Get started with:${NC} cd example-app && ./vendor/bin/sail up"
else
    echo -e "${BOLD}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 "${BOLD}Thank you! We hope you build something incredible. Dive in with:${NC} cd example-app && ./vendor/bin/sail up"
fi

这个文件主要完成三个功能:拉取 laravelsail/php82-composer 镜像,建了个 laravel 的空项目;docker 拉取了mysql redis meilisearch mailpit selenium四个镜像;用sail build 也就是docker compose build命令执行项目目录下的 docker-compose.yml 文件。
前两项执行还是顺利,最后一项很麻烦。执行完这一步后,docker中的镜像如下,除了划线那个,那个要接下来自己build的
Windows搭建 Laravel Sail 开发环境遇到的坑

sail build 时 Ubuntu 秘钥验证的问题

sail build 也就是用docker compose build命令执行项目目录下的 docker-compose.yml 文件,然后调用./vendor/laravel/sail/runtimes/8.2 创建一个基于Ubuntu的新镜像,再与原来的镜像连接起来,组成开发环境。
这步跟网络非常相关,在有些网络环境下能成功,在有些网络环境下,是如何也无法成功啊!
主要是这个错误:

The following signatures couldn’t be verified because the public key is not available: NO_PUBKEY 4F4EA0AAE5267A6C

搜到的大部分处理方式是apt-key添加,如下:

sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 4F4EA0AAE5267A6C

但是有时,同样的网络环境中,在 wsl 的 Ubuntu 中能成功,但是在 docker 中 Ubuntu 就是不成功,所以别浪费时间了,打包docker save构建成功的镜像,然后导入到docker load到需要的地方就行吧!
两篇非常有用的参考文献:

  1. 将 Laravel 开发环境由 Homestead 迁移到 Laravel Sail ( Docker ) 完整详细教程
  2. 使用构建好的 Docker 镜像来搭建 Laravel Sail 开发环境,解决 Laravel Sail 镜像构建失败的问题

总结

  1. laravel的文档说:

    Laravel Sail 是一个轻量级的命令行界面,用于与 Laravel 的默认 Docker 开发环境进行交互。Sail 为使用 PHP, MySQL, 和 Redis 构建 Laravel 应用提供了一个很好的起点,不需要事先有 Docker 经验。

但是,除非非常好的网络环境,一路顺利。否则,不知道 docker compose 如何使用 docker-compose.yml,不知道 Dockerfile 的编写规则,没法调试和使用。

  1. 搭个环境真重啊,docker的安装文件和镜像文件都在C盘,还改不了设置。装完感觉得都10多G的空间,镜像有6个,一个还运行时不用。编码时,一开 docker,内存和CPU只奔100%去了。
《L01 基础入门》
我们将带你从零开发一个项目并部署到线上,本课程教授 Web 开发中专业、实用的技能,如 Git 工作流、Laravel Mix 前端工作流等。
《L03 构架 API 服务器》
你将学到如 RESTFul 设计风格、PostMan 的使用、OAuth 流程,JWT 概念及使用 和 API 开发相关的进阶知识。
讨论数量: 3

我是直接修改docker-compose.yml文件把除mysql、redis外的都删除,因为用不到,所以启动时只会启动3个,节省很多

5个月前 评论
zhuameng (楼主) 5个月前

百度搜一下, 可以限制 win 下 linux 子系统的资源占用的。 如果不限制的话, 确实子系统会把所有的富余内存都占了。

5个月前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!