发布于 2023-07-01
优化 Docker 镜像可以加快构建速度、减少磁盘占用并提升安全性。
选择基础镜像
# 优先使用 Alpine 版本 FROM node:18-alpine # 约 120MB FROM node:18 # 约 900MB # 使用 slim 版本 FROM python:3.11-slim # 约 120MB FROM python:3.11 # 约 900MB
多阶段构建
# 构建阶段 FROM golang:1.20 AS builder WORKDIR /app COPY . . RUN go build -o myapp # 运行阶段(最终镜像很小) FROM alpine:latest COPY --from=builder /app/myapp /usr/local/bin/ CMD ["myapp"]
减小镜像体积
# 合并 RUN 命令减少层 RUN apt-get update && apt-get install -y --no-install-recommends pkg1 pkg2 && apt-get clean && rm -rf /var/lib/apt/lists/* # 使用 .dockerignore node_modules .git *.md Dockerfile
安全最佳实践
# 不要以 root 运行 RUN addgroup -S appgroup && adduser -S appuser -G appgroup USER appuser # 只复制需要的文件 COPY --chown=appuser:appgroup requirements.txt . # 使用只读文件系统 docker run --read-only myapp