#はじめに
とあるDockerの教材を学習していた時に表題の通り
railsサーバが起動しなかったため備忘録として記載していますrails&Docker初心者のため間違った見解があればご指摘いただけると嬉しいです。
#結論
忙しい人のために先にどうやって解決したかを記載します
▼server.pidファイルを削除
$ rm tmp/pids/server.pid
▼削除確認されるので「yes」
$remove tmp/pids/server.pid? #yes
▼コンテナを立ち上げる
$docker-compose up -d
サーバー起動で無事解決♪
#問題
【Docker】を使ったrailsの環境構築を以下の流れで設定
$docker-compose run web rails new . --force --database=mysql
//省略//
$docker-compose build
//dockerfileからイメージをビルド//
$docker-compose up -d
//現在のディレクトリにあるdocker-compose.ymlに基づいて
コンテナを起動する//
$docker-compose run web bundle exec rake db:create
//railsで使用するデータベースをMySQLサーバ上に作成//
$rails s
//立ち上がらない...//
#状態
▼$docker-compose ps
でコンテナの起動状態を確認
$docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------------
original_db_1 docker-entrypoint.sh mysqld Up 3306/tcp, 33060/tcp
original_web_1 bundle exec rails s -p 300 Exit 1
original_web_1
のStateがExit1になっていました...
▼$docker logs original_web_1
でログを確認
$docker logs original_web_1
=> Booting Puma
=> Rails 5.0.7.2 application starting in development on http://0.0.0.0:3000
=> Run `rails server -h` for more startup options
A server is already running. Check /app/tmp/pids/server.pid.
Exiting
サーバはすでに立ち上がっていて
Check /app/tmp/pids/server.pid.
を確認してくれーと言われています
###server.pid とは
WEB開発サーバを起動するときに書き込まれ、停止すると削除されるファイルみたいです。
server.pid に pid が書かれていると開発用WEBサーバが起動中と判断されてしまいます。
今回はこのserver.pidが書き込まれている状態のため、railsサーバーが起動しなかったんですね〜
#解決策
ということで
$ rm tmp/pids/server.pid
でserver.pidファイルを削除で無事解決しました♪