yapi mongo
# yapi docker-compose.yml
version: '3'
services:
yapi-web:
image: jayfong/yapi-x:latest
container_name: yapi-web
ports:
- 40001:3000
environment:
- YAPI_ADMIN_ACCOUNT=**@**.com # 改
- YAPI_ADMIN_PASSWORD=19****** # 改
- YAPI_CLOSE_REGISTER=true
- YAPI_DB_SERVERNAME=yapi-mongo
- YAPI_DB_PORT=27017
- YAPI_DB_DATABASE=yapi
- YAPI_MAIL_ENABLE=false
- YAPI_LDAP_LOGIN_ENABLE=false
- YAPI_PLUGINS=[{"name":"add-user","options":{}}] #github插件名:yapi-plugin-add-user,但容器npm install拼接了yapi-plugin
depends_on:
- yapi-mongo
links:
- yapi-mongo
restart: unless-stopped
yapi-mongo:
image: mongo:latest
container_name: yapi-mongo
volumes:
- ./data/db:/data/db
expose:
- 27017
restart: unless-stopped
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
https://github.com/fjc0k/YApi-X 安装了yapi-x
https://github.com/fjc0k/docker-YApi
# yapi 菜单抖动问题
进入容器
docker exec -it yapi-web /bin/sh
1
容器: /yapi/vendors/static/
cd /yapi/vendors/static
vi ./index.html
1
2
2
添加样式
<style>
.ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title {
width: auto!important;
}
</style>
1
2
3
4
5
2
3
4
5
# yapi MongoDB还原
链接:https://pan.baidu.com/s/1uiOGtNN7znXg_YfjqZeOKw 提取码:woon
解压文件放到文件夹里
把宿主机里面的文件拷贝到容器里
# 容器创建/backup
docker cp /root/docker/yapi/backup/yapi/ yapi-mongo:/backup/
docker cp 宿主机路径 容器名:/容器路径/
1
2
3
2
3
进入容器
docker exec -i -t yapi-mongo /bin/bash
docker exec -i -t 容器名 /bin/bash
1
2
2
MongoDB从容器路径导入数据
mongorestore -h 127.0.0.1 --port 27017 -d yapi /backup/yapi
mongorestore -h 127.0.0.1 --port 27017 -d 数据库名 容器内备份路径
1
2
2
tar打包
# yapi MongoDB备份
查看现有的docker 找到MongoDB的Name
docker ps
1
进入MongoDB的docker
docker exec -i -t {dockername} /bin/bash
1
创建备份文件夹
mkdir -p /backup/list
1
把MongoDB的数据库导出到容器目录
mongodump -h 127.0.0.1 --port 27017 -d yapi -o /backup/list
1
把docker容器内的文件导出到宿主机
docker cp yapimongo:/backup/ /root/docker/backup/yapi/
docker cp 容器内路径 宿主机路径
1
2
2
自动脚本
#!/bin/sh
# dump 命令执行路径,根据mongodb安装路径而定
# mongo的容器名称
MONGODB_CONTAINER_NAME=mongo-yapi
DUMP="docker exec -i ${MONGODB_CONTAINER_NAME} "
# 临时备份路径(注:docker 容器内的路径)
OUT_DIR=/dump
# 压缩后的备份存放路径(注:docker 容器内的路径)
TAR_DIR=/backup/list
# 当前系统时间
DATE=`date +%Y%m%d%H%M`
# 数据库账号
#DB_USER=user
# 数据库密码
#DB_PASS=password
# 数据库名称,多个用空格隔开
DB_NAME_ARR=("yapi")
# 代表删除7天前的备份,即只保留近 7 天的备份
DAYS=7
# 最终保存的数据库备份文件
for DBNAME in ${DB_NAME_ARR[@]}
do
# 删除临时目录内容
rm -rf $OUT_DIR/*
# 文件名称:数据库名_时间
FILE_NAME="${DBNAME}_${DATE}"
# 导出数据的临时目录
TARGET_DIR="$OUT_DIR/$FILE_NAME"
mkdir -p $TARGET_DIR
# 临时目录打包压缩后的文件
TARGZ_FILE="${FILE_NAME}.tar.gz"
# 存放压缩后文件的目录
TARGET_FILE="$TAR_DIR/$TARGZ_FILE"
find /backup/list -mtime +1 -delete
# 执行导出命令
# $DUMP -h 127.0.0.1:27017 -u $DB_USER -p $DB_PASS -d $DBNAME -o $OUT_DIR/$DATE
$DUMP mongodump -h 127.0.0.1:27017 -d $DBNAME -o $TARGET_DIR
# 判断导出结果
flag=`echo $?`
if [ $flag == "0" ];then
echo "database $DBNAME success backup to $TARGET_DIR"
else
echo "database $DBNAME backup fail!"
fi
# 压缩格式为 .tar.gz 格式
# -P tar 默认采用相对路径压缩打包,需要(-P)允许使用绝对路径
# -v 输出 verbose 日志
$DUMP tar -zcPf $TARGET_FILE $TARGET_DIR/$DBNAME
# 将容器内的压缩文件,复制到宿主机与备份脚本同级的dump目录下
docker cp ${MONGODB_CONTAINER_NAME}:$TARGET_FILE /docker/mangodb/data/backup
#echo "docker cp ${MONGODB_CONTAINER_NAME}:$TARGET_FILE $PWD/dump"
done
# 删除 $DAYS 天前的备份文件
find /docker/mangodb/data/backup -mtime +$DAYS -delete
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
# 端口:12321 宝塔nginx配置
使用宝塔反向代理
上次更新: 2023/02/23, 00:30:28