Sign inSign up

zsxian22/yapi

By zsxian22

Updated 3 days ago

Image
0

251

zsxian22/yapi repository overview

0.1.0 是本镜像的首个版本(同时提供 0.1latest),基于 YApi 社区维护版 1.11.2。Mac、Linux、Windows(Docker Desktop / WSL2)执行 docker pull 时会按 CPU 自动选择 linux/amd64linux/arm64

默认管理员:[email protected] / yapi.pro(登录后请立刻修改)。

这个版本解决了哪些问题

原版 YApi 已停更,调试接口还要装 Chrome 跨域插件,商店下架后几乎不可用。0.1.0 用服务端代发请求替代插件,并把能跑的社区维护版打成可直接 pull 的多架构镜像。

  1. 调试接口不再依赖 Chrome 跨域插件
    原版运行页、测试集合批量运行都依赖 cross-request 扩展。Chrome 商店下架后只能本地安装,跨域失败、插件检测弹窗是常态。本版本由 YApi 服务端代发真实请求(POST /interface/run),运行页可切换「服务器代理 / 浏览器直发」(选择会记在本地)。集合批量运行默认走服务器代理,不再检查插件是否安装。云元数据地址(如 169.254.169.254)始终拦截,防止 SSRF;内网 / 本机是否允许由 runProxy.allowPrivateIp 控制。请求超时、响应体大小也可配。

  2. 原版停更,新环境装不上
    官方镜像和 yapi-pro-cli 已不可用,旧 Node / MongoDB / Koa 在新系统上依赖冲突。镜像内为 Node 20,配合 MongoDB 6。

  3. Mac、Linux、Windows 不能共用一份镜像
    Apple Silicon 与 x86 服务器架构不同。本版本同时发布 amd64arm64,pull 时自动选择。

  4. 启动前必须手写并挂载 config.json
    没有配置文件容器会直接退出。本版本内置默认配置,数据库、邮件、通行密钥、服务端代理等常用项可用环境变量覆盖。

  5. 社区版已修的使用问题(随 1.11.2 带入)
    Docker 下 config.json 路径算错导致读不到配置;Ace Editor worker 在 SPA 路由下加载失败,接口 JSON/JS 校验失效;通行密钥登录时验证码框不出现、首次 406 自动发信。上述问题已修复,并支持 WebAuthn 通行密钥。

快速开始(推荐 Compose)

将下面保存为 docker-compose.yml 后执行 docker compose up -d,浏览器打开 http://127.0.0.1:3000

services:
  mongo:
    image: mongo:6
    restart: unless-stopped
    volumes:
      - mongo-data:/data/db
    healthcheck:
      test: echo 'db.runCommand("ping").ok' | mongosh localhost:27017/test --quiet
      interval: 5s
      timeout: 5s
      retries: 10
      start_period: 10s

  yapi:
    image: zsxian22/yapi:0.1.0
    restart: unless-stopped
    ports:
      - "3000:3000"
    environment:
      TZ: Asia/Shanghai
      YAPI_DB_SERVERNAME: mongo
      YAPI_DB_PORT: "27017"
      YAPI_DB_DATABASE: yapi
      YAPI_ADMIN_ACCOUNT: [email protected]
      YAPI_PASSKEY_RP_ID: localhost
      YAPI_PASSKEY_ORIGIN: http://localhost:3000
    depends_on:
      mongo:
        condition: service_healthy

volumes:
  mongo-data:

本仓库也可直接使用:

docker compose -f docker-compose.hub.yml up -d

docker run

需要先有可访问的 MongoDB(容器名、主机名或连接串):

docker run -d --name yapi \
  -p 3000:3000 \
  -e YAPI_DB_SERVERNAME=mongo \
  -e YAPI_DB_PORT=27017 \
  -e YAPI_DB_DATABASE=yapi \
  --link mongo:mongo \
  zsxian22/yapi:0.1.0

更推荐用上面的 Compose,避免手动处理网络和依赖顺序。

环境变量

未设置的项使用镜像内默认 config.json。环境变量会在启动时写入 /yapi/config.json

若把该文件以只读方式挂载(:ro),环境变量不会生效,以挂载文件为准。

基础
变量对应配置默认值说明
TZAsia/Shanghai容器时区
YAPI_PORT / PORTport3000服务监听端口(容器内)
YAPI_ADMIN_ACCOUNTadminAccount[email protected]首次初始化的管理员邮箱
YAPI_TIMEOUTtimeout120000HTTP 超时,单位毫秒
YAPI_CLOSE_REGISTERcloseRegisterfalsetrue 时关闭开放注册
YAPI_VERSION_NOTIFYversionNotifyfalse是否开启版本通知
YAPI_CONFIG_PATH/yapi/config.json配置文件写入路径

布尔值可写:true / false / 1 / 0 / yes / no

数据库
变量对应配置默认值说明
YAPI_DB_SERVERNAMEdb.servernamemongoMongoDB 主机名
YAPI_DB_PORTdb.port27017MongoDB 端口
YAPI_DB_DATABASEdb.DATABASEyapi数据库名
YAPI_DB_USERdb.user有认证时填写
YAPI_DB_PASSdb.pass有认证时填写
YAPI_DB_AUTHSOURCEdb.authSource认证库,如 admin
YAPI_DB_CONNECTSTRINGdb.connectString完整连接串,设置后优先于上面的主机/端口

连接外部 MongoDB 示例:

environment:
  YAPI_DB_SERVERNAME: 192.168.1.10
  YAPI_DB_PORT: "27017"
  YAPI_DB_DATABASE: yapi
  YAPI_DB_USER: yapi
  YAPI_DB_PASS: secret
  YAPI_DB_AUTHSOURCE: admin

或:

environment:
  YAPI_DB_CONNECTSTRING: mongodb://yapi:[email protected]:27017/yapi?authSource=admin
邮件(可选)

启用后可用于找回密码、通行密钥场景下的邮件验证码等。

变量对应配置说明
YAPI_MAIL_ENABLEmail.enable是否启用 SMTP,默认 false
YAPI_MAIL_HOSTmail.hostSMTP 主机,如 smtp.163.com
YAPI_MAIL_PORTmail.portSMTP 端口,如 465
YAPI_MAIL_FROMmail.from发件人地址
YAPI_MAIL_USERmail.auth.userSMTP 用户名
YAPI_MAIL_PASSmail.auth.passSMTP 密码 / 授权码
服务端代发(runProxy)

运行页「服务器代理」与测试集合批量运行走服务端代发时生效。

变量对应配置默认值说明
YAPI_RUN_PROXY_TIMEOUTrunProxy.timeout30000代发超时,单位毫秒
YAPI_RUN_PROXY_MAX_BODY_SIZErunProxy.maxBodySize2097152响应体大小上限,单位字节(默认 2MB)
YAPI_RUN_PROXY_ALLOW_PRIVATE_IPrunProxy.allowPrivateIptrue是否允许代发到内网 / 本机;云元数据地址始终拦截

生产环境若 YApi 与业务服务不在同一内网,建议设为 false,避免容器被用来打内网。

通行密钥(可选)

生产环境建议显式配置,且站点走 HTTPS。本地可用 localhost

变量对应配置默认值说明
YAPI_PASSKEY_RP_NAMEpasskey.rpNameYApi注册时展示名称
YAPI_PASSKEY_RP_IDpasskey.rpIDlocalhost访问域名的主机名,不含端口
YAPI_PASSKEY_ORIGINpasskey.originhttp://localhost:3000浏览器实际访问来源,需含协议

生产示例:

environment:
  YAPI_PASSKEY_RP_NAME: YApi
  YAPI_PASSKEY_RP_ID: yapi.example.com
  YAPI_PASSKEY_ORIGIN: https://yapi.example.com

用 config.json 代替环境变量

高级项(LDAP、插件等)仍可通过挂载完整配置:

services:
  yapi:
    image: zsxian22/yapi:0.1.0
    volumes:
      - ./config.json:/yapi/config.json:ro

只读挂载时环境变量不会覆盖文件内容。

默认账号

首次启动会初始化管理员:

  • 邮箱:[email protected](可用 YAPI_ADMIN_ACCOUNT 修改)
  • 密码:yapi.pro(登录后请立刻修改)

已有数据库时不会重复创建管理员。

Tag summary

Content type

Image

Digest

sha256:2177f2d31

Size

226.2 MB

Last updated

3 days ago

docker pull zsxian22/yapi