1. 安装mongodb
mkdir -p ~/services/mongodb/data ~/services/mongodb/bak
cd ~/services/mongodb
#拉取镜像
docker pull mongo:3.6
cd ~/services/mongodb
# 不用映射端口,因为是内部访问
docker run --restart=always --name mongo -v /etc/localtime:/etc/localtime:ro -v $PWD/data:/data/db -v $PWD/bak:/data/backup -d mongo:3.6 --wiredTigerCacheSizeGB 2
添加账号:
docker exec -it mongo mongo
# 账号 yapi 密码 yapi, 可以访问任何数据库
> db.createUser({user:'yapi',pwd:'yapi', roles:[{role:'userAdminAnyDatabase', db:'admin'}]})
2. 制作yapi Docker镜像
2.1 文件准备
yapi 源码包
mkdir -p ~/docker_imgs/yapi
cd ~/docker_imgs/yapi
wget https://github.com/YMFE/yapi/archive/v1.9.2.tar.gz
准备yapi 配置文件
cd ~/docker_imgs/yapi
vim config.json
config.json 内容
adminAccount : 管理员账号,后面初始化的时候会初始化到 mongodb中。初始化的时候并会创建这个账号,密码默认为 “ymfe.org”
servername 是 docker容器的名字
{
"port": "3000",
"adminAccount": "admin@qinyeit.com",
"timeout": 120000,
"db": {
"servername": "mongo",
"DATABASE": "yapi",
"port": 27017,
"user": "yapi",
"pass": "yapi",
"authSource": ""
},
"mail": {
"enable": false,
"host": "smtp.126.com",
"port": 465,
"from": "admin@qinyeinfo.com",
"auth": {
"user": "admin@qinyeinfo.com",
"pass": "xxxxxxx"
}
}
}
Dockerfile
cd ~/docker_imgs/yapi
vim Dockerfile
Dockerfile文件内容:
FROM node:12-alpine as builder
RUN apk add --no-cache git python make openssl tar gcc
COPY v1.9.2.tar.gz /home
RUN cd /home && tar zxvf v1.9.2.tar.gz && mkdir /api && mv /home/yapi-1.9.2 /api/vendors
RUN cd /api/vendors && \
npm install --production --registry https://registry.npm.taobao.org
FROM node:12-alpine
MAINTAINER 16910735@qq.com
ENV TZ="Asia/Shanghai" HOME="/"
WORKDIR ${HOME}
COPY --from=builder /api/vendors /api/vendors
COPY config.json /api/
EXPOSE 3000
ENTRYPOINT ["node","server/app.js"]
2.2 构建镜像
docker build -t yapi:1.9.2 .
docker images
3. 初始化
mkdir -p ~/services/yapi
cd ~/services/yapi
cp ~/docker_imgs/yapi/config.json .
docker run -it --rm --entrypoint npm --workdir /api/vendors -v $PWD/config.json:/api/config.json yapi:1.9.2 run install-server
执行完成后,会输出:
初始化管理员账号成功,账号名:“admin@qinyeit.com”,密码:“ymfe.org”
4. 创建容器
docker run -d -p 3000:3000 --name yapi --restart=always --workdir /api/vendors -v $PWD/config.json:/api/config.json yapi:1.9.2