Я пытаюсь подключить свой сервер SocketIO в Docker-контейнере NodeJS, но на моем клиенте появляется следующее сообщение:
GET http://localhost:4500/socket.io/?EIO=3&transport=polling&t=MPdyL6j net::ERR_CONNECTION_REFUSED
Мой Docker-файл для сервера выглядит следующим образом:
FROM node:alpine
WORKDIR /
RUN apk update && apk upgrade && \
apk add --no-cache bash git openssh
RUN npm install -g nodemon
# Copy package.json
COPY package.json /package.json
# Install packages
RUN npm install
EXPOSE 4500
CMD nodemon ./server/index.js
И в моем файле docker-compose у меня есть:
services:
socketio:
build: ./packages/public/socketio
hostname: socketio
restart: always
container_name: socketio
volumes:
- ./packages/public/socketio:/server
- ./packages/config:/config
environment:
- PORT=4500
- NODE_ENV=production
- REDIS_HOST=redis
ports:
- "4500:4500"
depends_on:
- redis
Наконец, вот как я запускаю сервер (в классе):
const express = require('express');
const app = express();
const server = app.listen(PORT);
this.ioServer = require('socket.io').listen(server);
...
Я думаю, что яЯ делаю это правильно, , если я запускаю тот же сервер из-за пределов контейнера, я могу подключиться, используя :
import io from 'socket.io-client';
const socket = io.connect('http://localhost:4500/', { 'forceNew': true });
socket.on('connect', () => {
console.log('Client connected...');
socket.on('new_order', (message) => {
console.log(message);
});
, но не используя его из Docker.