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
我创建了一个连接 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