😇

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