# syntax=docker/dockerfile:1 ARG BASE_IMAGE=node:23-bookworm-slim FROM ${BASE_IMAGE} ARG LLVM_VERSION=16 ARG TARGETARCH # common tools RUN --mount=type=cache,target=/var/lib/apt \ --mount=type=cache,target=/var/lib/cache \ --mount=type=cache,target=/var/cache/apt \ apt-get update && \ apt-get install -y \ sudo \ git-lfs \ ca-certificates \ curl \ jq \ gnupg \ gcc \ clang-${LLVM_VERSION} \ llvm-${LLVM_VERSION} \ libbpf-dev \ make \ unzip \ libgraphite2-3 \ zstd && \ ln -s /usr/lib/llvm-${LLVM_VERSION}/bin/clang /usr/bin/clang && \ ln -s -f /usr/lib/llvm-${LLVM_VERSION}/bin/llc /usr/bin/ ADD --chmod=444 https://cli.github.com/packages/githubcli-archive-keyring.gpg /etc/apt/keyrings/githubcli-archive-keyring.gpg ADD --chmod=444 https://download.docker.com/linux/debian/gpg /etc/apt/keyrings/docker.asc # Docker and other tools RUN --mount=type=cache,target=/var/lib/apt \ --mount=type=cache,target=/var/lib/cache \ --mount=type=cache,target=/var/cache/apt \ echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/githubcli-archive-keyring.gpg] https://cli.github.com/packages stable main" > /etc/apt/sources.list.d/github-cli.list && \ 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 update && \ apt-get install -y \ gh \ docker-ce docker-ce-cli containerd.io docker-buildx-plugin # AWS CLI RUN --mount=type=cache,target=/tmp \ if [ "${TARGETARCH}" = "amd64" ]; then \ curl -o "/tmp/awscliv2.zip" "https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip"; \ elif [ "${TARGETARCH}" = "arm64" ]; then \ curl -o "/tmp/awscliv2.zip" "https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip"; \ else \ echo "Unsupported architecture: ${TARGETARCH}"; \ exit 1; \ fi && \ unzip -o /tmp/awscliv2.zip -d /tmp && \ /tmp/aws/install