docker-compose で rails s したときに "A server is already running." が出てサーバが起動できない | Appleメモログ

docker-compose で rails s したときに “A server is already running.” が出てサーバが起動できない

dockerについて学びはじめ、とりあえずdockerでrails開発できるようにしてみようといじいじしていた。
その中で、rails sしてもサーバが起動しない問題が発生した。
これを解決したので簡単にメモ。

経緯

docker-composeを使い、railsとpostgreSQLをそれぞれ立ち上げ、railsアプリの開発環境を構築しようとしていた。




version: "3"
services:
  db:
    image: postgres
    volumes:
      - ./tmp/db:/var/lib/postgresql/data
  web:
    build: .
    command: bundle exec rails s -p 3000 -b '0.0.0.0'"
    volumes:
      - .:/myapp
    ports:
      - "3000:3000"
    depends_on:
      - db

問題

docker-composeでrails sしたときに、A server is already running.と出て、サーバが起動しない。




FROM ruby:2.4.1

ENV LANG C.UTF-8
RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs

RUN mkdir /myapp
WORKDIR /myapp
ADD Gemfile /myapp/Gemfile
ADD Gemfile.lock /myapp/Gemfile.lock
RUN bundle install
COPY . /myapp  

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

原因

ログにも書いてあるが、どうやらserver.pidが原因のよう。

具体的には、docker-compose.ymlに以下のような修正を加えた。


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



これで無事、docker-compose upでサーバが起動するようになった。

シェアする

  • このエントリーをはてなブックマークに追加

フォローする