😇
Rails x Dockerで出るA server is already running を消す
久しぶりに色々触ってて忘れてる、勉強し続けないとやばみ。
はじめに
Dockerを使ってRailsサーバを立ち上げている。
何らかの原因で、Railsサーバが落ちて、server.pidが残ったまま停止してしまった。
その状態から docker compose up -dとかしても
すでに tmp/server.pidがあるから起動できませんとか言われたので。
エラー
=> Booting Puma
=> Rails 7.1.6 application starting in development
=> Run `bin/rails server --help` for more startup options
A server is already running (pid: 1, file: /app/tmp/pids/server.pid).
Exiting
対処法
DockerfileのCMDで消す。
CMD ["sh", "-c", "rm -f /app/tmp/pids/server.pid && bundle exec rails server -b 0.0.0.0 -p あなたのport番号"]
ちなみに&&や パイプを使いたい場合は sh -c経由で行う必要あり。
ちなみに上の前は以下だった。
CMD ["bundle", "exec", "rails", "server", "-b", "0.0.0.0", "-p", "あなたのポート番号"]
Discussion