Docker容器不仅仅在AWS上彼此通信

时间:2020-06-18 15:35:48

标签: docker amazon-ec2 docker-compose dockerfile

我有一个以python flask为后端并作为前端做出反应的项目

我用docker-compose包装了该项目,该项目运行2个实例,一个用于客户端,一个用于服务器。

当我在Windows docker中运行项目时,一切运行良好。 但是在将它部署到AWS Ec2中时,从客户端到服务器的请求根本不会传递。

所有项目代码-https://github.com/RickyDa/WAID---Web-Application-Injection-Detector

来自客户端 userAxios.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-

@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-compose文件-

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

后端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"]

0 个答案:

没有答案