【问题标题】:How to connect to another docker service from one docker service in a docker swarm cluster?如何从 docker swarm 集群中的一个 docker 服务连接到另一个 docker 服务?
【发布时间】:2018-11-08 23:16:32
【问题描述】:

在docker swarm集群中,启动了两个服务:

  • sv_web
  • sv_api

web的stack部署文件为:

version: "3"
services:
  web:
    image: XXX/sv_web:latest
    ports:
      - "80:80"
    networks:
      - webnet
networks:
  webnet:

部署:

docker stack deploy -c ~/docker-compose-web.yml sv

api的stack deploy文件为:

version: "3"
services:
  web:
    image: XXX/sv_api:latest
    ports:
      - "81:81"
    networks:
      - webnet
networks:
  webnet:

部署:

docker stack deploy -c ~/docker-compose-api.yml sv

现在想在sv_web 应用程序中连接sv_api 服务。试着写:

api_server = "sv_api:81"

但是部署后无法连接sv_api服务。如果使用集群中主机的真实IP,可以找到:[HOST]:81。

那么如何通过这种方式从web service连接到API service呢?

【问题讨论】:

    标签: api docker service microservices docker-swarm


    【解决方案1】:

    连接你应该使用

    依赖

    services:
        some_service:
            image: link
            depends_on:
               -api
        api:
          image: link
    

    更多信息参见文档:docker docs

    【讨论】:

    • 我试过了。但是没修。我正在使用两个文件来部署这两个项目。它们位于不同的文件中。我在web部署yaml文件中尝试了- sv_api和- api,同样的结果无法连接到sv_api服务。
    • 您遇到错误了吗?两个服务都起来了?什么是显示 docker-compose ps ?
    • 我正在使用一个名为 http-proxy 的 npm 库。要连接 Api 服务器,例如:proxy.web(req, res, { target: 'http://mytarget.com:8080' });。因此,如果将target 地址更改为sv_api:81。它会失败,因为那不是 http 地址。
    • 运行容器并检查它的IP地址容器。尝试通过 IP 地址容器连接。
    猜你喜欢
    • 1970-01-01
    • 2020-12-27
    • 1970-01-01
    • 1970-01-01
    • 2017-12-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-03
    相关资源
    最近更新 更多