# cogeco-checker: Headless Chromium for Cogeco address-availability checker # ~450MB total (node:20-slim + Chromium deps) # Lighter than node:20 + full playwright install (~800MB) FROM node:20-slim # Playwright needs these system deps for Chromium # Install ALL Chromium dependencies in one shot via playwright's own installer RUN apt-get update && apt-get install -y --no-install-recommends \ libnss3 libatk1.0-0 libatk-bridge2.0-0 libcups2 libdrm2 \ libxkbcommon0 libxcomposite1 libxdamage1 libxrandr2 libgbm1 \ libpango-1.0-0 libcairo2 libasound2 libxshmfence1 \ libxfixes3 libx11-6 libx11-xcb1 libxcb1 libxext6 \ libxrender1 libxi6 libxtst6 libglib2.0-0 libdbus-1-3 \ fonts-liberation \ && rm -rf /var/lib/apt/lists/* WORKDIR /app # Create non-root user first so playwright installs in their home RUN groupadd -r checker && useradd -r -g checker -G audio,video -m checker COPY package.json . RUN npm install --production # Install Chromium as the checker user (so it goes to /home/checker/.cache) USER checker RUN npx playwright install chromium 2>&1 | tail -3 USER root COPY server.js . COPY lib/ lib/ RUN chown -R checker:checker /app EXPOSE 3302 USER checker CMD ["node", "server.js"]