【发布时间】:2018-02-23 19:59:53
【问题描述】:
所以我正在执行以下操作:
创建了一个 Dockerfile 和一个 docker-compose.yml 来在本地开发一个 django 应用,这里什么都不做,一切正常。
-
Dockerfile
来自 python:3
环境 Python 无缓冲 1
运行 mkdir /code
WORKDIR /代码
添加 requirements.txt /code/
运行 pip install -r requirements.txt
添加 。 /代码/ 它所做的只是获取 python3 图像,将代码从我的源文件夹复制到 docker 图像
然后我尝试将其部署到 heroku,因此我在 heroku 应用程序上添加了 postgres 插件,并使用 dj_database_url 对其进行配置,并在我的 settings.py 文件中使用以下命令:
DATABASES = {} DATABASES['default'] = dj_database_url.config()之后,我使用
heroku container:push web将我的应用程序推送到 heroku,它被推送到我的应用程序完全没有问题...最后一点是当我使用
heroku open打开我的应用程序时,它说我遇到了错误:Application error An error occurred in the application and your page could not be served. If you are the application owner, check your logs for details.这是打印在 heroku 网站上的内容
现在,当我使用
heroku logs -t登录时,它说以代码 0 退出,然后崩溃
我错过了什么?
- 另外:当我运行
heroku run web python manage.py migrate时,它会迁移 heroku 应用程序上的数据 - Plus 2:当我运行
heroku run web python manage.py runserver时,它说正在 127.0.0.1:8000 上运行
编辑 1: 如果您想重现该问题,您可以在以下 git repo 中克隆我的所有代码:https://github.com/giovanniKleinCampigoto/djangoherokuproblem.git
编辑 2:
在这个官方教程中:https://devcenter.heroku.com/articles/deploying-python,说要使用 virtualenv,但我使用的是 docker,所以我真的不知道如何进行......
编辑 3:
另外,我注意到,当我使用 heroku container:push web 将图像推送到 heroku 时,服务器会重新部署,但不会运行 procfile 上的任何内容,它只会记录以下内容:
使用命令python3启动进程]
编辑 4:
运行heroku local web 并编辑Procfile 以运行docker-compose up 工作正常,问题在于上传到heroku 的服务器...不确定我是否应该将文件编辑为python manage.py runserver...
docker-compose.yml
version: '2'
services:
web:
build: .
env_file: composeexample/.env
command: python3 manage.py runserver 0.0.0.0:8000
volumes:
- .:/code
ports:
- "8000:8000"
【问题讨论】:
-
尝试在您的
ProcFile中将heroku 上正在运行的服务器更改为heroku run web python manage.py runserver 0.0.0.0:5000。我在 heroku 上运行烧瓶和 django 时遇到了一些问题,所以,这对我有用。 -
我们不应该听 $PORT 变量吗?难道不是 0.0.0.0:$PORT,而且我不相信我的 procfile get 曾经被执行过......