投稿者:Sone

Tech

RubyMineでdocker-composeするときにpidファイルを華麗に消す方法

blog-details

こんにちは🌞

コラビットのソネです。

 

弊社ではRailsの開発環境として、多くのメンバーがRubyMineを使っています。

ぼくはどうもIDEが苦手でずっとEmacsを使っていたんですが、コラビットに入りRailsを触るにあたってRubyMineを使い始めたところ、すんなり使えてとても便利なIDEだなと思っています。

RailsやるならRubyMine!おすすめです!

 

そんななか最近エンジニアメンバーも増えてきたのもあり、環境構築をよりスムーズにということでdockerを利用し始めました。

その際、RubyMine上でdocker(docker-compose)を動かすのにちょっとハマった&解決策が世になかったのでブログにしておきます。

基本設定

RubyMineでdocker-composeを起動する方法はこちら

リモートインタプリタとしてのDocker Composeの使用

pidファイルが消えない…

Railsサーバのコンテナを落とすと、どうやらpidファイルが残ってしまうようです。

A server is already running. Check /opt/project/tmp/pids/server.pid.

正常終了というのか、ちゃんとRailsサーバを落としてからコンテナを落とす、という順序を踏めるのが一番綺麗なのですが、ググってみると皆さん次回起動時にpidファイルを消している模様。

こんな感じです。

command: /bin/sh -c "rm -f /myapp/tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"

ここで厄介なのが、RubyMineの場合docker-compose.override.*.ymlなる設定ファイルが勝手にでき、設定が上書きされて起動します。

この設定ファイルの中にはcommandの項目もあるので、上記のように起動時にrmする技が効きません…

起動時にpidファイルを消すには

Run > Edit Configurations で起動の設定を変えます。

「Ruby arguments」の項目に下記内容を設定してください。

-v && rm /opt/project/tmp/pids/server.pid && /usr/local/bin/ruby

こうすることで無理やりrmコマンドを動作させることができます!!

SQLインジェクションライクでくそダサいですが、これくらいしかできませんでした笑

override.ymlの内容を変えることがRubyMine上からできればいいのですが見当たらず…

ちなみに、画像のようにポートなどを設定するとoverrideのcommandに載って、上書きされて起動します(この辺はいい)。

以上、RubyMineでdocker-composeするときにpidファイルを泥臭く消す方法でした!