我正在尝试使用Docker将基于django的应用程序放在Heroku上。 我正在为postgres使用一个容器,在本地使用另一个容器。在制作中,我只推送我的应用程序并使用heroku postgres附加组件。
在当地它工作正常。但是当我尝试将其上传到Heroku时,我的应用程序似乎能够连接到postgres数据库,但找不到任何表格。 我不知道问题出在哪里,除非由于某些受限制的授权而导致迁移失败(但我没有通过Heroku日志看到任何错误输出):
这里是我的docker-compose:
web:
build: .
command: bash -c "python3 manage.py migrate && python3 manage.py runserver 0.0.0.0:8000"
volumes:
- .:/code
ports:
- "8000:8000"
depends_on:
- db
这里有postgres conf:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.postgresql',
'NAME': 'postgres',
'USER': 'postgres',
'HOST': 'db',
'PORT': 5432,
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
这是我的问题:
1)我无法直接连接到heroku dyno,因为这是一个很痛苦的配置,我没有成功(文档有点模糊如何实现这一点)
2)我不知道postgres是否实际链接。 我所做的就是按照heroku文档中的要求输入 db_from_env = dj_database_url.config(conn_max_age = 500)。我得到的只是/的ProgrammingError 关系“wagtailcore_site”不存在,所以我假设postgres正在运行但表缺失。
请注意,我只是将我的网络图片推送到heroku。 Postgres已经可以通过heroku插件获得。
我的问题是我不知道为什么我的web命令:python3 manage.py migrate似乎什么也没产生,再一次,由于所有这些层,调试很麻烦。
从我的heroku日志中,我已经为数据库生成了这个生成的配置。
{'default': {'ENGINE': 'django.db.backends.postgresql_psycopg2', 'NAME': 'dfoj555gqmetqk', 'USER': 'jspejdlnonepyj', 'HOST': 'ec2-54-235-240-126.compute-1.amazonaws.com', 'PORT': 5432 'CONN_MAX_AGE': 500}}
从Django Traceback,我得到了DB连接的确认。
DATABASES
{'default': {'ATOMIC_REQUESTS': False,
'AUTOCOMMIT': True,
'CONN_MAX_AGE': 500,
'ENGINE': 'django.db.backends.postgresql_psycopg2',
'HOST': 'ec2-54-235-240-126.compute-1.amazonaws.com',
'NAME': 'dfoj555gqmetqk',
'OPTIONS': {},
'PASSWORD': '********************',
'PORT': 5432,
'TEST': {'CHARSET': None,
'COLLATION': None,
'MIRROR': None,
'NAME': None},
'TIME_ZONE': None,
'USER': 'jspejdlnonepyj'}}
但是,我怎样才能迁移到这个数据库?当我将迁移规则放在Docker中时,数据库现在不存在吗?