选用更小的基础镜像:例如
alpine
或基于alpine
构建的镜像合并指令,减少镜像层级:将安装依赖、编译、移除源代码等指令合并成一条语句
去除不需要的依赖、库:删除用不到的依赖、库等,尽量精简镜像
分阶段构建镜像:分离编译镜像和部署镜像,下面是一个
nodejs
项目的示例:1
2
3
4
5
6
7
8FROM node:14-alpine as build
ADD . /app
RUN yarn install && yarn build
FROM nginx:alpine
COPY --from=build-app /app/dist /usr/share/nginx/html
大家可以在DockerHub了解更多优秀软件的Dockerfile
的写法。