- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想在 Heroku 上部署一个基本的 Flask 应用。
这是我的应用程序的基本结构:
├── Dockerfile
├── Makefile
├── README.rst
├── app
│ ├── __init__.py
│ └── app.py
├── heroku.yml
├── poetry.lock
├── pyproject.toml
└── tests
├── __init__.py
└── test_app.py
每次我将 PR 合并到项目的 master 分支时,我希望应用程序能够重新部署,因此我通过 Heroku 中的自动部署选项进行了设置。
我能够在本地以及通过 docker 容器(也在本地)成功运行此应用程序,但是,Heroku 无法部署该应用程序。我遇到的第一个错误是 No default language could be detected for this app
这导致我为此应用程序 (python) 启用构建包。设置构建包后,出现以下错误:App not compatible with buildpack: https://buildpack-registry.s3.amazonaws.com/buildpacks/heroku/python.tgz ...!推送失败
。我发现了一些相关的讨论(比如 this 一个)似乎暗示诗歌可能是问题所在并且我需要一个 requirements.txt
,但即使在生成一个之后我仍然得到同样的错误。
有人知道这是怎么回事吗?我觉得有些事情根本上是错误的,因为我什至不需要构建包——docker 镜像应该会处理这个问题。仅供引用,heroku.yml
包含以下内容:
build:
docker:
web: Dockerfile
如果我应该分享有关我的应用程序设置的更多信息,请告诉我。
非常感谢!
更新 1:
我已经设法通过 heroku container:push web -a APP_NAME
然后是 heroku container:release web -a APP_NAME
将我的 docker 镜像推送到 Heroku,但是当我打开应用 https://APP_NAME.herokuapp.com/我看到它启动失败,这并不奇怪,因为我的 dockerfile 没有以 RUN python app.py
结尾——如果我添加该行并重新运行上述命令,那么整个过程将停止图像构建完成后,最后一行是“Running on ...”——我认为异步运行它也不是正确的解决方案。
有什么建议吗?如果我设法让 Heroku 容器工作,那么我想这意味着我无法让 Heroku 在每次更新 master 分支时重建我的图像,相反,我需要自己做。
最佳答案
我成功了。这是我所做的:
app.py
移动到顶层,(appdir/app.py
而不是 appdir/app/app.py
) gunicorn
Procfile
,其中应包含 web: gunicorn app:app
python app.py
而是 gunicorn app:app
heroku container:push web -a APP_NAME; heroku容器:release web -a APP_NAME
我仍然没有弄清楚持续集成如何适合这里(换句话说,Heroku 本身在这里提供任何东西吗?)但是,所以如果有人有任何建议,请告诉我
更新
只是想为 CI 添加一点,我最终使用了 GitHub 操作。我在 .github/workflows/deploy.yaml
下创建了一个文件,其中包含以下内容:
- name: deploy
env:
HEROKU_API_KEY: ${{ secrets.HEROKU_API_TOKEN }}
HEROKU_APP_NAME: "covid-monitor"
run: |
heroku container:login
heroku container:push web -a $(appname)
heroku container:release web -a $(appname)
请注意,要使其正常工作,您需要将 Heroku API token 添加到 GitHub secrets。
关于docker - 如何在 Heroku 上部署 dockerized 应用程序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60802633/
我是一名优秀的程序员,十分优秀!