Edited at

(小ネタ)docker-compose.yml をビルドに使う

More than 1 year has passed since last update.

多分いろんな人が書いているであろう小ネタ。

たとえば、 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


リンク