在swarm

时间:2017-08-14 21:24:24

标签: docker docker-compose docker-swarm docker-swarm-mode

我在使用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)

提前致谢!

0 个答案:

没有答案