多分いろんな人が書いているであろう小ネタ。
たとえば、 Dockerfile
をビルドする際に、毎度毎度、下記のようにするぐらいなら、
$ docker build -t foobar.com/foobar:1.0.0 .
下記のような docker-compose.yml
ファイルを用意しておいて、
docker-compose.yml
version: "2.4"
services:
build_foobar:
image: foobar.com/foobar:1.0.0
build:
context: ./
docker-compose build
コマンドを実行すればいいです。そのまま docker-compose push
も可能です。
$ docker-compose build
$ docker-compose push
複数個のDockerイメージをビルドするのもdocker-compose build
で一発対応できますし、サブディレクトリにDockerfileがあっても、Dockerfileの名前が異なってもへっちゃらです。
docker-compose.yml
version: "2.4"
services:
build_foobar:
image: foobar.com/foobar:1.0.0
build:
context: ./
build_barbaz:
image: foobar.com/barbaz:1.0.0
build:
context: ./subdir
dockerfile: barbaz.Dockerfile
バージョンは環境変数から与えたい?それなら、
docker-compose.yml
version: "2.4"
services:
build_foobar:
image: foobar.com/foobar:${VERSION}
build:
context: ./
build_barbaz:
image: foobar.com/barbaz:${VERSION}
build:
context: ./subdir
dockerfile: barbaz.Dockerfile
としておいて、 VERSION=0.0.1 docker-compose build
みたいにしてもいいでしょう。
$ VERSION=0.0.1 docker-compose build
Building build_foobar
Step 1/1 : FROM busybox
---> 22c2dd5ee85d
Successfully built 22c2dd5ee85d
Successfully tagged foobar.com/foobar:0.0.1
Building build_barbaz
Step 1/1 : FROM busybox
---> 22c2dd5ee85d
Successfully built 22c2dd5ee85d
Successfully tagged foobar.com/barbaz:0.0.1