🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
docker-compose

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

Ruby

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

Docker

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

Q&A

解決済

1回答

4148閲覧

Docker環境でFATAL: password authentication failed for user のエラー

amby

総合スコア40

docker-compose

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

Ruby

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

PostgreSQL

PostgreSQLはオープンソースのオブジェクトリレーショナルデータベース管理システムです。 Oracle Databaseで使われるPL/SQLを参考に実装されたビルトイン言語で、Windows、 Mac、Linux、UNIX、MSなどいくつものプラットフォームに対応しています。

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2021/03/16 14:06

開発環境

MacOS
Ruby2.7.2
Rails5.2.4
DB:PostgreSQL

困っていること

すでにRaulsでアプリはできています。これをDocker環境で動くようにしたいです。
下記のサイトを参考にDockerにチャンレンジしています。
https://nanayaku.com/docker-rails-postgresql/

その中で「 docker-compose run web rake db:create」を実行すると下記のエラーがでます。

エラー

Starting rails-minimum-skill-check_data_1 ... done Creating rails-minimum-skill-check_web_run ... done FATAL: password authentication failed for user "devuser" Couldn't create 'min-skill_development' database. Please check your configuration. rake aborted! PG::ConnectionBad: FATAL: password authentication failed for user "devuser" /usr/local/bundle/gems/pg-0.21.0/lib/pg.rb:56:in `initialize' /usr/local/bundle/gems/pg-0.21.0/lib/pg.rb:56:in `new' /usr/local/bundle/gems/pg-0.21.0/lib/pg.rb:56:in `connect' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/postgresql_adapter.rb:692:in `connect' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/postgresql_adapter.rb:223:in `initialize' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/postgresql_adapter.rb:48:in `new' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/postgresql_adapter.rb:48:in `postgresql_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:830:in `new_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:874:in `checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:853:in `try_to_checkout_new_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:814:in `acquire_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:538:in `checkout' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:382:in `connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_adapters/abstract/connection_pool.rb:1033:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_handling.rb:118:in `retrieve_connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/connection_handling.rb:90:in `connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/postgresql_database_tasks.rb:12:in `connection' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/postgresql_database_tasks.rb:21:in `create' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/database_tasks.rb:119:in `create' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/database_tasks.rb:139:in `block in create_current' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/database_tasks.rb:316:in `block in each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/database_tasks.rb:313:in `each' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/database_tasks.rb:313:in `each_current_configuration' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/tasks/database_tasks.rb:138:in `create_current' /usr/local/bundle/gems/activerecord-5.2.4.5/lib/active_record/railties/databases.rake:29:in `block (2 levels) in <top (required)>' /usr/local/bundle/gems/rake-13.0.3/exe/rake:27:in `<top (required)>' Tasks: TOP => db:create (See full trace by running task with --trace) ERROR: 1

docker-compose.yml

data: image: busybox:latest volumes: - .:/app db: image: postgres:9.4 volumes_from: - data environment: POSTGRES_USER: devuser POSTGRES_PASSWORD: 'XXX(実際は入れています)' expose: - "5432" web: build: . command: bundle exec rails s -b 0.0.0.0 volumes_from: - data ports: - "3000:3000" links: - db environment: TZ: Asia/Tokyo LANG: C.UTF-8 RAILS_DATABASE_HOST: db

database.yml

default: &default adapter: postgresql timeout: 50000 pool: <%= ENV["DB_POOL"] || ENV["RAILS_MAX_THREADS"] || 5 %> development: <<: *default database: min-skill_development username: devuser password: XXX(実際は文字を入れています) host: <%= ENV['RAILS_DATABASE_HOST'] || 'localhost' %> test: <<: *default database: min-skill_test username: devuser host: <%= ENV['RAILS_DATABASE_HOST'] || 'localhost' %> production: <<: *default database: min-skill_production

わからない点

パスワードが正しくない、という内容だと思うのですが、何通りかパスワードを入力してもエラーが出てしまいます。
アドバイスいただけますと幸いです。

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

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

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

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

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

siruku6

2021/03/16 14:09

docker-compose run web rake db:createを実行する前に、docker-compose up した状態でpostgresqlにログインしてみてはいかがでしょう? それができなければ、railsからpostgresqlへのアクセスもできないかと思います。 それにより、postgresqlにusernameやpasswordが正しく設定されているかどうかが確認できるかと思います。
amby

2021/03/17 00:42

ありがとうございます。ログインはできました。記載の通りのdatabase: min-skill_development、username: devuserでログインできています。
siruku6

2021/03/20 12:29

>ログインはできました。 念のため確認ですが、localhostのpostgresqlではなく、docker内にあるpostgresqlにログインできたということですよね? もしそうだとすると、port、username、passwordなど、何らかの設定値が正しくrailsに認識されていないようですね...
guest

回答1

0

ベストアンサー

ログの中に

Starting rails-minimum-skill-check_data_1 ... done

とある記述が気になりました。他のサービス(コンテナ)は "create" されていますが、この "data" サービスは "Starting" ですから、止まっていたものが起動しています。

記載されている情報から現状でわかることは、これは予想ですが、既に何らかの操作がされたデータが "data" サービス(コンテナ)のボリューム内に作成されていて、データベースにアクセスできないだろう、ということしか分かりません。

まっさらな状態から(docker-compose.yamlを別のディレクトリで作成するなどして)、もう一度手順を一通り見直し、実行し、エラーがでるかどうかを確認されることをお勧めします。

もしそれでも認証エラーが出るのであれば、どのようにコマンドを実行されたのかを共有いただければ、解決の糸口が見つかるかもしれません。

なお、 -links を使ったコンテナ間の通信や、 busybox でデータを保管する方法は、現在では推奨されていない記述方法であり、このような場合のデバッグに非常に時間がかかります。それぞれ networks: volumes: といった、現行の書き方にされることをお勧めします。

投稿2021/04/03 06:57

zembutsu

総合スコア1584

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問