Files
operating-room-monitor-server/Dockerfile
2026-04-28 10:29:35 +08:00

54 lines
2.0 KiB
Docker
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# ---------------------------------------------------------------------------
# 禁止「FROM python:...」简写 — 会直连 docker.io / registry-1.docker.io。
# Python 使用 DaoCloud 增加前缀形式https://github.com/DaoCloud/public-image-mirror
# 勿用裸 tag「3.13」;须 3.13-slim-bookworm。
# ---------------------------------------------------------------------------
FROM m.daocloud.io/docker.io/library/python:3.13-slim-bookworm
# Debian bookworm: use Aliyun mirror for apt (default snapshot points at deb.debian.org).
RUN sed -i \
-e 's|http://deb.debian.org/debian-security|https://mirrors.aliyun.com/debian-security|g' \
-e 's|http://deb.debian.org/debian|https://mirrors.aliyun.com/debian|g' \
/etc/apt/sources.list.d/debian.sources
# OpenCV (pulled in by ultralytics) links against X11 client libs; slim images omit them.
RUN apt-get update && apt-get install -y --no-install-recommends \
docker.io \
ffmpeg \
libgl1 \
libglib2.0-0 \
libgomp1 \
libxcb1 \
&& rm -rf /var/lib/apt/lists/*
# ghcr.io「增加前缀」形式与 kindest/node 示例一致)
COPY --from=m.daocloud.io/ghcr.io/astral-sh/uv:latest /uv /usr/local/bin/uv
WORKDIR /app
ENV PYTHONUNBUFFERED=1 \
UV_COMPILE_BYTECODE=1 \
UV_LINK_MODE=copy
COPY pyproject.toml uv.lock main.py ./
COPY app ./app/
# uv.lock pins full download URLs. Rewrite to mainland-accessible mirrors (same paths / hashes).
# PyPI: Tsinghua | PyTorch wheel index: 南大 (syncs download.pytorch.org / download-r2)
RUN sed -i \
-e 's|https://files.pythonhosted.org|https://pypi.tuna.tsinghua.edu.cn|g' \
-e 's|https://pypi.org/simple|https://pypi.tuna.tsinghua.edu.cn/simple|g' \
-e 's|https://download-r2.pytorch.org|https://mirrors.nju.edu.cn/pytorch|g' \
-e 's|https://download.pytorch.org|https://mirrors.nju.edu.cn/pytorch|g' \
uv.lock
ENV UV_DEFAULT_INDEX=https://pypi.tuna.tsinghua.edu.cn/simple
RUN uv sync --frozen --no-dev
ENV PATH="/app/.venv/bin:$PATH"
EXPOSE 8000
CMD ["uvicorn", "main:app", "--host", "0.0.0.0", "--port", "8000"]