Dockerの開発環境でbinding.pryを使う

こんにちは!kossyです!




さて、今回はDockerでデバッグツールであるpryを使う方法についてブログに残してみたいと思います。





環境
Docker 19.03.12
docker-compose 1.26.2
Docker Desktop for Mac 2.3.0.4

Ruby 2.6.3
Rails 6.0.3



手順

予めDockerで開発環境が立ち上がっていて、pryを導入済みの想定で話を進めます。

ttyとstdin_openをtrueにする


docker-compose.ymlに以下の記述があるのが第一条件です。

version: '3'
services:
  web:
  # 省略
    tty: true <=
    stdin_open: true <=

tty: true はコンテナ起動後にコンテナがすぐに終了してしまうのを防ぐために記述してます。
stdin_open: true は、コンテナの標準入力をオープンしたままにすることができます。

上記の記述がdocker-compose.ymlファイル内になければ、追加するようにしてください。

docker attachコマンドでコンテナにアタッチする。

docker attachコマンドを使ってアタッチした状態で、binding.pry記述箇所を呼び出すと、
いつものpryの画面になってくれます。


// 実行中のコンテナIDを調べる

$ docker ps

// 調べたIDにアタッチする

$ docker attach CONTAINER_ID

アタッチしたコンテナから抜ける


ctrl + P または ctrl + Q でアタッチしたコンテナから抜けられます。




勉強になりました。



参考にさせていただいたサイト
docker上でbinding.pryを実行する - Qiita
Dockerでbinding.pryをする - haayaaa’s diary
【Rails】Docker環境下でbinding.pryを使えないとき確認すべきポイント4つ - Qiita