# syntax=docker/dockerfile:1.6
# 基于 uv 官方镜像（Python 3.12 + Debian trixie slim）
FROM ghcr.io/astral-sh/uv:python3.12-trixie-slim

WORKDIR /app

# 可选：国内镜像源（按需移除）
ENV UV_DEFAULT_INDEX=https://mirrors.aliyun.com/pypi/simple/

# 修复 prisma 安装阶段缺失 libatomic.so.1 导致的 Node 执行失败
RUN apt-get update \
	&& apt-get install -y --no-install-recommends libatomic1 \
	&& rm -rf /var/lib/apt/lists/*

# 仅复制依赖声明进行安装缓存
COPY pyproject.toml README.md ./
# 若存在锁文件（uv.lock）也复制；忽略错误
COPY uv.lock* ./

# 安装生产依赖（不安装 dev）——需要 README.md 以通过构建元数据校验
RUN uv sync --no-dev

# 复制源码与配置
COPY src ./src
COPY prisma ./prisma
COPY docs ./docs
COPY develop_spec_prompt.md README.md ./

# 生成 Prisma Client（仅根据 schema 生成，不依赖数据库连接；若失败则不中断构建）
RUN uv run prisma generate || echo "Prisma generate failed (non-fatal)"

# 复制并设置入口脚本
COPY docker-entrypoint.sh /usr/local/bin/docker-entrypoint.sh
RUN chmod +x /usr/local/bin/docker-entrypoint.sh

EXPOSE 8000

# 环境变量占位（运行时覆盖）
ENV DATABASE_URL="postgresql://user:pass@localhost:5432/dbname"
ENV AUTH_API_KEY=""

# 入口：使用 Typer CLI 启动 FastAPI
ENTRYPOINT ["/usr/local/bin/docker-entrypoint.sh"]
CMD ["uv", "run", "turbo-agent-auth", "serve", "run", "--host", "0.0.0.0", "--port", "8000", "--no-json"]
