【Docker】使用docker启动禅道出现mysql.sock 文件已经存在的bug

1.问题产生

1.最近刚把服务器停机迁移后重启禅道查看日志一直报错:failed to create symbolic link '/opt/zbox/tmp/mysql/mysql.sock': File exists

2.排查问题:

a.因为禅道是开源的,我们在github中找到docker镜像仓库:https://github.com/quicklyon/zentao-docker

b.在该仓库中搜索"/opt/zbox/tmp/mysql/mysql.sock"内容,可以找到此文件:https://github.com/quicklyon/zentao-docker/blob/79ea1594e61729d095e178a5fea5362352fbe631/debian/rootfs/etc/s6/s6-available/apache/run#L22C14-L22C14

c.通过查看代码发现其中的if逻辑为:"如果文件存在则创建链接",很明显这段逻辑写反了(bug实锤了)

知道问题了那就修改启动脚本

1.我们尝试修改容器的启动文件的逻辑,文件路径为:/etc/s6/s6-available/apache/run

2.在容器中找到:/etc/s6/s6-available/apache/run文件并打开

将其中的"if [ -e /data/mysql/tmp/mysql.sock ];then"改为
"if [ ! -e /data/mysql/tmp/mysql.sock ];then" 即可,本质就是在-e前面加了一个感叹号取反!

3.保存文件并重启容器

4.再次查看容器日志,容器有输出"Zentao is ready to use.",并且web可正常访问,那么问题支持就解决了

相关推荐
春日见1 小时前
如何创建一个PR
运维·开发语言·windows·git·docker·容器
DARLING Zero two♡1 小时前
告别 Docker 命令行!Portainer+cpolar 让容器管理从局域网走向公网
运维·docker·容器
斯普信专业组1 小时前
构建基于MCP的MySQL智能运维平台:从开源服务端到交互式AI助手
运维·mysql·开源·mcp
liu****2 小时前
2.深入浅出理解虚拟化与容器化(含Docker实操全解析)
运维·c++·docker·容器·虚拟化技术
Exquisite.2 小时前
Mysql
数据库·mysql
logocode_li3 小时前
OCI/CRI 双标准下:从 dockerd 到 containerd 的 K8s 运行时迭代史
docker·云原生·容器·k8s
承渊政道3 小时前
Linux系统学习【Linux基础开发工具】
linux·运维·笔记·学习·centos·编辑器
❀͜͡傀儡师13 小时前
centos 7部署dns服务器
linux·服务器·centos·dns
_运维那些事儿14 小时前
VM环境的CI/CD
linux·运维·网络·阿里云·ci/cd·docker·云计算
·云扬·15 小时前
MySQL Binlog落盘机制深度解析:性能与安全性的平衡艺术
android·mysql·adb