| FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim |
|
|
| |
| ARG PORT=8001 |
| ARG TRANSPORT_SERVER_URL=https://blanchon-robothub-transportserver.hf.space/api |
|
|
| |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| build-essential gcc g++ \ |
| libgl1-mesa-glx libglib2.0-0 libsm6 libxext6 libxrender-dev libgomp1 \ |
| ffmpeg git \ |
| && apt-get clean && rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN groupadd -r appuser && useradd -m -r -g appuser -s /bin/bash appuser |
|
|
| |
| ENV HOME=/home/appuser |
| ENV \ |
| HF_HOME=$HOME/.cache \ |
| HF_HUB_CACHE=$HOME/.cache/hub \ |
| HUGGINGFACE_HUB_CACHE=$HOME/.cache/hub \ |
| TRANSFORMERS_CACHE=$HOME/.cache/huggingface/hub \ |
| UV_CACHE_DIR=$HOME/.cache/uv \ |
| PYTHONUNBUFFERED=1 \ |
| PYTHONDONTWRITEBYTECODE=1 \ |
| UV_SYSTEM_PYTHON=1 \ |
| UV_COMPILE_BYTECODE=1 \ |
| PORT=${PORT} \ |
| TRANSPORT_SERVER_URL=${TRANSPORT_SERVER_URL} |
|
|
| |
| RUN mkdir -p "$HF_HUB_CACHE" "$TRANSFORMERS_CACHE" "$UV_CACHE_DIR" \ |
| && chown -R appuser:appuser "$HOME/.cache" |
|
|
| |
| USER appuser |
|
|
| |
| WORKDIR /app |
|
|
| |
| COPY --chown=appuser:appuser pyproject.toml uv.lock* ./ |
| COPY --chown=appuser:appuser external/ ./external/ |
|
|
| |
| RUN --mount=type=cache,target=$UV_CACHE_DIR,uid=1000,gid=1000 \ |
| uv sync --locked --no-install-project --no-dev |
|
|
| |
| COPY --chown=appuser:appuser . . |
|
|
| |
| RUN --mount=type=cache,target=$UV_CACHE_DIR,uid=1000,gid=1000 \ |
| uv sync --locked --no-editable --no-dev |
|
|
| |
| ENV PATH="/app/.venv/bin:$PATH" |
|
|
| |
| EXPOSE ${PORT} |
| HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ |
| CMD python -c "import urllib.request, os; urllib.request.urlopen(f'http://localhost:{os.getenv(\"PORT\")}/api/health')" || exit 1 |
|
|
| CMD ["sh", "-c", "python launch_simple.py --host 0.0.0.0 --port ${PORT} --transport-server-url ${TRANSPORT_SERVER_URL}"] |
|
|