前言
多阶段构建
FROM tiangolo/uvicorn-gunicorn:python3.9 as requirements-stage
WORKDIR /tmp
RUN touch requirements.txt
FROM python:3.9
WORKDIR /code
COPY --from=requirements-stage /tmp/requirements.txt /code/requirements.txt
RUN pip install --no-cache-dir --upgrade -r /code/requirements.txt
镜像瘦身
- 选择最小的基础镜像。
- 合并 RUN 环节的所有指令,少生成一些镜像层。
RUN xxx
RUN aaa \
aaa \
vvv \
RUN xxx \
aaa \
aaa\
vvv
- RUN 期间可能安装其它程序会生成临时缓存,要自行删除
- 使用 .dockerignore 文件,排除上下文中无需参与构建的资源。
- 合理使用多阶段构建。
- 合理使用构建缓存加速构建,但是有时也会有坑,开发的时候建议还是 docker build -t xxx --no-cache --force-rm . 来构建镜像。