docker部署禪道及開啟MySQL遠程登錄


禪道作為一個開源的項目管理工具,其功能足以滿足日常開發、運維、測試及產品版本迭代,重要的是免費、可定制,好處不用多數,業內用的也比較廣泛(主要是互聯網企業)

關於禪道的部署可以參考官網: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

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

  

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 

導入后,查看本地鏡像

[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:宿主機映射端口

 然后點擊【登錄禪道管理系統】,輸入帳號密碼,就可以登錄我們的禪道了。

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

這樣我們就可以在外部登錄禪道的數據庫了。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM