gpt4 book ai didi

django - 如何配置 heroku.yml 以使用 Heroku PostgreSQL 插件?

转载 作者:行者123 更新时间:2023-11-29 14:27:53 25 4
gpt4 key购买 nike

我目前所做的是通过 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 名称(我尝试使用 localhost),但看起来两者都不是连接数据库的正确方法。

我寻求一些帮助来更正我的配置或设置文件,以及如何在 heroku 的 docker CD 管道上使用 PostgreSQL 插件。我被困在这里一段时间了。提前致谢,

最佳答案

我自己想出来的。我犯了 2 个错误。

  1. heroku.yml 类似于 docker-compose.yml,但是介于 setup 中的 addons 之间>build,没有bridge。关键字 as 不等于 container_name
  2. 容器(如果是web),仍然可以直接访问psql addon,但是访问url不是127.0.0.1或者localhost(它将尝试访问容器本身),它是一个存储在环境变量中的动态值。

如何让它发挥作用

直接的方法是使用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())

引用资料

关于django - 如何配置 heroku.yml 以使用 Heroku PostgreSQL 插件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55827138/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com