目录

  • 概述

    • 基本环境
  • docker网络
  • 安装MongoDb
  • 构建YAPI镜像
  • 运行YAPI
  • Nginx反向代理
  • 挂域名

概述

YApi 是高效、易用、功能强大的 api 管理平台,旨在为开发、产品、测试人员提供更优雅的接口管理服务。可以帮助开发者轻松创建、发布、维护 API,YApi 还为用户提供了优秀的交互体验,开发人员只需利用平台提供的接口数据写入工具以及简单的点击操作就可以实现接口的管理。

YApi源码:github.com/YMFE/yapi

官方提供了很简单的安装工具,但由于我的安装环境在云端,想要使用docker安装,参考使用 alpine 版 docker 镜像快速部署 yapi, 修改了Dockerfile, 并完善了完整的生产可用的环境搭建过程。

Dockerfile: github.com/Ryan-Miao/d…

基本环境

  • Yapi镜像基于 node:11
  • 宿主机要安装docker
  • MongoDb的dockers版本为4

docker网络

我们将采用Docker专门为Yapi提供一个MongoDb,由于docker kill重启可能会改变ip,这将使得Yapi也必须重新部署,因此,我们需要一个固定ip的mongo。所以,必须提供自定义docker网络。

docker network create --subnet=172.18.0.0/16 tools-net
复制代码

安装MongoDb

Docker安装MongoDb涉及数据文件导出和备份,防止docker容器关闭后数据丢失。完整步骤参见:docker安装mongodb并备份.

简略步骤为:

安装

 docker run  \
--name mongod \
-p 27017:27017  \
-v /data/opt/mongodb/data/configdb:/data/configdb/ \
-v /data/opt/mongodb/data/db/:/data/db/ \
--net tools-net --ip 172.18.0.2 \
-d mongo:4 --auth
复制代码

设置admin root用户

 docker exec -it mongod mongo admin>db.createUser({ user: 'admin', pwd: 'admin123456', roles: [ { role: "root", db: "admin" } ] });
复制代码

设置yapi用户

db.auth("admin", "admin123456")db.createUser({ user: 'yapi', pwd: 'yapi123456', roles: [ { role: "dbAdmin", db: "yapi" },{ role: "readWrite", db: "yapi" } ] });
复制代码

构建YAPI镜像

我们将基于node:11的debian镜像,部署YApi. 首先要构建Yapi镜像。

下载源码:

wget -O yapi.tgz http://registry.npm.taobao.org/yapi-vendor/download/yapi-vendor-$1.tgz
复制代码

其中$1是版本,可以在github找到: github.com/YMFE/yapi/r…

新建Dockerfile

FROM node:11 as builderRUN apt-get install -y  git python make openssl tar gcc
ADD yapi.tgz /home/
RUN mkdir /api && mv /home/package /api/vendors
RUN cd /api/vendors && \npm install --production --registry https://registry.npm.taobao.orgFROM node:11MAINTAINER ryan.miao
ENV TZ="Asia/Shanghai" HOME="/"
WORKDIR ${HOME}COPY --from=builder /api/vendors /api/vendors
COPY config.json /api/
EXPOSE 3001COPY docker-entrypoint.sh /api/
RUN chmod 755 /api/docker-entrypoint.shENTRYPOINT ["/api/docker-entrypoint.sh"]
复制代码

其中,同目录下需要以下几个文件:

config.json

{"port": "3001","adminAccount": "ryan.miao@demo.com","db": {"servername": "172.18.0.2","DATABASE": "yapi","port": "27017","user": "yapi","pass": "yapi123456","authSource":"admin"},"mail": {"enable": false,"host": "smtp.163.com","port": 465,"from": "***@163.com","auth": {"user": "***@163.com","pass": "*****"}},"ldapLogin": {"enable": true,"server": "ldap://192.168.5.3:389","baseDn": "cn=admin,dc=demo,dc=com","bindPassword": "admin","searchDn": "dc=demo,dc=com","searchStandard": "mail",    "emailPostfix": "@demo.com","emailKey": "mail","usernameKey": "sn"}
}
复制代码

不需要ldap的可以去掉

docker-entrypoint.sh

 #!/bin/bash
set -eo pipefail
shopt -s nullglobif [ "$1" = '--initdb' ]; thennode /api/vendors/server/install.js
fiif [ "$1" = '--help' ]; thenecho "Usage:"echo "初始化db并启动:   docker run -d -p 3001:3001 --name yapi --net tools-net --ip 172.18.0.3 yapi --initdb"echo "初始化后的账号为config.json 配置的邮箱, 密码为ymfe.org"echo "直接启动:  docker kill  yapi && docker rm yapi && docker run -d -p 3001:3001 --name yapi --net tools-net --ip 172.18.0.3 yapi"exit 1;
finode /api/vendors/server/app.jsexec "$@"
复制代码

构建

docker build -t yapi .
复制代码

综合以上,同目录下文件:

build.sh  config.json  docker-entrypoint.sh  Dockerfile  sources.list
复制代码

编写build.sh

function usage(){echo "usage:  sh build.sh  <version>"echo "yapi的版本:  https://github.com/YMFE/yapi/releases"echo "我们将从这里下载:  http://registry.npm.taobao.org/yapi-vendor/download/yapi-vendor-\$1.tgz"
}usageversion=1.5.7if [ -n "$1" ]; thenversion=$1
fiecho -e "\033[32m download new package (version $version) \033[0m"wget -O yapi.tgz http://registry.npm.taobao.org/yapi-vendor/download/yapi-vendor-$version.tgzecho -e "\033[32m build new image \033[0m"docker build -t yapi .
复制代码

执行构建:

sh build.sh 1.5.7
复制代码

运行YAPI

 docker run yapi --help
Usage:
初始化db并启动:   docker run -d -p 3001:3001 --name yapi --net tools-net --ip 172.18.0.3 yapi --initdb
初始化后的账号为config.json 配置的邮箱, 密码为ymfe.org
直接启动:  docker kill  yapi && docker rm yapi && docker run -d -p 3001:3001 --name yapi --net tools-net --ip 172.18.0.3 yapi
复制代码

查看:

# docker logs --tail 10 yapi
log: mongodb load success...
初始化管理员账号成功,账号名:"ryan.miao@demo.com",密码:"ymfe.org"
log: 服务已启动,请打开下面链接访问:
http://127.0.0.1:3001/
log: mongodb load success...
复制代码

Nginx反向代理

YApi页面使用websocket, 所以,nginx配置需要支持ws:

upstream yapi {server 192.168.5.9:80 weight=5;
}server {listen       80;server_name yapi.demo.com;access_log  /data/log/nginx/yapi/access.log main;location / {proxy_pass  http://yapi;proxy_set_header Host $host;proxy_set_header  X-Real-IP        $remote_addr;proxy_set_header  X-Forwarded-For  $proxy_add_x_forwarded_for;proxy_set_header X-NginX-Proxy true;proxy_set_header Connection "upgrade";proxy_set_header Upgrade $http_upgrade;}
}
复制代码

挂域名

购买域名,指向我们的nginx即可。

写在最后

最后,欢迎做Java的工程师朋友们加入Java高级架构进阶Qqun:963944895

群内有技术大咖指点难题,还提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)

比你优秀的对手在学习,你的仇人在磨刀,你的闺蜜在减肥,隔壁老王在练腰, 我们必须不断学习,否则我们将被学习者超越!

趁年轻,使劲拼,给未来的自己一个交代!

转载于:https://juejin.im/post/5cdd5feef265da03995603e8

Docker构建YApi镜像, Docker安装YApi, Docker部署YApi相关推荐

  1. Docker构建MySQL镜像并初始化

    文章目录 Docker构建MySQL镜像并初始化 Dockerfile 的一些常用语法 FROM RUN CMD ENV COPY ADD WORKDIR EXPOSE 构建自带初始化的 MySQL ...

  2. 构建ChatGPT 镜像,并将其部署到 Docker 容器中。

    自己构建 ChatGPT 镜像,并将其部署到 Docker 容器中. 下面是一个简单的 ChatGPT 镜像构建示例: 准备工作 在开始构建 ChatGPT 镜像之前,我们需要完成以下准备工作: 安装 ...

  3. docker构建hadoop镜像、docker-compose启动hdfs

    之前使用镜像singularities/hadoop:2.8安装过hdfs,但鉴于这个镜像已经很久没更新了,今天就手动安装一下hadoop,并构建成镜像,方便以后使用. 参考文档:docker构建ha ...

  4. Docker构建JDK 镜像

    Docker构建JDK 镜像 在 Docker官网中的openJDK 镜像中,默认不是使用的北京时间,会导致启动jar应用程序时时区不对的情况,这里在 openJDK镜像的基础上,设置使用中国北京时间 ...

  5. 使用docker构建jenkins镜像并运行容器

    https://my.oschina.net/donhui/blog/470372?p={{currentPage+1}}   摘要: 使用docker构建jenkins镜像并运行容器 目录: 1.基 ...

  6. CentOS7服务器Docker构建ubuntu镜像出错invalid argument

    为什么80%的码农都做不了架构师?>>>    #1 发现问题 拿到某云主机时,选择了最新的CentOS 7.2的公共镜像,一些工作过后,开始布暑应用.因为没有使用docker仓库, ...

  7. docker构建hadoop镜像并运行

    单机版hadoop使用docker构建及运行 一.环境: 组件信息 组件 版本 CentOS 7.9.2009 java 1.8.0_161 hadoop 3.1.3 docker 20.10.8 服 ...

  8. docker 构建tomcat镜像部署war包

    docker 构建tomcat容器部署war包 拉取tomcat镜像 docker pull tomcat:8.5-alpine 查看镜像 docker images 构建并启动容器 docker r ...

  9. docker hub上镜像手动下载_docker: docker安装和镜像下载

    1安装docker的apt源 apt-get install apt-transport-https ca-certificates curl software-properties-common 2 ...

  10. docker构建dm8镜像

    dm8 docker镜像制作 一.docker简介 Docker是一个容器运行的管理引擎,类似vmware运行虚拟机,把应用程序和所需配置文件打包形成一个镜像文件,通过镜像文件来创建运行容器,类似于一 ...

最新文章

  1. 1-VMware workstation认识
  2. mysql版本号超买_MySQL处理高并发,防止库存超卖
  3. 给C盘减减肥,让你电脑飞一般速度!
  4. 自定义viewgroup实现ArcMenu
  5. 操作系统知识点大总结【进线程管理与调度】
  6. python学习1(下载、安装)
  7. 怎样快速更新已安装的软件?
  8. Lucene.Net 2.3.1开发介绍 —— 一、接触Lucene.Net
  9. 原创拟态UI3.0-一款完全开源的个人主页源码
  10. fuzor2020安装教程附安装包
  11. 前端学习(基础介绍)
  12. format mla_MLA-Format-MLA格式
  13. JuniperSSG140使用PBR实现双线路接入
  14. 合天网安实验室-sql注入实验一
  15. 电源的安规设计(1)
  16. 名人名言摘选-李嘉诚
  17. 高效实用GitHub关键字搜索~~干货干货~~
  18. 【品牌DTC增长力】从AIPL模型看策略趋势
  19. 自建数据库与云数据库RDS具体内容的优缺点
  20. 在centOS中安装MySQL时遇到Configuring incomplete,errors occurred该怎么办?

热门文章

  1. 2018,愿跟大家一起成长!
  2. 使用MEF实现通用参数设置
  3. iOS开发之使用XMPPFramework实现即时通信(二)
  4. nessus国内用户不让免费使用了!
  5. 为什么我又喜欢过年了
  6. 自己面试大厂iOS开发的心得以及一些面试题
  7. 360浏览器急速模式_国产平台:360安全浏览器扩展使用教程
  8. ubuntu eclipse mysql_Ubuntu设置、应用及常见问题解决(十)- 安装jdk+tomcat+eclipse+mysql...
  9. python同步异步_python中Tornado的同步与异步I/O的介绍(附示例)
  10. python的序列包括什么_一文读懂什么是序列 (sequence)