以前自分は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をしようかちゃんと調べて記事にします。