У меня есть проект с 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"]