FROM node:22-bookworm

ENV DEBIAN_FRONTEND=noninteractive \
    TZ=Asia/Seoul \
    PUPPETEER_SKIP_DOWNLOAD=true \
    PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium \
    WORKDIR=/builds

RUN sed -i 's|http://deb.debian.org|https://deb.debian.org|g; s|http://security.debian.org|https://security.debian.org|g' /etc/apt/sources.list.d/debian.sources \
    && apt-get -o Acquire::ForceIPv4=true update \
    && apt-get install -y --no-install-recommends \
        ca-certificates \
        curl \
        gnupg \
        wget \
        git \
        jq \
        rsync \
        fonts-liberation \
        libasound2 \
        logrotate \
        chromium \
    && install -m 0755 -d /etc/apt/keyrings \
    && curl -fsSL https://nginx.org/keys/nginx_signing.key | gpg --dearmor -o /etc/apt/keyrings/nginx-archive-keyring.gpg \
    && echo "deb [signed-by=/etc/apt/keyrings/nginx-archive-keyring.gpg] https://nginx.org/packages/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") nginx" \
        > /etc/apt/sources.list.d/nginx.list \
    && curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc \
    && chmod a+r /etc/apt/keyrings/docker.asc \
    && echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian $(. /etc/os-release && echo \"$VERSION_CODENAME\") stable" \
        > /etc/apt/sources.list.d/docker.list \
    && apt-get -o Acquire::ForceIPv4=true update \
    && apt-get install -y --no-install-recommends docker-ce-cli nginx \
    && npm install -g pnpm@10.22.0 \
    && mkdir -p /opt/ssg-runtime \
    && cd /opt/ssg-runtime \
    && npm init -y >/dev/null \
    && PUPPETEER_SKIP_DOWNLOAD=true npm install dotenv@17.4.1 puppeteer@24.40.0 \
    && printf '%s\n' \
        '#!/bin/sh' \
        'set -e' \
        'workdir="${SSG_WORKDIR:-/builds}"' \
        'mkdir -p "$workdir/node_modules"' \
        'ln -sfn /opt/ssg-runtime/node_modules/dotenv "$workdir/node_modules/dotenv"' \
        'ln -sfn /opt/ssg-runtime/node_modules/puppeteer "$workdir/node_modules/puppeteer"' \
        'cd "$workdir"' \
        'exec node ssg/generate-ssg-html.js "$@"' \
        > /usr/local/bin/run-ssg-html \
    && chmod +x /usr/local/bin/run-ssg-html \
    && ln -snf /usr/share/zoneinfo/$TZ /etc/localtime \
    && echo $TZ > /etc/timezone \
    && mkdir -p /builds \
    && rm -rf /var/lib/apt/lists/*

WORKDIR /builds

USER root

CMD ["bash"]
