Google Cloud Container Builder というクラウドで docker image をビルドするためのサービスがあるのですが、 2016-10-19 現在 beta で 120分/日制限があったり、ローカルで実行できなくてイヤなので、 Build Requests (config) のフォーマットを読んで実行できるツールを作ったのでその宣伝です。
基本的には docker image とそれを docker run するときの引数を指定して、順番に実行するだけなのですが、 Build process に書いてあるように、 /var/run/docker.sock
と各ステップで共有している /workspace
を volume でマウントしてるのがキモです。
具体的にどんなことができるかというと、
- docker コマンドを含む image 実行することでコンテナ内で
docker build
できる - ビルドした image をさらに次のステップで実行することで結果だけ /workspace に取り出したりできる
- で、その結果のファイルをビルドコンテキストとして追加した小さい image をビルドできる
たとえば、
- 普通に
golang
image を base image として普通に go のバイナリを含むimage をビルドしてから go バイナリだけを取り出してfrom scratch
な image をつくる- cb 自体も golang で実装してるので、サンプルとして README でも説明してます。
- web アプリケーションのフロントエンドの javascript の bundle や transpile をした bundle.js の結果だけを取り出す
- あとは、べつに docker image を作らなくても docker run でできることはなんでもできるはず。想像力ないのでいい例が思いつかない...。
細かいことは github repo みてください。
https://github.com/hiroshi/cb