重学Laravel小记
重学Laravel小记
记一次搭建开发环境阶段修改Bug的经历
笔者已于很早的时候安装过wsl+docker以求在这样的开发环境之下学习开发Laravel。
今天笔者睽违已久打开终端搭载的ubuntu试图使用以下命令(注:该命令也只允许在进驻到开发项目中启动才有卵用)
./vendor/bin/sail up
然而显示的结果却是如是
[+] Running 6/6
⠿ Container example-app-redis-1 Running 0.0s
⠿ Container example-app-meilisearch-1 Running 0.0s
⠿ Container example-app-mysql-1 Created 0.0s
⠿ Container example-app-mailhog-1 Running 0.0s
⠿ Container example-app-selenium-1 Running 0.0s
⠿ Container example-app-laravel.test-1 Recreated 1.6s
Attaching to example-app-laravel.test-1, example-app-mailhog-1, example-app-meilisearch-1, example-app-mysql-1, example-app-redis-1, example-app-selenium-1
Error response from daemon: Ports are not available: exposing port TCP 0.0.0.0:3306 -> 0.0.0.0:0: listen tcp 0.0.0.0:3306: bind: Only one usage of each socket address (protocol/network address/port) is normally permitted.
核心重点自然是最后的一段话,3306端口出了很大的问题。通常情况下,出现这个问题的原因可能有:
- 端口冲突: 可能已经有一个进程在使用端口
3306
,或者该端口已经被其他容器占用。 - 网络策略或防火墙: 系统的网络策略或防火墙可能会限制端口映射,导致 Docker 无法绑定到指定的端口。
- Docker 网络问题: Docker 网络可能出现问题,可能需要重启 Docker 守护进程或清理无用的网络。
- 其他配置问题: 可能存在其他配置问题,例如 Docker Compose 配置或其他容器相关的配置。
我个人隐隐约约感觉到因为第一个原因出错的可能性很大,于是打开powershell开始排查
PS CC:\> netstat -ano | Select-String ":3306"
TCP 0.0.0.0:3306 0.0.0.0:0
LISTENING 5708
TCP 0.0.0.0:33060 0.0.0.0:0
LISTENING 5708
TCP [::]:3306 [::]:0
LISTENING 5708
TCP [::]:33060 [::]:0
LISTENING 5708
查出占用3306端口的进程是5708,至此问题已经基本解决大半了。于是进一步调查5708的进程名称是什么
PS C:\> Get-Process -Id 5708 | Select-Object Name, Path
Name Path
---- ----
mysqld
至此我才想起来,大概在两周以前,我的电脑被一位前辈强行安装了一个mysql8.0,就是这个开机自启动的mysql8.0占用了我的3306。然后我进一步调查mysql服务的名字是什么
PS C:\Users\FredZhu> Get-service
Status Name DisplayName
------ ---- -----------
Stopped AarSvc_91a4f Agent Activation ...
Stopped AJRouter AllJoyn Router Se...
…………
Running MySQL80 MySQL80
查出服务名称为MySQL80。接下来的操作就很明朗了,终止它之后并且检查
PS C:\Users\FredZhu> Stop-Service -Name MySQL80
PS C:\Users\FredZhu> Get-Service -Name MySQL80
Status Name DisplayName
------ ---- -----------
Stopped MySQL80 MySQL80
另外提一下设置mysql80开机自启
PS C:\> Get-Service -Name MySQL80 | Select-Object DisplayName, StartType
DisplayName StartType
----------- ---------
MySQL80 Automatic
使用此命令查看该服务的开机自启与否状态。
PS C:\> Set-Service -Name MySQL80 -StartupType Disabled
PS C:\> Get-Service -Name MySQL80 | Select-Object DisplayName, StartType
DisplayName StartType
----------- ---------
MySQL80 Disabled
这里我们通过以上命令使得开机自启状态被关闭,并且我们经过再次核验确认,开机自启的选项确实已经被关闭。
OK!
让我们再次启动一下看看!
@LAPTOP-DK38CGUO:~/example-app$ ./vendor/bin/sail down
@LAPTOP-DK38CGUO:~/example-app$ ./vendor/bin/sail up
大功告成!
点击左下角的shop竟然还有周边商品可以购买,就是价格……
本作品采用《CC 协议》,转载必须注明作者和本文链接
哈哈,开头是笔者,后面怎么又变成我了
之前没发现这个
welcome
欢迎页, 竟然有个商城呢