FROM alpine:3.20 as build
ARG HUGO_VERSION="0.127.0"
ARG NODE_VERSION="22.2.0"

RUN apk add --update --no-cache libssl3 ca-certificates openssl-dev curl ninja pkgconf icu-dev git linux-headers libc6-compat make g++ gcc ada-dev brotli-dev c-ares-dev nghttp2-dev python3 samurai zlib-dev py3-pip libuv-dev

WORKDIR /tmp

RUN curl -4 -sL -o hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz https://github.com/gohugoio/hugo/releases/download/v${HUGO_VERSION}/hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz && \
    tar -xzf "hugo_extended_${HUGO_VERSION}_linux-amd64.tar.gz" && \
    cp ./hugo /usr/bin/hugo && \
    hugo version

RUN curl -4 -sL -o node-v${NODE_VERSION}.tar.gz https://nodejs.org/dist/v${NODE_VERSION}/node-v${NODE_VERSION}.tar.gz && \ 
    tar -xzf "node-v${NODE_VERSION}.tar.gz" && \
    cd node-v${NODE_VERSION} && \
    ./configure --prefix=/usr \
    --shared-brotli \
    --shared-zlib \
    --shared-libuv \
    --shared-openssl \
    --shared-cares \
    --shared-nghttp2 \
    --ninja \
    --without-npm \
    --with-intl=system-icu \
    --openssl-use-def-ca-store && \
    make BUILDTYPE=Release && \
    make install

FROM alpine:3.20

RUN apk add --update --no-cache \
    c-ares \
    nghttp2 \
    libcrypto3 \
    icu-libs \
    icu-data-en \
    ca-certificates \
    libgcc \
    libstdc++ \
    libc6-compat \
    linux-headers \
    rsync \
    openssh \
    npm \
    && rm -rf /var/cache/apk/*

COPY --from=build /usr/bin/hugo /usr/bin/hugo
COPY --from=build /usr/bin/node /usr/bin/node
COPY --from=build /usr/lib/node_modules /usr/lib/node_modules
COPY --from=build /usr/include/node /usr/include/node
RUN mkdir /home/app
WORKDIR /home/app

ENTRYPOINT [ "/bin/sh" ]