👌

docker-compose upした時に「A server is already running」と言われる場合の対処法

2021/07/16に公開

問題

docker-compose upした時に「A server is already running. Check /tmp/pids/server.pid」と言われることがあります。

久しぶりにコンテナを立ち上げようとした時にこのエラーが出ると少し萎えるので、対処方法を残しておきます。

原因

無理やりdockerコンテナを止めた時などにpidが残る場合があります。

自分の手順が悪いことがほとんどなので、

docker-compose down

などでしっかり停止するようにすれば発生しません。

対処法

発生してしまった場合の対処法としては、以下の2つがあります。

・docker-compose.ymlでwebサーバーの起動時にpidを削除する
・事前に手元で/tmp/pids/server.pidを削除する

command: /bin/sh -c "rm -f /tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"

最初は1つ目の方法で上記のようにしていたのですが、
正常なケースでもpidを削除する処理を書くというのはあまりよろしくないなと思い直しました。

今では当記事のエラーが出た場合は、手元で/tmp/pids/server.pidを削除してから起動するようにしています。

これで焦らずに対処できるようになりました。めでたしめでたし。

Discussion