FROM python:3.13.7-alpine3.22 ENV PYTHONDONTWRITEBYTECODE=1 \ PYTHONUNBUFFERED=1 \ PIP_NO_CACHE_DIR=1 \ PIP_DISABLE_PIP_VERSION_CHECK=1 \ TZ=Asia/Shanghai \ DATABASE_URL=postgresql://trade:trade@postgres:5432/futures WORKDIR /app # 运行时依赖 + 时区 + libpq(psycopg2) RUN apk add --no-cache tzdata libpq \ && cp /usr/share/zoneinfo/Asia/Shanghai /etc/localtime \ && echo "Asia/Shanghai" > /etc/timezone COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt # 非 root 用户 RUN adduser -D -u 1000 app \ && mkdir -p /app/data \ && chown app:app /app/data COPY --chown=app:app src ./src USER app CMD ["uvicorn", "src.api:app", "--host", "0.0.0.0", "--port", "8000"]