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

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

新規登録して質問してみよう
ただいま回答率
85.48%
Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

3257閲覧

(再質問)docker/PG::ConnectionBad

PartyKids

総合スコア65

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2017/04/01 15:13

編集2017/04/01 20:36

本日dockerの教科書を買って、分からない所は読み飛ばして読んだのですが、エラーを解決する事が出来ないので、再度質問させてください。

###開発環境
mac os: sierra 10.12.4
IDE: Rubymine(お試し)

linux

1$ docker version 2Client: 3 Version: 17.03.1-ce 4 API version: 1.27 5 Go version: go1.7.5 6 Git commit: c6d412e 7 Built: Tue Mar 28 00:40:02 2017 8 OS/Arch: darwin/amd64 9 10Server: 11 Version: 17.03.1-ce 12 API version: 1.27 (minimum version 1.12) 13 Go version: go1.7.5 14 Git commit: c6d412e 15 Built: Fri Mar 24 00:00:50 2017 16 OS/Arch: linux/amd64 17 Experimental: true

###実行手順
User/***/workspaceディレクトリ下で、Quick start:compose and rails(リンク内容)の指示に従って、Yay! you r on rails.を表示させる。

linux

1**Dockerfile** 2FROM ruby:2.3.3 3RUN apt-get update -qq && apt-get install -y build-essential libpq-dev nodejs 4RUN mkdir /myapp 5WORKDIR /myapp 6ADD Gemfile /myapp/Gemfile 7ADD Gemfile.lock /myapp/Gemfile.lock 8RUN bundle install 9ADD . /myapp 10 11**Gemfile** 12source 'https://rubygems.org' 13gem 'rails', '5.0.0.1' 14 15**docker-compose.yml** 16version: '2' 17services: 18 db: 19 image: postgres 20 web: 21 build: . 22 command: bundle exec rails s -p 3000 -b '0.0.0.0' 23 volumes: 24 - .:/myapp 25 ports: 26 - "3000:3000" 27 depends_on: 28 - db 29 30**config/database.yml** 31development: &default 32 adapter: postgresql 33 encoding: unicode 34 database: myapp_development 35 pool: 5 36 username: postgres 37 password: 38 host: db 39 40test: 41 <<: *default 42 database: myapp_test

###エラー
ターミナル等何もいじらずに

linux

1workspace ****$ rails g controller StaticPages home help 2workspace ****$ rails test 3/Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `initialize': could not translate host name "db" to address: nodename nor servname provided, or not known (PG::ConnectionBad) 4 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `new' 5 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:671:in `connect' 6 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:217:in `initialize' 7 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `new' 8 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/postgresql_adapter.rb:37:in `postgresql_connection' 9 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:721:in `new_connection' 10 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:765:in `checkout_new_connection' 11 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:744:in `try_to_checkout_new_connection' 12 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:705:in `acquire_connection' 13 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:501:in `checkout' 14 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:364:in `connection' 15 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_adapters/abstract/connection_pool.rb:875:in `retrieve_connection' 16 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_handling.rb:128:in `retrieve_connection' 17 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/connection_handling.rb:91:in `connection' 18 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/migration.rb:1041:in `needs_migration?' 19 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/migration.rb:576:in `load_schema_if_pending!' 20 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/migration.rb:591:in `block in maintain_test_schema!' 21 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/migration.rb:822:in `suppress_messages' 22 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/migration.rb:596:in `method_missing' 23 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activerecord-5.0.0.1/lib/active_record/migration.rb:591:in `maintain_test_schema!' 24 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/test_help.rb:15:in `<top (required)>' 25 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require' 26 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `block in require' 27 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:259:in `load_dependency' 28 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/activesupport-5.0.0.1/lib/active_support/dependencies.rb:293:in `require' 29 from /Users/****/workspace/test/test_helper.rb:3:in `<top (required)>' 30 from /Users/****/workspace/test/controllers/static_pages_controller_test.rb:1:in `require' 31 from /Users/****/workspace/test/controllers/static_pages_controller_test.rb:1:in `<top (required)>' 32 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/test_unit/test_requirer.rb:11:in `require' 33 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/test_unit/test_requirer.rb:11:in `block in require_files' 34 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/test_unit/test_requirer.rb:10:in `each' 35 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/test_unit/test_requirer.rb:10:in `require_files' 36 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/test_unit/minitest_plugin.rb:76:in `plugin_rails_init' 37 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:80:in `block in init_plugins' 38 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:78:in `each' 39 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:78:in `init_plugins' 40 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/minitest-5.10.1/lib/minitest.rb:129:in `run' 41 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/test.rb:9:in `<top (required)>' 42 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:138:in `require' 43 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:138:in `require_command!' 44 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:95:in `test' 45 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands/commands_tasks.rb:49:in `run_command!' 46 from /Users/****/.rbenv/versions/2.3.3/lib/ruby/gems/2.3.0/gems/railties-5.0.0.1/lib/rails/commands.rb:18:in `<top (required)>' 47 from bin/rails:4:in `require' 48 from bin/rails:4:in `<main>' 49 50

###エラー時のコンテナの状態

linux

1workspace ****$ docker-compose ps 2 Name Command State Ports 3--------------------------------------------------------------------------------- 4workspace_db_1 docker-entrypoint.sh postgres Up 5432/tcp 5workspace_web_1 bundle exec rails s -p 300 ... Up 0.0.0.0:3000->3000/tcp

###やった事や考えた事等
エラーをググった所、postgresqlのパスが正しいですか?という回答を見つけたのですが、/var/lib/にdockerディレクトリ(イメージとコンテナ)が見つかりませんでした。また、ローカル(/usr/local/Cellar/postgresql/)にrubyとpostgresqlをインストールしているため、イメージをhubからプルする場合と違って、別途パスの指定が必要なのか?

本を読んだりググったりと、思いつく事を片っ端からやってみたのですが解決出来ないので、お力添えいただけますでしょうか。

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

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

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

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

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

guest

回答1

0

ベストアンサー

User/***/workspaceディレクトリ下で、Quick start:compose and rails(リンク内容)の指示に従って、Yay! you r on rails.を表示させる。

とありますが、「Yay! you r on rails.」が正常に表示されることを確認してから、「エラー」の操作を行ったということでよろしいでしょうか?

config/database.ymlはコンテナ内で実行するための設定になっています。ホスト側で実行するとdbを見つけられないため、データベースの接続エラーになります。

以下のようにコンテナ内で実行する必要があると思います。

sh

1$ docker-compose run web rails g controller StaticPages home help 2Expected string default value for '--helper'; got true (boolean) 3Expected string default value for '--assets'; got true (boolean) 4 create app/controllers/static_pages_controller.rb 5 route get 'static_pages/help' 6 route get 'static_pages/home' 7 invoke erb 8 create app/views/static_pages 9 create app/views/static_pages/home.html.erb 10 create app/views/static_pages/help.html.erb 11 invoke test_unit 12 create test/controllers/static_pages_controller_test.rb 13 invoke helper 14 create app/helpers/static_pages_helper.rb 15 invoke test_unit 16 invoke assets 17 invoke coffee 18 create app/assets/javascripts/static_pages.coffee 19 invoke scss 20 create app/assets/stylesheets/static_pages.scss 21 22$ docker-compose run web rails test 23/myapp/db/schema.rb doesn't exist yet. Run `rails db:migrate` to create it, then try again. If you do not intend to use a database, you should instead alter /myapp/config/application.rb to limit the frameworks that will be loaded. 24Run options: --seed 11517 25 26# Running: 27 28.. 29 30Finished in 0.980967s, 2.0388 runs/s, 2.0388 assertions/s. 31 322 runs, 2 assertions, 0 failures, 0 errors, 0 skips 33

リンク先に書いてある通りにやって10分でできました。dockerは便利ですね。

【追記】

以下のように--rmをつけないとゴミコンテンが増えてしまいます。

sh

1$ docker-compose run --rm web rails g controller StaticPages home help 2$ docker-compose run --rm web rails test

sh

1$ docker-compose ps 2 Name Command State Ports 3----------------------------------------------------------------------------- 4rails_db_1 docker-entrypoint.sh postgres Up 5432/tcp 5rails_web_1 bundle exec rails s -p 300 ... Up 0.0.0.0:3000->3000/tcp 6 7$ docker ps -a 8CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 952933a58373c rails_web "rails test" 13 minutes ago Exited (0) 13 minutes ago rails_web_run_4 102b8ce1178dc0 rails_web "rails g controlle..." 14 minutes ago Exited (0) 14 minutes ago rails_web_run_3 115c03a4144fe9 rails_web "rake db:create" 16 minutes ago Exited (0) 16 minutes ago rails_web_run_2 12718ffb33ba83 rails_web "bundle exec rails..." 16 minutes ago Up 7 minutes 0.0.0.0:3000->3000/tcp rails_web_1 136103f114c226 462714f32758 "rails new . --for..." 20 minutes ago Exited (0) 20 minutes ago rails_web_run_1 14f902caef094a postgres "docker-entrypoint..." 22 minutes ago Up 7 minutes 5432/tcp rails_db_1

投稿2017/04/02 00:23

編集2017/04/02 00:35
tkmtmkt

総合スコア1800

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

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

PartyKids

2017/04/02 03:58

言葉足らずですが回答していただき、ありがとうございます。 わざわざ再現してくださり、本当にありがとうございます!!! 出来る事ができました!! >config/database.ymlはコンテナ内で実行するための設定になっています。ホスト側で実行するとdbを見つけられないため、データベースの接続エラーになります。 そういう事だったんですね。 workspace下は、イメージから作成されたコンテナであるため、普通に作業すればコンテナが書き換わると思っていました。なので、db connection error等、見当違いのQ&Aばかりググっていました。毎回、コンテナの中身を書き換えますよ!というコマンドを打たないといけないんですね! dockerのデメリットとして、docker-composeをたくさん打たなきゃいけない。と書かれていましたが、そういう事だったんですね 解決していただき、本当にありがとうございました!!
tkmtmkt

2017/04/02 04:29

rails環境がコンテナ内にあるため、rakeやrailsコマンドを実行する場合は、docker-composeをつけて実行することになります。 docker-compose.ymlの設定でカレントディレクトリをコンテナ内のmyappにマウントしているので、コマンドを実行して作成/変更されるファイルはカレントディレクトリ内にあるものになります。 コンテナ内でコマンドはrootで実行されており、カレントディレクトリ内に作成されるフィアルのオーナはrootなるため、新規作成されたファイルを編集する場合は`sudo -R $HOME:$HOME .`でファイルのオーナを変更する必要があります。
PartyKids

2017/04/02 08:22

聞いた事以上に教えていただき、ありがとうございます! >>rails環境がコンテナ内にあるため、rakeやrailsコマンドを実行する場合は、docker-composeをつけて実行することになります。 これから、気をつけます! >>コンテナ内でコマンドはrootで実行されており、カレントディレクトリ内に作成されるフィアルのオーナはrootなるため、新規作成されたファイルを編集する場合は`sudo -R $HOME:$HOME .`でファイルのオーナを変更する必要があります。 すみません、あまりよく分からないです。。。。 workspace $ cd app/views/static_pages static_pages $ touch about.html.erb static_pages $ ls -l rw-r--r-- 1 **** staff 14 Apr 2 17:12 about.html.erb っと、root権限ではなかったです。 tkmtmktさんが、仰っていることは、docker-composeを使ってbash操作?をした時に作成されたファイルはroot権限ですよ!ってことですか? 無知ですみませんが、よろしくお願いいたします!
tkmtmkt

2017/04/03 21:45

すいません。オーナ変更の件はホスト環境がLinuxのときの話で、PartyKidsさんはMacを使用しているようなので関係ないことでした。(MacだとDocker ToolsBoxとかでしょうか) ちなみにやった事や考えた事等に「/var/lib/にdockerディレクトリ(イメージとコンテナ)が見つかりませんでした。」とありますが、Docker ToolboxはVirtualBox仮想マシン上で実行するLinux上でDockerを動かすものなので、MacからはVirtualBox仮想マシンのイメージしか見えないです。 /var/lib/dokcerはVirtualBox仮想マシン上のLinuxにあります。
PartyKids

2017/04/04 08:01

返信ありがとうございます! そういう事だったんですね。公式リファレンスに以下が書かれていました。 >>If you are running Docker on Linux, the files rails new created are owned by root. This happens because the container runs as the root user. Change the ownership of the new files. sudo chown -R $USER:$USER . いつも補足情報ありがとうございます!この補足情報のおかげで、勉強が捗っています! 正しいのか分からないですが、仮想マシンにローカルとは違うバージョンのrubyを入れるからrbenvが必要なのかな?っと、補足情報を手がかりに様々なことを勉強する事ができました。 稚拙な質問文から助けて頂き本当にありがとうございました! 今後ともよろしくお願いいたします!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問