Iawen's Blog

我喜欢这样自由的随手涂鸦, 因为我喜欢风......

1.使用 Docker 构建 Yapi

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

1.1 创建 MongoDB 数据卷

docker volume create mongo_data_yapi

1.2 启动 MongoDB

docker run -d --name mongo-yapi -v mongo_data_yapi:/data/db mongo

1.3 获取 Yapi 镜像

版本信息可在 阿里云镜像仓库 查看

docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi

1.4 初始化 Yapi 数据库索引及管理员账号

docker run -it --rm \
    --link mongo-yapi:mongo \
    --entrypoint npm \
    --workdir /api/vendors \
    registry.cn-hangzhou.aliyuncs.com/anoy/yapi \
    run install-server

自定义配置文件挂载到目录 /api/config.json, 官方自定义配置文件 -> 传送门

1.5 启动 Yapi 服务

docker run -d \
    --name yapi \
    --link mongo-yapi:mongo \
    --workdir /api/vendors \
    -p 3000:3000 \
    registry.cn-hangzhou.aliyuncs.com/anoy/yapi \
    server/app.js

2. 其他相关操作

2.1 关闭 Yapi

docker stop yapi

2.2 启动 Yapi

docker start yapi

2.3 升级 Yapi

2.3.1 停止并删除旧版容器

docker rm -f yapi

2.3.2 获取最新镜像

docker pull registry.cn-hangzhou.aliyuncs.com/anoy/yapi

2.3.4 启动新容器

docker run -d \
    --name yapi \
    --link mongo-yapi:mongo \
    --workdir /api/vendors \
    -p 3000:3000 \
    registry.cn-hangzhou.aliyuncs.com/anoy/yapi \
    server/app.js

3. 构建任意版本 yapi 镜像

提示: 以下所有文件均放在同一目录下

3.1 编写 Dockerfile

FROM node:9.2-alpine as builder
RUN apk add --no-cache git python make openssl
ADD yapi.zip /yapi.zip
RUN mkdir /api && \
    unzip yapi.zip && \
    rm -f yapi.zip && \
    mv yapi* /api/vendors
RUN cd /api/vendors && \
    npm install --production --registry https://registry.npm.taobao.org
FROM node:9.2-alpine
MAINTAINER 545544032@qq.com
ENV TZ="Asia/Shanghai" HOME="/"
WORKDIR ${HOME}
COPY --from=builder /api/vendors /api/vendors
COPY config.json /api/
EXPOSE 3000
ENTRYPOINT ["node"]

3.2 自定义配置文件 config.json

{
    "port": "3000",
    "adminAccount": "admin@admin.com",
    "db": {
        "servername": "mongo",
        "DATABASE": "yapi",
        "port": 27017
    }
}

3.3 镜像构建脚本 build

echo -e "\033[32m download new package (version $1) \033[0m"
wget -O yapi.zip http://yapi.demo.qunar.com/publicapi/archive/$1
echo -e "\033[32m build new image \033[0m"
docker build -t registry.cn-hangzhou.aliyuncs.com/anoy/yapi .

使脚本可执行: chmod a+x build

3.4 本地构建镜像, 版本列表 -> 传送门

./build <Version>
# 示例:  ./build v1.3.22

部署项目服务器时, 为了应对停电等情况影响正常web项目的访问, 会把Docker容器设置为开机自动启动。

在使用docker run启动容器时, 使用–restart参数来设置:

docker run -m 512m --memory-swap 1G -it -p 58080:8080 --restart=always 
--name bvrfis --volumes-from logdata mytomcat:4.0 /root/run.sh 
# --restart 具体参数值详细信息: 
# no - 容器退出时, 不重启容器; 
# on-failure - 只有在非0状态退出时才从新启动容器; 
# always - 无论退出状态是如何, 都重启容器; 

如果创建时未指定 –restart=always ,可通过update 命令设置

docker update --restart=always xxx

还可以在使用on - failure策略时, 指定Docker将尝试重新启动容器的最大次数。默认情况下, Docker将尝试永远重新启动容器。

sudo docker run --restart=on-failure:10 redis
``