- 不必要的内容不要放在镜像中
- 减少不必要的层文件
- 减少网络传输操作
- 可以适当的包含一些调试命令
busybox命令集
针对docker镜像没有基础调试命令可以使用busybox
工具
chmod +x busybox-x86_64
docker cp busybox-x86_64 cmdb:/usr/src/app
./busybox-x86_64 netstat -pntl
./busybox-x86_64 top
多阶构建
基础镜像:java,maven ;npm 部署镜像: java,node +部署文件
通过cp基础镜像的构建后的文件,来减少部署镜像包大小;当然有jenkins可以直接打包后扔掉部署镜像
FROM golang:1.13 AS builder
WORKDIR /go/src/github.com/alexellis/href-counter/
COPY vendor vendor
COPY app.go .
ENV GOPROXY https://goproxy.cn
RUN CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o app .
FROM alpine:3.10
RUN apk --no-cache add ca-certificates
WORKDIR /root/
COPY --from=builder /go/src/github.com/alexellis/href-counter/app .
CMD ["./app"]