Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Build Docker Images with Bazel

micnncim
September 05, 2019

Build Docker Images with Bazel

micnncim

September 05, 2019
Tweet

More Decks by micnncim

Other Decks in Programming

Transcript

  1. Presentation Outline Today's Agenda About Me How to build Docker

    Image? What is Bazel? How good is Bazel for Docker? How to use Bazel for Docker? Recap
  2. micnncim Twitter: @micnncim GitHub: @micnncim University Student / B4 Interest:

    Go, Cloud Native, DevOps Favorite Base Image: distroless Blog: micnncim.github.io
  3. How to build Docker Image? `docker image build` これまで Docker

    Image をビルドすると いえば、これ BuildKit, kaniko, Buildah, ... " 次世代 Docker ビルドツール" は たくさんある 特に BuildKit の勢いがある Bazel 今⽇紹介するのはこれ
  4. What is Bazel? Fast 並列ビルドと キャッシュによる差分ビルドで速い リモートキャッシュにも対応 Correct ツールのバージョン固定や sandbox

    化された環境でのビルドにより ワークスペースを汚染せず 再現性の⾼いビルドを⾏う Multi-language Docker に限らず 様々な⾔語・プラットフォームに対応 C++, Java, Python, Swift, Kotlin, Go, Rust, Scala, TypeScript, etc. Extensible Starlark という Python のサブセット⾔語で 拡張可能 WORKSPACE, BUILD(.bazel) といった ファイルを配置する
  5. How good is Bazel for Docker? Docker Image Optimization デフォルトで

    distoless を ベースイメージとし イメージサイズを ⾃動で最⼩化する ↓ テンプレート的な Dockerfile の数を 減らせる All in Bazel Build, Push, Pull に Docker を利⽤せず すべてが Bazel で 完結する
  6. bazelbuild/rules_docker HANDLE DOCKER Bazel ファイルに記述するだけで 利⽤可能 BUILD / PUSH /

    PULL Bazel だけで Docker Image の Build, Push, Pull が出来る SUPPORT LANGUAGES go_image, py_image など 各⾔語⽤の `lang_image` が⽤意されている https://github.com/bazelbuild/rules_docker