|
|
@@ -1,24 +1,38 @@
|
|
|
-FROM python:3.11-slim AS builder
|
|
|
+FROM python:3.13-slim AS builder
|
|
|
+
|
|
|
+ENV PYTHONDONTWRITEBYTECODE=1 \
|
|
|
+ PYTHONUNBUFFERED=1 \
|
|
|
+ PIP_DISABLE_PIP_VERSION_CHECK=1 \
|
|
|
+ PIP_NO_CACHE_DIR=1
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
COPY requirements.txt .
|
|
|
|
|
|
-# 安装依赖,使用清华镜像源
|
|
|
-RUN pip install --no-cache-dir --upgrade pip && \
|
|
|
- pip install --no-cache-dir -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
|
+RUN python -m venv /opt/venv \
|
|
|
+ && /opt/venv/bin/pip install --upgrade pip -i https://pypi.tuna.tsinghua.edu.cn/simple \
|
|
|
+ && /opt/venv/bin/pip install -r requirements.txt -i https://pypi.tuna.tsinghua.edu.cn/simple
|
|
|
+
|
|
|
|
|
|
-FROM python:3.11-slim AS runtime
|
|
|
+FROM python:3.13-slim AS runtime
|
|
|
|
|
|
-# 设置时区
|
|
|
-ENV TZ Asia/Shanghai
|
|
|
+ENV TZ=Asia/Shanghai \
|
|
|
+ PYTHONDONTWRITEBYTECODE=1 \
|
|
|
+ PYTHONUNBUFFERED=1 \
|
|
|
+ PATH="/opt/venv/bin:$PATH"
|
|
|
|
|
|
WORKDIR /app
|
|
|
|
|
|
-COPY --from=builder /app /app
|
|
|
+RUN addgroup --system app \
|
|
|
+ && adduser --system --ingroup app app
|
|
|
+
|
|
|
+COPY --from=builder /opt/venv /opt/venv
|
|
|
+COPY . .
|
|
|
+
|
|
|
+RUN chown -R app:app /app
|
|
|
+
|
|
|
+USER app
|
|
|
|
|
|
-# 暴露端口
|
|
|
EXPOSE 8001
|
|
|
|
|
|
-# 运行应用
|
|
|
CMD ["python", "main.py", "run", "--env=prod"]
|