我有一个以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"]