node.js - Docker 容器不响应另一个容器的请求

标签 node.js docker coap

我开始使用 Docker。我正在创建一个带有客户端和服务器的 COAP 应用程序。在此应用程序中,客户端发送一个简单的请求,服务器必须对其做出响应。我构建了在 Node.js 中运行代码的镜像。然后我使用了 docker-compose.yml 文件,我将在代码部分向您展示该文件。但是,服务器似乎没有响应客户端请求。

我尝试查看 IP 地址是否分配正确,一切似乎都正常。我还尝试在 docker0 上使用 Wireshark,我可以看到从客户端到服务器的 coap 数据包,但我没有答案。这是 docker-compose.yml

services:
 Server_Coap:
  build: './Server_Coap'
  image: 'user/mynode:latest'
  container_name: server
  ports: 
  - "8081:5683"
  networks:
   rete:
    ipv4_address: 172.19.0.3
networks:
 rete:
   ipam:
    driver: default
    config:
     - subnet: 172.19.0.0/24

这是客户端代码:

const coap = require('coap'),
req = coap.request('coap://172.19.0.3')
console.log("Client Request...")
req.on('response' , function(res){
    res.pipe(process.stdout)
})

req.end()

这是服务器代码:

var coap = require('coap')
,server = coap.createServer()


server.on('request' , function(req, res){
    console.log("New request")
    res.end('Hello ' + req.url + '\n')
})

// the default CoAP port is 5683
server.listen(function() {
    console.log("Server started")
  })

这是我的服务器 Dockerfile:

FROM node:latest

WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install 
COPY . .
EXPOSE 5683
CMD ["node" , "server.js"]

这是我为客户端提供的 Dockerfile:

FROM node:latest 

WORKDIR /usr/src/app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 5683
CMD ["node" , "client.js"]

我想从服务器得到答案。 这是我得到的错误: │ 错误:247秒内没有回复 │ 在 Timeout._onTimeout (/usr/src/app/node_modules/coap/lib/retry_send.js:74:16) │ 在 listOnTimeout (内部/timers.js:531:17) │ 在 processTimers (内部/timers.js:475:7) │ 在 OutgoingMessage 实例上发出“错误”事件: │ 在 RetrySend.emit (events.js:209:13) │ 在 Timeout._onTimeout (/usr/src/app/node_modules/coap/lib/retry_send.js:77:12) │ 在 listOnTimeout (内部/timers.js:531:17) │ 在 processTimers (内部/timers.js:475:7) { │ 重传超时:247

最佳答案

您必须将客户端 docker 添加到网络。 IE:

services:
 Server_Coap:
  build: './Server_Coap'
  image: 'user/mynode:latest'
  container_name: server
  ports: 
  - "8081:5683"
  networks:
   rete:
    ipv4_address: 172.19.0.3
 Client_Coap:
  build: './Client_Coap'
  image: 'user/mynode:latest'
  container_name: client
  networks:
   rete
networks:
 rete:
   ipam:
    driver: default
    config:
     - subnet: 172.19.0.0/24

关于node.js - Docker 容器不响应另一个容器的请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57904239/

相关文章:

c - 在基于 CC2538 的 RE-Mote 板中使用浮点用于带有 Contiki OS 的 CoAP 服务器

json - nodejs - 解析分块的 twitter json

node.js - Mongoose 查找查询传递变量

node.js - 将 typescript 定义模块声明匹配到 Node 模块导入

tcp - 具有 CoAP 和 NAT Traversal 的物联网设备

node.js - 未找到 Heroku 应用程序

proxy - 在代理后面拉取 docker 镜像

docker - Docker容器未安装数据卷

node.js - 通过Docker镜像选择Node变量LISTEN和SERVER