【Docker】【Rails】MySQL8.0にしたらログが出力されなくなったので解決した話

以前自分はMySQL5.7のイメージを使ってdbコンテナを立ち上げて、開発してました。

その時は

```
docker-compose up
```
を実行したら

rails sみたいな

```
eb_1              | Started GET "/" for 172.20.0.1 at 2021-06-12 13:36:48 +0000
web_1              | Cannot render console from 172.20.0.1! Allowed networks: 127.0.0.0/127.255.255.255, ::1
web_1              | Processing by DrinksController#index as HTML
web_1              |   User Load (0.4ms)  SELECT `users`.* FROM `users` WHERE `users`.`id` = 7 LIMIT 1
web_1              |   ↳ app/helpers/sessions_helper.rb:52:in `current_user'
web_1              |    (0.6ms)  SELECT COUNT(*) FROM `drinks` WHERE `drinks`.`user_id` != 6 AND (user_id IN (SELECT followed_id FROM relationships WHERE follower_id = 7) OR user_id = 7)
web_1              |   ↳ app/controllers/drinks_controller.rb:14:in `index'
web_1              | 
web_1              | From: /coffee_passport/app/controllers/drinks_controller.rb:25 DrinksController#index:
```

こんな感じのログが出てくれました。

ある日、本番環境がMySQL8系なので、
開発環境もMySQL8.0に統一した方がバグもすくなるなると考えて

```docker-compose.yml

version: '3'
services:
  db:
    image: mysql:8.0.21
    cap_add:
     - SYS_NICE
      # コンテナにLinux機能を追加するオプションのようです。SYS_NICEは、プロセスの優先度(nice値)をあげます。
    environment:
      MYSQL_ROOT_PASSWORD: ${MYSQL_ROOT_PASSWORD}
      MYSQL_HOST: db
    ports:
      - '3306:3306'
    volumes:
      - mysql-data:/var/lib/mysql
    command: --default-authentication-plugin=mysql_native_password # 認証方式を8系以前のものにする
```

　このように書き換えて再度ビルドし

```
docker-compose up
```

を実行すると

rails sみたいなログが出力されなくなってしまいました。

これはかなり不便なので色々調べると
googleの3ページ目に
http://hotatekun.hatenablog.com/entry/2021/04/04/224001
こんな感じの記事がありました。

```puma.rb

# workers ENV.fetch("WEB_CONCURRENCY") { 2 }

# Use the `preload_app!` method when specifying a `workers` number.
# This directive tells Puma to first boot the application and load code
# before forking the application. This takes advantage of Copy On Write
# process behavior so workers use less memory.
#
# preload_app!

# Allow puma to be restarted by `rails restart` command.
plugin :tmp_restart

app_root = File.expand_path("../..", __FILE__)
bind "unix://#{app_root}/tmp/sockets/puma.sock"

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

```

どうしてpuma.rbをこのように編集したか覚えてないのですが、

```puma.rb

# 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
# puma.rbで、標準出力が log/puma.stdout.log にリダイレクトされていたのが原因だった。
# 開発環境ではファイルにリダイレクトしない形にしたらコンソールが表示されるようになった。

```


と変更することで

```
docker-compose up
```
を実行したら
ターミナルにrails sみたいなログが出力されるようになりました。

```
docker-compose up -d
```

が主流？みたいですが皆様は普段どんな感じでログを見てるか気になるところです。

binding.pryで処理は止まって

```
web_1              |     17:                  .includes(:user))
web_1              |     18: 
web_1              |     19:   @title = 'Timeline'
web_1              |     20: 
web_1              |     21:   @selected = 'Selected'
web_1              |     22: 
web_1              |     23:   @random_drinks = Drink.order('RAND()').limit(5)
web_1              |     24: 
web_1              |  => 25:   binding.pry
web_1              |     26:   
web_1              |     27: end
```

このように表示されますが、
こっから何を入力しても反応がないので
これからまたどうやってbinding.pryをしようかちゃんと調べて記事にします。