所以我正在执行以下操作:
创建了一个Dockerfile和一个docker-compose.yml来在本地开发一个django应用程序,这里没什么可做的,一切正常。
Dockerfile
FROM python:3
ENV PYTHONUNBUFFERED 1
运行mkdir /代码
WORKDIR /代码
ADD requirements.txt / code /
RUN 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应用程序上的数据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时:heroku容器:推送web,服务器重新部署,但不是运行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"
答案 0 :(得分:8)
我怎么没找到任何一个回答我正在回答我自己的问题,所以其他人可以使用我的解决方案......
好的,经过大量的测试,来来往往我发现了这个问题。
所以发生了以下情况:对于本地开发,您应该使用docker-compose,mount卷和所有美味的东西,但是当使用heroku进行生产时,您需要设置服务器启动命令。所以,如果您计划在heroku上使用docker + django + postgres附加组件设置项目。执行以下步骤。
首先关闭:
CMD python3 manage.py runserver 0.0.0.0:$PORT
编辑1:
您不需要gunicorn作为依赖项,您在Procfile中应该拥有的唯一命令是:web:python3 manage.py runserver
答案 1 :(得分:0)
尝试将heroku网址添加到ALLOWED_HOSTS