一、原因分析

在宿主机中运行下列命令进行检查:

  • ping [容器ip] 可以ping通
  • telnet 127.0.0.1 [映射的web端口] 连接正常
  • telnet 127.0.0.1 [映射的mysql端口] 连上后立刻被切断,提示:"Connetion closed by foreign host"

可以断定是mysql服务的问题


二、修改mysql配置

  1. 禅道docker使用zbox作为运行环境(zbox是轻量php集成环境),其zbox运行mysql后读取的配置文件路径为:"/opt/zbox/etc/mysql/my.cnf"
  2. 在禅道开源版18.6版docker环境中,容器将该配置文件映射到了外部,其路径为:"[/home/ubuntu/zentaopms]/mysql/etc/my.cnf"

    上述 [/home/ubuntu/zentaopms] 为运行docker时映射的宿主机路径,根据自己情况调整
  3. 打开my.cnf该配置文件,将其中"bind-address"所在行后面的ip改为"0.0.0.0"后保存即可

三、重启容器

  1. 重启后,查看容器启动日志是否正常,容器有输出"Zentao is ready to use.",并且web可正常访问,则可以忽略后面内容
  2. 如果你比较幸运和我用了一样的18.6版本,那么恭喜你,重启后会面临另一个问题,容器运行报错:"ln: failed to create symbolic link '/opt/zbox/tmp/mysql/mysql.sock': File exists"

    那么请参考这篇文章:
    禅道18.6 docker版 容器重启后无法运行报错提示"mysql.sock File exists"**

  3. 至此问题应该得到了解决,请在宿主机中再次尝试连接容器内的mysql,如果问题还是没有解决,请重复“原因分析”中的步骤进行排查

标签: mysql, docker, 禅道, zbox, ubuntu

评论已关闭