构建高效的Linux Docker镜像可以遵循以下几个最佳实践:
alpine作为基础镜像,它是一个非常小的Linux发行版。RUN命令合并成一个,以减少镜像层数。RUN apt-get update && apt-get install -y \
package1 \
package2 \
package3
# 构建阶段
FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
# 运行阶段
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
CMD ["./myapp"]
RUN apt-get update && apt-get install -y \
package1 \
package2 \
&& rm -rf /var/lib/apt/lists/*
FROM golang:alpine AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp
FROM alpine:latest
WORKDIR /root/
COPY --from=builder /app/myapp .
RUN apk del go
CMD ["./myapp"]
.dockerignore文件.git、node_modules等。.git
node_modules
COPY而不是ADDCOPY:COPY指令更简单,且不会自动解压文件,而ADD会自动解压,可能会引入不必要的复杂性。ARG和ENV指令ARG和ENV指令来管理构建时的变量和运行时的环境变量。HEALTHCHECK指令CMD而不是ENTRYPOINTCMD:CMD指令更灵活,可以覆盖默认命令。通过遵循这些最佳实践,你可以构建出更高效、更小的Docker镜像。