docker部署禅道及开启MySQL远程登录

摘要:
只需安装最新版本的Docker。查看docker版本docker-v2.下载Zen图像。我们可以直接在线下载图像或导入图像以获得Zen图像。根据我们的服务器环境选择适合我们的图像是很好的。结果是相同的,即在本地拉取Zen图像。

禅道作为一个开源的项目管理工具,其功能足以满足日常开发、运维、测试及产品版本迭代,重要的是免费、可定制,好处不用多数,业内用的也比较广泛(主要是互联网企业)

关于禅道的部署可以参考官网:https://www.zentao.net/book/zentaopmshelp/405.html

有了docker,使得禅道的部署变得非常简单,只需如下几个步骤即可完成禅道的本地化部署:

  1. 将镜像pull下来;
  2. 利用镜像启动容器;
  3. 打开界面做简单的配置即可使用。

如果你只是测试或小小的应用一下,官网的文档足以解决我们的问题了,笔者也是根据官网部署的。

这里简单梳理下部署步骤,做个记录的同时也分享给各位同学。

1. 运行环境准备

既然是docker部署禅道,首先你的环境要符合docker运行环境,官网推荐docker最好是18版本以上,操作系统也最好是7.x,安装前最好更新系统到最新版本。docker安装最新版即可。

查看docker版本

docker -v

2. 禅道镜像下载

我们可以直接在线下载或导入镜像两种方式获取到禅道的镜像,根据我们的服务器环境(是否能够访问公网)自行选择适合自己的就好,结果是一样的,就是把禅道镜像拉取到本地。

这里以部署开源版禅道12.3.3为例,其他版本类似。

2.1 在线下载镜像

禅道镜像已放于Docker Hub上,地址为: https://hub.docker.com/r/easysoft/zentao/tags

docker部署禅道及开启MySQL远程登录第1张

拉取禅道开源版12.3.3版本命令如下:
docker pull easysoft/zentao:12.3.3

 docker部署禅道及开启MySQL远程登录第2张 

2.2 离线导入镜像

离线镜像获取

# 下载禅道镜像
wget https://www.zentao.net/dl/docker/zentao_12.3.3.tar.gz
# 将镜像导入到本地
gunzip -c zentao_12.3.3.tar.gz | docker load 

docker部署禅道及开启MySQL远程登录第3张

导入后,查看本地镜像

[root@CN-HZ-Zentao ~]# docker image ls
REPOSITORY        TAG       IMAGE ID       CREATED         SIZE
easysoft/zentao   12.3.3    6b51979725b5   10 months ago   633MB

3. 启动禅道容器

3.1 启动命令

# 官方给的命令:
docker run --name [容器名] -p [主机端口]:80 --network=[网络驱动名] --ip [容器IP] --mac-address [mac地址] -v [主机禅道目录]:/www/zentaopms -v [主机mysql目录]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[数据库密码] -d easysoft/zentao:[镜像标签]

## 启动参数说明:
# 容器名:启动的容器名字,可随意指定;
# 主机端口:主机端口为web访问端口;
# 网络驱动名:刚刚创建的网络驱动名;
# 容器IP:在网络驱动范围内选择一个作为该容器的固定ip;
# mac地址:指定固定的mac地址,建议范围为02:42:ac:11:00:00  到  02:42:ac:11:ff:ff;
# 主机禅道目录:必须指定,方便禅道代码、附件等数据的持久化,非升级情况需指定空目录;
# 主机mysql目录:必须指定,方便禅道数据持久化,非升级情况需指定空目录;
# 数据库密码: 容器内置mysql用户名为root,默认密码123456,如果不修改可以不指定该变量,如果想更改密码可以设置 MYSQL_ROOT_PASSWORD变量来更改密码;
# 镜像标签:禅道版本。

# 实际上我们只需要按如下命令启动容器即可:
docker run --name zentao-server --restart always -d -p 80:80 -v /ichint/zentaopms:/www/zentaopms -v /ichint/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 easysoft/zentao:12.3.3

## 其中 --restart always 意思是在docker容器异常时自动重启。

3.2 查看是否启动成功

[root@CN-HZ-Zentao ~]# docker ps 
CONTAINER ID   IMAGE                    COMMAND              CREATED       STATUS       PORTS                               NAMES
8c24dfafdbef   easysoft/zentao:12.3.3   "/.docker_init.sh"   6 weeks ago   Up 6 weeks   0.0.0.0:80->80/tcp, :::80->80/tcp   zentao-server

4. 安装禅道

浏览器直接访问 http://宿主机ip:宿主机映射端口

docker部署禅道及开启MySQL远程登录第4张

docker部署禅道及开启MySQL远程登录第5张

docker部署禅道及开启MySQL远程登录第6张

docker部署禅道及开启MySQL远程登录第7张

docker部署禅道及开启MySQL远程登录第8张

docker部署禅道及开启MySQL远程登录第9张

 然后点击【登录禅道管理系统】,输入帐号密码,就可以登录我们的禅道了。

docker部署禅道及开启MySQL远程登录第10张

5. 存在的问题及解决

问题1:容器内部的时间和宿主机时间不一致

问题2:如果想在外部连接禅道数据库是没办法的

这就需要我们对镜像进行定制和修改。

针对问题1,我们只需要在启动禅道容器的时候,加上参数: -v /etc/localtime:/etc/localtime:ro,即:

docker run --name zentao-server --restart always -d -p 80:80 -v /ichint/zentaopms:/www/zentaopms -v /ichint/mysqldata:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 easysoft/zentao:12.3.3

针对问题2,我们需要按如下步骤进行操作:

主要思路是:

  1. 进入容器
  2. 修改MySQL默认配置
  3. 授权登录
  4. 提交修改生成新的镜像
  5. 删除之前启动的容器
  6. 用新的镜像重新启动容器

操作过程中,数据不会丢失,这点不需要担心,因为我们将数据目录都映射到宿主机中了。

## 开启docker部署的禅道数据库外部登录
# 进入容器
docker exec -ti zentao-server bash

找到MariaDB的配置文件"/etc/mysql/mariadb.conf.d/50-server.cnf",把"bind-address...."一行注释掉
接下来还要给账户分配权限,进入mysql命令行界面,输入:
mysql -uroot -p
输入密码:

## 在容器内的MySQL中执行如下命令:
select User, host from mysql.user;
GRANT ALL PRIVILEGES ON *.* TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;
FLUSH PRIVILEGES;

# 输入exit,退出MySQL,再次输入exit退出容器,然后将刚才对容器的修改进行提交,生成我们自己定义的镜像
docker commit 8c24dfafdbef myzentao:v2

# 然后关闭并删除旧的容器
docker stop zentao-server
docker rm zentao-server
# 或者:docker rm -f zentao-server

# 最后用我们自定义的镜像重新启动一个新的容器,并将数据库端口也映射出来
docker run --name zentao-server --restart always -d -p 80:80 -p 3306:3306 -v /ichint/zentaopms:/www/zentaopms -v /ichint/mysqldata:/var/lib/mysql -v /etc/localtime:/etc/localtime:ro -e MYSQL_ROOT_PASSWORD=123456 -d newzentao:v2

这样我们就可以在外部登录禅道的数据库了。

docker部署禅道及开启MySQL远程登录第11张

免责声明:文章转载自《docker部署禅道及开启MySQL远程登录》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇Unity中Invoke函数基础用法vue实现虚拟列表下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【Docker】解析器指令之 escape

参考教程:https://docs.docker.com/engine/reference/builder/ 环境 virtual box 6.1 centos 7.8 docker 19.03 escape # escape= (backslash) Or # escape=` (backtick) The escape directive se...

MySQL高级查询(一)

in 子查询:嵌套查询(重点是思路) 为什么要用in? in 在数值上相当于‘=’但是它可以查询到更多的符合条件的结果,等于号只可以查询一个结果 question: 有两种方法: 第一种:使用子查询替换表连接: 使用 inner join 将表与表之间联动,再将实现条件依次写出来 第二种:采用子查询: 在where那里添加select两表联动通过stud...

Windows和Linux查看和更改mysql连接池

Windows: 查看: 进入mysql 输入:show variables like ‘%max_connections%’; 更改: 进入MYSQL安装目录 打开MYSQL配置文件 my.ini 或 my.cnf查找 max_connections=100 修改为 max_connections=1000 服务里重起MYSQL即可。 Linux:...

Mysql:windows上mysql服务管理

自5.1.21及以后的变化: The following table shows the available servers for Windows in MySQL 5.1.20 and earlier. Binary Description mysqld-nt Optimized binary with named-pipe sup...

MySQL复制日常维护与管理

一、复制一些常见设置 1、mysql复制启动时参数: mysql启动时的参数包括:master_host,master_port,master_user,master_password,master_log_file,master_log_pos。这几个参数需要在从库上配置,用来记录需要复制的主数据库的地址、端口、和用户等。mysq复制还包括以下几个常用的...

mysql 创建函数

<pre name="code" class="html">root 用户创建函数; delimiter $$ CREATE FUNCTION `loadTreeByParent`(begin_sn INT) RETURNS varchar(600) CHARSET utf8 BEGIN DECLARE rest VARCHAR(60...