如何为安装了 Bazel、Kubectl 和 Gcloud 的 Cloud Build 创建 Slim Docker 镜像?

How to Create a Slim Docker Image for Cloud Build with Bazel, Kubectl and Gcloud Installed?

我想 运行 来自 Google Cloud Build 步骤的 k8s_objects Bazel 规则,它将新配置部署到我的集群。因此我需要一个 Docker 图像

已安装。目前我有 this huge docker image,大小为 1GB,可能塞满了我不需要的东西。因此我的构建时间猛增到 10 分钟甚至更多。

这是我的 cloudbuild.yaml 的样子:

steps:
  - name: eu.gcr.io/cents-ideas/slim-bazel-kubectl
    entrypoint: /bin/sh
    args:
      - -c
      - |
        gcloud container clusters get-credentials cents-ideas --zone europe-west3-a --project cents-ideas

只有我需要的包的 docker 小图像会是什么样子?

目前我使用下图。但是它没有安装 kubectl

FROM ubuntu:18.04

RUN apt-get update
RUN apt-get -y install curl gnupg unzip python python3 git build-essential

# nodejs
RUN apt-get -y install nodejs

# yarn
RUN curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add - && \
  echo "deb https://dl.yarnpkg.com/debian/ stable main" | tee /etc/apt/sources.list.d/yarn.list && \
  apt-get update && apt-get -y install yarn

# bazelisk
RUN yarn global add @bazel/bazelisk --prefix /usr/local && bazelisk version

WORKDIR /app

ENTRYPOINT [ "bazelisk" ]