当前位置: 首页 > article >正文

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

1 背景描述

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

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

2 查看日志,定位原因

查看禅道日志:

# docker logs  zentao容器didocker 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前面加了一个感叹号取反。

保存文件并重启容器。

再次查看日志,如下图:

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

http://www.lryc.cn/news/2400904.html

相关文章:

  • Spring Boot MVC自动配置与Web应用开发详解
  • OA工程自动化办公系统 – 免费Java源码
  • Apache IoTDB V2.0.3 发布|新增元数据导入导出脚本适配表模型功能
  • 某校体育场馆结构自动化监测
  • MySQL 9.0 相较于 MySQL 8.0 引入了多项重要改进和新特性
  • Android 3D球形水平圆形旋转,旋转动态更换图片
  • 数据结构与算法学习笔记(Acwing 提高课)----动态规划·树形DP
  • FTP 和 SFTP 介绍及 C/C++ 实现分析
  • leetcode hot100刷题日记——36.最长连续序列
  • CentOS7关闭防火墙、Linux开启关闭防火墙
  • PyTorch——搭建小实战和Sequential的使用(7)
  • 基于大模型的腔隙性脑梗塞风险预测及治疗方案研究
  • Python 开发效率秘籍:PyCharm、VS Code 与 Anaconda 配置与实战全解
  • [C]C语言日志系统宏技巧解析
  • 自动驾驶系统研发系列—激光雷达感知延迟:自动驾驶安全的隐形隐患?
  • 内网应用如何实现外网访问?无公网IP本地端口网址服务提供互联网连接
  • 大话软工笔记—组合要素1之要素
  • oracle从表B更新拼接字段到表A
  • 平台化 LIMS 系统架构 跨行业协同与资源共享的实现路径
  • RedisTemplate查询不到redis中的数据问题(序列化)
  • 如何利用乐维网管进行IP管理
  • unix/linux,sudo,其历史争议、兼容性、生态、未来展望
  • git stash命令用法
  • SkyWalking如何实现跨线程Trace传递
  • 软件工程专业的本科生应该具备哪些技能
  • 使用 Spring Boot 3.3 和 JdbcTemplate 操作 MySQL 数据库
  • CentOS 7 修改为静态 IP 地址完整指南
  • 企业级高防CDN选型指南
  • Redis-6.2.9 cluster集群部署和扩容缩容
  • Java求职者面试指南:DevOps技术栈深度解析