更正群集中的服务主机名configuration

在使用docker-machine创build的本地3群集群(现在)时,我遇到了一些问题。

所有的服务都在同一个networking,并在本地运行docker-compose run..在使用服务名称作为主机名连接服务方面没有问题,例如:

 # docker-compose.yml --- version: '3' services: app: build: . # ... depends_on: - db db: image: postgres:9.6 

我们正在讨论一个Ruby应用程序,数据库configuration如下:

 # database.yml --- default: &default # ... typical stuff username: postgres host: postgres # The name of the service in docker-compose.yml development: <<: *default production: <<: *default host: <%= ENV['DATABASE_HOST'] %> database: <%= ENV['DATABASE_NAME'] %> username: <%= ENV['DATABASE_USERNAME'] %> password: <%= ENV['DATABASE_PASSWORD'] %> 

AFAIK在本地开发时看起来很标准。 实际上, app服务使用服务名称作为主机名正确连接到postgres服务。 这也发生在sidekiq服务和rabbitmq之一。

这个问题,我几乎100%肯定我错过了一个非常基本的东西,是当我的堆栈部署到一个群体,服务不能够看到对方,所以当我检查日志中的一些服务我看到连接被拒绝的app服务。

我不确定是否必须在pipe理器节点中configuration某些内容,或者该pipe理器能够pipe理主机名称,服务名称和物理地址之间的路由。

我真的很感激,如果有人能把我放在正确的方向如何configuration服务部署到群体。 正如我所提到的,这是在一个使用docker-machine create... 3个节点的本地群集中完成的,而且我已经运行了eval $(docker-machine env manager-node)

提前致谢!