禅道在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监控实录
------------------------------------------------------------------------------------------------- ...
随机推荐
- hdu2732 Leapin' Lizards 最大流+拆点
Your platoon of wandering lizards has entered a strange room in the labyrinth you are exploring. As ...
- ios存储图片注意
以下方法可以解决 ios不能长按图片保存到手机的问题 -webkit-touch-callout:default;
- zabbix怎么把英文界面换成中文
虽然能勉勉强强能看懂大部分英文,但感觉还是直接换中文方便上手一点
- 开机或者安装系统时提示tsc: Fast TSC calibration failed解决方法
其实这个问题很简单,主要是时间不对的问题. 就拿我遇到这个问题来说.我是在vm虚拟机中安装了xenserver,然后在物理机安装xencenter连接xenserver,然后在安装新的虚拟机时遇到这个 ...
- 网络-console
console接口h3c er8300cisco asaQuidway S5700-28C-SI Routing Switchtopsec <H3C>? reboot Reboot dev ...
- tomcat源码阅读之集群
一. 配置: 在tomcat目录下的conf/Server.xml配置文件中增加如下配置: <!-- Cluster(集群,族) 节点,如果你要配置tomcat集群,则需要使用此节点. clas ...
- perventDefault, stopPropagation, stopImmediatePropagation 三者的区别
event有三种特别容易混淆的方法, 用来阻止默认事件的发生 1. e.preventDefault(); 2. e.stopPropagation(); 3. e.stopImmediatePro ...
- Python的rand vs randn以及linspace
Numpy里面的randn是满足了整体分布的,normal distribution(正态分布):rand则是满足了Uniform Distribution(均匀分布): Linspace(start ...
- jmeter --JDBC请求
转jmeter --JDBC请求 做JDBC请求,首先要了解这个JDBC对象是什么,然后寻找响应的数据库连接URL和数据库驱动. 数据库URL:jdbc:sqlserver://200.99.197. ...
- Eureka Client的使用
1. 新建工程 下一步,名字叫client 选择Cloud Discovery->Eureka Discovery 下一步后,点击完成 2. 在ClientApplication文件中增加Ena ...