Реагировать не делая запрос из docker контейнера - PullRequest
0 голосов
/ 22 марта 2020

, поэтому я разрабатываю базовый c Express бэкэнд для приложения React. Запрос делается следующим образом:

axios.get(`${serverLocation}/api/graph/32`).then(res => {
            this.setState({datag: res.data});
            for(var key in this.state) {
                data.push(this.state[key]);
            }
        });

Расположение сервера выглядит как http://IP: PORT . API-интерфейс правильный, и все, что я вижу, и на моей машине разработки это работает. React делает успешные запросы к серверу в указанном месте и т. Д. c. Дело в том, что когда я помещаю это в 2 отдельных docker контейнера через docker -compose.yml, это не будет работать. Это мой docker -compose.yml:

version: '2.0'
services:
  server:
    restart: always
    container_name: varno_domov_server
    build: .
    ports:
    - "8088:5000"
    links:
    - react
    networks:
      - varnodomovnetwork
  react:
    restart: always
    container_name: varno_domov_client
    build: client/
    ports:
    - "8080:3000"
    networks:
      - varnodomovnetwork
networks:
  varnodomovnetwork:
    driver: bridge

У меня также есть пользовательские файлы Docker, сервер выглядит так:

FROM node:10

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 5000
CMD [ "npm", "start" ]

А клиент выглядит так:

FROM node:10

WORKDIR /usr/src/app

COPY package*.json ./

RUN npm install

COPY . .

EXPOSE 3000
CMD [ "npm", "start" ]

Если вы зашли так далеко, спасибо, что нашли время. Я открыт для любых предложений, касающихся docker здесь, часть React не написана мной. Если какая-либо дополнительная информация требуется, сообщите мне в комментариях. Изоляция делает меня очень доступным:)

1 Ответ

0 голосов
/ 23 марта 2020

Итак, дело в том, что React отправлял запросы на сервер. Я неопытен в React, поэтому я искал журналы в терминале / bash, когда они действительно были доступны для просмотра в браузере.

Проблема заключалась в том, что мой сервер находился в паблике c IP и общение через HTTP. Это означало, что браузер заблокировал содержимое (смешанное содержимое: страница была загружена через HTTPS, но запросил небезопасную конечную точку XMLHttpRequest), из-за чего мои графики не отображали данные. Легкое решение - просто пропустить браузер go с небезопасным контентом, хотя я не об этой жизни. Поэтому я сделал следующее: Основная проблема заключалась в том, что мой сервер и клиент - это 2 отдельных контейнера. Поэтому на отдельных портах. Что я сделал, так это отредактировал мою конфигурацию nginx, чтобы прокси-запросы на мой домен выглядели как «https://www.example.come/api» для пересылки в порт контейнера сервера на компьютере сервера.

Надеюсь, это кому-нибудь поможет:)

...