You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何将docker-compose.yml转换为heroku.yml以在Heroku独立dyno运行容器

Heroku多容器部署方案
  • 你当前的多独立容器部署场景,应使用heroku.yml,不需要再沿用之前单项目的Procfile方案
    Procfile仅适用于Buildpack构建的非容器化部署、或者单容器镜像的进程声明,无法支持多Dockerfile分别构建不同服务镜像的需求,heroku.yml是Heroku官方针对多容器部署场景推出的原生配置方案。
  • 你可以直接基于现有docker-compose.yml改写得到heroku.yml,参考配置如下:
    注意:Heroku会为每个dyno自动分配端口,不需要在配置中写端口映射,所有服务需要监听0.0.0.0:$PORT,不要硬编码固定端口。
build:
  docker:
    # 依次声明每个服务对应的Dockerfile路径
    frontend: ./Docker/Dockerfile.frontend
    notification: ./Docker/Dockerfile.notification
    user: ./Docker/Dockerfile.user
    stripe: ./Docker/Dockerfile.stripe
run:
  # 每个服务对应启动命令,替换为你实际的Gunicorn启动参数
  frontend: gunicorn <你的前端入口模块>:<app实例名> --bind 0.0.0.0:$PORT
  notification: gunicorn <你的通知服务入口模块>:<app实例名> --bind 0.0.0.0:$PORT
  user: gunicorn <你的用户服务入口模块>:<app实例名> --bind 0.0.0.0:$PORT
  stripe: gunicorn <你的stripe服务入口模块>:<app实例名> --bind 0.0.0.0:$PORT
  • 部署完成后操作
    Heroku默认只会启动web类型的dyno,其他类型的dyno需要你手动扩容启动,可通过Heroku控制台操作,也可以执行命令heroku ps:scale notification=1 user=1 stripe=1按需调整每个服务的dyno数量和规格。
  • 额外注意事项
    普通层级的Heroku dyno没有内部私有网络,服务之间互相调用需要使用对应的公网域名,不要尝试用内部端口直接访问。

内容的提问来源于stack exchange,提问作者DidSquids

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.03 18:48:02