私はRuby on Rails 5.1.0アプリケーションをコンテナ化しようとしていますが、環境からDATABASE_URL
を取り上げないといくつか問題があります。Docker Compose:RailsはPostgresに接続するためにDATABASE_URLを尊重しません
$ docker-compose run app rails c
Running via Spring preloader in process 25
Loading development environment (Rails 5.1.0)
irb(main):001:0> ENV['DATABASE_URL']
=> "postgres://postgres:[email protected]:5432/myapp_development"
しかし、私はdocker-compose run app rake db:create
を実行した場合、その後、私はできないというエラーが出ます:docker-compose.yml
で、私は次のサービスがあります。私はdocker-compose run app rails c
を実行する場合
app:
build: .
command: bundle exec rails s -p 3000 -b '0.0.0.0'
volumes:
- .:/myapp
environment:
DATABASE_URL: postgres://postgres:[email protected]:5432/myapp_development
を環境がうまく拾いますlocalhost
に接続する:
$ docker-compose run app rake db:create
Database 'myapp_development' already exists
could not connect to server: Connection refused
Is the server running on host "localhost" (::1) and accepting
TCP/IP connections on port 5432?
could not connect to server: Connection refused
Is the server running on host "localhost" (127.0.0.1) and accepting
TCP/IP connections on port 5432?
Couldn't create database for {"adapter"=>"postgresql", "host"=>"localhost", "pool"=>10, "timeout"=>5000, "database"=>"myapp_test"}
rake aborted!
私はここで間違って何を考えていますか?
編集:ここではdatabase.yml
は次のようになります。問題はrakeタスクである
common: &common
adapter: postgresql
pool: 10
timeout: 5000
development:
<<: *common
database: myapp_development
test:
<<: *common
database: myapp_test
production:
<<: *common
database: myapp_production
私はあなたに私の解決策を教えてもらえますが、あなたの質問に直接答えないので、コメントに入れます。あなたはpostgresに分離されたコンテナを追加し、postgresコンテナ名と一致するあなたのdatabase.ymlにホスト設定を追加することができます。その後、コンテナにログインすると、エラーなしで任意のコマンドを実行することができます。興味があれば詳細な回答を記入することができます。 –