Skip to content

yapi docker-compose.yml

dockerfile
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

https://github.com/fjc0k/YApi-X 安装了yapi-x

https://github.com/fjc0k/docker-YApi

yapi 菜单抖动问题

进入容器

docker exec -it yapi-web /bin/sh

容器: /yapi/vendors/static/

cd  /yapi/vendors/static
vi ./index.html

添加样式

CSS
<style>
.ant-menu-inline .ant-menu-item, .ant-menu-inline .ant-menu-submenu-title {
    width: auto!important;
}
</style>

yapi MongoDB还原

image-20221229220409380

链接:https://pan.baidu.com/s/1uiOGtNN7znXg_YfjqZeOKw 提取码:woon

解压文件放到文件夹里

把宿主机里面的文件拷贝到容器里

none
# 容器创建/backup
docker cp  /root/docker/yapi/backup/yapi/ yapi-mongo:/backup/
docker cp  宿主机路径 容器名:/容器路径/

进入容器

none
docker exec -i -t yapi-mongo /bin/bash
docker exec -i -t 容器名 /bin/bash

MongoDB从容器路径导入数据

none
mongorestore -h 127.0.0.1 --port 27017 -d yapi /backup/yapi
mongorestore -h 127.0.0.1 --port 27017 -d 数据库名 容器内备份路径

tar打包

yapi MongoDB备份

查看现有的docker 找到MongoDB的Name

none
docker ps

进入MongoDB的docker

none
docker exec -i -t {dockername} /bin/bash

创建备份文件夹

none
mkdir -p /backup/list

把MongoDB的数据库导出到容器目录

none
mongodump -h 127.0.0.1 --port 27017 -d yapi -o /backup/list

把docker容器内的文件导出到宿主机

none
docker cp  yapimongo:/backup/ /root/docker/backup/yapi/
docker cp  容器内路径 宿主机路径

自动脚本

bash
#!/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

端口:12321 宝塔nginx配置

使用宝塔反向代理

Lucking