@@ -14,12 +14,82 @@ RUN make build
1414FROM debian:bookworm
1515
1616WORKDIR /app
17+ ENV DEBIAN_FRONTEND=noninteractive
1718
1819RUN --mount=type=cache,target=/var/lib/apt \
1920 --mount=type=cache,target=/var/cache/apt \
2021 apt-get update && \
21- apt-get install --no-install-recommends -y curl less locales ca-certificates
22+ apt-get install --no-install-recommends -y curl unzip ca-certificates zip tzdata wget gnupg2 bzip2 apt-transport-https locales locales-all lsb-release git python3-crcmod python3-openssl
2223
24+ RUN locale-gen en_US.UTF-8
25+ RUN update-locale LANG=en_US.UTF-8
26+
27+ # stern, jq, yq
28+ RUN curl -sLS https://get.arkade.dev | sh && \
29+ arkade get kubectl jq yq sops --path /usr/bin && \
30+ chmod +x /usr/bin/kubectl /usr/bin/jq /usr/bin/yq /usr/bin/sops
31+
32+ # Minimalized Google cloud sdk
33+ FROM base AS gcloud-installer
34+
35+ ENV GCLOUD_PATH=/opt/google-cloud-sdk
36+ ENV PATH $GCLOUD_PATH/bin:$PATH
37+ ENV CLOUDSDK_PYTHON=/usr/bin/python3
38+ # Download and install cloud sdk. Review the components I install, you may not need them.
39+ RUN GCLOUDCLI_URL="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-linux-x86_64.tar.gz" && \
40+ if [ "${TARGETARCH}" = "arm64" ]; then \
41+ GCLOUDCLI_URL="https://dl.google.com/dl/cloudsdk/channels/rapid/downloads/google-cloud-cli-linux-arm.tar.gz" ; \
42+ fi && \
43+ curl $GCLOUDCLI_URL -o gcloud.tar.gz && \
44+ tar xzf gcloud.tar.gz -C /opt && \
45+ rm gcloud.tar.gz && \
46+ rm -rf $GCLOUD_PATH/platform/bundledpythonunix && \
47+ gcloud config set core/disable_usage_reporting true && \
48+ gcloud config set component_manager/disable_update_check true && \
49+ gcloud config set metrics/environment github_docker_image && \
50+ gcloud components remove -q bq && \
51+ gcloud components install -q beta kubectl-oidc gke-gcloud-auth-plugin && \
52+ rm -rf $(find $GCLOUD_PATH/ -regex ".*/__pycache__" ) && \
53+ rm -rf $GCLOUD_PATH/.install/.backup && \
54+ rm -rf $GCLOUD_PATH/bin/anthoscli && \
55+ gcloud --version
56+
57+
58+ FROM base AS final
59+
60+ # Install all locales
61+
62+
63+ ENV PATH /opt/google-cloud-sdk/bin:$PATH
64+ ENV CLOUDSDK_PYTHON=/usr/bin/python3
65+ COPY --from=gcloud-installer /opt/google-cloud-sdk /opt/google-cloud-sdk
66+ # This is to be able to update gcloud packages
67+ RUN git config --system credential.'https://source.developers.google.com' .helper gcloud.sh
68+
69+
70+ # Azure CLI
71+ RUN mkdir -p /etc/apt/keyrings && \
72+ curl -sLS https://packages.microsoft.com/keys/microsoft.asc | \
73+ gpg --dearmor | tee /etc/apt/keyrings/microsoft.gpg > /dev/null && \
74+ chmod go+r /etc/apt/keyrings/microsoft.gpg && \
75+ echo "deb [arch=`dpkg --print-architecture` signed-by=/etc/apt/keyrings/microsoft.gpg] https://packages.microsoft.com/repos/azure-cli/ $(lsb_release -cs) main" | tee /etc/apt/sources.list.d/azure-cli.list && \
76+ cat /etc/apt/sources.list.d/azure-cli.list && \
77+ apt-get update && \
78+ apt-get install -y azure-cli && \
79+ apt-get clean && \
80+ rm -rf $(find /opt/az -regex ".*/__pycache__" ) && \
81+ az version
82+
83+ # AWS CLI
84+ RUN AWSCLI_URL="https://awscli.amazonaws.com/awscli-exe-linux-x86_64.zip" && \
85+ if [ "${TARGETARCH}" = "arm64" ]; then \
86+ AWSCLI_URL="https://awscli.amazonaws.com/awscli-exe-linux-aarch64.zip" ; \
87+ fi && \
88+ curl "${AWSCLI_URL}" -o "awscliv2.zip" && \
89+ unzip -q awscliv2.zip && ./aws/install -i /opt/aws -b /usr/bin/ && \
90+ rm awscliv2.zip && \
91+ rm -rf ./aws && \
92+ aws --version
2393
2494COPY --from=builder /app/batch-runner /app/batch-runner
2595
0 commit comments