44 lines
1.4 KiB
Docker
44 lines
1.4 KiB
Docker
FROM python:3.11
|
|||
|
|
|
||
|
|
# 1. 替换为腾讯云APT源 + 仅装时区依赖
|
||
|
|
RUN sed -i 's/deb.debian.org/mirrors.tencent.com/g' /etc/apt/sources.list.d/debian.sources && \
|
||
|
|
apt update && apt install -y --no-install-recommends tzdata && \
|
||
|
|
rm -rf /var/lib/apt/lists/*
|
||
|
|
|
||
|
|
# 2. 核心环境变量
|
||
|
|
ENV PYTHONDONTWRITEBYTECODE=1 \
|
||
|
|
PYTHONUNBUFFERED=1 \
|
||
|
|
FLASK_APP=run:app \
|
||
|
|
TZ=Asia/Shanghai
|
||
|
|
|
||
|
|
# 3. 设置时区
|
||
|
|
RUN ln -snf /usr/share/zoneinfo/${TZ} /etc/localtime && echo ${TZ} > /etc/timezone
|
||
|
|
|
||
|
|
# 4. 工作目录 + 非root用户
|
||
|
|
WORKDIR /app
|
||
|
|
RUN groupadd -r appuser && useradd -r -g appuser appuser && chown -R appuser:appuser /app
|
||
|
|
|
||
|
|
# 新增图片存放地址
|
||
|
|
RUN mkdir -p /app/logs /app/uploads \
|
||
|
|
&& chown -R appuser:appuser /app/logs /app/uploads \
|
||
|
|
&& chmod -R 777 /app/logs /app/uploads
|
||
|
|
|
||
|
|
USER appuser
|
||
|
|
|
||
|
|
# 5. 腾讯云PyPI源 + 极简提速依赖安装
|
||
|
|
COPY --chown=appuser:appuser requirements.txt /app/
|
||
|
|
RUN python -m venv /app/venv && \
|
||
|
|
# /app/venv/bin/pip install --no-cache-dir --upgrade pip && \
|
||
|
|
/app/venv/bin/pip install --no-cache-dir --prefer-binary -r requirements.txt -i https://mirrors.cloud.tencent.com/pypi/simple/
|
||
|
|
|
||
|
|
# 6. 复制项目文件
|
||
|
|
COPY --chown=appuser:appuser . /app/
|
||
|
|
|
||
|
|
# 7. 切换非root用户
|
||
|
|
USER appuser
|
||
|
|
|
||
|
|
# 8. 暴露端口
|
||
|
|
EXPOSE 5221
|
||
|
|
|
||
|
|
# 9. 启动Gunicorn
|
||
|
|
CMD ["/app/venv/bin/gunicorn", "--bind", "0.0.0.0:5221", "--workers", "7", "--threads", "2", "run:app"]
|