禅道在docker上部署与迁移
一、禅道部署
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
- [root@localhost ~]# cd /home/chandao/
- [root@localhost chandao]#
- [root@localhost chandao]# ls
- data docker_zentao www
- [root@localhost chandao]# cd docker_zentao/
- [root@localhost docker_zentao]#
- [root@localhost docker_zentao]# ls
- Dockerfile README.md config docker-entrypoint.sh
- [root@localhost docker_zentao]#
(2)、构建镜像
执行命令 docker build -t [镜像名称] [Dockerfile所在目录]
# cd /home/chandao/docker_zentao
# docker build -t chandao .
查看构建的镜像
# docker images
- [root@localhost docker_zentao]# docker images
- REPOSITORY TAG IMAGE ID CREATED SIZE
- chandao latest 98c88f2a1099 hours ago 584MB
- djltomcat latest d260185f87dc weeks ago 508MB
- ubuntu 16.04 7e87e2b3bf7a weeks ago 117MB
- mysql latest 102816b1ee7d months ago 486MB
- registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 years ago .85GB
- [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
- [root@localhost ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 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容器里面的目标路径
- root@0b3bcb6316c4:/app/zentaopms/module/bug# pwd
- /app/zentaopms/module/bug
- root@0b3bcb6316c4:/app/zentaopms/module/bug#
- root@0b3bcb6316c4:/app/zentaopms/module/bug# ll
- total 212
- drwxrwxr-x. 7 www-data www-data 116 Mar 12 01:31 ./
- drwxrwxrwx. 55 www-data www-data 4096 Feb 28 08:56 ../
- -rw-r--r--. 1 root root 20368 Mar 12 01:16 config.php
- -rw-rw-r--. 1 www-data www-data 72027 Feb 28 08:55 control.php
- drwxrwxr-x. 2 www-data www-data 273 Feb 28 08:55 css/
- drwxrwxrwx. 2 www-data www-data 6 Feb 28 08:56 ext/
- drwxrwxr-x. 2 www-data www-data 223 Feb 28 08:55 js/
- drwxrwxr-x. 2 www-data www-data 54 Mar 12 01:31 lang/
- -rw-r--r--. 1 root root 111985 Mar 12 01:15 model.php
- drwxrwxr-x. 2 www-data www-data 4096 Feb 28 08:55 view/
lang文件夹下
- root@0b3bcb6316c4:/app/zentaopms/module/bug# cd lang/
- root@0b3bcb6316c4:/app/zentaopms/module/bug/lang# pwd
- /app/zentaopms/module/bug/lang
- root@0b3bcb6316c4:/app/zentaopms/module/bug/lang# ll
- total
- drwxrwxr-x. www-data www-data Mar : ./
- drwxrwxr-x. www-data www-data Mar : ../
- -rw-rw-r--. www-data www-data Feb : en.php
- -rw-r--r--. 1 root root 20339 Mar 12 01:15 zh-cn.php
- -rw-rw-r--. www-data www-data Feb : zh-tw.php
3、禅道数据文件的迁移
原路径
E:\xampp\zentao\www\data\upload
docker容器目标路径
- root@0b3bcb6316c4:/app/zentaopms/www/data/upload# pwd
- /app/zentaopms/www/data/upload
- root@0b3bcb6316c4:/app/zentaopms/www/data/upload# ll
- total
- drwxrwxrwx. www-data www-data Mar : ./
- drwxrwxrwx. www-data www-data Feb : ../
- 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/
- [root@localhost ~]# docker cp chandao:/etc/mysql/mariadb.conf.d/-server.cnf /root/
- [root@localhost ~]#
- [root@localhost ~]#
- [root@localhost ~]# ls
- -server.cnf
- [root@localhost ~]#
2、修改my.ini中的bind-address参数
# cat 50-server.cnf.bak
删除bind-address参数或者修改为bind-address=0.0.0.0
- [root@localhost ~]# cat -server.cnf.bak
- #
- # These groups are read by MariaDB server.
- # Use it for options that only the server (but not clients) should see
- #
- # See the examples of server my.cnf files in /usr/share/mysql/
- #
- # this is read by the standalone daemon and embedded servers
- [server]
- # this is only for the mysqld standalone daemon
- [mysqld]
- #
- # * Basic Settings
- #
- user = mysql
- pid-file = /var/run/mysqld/mysqld.pid
- socket = /var/run/mysqld/mysqld.sock
- port =
- basedir = /usr
- datadir = /var/lib/mysql
- tmpdir = /tmp
- lc-messages-dir = /usr/share/mysql
- skip-external-locking
- # Instead of skip-networking the default is now to listen only on
- # localhost which is more compatible and is not less secure.
- bind-address = 127.0.0.1
- #
- # * Fine Tuning
- #
- key_buffer_size = 16M
- max_allowed_packet = 16M
- thread_stack = 192K
- thread_cache_size =
- # This replaces the startup script and checks MyISAM tables if needed
- # the first time they are touched
- myisam-recover = BACKUP
- #max_connections =
- #table_cache =
- #thread_concurrency =
- #
- # * Query Cache Configuration
- #
- query_cache_limit = 1M
- query_cache_size = 16M
- #
- # * Logging and Replication
- #
- # Both location gets rotated by the cronjob.
- # Be aware that this log type is a performance killer.
- # As of 5.1 you can enable the log at runtime!
- #general_log_file = /var/log/mysql/mysql.log
- #general_log =
- #
- # Error log - should be very few entries.
- #
- log_error = /var/log/mysql/error.log
- #
- # Enable the slow query log to see queries with especially long duration
- #slow_query_log_file = /var/log/mysql/mariadb-slow.log
- #long_query_time =
- #log_slow_rate_limit =
- #log_slow_verbosity = query_plan
- #log-queries-not-using-indexes
- #
- # The following can be used as easy to replay backup logs or for replication.
- # note: if you are setting up a replication slave, see README.Debian about
- # other settings you may need to change.
- #server-id =
- #log_bin = /var/log/mysql/mysql-bin.log
- expire_logs_days =
- max_binlog_size = 100M
- #binlog_do_db = include_database_name
- #binlog_ignore_db = include_database_name
- #
- # * InnoDB
- #
- # InnoDB is enabled by default with a 10MB datafile in /var/lib/mysql/.
- # Read the manual for more InnoDB related options. There are many!
- #
- # * Security Features
- #
- # Read the manual, too, if you want chroot!
- # chroot = /var/lib/mysql/
- #
- # For generating SSL certificates I recommend the OpenSSL GUI "tinyca".
- #
- # ssl-ca=/etc/mysql/cacert.pem
- # ssl-cert=/etc/mysql/server-cert.pem
- # ssl-key=/etc/mysql/server-key.pem
- #
- # * Character sets
- #
- # MySQL/MariaDB default is Latin1, but in Debian we rather default to the full
- # utf8 -byte character set. See also client.cnf
- #
- character-set-server = utf8mb4
- collation-server = utf8mb4_general_ci
- #
- # * Unix socket authentication plugin is built-in since 10.0.-
- #
- # Needed so the root database user can authenticate without a password but
- # only when running as the unix root user.
- #
- # Also available for other users if required.
- # See https://mariadb.com/kb/en/unix_socket-authentication-plugin/
- # this is only for embedded server
- [embedded]
- # This group is only read by MariaDB servers, not by MySQL.
- # If you use the same .cnf file for MySQL and MariaDB,
- # you can put MariaDB-only options here
- [mariadb]
- # This group is only read by MariaDB-10.0 servers.
- # If you use the same .cnf file for MariaDB of different versions,
- # use this group for options that older servers don't understand
- [mariadb-10.0]
- [root@localhost ~]#
停止禅道容器
# docker stop chandao
- [root@localhost ~]# docker stop chandao
- chandao
- [root@localhost ~]#
删除禅道容器
# docker rm chandao
- [root@localhost ~]# docker rm chandao
- chandao
- [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
- [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
- 1b97eee2741749a286c8b40791f7bfd1ee0e687e8c414edaf5e95cfa218f7883
- [root@localhost ~]#
- [root@localhost ~]#
- [root@localhost ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 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
- [root@localhost ~]# docker cp /root/-server.cnf chandao:/etc/mysql/mariadb.conf.d/
- [root@localhost ~]#
- [root@localhost ~]# docker restart chandao
- chandao
- [root@localhost ~]#
- [root@localhost ~]#
- [root@localhost ~]#
- [root@localhost ~]# docker ps
- CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
- 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上部署与迁移的更多相关文章
- 定期从Docker上部署的MySQL备份数据
前段时间公司停电,正巧赶上周一领导要开会要过一遍项目,然而项目所依赖的MySQL数据库是直接部署在宿主机,且因为各人部署方式不同的原因,花了很久才在开会前启动起来.于是开完会后,我第一件事就是把原先依 ...
- centos 7 禅道bug管理软件部署
2018-10-26 部署前置条件 关闭防火墙或者添加防火墙规则,使禅道端口可以通过防火墙 关闭防火墙与selinux 临时关闭防火墙 systemctl stop firewalld 永久防火墙开机 ...
- 【集群监控】Docker上部署Prometheus+Alertmanager+Grafana实现集群监控
Docker部署 下载 sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.re ...
- 在Docker上部署使用Azure CLI镜像
Docker是非常流行的容器技术,在Docker中安装部署多种工具非常快速和方便:而Azure CLI是微软提供的可以在Linux/Mac上运行的跨平台命令行管理工具,本文介绍如何在Azure上安装部 ...
- ubuntu16.04环境下在docker上部署javaweb项目简单案例
因为一些原因,接触到了docker,经过一番研究,总算是有了一些自己的看法,有什么不对的地方,希望多多指教. 废话不多说,首先我这里使用的虚拟机安装的是ubuntu16.04版本,其他版本应该也可以. ...
- 在Docker上部署自动更新ssl证书的nginx + .NET CORE
突发奇想要搞一个ssl的服务器,然后我就打起了docker的主意,想着能不能搞一个基于Docker的服务器,这样维护起来也方便一点. 设想 想法是满足这么几点: .NET CORE on Docker ...
- docker服务部署、迁移与备份、dockerfile、私有仓库
今日内容概要 服务部署 迁移与备份 dockerfile 私有仓库 内容详细 1.服务部署 # 装 mysql redis --->源码编译安装-->启 动 # 有了docker后,容器操 ...
- 在docker上部署centos
1.查找镜像源$ docker search centosNAME DESCRIPTION STARS OFFICIALcentos The official build of CentOS. 385 ...
- 【Linux】在docker上部署grafana+zabbix监控实录
------------------------------------------------------------------------------------------------- ...
随机推荐
- 《DSP using MATLAB》Problem 6.22
代码: %% ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ %% Output In ...
- tomcat 9.0中,用cookie进行会话时出现的不合法字符问题
https://blog.csdn.net/KooKing_L/article/details/77435717 An invalid character [32] was present in th ...
- 彻底理解一致性哈希算法(consistent hashing)
转载请说明出处:http://blog.csdn.net/cywosp/article/details/23397179 一致性哈希算法在1997年由麻省理工学院提出的一种分布式哈希(DHT) ...
- oracle完全恢复数据库
完全恢复数据文件 rman target/ list backup summary; 查看是否有备份,如果没有备份,先进行全备份(应该是backup database吧) 现在模拟删除oracle数据 ...
- oracle服务器重启后无法进入系统,登录系统时提示model is unknow
这个是因为安装oracle时,修改了一些系统参数,导致开机异常 在选择系统列表那里直接按e,进入系统开机配置 大概在倒数第二行,也就是有utf8那行,添加init=/bin/sh 然后ctrl+x重启 ...
- mysql自增主键
MariaDB [test]> create table test1(id int primary key auto_increment,name varchar(20))auto_increm ...
- MySQL Transaction--TPS计算规则
TPS计算规则 在MYSQL 中,TPS(Transaction Per Second)的计算方法为 (com_commit+com_rollback)/time,但com_commit和com_ro ...
- 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 ...
- MQ介绍 & 实例
阅读目录 定义 优秀MQ特点 产品比较 实例(简单的实战) 关于消息队列与分布式的那些事 定义: 消息队列(MQ)是一种应用程序对应用程序的通信方法,应用程序通过队列进行通信,而不是通过直接调用彼此来 ...
- JS正则表达式验证身份证号码
function isCardNo(card) { // 身份证号码为15位或者18位,15位时全为数字,18位前17位为数字,最后一位是校验位,可能为数字或字符X var reg = /(^\d{1 ...