Docker 启动应用时报:start xxx error: dial tcp {ip}:3306: i/o timeout 解决思路

599 阅读1分钟

原来一直正常使用,一段时间后更新应用,就发现的启动失败(这里容易误导为程序问题)。检查出现容器的网段和以前启动的容器网段不一致,如果有同学碰到这类问题,可以参考以下解决思路。

报错信息如下:

fff$ docker logs ef3f119870bd

wait-for-it.sh: waiting 60 seconds for rabbitmq:5672 wait-for-it.sh: rabbitmq:5672 is available after 7 seconds start xxx error: dial tcp {ip}:3306: i/o timeout db Connect() xxx/cmd/db/mysql.initDB /go/src/xxx/cmd/db/mysql/init.go:190 xxx/cmd/db/mysql.InitSDKDB /go/src/xxx/cmd/db/mysql/init.go:144 xxx/configfile.InitDB /go/src/xxx/configfile/init.go:26 main.start /go/src/xxx/main.go:89

. . .

. . .

InitSDKDB error xxx/configfile.InitDB

解决思路:

进入容器,ping ip是否能平通,能ping通但是还是报错:

  • 查看容器中的ip,确认mysql中的user表是否添加容器ip网段的白名单。
  • 确认防火墙层面有无限制。(我的报错原因是端口被墙了)

以上解决思路仅作参考。