解决docker运行zentao 报错:ln: failed to create symbolic link ‘/opt/zbox/tmp/mysq

1 背景描述

禅道使用docker部署运行过一段,服务正常。

后因服务器断电重启,禅道服务也随docker一起启动,但是服务却无法访问。如下如:

2 查看日志,定位原因

查看禅道日志:

复制代码
# docker logs  zentao容器di

docker logs  e35d4b4d9f62

错误显示:In: failed to create symbolic link '/opt/zbox/tmp/mysql/mysql.sock': File exists

这个错误通常发生在容器启动过程中,尝试创建一个符号链接(symbolic link)时,但目标位置已经存在一个同名的文件(或目录)。

具体原因分析:

在 Docker 中运行禅道(Zentao)时出现 failed to create symbolic link '/opt/zbox/tmp/mysql/mysql.sock': File exists 错误,主要由以下原因导致:

  1. 残留文件冲突

    • 当容器重启 或重新创建 时,如果宿主机通过 -v 挂载了持久化目录(如 ./zbox:/opt/zbox),残留的 mysql.sock 文件会保留在宿主机目录中。

    • 容器启动时,MySQL 服务尝试创建新的 mysql.sock 符号链接,但旧文件已存在,导致冲突。

  2. 容器未正确清理

    • 如果之前容器非正常退出(如强制终止 docker kill),MySQL 未完成清理流程,导致 mysql.sock 文件未被删除。
  3. 权限问题(次要可能)

    • 挂载目录的权限不足,导致容器无法覆盖已有文件(但错误提示明确为 File exists,优先级较低)。

为什么已经存在?

1.可能是由于之前的容器运行后异常退出,没有正确清理,导致该文件残留。

2.或者,在宿主机的卷挂载(volume mount)中,如果该目录被挂载到宿主机的一个目录,而宿主机目录中已经存在`mysql.sock`文件,那么容器启动时就会看到这个文件已经存在。

3 解决方案

方案1 : 删除容器内已存在的文件:/opt/zbox/tmp/mysql/mysql.sock

复制代码
#进入容器

docker exec --it <container id or name> /bin/bash

# 查看文件
cd /opt/zbox/tmp/mysql

# 删除文件
rm mysql.sock

重启容器即可。

方案2:修改启动脚本

复制代码
#进入容器
docker exec --it <container id or name> /bin/bash
#找到运行脚本
cd /etc/s6/s6-available/apache/
#修改脚本
vi run
#该禅道版本为18.5,修改第21行
原文: if [ -e /data/mysql/tmp/mysql.sock ];then
修改为:if [! -e /data/mysql/tmp/mysql.sock ];then

本质就是在-e前面加了一个感叹号取反。

保存文件并重启容器。

再次查看日志,如下图:

再次访问服务,服务能正常打开。如下图:

相关推荐
NailiConveyor9 分钟前
柔性物流方案如何适配工厂升级?自动化输送流水线定制要点
大数据·运维·自动化·制造·业界资讯
小沈同学呀13 分钟前
【Agent开发第十五期】部署上线:把 Alex 搬进浏览器,15 期全栈串联收官
docker·agent·从零搭建ai助手
Lsetea25 分钟前
Certbot webroot申请SSL证书总是404:Nginx挑战目录与路径映射检查
运维·nginx·https·ssl证书·certbot
如若12327 分钟前
Windows SSH + Headscale/Tailscale 组网及免密登录完整配置教程
运维·windows·ubuntu·ssh·内网穿透
开开心心就好30 分钟前
音频降噪剪辑工具,音量裁剪一键处理
运维·服务器·前端·spring·ocr·音视频·1024程序员节
lwx91485233 分钟前
Docker-安装SSH服务
docker·容器·ssh
李纲明1 小时前
WordPress 白屏或提示「出现了严重错误」:先开 WP_DEBUG 抓致命错误,再二分插件与主题
运维·php·debug·wordpress·白屏·插件冲突·devdiy
Ruiery2 小时前
Linux 6.6内核并发与同步(五):mutex 可睡眠锁
linux·运维·服务器
莫晓燚2 小时前
双机部署若依 (RuoYi‑Vue) 传统环境部署---实战
linux·运维·数据库·redis·mysql·nginx·ruoyi