Не удается подключить сервер SocketIO из док-контейнера к внешней стороне - PullRequest
0 голосов
/ 12 октября 2018

Я пытаюсь подключить свой сервер 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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...