# base image with playwright and necessary libraries FROM mcr.microsoft.com/playwright:focal # environment variables ENV PLAYWRIGHT_SKIP_BROWSER_DOWNLOAD=1 \ CHROME_BIN=/usr/bin/chromium \ TZ=Asia/Jakarta \ DEBIAN_FRONTEND=noninteractive \ PORT=3000 \ MADE=PAXSENIXAPI # install dependencies RUN apt-get update && \ apt-get install -y \ software-properties-common \ # chromium \ ffmpeg \ imagemagick \ libnss3-dev \ webp \ gconf-service \ libasound2 \ libatk1.0-0 \ libc6 \ libcairo2 \ libcups2 \ libdbus-1-3 \ libexpat1 \ libfontconfig1 \ libgcc1 \ libgconf-2-4 \ libgdk-pixbuf2.0-0 \ libglib2.0-0 \ libgtk-3-0 \ libnspr4 \ libpango-1.0-0 \ libpangocairo-1.0-0 \ libstdc++6 \ libx11-6 \ libx11-xcb1 \ libxcb1 \ libxcomposite1 \ libxcursor1 \ libxdamage1 \ libxext6 \ libxfixes3 \ libxi6 \ libxrandr2 \ libxrender1 \ libxss1 \ libxtst6 \ ca-certificates \ libappindicator1 \ lsb-release \ xdg-utils \ fonts-liberation \ fonts-dejavu \ fonts-noto-color-emoji \ python3.9 \ python3.9-venv \ python3.9-dev \ build-essential \ python3-pip && \ rm -rf /var/lib/apt/lists/* && \ update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.9 1 # set timezone RUN ln -snf /usr/share/zoneinfo/$TZ /etc/localtime && echo $TZ > /etc/timezone # set working directory WORKDIR /app # clone private repo using a secret RUN --mount=type=secret,id=GITHUB_REPO,required=true \ git clone $(cat /run/secrets/GITHUB_REPO) PAXSENIXAPI-SERVER # set working directory to cloned repo WORKDIR /app/PAXSENIXAPI-SERVER # install dependencies RUN chmod -R 777 /app && \ npm cache clean --force && \ npm install --force && \ npx playwright install --with-deps # install python dependencies (if any) COPY requirements.txt . RUN python3 -m venv venv && \ . venv/bin/activate && \ pip install --no-cache-dir -r requirements.txt ENV PATH="/app/PAXSENIXAPI-SERVER/venv/bin:$PATH" # expose port EXPOSE 3000 # start the application CMD ["node", "."]