docker-compose.yml如下
# sudo 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:[镜像标签]
version: '3.6'
services:
# 禅道(你自己的容器名称)
zentao:
image: easysoft/zentao:18.0
container_name: zentao
restart: always
# privileged: true # 特权模式
ports:
# 禅道访问页面端口设置,格式,宿主机端头:容器内端口,不建议设置为 80:80 ,这样占用了宿主机服务器的 80 短裤
- 20080:80
# 禅道数据库端口设置,端口挂载便于外部管理禅道数据库,不建议设置为 3306:3306 除非你你服务器上不安装 MySQL 提供项目使用
- 23306:3306
# 数据持久化挂载宿主机:格式: 宿主机路径目录:容器内部目录
# 容器内部的不用动,宿主机中的可根据自己需求修改,支持绝对路径和相对路径
# expose:
# - "20080"
volumes:
- ./volumes/data:/www/zentaopms
- ./volumes/mysql:/var/lib/mysql
# 禅道数据库MySQL root 用户密码设置(这里设置了,感觉无效,启动时依然警告:Access denied for user 'root'@'localhost' (using password: NO))
# 启动引导界面还会让你设置一次 数据库 MySQL 的 用户和密码
environment:
# TZ: Asia/Shanghai
# 数据库密码
- MYSQL_HOST=mysql
- MYSQL_PORT=3306
- MYSQL_ROOT_PASSWORD=123456789
- MYSQL_USER=zendao
- MYSQL_PASSWORD=zendao
- MYSQL_DB=zentao
- DEBUG=1
- IS_CONTAINER=true
连接数据库之后提示
SQLSTATE[HY000]: General error: 1030 Got error 44 "Channel number out of range" from storage engine InnoDB
你volumes/mysql 不能直接进行挂载吧,你注释掉这一行或者清空一下volumes/mysql的数据,应该就没问题了