Extension fieldsを使ってdocker-composeのコンテナ設定を共通化する
docker-composeのversion 3.4以降のフォーマットからExtension fieldsという機能が使えるようになったとのこと。
これを使うとコンテナ設定の共通化ができる。
Railsで非同期処理をする際にsidekiqのコンテナを用意したかったので、Extension fieldsを使ってRailsコンテナ設定を共通化してcommandだけそれぞれで変えるようにした。
version: "3.7"
x-app: &app
build:
context: .
dockerfile: ./docker/ruby/Dockerfile
services:
app:
<<: *app
command: ["bundle", "exec", "rails", "s", "-b", "0.0.0.0"]
sidekiq:
<<: *app
command: ["bundle", "exec", "sidekiq", "-C", "config/sidekiq.yml"]