質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

Q&A

解決済

2回答

9523閲覧

dockerで起動したサーバーにlocalhost:3000でアクセスしようとするが「このページは動作していません。」と返ってくる

dadan_dan

総合スコア18

docker-compose

docker-composeとは、複数のコンテナで構成されるサービスを提供する手順を自動的し管理を簡単にするツール。composeファイルを使用しコマンド1回で設定した全サービスを作成・起動することが可能です。

Ruby on Rails 5

Ruby on Rails 5は、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

MySQL

MySQL(マイエスキューエル)は、TCX DataKonsultAB社などが開発するRDBMS(リレーショナルデータベースの管理システム)です。世界で最も人気の高いシステムで、オープンソースで開発されています。MySQLデータベースサーバは、高速性と信頼性があり、Linux、UNIX、Windowsなどの複数のプラットフォームで動作することができます。

Ruby on Rails

Ruby on Railsは、オープンソースのWebアプリケーションフレームワークです。「同じことを繰り返さない」というRailsの基本理念のもと、他のフレームワークより少ないコードで簡単に開発できるよう設計されています。

Docker

Dockerは、Docker社が開発したオープンソースのコンテナー管理ソフトウェアの1つです

0グッド

0クリップ

投稿2020/07/07 05:56

編集2020/07/07 09:47

###環境
・MAC OS
・Rails5.2.2
・Ruby2.5.3
・MySQL5.7

前提・実現したいこと

dockerでrails+mysqlの環境構築を行っています。

このページを参考に"$ docker-compose run web rails db:create"でDBを作成するところまではできたのですが、ブラウザ(Google Chrome)でアクセスしようとすると「このページは動作していません。」と返ってきます。

###フォルダ構成

hello_App ---- Dockerfile |-- Gemfile |-- Gemfile.lock |-- README.md |-- Rakefile |-- app |-- bin |-- config ---- application.rb | |-- boot.rb | |-- cable.yml | |-- credentials.yml.enc | |-- database.yml | |-- environment.rb | |-- environments | |-- initializers | |-- locales | |-- master.key | |-- puma.rb | |-- routes.rb | |-- spring.rb | |-- storage.yml | |-- config.ru |-- db |-- docker-compose.yml |-- lib |-- log |-- package.json |-- public |-- storage |-- test |-- tmp |-- vendor

###docker-compose.yml

version: '3' services: db: image: mysql:5.7 environment: environment: RAILS_ENV: development DATABASE_URL: mysql2 MYSQL_ROOT_PASSWORD: password MYSQL_DATABASE: root ports: - "3306:3306" web: build: . command: rails s -p 3000 -b '0.0.0.0' volumes: - .:/app_name ports: - "3000:3000" links: - db

###Dockerfile

FROM ruby:2.5.3 RUN apt-get update -qq && \ apt-get install -y build-essential \ libpq-dev \ nodejs RUN mkdir /app_name ENV APP_ROOT /app_name WORKDIR $APP_ROOT ADD ./Gemfile $APP_ROOT/Gemfile ADD ./Gemfile.lock $APP_ROOT/Gemfile.lock RUN bundle install ADD . $APP_ROOT EXPOSE 3000

試したこと

・Webサーバーが起動しているか確認

docker exec -it コンテナ名 bash

でコンテナ内に入り

curl http://localhost:3000/

とするとHTMLが返ってくるのでコンテナ内のサーバーは動いているようです。

何か他に考えられる問題点等あればぜひ教えて頂きたいです。よろしくお願いします。

###追記
chromeでlocalhost:3000にアクセスしたところ、このようなエラーが出ました。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

t_obara

2020/07/07 09:34

具体的にどのようにブラウザでアクセスしようとしたのかを追記してください。
dadan_dan

2020/07/07 10:44

追記させて頂きました。ご指摘してくださり大変助かりました。ありがとうございます。
guest

回答2

0

自己解決

esetのファイアウォールでlocalhost:3000の通信を許可したらできました。

投稿2020/07/07 12:14

dadan_dan

総合スコア18

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

元の回答

このような場合は web コンテナのプロセスが実行している
rails s -p 3000 -b '0.0.0.0' のログを
次のコマンドで確認して原因を探します:

console

1docker logs web

追記

上記を実行してみた結果、このようなログが出てきました。
一通り読んでみたのですが、自分では問題点を見つけることがまだできていません。

console

1=> Booting Puma 2=> Rails 5.2.4.3 application starting in development 3=> Run `rails server -h` for more startup options 4Puma starting in single mode... 5* Version 3.12.6 (ruby 2.5.3-p105), codename: Llamas in Pajamas 6* Min threads: 5, max threads: 5 7* Environment: development 8* Listening on tcp://0.0.0.0:3000 9Use Ctrl-C to stop 10Started GET "/" for 127.0.0.1 at 2020-07-07 05:26:17 +0000 11(1.1ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 12↳ /usr/local/bundle/gems/activerecord-5.2.4.3/lib/active_record/log_subscriber.rb:98 13Processing by Rails::WelcomeController#index as */* 14Rendering /usr/local/bundle/gems/railties-5.2.4.3/lib/rails/templates/rails/welcome/index.html.erb 15Rendered /usr/local/bundle/gems/railties-5.2.4.3/lib/rails/templates/rails/welcome/index.html.erb (3.0ms) 16Completed 200 OK in 32ms (Views: 15.8ms | ActiveRecord: 0.0ms)

上記のログは、エラーが表示されていません

1

  • ブラウザからアクセス
  • web コンテナ内から curl コマンドでアクセス

再度、docker logs web コマンドで、上記の 2 通りの方法のアクセスで
それぞれ rails server のログが増えることを確認します

注: web コンテナにアクセスするとき、port 番号は半角で指定します:

可否URL
xhttp://localhost:3000/
ohttp://localhost:3000/

2
増えたログのみを確認します
エラーが出力されていれば、その原因を調べます

もしログが増えなければ、
そもそもブラウザから web コンテナの 3000 ポートまで
リクエストが到達していないことになります

その場合は、ブラウザを変えてみたり、ブラウザの外から curl を実行してみたりして
原因の切り分けを行います

投稿2020/07/07 06:07

編集2020/07/07 07:19
y_shinoda

総合スコア3272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

dadan_dan

2020/07/07 06:53

コメント頂きありがとうございます。 上記を実行してみた結果、このようなログが出てきました。 => Booting Puma => Rails 5.2.4.3 application starting in development => Run `rails server -h` for more startup options Puma starting in single mode... * Version 3.12.6 (ruby 2.5.3-p105), codename: Llamas in Pajamas * Min threads: 5, max threads: 5 * Environment: development * Listening on tcp://0.0.0.0:3000 Use Ctrl-C to stop Started GET "/" for 127.0.0.1 at 2020-07-07 05:26:17 +0000 (1.1ms) SET NAMES utf8, @@SESSION.sql_mode = CONCAT(CONCAT(@@sql_mode, ',STRICT_ALL_TABLES'), ',NO_AUTO_VALUE_ON_ZERO'), @@SESSION.sql_auto_is_null = 0, @@SESSION.wait_timeout = 2147483 ↳ /usr/local/bundle/gems/activerecord-5.2.4.3/lib/active_record/log_subscriber.rb:98 Processing by Rails::WelcomeController#index as */* Rendering /usr/local/bundle/gems/railties-5.2.4.3/lib/rails/templates/rails/welcome/index.html.erb Rendered /usr/local/bundle/gems/railties-5.2.4.3/lib/rails/templates/rails/welcome/index.html.erb (3.0ms) Completed 200 OK in 32ms (Views: 15.8ms | ActiveRecord: 0.0ms) 一通り読んでみたのですが、自分では問題点を見つけることがまだできていません。もし何かお気づきになりましたら教えて頂けると幸いです。よろしくお願いします。
dadan_dan

2020/07/07 08:25 編集

返事を下さってありがとうございます。 アドバイス通り2通りの方法でアクセスした後もう一度ログを確認したところログは増えていませんでした。 そこでsafariからもアクセスしてみたのですが、こちらもchrome同様にアクセスできませんでした。 次に $ curl 'http://localhost:3000/' を実行すると curl: (52) Empty reply from server と返ってきました。似た事例がないか調べてみたところ、こちらのページ(https://qiita.com/amuyikam/items/01a8c16e3ddbcc734a46)を見つけたので、これを参考にホストマシンのlocalhostを調べた結果、以下のようになりました。 $ cat /etc/hosts | grep 'localhost' # localhost is used to configure the loopback interface 127.0.0.1 localhost ::1 localhost このあたりに何かしらのエラーの原因があるのではないかと思うのですが、私自身この辺りの知識の理解が浅いためこの先どうすれば良いかわかりません。 何度も聞いてしまい大変申し訳ないのですが、もし何かお気づきになった点などありましたら教えて頂けないでしょうか。よろしくお願い致します。
y_shinoda

2020/07/07 08:44

コンテナ内から curl でアクセスしたとき、HTML が返ってくるとすれば、 その場合はログは増えているのではないでしょうか? また、そのときの HTML の内容は何を表示するための内容でしょうか?
dadan_dan

2020/07/07 09:00

再度curlで実行してログをみたところ、同じ内容のログがもう一つ増えていました。その後、もう一度ブラウザからアクセスしてログを表示させてみましたが、こちらのログは追加されていませんでした。 htmlの内容ですが、localhost:3000にブラウザからアクセスした時に表示される(はずの)you're on rails!の画面のようです。
y_shinoda

2020/07/07 09:19

ということは、少なくとも web コンテナは今も正常に動作していますね ホスト側でブラウザを使い、 http://127.0.0.1:3000/ にアクセスするとどうでしょう? この場合は /etc/hosts の設定に影響を受けないと思われます
dadan_dan

2020/07/07 09:46

ホスト側でブラウザを使うとは、具体的にどのようなことをすれば良いのでしょうか。初歩的な質問で大変申し訳ないのですが、教えて頂きたいです。
y_shinoda

2020/07/07 09:56

Docker の話題で「ホスト」という表現が出てきたら、 「Docker でコンテナを実行しているコンピューター」という意味です
y_shinoda

2020/07/07 10:12

今、Docker を動かしている MAC から Chrome か Safari で http://127.0.0.1:3000/ にアクセスするとどうなるでしょうか?
dadan_dan

2020/07/07 10:42

ご丁寧に教えて頂き本当にありがとうございます。試してみましたが、どちらとも「このページは動作していません。」と返ってきました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問