Help us understand the problem. What is going on with this article?

Rails アプリケーションを Docker を使って開発する、ほとんどの人が通る(であろう)道

More than 3 years have passed since last update.

本記事は、A server is already running の対処です。これについては記事もたくさん存在していますし何も新しいことはありません。
ただ、Rails × Docker で開発する人より多くの人に見てもらえることを目的として書きました。
Rails の A server is already running と聞いて「ああ、あれのことか」と思った方は本記事は読み飛ばしてください。


  image: postgres
  build: .
  # コンテナ立ち上げ時に開発用サーバを起動
  command: bundle exec rails s -p 3000 -b ''
    - .:/myapp
    - "3000:3000"
    - db

A server is already running.


$ docker-compose up -d
$ docker-compose ps
        Name                       Command               State     Ports
railsprojectdocker_db_1    / postgres   Up       5432/tcp
railsprojectdocker_web_1   bundle exec rails s -p 300 ...   Exit 1


$ docker-compose logs
web_1 | => Booting WEBrick
web_1 | => Rails 4.2.4 application starting in development on
web_1 | => Run `rails server -h` for more startup options
web_1 | => Ctrl-C to shutdown server
web_1 | A server is already running. Check /myapp/rails-app/tmp/pids/
web_1 | Exiting


Rails に付随しているWEBサーバが正常に終了していない。
docker-compose kill や 何かの拍子でコンテナが終了すると起きてしまいます。 に pid の情報が保持されたまま終了

pid は、開発用WEBサーバを起動するときに tmp/pids/server.pidに書き込まれ、終了するときに削除されます。 に pid が書かれていると開発用WEBサーバが起動中(プロセスがある)と判断されてしまいます。

pid の情報を削除 に書かれた pidを削除する、もしくはserver.pidを削除します。 を削除しても、rails serverを実行した時に自動で作成されます。

$ rm railsproject-ui/tmp/pids/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away