From 4965fbc11eb41d42fac65df0a4b471f58341bf45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E7=81=AB=E7=82=8E=E7=84=B1=E7=87=9A?= <15035290756@163.com> Date: Mon, 28 Apr 2025 08:59:36 +0000 Subject: [PATCH] =?UTF-8?q?update=20Dockerfile.=20=E4=BD=A0=E5=A5=BD?= =?UTF-8?q?=EF=BC=8C=E6=88=91=E4=BF=AE=E6=94=B9=E4=BA=86Dockerfile?= =?UTF-8?q?=E3=80=82=E4=B8=BB=E8=A6=81=E5=AF=B9=E6=96=87=E4=BB=B6=E8=BF=9B?= =?UTF-8?q?=E8=A1=8C=E4=BA=86=E5=88=86=E9=98=B6=E6=AE=B5=E5=A4=84=E7=90=86?= =?UTF-8?q?=EF=BC=8C=E4=BC=98=E5=8C=96=E4=BA=86=E9=83=A8=E5=88=86=E5=86=85?= =?UTF-8?q?=E5=AE=B9=EF=BC=8C=E5=8F=AF=E4=BB=A5=E4=BD=BF=E6=9E=84=E5=BB=BA?= =?UTF-8?q?=E5=90=8E=E7=9A=84=E9=95=9C=E5=83=8F=E5=A4=A7=E5=B0=8F=E6=8E=A7?= =?UTF-8?q?=E5=88=B6=E5=9C=A8500M=E4=BB=A5=E5=86=85=E3=80=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: 火炎焱燚 <15035290756@163.com> --- Dockerfile | 51 ++++++++++++++++++++++++++++++++++++++------------- 1 file changed, 38 insertions(+), 13 deletions(-) diff --git a/Dockerfile b/Dockerfile index 9b14ebe..ba4edb7 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,15 +1,40 @@ -FROM python:3.11 +# --------------------- 构建阶段 --------------------- +FROM python:3.11 AS builder + ENV PYTHONUNBUFFERED 1 +WORKDIR /app + +# 安装构建依赖。 +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + default-libmysqlclient-dev \ + gettext \ + && rm -rf /var/lib/apt/lists/* + +# 复制依赖文件并安装(使用 --user 将包安装到用户目录,用于后期复制到运行时阶段镜像。) +COPY requirements.txt . +# 修改pip源为中科大开源镜像站源,以提高拉取速度。 +RUN pip config set global.index-url https://mirrors.ustc.edu.cn/pypi/simple && \ + pip install --user --no-cache-dir -r requirements.txt gunicorn[gevent] + +# --------------------- 运行时阶段 --------------------- +# 使用精简镜像,减小运行时阶段镜像大小。 +FROM python:3.11-slim WORKDIR /code/djangoblog/ -RUN apt-get update && \ - apt-get install default-libmysqlclient-dev gettext -y && \ - rm -rf /var/lib/apt/lists/* -ADD requirements.txt requirements.txt -RUN pip install --upgrade pip && \ - pip install --no-cache-dir -r requirements.txt && \ - pip install --no-cache-dir gunicorn[gevent] && \ - pip cache purge - -ADD . . -RUN chmod +x /code/djangoblog/bin/docker_start.sh -ENTRYPOINT ["/code/djangoblog/bin/docker_start.sh"] + +# 安装运行时系统依赖。 +RUN apt-get update && \ + apt-get install -y --no-install-recommends \ + # 用mysql-client替换default-libmysqlclient-dev,减小运行时阶段镜像大小。 + default-mysql-client \ + gettext \ + && rm -rf /var/lib/apt/lists/* + +# 从构建阶段复制已安装的 Python 包。 +COPY --from=builder /root/.local /usr/local +# 复制项目代码 +COPY . . + +# 设置启动脚本权限 +RUN chmod +x /code/djangoblog/bin/pithy_start.sh +ENTRYPOINT ["/code/djangoblog/bin/pithy_start.sh"] \ No newline at end of file -- Gitee