LoginSignup
11
13

More than 5 years have passed since last update.

docker-assemblerというものを作った

Last updated at Posted at 2014-07-06

先日はDocker meetupでLTをさせていただきましたが、そのLTのために作った小さなツールを紹介します。
ちなみにスライドはこちら。
https://speakerdeck.com/ymatsuwitter/docker-flow-at-gunosy

docker-assemblerとは

docker-assembler

簡単にいうと複数のDockerfileを組み合わせて一つのDockerfileをビルドするためのツールです。

幾つものDockerfileを作っていると、例えばどのイメージにも似たようなパッケージ(nginxなりtd-agentなり)をインストールする場面に出くわします。
ChefやAnsibleなどであればレシピ単位などで分割することで再利用を測りますが、(自分の知る限り)現状のDockerfileではinclude構文が存在しません。

※一応議論としては存在するようです。
please add INCLUDE to dockerfile build so we can build more complex images #735

今回のツールはDockerfileのFROM部分をビルド時に上書きすることでとりあえず細かい単位でのビルドとそれを組み合わせたイメージを生成するものになります。

使い方

install

@deeeetさんのcli-initを利用していますのでとりあえずgo getしてください。

$ go get github.com/y-matsuwitter/docker-assembler

初期化

$ docker-assembler create <your project name>

これで指定した名前のディレクトリが生成されその中にビルドなどに用いる設定ファイルが設置されます。

Dockerfileの追加

$ cd <your project dir>
$ docker-assembler add <sub dockerfile name>

上記で指定した名前のディレクトリがプロジェクト内に生成され、Dockerfileの雛形が設置されます。
こちらは普段通りのDockerfileとして書いていただければ問題ありません。また、ADDなどで必要なファイル群はそのDockerfileと同じサブディレクトリ内に設置してください。

ビルド

$ cd <your project dir>
$ docker-assembler build <image name> <sub dockerfile names>...

上記で、指定したサブディレクトリ内のDockerfileを順次つなげてビルドし、image nameで指定したイメージが生成されます。

最後に

一晩で適当に作ったツールなので問題だらけかと思われます。
適宜Issueを発行してもらえれば改善いたしますのでよろしくお願い致します。

11
13
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
11
13