Docker контейнеры не общаются между собой только на AWS - PullRequest
0 голосов
/ 18 июня 2020

У меня есть проект с python flask в качестве бэкэнда, и я реагирую как интерфейс

Я завершаю проект с помощью docker -compose, который запускает 2 экземпляра: один для клиента и один для сервера.

Когда я запускаю проект в windows docker все работает отлично. но при его развертывании в AWS Ec2 запрос от клиента к серверу вообще не проходит.

Весь код проекта - https://github.com/RickyDa/WAID---Web-Application-Injection-Detector

соответствующий код от клиента, userAx ios. js -

import axios from 'axios';
import https from 'https';
export default axios.create({
    baseURL: 'https://localhost:5000/user',
    headers: {
        'Access-Control-Allow-Origin': '*',
        'Access-Control-Allow-Methods': 'GET, POST, PUT, DELETE',
        'Access-Control-Allow-Headers': 'Authorization'
    },
    httpsAgent: new https.Agent({
        rejectUnauthorized: false,
    }),
});

Запрос на вход, login.jsx -

onSubmit = async (e) => {
        e.preventDefault();
        this.setState({wrongEmailOrPassword: false});
        let userInfo = {
            email: this.state.email,
            password: this.state.password
        };
        try {
            const {data} = await userAxios.post('login', userInfo);
            sessionStorage.clear();
            sessionStorage.setItem('user',JSON.stringify(data));
            this.setState({redirect: true},()=>console.log(this.state));
        } catch (error) {
            this.setState({wrongEmailOrPassword: true});
            console.log('Error on login', error);
        }
    };

Api в flask для входа в систему -

@app.route('/user/login', methods=['POST'])
def login():
    is_auth, user = user_service.login(request.get_json())
    if is_auth:
        user_payload = jsonify(
            UserPayload(id=user.id, mail=user.mail, username=user.username, role=user.role).serialize())
        return user_payload
    else:
        return Response(status=500)

docker -составить файл -

version: "3.7"

services:

  server:

    build: 
        context: ./WAID-server
        args:
          MODE: --server

    ports:
      - 5000:5000

  client:
    build: 
        context: ./WAID-client

    stdin_open: true

    depends_on:
      - server

    ports:
      - 3000:3000

Backend Dockerfile -

FROM python:3.7

LABEL authors="Ricky Danipog , Ronen Rozen"

COPY . /app

WORKDIR /app

ARG MODE

ENV MODE=${MODE}

RUN pip install --no-cache-dir  -r requirements.txt

EXPOSE 5000

CMD ["sh", "-c", "python run.py $MODE"]

Клиент Dockerfile -

# pull official base image
FROM node:13.12.0-alpine

# set working directory
WORKDIR /app

# add `/app/node_modules/.bin` to $PATH
ENV PATH /app/node_modules/.bin:$PATH

# install app dependencies
COPY package.json ./
COPY package-lock.json ./
RUN npm install --silent
RUN npm install react-scripts@3.4.1 -g --silent

# add app
COPY . ./

# start app
CMD ["npm", "start"]
...