Node.js 如何使用docker compose设置NodeJs客户端和服务器?
我有以下Node.js 如何使用docker compose设置NodeJs客户端和服务器?,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我有以下node.js脚本: client.js const net = require('net'); const client = new net.Socket(); client.connect(9233, 'server', (error) => { console.log('Connected to packet feed'); }); client.on('error', (err) => { console.log(err); }) const n
node.js
脚本:
client.js
const net = require('net');
const client = new net.Socket();
client.connect(9233, 'server', (error) => {
console.log('Connected to packet feed');
});
client.on('error', (err) => {
console.log(err);
})
const net = require('net');
const server = net.createServer((socket) => {
});
server.listen(9233, 'localhost');
server.js
const net = require('net');
const client = new net.Socket();
client.connect(9233, 'server', (error) => {
console.log('Connected to packet feed');
});
client.on('error', (err) => {
console.log(err);
})
const net = require('net');
const server = net.createServer((socket) => {
});
server.listen(9233, 'localhost');
以及下面的docker compose.yaml
version: '3'
services:
server:
build: .
volumes:
- ./:/usr/src/app
command: node server.js
ports:
- "9233:9233"
client:
build: .
volumes:
- ./:/usr/src/app
environment:
command: node clients.js
links:
- server
depends_on:
- server
如果在我的机器上运行node server.js
和node client.js
,它们会成功地相互连接
但是如果我运行docker compose up
,我将得到以下错误:
client_1 | Error: connect ECONNREFUSED 172.26.0.2:9233
client_1 | at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1056:14) {
client_1 | errno: 'ECONNREFUSED',
client_1 | code: 'ECONNREFUSED',
client_1 | syscall: 'connect',
client_1 | address: '172.26.0.2',
client_1 | port: 9233
client_1 | }
我做错了什么?
我已经尝试了我能做的一切,包括
docker compose run--service ports
而不是docker compose up
在服务器中。listen()
调用时,需要指定神奇的IPv4“everywhere”地址0.0.0.0。如果在那里指定localhost
,则无法从容器外部访问它。(它只接受来自容器的localhost
的连接,每个容器都有自己的localhost
)您是否尝试使用不同的端口来连接实例?尝试将左侧端口更改为肯定未使用的端口,如15000,然后再次运行。