Spaces:
Sleeping
Sleeping
| FROM node:22-bookworm-slim | |
| WORKDIR /app | |
| ENV PYTHONUNBUFFERED=1 \ | |
| UV_PYTHON=3.13 \ | |
| UV_LINK_MODE=copy | |
| COPY --from=ghcr.io/astral-sh/uv:latest /uv /uvx /bin/ | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| bash \ | |
| ca-certificates \ | |
| && rm -rf /var/lib/apt/lists/* | |
| RUN uv python install 3.13 | |
| COPY .python-version pyproject.toml uv.lock ./ | |
| COPY koja_diffuser ./koja_diffuser | |
| RUN uv sync --locked | |
| COPY frontend ./frontend | |
| EXPOSE 7860 | |
| CMD ["bash", "-lc", "\ | |
| set -euo pipefail; \ | |
| node frontend/server.js & \ | |
| node_pid=$!; \ | |
| uv run uvicorn koja_diffuser.runtime.api:app --host 127.0.0.1 --port 8000 & \ | |
| api_pid=$!; \ | |
| trap 'kill $node_pid $api_pid 2>/dev/null || true' INT TERM EXIT; \ | |
| wait -n $node_pid $api_pid; \ | |
| status=$?; \ | |
| kill $node_pid $api_pid 2>/dev/null || true; \ | |
| wait 2>/dev/null || true; \ | |
| exit $status \ | |
| "] |