因此,我正在构建一个Dockerized Django项目,并希望将其部署到Heroku,但是存在很多问题。我的问题与这篇文章完全相同: Docker + Django + Postgres Add-on + Heroku
除了我无法使用CMD python3 manage.py runserver 0.0.0.0:$PORT,因为我收到无效的端口对错误。
我正在跑步
heroku container:push web
heroku container:release web
heroku open
进入网站后,它将一直加载直到出现错误为止。我的日志显示以下内容:
System check identified no issues (0 silenced).
2019-05-03T11:38:47.708761+00:00 app[web.1]: May 03, 2019 - 11:38:47
2019-05-03T11:38:47.709011+00:00 app[web.1]: Django version 2.2.1, using settings 'loan_app.settings.heroku'
2019-05-03T11:38:47.709012+00:00 app[web.1]: Starting development server at http://0.0.0.0:8000/
2019-05-03T11:38:47.709014+00:00 app[web.1]: Quit the server with CONTROL-C.
2019-05-03T11:38:55.505334+00:00 heroku[router]: at=error code=H20 desc="App boot timeout" method=GET path="/" host=albmej-loan-application.herokuapp.com request_id=9037f839-8421-46f2-943a-599ec3cc6cb6 fwd="129.161.215.240" dyno= connect= service= status=503 bytes= protocol=https
2019-05-03T11:39:45.091840+00:00 heroku[web.1]: State changed from starting to crashed
2019-05-03T11:39:45.012262+00:00 heroku[web.1]: Error R10 (Boot timeout) -> Web process failed to bind to $PORT within 60 seconds of launch
2019-05-03T11:39:45.012440+00:00 heroku[web.1]: Stopping process with SIGKILL
2019-05-03T11:39:45.082756+00:00 heroku[web.1]: Process exited with status 137
该应用程序通过虚拟环境在本地使用Docker工作,但不适用于Heroku。不知道还有什么尝试。您可以在以下位置找到我的代码:https://github.com/AlbMej/Online-Loan-Application
也许我的Dockerfile或docker-compose.yml中有一些明显的问题
答案 0 :(得分:1)
答案不正确。
如果您将容器与 Dockerfile 一起使用,则不需要任何配置文件。
只需使用 $PORT 变量即可让 heroku 确定要使用的端口。
https://help.heroku.com/PPBPA231/how-do-i-use-the-port-environment-variable-in-container-based-apps
答案 1 :(得分:0)
快速解决方案是将您的Procfile更改为此:
web: python subfolder/manage.py runserver 0.0.0.0:$PORT
那可以,但是请记住,您正在生产中使用开发服务器,这是一个非常糟糕的主意!但是,如果您只是在玩弄,那就可以。
但是,如果将其用作具有真实数据的生产应用程序,则应使用真实的生产服务器。然后,您的Procfile将如下所示:
web: gunicorn yourapp.wsgi --log-file -