PhoenixでpryをDockerと併用して使う

久しぶりに普通の技術ネタを一つ。
今、ElixirのPhoenixを使って開発をしています。PhoenixRuby on Railsの弟分みたいな存在でRailsを使用したことある人なら学習コストが低めで開発出来ると思います。
そこでpryをdockerと併用して使う方法の説明になります。

Docker 起動

$ docker-compose run --service-ports app sh

説明するとappはPhoenixが起動しているコンテナでshコマンドでログインしています。肝となるのが--service-portsオプションでこれがないとHostのポートとマッピンが出来ません。portの設定はdocker-compose.ymlで設定してください。

Phoenix起動

$ iex -S mix phx.server

mix.exsファイルがあるディレクトリで以上のコマンドを実行することでREPLになります。 あとは、breakしたい箇所で以下のコードを実行します。

require IEx
IEx.pry()

あとは、Allow? [Yn]みたにpryに接続していいか聞かれるのでyを入力すれば止まります。

コマンドのリファレンス

IEx.Helpers