ฉันกำลังพยายามเชื่อมต่อไคลเอ็นต์ TCP ในคอนเทนเนอร์ A กับเซิร์ฟเวอร์ TCP ในคอนเทนเนอร์ B การเรียกใช้ docker-compose up ส่งผลให้เกิดข้อผิดพลาด ECONNREFUSED ที่ฝั่งไคลเอ็นต์ 为什么呢?
ไคลเอ็นต์ TCP มีลักษณะดังนี้:
var net = require('net');
var client = new net.Socket();
client.connect(1337, function() {
console.log('Connected');
client.write('Hello, server! Love, Client.');
});
client.on('data', function(data) {
console.log('Received: ' + data);
// client.destroy(); // kill client after server's response
});
client.on('close', function() {
console.log('Connection closed');
});
Dockerfile ไคลเอนต์ TCP มีลักษณะดังนี้:
FROM node:latest
RUN mkdir /app
WORKDIR /app
ADD . /app
ADD package.json /app
RUN npm install
EXPOSE 1337
ENV PATH /app/node_modules/.bin:$PATH
CMD npm start
เซิร์ฟเวอร์ TCP มีลักษณะดังนี้:
var net = require('net');
var server = net.createServer(function(socket) {
socket.write('Echo server\r\n');
socket.pipe(socket);
});
server.listen(1337);
Dockerfile เซิร์ฟเวอร์ TCP มีลักษณะดังนี้:
FROM node:latest
RUN mkdir /app
WORKDIR /app
ADD . /app
ADD package.json /app
RUN npm install
EXPOSE 1337
ENV PATH /app/node_modules/.bin:$PATH
CMD npm start
docker-compose.yml มีลักษณะดังนี้:
version: "3"
services:
tcpclient:
build: ./tcpclient
ports:
- "8000:8000"
depends_on:
- tcpserver
tcpserver:
build: ./tcpserver
ports:
- "8001:1337"
ข้อผิดพลาดในการเชื่อมต่อมีลักษณะดังนี้:
tcpclient_1 | > [email protected] start /app
tcpclient_1 | > node tcpclient.js
tcpclient_1 |
tcpclient_1 | events.js:137
tcpclient_1 | throw er; // Unhandled 'error' event
tcpclient_1 | ^
tcpclient_1 |
tcpclient_1 | Error: connect ECONNREFUSED 127.0.0.1:1337
tcpclient_1 | at Object._errnoException (util.js:1003:13)
tcpclient_1 | at _exceptionWithHostPort (util.js:1024:20)
tcpclient_1 | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1194:14)
tcpclient_1 | npm ERR! code ELIFECYCLE
ความช่วยเหลือจะได้รับการชื่นชมอย่างมาก
tcpclient_1 | tcpclient_1 | > [email protected] start /app tcpclient_1 | > node tcpclient.js tcpclient_1 | tcpclient_1 | Connected
อย่างไรก็ตาม หลังจากเชื่อมต่อแล้ว ไคลเอ็นต์จะไม่ได้รับข้อมูล สามารถดูโค้ดได้ที่นี่: github.com/wassbeer/docker/tree/networking -ในการเขียน - person Wasbeer   schedule 01.02.2018docker-compose up
ไม่ได้บันทึกเอาต์พุตทั้งหมดในกล่องเครื่องมือ Docker เมื่อรันdocker-compose logs --follow tcpclient
ฉันสามารถเห็นการสื่อสารระหว่างเซิร์ฟเวอร์และไคลเอ็นต์ทั้งหมด - person Wasbeer   schedule 02.02.2018