使用Makefile以及Docker和Python部署到heroku

问题描述 投票:0回答:1

对于一个学校项目,我想在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或surepip。为了解决这个问题,我试图用Aptfile buildpack添加一个Aptfile,但是没有用。向上移动Python buildpack。

没有人知道更好的解决方案来轻松将我的项目部署到heroku吗?在heroku的构建过程中使用我们的makefile还是在travis中将docker映像推送到heroku?

关于我的问题的有用链接:Repository

Current Heroku PR

Frontend folder

Backend folder

Dockerfile in Heroku PR

app.json for Heroku in Heroku PR

Makefile in Heroku PR

python docker heroku makefile
1个回答
0
投票

[可能的问题是,您在heroku堆栈中使用的是build pack,而不是docker” stack”。这意味着heroku将尝试根据其规则检测并构建您的应用,而忽略您的dockerfile。

首先更新堆栈:

heroku stack set docker -a <your app>

然后您应该能够在本地构建您的docker容器并将其推送到heroku registry

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

© www.soinside.com 2019 - 2024. All rights reserved.