1- FROM alpine:3.22
1+ FROM node:24.0.2-slim
22
3- ENV AWS_CLI=2.27.25-r0
3+ ENV DEBIAN_FRONTEND noninteractive
4+ ENV PNPM_VERSION 10.11.0
5+ ENV TURBO_VERSION 2.5.3
6+ ENV TSX_VERSION 4.19.4
7+ ENV TS_NODE 10.9.2
8+ ENV SWC_CORE 1.11.24
9+ ENV AWS_CLI 2.27.19
10+ ENV BUILDKIT_VERSION 0.21.1
411
5- RUN apk update \
6- && apk add --no-cache \
12+ RUN apt-get update -y \
13+ && apt-get install -y --no-install-recommends \
14+ software-properties-common \
715 ca-certificates \
8- build-base \
9- bash \
16+ build-essential \
1017 wget \
1118 jq \
1219 patch \
20+ python3 \
1321 curl \
1422 unzip \
15- aws-cli=${AWS_CLI} \
16- # docker cli tool
17- skopeo
23+ git \
24+ skopeo \
25+ && apt-get clean
1826
19- COPY script /script
27+ # install awscli v2. see https://docs.aws.amazon.com/cli/latest/userguide/getting-started-install.html
28+ RUN curl "https://awscli.amazonaws.com/awscli-exe-linux-x86_64-${AWS_CLI}.zip" -o /tmp/awscliv2.zip \
29+ && unzip /tmp/awscliv2.zip -d /tmp/ \
30+ && /tmp/aws/install \
31+ && rm /tmp/awscliv2.zip \
32+ && rm -rf /tmp/aws
33+
34+ # install node packages
35+ RUN npm i -g pnpm@${PNPM_VERSION} turbo@${TURBO_VERSION} tsx@${TSX_VERSION} ts-node@${TS_NODE} @swc/core@${SWC_CORE}
36+
37+ RUN curl -L "https://github.com/moby/buildkit/releases/download/v${BUILDKIT_VERSION}/buildkit-v${BUILDKIT_VERSION}.linux-amd64.tar.gz" -o /tmp/buildkit.tar.gz \
38+ && mkdir -p /tmp/buildkit \
39+ && tar -C /tmp/buildkit -xzf /tmp/buildkit.tar.gz \
40+ && mv /tmp/buildkit/bin/buildctl /usr/bin/buildctl \
41+ && chmod a+x /usr/bin/buildctl \
42+ && rm -rf /tmp/buildkit \
43+ && rm /tmp/buildkit.tar.gz
44+
45+ # install kubectl
46+ RUN curl -L "https://dl.k8s.io/release/v1.30.13/bin/linux/amd64/kubectl" -o "/usr/bin/kubectl-v1.30" \
47+ && curl -L "https://dl.k8s.io/release/v1.31.9/bin/linux/amd64/kubectl" -o "/usr/bin/kubectl-v1.31" \
48+ && curl -L "https://dl.k8s.io/release/v1.32.5/bin/linux/amd64/kubectl" -o "/usr/bin/kubectl-v1.32" \
49+ && chmod a+x /usr/bin/kubectl*
50+
51+ RUN ln -s /usr/bin/kubectl-v1.32 /usr/bin/kubectl
52+
53+ # install golang
54+ COPY --from=golang:1.22.0 /usr/local/go/ /usr/local/go/
55+ ENV GOPATH /go
56+ ENV PATH $GOPATH/bin:/usr/local/go/bin:/usr/bin:${PATH}
57+
58+ # install amazon-ecr-credential-helper
59+ RUN curl -L "https://amazon-ecr-credential-helper-releases.s3.us-east-2.amazonaws.com/0.9.1/linux-amd64/docker-credential-ecr-login" -o "/usr/bin/docker-credential-ecr-login" \
60+ && chmod a+x /usr/bin/docker-credential-ecr-login
61+
62+ RUN mkdir -p "$GOPATH/src" "$GOPATH/bin" && chmod -R 777 "$GOPATH"
63+
64+ # install uv
65+ # https://docs.astral.sh/uv/reference/installer/#unmanaged-installations
66+ RUN curl -LsSf https://astral.sh/uv/install.sh | env UV_UNMANAGED_INSTALL="/usr/bin" sh
0 commit comments