| |
| |
| |
| FROM node:20-slim AS frontend-builder |
| WORKDIR /app/frontend |
|
|
| |
| COPY frontend/package.json frontend/package-lock.json* ./ |
| RUN npm install |
|
|
| |
| COPY frontend/ ./ |
| RUN npm run build |
|
|
| |
| |
| |
| FROM golang:1.23 AS backend-builder |
| WORKDIR /app/backend |
|
|
| |
| COPY main.go . |
|
|
| |
| RUN go mod init vchat-server && \ |
| go mod tidy && \ |
| CGO_ENABLED=0 GOOS=linux go build -a -installsuffix cgo -o vchat-server main.go |
|
|
| |
| |
| |
| FROM python:3.11-slim |
|
|
| |
| ENV PYTHONUNBUFFERED=1 \ |
| DEBIAN_FRONTEND=noninteractive \ |
| LITE_MODE=true \ |
| PATH="/home/user/.local/bin:$PATH" \ |
| PIP_NO_CACHE_DIR=1 |
|
|
| |
| RUN useradd -m -u 1000 user |
|
|
| WORKDIR /app |
|
|
| |
| RUN apt-get update && apt-get install -y --no-install-recommends \ |
| ffmpeg \ |
| git \ |
| curl \ |
| gnupg \ |
| ca-certificates \ |
| && rm -rf /var/lib/apt/lists/* |
|
|
| |
| RUN pip install uv |
| COPY requirements.txt ./ |
| RUN uv pip install --system -r requirements.txt |
| |
| RUN uv pip install --system --upgrade "yt-dlp[default]" |
|
|
| |
| COPY --chown=user src/ ./src/ |
|
|
| |
| COPY --from=backend-builder --chown=user /app/backend/vchat-server /app/vchat-server |
| RUN mkdir -p /app/static |
| COPY --from=frontend-builder --chown=user /app/frontend/dist /app/static |
|
|
| |
| RUN mkdir -p /app/data /app/data/videos /app/data/labels /app/data/prompts /app/data/responses /app/metadata \ |
| && chown -R user:user /app/data /app/metadata |
|
|
| |
| COPY --chown=user start.sh /app/start.sh |
| RUN sed -i 's/\r$//' /app/start.sh && \ |
| chmod +x /app/start.sh |
|
|
| |
| USER user |
|
|
| |
| EXPOSE 7860 |
|
|
| |
| CMD ["/app/start.sh"] |