我正试图将Docker添加到我的一个旧项目中,并将其作为dockerized版本托管在Heroku上。我已经在本地安装并运行了Docker和docker-compose
。我在将其推到Heroku上时遇到了障碍。
我将大部分docker-compose
命令移到一个heroku.yml
文件中,如下所示:
setup:
addons:
- plan: heroku-postgresql
as: DATABASE
build:
docker:
web: Dockerfile
config:
RAILS_ENV: production
release:
image: web
command:
- bundle exec rails db:migrate
run:
web: bundle exec rails s -b 0.0.0.0
字符串
然而,每当我把这个推到Heroku时,我得到了一个成功的构建,但一个失败的发布:
remote: Verifying deploy... done.
remote: Running release command...
remote:
remote: Waiting for release.... failed.
型
我也试过将release命令移到另一个文件中,然后像这样运行:
release:
image: web
command:
- ./deployment-tasks.sh
型deployment-tasks.sh
文件内容如下所示:
#!/bin/sh
rails db:migrate
型
Heroku的发布日志总是空的。我已经在这几天了,似乎不能弄清楚我在这里做错了什么。任何帮助都将不胜感激!
此外,如果有人能告诉我如何快速升级和测试这个,而不必每次推到Heroku时重新构建我的应用程序,这将是一个巨大的奖励,因为它的情况下,我必须等待~5-10分钟,每次推,看看是否对heroku.yml
的更改工作或不工作。🙏🏽
其他相关信息:
- Docker基础镜像:
ruby:2.7-alpine3.14
- Rails版本:
6.0.6.1
编辑:database.yml
编辑:
default: &default
adapter: postgresql
encoding: unicode
# For details on connection pooling, see Rails configuration guide
# https://guides.rubyonrails.org/configuring.html#database-pooling
pool: <%= ENV.fetch("RAILS_MAX_THREADS") { 5 } %>
# On docker, host must match service name in docker-compose
host: database
development:
<<: *default
database: portfolio_development
username: <some_username>
password: <some_password>
test:
<<: *default
database: portfolio_test
username: <some_username>
password: <some_password>
production:
<<: *default
database: portfolio_production
username: <some_username>
password: <%= ENV['PORTFOLIO_DATABASE_PASSWORD'] %>
host: localhost
型
1条答案
按热度按时间oipij1gg1#
根据你更新的帖子,很明显是什么导致了发布阶段的失败。
这里的问题是您设置了不正确的DB配置值:
字符串
为应用购买Heroku Postgres插件后,Heroku会生成一个
DATABASE_URL
env var,您可以在应用的Config Vars中查看。格式如下:型
你也可以在你的postgres插件中的资源标签下找到这个值。下面是一个例子:
型
这是连接到数据库所需的内容。您可以更改
database.yml
的配置以使用url
密钥:型
或者保持与现在相同的设置。但是,请通过Config Vars设置值。不建议在代码中手动设置值:
型
已编辑
另一件你应该检查的事情是你的Heroku堆栈。因为你正在对你的应用进行dockerizing,所以确保它配置了container堆栈。你可以通过Heroku CLI设置它:
型