Docker Compose、Heroku、主机名链接和生产部署

12

我目前拥有一个简单的应用程序,由几个微服务(数据库、前端node应用程序、用户服务等)组成,每个服务都有自己的Dockerfile文件,并且有一个docker-compose.yml文件,可以在本地部署环境中将它们全部启动起来,docker-compose up即可。

对于生产环境,我正在寻找 Heroku(也可以考虑其他 PaaS),但是 Heroku 不支持 Docker Compose。虽然不是特别好,但目前可以接受。

问题在于,在本地部署时使用 Docker Compose 时,不同的服务会自动通过主机名链接(如果 mongo 数据库服务被称为“mydatabase”,则我可以在其他服务中使用mongodb://mydatabase/whatever)。那么,在 Heroku 上会发生什么情况呢?在这种情况下,在开发和生产之间保持不同服务的链接的最佳实践是什么?

谢谢!

2个回答

10
Docker compose创建了一个docker虚拟网络,允许您使用容器名称作为主机名连接容器。Heroku不直接支持docker-compose,因为Docker compose实际上是用于本地开发而非生产环境。
对于生产环境,Docker有Docker swarm,它与Docker compose非常相似,但旨在用于生产环境。您可以使用相同的docker-compose文件(在swarm中称为stackfile)部署到swarm上。在docker swarm中,您可以像在docker-compose中一样使用相同的服务名称连接容器。
通过DockerHero add-on,Heroku支持Docker swarm,您可以使用它将Docker容器连接并运行在Heroku上。

1

1
请问您能否提供有关容器之间通信的部分链接? - riyasyash

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接