使用Makefile、Docker和Python部署到heroku

2024-09-27 21:26:25 发布

您现在位置:Python中文网/ 问答频道 /正文

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

dockerfile工作正常,当在repo中启动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。为了解决这个问题,我尝试使用aptfilebuildpack添加一个Aptfile,但没有成功。也可以移动Python构建包

有谁知道一个更好的解决方案可以轻松部署到我的项目中吗?要么在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


Tags: 项目dockerinenv应用程序localhostflaskdb
1条回答
网友
1楼 · 发布于 2024-09-27 21:26:25

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

首先更新堆栈:

heroku stack set docker -a <your app>

然后,您应该能够在本地构建docker容器,并将它们推送到herokuregistry

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

相关问题 更多 >

    热门问题