我在使用docker-machine
创建的本地3集群(现在)部署堆栈时遇到了一些麻烦。
所有服务都在同一个网络中,当在本地运行docker-compose run..
时,我在使用服务名称作为主机名连接服务时没有问题,例如:
# docker-compose.yml
---
version: '3'
services:
app:
build: .
# ...
depends_on:
- db
db:
image: postgres:9.6
我们正在谈论Ruby应用程序,数据库配置如下;
# 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
服务。
我不确定是否必须在管理器节点中配置某些内容,或者此管理器能够管理主机名称,服务名称和物理地址之间的路由。
如果有人能够指导我如何配置部署到群组的服务,我真的很感激。正如我所提到的,这是在使用docker-machine create...
创建3个节点的本地群中完成的,我已经运行eval $(docker-machine env manager-node)
。
提前致谢!