読者です 読者をやめる 読者になる 読者になる

がべーじこれくしょん

技術系とかいろいろ

Rails with docker-composeで"A server is already running."と出る問題

docker-composeで、dbwebの切り分け運用している方は多いらしい。(僕は長いことvagrantだったのでよくわかりません)

友人のプロジェクトを手伝っているときに、docker-compose upwebが立ち上がらないことがあったのでメモ。

問題の概要

docker-compose upとすると、A server is already running.というエラーが発生し、webコンテナが正常に起動してくれない。

原因

これは、何かしらの要因によって、前回のプロセスが正常に終了しなかった場合に発生すると考えられます。

docker-composeは、実行プロセスのPIDを<project_dir>/tmp/pids/server.pidに書き込み、終了時に削除するという方法をとっています。

docker-composeは、コンテナを立ち上げる際、まずこのファイルを見に行った上で、実行中のプロセスを確認します。

そのため、何かしらの要因でこのserver.pidが削除されず残ってしまった場合、docker-composeはこれを実行中とみなしてしまいます。

対処法

諸悪の根源であるserver.pidを葬り去りましょう。

$ rm <project_dir>/tmp/pids/server.pid

PIDがわかる場合は、server.pidの中で該当するPIDを削除するだけで大丈夫です。