|
|
|
FROM node:18 as frontend-build |
|
WORKDIR /app |
|
COPY frontend/package*.json ./ |
|
RUN npm install |
|
COPY frontend/ ./ |
|
|
|
RUN npm run build |
|
|
|
|
|
FROM ghcr.io/astral-sh/uv:python3.12-bookworm-slim |
|
|
|
WORKDIR /app |
|
|
|
|
|
|
|
|
|
|
|
RUN mkdir -p /app/.cache |
|
|
|
|
|
|
|
ENV UV_COMPILE_BYTECODE=1 |
|
ENV UV_CACHE_DIR=/app/.cache |
|
|
|
|
|
COPY backend/pyproject.toml backend/uv.lock ./ |
|
|
|
|
|
RUN uv sync --frozen --no-install-project --no-dev |
|
|
|
|
|
COPY backend/ . |
|
|
|
|
|
RUN apt-get update && apt-get install -y \ |
|
curl \ |
|
netcat-openbsd \ |
|
&& curl -fsSL https://deb.nodesource.com/setup_18.x | bash - \ |
|
&& apt-get install -y nodejs \ |
|
&& rm -rf /var/lib/apt/lists/* |
|
|
|
|
|
COPY --from=frontend-build /app/build ./frontend/build |
|
COPY --from=frontend-build /app/package*.json ./frontend/ |
|
COPY --from=frontend-build /app/server.js ./frontend/ |
|
|
|
|
|
WORKDIR /app/frontend |
|
RUN npm install --production |
|
WORKDIR /app |
|
|
|
|
|
ENV HF_HOME=/app/.cache \ |
|
TRANSFORMERS_CACHE=/app/.cache \ |
|
HF_DATASETS_CACHE=/app/.cache \ |
|
INTERNAL_API_PORT=7861 \ |
|
PORT=7860 \ |
|
NODE_ENV=production |
|
|
|
|
|
|
|
RUN chmod -R 777 /app/ |
|
|
|
EXPOSE 7860 |
|
|
|
|
|
CMD ["sh", "-c", "uv run uvicorn app.asgi:app --host 0.0.0.0 --port 7861 & while ! nc -z localhost 7861; do sleep 1; done && cd frontend && npm run serve"] |
|
|