docker - 如何为安装了 Bazel、Kubectl 和 Gcloud 的 Cloud Build 创建 Slim Docker 映像?
问题描述
我想从 Google Cloud Build 步骤运行k8s_objects Bazel 规则,该步骤将新配置部署到我的集群。因此我需要一个 Docker 映像
- bazel(显然用于运行 bazel 目标)
- kubectl(用于将新配置应用到我的集群)
- gcloud(用于对我的 Google Kubernetes Engine 集群进行身份验证)
安装。目前我有一个 1GB 大小的巨大 docker 镜像,里面可能堆满了我不需要的东西。因此,我的构建时间飙升至 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" ]
推荐阅读
- python - 在keras中合并两层
- regex - 简单的正则表达式在 Chrome 扩展中不起作用(Popup.js)
- wix - WiX:在“InstallFinalize”之后显示一个 UI 对话框元素
- image - 我的网站图片在服务器中加载速度很慢并且谷歌移动测试失败
- python - 显示列表中所有元素的总和
- javascript - 如何让网站等待我的 ajax 文件发回一个值而不是打印 undefined?
- python - 在 Django (Wagtail) 中使用外键关系填充数据库
- git - Zsh - 停止第一行输出以粗体显示
- java - 给定不同地理坐标的位置管理器
- regex - python 正则表达式提取重复表达式序列的位置