FROM node:lts-slim

ARG GO_VERSION=1.26

ENV DEBIAN_FRONTEND=noninteractive \
    PATH=/usr/local/go/bin:${PATH}

RUN set -eux; \
    apt-get update; \
    apt-get install -y --no-install-recommends ca-certificates curl git gcc libc6-dev; \
    arch="$(dpkg --print-architecture)"; \
    case "${arch}" in \
        amd64) go_arch='linux-amd64' ;; \
        arm64) go_arch='linux-arm64' ;; \
        *) echo "Unsupported architecture: ${arch}" >&2; exit 1 ;; \
    esac; \
    case "${GO_VERSION}" in \
        *.*.*) download_go_version="${GO_VERSION}" ;; \
        *.*) download_go_version="${GO_VERSION}.0" ;; \
        *) echo "GO_VERSION must be major.minor or major.minor.patch: ${GO_VERSION}" >&2; exit 1 ;; \
    esac; \
    curl -fsSL "https://go.dev/dl/go${download_go_version}.${go_arch}.tar.gz" -o /tmp/go.tgz; \
    rm -rf /usr/local/go; \
    tar -C /usr/local -xzf /tmp/go.tgz; \
    rm -f /tmp/go.tgz; \
    rm -rf /var/lib/apt/lists/*

WORKDIR /app
