gpt4 book ai didi

python-3.x - 减小 Docker 镜像大小 : Python3 and psycopg2

转载 作者:行者123 更新时间:2023-12-02 18:14:55 26 4
gpt4 key购买 nike

如果我为当前使用的 flask 部署构建 docker 镜像:

文件

FROM python:3.6-alpine
COPY . /app
WORKDIR /app

RUN apk add --virtual build-deps gcc python-dev musl-dev && \
apk add postgresql-dev

RUN pip install pipenv
RUN pipenv install --system --deploy

EXPOSE 5005

ENV FLASK_APP=app/__init__.py
ENV FLASK_RUN_PORT=5005

CMD flask run --host=0.0.0.0

不幸的是,这会导致容器大小约为 500MB。原始的 Alpine 图像大约为 40MB。
主要的大小增加来自安装 psycopg2 和 gcc(需要 psycopg2)。

我真的很想降低这张图片的大小。任何想法表示赞赏。

最佳答案

考虑使用 multi-stage builds .使用第一阶段构建所有所需的依赖项,使用第二阶段生成最终的 Docker 镜像。只需将生成的站点包(和其他工件,如果需要)从构建阶段复制到第二个阶段。

因此,您的 Dockerfile 可能如下所示(注意两个 FROM 语句):

# Build stage:
FROM python:3.6-alpine as build
COPY . /app
WORKDIR /app

RUN apk add --virtual build-deps gcc python-dev musl-dev && \
apk add postgresql-dev

RUN pip install pipenv
RUN pipenv install --system --deploy

# "Default" stage:
FROM python:3.6-alpine

# Copy generated site-packages from former stage:
COPY --from=build /usr/local/lib/python3.6/site-packages/ /usr/local/lib/python3.6/site-packages/

COPY . /app
WORKDIR /app

EXPOSE 5005

ENV FLASK_APP=app/__init__.py
ENV FLASK_RUN_PORT=5005

CMD flask run --host=0.0.0.0

关于python-3.x - 减小 Docker 镜像大小 : Python3 and psycopg2,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51322000/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com