我目前要做的是通过Building Docker Images with heroku.yml将Django应用程序部署到Heroku。
该应用程序的构建良好,但由于主机配置不正确,因此无法连接到数据库。我的heroku.yml
配置是
setup:
addons:
- plan: heroku-postgresql
as: DATABASE
build:
docker:
web: Dockerfile
config:
DJANGO_SETTINGS_MODULE: Django-BaaS.settings_docker
release:
command:
- python manage.py migrate
image: web
run:
web: gunicorn Django-BaaS.wsgi
我的settings_docker
是
from .settings_base import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'psql',
'HOST': 'DATABASE',
'PORT': '5432'
}
}
我的理解是heroku.yml
是与docker-compose.yml
类似的文件,因此我尝试使用DATABASE
作为HOST
的名称(而我尝试使用{{ 1}}),但看起来两者都不是连接数据库的正确方法。
我寻求一些帮助来更正我的配置或设置文件,以及如何在heroku的docker CD管道上使用PostgreSQL插件。我在这里停留了一段时间。预先感谢,
答案 0 :(得分:0)
我自己弄清楚了。我犯了两个错误。
heroku.yml
类似于docker-compose.yml
,但在addons
中的setup
和build
之间,没有bridge
。关键字为不等于 container_name 。psql addon
,但是访问URL不是127.0.0.1
或localhost
(它将尝试访问容器本身),它是存储在environment variable
中的动态值。直接方法是使用dj_database_url,将数据库设置更新为
import dj_database_url
DATABASES['default'] = dj_database_url.parse(os.environ['DATABASE_URL'])
更好的方法是使用django_heroku,将设置更新为
import django_heroku
django_heroku.settings(locals())