RubyMineでdocker-composeするときにpidファイルを華麗に消す方法
こんにちは🌞
コラビットのソネ(@_kok____)です。
弊社では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ファイルを泥臭く消す方法でした!