基于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.rhkb.cn/news/19519.html

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

相关文章

【Java八股文】01-Java基础面试篇

【Java八股文】01-Java基础面试篇 概念Java特点Java为什么跨平台JVM、JDK、JRE关系 面向对象什么是面向对象&#xff0c;什么是封装继承多态&#xff1f;多态体现的方面面向对象设计原则重载重写的区别抽象类和实体类区别Java抽象类和接口的区别抽象类可以被实例化吗 深拷贝浅拷…

基于Qt 和微信小程序的用户管理系统:WebSocket + SQLite 实现注册与登录

目录 一. 概要 二. 技术栈 三. 系统功能设计 3.1 功能模块 3.2 数据表设计 四. 具体实现 4.1 Qt 服务端 4.1.1 初始化 WebSocket 服务器 4.1.2 用户管理界面 4.2 微信小程序端 4.2.1 注册功能 4.2.2 登录功能 五. 运行效果 六. 源码下载 一. 概要 在物联网和智能设备…

【STM32】舵机SG90

1.舵机原理 舵机内部有一个电位器&#xff0c;当转轴随电机旋转&#xff0c;电位器的电压会发生改变&#xff0c;电压会带动转一定的角度&#xff0c;舵机中的控制板就会电位器输出的电压所代表的角度&#xff0c;与输入的PWM所代表的角度进行比较&#xff0c;从而得出一个旋转…

PostgreSQL:备库的延迟问题处理步骤

目录标题 1. 查看主备状态计算方式&#xff1a;实际情况&#xff1a;举个例子&#xff1a; 2. 查看历史状态3. 分析日志文件4. 查看数据库层面的复制状态5. 检查活动事务6. 检查系统资源7. 检查网络状况8. 检查复制槽状态9. 检查未提交的两阶段事务 要排查 PostgreSQL 备库的延…

【重构谷粒商城】06:Maven快速入门教程

重构谷粒商城06——Maven快速入门教程 前言&#xff1a;这个系列将使用最前沿的cursor作为辅助编程工具&#xff0c;来快速开发一些基础的编程项目。目的是为了在真实项目中&#xff0c;帮助初级程序员快速进阶&#xff0c;以最快的速度&#xff0c;效率&#xff0c;快速进阶到…

【Python】错误异常

个人主页&#xff1a;Guiat 归属专栏&#xff1a;Python 文章目录 1. 错误和异常的概念1.1 错误1.2 异常 2. 常见的内置异常类型2.1 ZeroDivisionError2.2 IndexError2.3 KeyError2.4 TypeError 3. 异常处理机制3.1 try-except 语句3.2 try-except-else 语句3.3 try-except-fin…

Win11 远程 连接 Ubuntu20.04(局域网)

Win11 远程 连接 Ubuntu20.04(局域网&#xff09; 0. Ubuntu 开启共享1. Ubuntu系统中安装RDP服务器2.windows中连接使用方式1&#xff1a;远程桌面连接(winr: mstsc)方式2&#xff1a;mobaXterm 3 问题远程连接后出现黑屏 参考文献: 0. Ubuntu 开启共享 在ubunt设置中&#x…

visutal studio 2022使用qcustomplot基础教程

编译 下载&#xff0c;2.1.1版支持到Qt6.4 。 拷贝qcustomplot.h和qcustomplot.cpp到项目源目录&#xff08;Qt project&#xff09;。 在msvc中将它俩加入项目中。 使用Qt6.8&#xff0c;需要修改两处代码&#xff1a; L6779 # if QT_VERSION > QT_VERSION_CHECK(5, 2, …

ElasticSearch详解

声明 内容来源尚硅谷知识星球谷粒随享项目&#xff0c;部分概念性的内容&#xff0c;就使用对应文档填写了&#xff0c;若有侵权联系作者删除。 检索模块 技术栈&#xff1a;ElasticSearch ElasticSearch介绍 1.1 elasticsearch 简介 官网: https://www.elastic.co/ Ela…

250214-java类集框架

引言 类集框架本质上相当于是容器&#xff0c;容器装什么东西由程序员指定 1.单列集合 单列集合是list和set&#xff0c;list的实现类有ArrayList和LinkedList&#xff0c;前者是数组实现&#xff0c;后者是链表实现。list和set&#xff0c;前者有序、可重复&#xff0c;后者…

Vue3(3)

一.具体业务功能实现 &#xff08;1&#xff09;登录注册页面 [element-plus 表单 & 表单校验] 功能需求说明&#xff1a; 1.注册登录 静态结构 & 基本切换 2.注册功能 (校验 注册) 3.登录功能 (校验 登录 存token) import request from /utils/request// 注册接…

数据结构 day05

数据结构 day05 5. 队列5.3. 链式队列5.3.1. 特征5.3.2. 代码实现 6. 双向链表6.1. 特性6.2. 代码实现 5. 队列 5.3. 链式队列 5.3.1. 特征 逻辑结构&#xff1a;线性结构 存储结构&#xff1a;链式存储 操作&#xff1a;创建、入列、出列、判空、清空 5.3.2. 代码实现 头文…

Uniapp 短视频去水印解析工具开发实现

最近搞了一个有意思的小工具——短视频去水印解析器&#xff01;这玩意儿可以把短视频中的水印给抹掉&#xff0c;还能提取视频、封面等资源。整个项目用了 Uniapp 开发&#xff0c;做完后体验了一下&#xff0c;发现还挺顺手。今天就来跟大家聊聊实现思路和代码细节~ 需求分析…

HTML【详解】input 标签

input 标签主要用于接收用户的输入&#xff0c;随 type 属性值的不同&#xff0c;变换其具体功能。 通用属性 属性属性值功能name字符串定义输入字段的名称&#xff0c;在表单提交时&#xff0c;服务器通过该名称来获取对应的值disabled布尔值禁用输入框&#xff0c;使其无法被…

什么是MVC?什么是SpringMVC?什么是三层架构?

文章目录 应用分层什么是MVC?什么是 SpringMVC&#xff1f;三层架构三层架构和MVC的关系 应用分层 在讲解什么是MVC之前&#xff0c;先来理解一下什么是应用分层。 应用分层是一种软件开发设计思想&#xff0c;将应用程序划分成N个层次&#xff0c;每个层次都分别负责自己…

【深度学习】深度学习和强化学习算法——深度 Q 网络DQN

深度 Q 网络&#xff08;Deep Q-Network, DQN&#xff09; 详解 什么是DQNDQN 的背景DQN 训练流程 2 DQN 的核心思想2.1 经验回放&#xff08;Experience Replay&#xff09;2.2 目标网络&#xff08;Target Network&#xff09;2.3 ε-贪心策略&#xff08;ε-Greedy Policy&a…

CSS flex布局 列表单个元素点击 本行下插入详情独占一行

技术栈&#xff1a;Vue2 javaScript 简介 在实际开发过程中有遇到一个场景&#xff1a;一个list&#xff0c;每行个数固定&#xff0c;点击单个元素后&#xff0c;在当前行与下一行之间插入一行元素详情&#xff0c;便于更直观的查看到对应的数据详情。 这种情形&#xff0c…

Deepseek本地部署

一&#xff0c;Deepseek本地部署方式 有UI且简单&#xff1a;LM Studio、Text Generation WebUI。 高效率但无UI&#xff1a;Ollama、LLama.cpp、Tabby。 二&#xff0c;通过Ollama本地部署Deepseek 1&#xff0c;什么是Ollama Ollama是一个开源的 LLM&#xff08;大型语言…

Django 创建表时 “__str__ ”方法的使用

在 Django 模型中&#xff0c;__str__ 方法是一个 Python 特殊方法&#xff08;也称为“魔术方法”&#xff09;&#xff0c;用于定义对象的字符串表示形式。它的作用是控制当对象被转换为字符串时&#xff0c;应该返回什么样的内容。 示例&#xff1a; 我在初学ModelForm时尝…

最新智能优化算法: 中华穿山甲优化( Chinese Pangolin Optimizer ,CPO)算法求解23个经典函数测试集,MATLAB代码

中华穿山甲优化&#xff08; Chinese Pangolin Optimizer &#xff0c;CPO&#xff09;算法由GUO Zhiqing 等人提出&#xff0c;该算法的灵感来自中华穿山甲独特的狩猎行为&#xff0c;包括引诱和捕食行为。 算法流程如下&#xff1a; 1. 开始 设置算法参数和最大迭代次数&a…