#今回の問題
今回はただ今Docker初心者の私がとても悩んだ問題です。
正直、メンターさんと一緒に考えてもなかなか答えが見えなかった問題でした。
調べても調べてもなかなか出てこなくてものすごく大変でした。
やっと解決したので、今後のためにも残しておこうと思います。
#使用環境
・Ruby(2.5.7)
・Ruby on Rails (6.1.3.2)
・Docker (20.10.7)
・MySQL (5.7)
#問題点
上のスクリーンショットを見ていただくと、本来スクリーンショット最下部「Use Ctrl-C to stop」以下にRailsのログ情報が本来出力されるはずなのですが、Railsを起動して画面読み込みをしても何もログが出力されていません。(動作自体は正常にしています。)
$ docker-compose up -d
$ docker attach onsen_app_1
で起動したコンテナに接続してもRailsのログは出力されませんでした。
Docker化する以前は問題なくRailsログがターミナルに出力されていたので、Docker化した際の設定に原因があるかと思いましたが、調査してもどこが引っかかっているのかわかりませんでした。
#解決方法
結論を先に言うと、今回の原因は「config/environments/development.rb」にある記述を追加すれば正常に動くことができました。
Rails.application.configure do
# ...
config.logger = Logger.new(STDOUT)
# ...
end
上記に書いた「config.logger = Logger.new(STDOUT)」と言うのを「config/environments/development.rb」に追加すれば、正常に動くようになりました。
ちなみに「rails STDOUT not working docker」で検索したらようやくヒットしました。
#最後に
Dockerはまだまだ初心者ゆえに大変な作業でした。
これからもDockerにはお世話になると思うので、勉強は怠らずに励んでいきたいですね。
変なまとまりになりましたが、以上で終了です。
見て頂きありがとうございました。
参考サイトです。
https://blog.eq8.eu/til/ruby-logs-and-puts-not-shown-in-docker-container-logs.html