初始化提交
This commit is contained in:
commit
887c1f449e
963 files changed
+166869
No files matched your search
@@ -0,0 +1,47 @@
|
||||
# ==============================
|
||||
# 灵台 · 魂镜后端镜像(Backend / FastAPI):Python 3.12 + uv
|
||||
# 启动入口 entrypoint.sh:先按 *_ENABLED 开关用 wait-for-it 等待依赖就绪,再 uv run python -m app.main
|
||||
# 工作目录 /app/backend,使 .env 中的相对路径 ../db ../logs ../config ../storage 解析到 /app 下。
|
||||
# ==============================
|
||||
FROM python:3.12-slim
|
||||
|
||||
ENV PYTHONUNBUFFERED=1 \
|
||||
PYTHONDONTWRITEBYTECODE=1 \
|
||||
UV_LINK_MODE=copy \
|
||||
UV_COMPILE_BYTECODE=1 \
|
||||
TZ=Asia/Shanghai
|
||||
|
||||
WORKDIR /app/backend
|
||||
|
||||
# 系统依赖:
|
||||
# build-essential / libpq-dev —— 编译 asyncpg、argon2 等 C 扩展
|
||||
# curl —— 容器健康检查
|
||||
# tzdata —— 时区数据
|
||||
# netcat-openbsd —— wait-for-it 端口探测
|
||||
RUN apt-get update && apt-get install -y --no-install-recommends \
|
||||
build-essential libpq-dev curl tzdata netcat-openbsd \
|
||||
&& rm -rf /var/lib/apt/lists/* \
|
||||
&& ln -snf "/usr/share/zoneinfo/$TZ" /etc/localtime && echo "$TZ" > /etc/timezone
|
||||
|
||||
# 安装 uv(沿用 backend/pyproject.toml 的清华镜像源,加速国内构建)
|
||||
RUN pip install --no-cache-dir uv -i https://pypi.tuna.tsinghua.edu.cn/simple
|
||||
|
||||
# 先复制依赖清单,最大化 Docker 层缓存命中
|
||||
COPY backend/pyproject.toml backend/uv.lock ./
|
||||
|
||||
# 安装生产依赖(排除 dev 组、暂不安装项目本体)
|
||||
RUN uv sync --frozen --no-dev --no-install-project
|
||||
|
||||
# 复制后端源码并安装项目本体
|
||||
COPY backend/ ./
|
||||
RUN uv sync --frozen --no-dev
|
||||
|
||||
# 启动顺序:wait-for-it(端口探测工具)+ entrypoint.sh(按开关动态等待依赖后启动应用)
|
||||
COPY docker/backend/wait-for-it.sh /usr/local/bin/wait-for-it.sh
|
||||
COPY docker/backend/entrypoint.sh /app/backend/entrypoint.sh
|
||||
RUN chmod +x /usr/local/bin/wait-for-it.sh /app/backend/entrypoint.sh
|
||||
|
||||
EXPOSE 8000
|
||||
|
||||
# entrypoint 等待依赖就绪后 exec 应用;如需覆盖启动命令,覆盖此 ENTRYPOINT 即可
|
||||
ENTRYPOINT ["/app/backend/entrypoint.sh"]
|
||||
Reference in new issue
Block a user