LT-ML / Dockerfile
WokoVN's picture
Upload 75 files
bb57163 verified
# --- Stage 1: Build Frontend ---
FROM node:20-slim AS frontend-builder
WORKDIR /app/frontend
COPY frontend/package*.json ./
RUN npm install
COPY frontend/ ./
ENV VITE_API_URL=/api
RUN npm run build
# --- Stage 2: Final Image ---
FROM node:20-slim
# Install system dependencies
# Includes dependencies for: Nginx, Puppeteer, and Python C-extensions
RUN apt-get update && apt-get install -y \
curl \
nginx \
python3 \
python3-pip \
python3-dev \
build-essential \
wget \
gnupg \
ca-certificates \
procps \
libasound2 \
libatk-bridge2.0-0 \
libatk1.0-0 \
libc6 \
libcairo2 \
libcups2 \
libdbus-1-3 \
libexpat1 \
libfontconfig1 \
libgbm1 \
libglib2.0-0 \
libgtk-3-0 \
libnspr4 \
libnss3 \
libpango-1.0-0 \
libpangocairo-1.0-0 \
libstdc++6 \
libx11-6 \
libx11-xcb1 \
libxcb1 \
libxcomposite1 \
libxcursor1 \
libxdamage1 \
libxext6 \
libxfixes3 \
libxi6 \
libxrandr2 \
libxrender1 \
libxtst6 \
fonts-liberation \
lsb-release \
xdg-utils \
ffmpeg \
--no-install-recommends \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
# Copy Backend and install dependencies
COPY backend/package*.json ./backend/
RUN cd backend && npm install
# Install minimal Python dependencies for scraping (if needed)
# We exclude the heavy XTTS/ML dependencies
COPY requirements.txt ./
RUN sed -i '/-r/d' requirements.txt && \
pip3 install --no-cache-dir --break-system-packages -r requirements.txt
# Copy all code
COPY . .
# Copy built frontend from Stage 1
COPY --from=frontend-builder /app/frontend/dist ./frontend/dist
# Setup Nginx
COPY nginx.conf /etc/nginx/nginx.conf
# Expose port 7860 for Hugging Face
EXPOSE 7860
# Ensure start.sh is executable
RUN chmod +x /app/start.sh
# Start all services via start.sh
CMD ["/app/start.sh"]