1. 创建目录
# 创建持久化目录
mkdir -pv /data/zentao
# 创建docker-compose目录
mkdir -pv /data/docker-compose/zentao
2. 创建变量文件.env
cat > /data/docker-compose/zentao/.env << 'EOF'
# 版本号可以自己根据项目的版本修改
Version=18.10
TZ=Asia/Shanghai
# Compose
COMPOSE_PROJECT_NAME=zentao
COMPOSE_HTTP_TIMEOUT=3600
DOCKER_CLIENT_TIMEOUT=3600
DOCKER_SUBNET=172.16.240.0/24
# 持久化存储
VOLUME_DIR=/data/zentao
# MySQL: 填写你的 Mysql 服务器信息
DB_HOST=zentao_db
DB_PORT=3306
DB_ROOT_PASSWORD=Aa123456!
DB_USER=zentao
DB_PASSWORD=zentao
DB_NAME=zentao_config
# Redis: 填写你的 Redis 服务器信息(docker版本目前好像不支持redis设置密码)
REDIS_HOST=zentao_redis
REDIS_PORT=6379
#REDIS_PASSWORD=8URXPL2x3HZMi7xoGTdk3Upj
# Zentao
UI_PORT=8080
MAX_EXECUTION_TIME=300
POST_MAX_SIZE=512M
UPLOAD_MAX_FILESIZE=512M
EOF
3. 编辑docker-compose.yml文件
cat > /data/docker-compose/zentao/docker-compose.yml << 'EOF'
version: '3'
services:
zentao_db:
container_name: zentao_db
image: mysql:8.0
restart: always
# docker安全验证
security_opt:
- seccomp:unconfined
volumes:
- /etc/localtime:/etc/localtime
- $VOLUME_DIR/mysql:/var/lib/mysql
environment:
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_USER: ${DB_USER}
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_DATABASE: ${DB_NAME}
command: --character-set-server=utf8 --collation-server=utf8_general_ci --default-authentication-plugin=mysql_native_password --skip-name-resolve
deploy:
resources:
limits:
memory: 4G
networks:
- zentao
zentao_redis:
container_name: zentao_redis
image: redis:6.2.1
restart: always
#command: redis-server --requirepass $REDIS_PASSWORD --loglevel warning --maxmemory-policy allkeys-lru
command: redis-server --requirepass $REDIS_PASSWORD --loglevel warning --maxmemory-policy allkeys-lru
environment:
REDIS_PORT: $REDIS_PORT
#REDIS_PASSWORD: $REDIS_PASSWORD
volumes:
- $VOLUME_DIR/redis:/data
healthcheck:
#test: "redis-cli -h 127.0.0.1 -p $$REDIS_PORT -a $$REDIS_PASSWORD info Replication"
test: "redis-cli -h 127.0.0.1 -p $$REDIS_PORT info Replication"
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
deploy:
resources:
limits:
memory: 1G
networks:
- zentao
zentao:
container_name: zentao
depends_on:
- zentao_db
- zentao_redis
image: easysoft/zentao:${Version}
restart: always
ports:
- ${UI_PORT}:80
volumes:
- $VOLUME_DIR/wwwroot:/data/zentao
environment:
MYSQL_INTERNAL: false
ZT_MYSQL_HOST: ${DB_HOST}
ZT_MYSQL_PORT: ${DB_PORT}
ZT_MYSQL_USER: ${DB_USER}
ZT_MYSQL_PASSWORD: ${DB_PASSWORD}
ZT_MYSQL_DB: ${DB_NAME}
PHP_SESSION_TYPE: redis
PHP_SESSION_PATH: tcp://zentao_redis:6379
PHP_MAX_EXECUTION_TIME: ${MAX_EXECUTION_TIME}
PHP_POST_MAX_SIZE: ${POST_MAX_SIZE}
PHP_UPLOAD_MAX_FILESIZE: ${UPLOAD_MAX_FILESIZE}
healthcheck:
test: "curl -fsL http://localhost/ > /dev/null"
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
deploy:
resources:
limits:
memory: 4G
networks:
- zentao
networks:
zentao:
driver: bridge
EOF
4. 启动&&安装
mysql设置
1.登录mysql容器
- cd /data/docker-compose/zentao; docker-compose exec zentao_db /bin/bash
2.root登录mysql
- mysql -uroot -pAa123456!
3.添加授权
- grant session_variables_admin,system_variables_admin on *.* to zentao@'%';
- flush privileges;
web页面安装
# 启动
docker-compose up -d
# 浏览器访问并安装
http://IP:8080
- 按提示下一步
- 连接数据库时填入预置信息(新版本会自动加载出来),如下
数据库服务器: zentao_db
服务器端口: 3306
数据库用户名: zentao
数据库密码: zentao
PMS使用的库: zentao_config
- 继续按提示完成安装即可