質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.46%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

1回答

1678閲覧

これは、docker-compose.ymlでのドキュメントに無い機能でしょうか?

baban

総合スコア19

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2021/09/18 13:13

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-'

どこかにドキュメントがあって、隠し機能になっていないなら、使って行こうかと考えています。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

Extension fields????Added in version 3.4 file format.

まず最初に、本家のドキュメントを調べで出てきた方法で、common.ymlなどの他のファイルに設定を切り分けることができのを見つけました。

質問の一番下に書いた例と併せて.envでも使うのが良いんじゃないかと思いますが、思想次第ですね

投稿2021/09/18 13:29

hentaiman

総合スコア6426

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.46%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問