gpt4 book ai didi

django - Docker + Django + Postgres 附加组件 + Heroku

转载 作者:行者123 更新时间:2023-12-04 03:36:09 25 4
gpt4 key购买 nike

所以我正在运行以下内容:

  • 创建了一个 Dockerfile 和一个 docker-compose.yml 来在本地开发一个 django 应用程序,这里无事可做,一切正常。
  • 文件

    来自 python :3
    环境 PYTHONUNBUFFERED 1
    运行 mkdir/代码
    工作目录/代码
    添加requirements.txt/code/
    运行 pip install -r requirements.txt
    添加 。/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 打开我的应用程序时它说我有一个错误: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 应用程序上的数据
  • 加 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 时:heroku container:push 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"

    最佳答案

    由于我没有收到任何答案,因此我正在回答我自己的问题,因此其他人可以使用我的解决方案...

    好的,经过大量测试,来来往往我发现了问题。

    所以发生了以下情况:对于本地开发,您应该使用 docker-compose、mount 卷和所有这些美味的东西,但是在使用 heroku 进行生产时,您需要设置一个命令来启动服务器。因此,如果您打算在 heroku 上使用 docker + django + postgres 附加组件设置项目。执行以下步骤。

    首先:

  • 按照 docker 官方设置进行本地开发:https://docs.docker.com/compose/django/
  • 然后使用 docker-compose up 命令服务器应该在端口 8000
  • 本地运行
  • 在完成所有开发并编写 Dockerfile 之后,是时候部署它
  • 请遵循本指南:https://devcenter.heroku.com/articles/django-app-configuration
  • 请务必在您的 heroku 应用程序中添加 postgres 插件
  • settings.py在数据库下修改为以下内容:
    DATABASES = {}DATABASES['default'] = dj_database_url.config(default='DATABASE_URL')
  • DATABASE_URL是一个环境变量,你可以在你的 heroku 应用程序中获取,转到你在 heroku 上的仪表板,找到你的应用程序,转到设置和配置变量,点击显示,你应该得到 DATABASE_URL , django 工作需要/admin 的默认变量...(这只是一个变通方法,您应该找到一种方法从环境变量中获取 DATABASE_URL)
  • 修改您的 Dockerfile运行命令将 django 服务器添加到最后一行:CMD python3 manage.py runserver 0.0.0.0:$PORT
  • $PORT变量是heroku提供的应用端口,所以你的应用可以运行
  • 最后但并非最不重要的一点是将您的 heroku 应用网址添加到 ALLOWED_HOSTS ,正如我们的 friend 亚历杭德罗·桑切斯所说
  • 而且你很优秀,你的应用程序应该在 heroku 应用程序 url
  • 上运行。

    编辑 1:

    您不需要 gunicorn 作为依赖项,您应该在 Procfile 中拥有的唯一命令是: web: python3 manage.py runserver

    关于django - Docker + Django + Postgres 附加组件 + Heroku,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46225801/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com