Open6
rails-next-zenn-cloneをcloneしながらメモる
$ docker-compose run hoge
no configuration file provided: not found
docker-compose.ymlを作ったのになぜ。。。と思っていたがファイル名をタイポしたためだった。
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running
「Dockerが起動してないよ」ということだったので
$ sudo service docker start
もしくはDocker Desctopでdockerを起動
Railsには
- MVCモード
- APIモード
がある。
MVCモードは
- Model:データベースとのやりとりを管理
- View:HTML、CSS、JavaScriptなどのユーザーの表示部分を管理
- Controller:ModelとViewを繋ぐ役割
今回はAPIモードで、フロントエンドをNext.jsで実装。
root@40e52924546a:/myapp# rails s -b '0.0.0.0'
=> Booting Puma
=> Rails 7.0.8.4 application starting in development
=> Run `bin/rails server --help` for more startup options
Puma starting in single mode...
* Puma version: 5.6.8 (ruby 3.1.2-p20) ("Birdie's Version")
* Min threads: 5
* Max threads: 5
* Environment: development
* PID: 46
Exiting
/usr/local/bundle/gems/puma-5.6.8/lib/puma/binder.rb:341:in `initialize': Address already in use - bind(2) for "0.0.0.0" port 3000 (Errno::EADDRINUSE)
解決する
Pumaの止め方
PumaばRailsのWebサーバー
Pumaを起動することでHTTPリクエストを扱えるようになり、Railsアプリケーションでリクエストに対する動的な処理を行えるようになる
- Pumaプロセスの確認
oot@40e52924546a:/myapp# ps aux| grep puma
root 1 0.4 1.4 912592 118380 pts/0 Ssl+ Sep04 0:02 puma 5.6.8 (tcp://0.0.0.0:3000) [myapp]
killしようと思ったがPID1問題が発生
PID 1 のプロセスは Linux カーネルに特別扱いされていて、そのプロセス自身が明示的に送信されたシグナルをハンドリングしていない場合それを無視します。コンテナの場合、アプリケーションのプロセスが PID 1 で実行されることが多い
とのこと
PID 1以外でPumaが起動するように設定した方がよさそう今はdocker restartで止めている