docker上手安装mongo、node、yapi部署以及dockerfile定制镜像

安装mongo

1
docker pull mongo
1
docker search mongo

本地docker上启动mongo

1
docker run -itd --name mongo -p 27017:27017 mongo --auth

docker-compose 安装yapi

docker-compose.yml admin@163.com登录

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
version: '3'
services:
yapi-web:
image: jayfong/yapi:latest
container_name: yapi-web
ports:
- 40001:3000
environment:
- YAPI_ADMIN_ACCOUNT=admin@163.com
- YAPI_ADMIN_PASSWORD=admin
- YAPI_CLOSE_REGISTER=true
- YAPI_DB_SERVERNAME=yapi-mongo
- YAPI_DB_PORT=27017
- YAPI_DB_DATABASE=yapi
- YAPI_MAIL_ENABLE=false
- YAPI_LDAP_LOGIN_ENABLE=false
- YAPI_PLUGINS=[]
depends_on:
- yapi-mongo
links:
- yapi-mongo
restart: unless-stopped
yapi-mongo:
image: mongo:latest
container_name: yapi-mongo
volumes:
- ./data/db:/data/db
- ./data/log:/var/log/mongodb
expose:
- 27017
restart: unless-stopped

或者Dockerfile安装yapi

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
######## 构建 ########
FROM --platform=${BUILDPLATFORM:-amd64} node:12.16.3-alpine3.11 as builder

# 安装构建工具
RUN apk add --update --no-cache ca-certificates curl wget cmake build-base git bash python make gcc g++ zlib-dev autoconf automake file nasm \
&& update-ca-certificates

# YApi 版本
ENV YAPI_VERSION=1.9.2

# 编译脚本
WORKDIR /yapi/scripts
COPY . .
RUN yarn && yarn build

WORKDIR /yapi/vendors

# 拉取 YApi 源码
RUN git clone \
--branch "v${YAPI_VERSION}" \
--single-branch \
--depth 1 \
https://github.com/YMFE/yapi.git .

# 拷贝启动脚本
RUN cp /yapi/scripts/start.js ./start.js

# 执行一些准备工作
RUN node /yapi/scripts/prepare.js $(pwd)

# 安装依赖
RUN yarn

# 清理文件
RUN node /yapi/scripts/clean.js $(pwd)

# 构建应用
RUN yarn build-client

# 再次清理以删除构建缓存文件
RUN node /yapi/scripts/clean.js $(pwd)

# 删除脚本
RUN rm -rf /yapi/scripts


######## 镜像 ########
FROM node:12.16.3-alpine3.11

WORKDIR /yapi

COPY --from=builder /yapi .

EXPOSE 3000

CMD ["node", "/yapi/vendors/start.js"]

Dockerfile.web

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
FROM jayfong/yapi:latest

ENV YAPI_ADMIN_ACCOUNT=admin@163.com
ENV YAPI_ADMIN_PASSWORD=admin
ENV YAPI_CLOSE_REGISTER=false
ENV YAPI_DB_SERVERNAME=127.0.0.1
ENV YAPI_DB_PORT=27017
ENV YAPI_DB_DATABASE=yapi
ENV YAPI_MAIL_ENABLE=false
ENV YAPI_LDAP_LOGIN_ENABLE=false
ENV YAPI_PLUGINS=[]

RUN echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/main' >> /etc/apk/repositories && \
echo 'http://dl-cdn.alpinelinux.org/alpine/v3.6/community' >> /etc/apk/repositories && \
apk add --update --no-cache mongodb && \
mkdir -p /data/db

EXPOSE $PORT

CMD mongod --fork --logpath=mongodb.log && node /yapi/vendors/start.js