使用docker-compose部署YApi

最近由于工作需要,要私有化部署一个接口管理平台,作为原驼厂的一员,首先想到的就是YApi(https://github.com/YMFE/yapi),然而这个项目已经两年多没更新,网上有各种继续维护的分支,也没多少更新,基于docker-compose部署的方案维护也不活跃,要不就是走不通,要不就是YApi版本没更新到最新。

所以要想用最新版本的YApi只能自己造轮子了,下面是我的方案(macOS):

1、首先在github下载最新的1.12.0版本,解压到本地vendors目录(本地目录 yapi/vendors,yapi作为项目的基目录)

2、编写构建YApi镜像的Dockerfile(最高基于node12):

复制代码
FROM --platform=${BUILDPLATFORM:-amd64} node:12-alpine3.14 AS builder

# 安装构建工具
RUN apk add --update --no-cache ca-certificates curl wget cmake build-base linux-headers bash python2 make g++ gcc libgcc openssl && update-ca-certificates

WORKDIR /yapi/vendors

# 可以直接git clone,我是下载解压到本地vendors的
COPY vendors /yapi/vendors

RUN npm install --production --registry https://registry.npmmirror.com

# 镜像
FROM node:12-alpine3.14

WORKDIR /yapi

COPY --from=builder /yapi .

EXPOSE 3000
复制代码

 

 3、准备docker-compose.yml(注意:第一次启动需要初始化YApi,所以docker-compose第一次启动和以后启动有区别,见备注)

复制代码
services:
  yapi-mongo:
    container_name: yapi-mongo
    image: mongo:latest
    restart: unless-stopped
    environment:
      TZ: Asia/Shanghai
      MONGO_INITDB_ROOT_USERNAME: yapi
      MONGO_INITDB_ROOT_PASSWORD: 12345678
    volumes:
      - ./data/db:/data/db
    ports:
      - 27017:27017
  yapi-web:
    build:
      context: ./
      dockerfile: Dockerfile
    image: yapi:1.12.0
    container_name: yapi-web
    ports:
      - 3000:3000
    volumes:
      - ./yapi/config.json:/yapi/config.json
      - ./yapi/log:/yapi/log
    depends_on:
      - yapi-mongo
    links:
      - yapi-mongo
    # 第一次运行,需要初始化
    # command: sh -c "sleep 30 && node '/yapi/vendors/server/install.js' &&  node '/yapi/vendors/server/app.js'"
    # 再次运行,sleep 30秒是要等待mongo启动完成,不然yapi会连接不到mongo;或对mongo进行健康检测(healthcheck)替代sleep
    command: sh -c "sleep 30 && node '/yapi/vendors/server/app.js'"
    restart: unless-stopped
复制代码

4、准备db目录和YApi的config文件(参考docker-compose中的volumes,自定义

5、docker-compose up 或 docker-compose up -d (至于docker镜像源的问题,各项神通自己解决吧😂)

6、访问:http://127.0.0.1:3000,初始用户名和密码见(https://github.com/YMFE/yapi)里面的说明,或启动日志。

7、其他方案:1、Apifox(私有化需要钱😁,个人和小团队在线使用很方便)2、Hoppscotch 国外的一个项目,类似postman,也支持私有化部署(https://github.com/hoppscotch/hoppscotch,原名:postwoman)

 

posted @   钻牛角尖儿  阅读(113)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· 葡萄城 AI 搜索升级:DeepSeek 加持,客户体验更智能
· 什么是nginx的强缓存和协商缓存
· 一文读懂知识蒸馏
点击右上角即可分享
微信分享提示