📄 .devcontainer/dev.containerfile
FROM mcr.microsoft.com/dotnet/sdk:11.0.100-preview.2

RUN apt-get update && apt-get install \
  xz-utils \
  gpg \
  ca-certificates \
  -y

# Install ffmpeg
RUN apt-get install -y ffmpeg

# Install sqlite3
RUN apt-get install -y sqlite3

# Install node/npm
ENV NODE_VERSION 26.1.0
RUN ARCH= && dpkgArch="`$(dpkg --print-architecture)" \
  && case "`${dpkgArch##*-}" in \
    amd64) ARCH='x64';; \
    ppc64el) ARCH='ppc64le';; \
    s390x) ARCH='s390x';; \
    arm64) ARCH='arm64';; \
    armhf) ARCH='armv7l';; \
    i386) ARCH='x86';; \
    *) echo "unsupported architecture"; exit 1 ;; \
  esac \
  && curl -fsSLO --compressed "https://nodejs.org/dist/v`$NODE_VERSION/node-v`$NODE_VERSION-linux-`$ARCH.tar.xz" \
  && tar -xJf "node-v`$NODE_VERSION-linux-`$ARCH.tar.xz" -C /usr/local --strip-components=1 --no-same-owner \
  && rm "node-v`$NODE_VERSION-linux-`$ARCH.tar.xz" \
  && ln -s /usr/local/bin/node /usr/local/bin/nodejs
RUN npm install -g corepack@latest

# Install chromium
RUN curl -fsSL https://dl.google.com/linux/linux_signing_key.pub | gpg --dearmor --yes -o /usr/share/keyrings/chrome.gpg
RUN echo 'deb [arch=amd64 signed-by=/usr/share/keyrings/chrome.gpg] http://dl.google.com/linux/chrome/deb/ stable main' > /etc/apt/sources.list.d/google-chrome.list
RUN apt-get update && apt-get install -y google-chrome-stable