使用 Makefile 和 Docker 和 Python 部署到 heroku



对于一个学校项目,我想在Heroku上部署我们的应用程序。该应用程序由前端组成,在reactjs中制作,并编译成静态html,然后由后端提供,后端还处理API和其他所有内容。

dockerfile 工作正常,在存储库中启动make docker,映像将被构建和启动。继续localhost:8080,您应该会看到登录提示。如果收到错误,则需要一个包含以下内容的 .env 文件

FLASK_DEBUG=True
FLASK_SECRET_KEY=ThisIsADevelopmentKey
FRONT_STATIC_FOLDER=../../frontend/build
DB_HOST=localhost
DB_PORT=3306
DB_USER=root
DB_PASSWORD=

然后使用docker run --env-file .env --name pymatcha --restart=always -p 8080:5000 -d pymatcha再次启动映像

问题是,当我推送到我的 PR 时,Heroku 创建了一个预览应用程序,但我在使用 Python 时遇到错误。要么它完全缺少python3.7,要么它缺少venv或ensurepip。为了解决这个问题,我试图添加一个带有Aptfile构建包的Aptfile,但它不起作用。要么移动 Python 构建包。

有谁知道一个更好的解决方案来轻松部署到我的项目heroku? 要么在 Heroku 的构建过程中使用我们的 makefile,要么通过将 docker 镜像推送到 travis 中的 heroku ?

关于我的问题的有用链接: 存储 库

现任希罗库公关

前端文件夹

后端文件夹

Heroku PR 中的 Dockerfile

app.json for Heroku in Heroku PR

Makefile in Heroku PR

可能的问题是你在 heroku 堆栈中使用构建包而不是 docker "stack"。这意味着heroku将尝试根据其规则检测和构建您的应用程序,而忽略您的dockerfile。

首先更新堆栈:

heroku stack set docker -a <your app>

然后,您应该能够在本地构建您的 docker 容器并将它们推送到 heroku 注册表。

与许多部署目标一样,使用 heroku,您需要在本地(或更优选地(在 CI 中构建映像,并将其推送到注册表以进行部署/发布。

最新更新