docker-compose.yml が面倒くさい。
docker-compose は良く出来てるんだけど、環境変数だとか環境設定がめんどくさくないですか?
dockerfile から docker-compose.yml に進化して相当使いやすくなってるのはわかるんですね。
でも不便なものは不便。
コメントとか変数とか書きたい。
yml syntax チェックとかかしたい。
erb で変換することにしたら楽だった。
$ erb docker-compose.erb.yml | ruby -ryaml -e 'puts YAML.dump(YAML.load(ARGF.read()))' > docker-compose.yml
erb 変換して、その結果をruby の YAML に流し込んで整形することにした。 結構複雑なコメントとか書けるようになって嬉しかった。
makefile も併せて作った。
- erb → yml に変換する
- yml → docker 起動
この辺のワークフローをmakefile で作った。
name=php-apache-mysql
registry=takuya.registory.example.com/takuya/docker/$(name)
conf=docker-compose.yml
project-name=my$(name)
compose=docker-compose
cmd=$(compose) -f $(conf) --project-name $(project-name)
docker-compose.yml: docker-compose.erb.yml
erb docker-compose.erb.yml | ruby -ryaml -e 'puts YAML.dump(YAML.load(ARGF.read()))' > $(conf)
.PHONY: all build run up down registory push clean
all: build
build: docker-compose.yml
$(cmd) build
run: build
$(cmd) up
up: build
$(cmd) up -d
down:
$(cmd) down
kill-all:
$(cmd) down
registry:
@docker build -t $(registry) .
push: registry
@docker push $(registry)
clean:
-rm $(conf)
makefile 楽だわ。
gulp とかこういうビルドシステムは数あるけど、シンプルにやりたいことがぱぱっと出来るので 古き良きツールもまだまだ見捨てたらかわいそうだなって思った的な。