【问题标题】:How do I expose ports on Heroku with a Dockerfile?如何使用 Dockerfile 在 Heroku 上公开端口?
【发布时间】:2017-06-14 14:48:32
【问题描述】:

我正在尝试在 Heroku 上部署 Docker 映像,并尝试了解如何公开多个端口。这是我试图在 Heroku 部署中运行的 Docker 命令:

docker run \
    -p 2222:22 \
    -p 33306:3306 \
    -p 27017:27017 \
    -p 28015:28015 \
    -p 29015:29015 \
    -p 8080:8080 \
    test/db-migration

如何在 Heroku 中执行此操作?

【问题讨论】:

  • 这就是这样做的方法。你有什么错误吗?
  • 我没有任何错误,但我认为 Heroku 不允许您公开特定端口。它不会为您分配端口吗?当我在 Node 应用程序中公开端口时,我们使用 process.env.PORT 访问它。

标签: heroku docker


【解决方案1】:

您不能 - 您应该使用 $PORT 环境变量,该变量将被随机分配,然后由 Heroku 路由器映射到端口 80。此外,仅接受 http 请求。详情请见https://devcenter.heroku.com/articles/container-registry-and-runtime#dockerfile-commands-and-runtime

【讨论】:

  • 那么如何创建多个PORT's?
  • 你不能——它与 buildpack 部署相同——Heroku 路由器接受端口 443/80 上的请求,然后在其随机分配的端口号中将请求代理到您的应用程序。一个应用只能获得 1 个 $PORT 分配给它。
  • 约翰·贝农是正确的。你不能在heroku上做到这一点。你只会得到$PORT env var,就是这样。
  • 所以我在这个容器中有多个数据库。我假设如果我要使用 Heroku,我将需要创建多个应用程序,每个应用程序都公开一个 PORT,而不是一个公开多个 PORTs 的应用程序
  • 路由器只接受 http 请求 - 您将无法跨应用程序进行通信...您应该使用 Heroku Postgres DB 或通过插件。
【解决方案2】:

您可能想查看Dockhero 附加组件。这是在 Heroku 应用程序旁边部署补充资源的好方法,它支持 docker-compose 和多端口映射。 Web 应用程序本身仍应在 Heroku dynos 上运行。

【讨论】:

    猜你喜欢
    • 2020-07-21
    • 1970-01-01
    • 2014-01-17
    • 2021-11-16
    • 1970-01-01
    • 2016-11-06
    • 2018-07-20
    • 2018-03-20
    • 2019-11-10
    相关资源
    最近更新 更多