laravel sail开发环境搭建过程中,创建测试项目失败
背景:
本人使用的是windows11操作系统,之前在本地已经搭建好了laravel环境并且已经使用了一段时间,最近希望按照教程做做项目练练手,按照教程想通过laravelsail创建一个项目,下载了新版的docker以及ubantu,也配置了Docker Hub 镜像加速(阿里的也试了)
问题
通过命令curl -s laravel.build/example-app | bash创建项目的时候一直报连接超时,而且ping github不通,但是ping baidu和ping laravel.build是通的,换了各种源都不行,也尝试了配置dns,搞不清到底哪里配置出问题了。
问题解决
感谢各位的回答,问题我解决了,在这里总结一下过程。
1.最开始按照如下方法修改了wsl的dns设置,不起作用。
sudo rm /etc/resolv.conf
sudo bash -c 'echo "nameserver 8.8.8.8" > /etc/resolv.conf'
sudo bash -c 'echo "[network]" > /etc/wsl.conf'
sudo bash -c 'echo "generateResolvConf = false" >> /etc/wsl.conf'
2.我发现子系统里ping不通github和Google,但可以ping国内网站,怀疑是这个问题。但一看主系统也ping不通,我有clash,可以访问外网,但ping不通(可能和那啥有关系,具体还不清楚咋回事)。
后来尝试在C:\Windows\System32\drivers\etc\HOSTS和ubantu的etc/hosts文件里配置ip和主机的映射才行,我配了140.82.113.3 github.com之后就可以ping通了,但创建项目依然失败,也不是这个原因。
3.关于这个问题的转机出现在一篇博客,按照那篇博文,我用wget命令拉取了执行脚本,我得以了解laravel.build的具体执行过程。
最开始按照建议尝试在脚本中添加了代理、修改了composer的镜像配置,但都不起作用。
在此之前我没有用过docker,并不是很了解,最开始我以为是这个命令是在子系统里创建一个容器,并在容器内部署项目,但后来发现脚本第一行docker run –rm(容器运行完毕后自动删除容器),实际上这个命令是利用容器来在本地部署,所以是在容器内执行下载安装的过程出现了问题。
4.在各种东找找西查查,试来试去之后,我发现可能是docker的域名解析失效了。这是我按评论区建议在脚本中加入composer的镜像配置后的报错。因为我在ubantu中ping所有国内网站都是可以的,也就是说如果脚本配置了镜像源,不应该域名解析超时,只可能是docker环境中域名解析出问题了。
为了验证这个猜想,我在网上找了个方法
docker run --rm alpine ping mirrors.tencent.com
执行这个命令后,果真域名解析失败,而在ubantu中ping mirrors.tencent.com是成功的,说明确实是docker的问题。
5.最后根据blog.csdn.net/JineD/article/detail... 提供的方法,windows下在C:\Users<用户名>.docker\daemon.json 中添加”dns”:[“8.8.8.8”,”114.114.114.114”]
执行curl -s laravel.build/example-app | bash
终于成功了!
虽然我也不清楚我默认的docker配置为啥会域名解析失效,但这又是另一个问题了
推荐文章: