Ubuntu 20.04下Laravel8启动Sail报错laravel.test构建失败如何解决
报错原因
- 你当前使用的Laravel Sail版本默认的
laravel.test服务基础镜像采用Ubuntu 21.04(代号hirsute),该版本为非LTS版本,2022年1月已结束官方支持,对应的软件源已从Ubuntu官方镜像站点下架,执行apt-get update时无法获取对应版本的软件索引,导致后续依赖包无法安装。 - 次要可能为Docker服务的DNS配置异常,导致容器内部无法正常解析
archive.ubuntu.com等软件源域名,出现解析临时失败的报错。
解决方案
按优先级推荐以下操作:
方案1:升级Laravel Sail版本
新版本Sail已将默认基础镜像替换为长期支持的Ubuntu LTS版本,直接执行以下命令更新Sail即可:
composer require laravel/sail:^1.21 --dev
更新完成后重新执行./vendor/bin/sail up启动服务即可。
方案2:手动修改Dockerfile适配新Ubuntu版本
如果不想升级Sail版本,可手动修改镜像构建配置:
- 进入Sail对应PHP版本的运行时目录,默认路径为
./vendor/laravel/sail/runtimes/8.1(根据你实际使用的PHP版本调整) - 打开目录下的
Dockerfile文件,做两处修改:- 将首行
FROM ubuntu:21.04修改为FROM ubuntu:22.04 - 将文件中所有的
hirsute字符串替换为jammy(Ubuntu 22.04的官方代号)
- 将首行
- 回到项目根目录,执行以下命令重新构建镜像:
./vendor/bin/sail build --no-cache
- 构建完成后执行
./vendor/bin/sail up启动服务。
方案3:修复Docker DNS配置
如果确认是DNS解析问题导致的报错,修改Docker的全局DNS配置:
- 编辑
/etc/docker/daemon.json文件(如果文件不存在则新建),添加以下配置:
{ "dns": ["8.8.8.8", "114.114.114.114"] }
- 重启Docker服务生效:
sudo systemctl restart docker
- 重新执行
sail up命令启动服务。
内容的提问来源于stack exchange,提问作者WaLid LamRaoui
相关产品推荐
相关产品推荐

