启动用户空间代理出错:监听tcp 0.0.0.0:3306时绑定地址已被占用。

63

我需要制作一个 Laravel 应用程序并交付一个 Dockerfile,但我真的被卡住了。在此之前,我在安装 Laravel 时做噩梦了。

我正在尝试获取 dockervel 镜像并按照此处的步骤进行操作: http://www.spiralout.eu/2015/12/dockervel-laravel-development.html

但是当我运行 dartisan make:auth 时,它会产生以下错误:

**ERROR:** for dockervel_mysql_1  **Cannot restart container** c258b418c03cbd6ec02c349c12cf09403f0eaf42fa9248019af7860d037d6474: **driver failed programming external connectivity on endpoint dockervel_mysql_1** (da3dd576458aa1fe3af7b539c48b9d61d97432cf5e9ee02d78562851f53981ae): E**rror starting userland proxy: listen tcp0.0.0.0:3306: bind: address already in use.**

我尝试在docker-compose.yml中更改默认端口。

   ports:
     - "8084:80"

依然没有任何消息,我也尝试在我的机器上停止apache2 (service apache2 stop),尝试使用docker-compose restart和删除docker容器dockervel_mysql_1

我必须提到我已经有一个/var/www/laravel中的Laravel proj.

请帮帮忙!


1
sudo netstat -antp 的输出中,有什么在使用端口3306? - BMitch
3
我收到了这个信息,我猜这是我的本地mysql。三天前,我使用http://tecadmin.net/install-laravel-framework-on-ubuntu/#安装了Laravel和MySQL。非常感谢您的帮助!tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN 1370/mysqld - moonlight
2
goodnesskay的回答帮了我很多。 但是对于我来说,命令是:sudo service mysql stop。 - Ago
14个回答

0

如果您的机器上正在运行Tomcat并连接到MySQL 3306端口,则请先尝试杀死Tomcat,然后再尝试进行docker-compose up操作。

我在本地机器上使用了两个不同版本的MySQL,分别是MySQL 5和Docker上的MySQL 8。因此,当您连接到Tomcat中的mysql5并停止mysql5时,该进程尚未完成,因为Tomcat仍连接到3306端口。杀死Tomcat,然后启动Docker应该可以解决问题。

祝编码愉快!


0

你需要更改mysql端口,因为你正在安装mysql在你的机器上,并且它使用默认端口3306。

现在你正在尝试使dockervel_mysql_1运行到相同的端口3306,这就是为什么你看到错误信息“地址已经在使用中”的原因。

所以,如果你将dockervel_mysql_1端口更改为例如3307,它将正常工作,而不会停止在你机器上运行的mysql。


0

我知道这个问题已经很老了,但仍有人在寻找答案。您不必运行任何kill命令,而是可以使用docker的--remove-orphans标志,它会为您清理它。例如:

docker-compose up -d --build --remove-orphans

-1

这对我有用,只需将应用程序的端口更改为8084:80,就像这里描述的那样。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接