一、禅道部署

1、下载地址

禅道开源版:   http://dl.cnezsoft.com/zentao/docker/docker_zentao.zip

数据库用户名: root,默认密码: 123456。运行时,可以设置 MYSQL_ROOT_PASSWORD变量来更改密码。

可挂载目录

/app/zentaopms:该目录为禅道目录,里面包含禅道代码及附件上传目录。

/var/lib/mysql:该目录为数据库的数据目录。

2、安装使用

(1)、准备环境:

注意:需要关闭下selinux

新建禅道目录

# mkdir /home/chandao

创建映射目录

# mkdir /home/chandao/data

# mkdir /home/chandao/www

解压文件

# cd /home/chandao/

# mv /root/docker_zentao.zip .

# unzip docker_zentao.zip

  1. [root@localhost ~]# cd /home/chandao/
  2. [root@localhost chandao]#
  3. [root@localhost chandao]# ls
  4. data docker_zentao www
  5. [root@localhost chandao]# cd docker_zentao/
  6. [root@localhost docker_zentao]#
  7. [root@localhost docker_zentao]# ls
  8. Dockerfile README.md config docker-entrypoint.sh
  9. [root@localhost docker_zentao]#

(2)、构建镜像

执行命令 docker build -t [镜像名称] [Dockerfile所在目录]

# cd /home/chandao/docker_zentao

# docker build -t chandao .

查看构建的镜像

# docker images

  1. [root@localhost docker_zentao]# docker images
  2. REPOSITORY TAG IMAGE ID CREATED SIZE
  3. chandao latest 98c88f2a1099 hours ago 584MB
  4. djltomcat latest d260185f87dc weeks ago 508MB
  5. ubuntu 16.04 7e87e2b3bf7a weeks ago 117MB
  6. mysql latest 102816b1ee7d months ago 486MB
  7. registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 years ago .85GB
  8. [root@localhost docker_zentao]#

(3)、运行镜像

# docker run --name chandao -p 7075:80 -v /home/chandao/www/:/app/zentaopms -v /home/chandao/data/:/var/lib/mysql -e MUSQL_ROOT_PASSWORD=123456 -d chandao:latest

参数说明:

--name(容器名字)

-v(挂着目录)

-e(设置环境变量)

-d(运行容器后不自动进入容器)

查看正在运行的容器

# docker ps

  1. [root@localhost ~]# docker ps
  2. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  3. 0b3bcb6316c4 chandao:latest "/app/docker-entrypo…" hours ago Up hours 0.0.0.0:->/tcp chandao

(4)、安装禅道

浏览器访问:

http://服务器IP地址:端口号

二、迁移

1、迁移MySQL数据库

(1)、首先备份原库

进入MySQL数据库

mysql -uroot -proot123

查看MySQL库

show databases;

只需要对以下两个库进行备份

退出MySQL数据库

quit

执行备份命令

mysqldump -uroot -proot123 zentaopro > D:\mysqlbackup\zentaopro.sql

mysqldump -uroot -proot123 zentao > D:\mysqlbackup\zentao.sql

到D:\mysqlbackup\路径下找备份文件,拷贝到要还原的系统中

(2)、数据还原

进入容器

# docker exec -it chandao bash

进入MySQL数据库

mysql -uroot -p123456

查看MySQL库

show databases;

如没有还原数据库,可先创建

create database 数据库名;

进入库

use 数据库名;

还原数据文件

source /var/lib/mysql/zentaopro.sql

source /var/lib/mysql/zentao.sql

2、由于公司修改了某些PHP文件,所以还需要进行文件替换

注意:根据需求来

原路径

E:\xampp\zentao\module\bug

E:\xampp\zentao\module\bug\lang

docker容器里面的目标路径

  1. root@0b3bcb6316c4:/app/zentaopms/module/bug# pwd
  2. /app/zentaopms/module/bug
  3. root@0b3bcb6316c4:/app/zentaopms/module/bug#
  4. root@0b3bcb6316c4:/app/zentaopms/module/bug# ll
  5. total 212
  6. drwxrwxr-x. 7 www-data www-data 116 Mar 12 01:31 ./
  7. drwxrwxrwx. 55 www-data www-data 4096 Feb 28 08:56 ../
  8. -rw-r--r--. 1 root root 20368 Mar 12 01:16 config.php
  9. -rw-rw-r--. 1 www-data www-data 72027 Feb 28 08:55 control.php
  10. drwxrwxr-x. 2 www-data www-data 273 Feb 28 08:55 css/
  11. drwxrwxrwx. 2 www-data www-data 6 Feb 28 08:56 ext/
  12. drwxrwxr-x. 2 www-data www-data 223 Feb 28 08:55 js/
  13. drwxrwxr-x. 2 www-data www-data 54 Mar 12 01:31 lang/
  14. -rw-r--r--. 1 root root 111985 Mar 12 01:15 model.php
  15. drwxrwxr-x. 2 www-data www-data 4096 Feb 28 08:55 view/

lang文件夹下

  1. root@0b3bcb6316c4:/app/zentaopms/module/bug# cd lang/
  2. root@0b3bcb6316c4:/app/zentaopms/module/bug/lang# pwd
  3. /app/zentaopms/module/bug/lang
  4. root@0b3bcb6316c4:/app/zentaopms/module/bug/lang# ll
  5. total
  6. drwxrwxr-x. www-data www-data Mar : ./
  7. drwxrwxr-x. www-data www-data Mar : ../
  8. -rw-rw-r--. www-data www-data Feb : en.php
  9. -rw-r--r--. 1 root root 20339 Mar 12 01:15 zh-cn.php
  10. -rw-rw-r--. www-data www-data Feb : zh-tw.php

3、禅道数据文件的迁移

原路径

E:\xampp\zentao\www\data\upload

docker容器目标路径

  1. root@0b3bcb6316c4:/app/zentaopms/www/data/upload# pwd
  2. /app/zentaopms/www/data/upload
  3. root@0b3bcb6316c4:/app/zentaopms/www/data/upload# ll
  4. total
  5. drwxrwxrwx. www-data www-data Mar : ./
  6. drwxrwxrwx. www-data www-data Feb : ../
  7. drwxr-xr-x. root root Mar : /

三、映射禅道MySQL数据库的问题

由于业务需求,需要映射禅道MySQL数据库通过客户端访问连接。

注意:映射端口之后需要修改MySQL允许远程登陆连接,确认下mysql服务,是否允许非本机的其他机器访问?

这需要修改/etc/mysql/mariadb.conf.d/50-server.cnf

1、拷贝禅道MySQL配置文件进行外部修改

# docker cp chandao:/etc/mysql/mariadb.conf.d/50-server.cnf /root/

  1. [root@localhost ~]# docker cp chandao:/etc/mysql/mariadb.conf.d/-server.cnf /root/
  2. [root@localhost ~]#
  3. [root@localhost ~]#
  4. [root@localhost ~]# ls
  5. -server.cnf
  6. [root@localhost ~]#

2、修改my.ini中的bind-address参数

# cat 50-server.cnf.bak

删除bind-address参数或者修改为bind-address=0.0.0.0

  1. [root@localhost ~]# cat -server.cnf.bak
  2. #
  3. # These groups are read by MariaDB server.
  4. # Use it for options that only the server (but not clients) should see
  5. #
  6. # See the examples of server my.cnf files in /usr/share/mysql/
  7. #
  8.  
  9. # this is read by the standalone daemon and embedded servers
  10. [server]
  11.  
  12. # this is only for the mysqld standalone daemon
  13. [mysqld]
  14.  
  15. #
  16. # * Basic Settings
  17. #
  18. user = mysql
  19. pid-file = /var/run/mysqld/mysqld.pid
  20. socket = /var/run/mysqld/mysqld.sock
  21. port =
  22. basedir = /usr
  23. datadir = /var/lib/mysql
  24. tmpdir = /tmp
  25. lc-messages-dir = /usr/share/mysql
  26. skip-external-locking
  27.  
  28. # Instead of skip-networking the default is now to listen only on
  29. # localhost which is more compatible and is not less secure.
  30. bind-address = 127.0.0.1
  31.  
  32. #
  33. # * Fine Tuning
  34. #
  35. key_buffer_size = 16M
  36. max_allowed_packet = 16M
  37. thread_stack = 192K
  38. thread_cache_size =
  39. # This replaces the startup script and checks MyISAM tables if needed
  40. # the first time they are touched
  41. myisam-recover = BACKUP
  42. #max_connections =
  43. #table_cache =
  44. #thread_concurrency =
  45.  
  46. #
  47. # * Query Cache Configuration
  48. #
  49. query_cache_limit = 1M
  50. query_cache_size = 16M
  51.  
  52. #
  53. # * Logging and Replication
  54. #
  55. # Both location gets rotated by the cronjob.
  56. # Be aware that this log type is a performance killer.
  57. # As of 5.1 you can enable the log at runtime!
  58. #general_log_file = /var/log/mysql/mysql.log
  59. #general_log =
  60. #
  61. # Error log - should be very few entries.
  62. #
  63. log_error = /var/log/mysql/error.log
  64. #
  65. # Enable the slow query log to see queries with especially long duration
  66. #slow_query_log_file = /var/log/mysql/mariadb-slow.log
  67. #long_query_time =
  68. #log_slow_rate_limit =
  69. #log_slow_verbosity = query_plan
  70. #log-queries-not-using-indexes
  71. #
  72. # The following can be used as easy to replay backup logs or for replication.
  73. # note: if you are setting up a replication slave, see README.Debian about
  74. # other settings you may need to change.
  75. #server-id =
  76. #log_bin = /var/log/mysql/mysql-bin.log
  77. expire_logs_days =
  78. max_binlog_size = 100M
  79. #binlog_do_db = include_database_name
  80. #binlog_ignore_db = include_database_name
  81.  
  82. #
  83. # * InnoDB
  84. #
  85. # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
  86. # Read the manual for more InnoDB related options. There are many!
  87.  
  88. #
  89. # * Security Features
  90. #
  91. # Read the manual, too, if you want chroot!
  92. # chroot = /var/lib/mysql/
  93. #
  94. # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
  95. #
  96. # ssl-ca=/etc/mysql/cacert.pem
  97. # ssl-cert=/etc/mysql/server-cert.pem
  98. # ssl-key=/etc/mysql/server-key.pem
  99.  
  100. #
  101. # * Character sets
  102. #
  103. # MySQL/MariaDB default is Latin1, but in Debian we rather default to the full
  104. # utf8 -byte character set. See also client.cnf
  105. #
  106. character-set-server = utf8mb4
  107. collation-server = utf8mb4_general_ci
  108.  
  109. #
  110. # * Unix socket authentication plugin is built-in since 10.0.-
  111. #
  112. # Needed so the root database user can authenticate without a password but
  113. # only when running as the unix root user.
  114. #
  115. # Also available for other users if required.
  116. # See https://mariadb.com/kb/en/unix_socket-authentication-plugin/
  117.  
  118. # this is only for embedded server
  119. [embedded]
  120.  
  121. # This group is only read by MariaDB servers, not by MySQL.
  122. # If you use the same .cnf file for MySQL and MariaDB,
  123. # you can put MariaDB-only options here
  124. [mariadb]
  125.  
  126. # This group is only read by MariaDB-10.0 servers.
  127. # If you use the same .cnf file for MariaDB of different versions,
  128. # use this group for options that older servers don't understand
  129. [mariadb-10.0]
  130. [root@localhost ~]#

停止禅道容器

# docker stop chandao

  1. [root@localhost ~]# docker stop chandao
  2. chandao
  3. [root@localhost ~]#

删除禅道容器

# docker rm chandao

  1. [root@localhost ~]# docker rm chandao
  2. chandao
  3. [root@localhost ~]#

3、重新创建禅道容器,增加MySQL端口

# docker run --name chandao -p 7075:80 -p 3307:3306 -v /home/chandao/www/:/app/zentaopms -v /home/chandao/data/:/var/lib/mysql -e MUSQL_ROOT_PASSWORD=123456 -d chandao:latest

  1. [root@localhost ~]# docker run --name chandao -p : -p : -v /home/chandao/www/:/app/zentaopms -v /home/chandao/data/:/var/lib/mysql -e MUSQL_ROOT_PASSWORD= -d chandao:latest
  2. 1b97eee2741749a286c8b40791f7bfd1ee0e687e8c414edaf5e95cfa218f7883
  3. [root@localhost ~]#
  4. [root@localhost ~]#
  5. [root@localhost ~]# docker ps
  6. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  7. 1b97eee27417 chandao:latest "/app/docker-entrypo…" seconds ago Up seconds 0.0.0.0:->/tcp, 0.0.0.0:->/tcp chandao

4、替换禅道容器中的数据库配置文件

# docker cp /root/50-server.cnf chandao:/etc/mysql/mariadb.conf.d/

5、重新启动禅道容器

# docker restart chandao

  1. [root@localhost ~]# docker cp /root/-server.cnf chandao:/etc/mysql/mariadb.conf.d/
  2. [root@localhost ~]#
  3. [root@localhost ~]# docker restart chandao
  4. chandao
  5. [root@localhost ~]#
  6. [root@localhost ~]#
  7. [root@localhost ~]#
  8. [root@localhost ~]# docker ps
  9. CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
  10. 1b97eee27417 chandao:latest "/app/docker-entrypo…" About a minute ago Up seconds 0.0.0.0:->/tcp, 0.0.0.0:->/tcp chandao

四、升级

1、重新构建镜像

重新修改Dockerfile,重新运行构建镜像命令

# docker build -t chandao:v2 .

2、备份数据库(zentao)和data数据

3、用新镜像运行容器

如果升级失败需要如下操作

4、删除所有表 然后再还原备份

5、然后重新升级一下禅道

升级时会提示验证操作,按照提示要求,在 [主机代码目录] 的 www 目录创建 ok.txt。

创建后,点击 继续更新即可。

参考网站:

https://www.zentao.net/download/80098.html

请先阅读官网文档,多数使用问题都可以在文档内找到答案

http://www.zentao.net/book/zentaopmshelp.html

技术支持:

http://www.zentao.net/book/zentaopmshelp/70.html

禅道在docker上部署与迁移的更多相关文章

  1. 定期从Docker上部署的MySQL备份数据

    前段时间公司停电,正巧赶上周一领导要开会要过一遍项目,然而项目所依赖的MySQL数据库是直接部署在宿主机,且因为各人部署方式不同的原因,花了很久才在开会前启动起来.于是开完会后,我第一件事就是把原先依 ...

  2. centos 7 禅道bug管理软件部署

    2018-10-26 部署前置条件 关闭防火墙或者添加防火墙规则,使禅道端口可以通过防火墙 关闭防火墙与selinux 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机 ...

  3. 【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控

    Docker部署 下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.re ...

  4. 在Docker上部署使用Azure CLI镜像

    Docker是非常流行的容器技术,在Docker中安装部署多种工具非常快速和方便:而Azure CLI是微软提供的可以在Linux/Mac上运行的跨平台命令行管理工具,本文介绍如何在Azure上安装部 ...

  5. ubuntu16.04环境下在docker上部署javaweb项目简单案例

    因为一些原因,接触到了docker,经过一番研究,总算是有了一些自己的看法,有什么不对的地方,希望多多指教. 废话不多说,首先我这里使用的虚拟机安装的是ubuntu16.04版本,其他版本应该也可以. ...

  6. 在Docker上部署自动更新ssl证书的nginx + .NET CORE

    突发奇想要搞一个ssl的服务器,然后我就打起了docker的主意,想着能不能搞一个基于Docker的服务器,这样维护起来也方便一点. 设想 想法是满足这么几点: .NET CORE on Docker ...

  7. docker服务部署、迁移与备份、dockerfile、私有仓库

    今日内容概要 服务部署 迁移与备份 dockerfile 私有仓库 内容详细 1.服务部署 # 装 mysql redis --->源码编译安装-->启 动 # 有了docker后,容器操 ...

  8. 在docker上部署centos

    1.查找镜像源$ docker search centosNAME DESCRIPTION STARS OFFICIALcentos The official build of CentOS. 385 ...

  9. 【Linux】在docker上部署grafana+zabbix监控实录

    -------------------------------------------------------------------------------------------------   ...

随机推荐

  1. 《DSP using MATLAB》Problem 6.22

    代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...

  2. tomcat 9.0中,用cookie进行会话时出现的不合法字符问题

    https://blog.csdn.net/KooKing_L/article/details/77435717 An invalid character [32] was present in th ...

  3. 彻底理解一致性哈希算法(consistent hashing)

    转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179     一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...

  4. oracle完全恢复数据库

    完全恢复数据文件 rman target/ list backup summary; 查看是否有备份,如果没有备份,先进行全备份(应该是backup database吧) 现在模拟删除oracle数据 ...

  5. oracle服务器重启后无法进入系统,登录系统时提示model is unknow

    这个是因为安装oracle时,修改了一些系统参数,导致开机异常 在选择系统列表那里直接按e,进入系统开机配置 大概在倒数第二行,也就是有utf8那行,添加init=/bin/sh 然后ctrl+x重启 ...

  6. mysql自增主键

    MariaDB [test]> create table test1(id int primary key auto_increment,name varchar(20))auto_increm ...

  7. MySQL Transaction--TPS计算规则

    TPS计算规则 在MYSQL 中,TPS(Transaction Per Second)的计算方法为 (com_commit+com_rollback)/time,但com_commit和com_ro ...

  8. Go语言编程 (许式伟 等 著)

    第1章 初识Go语言 1.1 语言简史 1.2 语言特性 1.2.1 自动垃圾回收 1.2.2 更丰富的内置类型 1.2.3 函数多返回值 1.2.4 错误处理 1.2.5 匿名函数和闭包 1.2.6 ...

  9. MQ介绍 & 实例

    阅读目录 定义 优秀MQ特点 产品比较 实例(简单的实战) 关于消息队列与分布式的那些事 定义: 消息队列(MQ)是一种应用程序对应用程序的通信方法,应用程序通过队列进行通信,而不是通过直接调用彼此来 ...

  10. JS正则表达式验证身份证号码

    function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{1 ...