# 1. 基础镜像：Python 3.12 Slim 版本 (体积小，构建快)
FROM python:3.12-slim

# 2. 设置工作目录为 /app
WORKDIR /app

# 3. 设置环境变量
# POETRY_VIRTUALENVS_CREATE=false: 直接安装到系统环境，不创建虚拟环境 (容器内不需要隔离)
# PYTHONUNBUFFERED=1: 日志实时输出，方便 Docker logs 查看
# PYTHONDONTWRITEBYTECODE=1: 不生成 .pyc 文件，减小体积
ENV POETRY_VIRTUALENVS_CREATE=false \
    PYTHONUNBUFFERED=1 \
    PYTHONDONTWRITEBYTECODE=1

# 4. 安装 Poetry
RUN pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
RUN pip install --no-cache-dir poetry

# 5. 复制依赖文件 (利用 Docker 缓存层)
# 先复制 pyproject.toml 和 poetry.lock，如果依赖没变，这层构建会直接使用缓存
COPY pyproject.toml poetry.lock ./

# 6. 安装依赖
# --no-root: 不安装当前项目本身 (因为我们是复制源码运行)
# --no-interaction: 非交互模式，避免脚本卡住
RUN poetry install --no-root --no-interaction --no-ansi

# 7. 复制所有源代码
# 将当前目录下的所有文件（alien_store, alien_gateway, common 等）都复制进容器
COPY . .

# 8. 暴露端口
# 对应流水线中 -p 33333:33333 的设置
EXPOSE 33333

# 9. 启动命令
# 使用 uvicorn 启动 alien_store 服务
# alien_store.main:app -> 指向 alien_store/main.py 中的 app 对象
CMD ["uvicorn", "alien_store.main:app", "--host", "0.0.0.0", "--port", "33333"]