railsアプリをdockerで作成中で
rails本体と、sidekiqを立ち上げるdockerイメージの設定を共通化しようと調べています。
ちょっと質問に答えていただければ
まず最初に、本家のドキュメントを調べで出てきた方法で、common.yml
などの他のファイルに設定を切り分けることができのを見つけました。
https://docs.docker.jp/compose/extends.html
こういうふうに書けばやりたいことは実現できました。
common.yml
1version: '3' 2services: 3 # app、sidekiq共通の構築設定 4 app: 5 build: 6 context: . 7 dockerfile: dockerfiles/app/Dockerfile 8 environment: 9 DATABASE_URL: "mysql2://---" 10 REDIS_URL: "redis://redis:6379/" 11 DB_HOST: 'db' 12 DB_REPLICA_HOST: 'db'
docker
1version: '3' 2services: 3 app: 4 extends: 5 file: common.yml 6 service: app 7 command: bundle exec rails s 8 ports: 9 - 3000:3000 10 depends_on: 11 - db 12 - redis 13 sidekiq: 14 extends: 15 file: common.yml 16 service: app 17 command: bundle exec sidekiq 18 depends_on: 19 - db 20 - redis
問題はここからなんですが、x-
という接頭語をつければ、docker-compose.yml
の中でも共通の設定を書けるのを知ったのですが
これって、何処かドキュメントのあるものなんでしょうか?
例としては以下のようなものです。
docker
1version: '3' 2# ms-app、sidekiq共通の構築設定 3x-app: &app-template 4 build: 5 context: . 6 dockerfile: dockerfiles/app/Dockerfile 7 environment: 8 DATABASE_URL: "mysql2://root@db:3306/db_name 9 REDIS_URL: "redis://redis:6379/" 10 DB_HOST: 'db' 11 DB_REPLICA_HOST: 'db' 12 depends_on: 13 - db 14 - redis 15services: 16 app: 17 <<: *app-template 18 command: bundle exec rails s 19 ports: 20 - 3000:3000 21 sidekiq: 22 <<: *app-template 23 command: bundle exec sidekiq
自分はアンカー貼れないか試しに書いてみたところ、以下のメッセージが出て気づきました。
> docker-compose up -d ERROR: The Compose file './docker-compose.yml' is invalid because: 'app' does not match any of the regexes: '^x-'
どこかにドキュメントがあって、隠し機能になっていないなら、使って行こうかと考えています。
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。