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 とかこういうビルドシステムは数あるけど、シンプルにやりたいことがぱぱっと出来るので 古き良きツールもまだまだ見捨てたらかわいそうだなって思った的な。