一、禪道部署
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 20 hours ago 584MB djltomcat latest d260185f87dc 5 weeks ago 508MB ubuntu 16.04 7e87e2b3bf7a 6 weeks ago 117MB mysql latest 102816b1ee7d 2 months ago 486MB registry.cn-hangzhou.aliyuncs.com/helowin/oracle_11g latest 3fa112fd3642 3 years ago 6.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…" 20 hours ago Up 20 hours 0.0.0.0:7075->80/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 60 drwxrwxr-x. 2 www-data www-data 54 Mar 12 01:31 ./ drwxrwxr-x. 7 www-data www-data 116 Mar 12 01:31 ../ -rw-rw-r--. 1 www-data www-data 20113 Feb 28 08:55 en.php -rw-r--r--. 1 root root 20339 Mar 12 01:15 zh-cn.php -rw-rw-r--. 1 www-data www-data 20383 Feb 28 08:56 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 4 drwxrwxrwx. 3 www-data www-data 15 Mar 12 02:29 ./ drwxrwxrwx. 5 www-data www-data 50 Feb 28 08:56 ../ drwxr-xr-x. 23 root root 4096 Mar 12 02:06 1/
三、映射禪道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/50-server.cnf /root/ [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# ls 50-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 50-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 = 3306 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 = 8 # This replaces the startup script and checks MyISAM tables if needed # the first time they are touched myisam-recover = BACKUP #max_connections = 100 #table_cache = 64 #thread_concurrency = 10 # # * 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 = 1 # # 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 = 10 #log_slow_rate_limit = 1000 #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 = 1 #log_bin = /var/log/mysql/mysql-bin.log expire_logs_days = 10 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 4-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.22-6 # # 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 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 1b97eee2741749a286c8b40791f7bfd1ee0e687e8c414edaf5e95cfa218f7883 [root@localhost ~]# [root@localhost ~]# [root@localhost ~]# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b97eee27417 chandao:latest "/app/docker-entrypo…" 9 seconds ago Up 9 seconds 0.0.0.0:7075->80/tcp, 0.0.0.0:3307->3306/tcp chandao
4、替換禪道容器中的數據庫配置文件
# docker cp /root/50-server.cnf chandao:/etc/mysql/mariadb.conf.d/
5、重新啟動禪道容器
# docker restart chandao
[root@localhost ~]# docker cp /root/50-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 3 seconds 0.0.0.0:7075->80/tcp, 0.0.0.0:3307->3306/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