FROM ubuntu:22.04
LABEL maintainer="Andrey Antukh <niwi@niwi.nz>"

ENV LANG=en_US.UTF-8 \
    LC_ALL=en_US.UTF-8 \
    NODE_VERSION=v20.11.1 \
    DEBIAN_FRONTEND=noninteractive \
    PATH=/opt/node/bin:$PATH

RUN set -ex; \
    useradd -U -M -u 1001 -s /bin/false -d /opt/penpot penpot; \
    mkdir -p /etc/resolvconf/resolv.conf.d; \
    echo "nameserver 127.0.0.11" > /etc/resolvconf/resolv.conf.d/tail; \
    apt-get -qq update; \
    apt-get -qqy --no-install-recommends install \
      curl \
      tzdata \
      locales \
      ca-certificates \
      fontconfig \
      xz-utils \
    ; \
    rm -rf /var/lib/apt/lists/*; \
    echo "en_US.UTF-8 UTF-8" >> /etc/locale.gen; \
    locale-gen;

RUN set -ex; \
    apt-get -qq update; \
    apt-get -qqy install \
      imagemagick \
      ghostscript \
      netpbm \
      poppler-utils \
      potrace \
      gconf-service \
      libasound2 \
      libatk1.0-0 \
      libatk-bridge2.0-0 \
      libatomic1 \
      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 \
      libx11-6 \
      libx11-xcb1 \
      libxcb1 \
      libxcb-dri3-0 \
      libxcomposite1 \
      libxcursor1 \
      libxdamage1 \
      libxext6 \
      libxfixes3 \
      libxi6 \
      libxrandr2 \
      libxrender1 \
      libxshmfence1 \
      libxss1 \
      libxtst6 \
      fonts-liberation \
      libnss3 \
      libgbm1 \
    ; \
    rm -rf /var/lib/apt/lists/*;

RUN set -eux; \
    ARCH="$(dpkg --print-architecture)"; \
    case "${ARCH}" in \
       aarch64|arm64) \
         BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-arm64.tar.gz"; \
         ;; \
       amd64|x86_64) \
         BINARY_URL="https://nodejs.org/dist/${NODE_VERSION}/node-${NODE_VERSION}-linux-x64.tar.gz"; \
         ;; \
       *) \
         echo "Unsupported arch: ${ARCH}"; \
         exit 1; \
         ;; \
    esac; \
    curl -LfsSo /tmp/nodejs.tar.gz ${BINARY_URL}; \
    mkdir -p /opt/node; \
    cd /opt/node; \
    tar -xf /tmp/nodejs.tar.gz --strip-components=1; \
    chown -R root /opt/node; \
    corepack enable; \
    rm -rf /tmp/nodejs.tar.gz; \
    mkdir -p /opt/penpot; \
    chown -R penpot:penpot /opt/penpot;

ADD --chown=penpot:penpot ./bundle-exporter/ /opt/penpot/exporter

WORKDIR /opt/penpot/exporter
USER penpot:penpot

RUN set -ex; \
    yarn install; \
    yarn run playwright install chromium;

CMD ["node", "app.js"]
