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
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。