基于docker部署testlink并集成mantis

  1. 使用docker pull命令拉取需要的镜像。由于testlink和mantis都需要存储相关数据,所以这里可以看到还拉取了一个mysql镜像。

# docker pull bitnami/testlink:1.9.16-r8

# docker pull vimagick/mantisbt

# docker pull mysql:5.7.20

  1. 使用docker network命令中创建一个新的容器网络,可以命名为testlink-tier。这样接下来创建的mysql, testlink和manties容器将会链接到这个网络上。

# docker network create testlink-tier

  1. 启动mysql数据库服务容器

docker run -d --name mysql-testlink \

--net testlink-tier \

-v ~/testlink/db:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=testlink123 \

-e MYSQL_ROOT_HOST=% \

-e MYSQL_DATABASE=testlinkdb \

mysql:5.7.20

说明:

上面的命令中我们创建了一个mysql容器,设定root账户密码为testlink123,创建了一个名为testlinkdb的数据库,并允许root通过任何地址链接该mysql服务,并且链接到之前创建的testlink-tier容器网络

  1. 启动testlink容器

docker run -d -p 8080:80 -p 8443:443 --name testlink \

-e MARIADB_USER=root \

-e MARIADB_PASSWORD=testlink123 \

-e MARIADB_HOST=mysql-testlink \

-e MARIADB_PORT_NUMBER=3306 \

--net testlink-tier \

--volume ~/testlink/data:/bitnami/testlink \

--volume ~/testlink/apache:/bitnami/apache \

--volume ~/testlink/php:/bitnami/php \

bitnami/testlink:1.9.16-r8

  1. 浏览器中打开 (其中host为docker engine所在的机器ip或者域名)
  2. 登录信息如下:默认用户名:user,默认密码bitnami
  3. 启动一个新的mysql容器,for mantis

指定端口映射(本机端口:容器端口)启动数据库容器,否则无法通过navicat 访问数据库

docker run -d -p 3307:3306 --name mysql-mantis \

--net testlink-tier \

-v ~/mantis/db:/var/lib/mysql \

-e MYSQL_ROOT_PASSWORD=testlink123 \

-e MYSQL_ROOT_HOST=% \

-e MYSQL_DATABASE=bugtracker \

-e MYSQL_USER=mantisbt \

-e MYSQL_PASSWORD=mantisbt123 \

mysql:5.7.20

  1. 启动mantis容器

docker run -d -p 8088:80 --name mantis \

--net testlink-tier \

vimagick/mantisbt:latest

  1. 然后在浏览器中打开 (其中host为docker engine所在的机器ip或者域名)会进入初始安装界面,填入如下信息:

  1. 点击Install/Upgrade Database按钮完成安装, 在浏览器中打开即可登录Manits。
  2. 初始登录信息: 用户名: administrator 密码: root
  3. 在Testlink中添加Mantis

testlink与mantis都在docker下部署,下面这个方式可能导致testlink无法访问

<!-- Template mantisdbInterface -->

<issuetracker>

<dbhost>mysql-mantis</dbhost>

<dbname>bugtracker</dbname>

<dbtype>mysql</dbtype>

<dbuser>mantisbt</dbuser>

<dbpassword>mantisbt</dbpassword>

<uriview>http://10.2.81.100:8088/view.php?id=</uriview>

<uricreate>http://10.2.81.100:8088</uricreate>

</issuetracker>

      

testlink与mantis都在docker下部署,下面这个方式是ok的

<!-- Template mantissoapInterface -->

<issuetracker>

<username>administrator</username>

<password>root</password>

<uribase>http://10.2.81.100:8088/</uribase>

<uriwsdl>http://10.2.81.100:8088/api/soap/mantisconnect.php?wsdl</uriwsdl>

<uriview>http://10.2.81.100:8088/view.php?id=</uriview>

<uricreate>http://10.2.81.100:8088/</uricreate>

</issuetracker>

  1. mantis挂载配置文件,包括邮件配置等
  1. 进入 docker 镜像命令行

# 进入 mantis docker 容器命令行

docker exec -it <container 名称或 id> /bin/bash

# 示例

# container 名称或 id 可以通过 docker ps -a 查看。本文在 启动镜像时, 通过 --name 命名为 mantisbt,命令如下:

docker exec -it mantisbt /bin/bash

当你初始化完成后,此配置文件会写入你的数据库配置。为避免 docker 容器被删除,每次都要重新初始化,我们需要将配置文件拷贝出来。并添加我们自己的配置

  1. # 此时你应该在 docker mantisbt 容器里
  2. cat: /var/www/html/config/config_inc.php
  3. 在主机下新建配置文件

位置任意,比如我是在 /usr/data/ 下新建 mantis 目录,命令如下:

        vi /usr/data/mantis/config_inc.php

  1. 继续编辑 /usr/data/mantis/config_inc.php 新增邮件配置:

# 配置完成后 内容如下

<?php

$g_hostname               = '192.168.0.197';

$g_db_type                = 'pgsql';

$g_database_name          = 'fx_mantisbt';

$g_db_username            = 'postgres';

$g_db_password            = 'fx123456';

$g_db_table_prefix          = 'fx';

$g_db_table_plugin_prefix   = 'mantis';

$g_db_table_suffix          = 'mantis';

$g_default_timezone       = 'Asia/Shanghai';

$g_crypto_master_salt     = 'tQpeV+o+BQ3zdBv6t9Kn0jXBK7AFJJdeko5fIsBH8Hs=';

/**

 * 开启邮箱验证

 */

$g_enable_email_notification = ON;

$g_phpMailer_method = PHPMAILER_METHOD_SMTP;

/**

 * smtp 配置

 */

$g_smtp_host            = 'smtp.example.com';

$g_smtp_username        = 'your-mail@example.com';   

$g_smtp_password        = '******';        

$g_smtp_port            = 465;

$g_smtp_connection_mode = 'ssl';  /* 普通为 25 ,具体设置参考你使用邮箱 smtp 配置 */

$g_from_name            = 'Mantis Bug Tracker';

$g_administrator_email  = 'your-mail@example.com';

$g_webmaster_email      = 'your-mail@example.com';

$g_return_path_email    = 'your-mail@example.com';

$g_from_email           = 'your-mail@example.com';

/**

 * 创建用户时可以设置密码,默认是通过邮件邀请,公司内部用可以启用

 */

$g_send_reset_password = OFF;

  1. 删除当前容器,命令如下:

docker stop <container 名称或 id>  # 此处为你的 mantis 名称

docker rm <container 名称或 id>  # 此处为你的 mantis 名称

  1. 带配置文件启动,命令如下:

docker run -d -p 8088:80 --name mantis --net testlink-tier -v /usr/data/mantis/config_inc.php:/var/www/html/config/config_inc.php vimagick/mantisbt:latest

12.使用Navicat连接用容器部署的数据库

https://blog.csdn.net/weixin_39374967/article/details/122395571

 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Altium Designer 相同电路多组复制布线

在进行设计开发的时候&#xff0c;总会遇到相同的电路&#xff0c;或者模块&#xff0c;这些电路可以使用相同的布局和走线。我们可以画好其中一部分&#xff0c;然后直接复制&#xff0c;就可以提高效率。下面记录我自己的实际操作过程&#xff0c;有一些地方遇到了问题&#…

抽象轻松JavaScript

想象一样&#xff0c;现在有一个苹果&#xff0c;两个苹果&#xff0c;一箱苹果在你面前 看&#xff0c;上面的三种苹果&#xff0c;&#xff08;我写的是苹果就是苹果&#xff09; 语境1 例如你现在要搬运苹果&#xff01; 那么现在上面有苹果&#xff0c;一个&#xff0c;两…

大数据好找工作么?前景如何

大数据好不好找工作不是一概而论的&#xff0c;要根据你个人的学历情况&#xff0c;掌握技能程度&#xff0c;所在城市招聘需求&#xff0c;甚至是你的面试能力和简历是否突出优势有关。 但是毋庸置疑的是&#xff0c;大数据目前的发展前景还是相当优秀的。 我们知道&#xf…

每天一个面试题之final在java中有什么作用?

final在java中有什么作用&#xff1f; final关键字表示最终的含义 当它用来修饰一个引用时&#xff1a; <1>:如果引用为基本数据类型&#xff0c;则该引用为常量&#xff0c;该值无法被修改。<2>:如果引用为引用数据类型&#xff0c;例如&#xff0c;对象/数组等…

Java的CookieManager

文章目录 1. 简介2. CookieStore 1. 简介 Java5包括一个抽象类Java.net.CookieHandler&#xff0c;它定义了存储和获取Cookie的一个API&#xff0c;但不包括这个抽象类的实现&#xff0c;所以还有很多工作要做。Java6进一步作了补充&#xff0c;为CookieManager增加了一个可以…

基于信息间隙决策理论的碳捕集电厂调度(Matlab代码实现)

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 ⛳️座右铭&a…

unity 渲染性能分析工具

目标 既然要优化&#xff0c;肯定要有个目标&#xff1a; pc上一般要求&#xff1a;一秒渲染60帧 移动端&#xff1a;一秒渲染30帧 这应该是最低的要求&#xff0c;如果游戏运行时&#xff0c;游戏帧率有变化&#xff0c;人眼能够明显的感觉到帧率下降。 优化的首要规则是找到…

OpenCV实战(20)——图像投影关系

OpenCV实战(20)——图像投影关系 0. 前言1. 相机成像原理2. 图像对的基本矩阵3. 完整代码小结系列链接0. 前言 数码相机通过将光线通过镜头投射到图像传感器上来捕捉场景产生图像。由于通过将 3D 场景投影到 2D 平面上形成图像,因此场景与其图像之间以及同一场景的不同图像…

vscode远程到服务器(包括WSL)进行GDB调试

工欲善其事必先利其器&#xff0c;这句话不容小觑&#xff0c;调试工具做的好&#xff0c;对开发工作可起到事半功倍。 本文主要讲vscode远程到服务器进行在线GDB调试手段&#xff0c;包含对WSL的远程调试&#xff0c;可以轻松对照源码进行应用程序调试。 文章目录 一、vscode…

损失函数——交叉熵损失(Cross-entropy loss)

交叉熵损失&#xff08;Cross-entropy loss&#xff09;是深度学习中常用的一种损失函数&#xff0c;通常用于分类问题。它衡量了模型预测结果与实际结果之间的差距&#xff0c;是优化模型参数的关键指标之一。以下是交叉熵损失的详细介绍。 假设我们有一个分类问题&#xff0…

L-shape 方法

L-shape 方法是求解两阶段随机规划的一种常用方法&#xff0c;基本思想是利用切平面将第二阶段的反馈函数线性化&#xff0c;在构造切平面条件时有点类似 bender’s 方法。 注&#xff1a;这个图形中黑实线 Q ( x ) \mathcal{Q}(x) Q(x) 就是下面模型中的 L ( x ) \mathscr{L…

为什么要用线程池?

线程池是一种管理和复用线程资源的机制&#xff0c;它由一个线程池管理器和一组工作线程组成。线程池管理器负责创建和销毁线程池&#xff0c;以及管理线程池中的工作线程。工作线程则负责执行具体的任务。 线程池的主要作用是管理和复用线程资源&#xff0c;避免了线程的频繁…

IOS开发指南之自定义TableViewCell使用

演示效果: 1.自定义TableViewCell创建 File->new->File... 在iOS模板中选择Empty来创建一个空的XIB文件,然后点击下一步 输入XIB文件名Cell,然后点击Create创建 创建XIB文件成功后如下: 同时按钮Shift+command+L弹出库,然后输入 table筛选,选择Table View Cell 拖到下…

LSP:里氏替换原则

系列文章目录 C高性能优化编程系列 深入理解设计原则系列 深入理解设计模式系列 高级C并发线程编程 LSP&#xff1a;里氏替换原则 系列文章目录1、里氏替换原则的定义和解读2、里氏替换原则可以用于哪些设计模式中&#xff1f;3、如何使用里氏替换原则来降低代码耦合度&#…

ChatGPT原理简介

承接上文GPT前2代版本简介 GPT3的基本思想 GPT2没有引起多大轰动&#xff0c;真正改变NLP格局的是第三代版本。 GPT3训练的数据包罗万象&#xff0c;上通天文下知地理&#xff0c;所以它会胡说八道,会说的贼离谱&#xff0c;比如让你穿越到唐代跟李白对诗&#xff0c;不在一…

windows里怎么杀死一个进程?

我们可以使用 taskkill 命令&#xff0c;可以使用该工具按照进程 ID (PID) 或映像名称终止任务。 显示帮助消息&#xff1a; taskkill /?参数列表&#xff1a; /S&#xff1a;system&#xff1a;指定要连接的远程系统。/U&#xff1a;[domain\]user&#xff1a;指定应该在哪…

第五篇:强化学习基础之马尔科夫决策过程

你好&#xff0c;我是zhenguo(郭震) 今天总结强化学习第五篇&#xff1a;马尔科夫决策过程 基础 马尔科夫决策过程&#xff08;MDP&#xff09;是强化学习的基础之一。下面统一称为&#xff1a;MDP MDP提供了描述序贯决策问题的数学框架。 它将决策问题建模为&#xff1a; 状态…

7种PCB走线方式

01电源布局布线相关 数字电路很多时候需要的电流是不连续的&#xff0c;所以对一些高速器件就会产生浪涌电流。 如果电源走线很长&#xff0c;则由于浪涌电流的存在进而会导致高频噪声&#xff0c;而此高频噪声会引入到其他信号中去。 而在高速电路中必然会存在寄生电感和寄…

STM32G4 比较器COMPx(寄存器开发)

目录 1. 特性1.1 框图1.2 比较器输入信号SEL1.3 比较器滞回选择HYST1.4 比较器的输出1.5 LOCK机制 2. 编程2.1 初始化步骤2.2 举例 STM内部的比较器是模拟量的比较器&#xff0c;其与APB2时钟同步&#xff0c;在RCC时钟控制器中没有COMx时钟使能标志位&#xff0c;其时钟的使能…

RTOS专栏(一) —— rt-thread简单介绍和qemu使用

本期主题&#xff1a; 简单介绍rt-thread介绍qemu和rt-thread怎么配合使用qemu的简单例子 rt-thread & qemu 1.rt-thread介绍2.qemu介绍3.搭建rt-thread和qemu开发环境4.简单例子 1.rt-thread介绍 RT-Thread 是一款完全由国内团队开发维护的嵌入式实时操作系统&#xff0…
最新文章