Laravel Sail启动失败:镜像解析及构建报错求助
执行bash ./vendor/bin/sail up启动Laravel Sail时出现警告:
bash ./vendor/bin/sail up
[+] Running 1/1
! laravel.test Warning failed to resolve reference "sail-8.4/app:latest": failed to do request: Head "https://sail-8.4/v2/a...
已尝试的操作:
- Docker登录
- 执行
composer update - 重新安装Laravel Sail
- 多次重装Docker
当前环境信息:
- 使用WSL 2作为Docker引擎,Docker配置如下:
{ "builder": { "gc": { "defaultKeepStorage": "20GB", "enabled": true } }, "dns": [ "8.8.8.8", "8.8.4.4" ], "experimental": false }
- Laravel 11、PHP 8.4、Sail 8.4、最新版Docker、Windows 11系统
额外问题:
pgsql、redis、ubuntu等镜像可正常构建,但Laravel应用镜像无法构建- 重复执行命令后出现构建错误:
Some packages could not be installed. This may mean that you have
1449.7 requested an impossible situation or if you are using the unstable [+] Running 0/1e to correct problems, you have held broken
packages. ⠦ Service laravel.test Building
1512.6s failed to solve: "/bin/sh -c apt-get update && apt-get upgrade -y && mkdir -p /etc/apt/keyrings && apt-get
install -y gnupg gosu curl ca-certificates zip unzip git supervisor
sqlite3
1. 检查WSL网络连通性
在WSL终端执行以下命令测试网络是否正常:
ping -c 4 deb.debian.org curl -I https://deb.debian.org/debian/dists/bookworm/InRelease
如果网络不通,重置WSL网络:
wsl --shutdown # 重启WSL后再次测试网络
2. 替换APT源为国内镜像
修改项目根目录下的docker-compose.yml,找到laravel.test服务的build配置,在apt-get update前添加国内源替换命令:
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \ sed -i 's/security.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list && \ apt-get update && apt-get upgrade -y \ && mkdir -p /etc/apt/keyrings \ && apt-get install -y gnupg gosu curl ca-certificates zip unzip git supervisor sqlite3
3. 手动拉取Sail基础镜像
在WSL终端执行命令提前拉取所需基础镜像:
docker pull laravelsail/php84-composer:latest
拉取完成后再执行sail up
4. 调整Docker构建超时时间
打开Docker Desktop,进入Settings -> Build Settings,增加构建超时时间(例如设置为3000秒),避免因网络缓慢导致构建中断。
5. 清理Docker缓存并重新构建
执行以下命令清理旧缓存,再重新构建镜像:
docker system prune -a sail build --no-cache
内容的提问来源于stack exchange,提问作者Yassir A. Alostath

