はい、こんばんは。
先日docker-composeを利用してrailsをインストールしました。本日再び起動しようと思い、docker-compose up -d で起動したのですが、http://localhost:3000/ に繋がりませんでした。問題解決しましたので、共有します。
発生したエラー
docker-compose up -d でサーバーを起動しても、http://localhost:3000/ にアクセスできない。
試したこと
コンテナを壊して、再度up
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose ps #コンテナ一覧表示
Name Command State Ports
-----------------------------------------------------------------------
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose down #コンテナを削除
Stopping railsproject_db_1 ... done
Removing railsproject_web_1 ... done
Removing railsproject_web_run_1ec7e9608bad ... done
Removing railsproject_web_run_1bc7a2d57a8a ... done
Removing railsproject_db_1 ... done
Removing network railsproject_default
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose up -d #コンテナ作成
Creating network "railsproject_default" with the default driver
Creating volume "railsproject_pgdatavol" with default driver
Creating railsproject_db_1 ... done
Creating railsproject_web_1 ... done
Name Command State Ports
-----------------------------------------------------------------------
railsproject_db_1 docker-entrypoint.sh postgres Up 5432/tcp
railsproject_web_1 bundle exec rails s -p 300 ... Exit 1
上記でコンテナを再作成しましたが、railsproject_web_1 bundle exec rails s -p 300 … Exit 1 となっています。これは、rails sをのコマンドを実行している部分が起動していないことを表しています。なぜだ・・・・ということで、とりあえずもう一度データベースとテーブルを作成して見ます。
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose run web bin/rails db:create
Starting railsproject_db_1 ... done
Created database 'myapp_development'
Created database 'myapp_test'
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose run web bin/rails db:migrate
Starting railsproject_db_1 ... done
== 20190501094614 CreateUsers: migrating ======================================
-- create_table(:users)
-> 0.0055s
== 20190501094614 CreateUsers: migrated (0.0059s) =============================
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------
railsproject_db_1 docker-entrypoint.sh postgres Up 5432/tcp
railsproject_web_1 bundle exec rails s -p 300 ... Exit 1
データベースとテーブルを作成しましたが、まだ起動していないままです。
startとstopをしてみる。
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose stop
Stopping railsproject_db_1 ... done
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose ps
Name Command State Ports
--------------------------------------------------------------------
railsproject_db_1 docker-entrypoint.sh postgres Exit 0
railsproject_web_1 bundle exec rails s -p 300 ... Exit 1
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose start
Starting db ... done
Starting web ... done
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose ps
Name Command State Ports
-----------------------------------------------------------------------
railsproject_db_1 docker-entrypoint.sh postgres Up 5432/tcp
railsproject_web_1 bundle exec rails s -p 300 ... Exit 1
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$
まだEXITのままです。
logを確認する
ここで初めてログを確認しました。
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose logs #ログの出力
Attaching to railsproject_web_1, railsproject_db_1
web_1 | A server is already running. Check /myapp/tmp/pids/server.pid. ←ここを確認する必要がある
web_1 | => Booting Puma
web_1 | => Rails 5.0.7.2 application starting in development on http://0.0.0.0:3000
web_1 | => Run `rails server -h` for more startup options
web_1 | Exiting
はい、どうやら/自分で指定したapp名/tmp/pids/server.pid.を確認しろとあります。
どうやらserver.pidに情報が保持されたまま強制終了されているので、pidを削除してあげる必要があるとのことです。
ということで、
$ rm tmp/pids/server.pid
で削除し、
$ docker-compose up -d
で再度確認します。
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$ docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------
railsproject_db_1 docker-entrypoint.sh postgres Up 5432/tcp
railsproject_web_1 bundle exec rails s -p 300 ... Up 0.0.0.0:3000->3000/tcp
xxxxxxxxxxxxxnoMacBook-puro:railsproject yyyyyy$
上記を確認すると、StateがUpとなっているので、無事起動できているようです。
Dockerを使いたての人ならハマりやすいエラーだと思いますので、ぜひ参考にしていただければと思います。
それでは。
コメント