如何为安装了 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 图像
- bazel(显然是针对 运行ning bazel 目标)
- kubectl(用于将新配置应用到我的集群)
- gcloud(用于对我的 Google Kubernetes Engine 集群进行身份验证)
已安装。目前我有 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" ]
我想 运行 来自 Google Cloud Build 步骤的 k8s_objects Bazel 规则,它将新配置部署到我的集群。因此我需要一个 Docker 图像
- bazel(显然是针对 运行ning bazel 目标)
- kubectl(用于将新配置应用到我的集群)
- gcloud(用于对我的 Google Kubernetes Engine 集群进行身份验证)
已安装。目前我有 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" ]