群晖NAS使用docker部署wikijs、mysql8并编写自动备份脚本
创建挂载目录并授权
mkdir -p /volume1/docker/wikijs/data/datamkdir -p /volume1/docker/wikijs/data/logsmkdir -p /volume1/docker/wikijs/data/mysql-datamkdir -p /volume1/docker/wikijs/data/uploadschown -R 999:999 /volume1/docker/wikijs/data/mysql-datachown -R 1000:1000 /volume1/docker/wikijs/data/
编写wikijs核心配置文件
vim /volume1/docker/wikijs/data/config.yml# Wiki.js 2.x 核心配置文件# ========================# 数据库配置 (必须与docker环境变量一致)# ========================db:type: mysqlhost: 172.17.0.1port: 3306user: wikijspass: Big@8848@db: wikissl: false# ========================# 服务器配置# ========================server:host: 0.0.0.0port: 3000# 静态文件缓存(生产环境建议开启)staticCache: true# ========================# 功能模块配置# ========================# 存储配置(默认使用本地存储)storage:local:enabled: truepath: ./content/uploads# ========================# 日志配置# ========================logging:level: infostdout: true# 文件日志路径(容器内路径)file: ./logs/wiki.log
创建mysql容器
docker run --name mysql-wikijs \
-e MYSQL_ROOT_PASSWORD=Big@8848@ \
-e MYSQL_DATABASE=wiki \
-e MYSQL_USER=wikijs \
-e MYSQL_PASSWORD=Big@8848@ \
-p 3306:3306 \
-v /volume1/docker/wikijs/data/mysql-data:/var/lib/mysql \
-d mysql:8.0 \
--character-set-server=utf8mb4 \
--collation-server=utf8mb4_unicode_ci
登录尝试一下,顺便查看该创建的数据库以及用户是否创建好,以及对wiki数据库的权限是不是完全权限
docker exec -it mysql-wikijs mysql -u root -p
查看数据库
show databases;
查看用户
SELECT User, Host FROM mysql.user;查看用户对wiki数据库的权限SHOW GRANTS FOR 'wikijs'@'%'; #以下这种情况代表有完全权限
启动wikijs容器
docker run -d \
--name=wikijs \
-e "DB_TYPE=mysql" \
-e "DB_HOST=172.17.0.1" \ #我这里是docker的网桥ip,因为我这里宿主机ip无法ping通
-e "DB_PORT=3306" \
-e "DB_USER=wikijs" \
-e "DB_PASS=Big@8848@" \
-e "DB_NAME=wiki" \
-v /volume1/docker/wikijs/data/data:/var/www/wiki/content \
-v /volume1/docker/wikijs/data/config.yml:/var/www/wiki/config.yml \
-v /volume1/docker/wikijs/data/uploads:/var/www/wiki/server/uploads \
-v /volume1/docker/wikijs/data/logs:/var/www/wiki/logs \
-p 3000:3000 \
--restart unless-stopped \
ghcr.io/requarks/wiki:2.5.307在浏览器里打开
http://你的群晖IP:3000,然后按照向导完成初始化配置。
设置中文语言

编写自动备份mysql数据库的脚本
vim mysql_dump.sh#!/bin/bash# Docker版MySQL自动备份脚本# 配置参数CONTAINER_NAME="mysql-wikijs" # MySQL容器名称DB_USER="wikijs" # 数据库用户名DB_PASS="Big@8848@" # 密码DB_NAME="wiki" # 要备份的数据库名BACKUP_DIR="/volume1/docker/wikijs/mysql_backup" # 宿主机备份目录DAYS_TO_KEEP=7 # 保留最近7天备份# 在容器内执行备份并直接保存到宿主机docker exec "$CONTAINER_NAME" /bin/bash -c \"mysqldump --no-tablespaces --single-transaction -u'$DB_USER' -p'$DB_PASS' '$DB_NAME'" \| gzip > "$BACKUP_DIR/$DB_NAME-$(date +%Y%m%d).sql.gz"# 删除旧备份find $BACKUP_DIR -name "$DB_NAME-*.sql.gz" -mtime +$DAYS_TO_KEEP -delete#恢复备份#gunzip < /backups/mysql/wiki-20230815_030001.sql.gz | \# docker exec -i "$CONTAINER_NAME" mysql -u"$DB_USER" -p"$DB_PASS" "$DB_NAME"
增加可执行权限
chmod +x mysql_dump.sh
编写定时任务
第一种方法/etc/crontab 在里面添加定时任务,但群晖NAS默认不走这个配置文件
#每天凌晨3点执行wikijs数据库的备份0 3 * * * sh /volume1/docker/wikijs/mysql_dump.sh

新增计划任务,用户选择root

选择执行时间

编辑执行脚本的命令及路径

返回计划任务界面,选择该条计划任务,点击操作,点击查看结果

可以查看该条任务的执行记录




浙公网安备 33010602011771号