Как я могу работать с localhost? - PullRequest
       28

Как я могу работать с localhost?

1 голос
/ 02 августа 2020

У меня есть приложение для реагирования, использующее сервер разработки webpack. Сервер подключается к другому веб-API для CRUD. Я могу использовать его при локальном запуске, но при создании контейнера приложение не подключается.

ошибка

Конфигурация веб-пакета

  devServer: {
    contentBase: resolve(__dirname, 'dist'),
    host: 'localhost',
    port: 3001,
    hot: true,
    open: true,
    inline: true,
    proxy: {
      '/api': {
        target: 'http://localhost:4567/streams',
        secure: false,
        pathRewrite: { '^/api': '' },
        changeOrigin: true,
      },
    },
  },

dockerfile

FROM node:12-alpine

WORKDIR /app

COPY ./package*.json ./

RUN npm ci

COPY . ./

docker - составить

version: '3.7'

services:
  web:
    container_name: fm-admin
    restart: always
    build:
      context: .
    ports:
      - '3001:3001'
    command: npm start
    environment:
      - CHOKIDAR_USEPOLLING=true
    stdin_open: true

Более того, когда я поменял местами хост с localhost на 0.0.0.0 , я получаю следующую ошибку:

[HPM] Error occurred while trying to proxy request  from 0.0.0.0:3001 to http://localhost:4567/streams (ECONNREFUSED) (https://nodejs.org/api/errors.html#errors_common_system_errors)

Но api потоков работает.

Надеюсь, мне здесь помогут.

1 Ответ

0 голосов
/ 02 августа 2020

Весь контекст не очень точно описан в вопросе, особенно служба, прослушивающая 'http://localhost:4567.

Я предполагаю, что target: 'http://localhost:4567/streams' выполняется внутри контейнера, который прослушивает :3000 в попытка прокси на :4567. Если это правда, то отсутствие подключения - это нормально. Когда localhost используется внутри контейнера, контейнер будет пытаться проксировать себя на :4567.

Если вы пытаетесь связаться со службой, которая прослушивает :4567 на хост-машине, вы вероятно, потребуется использовать IP-адрес интерфейса docker0 вместо localhost, как предложено в этом сообщении .

...