こんにちは、クラウド経費・クラウド債務支払でバックエンドエンジニアをしている@いいねです。
Docker Composeを使ってRailsの開発環境を準備することはよくあると思いますが、以下のように、docker-compose.ymlで複数のRailsアプリを管理したいことがあります。
docker-compose.yml
version: '3.8' services: web: image: my-web-app:latest ports: - "80:80" command: bundle exec rails s -p 80 -b '0.0.0.0' api: image: my-api-server:latest ports: - "3000:3000" command: bundle exec rails s -p 3000 -b '0.0.0.0'
RubyMineで開発を行う際に、このような複数のServiceに対応した実行設定を作成することができます。
解説
1. RubyMineにServiceごとのRemote Interpreterを作成する
参考: Ruby インタープリターを構成する | IntelliJ IDEA ドキュメント
Settings | Languages & Frameworks | Ruby SDK and Gemsを開き、+ボタンを押し、Remote Interpreter or Version Manager...を選択します。

Docker Composeを選択し、Serviceに応じた設定を入力してOKを押してRubyのRemote Interpreter設定を作成します。

同様の手順をもう一つのServiceでも行います。

それぞれのServiceに対応したRubyのRemote Interpreter設定を作成したら、Edit NameにてそれぞれのRemote Interpreterに分かりやすく名前をつけておきましょう。

2. RubyMineにServiceごとのRailsの実行設定を作成する
Run | Edit ConfigurationsよりRun/Debug Configrationsを開き、+ボタンを押し、Railsを選択します。

Ruby SDKに、Use other SDKを選択、1の手順で作成したRemote Interpreterを設定し、OKを押して実行設定を登録します。
IP addressとPortについてはdocker-compose.ymlで設定しているため、空で登録しています。

同様の手順をもう一つのRemote Interpreterでも行います。

3. 作成した実行設定を使ってRailsアプリを起動する
2で作成した実行設定を実行すると、1で選択したServiceを指定した状態でdocker compose upが行われます。


もう一つの実行設定で実行すると、そちらも選択したServiceを指定した状態でdocker compose upが行われます。


これでDocker Composeで複数のRailsのServiceを管理している場合でも、それぞれ実行設定を作成することができました🎉
おわりに
最近自分もはまってしまった部分だったため、備忘録も兼ねてこのように紹介させていただきました。 RubyMineで開発をしているエンジニアの助けになると幸いです。
宣伝
私の所属するマネーフォワード福岡開発拠点ではエンジニアを募集しています。
↓ 求人情報はこちら ↓
福岡拠点のサイトもぜひご覧ください🐈