Docker搭建Yapi及迁移

Docker搭建Yapi及迁移

安装mongo

docker run -p 27017:27017 -d -v /data/mongo/data:/data/db -v /data/mongo/conf:/data/configdb --name mongoserver mongo --auth

安装yapi

注意: yapi不要开放外网,存在恶意mock漏洞,解决办法:Yapi的mock漏洞

我采用的是dockfile,搭建yapi服务,

准备工作

Dockerfile内容:

FROM alpine:latest
LABEL MAINTAINER = 'Levon'
RUN mkdir -p /yapi/vendors/
COPY vendors/ /yapi/vendors/
# RUN echo "https://mirrors.aliyun.com/alpine/latest-stable/main/" > /etc/apk/repositories \
RUN sed -i 's/dl-cdn.alpinelinux.org/mirrors.ustc.edu.cn/g' /etc/apk/repositories \
    && apk update \
     && apk add nodejs=14.17.6-r0 \
      && apk add npm=7.17.0-r0 \
      && apk add --no-cache git bash curl tar vim python3 python3-dev gcc libcurl make \
       && rm -rf /var/cache/apk/*
RUN npm config set registry https://registry.npm.taobao.org \
      && npm i -g node-gyp \
        && npm install -g yapi-cli
RUN cd /yapi/vendors \
      && npm install --production --registry https://registry.npm.taobao.org
WORKDIR /yapi/vendors
COPY config.json /yapi/
COPY entrypoint.sh /usr/local/bin/
RUN chmod 755 /usr/local/bin/entrypoint.sh
COPY .vimrc /root/
EXPOSE 3000
ENTRYPOINT ["entrypoint.sh"]

entrypoint.sh内容:

#!/bin/bash

# yapi初始化后会有一个init.lock文件
lockPath="/yapi/init.lock"


# 进入yapi项目
cd /yapi/vendors


# 如果初始化文件文件存在,则直接运行,否则初始化
if [ ! -f "$lockPath" ]
then
  # 启动Yapi初始化
  node server/install.js
  # 若是初始化成功的情况下直接运行yapi
  node server/app.js
else
  # 运行yapi管理系统
  node server/app.js
fi

config.json内容

{
  "port": "端口",
  "adminAccount": "用户名",
  "timeout":120000,
  "mock": false,
  "db": {
    "servername": "mongoserver",
    "DATABASE": "yapi",
    "user": "mongo账号",
    "pass": "mongo密码",
    "port": 27017,
    "authSource": ""
  },
  "mail": {
    "enable": false,
    "host": "smtp.163.com",
    "port": 465,
    "from": "***@163.com",
    "auth": {
      "user": "***@163.com",
      "pass": "*****"
    }
  }
}

vendors文件中Yapi版本:6925c98da73,master最新版本中package-lock.json存在一些问题,无法访问的去哪儿的镜像地址

构建

docker build -f dockerfile -t yapi:v1 .

启动yapi镜像

docker run -d --name yapi -p 3000:3000 yapi:v1

迁移

备份

  • 备份数据到 /data 路径下(路径下有一个yapi的文件)
docker exec 容器名 mongodump -d yapi -o /data/
  • 进入到容器中打包备份文件
docker exec -it 容器名 /bin/bash
cd /data
tar -zcvf yapi.tar /data/yapi
  • 将备份文件移动到宿主机
docker cp 容器名:/data/yapi.tar  /data/backup

恢复

  • 进入到新服务器,将备份文件copy到新服务的data/backup中
  • 复制宿主机的备份文件到docker的mongo中
docker cp  /data/backup/yapi.tar  容器名:/data/
  • 进入到容器中解压文件
docker exec -it 容器名 /bin/bash
cd /data
tar -zxvf yapi.tar 
  • 还原数据
docker exec 容器名 mongorestore -d yapi --drop --dir /data/yapi
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值