# Builder stage
FROM python:3.10.0 as builder

# Create a non-root user
RUN useradd -ms /bin/bash admin

# Set the working directory
WORKDIR /srv

# Copy requirements file first to leverage caching
COPY --chown=admin requirements.txt .

# Install Python dependencies
RUN pip install --no-cache-dir -r requirements.txt

# Install system dependencies
RUN apt-get update && \
  apt-get install -y --no-install-recommends \
  wget ffmpeg curl aria2 \
  fonts-liberation \
  libatk-bridge2.0-0 \
  libatk1.0-0 \
  libatspi2.0-0 \
  libcups2 \
  libdrm2 \
  libgbm1 \
  libgtk-3-0 \
  libnspr4 \
  libnss3 \
  libu2f-udev \
  libvulkan1 \
  libxcomposite1 \
  libxdamage1 \
  mesa-vulkan-drivers \
  libxfixes3 \
  libasound2 \
  libxkbcommon0 \
  libxrandr2 \
  xdg-utils \
  software-properties-common \
  npm

# Install youtubeuploader
ADD https://github.com/porjo/youtubeuploader/releases/download/23.06/youtubeuploader_23.06_Linux_x86_64.tar.gz youtubeuploader.tar.gz
RUN mkdir -p /srv/youtube && \
  tar -zxvf youtubeuploader.tar.gz -C /srv/youtube && \
  rm youtubeuploader.tar.gz && \
  chmod +x /srv/youtube/youtubeuploader

# Install latest npm and node
RUN npm install npm@latest -g && \
  npm install n -g && \
  n latest

# Install unsilence
RUN pipx ensurepath && \
  pipx install unsilence

# Copy the application code
COPY --chown=admin . /srv

# Command to run the application
# CMD python -m uvicorn App.app:app --host 0.0.0.0 --port 7860 &  python -m celery -A App.Worker.celery worker -c 5  --max-tasks-per-child=1  --without-heartbeat 

CMD python -m uvicorn App.app:app --host 0.0.0.0 --port 7860 

# Expose port
EXPOSE 7860