加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

node.js – 容器之间的Docker HTTP请求

发布时间:2020-12-16 03:44:31 所属栏目:安全 来源:网络整理
导读:我正处于学习如何使用Docker的第一阶段,所以我正在尝试基本的东西.我创建了两个需要通过HTTP请求交换数据的Node Express服务. 我的docker-compose.yml文件 networks: isolation-network: driver: bridgeservices: service1-nodejs: build: context: ./servic

我正处于学习如何使用Docker的第一阶段,所以我正在尝试基本的东西.我创建了两个需要通过HTTP请求交换数据的Node Express服务.

我的docker-compose.yml文件

networks:
  isolation-network:
    driver: bridge

services:
  service1-nodejs:
    build:
    context: ./service1/
    dockerfile: .docker/node.dockerfile
    ports:
      - "10000:9000" 
      - "10001:5858" 
    env_file: ./service1/.docker/env/app.${APP_ENV}.env
    networks:
      - isolation-network

  service2-nodejs:
    build:
    context: ./service2/
    dockerfile: .docker/node.dockerfile
    ports:
      - "10010:9000" 
      - "10011:5858" 
    env_file: ./service2/.docker/env/app.${APP_ENV}.env
    networks:
      - isolation-network

service1使用request module向服务2发出POST请求.

request({ url: "http://service2:10010/api/",method: "POST",headers: { "Content-Type": "application/json" },json: true,body: { ... },time: true
            },function (err,res,body) {
                if (!err && res.statusCode == 200) {
                    // success
                }

                // failed
            });

此调用的结果是:

{ Error: connect ECONNREFUSED 172.18.0.3:10010}

使用邮递员我可以在http:// localhost:10010 / api /上测试service2,我可以确认它们实际上可以到达并按预期工作.

我错过了什么,但无法弄清楚.这里出了什么问题?

最佳答案
See the document.端口10010是主机端口,但不是容器端口.直接访问service2容器时应使用9000.

所以只需将“http:// service2:10010 / api /”更改为“http:// service2:9000 / api /”即可.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读