【问题标题】:Docker compose, heroku, hostname links and production deploymentDocker compose、heroku、主机名链接和生产部署
【发布时间】:2020-11-20 00:51:48
【问题描述】:

我目前有一个简单的应用程序,由几个微服务(数据库、前端节点应用程序、用户服务等)组成,每个微服务都有自己的 Dockerfile 和一个 docker-compose.yml 文件来让它们全部启动本地部署环境。所以docker-compose up 一切正常。

对于生产,我正在寻找不支持 Docker Compose 的 Heroku(对其他 PaaS 开放)。不是特别好,但现在可以忍受。

问题是,在本地部署中使用 Docker Compose,不同的服务通过其主机名自动链接(如果 mongo 数据库服务称为“mydatabase”,我可以在我的其他服务中使用mongodb://mydatabase/whatever)。

那么,问题是,Heroku 上的这些链接会发生什么?在这种情况下,让不同服务在开发和生产之间保持一致的最佳做法是什么?

谢谢!

【问题讨论】:

    标签: node.js docker heroku docker-compose


    【解决方案1】:

    Docker compose 创建一个 docker 虚拟网络,允许您使用容器名称作为主机名来连接容器。 Heroku 不直接支持 docker-compose,因为 Docker compose 真正适用于 在您自己的机器上进行本地开发,而不是用于生产。

    对于生产环境,Docker 有Docker swarm,它与 Docker compose 非常相似,但它是为生产环境设计的。您可以使用相同的 docker-compose 文件(在 swarm 中称为 stackfile)在 swarm 上部署。 在 docker swarm 中,您可以使用相同的服务名称连接您拥有的容器,就像在 docker-compose 中一样。

    Heroku 通过 DockerHero add-on 支持 Docker swarm,您可以使用它来连接 Docker 容器并在 Heroku 上运行。

    【讨论】:

      【解决方案2】:

      如果其他人在当前搜索解决方案时遇到此问题,Heroku 提供了一种方法,使用类似于 docker-compose.yml 的文件,称为 heroku.yml。您只需将其放在项目的根目录中并对其进行结构化以调用您的 Dockerfile:https://devcenter.heroku.com/articles/build-docker-images-heroku-yml

      【讨论】:

      • 能否请您也链接它讨论容器之间通信的部分?
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-10-02
      • 2017-04-05
      • 2021-01-01
      • 1970-01-01
      • 2021-10-09
      相关资源
      最近更新 更多