問題
docker-compose上で、rails6.1(APIモード) + nginxの構成を作った。
binding.pryをすると、そのステップで止まっているが、docker attachしてつないでもコンソールが表示されない。
continue や exit すると先に進むので、動いてはいそうだが表示されないと不便なので調査した。
解決方法
最終的に、puma.rb
で、標準出力が log/puma.stdout.log
にリダイレクトされていたのが原因だった。
stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true
開発環境ではファイルにリダイレクトしない形にしたらコンソールが表示されるようになった。
unless ENV.fetch("RAILS_ENV", "development") == "development" stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true end
その他、設定した箇所
docker-compose.ymlに下記の2つは必要
stdin_open: true tty: true
binding.pryで止めると、60秒で500エラーになってしまう。
- これはnginx側でタイムアウトになっていたので、
proxy_read_timeout
を300秒にして回避した(本番は要調整)
また、今回は関係なかったが、下記も参考になった