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

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

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

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

Q&A

解決済

2回答

1378閲覧

docker ブラウザアクセスが出来なくなった

Tatsuo_Iriyama

総合スコア50

docker-compose

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

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2019/01/07 15:41

編集2019/01/10 09:35

##現状

localhost:3000にアクセスしたらlocalhost で接続が拒否されました。というエラーが表示されています。

docker初心者ということもあり、色々調べましたが、いまいちピンと来なかった為、再構築を選択しました。
参考にした記事はこちらです。

初めて構築する時も上記の記事を参考に構築しました。

再構築手順は

1. `docker ps` で起動中のコンテナがないか確認。 2. `docker ps -a` でruby2.4とmysql5.7といくつかのnoneのコンテナを`docker rm`コマンドで削除 3. `docker images` でイメージ一覧を表示。先ほど削除したコンテナのイメージを削除 4. `rm -r project` で作成したプロジェクトを削除 5. 参考記事の「Railsアプリケーション用のディレクトリを作成」まで実行し、自身のgithubからプロジェクトをclone 6. clone後、参考記事の「コンテナにRailsアプリを作成」を実行 7. `docker-compose build` を実行 8. `docker-compose up` を実行

になります。

この手順の後、再度localhost:3000にアクセスしても状況は変わりませんでした。

docker-compose up後の状況を確認したら、

Starting web-app-sample_db_1 ... done Recreating web-app-sample_web_1 ... done Attaching to web-app-sample_db_1, web-app-sample_web_1 db_1 | 2019-01-07T14:57:34.589678Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). ・ ・ ・

DBの方でかなりエラーが発生しているので、これが原因かなと思っているところなのですが、どう対応すれば良いかわからない為、質問致します。

##質問事項

  • 上記のDBのエラーを解消する方法を教えてください
  • ブラウザアクセスする為には、DBのエラーを解消すれば解決するのでしょうか?

よろしくお願い致します。

##ログ1
docker-compose.yml

ruby

1version: '3' 2services: 3 db: 4 image: mysql:5.7 5 environment: 6 - MYSQL_ROOT_PASSWORD=password 7 web: 8 build: . 9 command: bundle exec rails s -p 3000 -b '0.0.0.0' 10 volumes: 11 - .:/web-app-sample 12 ports: 13 - "3000:3000" 14 depends_on: 15 - db 16 web: 17 image: nginx:latest 18 ports: 19 - 3000:80

##ログ2
docker-compose.ymlのソースコードが

ruby

1version: '2' 2services: 3 db: 4 image: mysql:5.7 5 environment: 6 - MYSQL_ROOT_PASSWORD=password 7 web: 8 build: . 9 command: bundle exec rails s -p 3000 -b '0.0.0.0' 10 volumes: 11 - .:/web-app-sample 12 ports: 13 - "3000:3000" 14 depends_on: 15 - db

の状態でdocker-compose exec web /bin/bashを実行したらERROR: No container found for web_1というエラーが発生。
docker psで起動中のコンテナを確認したら、mysqlのみ
なぜかwebの方が起動しない。理由不明。/bin/bashに入れないので、Logも確認できず。
ログ1のNginxのimageを記載して、再度docker-compose exec web /bin/bashを実行したら入れた。
入れたがNginxが起動しているのと、Nginxの初期画面が表示されているので、errorログは出ず、論点からもずれ

##ログ3

docker-compose up実行後のwebの状態

web_1 | bundler: failed to load command: rails (/usr/local/bundle/bin/rails) web_1 | Bundler::LockfileError: You must use Bundler 2 or greater with this lockfile. web_1 | /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/lockfile_parser.rb:108:in `warn_for_outdated_bundler_version' web_1 | /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/lockfile_parser.rb:95:in `initialize' web_1 | /usr/local/lib/ruby/gems/2.4.0/gems/bundler-1.14.6/lib/bundler/definition.rb:72:in `new' ・ ・ ・

##ログ4

Dockerfile

FROM ruby:2.4.0 ENV LANG C.UTF-8 RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs RUN gem install bundler WORKDIR /tmp ADD Gemfile Gemfile ADD Gemfile.lock Gemfile.lock RUN bundle install ENV APP_HOME /web-app-sample RUN mkdir -p $APP_HOME WORKDIR $APP_HOME ADD . $APP_HOME

##ログ5

docker-compose up

<master>tto8569:web-app-sample$ docker-compose up Starting web-app-sample_db_1 ... done Starting web-app-sample_web_1 ... done Attaching to web-app-sample_db_1, web-app-sample_web_1 db_1 | 2019-01-10T05:03:09.992503Z 0 [Warning] TIMESTAMP with implicit DEFAULT value is deprecated. Please use --explicit_defaults_for_timestamp server option (see documentation for more details). db_1 | 2019-01-10T05:03:09.993695Z 0 [Note] mysqld (mysqld 5.7.24) starting as process 1 ... db_1 | 2019-01-10T05:03:09.996189Z 0 [Note] InnoDB: PUNCH HOLE support available db_1 | 2019-01-10T05:03:09.996224Z 0 [Note] InnoDB: Mutexes and rw_locks use GCC atomic builtins db_1 | 2019-01-10T05:03:09.996231Z 0 [Note] InnoDB: Uses event mutexes db_1 | 2019-01-10T05:03:09.996237Z 0 [Note] InnoDB: GCC builtin __atomic_thread_fence() is used for memory barrier db_1 | 2019-01-10T05:03:09.996242Z 0 [Note] InnoDB: Compressed tables use zlib 1.2.11 db_1 | 2019-01-10T05:03:09.996247Z 0 [Note] InnoDB: Using Linux native AIO db_1 | 2019-01-10T05:03:09.996431Z 0 [Note] InnoDB: Number of pools: 1 db_1 | 2019-01-10T05:03:09.996511Z 0 [Note] InnoDB: Using CPU crc32 instructions db_1 | 2019-01-10T05:03:09.997929Z 0 [Note] InnoDB: Initializing buffer pool, total size = 128M, instances = 1, chunk size = 128M db_1 | 2019-01-10T05:03:10.005073Z 0 [Note] InnoDB: Completed initialization of buffer pool db_1 | 2019-01-10T05:03:10.006796Z 0 [Note] InnoDB: If the mysqld execution user is authorized, page cleaner thread priority can be changed. See the man page of setpriority(). db_1 | 2019-01-10T05:03:10.018033Z 0 [Note] InnoDB: Highest supported file format is Barracuda. db_1 | 2019-01-10T05:03:10.028264Z 0 [Note] InnoDB: Creating shared tablespace for temporary tables db_1 | 2019-01-10T05:03:10.028329Z 0 [Note] InnoDB: Setting file './ibtmp1' size to 12 MB. Physically writing the file full; Please wait ... db_1 | 2019-01-10T05:03:10.053855Z 0 [Note] InnoDB: File './ibtmp1' size is now 12 MB. db_1 | 2019-01-10T05:03:10.054645Z 0 [Note] InnoDB: 96 redo rollback segment(s) found. 96 redo rollback segment(s) are active.

##ログ6

development.log

Started GET "/" for 172.20.0.1 at 2019-01-10 09:29:06 +0000 Cannot render console from 172.20.0.1! Allowed networks: 127.0.0.1, ::1, 127.0.0.0/127.255.255.255 ActiveRecord::NoDatabaseError (Unknown database 'web-app-sample_development'): activerecord (5.2.2) lib/active_record/connection_adapters/mysql2_adapter.rb:26:in `rescue in mysql2_connection' activerecord (5.2.2) lib/active_record/connection_adapters/mysql2_adapter.rb:12:in `mysql2_connection' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:811:in `new_connection' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:855:in `checkout_new_connection' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:834:in `try_to_checkout_new_connection' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:795:in `acquire_connection' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:523:in `checkout' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection' activerecord (5.2.2) lib/active_record/connection_adapters/abstract/connection_pool.rb:1010:in `retrieve_connection' activerecord (5.2.2) lib/active_record/connection_handling.rb:118:in `retrieve_connection' activerecord (5.2.2) lib/active_record/connection_handling.rb:90:in `connection' activerecord (5.2.2) lib/active_record/migration.rb:554:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/callbacks.rb:28:in `block in call' activesupport (5.2.2) lib/active_support/callbacks.rb:98:in `run_callbacks' actionpack (5.2.2) lib/action_dispatch/middleware/callbacks.rb:26:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/debug_exceptions.rb:61:in `call' web-console (3.7.0) lib/web_console/middleware.rb:135:in `call_app' web-console (3.7.0) lib/web_console/middleware.rb:22:in `block in call' web-console (3.7.0) lib/web_console/middleware.rb:20:in `catch' web-console (3.7.0) lib/web_console/middleware.rb:20:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/show_exceptions.rb:33:in `call' railties (5.2.2) lib/rails/rack/logger.rb:38:in `call_app' railties (5.2.2) lib/rails/rack/logger.rb:26:in `block in call' activesupport (5.2.2) lib/active_support/tagged_logging.rb:71:in `block in tagged' activesupport (5.2.2) lib/active_support/tagged_logging.rb:28:in `tagged' activesupport (5.2.2) lib/active_support/tagged_logging.rb:71:in `tagged' railties (5.2.2) lib/rails/rack/logger.rb:26:in `call' sprockets-rails (3.2.1) lib/sprockets/rails/quiet_assets.rb:13:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/remote_ip.rb:81:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/request_id.rb:27:in `call' rack (2.0.6) lib/rack/method_override.rb:22:in `call' rack (2.0.6) lib/rack/runtime.rb:22:in `call' activesupport (5.2.2) lib/active_support/cache/strategy/local_cache_middleware.rb:29:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/executor.rb:14:in `call' actionpack (5.2.2) lib/action_dispatch/middleware/static.rb:127:in `call' rack (2.0.6) lib/rack/sendfile.rb:111:in `call' railties (5.2.2) lib/rails/engine.rb:524:in `call' puma (3.12.0) lib/puma/configuration.rb:225:in `call' puma (3.12.0) lib/puma/server.rb:658:in `handle_request' puma (3.12.0) lib/puma/server.rb:472:in `process_client' puma (3.12.0) lib/puma/server.rb:332:in `block in run' puma (3.12.0) lib/puma/thread_pool.rb:133:in `block in spawn_thread'

docker-compose run web rake db:createの実行結果

$ docker-compose run web rake db:create Starting web-app-sample_db_1 ... done You must use Bundler 2 or greater with this lockfile.

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

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

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

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

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

t_obara

2019/01/08 01:38

「できなくなった」と記載されていますが、過去できていたけれど、突然できなくなったという意味でしょうか?その場合、できていた時からできなくなった時に何をしたのかもご提示されるとよろしいかと思います。 もちろん、すでに回答がありますが、各種ログもご提示されると良いでしょう。あとは、リンク先の情報ではなく、ご自身の環境(ホストOSが何かなど)もご提示されるとよろしいかと。
guest

回答2

0

DBはエラー出ていないですね。

私ならまず docker-compose.ymlports 設定を疑います。

こういったDockerの質問でいつも思うのですが、初心者であればいきなり複数コンテナのオーケストレーションは無謀です。
Linux操作、Nginx・Puma・Rails・MySQLの各々の知識、コンテナ間の通信・・・諸々考慮しないといけないので原因の切り分けが難しくなります。
もっと簡単な例から検証しては如何でしょう?

docker-compose.yml

version: "3" services: web: image: nginx:latest ports: - 3000:80

まずは上記設定でNginxのデフォルト画面が表示できることを確認するところから始めてみて下さい。

投稿2019/01/08 02:10

退会済みユーザー

退会済みユーザー

総合スコア0

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

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

Tatsuo_Iriyama

2019/01/08 14:34

ご回答ありがとうございます! Nginxのデフォルト画面が表示されることは確認できました! docker-compose.ymlの中身は追記しました。
guest

0

ベストアンサー

上記のDBのエラーを解消する方法を教えてください

ご提示のログはすべて警告、注記であり、エラーではありません。
解消する方が望ましいとはいえ、これが理由で動かない、というものではありません。

ブラウザアクセスする為には、DBのエラーを解消すれば解決するのでしょうか?

いいえ、アクセスできない理由は別途存在します。
が、ご提示の情報が不足していますため、特定はできません。

以下の手順でログを取得してください。

  1. docker-compose exec web /bin/bashでコンテナにログインする
  2. いったん ./log/*.logを削除する
  3. ブラウザでアクセスし、エラーが出ることを確認する
  4. ./log/development.logの内容全文をコピーし、ご質問内容に追記する

投稿2019/01/07 23:29

kazto

総合スコア7196

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

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

Tatsuo_Iriyama

2019/01/09 11:14

追記にも記載したのですが、`docker-compose up`をした後、`docker-compose exec web /bin/bash`でコンテナに入ろうとしたのですが、弾かれました。 `docker ps`を確認したら`web`が起動していない事が原因かと思われますが、どうすれば良いのか、がわからない状態です。 コンテナに入れないため、ログも記載する事が出来ませんでした。
kazto

2019/01/09 13:49

ちょっと整理させてください。 1)「ログ1」のdocker-compose.ymlでupしたのが、DBでいろいろログが出ている状態。 2)「ログ2」のdocker-compose.ymlに書き換えたのち、docker-compose exec web /bin/bashした、で間違いないでしょうか。 この手順だと、build、upしていないため、コンテナに入れないのは道理です。 build→up→exec の順に実行してください。
Tatsuo_Iriyama

2019/01/09 14:24

build→up→execの順に実行しても入れません。 `ERROR: No container found for web_1`というエラーが返ってくるのみです。 docker-compose upをしてもweb_1が起動していないという状況です。
kazto

2019/01/09 23:12

ということは、buildないしupの時点でエラーとなっていることがうかがえます。 あ、それでup時のログがログ3ということですね。ようやく把握できました。 これは、適切にビルドができていない感じがします。Dockerfileの内容を追記お願いできますでしょうか。
Tatsuo_Iriyama

2019/01/09 23:54

ありがとうございます。 Dockerfileの内容追記しましたので、ご確認お願い致します。
kazto

2019/01/10 00:59

だんだん読めてきました。 Gemfile.lockが、Bundlerのバージョンと合致していないためにエラーになっているんですね。 Dockerfile内の「ADD Gemfile.lock Gemfile.lock」の行を削除してビルドし直してみてはいかがでしょうか。
Tatsuo_Iriyama

2019/01/10 01:12

ありがとうございます。 `ADD Gemfile.lock Gemfile.lock` をコメントアウトしまして、build→upで、ブラウザ確認しましたが、アクセスはできず、`docker-compose exec web /bin/bash`でコンテナにも入れず、状況は変わりませんでした。
kazto

2019/01/10 01:23

ログの内容も全く同じでしたか?
Tatsuo_Iriyama

2019/01/10 02:07

build時に ``` The dependency tzinfo-data (>= 0) will be unused by any of the platforms Bundler is installing for. Bundler is installing for ruby but the dependency is only for x86-mingw32, x86-mswin32, x64-mingw32, java. To add those platforms to the bundle, run `bundle lock --add-platform x86-mingw32 x86-mswin32 x64-mingw32 java`. ``` この内容が表示されたくらいで、コンテナに入れない為、ログは確認できておりません。 `docker-compose up`をしても、webが起動しない事が問題なのかなと思っております。
kazto

2019/01/10 04:28

すみません、言葉不足でした。docker-compose up時のログです。
Tatsuo_Iriyama

2019/01/10 05:05

ありがとうございます。 `ログ5`に追記しましたので、ご確認下さい。
kazto

2019/01/10 08:42

手元で試してみまして、現象再現しました。 まず、Dockerfileの「FROM ruby:2.4.0」が、イメージが古く、使用されるBundlerのバージョンが1.14.6になってしまいます。 差し支えなければ最新の「FROM ruby:2.6」にしてはいかがでしょうか。
kazto

2019/01/10 09:25

うむむ、どうも参照しているqiitaの記事がダメな雰囲気がしてきました。。。
Tatsuo_Iriyama

2019/01/10 09:33

ありがとうございます。 2.6にしたところ、1番最初の回答内容にようやくお答えできる状態となりました。 ですので、`ログ6`にお答えを追記しましたので、ご確認下さい。 また、Bundlerのバージョンが1.14.6になってしまう、という表現をされていますが、なってしまう、とはどういう意味だったのでしょうか?
kazto

2019/01/10 23:22

進展ありましたね、おめでとうございます。 > ActiveRecord::NoDatabaseError (Unknown database 'web-app-sample_development'): と、データベースが見つからない旨のエラーです。 データベースの参照先を適切に設定すれば解決は近いかと思います。
Tatsuo_Iriyama

2019/01/13 12:48

ありがとうございます。 DatabaseErrorからまた以前のエラーに戻ってしまいました。 ですが、一旦この件はベストアンサーとして解決済み、としたいのですが、Dockerの環境構築を一からやり直そうと思っています。 もし宜しければ、環境構築で参考になる記事がありましたら教えて頂きたいのですが、いかがでしょうか? ちなみに言語はRubyで、DBはMySQLを使用します。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問