我正在嘗試將我的 Docker 容器推送到 Heroku 中,當我嘗試這樣做時,我一直遇到這個錯誤heroku run rake db:migrate:
PG::ConnectionBad: could not translate host name "db" to address: Name or service not known
我一直在四處尋找并添加:POSTGRES_HOST_AUTH_METHOD: trust到我的and 中并在anddocker-compose.yml中為環境保留了相同的名稱,但它一直給出相同的錯誤,我很迷茫。docker-compose.ymldatabase.yml
這是docker-compose.yml:
version: "3.8"
services:
db:
image: postgres
environment:
POSTGRES_HOST_AUTH_METHOD: trust
POSTGRES_USER: user
POSTGRES_PASSWORD: password
volumes:
- ./tmp/db:/var/lib/postgresql/data
web:
build: .
command: bash -c "rm -f tmp/pids/server.pid && bundle exec rails s -p 3000 -b '0.0.0.0'"
volumes:
- .:/myapp
ports:
- "3000:3000"
depends_on:
- db
environment:
POSTGRES_USER: user
POSTGRES_PASSWORD: password
POSTGRES_HOST: db
RAILS_ENV: production
這是database.yml:
default: &default
adapter: postgresql
encoding: unicode
host: db
username: user
password: password
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
development:
<<: *default
database: _rails_ecommerce_site_development
test:
<<: *default
database: _rails_ecommerce_site_test
production:
<<: *default
database: _rails_ecommerce_site_production
這些是來自的日志heroku logs --tail:
2022-04-19T11:07:38.574966 00:00 heroku[web.1]: Starting process with command `rails server -b 0.0.0.0`
2022-04-19T11:07:42.805650 00:00 app[web.1]: => Booting Puma
2022-04-19T11:07:42.805662 00:00 app[web.1]: => Rails 6.0.4.4 application starting in production
2022-04-19T11:07:42.805662 00:00 app[web.1]: => Run `rails server --help` for more startup options
2022-04-19T11:07:44.787345 00:00 app[web.1]: Puma starting in single mode...
2022-04-19T11:07:44.787369 00:00 app[web.1]: * Version 4.3.10 (ruby 2.6.6-p146), codename: Mysterious Traveller
2022-04-19T11:07:44.787370 00:00 app[web.1]: * Min threads: 5, max threads: 5
2022-04-19T11:07:44.787370 00:00 app[web.1]: * Environment: production
2022-04-19T11:07:44.787625 00:00 app[web.1]: * Listening on tcp://0.0.0.0:24849
2022-04-19T11:07:44.787902 00:00 app[web.1]: Use Ctrl-C to stop
2022-04-19T11:07:45.114352 00:00 heroku[web.1]: State changed from starting to up
2022-04-19T11:07:47.793790 00:00 heroku[router]: at=info method=GET path="/" host=xxxx.herokuapp.com request_id=0368ded8-ba57-474b-b540-4f23292881d1 fwd="119.105.11.94" dyno=web.1 connect=0ms service=109ms status=500 bytes=1827 protocol=https
2022-04-19T11:08:36.612997 00:00 app[api]: Starting process with command `rake db:migrate` by user xxxxx
2022-04-19T11:09:06.965267 00:00 heroku[run.7786]: State changed from starting to up
2022-04-19T11:09:07.057271 00:00 heroku[run.7786]: Awaiting client
2022-04-19T11:09:07.084913 00:00 heroku[run.7786]: Starting process with command `rake db:migrate`
2022-04-19T11:09:12.164888 00:00 heroku[run.7786]: State changed from up to complete
2022-04-19T11:09:11.892289 00:00 heroku[run.7786]: Process exited with status 1
我在這里有什么遺漏嗎?我該如何解決?謝謝!
uj5u.com熱心網友回復:
解決了!
所以,基本上我們需要在 Heroku 中添加 Postgres 插件。步驟在這里(https://betterprogramming.pub/how-to-containerize-and-deploy-apps-with-docker-and-heroku-b1c49e5bc070)但基本上:
- 導航到 Heroku 并單擊您創建的應用程式。
- 在資源中,搜索“postgres”并單擊 Heroku Postgres。
- 將其添加到您的應用程式中。單擊配置。
并且非常重要的是,database.yml在專案中production應該有這個:url: <%= ENV['DATABASE_URL'] %>. 就我而言:
production:
<<: *default
database: _rails_ecommerce_site_production
url: <%= ENV['DATABASE_URL'] %>
一旦我們添加了 Postgresql 插件,<%= ENV['DATABASE_URL'] %>Heroku 就會給出
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/461253.html
標籤:轨道上的红宝石 PostgreSQL 码头工人 heroku
