Laravel Sail 启动失败:`tee: /etc/apt/keyrings/ppa_ondrej_php.gpg: No such file or directory`
Laravel Sail 依赖于 docker 给 laravel 本地化开发提供了一个开发环境。它在 laravel 高版本里是默认安装的。
执行 php artisan sail:install
会生成一个 docker-composer.yml
文件,默认选择安装的项为 mysql,之后可以根据需求安装 redis 等。
在启动 Sail 时,会根据 docker-composer.yml
文件安装 sail-8.2/app 等,然后安装过程中失败报错:
...
45.59 tee: /etc/apt/keyrings/ppa_ondrej_php.gpg: No such file or directory
------
failed to solve: process
...
因为 laravel sail v1.23
当前版本默认使用的是 vendor/laravel/sail/runtimes/8.2/Dockerfile
,里面安装的是 php-8.2
,而本地是 php 8.1
。感觉可能跟本地的 php 版本有关系,就操作 在 Mac 上使用 Homebrew 升级到 PHP 8.2。
然后在此启动依然报相同的错。现在想想,他是要在 docker 镜像容器中安装 php,8.1 还是 8.2 对 laravel 来说都没有问题,因为 laravel 10.10 对于 php 8.1 和 8.2 都是支持的。
之后从 Dockerfile 中的 FROM ubuntu:22.04
猜测是不是需要先安装一下这个 ubuntu:22.04
。使用 docker pull ubuntu:22.04
安装镜像之后再次执行,没有用。
learnku 社区 里找到一个 Laravel Sail 环境下启动项目出现: ERROR: Service 'laravel.test' failed to build,报错信息不一样:failed to fetch http://......
。问答里面提到需要更换 docker 的镜像源,且是更改为中科大的镜像源。但其中的 vendor/laravel/sail/runtimes/8.2/sources.list
文件在当前的 sail
版本里不存在。尝试创建该文件并复制粘贴镜像地址,对启动没有影响,依然报相同的错。
然后想到,我之前也做过更新 docker
源,Docker Desktop
设置 -> Docker Engine
中 registry-mirrors
项。之前使用的是阿里云的镜像 "https://1bflxq6k.mirror.aliyuncs.com",
,替换成使用中科大的镜像 "https://docker.mirrors.ustc.edu.cn",
保存提交即可。注意:不要使用添加多条镜像,只使用一条即可。
然后再次启动 Sail,成功!
其他的 docker 镜像:
"https://docker.mirrors.ustc.edu.cn",
"https://registry.docker-cn.com",
"http://hub-mirror.c.163.com",
"https://cr.console.aliyun.com",
"https://mirror.ccs.tencentyun.com"