LoginSignup
1
0

More than 1 year has passed since last update.

Dockerで構築したRailsコンテナのログが表示されない

Last updated at Posted at 2023-03-26

個人開発をしていてなかなか苦しんだので備忘録として残しておきます。

環境

Docker
Rails(APIモード):v7.0.4.2

発生した問題

  • Dockerに本来表示されるはずのログが表示されない
  • 何もログが出ないのでデバッグもできない

試したこと

  • docker-compose.ymlに以下の設定を追加
app:
    build: .
    env_file:
      - ./.env
    environment:
      - RAILS_ENV=development
    command: bash -c "rm -f tmp/pids/server.pid && bundle install && bundle exec pumactl start"
    volumes:
      - .:/app/webapp
      - ./tmp/sockets:/app/webapp/tmp/sockets
    ports:
      - 3000:3000
    tty: true #追加
    stdin_open: true #追加
    depends_on:
      - db
  • development.rbのconfig.consider_all_requests_localがtrueになっていること
  • development.logの確認→出力されていた
  • puma.stout.logの確認→出力されていた

などなど。

最初デバッグしようと思ってログが出ていないことに気づいたので、
デバッグのgemの問題かなと思ってそっち方面でも色々調べてました。

原因と解決策

puma.rbdevelopment.rbの設定の問題のようでした。
puma.rbについては、標準出力がlog/puma.stdout.logにリダイレクトしていたようです。

修正前

puma.rb
stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true

修正後

puma.rb
unless ENV.fetch("RAILS_ENV", "development") == "development"
  stdout_redirect "#{app_root}/log/puma.stdout.log", "#{app_root}/log/puma.stderr.log", true
end

あと、development.rbに以下を追加しました。

development.rb
config.logger = Logger.new(STDOUT)

設定周りはネットの記事を参考にそのままコピペしたので、
標準出力のこととか全然わかっていませんでした。

良い勉強になりました。
もっとスマートな解決方法とかあればぜひコメントいただけたらとも思います!

参考

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0