基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南

基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南

禅道镜像版本:easysoft/zentao:21.4

Redis版本:redis:6.2.0

Mysql版本:mysql:8.0.35

文章目录

  • **基于Docker-compose的禅道部署实践:自建MySQL与Redis集成及故障排查指南**
      • 一.环境准备
      • 二.编写部署文件
      • 三.网页初始化以及可能遇到的问题
      • 四.遇到的问题以及解决方法
        • 1.问题描述
        • 2.解决办法和问题原因

一.环境准备

#检查是否安装docker-compose
docker-compose --version

image-20250213164350948

#如果没安装则可以执行以下命令安装
wget -O /usr/local/bin/docker-compose https://github.com/docker/compose/releases/download/v2.16.0/docker-compose-linux-x86_64
chmod +x /usr/local/bin/docker-compose
#新建挂载目录
mkdir -p /home/zentao
cd /home/zentao

二.编写部署文件

官方的Yml文件地址如下:go-zentao/hack/docker-compose-cache.yml at master · easysoft/go-zentao

因为此次部署是在已有Mysql和Redis的情况下搭建,所以修改为以下内容:

services:
# zentao servicezentao:image: easysoft/zentao:21.4container_name: zentaopull_policy: alwaysrestart: alwaysports:- '19080:80'volumes:- '/home/zentao/data:/data'environment:- ZT_MYSQL_HOST=<your mysql ip>- ZT_MYSQL_PORT=3306- ZT_MYSQL_USER=root- ZT_MYSQL_PASSWORD=<your mysql pass>- ZT_MYSQL_DB=paco_zentao #数据库名字随意写- ZT_REDIS_HOST=<your redis ip>- ZT_REDIS_PORT=6379- ZT_REDIS_PASSWORD=<your redis pass>- ZT_REDIS_SERIALIZER=igbinary- ZT_CACHE_ENABLE=true- ZT_CACHE_TYPE=redis- ZT_CACHE_SCOPE=private- ZT_CACHE_LIFETIME=0- ZT_REDIS_DATABASE=1- PHP_MAX_EXECUTION_TIME=120- PHP_MEMORY_LIMIT=512M- PHP_POST_MAX_SIZE=128M- PHP_UPLOAD_MAX_FILESIZE=128Mnetworks:- zentao-net
networks:zentao-net:driver: bridge

鉴于大部分人无法拉取到docker hub的镜像,此处有两个方法解决:

1.替换Zentao自己的国内镜像源

# 国内镜像
# image: hub.zentao.net/app/zentao

2.自己搭建一个私有仓库,然后同步到自己的仓库去

参考教程:阿里云容器镜像服务搭一个自己的镜像仓库_aliyun仓库怎么容器镜像-CSDN博客

image-20250213172855611
准备好yml之后就可以运行容器:

#确保yml在/home/zentao目录下
docker-compose up -d

image-20250213171221470

执行成功后如上图所示等待输出,服务已启动完成, 请使用浏览器访问设置的域名或ip:port, 继续完成后续安装向导这段话后。就可以通过IP+19080端口访问禅道了。
image-20250213171248609
然后我们在网页上进行初始化操作。

三.网页初始化以及可能遇到的问题

访问网页后就会看见如下界面。点击开始安装然后一直下一步。

在这里插入图片描述
直到这个页面,确认检查全部通过,然后下一步。
image-20250213171645366

然后确认这个页面的信息是你配置的docker-compose文件中的数据库信息,这一步如果数据库是已经安装过一次了,就必须勾选清空现有数据选项。

image-20250213171744675

然后会继续安装数据库表

image-20250213171838022

正常流程,在数据库安装完成后,点下一步,会直接生成配置文件并保存。如图:

image-20250213173609429

然后设置账号:

image-20250213173700538

然后点击登录:

image-20250213173827545

image-20250213173844661

然后我们在后台,系统设置中的缓存里,点击Redis配置,就能看到已经自动填上了Redis的信息,就部署完成了。
image-20250213173942541

四.遇到的问题以及解决方法

1.问题描述

在网页初始化时,数据库安装完成后,点下一步,正常步骤,会直接生成配置文件并保存。但是我在第一次安装的时候,点击下一步,出现如下情况,提示还没有生成配置文件。

img_v3_02je_db5ddd62-803d-4265-a1ad-64591ba42c4g

2.解决办法和问题原因

在与官方工作人员确定之后,发现出现问题的原因是,我在部署的时候,Redis的密码有特殊字符,导致部署时无法连接上Redis。禅道系统就无法生成session。最后导致生成不了配置文件,我部署的Yml如下:

services:
# zentao servicezentao:image: easysoft/zentao:21.4container_name: zentaopull_policy: alwaysrestart: alwaysports:- '19080:80'volumes:- '/home/zentao/data:/data'environment:- ZT_MYSQL_HOST=<your mysql ip>- ZT_MYSQL_PORT=3306- ZT_MYSQL_USER=root- ZT_MYSQL_PASSWORD=<your mysql pass>- ZT_MYSQL_DB=paco_zentao #数据库名字随意写- ZT_REDIS_HOST=<your redis ip>- ZT_REDIS_PORT=6379- ZT_REDIS_PASSWORD=RBzT,v2y56- ZT_REDIS_SERIALIZER=igbinary- ZT_CACHE_ENABLE=true- ZT_CACHE_TYPE=redis- ZT_CACHE_SCOPE=private- ZT_CACHE_LIFETIME=0- ZT_REDIS_DATABASE=1- PHP_MAX_EXECUTION_TIME=120- PHP_MEMORY_LIMIT=512M- PHP_POST_MAX_SIZE=128M- PHP_UPLOAD_MAX_FILESIZE=128Mnetworks:- zentao-net
networks:zentao-net:driver: bridge

可以看到RBzT,v2y56有特殊字符,,但是碍于环境限制,没法修改Redis密码,所以只能去掉docker-compose.ymlRedis的相关配置,在部署好之后,于网页中自行配置Redisyml如下:

services:
# zentao servicezentao:image: registry.cn-hangzhou.aliyuncs.com/docker_image-ljx/zentao:21.4container_name: zentaopull_policy: alwaysrestart: alwaysports:- '19080:80'volumes:- '/home/zentao/data:/data'environment:- ZT_MYSQL_HOST=<your mysql ip>- ZT_MYSQL_PORT=13306- ZT_MYSQL_USER=root- ZT_MYSQL_PASSWORD=<your mysql pass>- ZT_MYSQL_DB=paco_zentao- PHP_MAX_EXECUTION_TIME=120- PHP_MEMORY_LIMIT=512M- PHP_POST_MAX_SIZE=128M- PHP_UPLOAD_MAX_FILESIZE=128Mnetworks:- zentao-net
networks:zentao-net:driver: bridge

配置Redis的界面还是在这个地方自行配置,效果是一样的:

这个问题,工作人员说会在后续的镜像中修复。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/69894.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

九.Spring Boot使用 ShardingSphere + MyBatis + Druid 进行分库分表

文章目录 前言一、引入依赖二、创建一个light-db_1备用数据库三、配置文件 application-dev.yml四、创建shardingsphere-config.yml完整项目结构 五、测试总结 前言 在现代化微服务架构中&#xff0c;随着数据量的不断增长&#xff0c;单一数据库已难以满足高可用性、扩展性和…

如何借助NoETL指标平台实现数据分析、决策的提效?

通常&#xff0c;企业通过明确分析目标、定位所需分析的数据&#xff0c;再通过多渠道汇集销售数据、客户反馈、市场调研等信息&#xff0c;经过数据清洗、缺失值处理及格式标准化等手段&#xff0c;运用描述性统计、回归分析、聚类分析及关联规则挖掘等多样分析方法&#xff0…

hexo 魔改 | 修改卡片透明度

hexo 魔改 | 修改卡片透明度 ** 博客食物用更佳 博客地址 ** 这是笔者自己瞎倒腾的。作为前端菜鸡一枚&#xff0c;大佬们随便看看就好~ 我用的主题是 butterfly 4.12.0 分析 通过开发者工具可以看出来卡片的背景和 --card-bg 变量有关 再在 sources 下的 css 文件夹下的…

Qt的QTableWidget样式设置

在 Qt 中&#xff0c;可以通过样式表&#xff08;QSS&#xff09;为 QTableWidget 设置各种样式。以下是一些常见的样式设置示例&#xff1a; 1. 基本样式设置 tableWidget->setStyleSheet(// 表格整体样式"QTableWidget {"" background-color: #F0F0F0;…

MySQL、MariaDB 和 TDSQL 的区别

MySQL、MariaDB 和 TDSQL 是三种不同的数据库管理系统&#xff0c;它们在设计理念、功能、性能和使用场景上有一些显著的区别。 以下是对这三者的详细比较和介绍。 1. MySQL 概述 类型&#xff1a;关系型数据库管理系统&#xff08;RDBMS&#xff09;。开发者&#xff1a;最…

制造业物联网的十大用例

预计到 2026 年&#xff0c;物联网制造市场价值将达到 4000 亿美元。实时收集和分析来自联网物联网设备与传感器的数据&#xff0c;这一能力为制造商提供了对生产流程前所未有的深入洞察。物联网&#xff08;IoT&#xff09;有潜力彻底改变制造业&#xff0c;使工厂能够更高效地…

JVM——堆的回收:引用计数发和可达性分析法、五种对象引用

目录 引用计数法和可达性分析法 引用计数法&#xff1a; 可达性分析算法&#xff1a; 五种对象引用 软引用&#xff1a; 弱引用&#xff1a; 引用计数法和可达性分析法 引用计数法&#xff1a; 引用计数法会为每个对象维护一个引用计数器&#xff0c;当对象被引用时加1&…

提升编程效率,体验智能编程助手—豆包MarsCode一键Apply功能测评

提升编程效率&#xff0c;体验智能编程助手—豆包MarsCode一键Apply功能测评 &#x1f31f; 嗨&#xff0c;我是LucianaiB&#xff01; &#x1f30d; 总有人间一两风&#xff0c;填我十万八千梦。 &#x1f680; 路漫漫其修远兮&#xff0c;吾将上下而求索。 目录 引言豆包…

【前端】【面试】vue动态样式总结

在 Vue 中&#xff0c;动态样式的设置是一个常见需求&#xff0c;可通过多种方式实现&#xff0c;以下是对这些方式的详细总结&#xff1a; 1. 绑定 class 属性 对象语法 可以给 :class 绑定一个对象&#xff0c;以动态地切换类名。对象的键是类名&#xff0c;值是一个布尔值…

Java--IO流详解 (上)--字符流

目录 IO流的概念 字符流 输入流 Reader核心方法 1.close() 2.mark(int readAheadLimit) 3.markSupported() 4.read() 5.read(char[] cbuf) 6.read(char[] cbuf, int off, int len) 7.read(CharBuffer target) 8.ready() 9.reset() 10.skip(long n) Reader 的常用…

物联网智能语音控制灯光系统设计与实现

背景 随着物联网技术的蓬勃发展&#xff0c;智能家居逐渐成为现代生活的一部分。在众多智能家居应用中&#xff0c;智能灯光控制系统尤为重要。通过语音控制和自动调节灯光&#xff0c;用户可以更便捷地操作家中的照明设备&#xff0c;提高生活的舒适度与便利性。本文将介绍一…

探讨使用ISVA代替“Open Liberty使用指南及微服务开发示例”中日志审计功能

在Open Liberty使用指南及开发示例&#xff08;四&#xff09;一文开始日志审计功能占有了一定的开发工作量&#xff0c;那么是否可以使用IBM Security Verify Access&#xff08;ISVA&#xff09;代替以节省开发工作&#xff1f;如果可行&#xff0c;那么以后各类应用的日志审…

STM32、GD32驱动TM1640原理图、源码分享

一、原理图分享 二、源码分享 /************************************************* * copyright: * author:Xupeng * date:2024-07-18 * description: **************************************************/ #include "smg.h"#define DBG_TAG "smg&…

Java ArrayList(单列集合)

ArrayList 是 Java 中最常用的一个集合类&#xff0c;它属于 java.util 包。ArrayList 实现了 List 接口&#xff0c;提供了动态数组的功能。与普通数组不同&#xff0c;ArrayList 在元素增删时会自动调整大小&#xff0c;因此它的大小是可变的。 1. ArrayList 的基本特性 动…

二次封装axios解决异步通信痛点

为了方便扩展,和增加配置的灵活性,这里将通过封装一个类来实现axios的二次封装,要实现的功能包括: 为请求传入自定义的配置,控制单次请求的不同行为在响应拦截器中对业务逻辑进行处理,根据业务约定的成功数据结构,返回业务数据对响应错误进行处理,配置显示对话框或消息形…

TOML介绍

0 Preface/Foreword TOML&#xff0c;一种配置文件格式。Toms Obvious Minimal Language. 1 介绍 TOML: Toms Obvious Minimal Language&#xff0c;“显而易见的最小化语言 ” JSON&#xff1a;不支持注释 YAML&#xff1a;过于复杂

python 大数据的优势

在SD-WAN技术与企业网络的应用场景中&#xff0c;结合大数据分析&#xff0c;Python能发挥出独特优势&#xff0c;这些优势主要体现在以下几个方面&#xff1a; - **数据收集与整合**&#xff1a;在SD-WAN网络中&#xff0c;分布着众多设备和链路&#xff0c;会产生海量的网络…

Linux命名管道与共享内存

命名管道与共享内存 命名管道介绍和基本使用 理解了匿名管道后&#xff0c;命名管道的理解就会变得容易。在前面使用匿名管道时可以发现&#xff0c;之所以可以匿名是因为由父进程创建&#xff0c;子进程拷贝所以子进程和父进程都可以看到这个管道。但是如果对于任意两个进程…

TCP 端口号为何位于首部前四个字节?协议设计的智慧与启示

知乎的一个问题很有意思&#xff1a;“为什么在TCP首部中要把TCP的端口号放入最开始的四个字节&#xff1f;” 这种问题很适合我这种搞历史的人&#xff0c;大年初一我给出了一个简短的解释&#xff0c;但仔细探究这个问题&#xff0c;我们将会获得 TCP/IP 被定义的过程。 文…

查看引脚电平

在Linux系统中&#xff0c;通过cat命令查看/sys/class/gpio/export文件并不能直接获取GPIO引脚的高低电平。/sys/class/gpio/export文件用于向系统请求导出&#xff08;即启用&#xff09;某个特定的GPIO引脚&#xff0c;而不是用于读取引脚的状态。 1.导出GPIO引脚&#xff1…