下面从镜像体积、构建速度、运行性能、安全、运维几个方面,系统讲一下 Debian Docker 的优化方法,适合生产环境使用。
优先使用:
FROM debian:bookworm-slim
或
FROM debian:stable-slim
避免:
FROM debian:latest # 体积大、不可控
slim 版本去掉了很多不必要的包,体积小很多。
Debian 常见优化写法:
RUN apt-get update \
&& apt-get install -y --no-install-recommends \
curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
关键点:
--no-install-recommends:不装推荐包/var/lib/apt/lists/*FROM debian:bookworm-slim AS build
RUN apt-get update && apt-get install -y gcc make
# 编译
FROM debian:bookworm-slim
COPY --from=build /app /app
最终镜像只包含运行所需内容。
COPY sources.list /etc/apt/sources.list
RUN apt-get update
COPY . /app
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list
DOCKER_BUILDKIT=1 docker build .
支持:
避免僵尸进程:
STOPSIGNAL SIGTERM
或使用:
ENTRYPOINT ["tini", "--"]
docker run -m 512m --cpus=1 debian-app
或在 compose 中:
deploy:
resources:
limits:
memory: 512M
容器中不要使用 systemd(除非必须)
RUN useradd -m appuser
USER appuser
只装必须的包,不装:
docker pull debian:bookworm-slim
并重新构建。
HEALTHCHECK CMD curl -f http://localhost || exit 1
不要写文件日志:
CMD ["app", "--log", "/dev/stdout"]
.git
node_modules
*.md
FROM debian:bookworm-slim
RUN sed -i 's/deb.debian.org/mirrors.aliyun.com/g' /etc/apt/sources.list \
&& apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY app /app/app
RUN useradd -m appuser
USER appuser
CMD ["/app/app"]
如果你愿意,可以告诉我:
我可以直接给你一份针对性 Dockerfile 模板。