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

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

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

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

Docker

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

Q&A

1回答

2802閲覧

could not translate host name "db" to address: Name or service not known が解決できない

tarotarotarotar

総合スコア41

Ruby on Rails

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

Docker

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

0グッド

0クリップ

投稿2020/11/04 05:12

docker-composeを用いたdb:createコマンドを実行しようとしていたのですが、下記のエラー分が発生してしまい、解消できずに困っております。

could not translate host name "db" to address: Name or service not known
Couldn't create database for {"adapter"=>"postgresql", "encoding"=>"unicode", "host"=>"db", "username"=>"postgres", "password"=>nil, "pool"=>5, "database"=>"myapp_development"}
rake aborted!

【エラーログ】
db_1 | Error: Database is uninitialized and superuser password is not specified.
db_1 | Error: Database is uninitialized and superuser password is not specified.
db_1 | You must specify POSTGRES_PASSWORD to a non-empty value for the
db_1 | superuser. For example, "-e POSTGRES_PASSWORD=password" on "docker run".
db_1 |
db_1 | You may also use "POSTGRES_HOST_AUTH_METHOD=trust" to allow all
db_1 | connections without a password. This is not recommended.
db_1 |
db_1 | See PostgreSQL documentation about "trust":
db_1 | https://www.postgresql.org/docs/current/auth-trust.html

下記の記事通りにdocker-compose.ymlにPOSTGRES_HOST_AUTH_METHOD=trustを定義してあげたのですがエラーが解消されません。
【PostgreSQL(Docker)にRails(Docker)が接続できなくなったから調べてみた。】
https://qiita.com/at-946/items/2fb75cec5355fad4050d

なぜなのでしょうか・・・?

以下コードです。
ご指南のほど何卒よろしくお願いいたします。

【dartabase.yml】

# # Install the pg driver: # gem install pg # On OS X with Homebrew: # gem install pg -- --with-pg-config=/usr/local/bin/pg_config # On OS X with MacPorts: # gem install pg -- --with-pg-config=/opt/local/lib/postgresql84/bin/pg_config # On Windows: # gem install pg # Choose the win32 build. # Install PostgreSQL and put its /bin directory on your path. # # Configure Using Gemfile # gem 'pg' # default: &default adapter: postgresql encoding: unicode host: db username: postgres # For details on connection pooling, see rails configuration guide # http://guides.rubyonrails.org/configuring.html#database-pooling pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %> development: <<: *default database: myapp_development # The specified database role being used to connect to postgres. # To create additional roles in postgres see `$ createuser --help`. # When left blank, postgres will use the default role. This is # the same name as the operating system user that initialized the database. #username: myapp # The password associated with the postgres role (username). #password: # Connect on a TCP socket. Omitted by default since the client uses a # domain socket that doesn't need configuration. Windows does not have # domain sockets, so uncomment these lines. #host: localhost # The TCP port the server listens on. Defaults to 5432. # If your server runs on a different port number, change accordingly. #port: 5432 # Schema search path. The server defaults to $user,public #schema_search_path: myapp,sharedapp,public # Minimum log levels, in increasing order: # debug5, debug4, debug3, debug2, debug1, # log, notice, warning, error, fatal, and panic # Defaults to warning. #min_messages: notice # Warning: The database defined as "test" will be erased and # re-generated from your development database when you run "rake". # Do not set this db to the same as development or production. test: <<: *default database: myapp_test # As with config/secrets.yml, you never want to store sensitive information, # like your database password, in your source code. If your source code is # ever seen by anyone, they now have access to your database. # # Instead, provide the password as a unix environment variable when you boot # the app. Read http://guides.rubyonrails.org/configuring.html#configuring-a-database # for a full rundown on how to provide these environment variables in a # production deployment. # # On Heroku and other platform providers, you may have a full connection URL # available as an environment variable. For example: # # DATABASE_URL="postgres://myuser:mypass@localhost/somedatabase" # # You can use this database configuration with: # # production: # url: <%= ENV['DATABASE_URL'] %> # production: <<: *default database: myapp_production username: myapp password: <%= ENV['MYAPP_DATABASE_PASSWORD'] %>

【docker-compose.yml】

version:

1services: 2 db: 3 image: postgres 4 environment: 5 - POSTGRES_HOST_AUTH_METHOD=trust 6 web: 7 build: . 8 command: bundle exec rails s -p 3000 -b '0.0.0.0' 9 volumes: 10 - .:/myapp 11 ports: 12 - "3000:3000" 13 depends_on: 14 - db 15 16

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

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

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

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

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

guest

回答1

0

既に「db」サービス用のボリューム( /var/lib/postgresql/data)が作成済みの状態としても、後から docker-compose.yaml を今回のように編集されたら、通常は db サービスが起動すると思います。私の環境でも試しましたが docker-compose ps を実行すると、「db」サービスは正常に起動しています。

下記の記事通りにdocker-compose.ymlにPOSTGRES_HOST_AUTH_METHOD=trustを定義してあげたのですがエラーが解消されません。

エラー解消のための設定としては、こちらで問題無いはずです。

念のため、現在の docker-compose.yaml ファイルがあるディレクトリとは別の場所で、docker-compose up -d を試みてみると、データベースは真っ新な状態から実行されますので、正常に処理ができるでしょう。

また、エラー could not translate host name "db" to address: Name or service not known に関しても、当初は db サービス(postgres)が起動できなかったから出ていたエラーであり、正常に起動できる設定であれば、こちらのエラーの解消も期待できます。

投稿2021/04/10 06:11

zembutsu

総合スコア1584

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

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

ただいまの回答率
85.47%

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

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

質問する

関連した質問