【问题标题】:Docker image far too big from a simple python service与简单的 python 服务相比,Docker 图像太大了
【发布时间】:2021-12-17 04:18:16
【问题描述】:

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

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

我把整个 gitlab-service 项目上传到https://github.com/lucasscheepers/gitlab-service

我在创建的 Dockerfile 中做错了吗?

【问题讨论】:

    标签: docker kubernetes docker-image


    【解决方案1】:

    你正在使用一个非常大的基础图像,所以你有这个大小是正常的。

    如果您使用python:3.8 映像,因为您需要一些包来编译您的依赖项,那么您可以利用多阶段构建并使用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
    

    【讨论】:

    • 是的,我在@Thomas 的评论之后使用了 python:3.8-alpine
    【解决方案2】:

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

    【讨论】:

    猜你喜欢
    • 2018-08-24
    • 2022-07-08
    • 2014-11-03
    • 2018-10-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-05-11
    • 1970-01-01
    相关资源
    最近更新 更多