FROM debian:bookworm-20260223-slim # 安装基础依赖 RUN apt-get update && apt-get install -y --no-install-recommends \ curl \ ca-certificates \ tar \ && rm -rf /var/lib/apt/lists/* # 从官方镜像直接复制 caddy 和 uv 二进制,避免 apt repo 和 gpg 依赖 COPY --from=caddy:latest /usr/bin/caddy /usr/local/bin/caddy COPY --from=ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv # 下载并校验 subconverter ARG SUBCONVERTER_URL=https://github.com/tindy2013/subconverter/releases/download/v0.9.0/subconverter_linux64.tar.gz ARG SUBCONVERTER_SHA256=884a6d1168267eba076fcdd5171215bacf98c17948ab526e4cbbdcad5f7a0217 RUN curl -fsSL "$SUBCONVERTER_URL" -o /tmp/subconverter.tar.gz && \ echo "${SUBCONVERTER_SHA256} /tmp/subconverter.tar.gz" | sha256sum -c - && \ tar -xzf /tmp/subconverter.tar.gz -C /opt && \ rm /tmp/subconverter.tar.gz # 安装 FastAPI 依赖(利用 uv 缓存层) WORKDIR /app COPY app/pyproject.toml . RUN uv sync --no-dev # 复制应用代码 COPY app/ . # Caddy 配置 COPY Caddyfile /etc/caddy/Caddyfile COPY entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh EXPOSE 7860 CMD ["/entrypoint.sh"]