Docker 图片与简单的 python 服务相比太大了

Docker image far too big from a simple python service

我创建了一个连接 RabitMQ 和 Mattermost 的简单 Python 服务。 当我尝试构建 Docker 图像时,我注意到图像太大 (916MB)

我首先在没有 .dockerignore 文件的情况下创建了图像。之后删除了图片,用命令docker image build --no-cache --pull -t "gitlab-service" .重新创建了图片,但大小还是一样。

我在 https://github.com/lucasscheepers/gitlab-service

上上传了整个 gitlab-service 项目

我在创建的 Docker 文件中做错了吗?

您使用的是 python:3.8 基础图像,它只有 909MB,因此您的图像大小在该范围内是完全合理的。

您正在使用一个非常大的基础图像,所以您有那个尺寸是正常的。

如果您使用 python:3.8 映像是因为您需要一些包来编译您的依赖项,那么您可以利用多阶段构建和 compile/download 依赖项 python:3.8 但使用 python:3.8-slim 为您的应用程序提供更轻便的服务:

FROM python:3.8 as build

WORKDIR /usr/app
RUN python -m venv /usr/app/venv
ENV PATH="/usr/app/venv/bin:$PATH"

COPY requirements.txt .
RUN pip install -r requirements.txt && rm requirements.txt

FROM python:3.8-slim
RUN groupadd -g 999 python && \
    useradd -r -u 999 python -g python
RUN mkdir /usr/app && chown python:python /usr/app
WORKDIR /usr/app

COPY --chown=python:python --from=build /usr/app/venv ./venv
COPY --chown=python:python . .

USER 999

ENV PATH="/usr/app/venv/bin:$PATH"

EXPOSE 8088
ENTRYPOINT [ "python", "main.py"]

我都是从你的 GitHub 项目中构建的:

❯ docker images | grep gitlab-service
gitlab-service        after        f2c1d1fab6fd   4 seconds ago   140MB
gitlab-service        before       b3e87980bccb   6 minutes ago   916MB