tim*_*tim 1 django postgresql heroku continuous-deployment docker
我目前所做的是通过使用 heroku.yml 构建 Docker 映像将我的 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
Run Code Online (Sandbox Code Playgroud)
我的settings_docker是
from .settings_base import *
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'psql',
'HOST': 'DATABASE',
'PORT': '5432'
}
}
Run Code Online (Sandbox Code Playgroud)
我的理解是,这heroku.yml是一个类似于docker-compose.ymlso 我尝试用作DATABASE名称的文件HOST(并且我尝试使用localhost),但看起来两者都不是连接数据库的正确方法。
我寻求一些帮助来更正我的配置或设置文件以及如何在 heroku 的 docker CD 管道上使用 PostgreSQL 插件。我被困在这里一段时间了。提前致谢,
我自己想出来了。我犯了两个错误。
heroku.yml是喜欢docker-compose.yml,但在和addons之间,却没有。关键字as不等于container_name。setupbuildbridgepsql addon,但是访问url不是127.0.0.1或者localhost(它将尝试访问容器本身),它是存储在 中的动态值environment variable。直接的方法是使用dj_database_url,将 db 设置更新为,
import dj_database_url
DATABASES['default'] = dj_database_url.parse(os.environ['DATABASE_URL'])
Run Code Online (Sandbox Code Playgroud)
更好的方法是使用django_heroku,将设置更新为,
import django_heroku
django_heroku.settings(locals())
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1643 次 |
| 最近记录: |