edy hub

プログラミングやライフスタイルについて書き綴っています

docker-compose upしたときに「A server is already running.」でサーバーが立ち上がらない問題

何が起きたか?

すでに動いているプロセスの影響でサーバの立ち上げがうまくいかない。

A server is already running. Check /myapp/tmp/pids/server.pid.

f:id:yuki-eda0629:20190609201411p:plain

解決方法

docker-compose up --buildする前にプロセスを消すようにした。

$ rm -f tmp/pids/server.pid

としてから、

$ docker-compose up --build を実行する。

補足

毎回プロセスを消すコマンドを打つのは面倒だし、忘れがちなのでdocker-compose.yml内に実行処理を書いておく。

rails serverの直前に実行したいので、下記のように記述した。

ポイントは、commandで複数実行することになるので、bash -cに変更したこと。

command: rails s -b 0.0.0.0 -p 3000 # 変更前
command: bash -c "rm -f tmp/pids/server.pid && rails s -b 0.0.0.0 -p 3000" # 変更後