1. Introduction
1.1 About ZenTao
1.2 Introduction PDF
1.3 Technical Support
1.4 Follow Us
2. Installation
2.1 Choose the Right Installation
2.2 ZenTao Cloud
2.3 One-click Installation for Windows
2.4 One-click Installation for Linux
2.5 Lampp Installation in Linux
2.6 Source Code Installation (for all systems)
2.7 Source Code Installation for macOS
2.8 XAMPP-VM Installation for macOS
2.9 XAMPP Installation for macOS
2.10 Install ZenTao in Docker
2.11 Install httpd, Mariadb, PHP 7.2 in Cent OS 8
2.12 Softaculous Service
2.13 Install Ioncube
3. Update
3.1 Update ZenTao
3.2 Update Via Source Code (For All Systems)
3.3 Update for One-Click Installation for Windows (xampp)
3.4 Update for One-Click Installation for Linux
4. Users and Groups
4.1 Company Structure
4.2 Add a User
4.3 Manage Users in batches
4.4 Groups and Privileges
5. Quick Start
5.1 Project and Task Management
5.2 Bug Tracking
5.3 Product Management
5.4 Todo Management
6. Basic Application
6.1 Basic Workflow
6.2 Agile and Scrum
6.3 ZenTao and Scrum
6.4 ZenTao Tutorial for Rookies
6.5 Create a Product
6.6 Create a Story
6.7 Create a Project
6.8 Confirm a Story
6.9 Decompose Stories into Tasks
6.10 Report a Bug
6.11 Manage Contacts
6.12 Customization
6.13 Import Excel, CSV Files
6.14 Document Management
6.15 Work Mode
6.16 Points
6.17 Required Field
6.18 Privileges
6.19 Annual Work Summary
7. Advanced Application
7.1. Workflow
7.1.1 ZenTao Workflow
7.2. Individual management
7.2.1 My Todo
7.2.2 My Task, Story and Bug
7.2.3 My Profile
7.3. Product Owner
7.3.1 Manage a Product
7.3.2 Manage a Product Line
7.3.3 Create and Review a Story
7.3.4 Change and Review a Story
7.3.5 Status and Phase
7.3.6 Story Writing
7.3.7 Product Module
7.3.8 Release Plan
7.3.9 Create a Release
7.3.10 Roadmap
7.3.11 Documents
7.3.12 Planning Meetings
7.3.13 Daily Scrum, Review and Retrospective Meetings
7.3.14 Story Reports
7.4. Scrum Master
7.4.1 Create a Sprint
7.4.2 Set a Team
7.4.3 Confirm a Story
7.4.4 Task Breakdown
7.4.5 Daily Standup Meetings
7.4.6 Check Project Progress via Burndown Chart
7.4.7 Check Project Progress via Lists
7.4.8 Review and Retrospective Meetings
7.4.9 Basic reports on tasks
7.5. Development Team
7.5.1 Project planning meeting and task breakdown
7.5.2 Claim tasks and update efforts
7.5.3 Kanban and Tree Diagram
7.5.4 Build
7.5.5 Test Request
7.5.6 Resolve a Bug
7.5.7 Documents
7.5.8 Confirm Bugs
7.6. Test Team
7.6.1 Bug Tracking
7.6.2 Report a Bug
7.6.3 Verify and Close a Bug
7.6.4 Activate a Bug
7.6.5 Find a Bug
7.6.6 Test Case
7.6.7 Create and Review Test Cases
7.6.8 Test Suites, Public Case Libs and Reports
7.6.9 Manage Test Requests
7.6.10 Run Cases and Report Bugs
7.6.11 Reports
8. Configuration
8.1. Maintain ZenTao
8.1.1 Initialize scripts
8.1.2 Data Backup
8.1.3 Recover the Deleted
8.1.4 Update Burndown Charts
8.1.5 ZenTao Remote Host
8.2. Deploy ZenTao
8.2.1 Guest Login
8.2.2 Email Notification
8.2.3 Set Super Admin
8.2.4 Static Access
8.2.5 Remove "zentao" from URL
8.2.6 Integrate SVN
8.2.7 Integrate Git
8.2.8 Integrate Webhook
8.2.9 Integrate Xuan.im
8.2.10 Integrate Zdoo
8.2.11 Integrate Third-Party Apps
8.2.12 Password-Free Login
8.2.13 Translation Add-on
8.2.14 Integrate Jenkins
8.2.15 Extension
8.2.16 Fix Weak Password
9. Customization
9.1 Introduction
9.2 Directory
9.3 Find Codes
9.4 Database Structure
9.5 Common Modules
9.6 Add Features to Menu
9.7 Set Privileges to Modules
9.8 Examples: modify language prompt
9.9 Examples: set priority when creating bugs
9.10 Extension Editor
9.11 Feature Limitation
9.12 ZenTao Packaging Standards 1.1
10. Misc
10.1 About Third-Party Code
10.2 Support ZenTao
10.3 ZenTao Service
10.4 Acknowledgement

Install ZenTao in Docker

2020-06-23 18:49:41
John Ten
Last edited by Hongyan on 2021-12-28 17:49:08
Share links
Summary : This is an instruction to install ZenTao, a Scrum tool, in a docker.

1. Get Docker ready

Docker 18 or the version above are strongly recommended. No specific requirements for the host environment.

Check your docker version through the order below:

docker -v

2. Download ZenTao image

Online download and offline import are both available to deploy ZenTao image and you can choose according to your environment.

2.1 Download

ZenTao image is uploaded to dockerhub, and you could find it here, https://hub.docker.com/r/easysoft/zentao/tags

sudo docker pull [Image name]:[Image tag]

Pull an image, e.g. zentao:12.2.stable

sudo docker pull easysoft/zentao:12.2.stable

ZenTao version and Image tag:

ZenTao Version Tag
Open source

Start with number, like 12.2.stable

Professional Start with pro, like pro8.8
Enterprise Strat with biz, like biz3.7

2.2. Import

ZenTao versions, image names and image links:

ZenTao Version Image name Image link ( Archive fiel directory )
Open source 12.3.1 easysoft/zentao:12.3.1
Open source12.2.stable easysoft/zentao:12.2.stable
Professional 8.8 easysoft/zentao:pro8.8
Enterprise 3.7 easysoft/zentao:biz3.7

As you can see above, image link names are combined of zentao_version number.tar

Note: The naming format of the archive file is product name+underline+version number+.tar, and all the products in the future will follow this format, too.

So how to import images? 

  1. Choose the appropriate image link for you and import it into your host. 
  2. Go to archive file directory and run docker load
sudo docker load -i [Archive file directory]

Load an image, e.g. zentao_12.3.1.tar

sudo docker load -i zentao_12.3.1.tar

3. Docker start

3.1. Create a docker network

sudo docker network create --subnet=[ip range] [network driver name]
  • IP range: For example, ranges from to
  • Network driver name: a name for network driver, name as you wish.
sudo docker network create --subnet= zentaonet

3.2. Docker container start

sudo docker run --name [container name] -p [host port]:80 --network=[driver name] --ip [container IP] --mac-address [mac address] -v [host zentao root]:/www/zentaopms -v [host mysql root]:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=[database password] -d easysoft/zentao:[image tag]
  • container name: name a container you want to start as you wish.
  • host port: your web host port
  • driver name: the network driver
  • container IP: pick a static IP for your container
  • MAC address: pick a static MAC address for your container, ranges from 02:42:ac:11:00:00 to 02:42:ac:11:ff:ff are recommended
  • host ZenTao root: required, for ZenTao files and attachments storage. Leave it blank if you are not upgrading your ZenTao.
  • host MySQL root: required, for ZenTao data storage. Leave it blank if you are not upgrading your ZenTao.
  • database password: default account in container is root, 123456, do not mention it if you don't need to change anything, but you can use MYSQL_ROOT_PASSWORD to modify the password as well.
  • image tag: the version of ZenTao.

Create blank roots /www/zentaopms and /www/mysqldata on the host

sudo docker run --name zentao -p 80:80 --network=zentaonet --ip --mac-address 02:42:ac:11:00:00 -v /www/zentaopms:/www/zentaopms -v /www/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.2.stable


  • If you need to connect to the database remotely, you can add a port mapping "-p [host port]:3306"
  • If you want to run multiple ZenTao on a single host at the same time, you just need to configure with different [contaniner name], [host port], [container IP], [mac address], [host zentao root], [host mysql root]
sudo docker run --name zentao2 -p 8080:80 --network=zentaonet --ip --mac-address 02:42:ac:11:00:01 -v /www/zentaopms2:/www/zentaopms -v /www/mysqldata2:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.2.stable

3.3. Check if the container is running 

docker ps

If not running, run without -d and debug your container, feel free to contact our technical support by philip@easycorp.ltd.

4. Install ZenTao

Visit  http://container ip:host mapped port

5. Upgrade ZenTao

5.1. Stop the ZenTao container first to prepare for data backup

docker stop zentao

5.2. Back up ZenTao

For data security, backup [host zentao root] and [host mysql root], like copy /www/zentaopms and /www/mysql data to other root in host.

5.3. Get the latest source code package from https://www.zentao.pm/download.html.

5.4. Unzip it and overwrite to [host zentao root], like overwrite to /app/zentaopms

5.5. Start zentao container

docker start zentao

5.6. Visit upgrade.php, choose the corresponding version, and follow the instruction to upgrade

Please refer to the manual here,  https://www.zentao.pm/book/zentaomanual/free-open-source-project-management-software-upgradezentao-18.html

6. Install svn、git (If you don't use svn、git to integrate, no need to install) (Optional)

6.1 Enter to container

docker exec -it [container name] /bin/bash
6.2 Run the orders below:
apt-get install git -y
apt-get install subversion -y

7. FAQ

7.1 How to configure MySQL in a container?

Run the order below:

docker exec -it [container name] /bin/bash
For example, execute zentao container, edit my.cnf, save it and restart mysql
docker exec -it zentao /bin/bash
vi /etc/mysql/my.cnf

It's the same to configure Apache and PHP.INI, related roots in the container as shown below:

  • Apache: /etc/apache2/
  • ZenTao: /app/zentaopms
  • MySQL: /etc/mysql/
  • PHP: /etc/php/7.0/apache2

7.2 How to connect remotely to MySQL in the container?

  • Make sure there is a port mapping between the host and MySQL in the container
  • Make sure "bind-address =" in /etc/mysql/mariadb.conf.d/50-server.cnf
  • Confirm the remote login user permissions, such as using the root user
select host from mysql.user where user='root';
update mysql.user set host='%' where user='root';
flush privileges;
7.3 Why the /www/zentaopms directory mounted by the container is an empty folder?

The mount directory of ZenTao is /app/zentaopms in the 4 image of ZenTao 12.3.1, 12.2.stable, biz3.7, and pro8.8, you need to modify the mount directory

For example: Create empty directories /app/zentaopms and /app/mysqldata on the host, run the order below,

sudo docker run --name zentao -p 80:80 --network=zentaonet --ip --mac-address 02:42:ac:11:00:00 -v /app/zentaopms:/app/zentaopms -v /app/mysqldata:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 -d easysoft/zentao:12.3.3

Feel free to contact our technical support at philip@easycorp.ltd if any questions.

yosef 2023-12-14 11:53:38 Reply
MySQL的端口在本机3309 如何启动?
philip 2023-12-14 14:29:59
Write a Comment
Comment will be posted after it is reviewed.