我正在进行以下操作:
创建了一个Dockerfile和docker-compose.yml文件来在本地开发django应用程序,这里没有什么要做的,一切都很好。
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
RUN mkdir /code
WORKDIR /code
ADD requirements.txt /code/
RUN pip install -r requirements.txt
ADD . /code/它所做的只是获取python3镜像,并将代码从我的源文件夹复制到docker镜像中
然后我尝试将其部署到heroku上,在heroku应用程序中添加了postgres插件,并使用dj_database_url进行配置,使用以下命令在我的settings.py文件中:
DATABASES = {} DATABASES['default'] = dj_database_url.config()
之后,我使用
heroku container:push web
将应用程序推送到heroku,没有任何问题......最后一步是当我使用
heroku open
打开我的应用程序时,它会显示错误:应用程序错误 应用程序发生错误,无法提供页面。如果您是应用程序所有者,请检查日志以获取详细信息。
这是在heroku网站上打印的内容
现在,当我使用
heroku logs -t
登录时,它说已退出代码0,然后崩溃了
我错过了什么?
- 另外:当我运行
heroku run web python manage.py migrate
时,它会迁移heroku应用程序中的数据 - 另外2:当我运行
heroku run web python manage.py runserver
时,它说正在127.0.0.1:8000上运行
编辑1: 如果您想重现问题,可以克隆以下git存储库中的所有代码:https://github.com/giovanniKleinCampigoto/djangoherokuproblem.git
编辑2:
在这个官方教程中:https://devcenter.heroku.com/articles/deploying-python,建议使用virtualenv,但我正在使用docker,所以我真不知道该怎么做......
编辑3: 另外,我注意到当我使用命令:heroku container:push web将图像推送到heroku时,服务器会重新部署,但它不会运行procfile上的任何内容,只是记录如下:Starting process with command 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 run web python manage.py runserver 0.0.0.0:5000
。我在Heroku上运行Flask和Django遇到了一些问题,所以这个方法适用于我。 - Abe