Docker file知识点总结

SRE团队优化后的dockerfile

dockerfile1

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
#multistage stage1
FROM artifactory.momenta.works/docker/node:lts-alpine as builder #使用的镜像,artifactory具备作为私有仓库的功能

# env set
# ARG COMMIT
# ENV BUILD_COMMIT_SHA=${COMMIT}

ENV EVA_ENTRYPOINT=/api #设置静态地址,前端请求的后端服务均通过域名+ENV组成

WORKDIR / # 记录环境,在哪个环境下ADD/RUN

ADD package.json / #复制用于版本下载的文件到当前文件夹下

RUN npm install --registry=https://registry.npm.taobao.org #通过淘宝镜像执行依赖包下载

ADD . / #将workdir下的全部内容复制到镜像环境下

RUN npm run build #对项目进行打包操作

# multistage stage2
FROM nginx:alpine #使用nginx镜像

LABEL maintainer="An <aa@163.ai>"

COPY /nginx/ /etc/nginx/ #将目录下的nginx,拷到镜像的相应文件夹下

COPY --from=builder /dist/ /usr/share/nginx/html/ #将stage1中打包好的内容复制到docker相应文件夹下

EXPOSE 80 #使用80端口访问服务

是否可以继续优化目前的镜像,因为打出的包还是300+M。因此需要继续深研。

dockerfile2

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
FROM artifactory.momenta.works/docker/node:lts-alpine AS build #multistage1,不要为了multi而multi

WORKDIR /

COPY package.json ./

# 为yarn设置下载地址 \是换行符
RUN yarn config set registry https://artifactory.momenta.works/artifactory/api/npm/npm/ \

&& yarn install

COPY . /

RUN yarn build

LABEL maintainer=" An <aa@163.ai>"

LABEL app=tropoBackend

# 找到主执行函数,基于node执行
ENTRYPOINT ["node", "/build/app.js"]

# 服务暴露在8000端口
EXPOSE 8000

本docker继续优化的点在哪?有计划了再更新文章

dockerfile1为前端服务
dockerfile2为后端服务

Happy Hacking~