| # 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 |