如何连接两个运行React和Python的Docker容器

时间:2020-05-16 21:28:40

标签: python docker flask

我有docker-compose.yml带出两个docker容器。

1。)前端-reactjs-在端口3000上运行

2。)后端-pythonflask)-在端口8083上运行

前端正在使用python通过URL POST"http://127.0.0.1:8083/api方法的axios服务器调用python服务器,但是现在由于它们在两个容器中运行,我可以通过该URL将前端连接到docker-compose.yml服务器吗?

这是我的version: "3.2" services: frontend: build: ./frontend environment: CHOKIDAR_USEPOLLING: "true" volumes: - /app/node_modules - ./frontend:/app ports: - 80:3000 depends_on: - backend backend: build: ./backends/jananath volumes: - ./backends/jananath:/usr/src/app environment: FLASK_APP: /usr/src/app/server.py FLASK_DEBUG: 1 FLASK_RUN_EXTRA_FILES: "/usr/src/app/banuka.txt" ports: - 5000:8083

server.py

这是from flask import Flask, render_template, request, url_for, redirect import os from os import path, walk from flask_cors import CORS app = Flask(__name__) CORS(app) PORT = 8083 @app.route('/api', methods=['POST', 'GET']) def upload_file(): file = request.files['file'] filename = file.filename print(filename) filepath = os.path.abspath(filename) print(filepath) response_ = {} response_['filename'] = str(filename) response_['filepath'] = str(filepath) return response_ if __name__ == '__main__': app.run(host='0.0.0.0', port=PORT, extra_files=extra_files) python服务器

axios

这是POSTfront-end到此server.py调用const onFormSubmit = async (e) => { e.preventDefault(); const formData = new FormData(); formData.append("file", file); try { const res = await axios.post("http://127.0.0.1:8083/api", formData, { // this url should change now? headers: { "Content-Type": "multipart/form-data", "Access-Control-Allow-Credentials": "true", "crossorigin": "true", }, }); const {filename, filepath} = res.data; setUploadedFile({filename, filepath}); } catch (error) { console.log(error); } }; 方法

window.location

我认为这里的问题是URL现在已更改,但我不知道如何解决。有人可以告诉我如何解决此问题,我应该输入正确的URL吗?

谢谢!

1 个答案:

答案 0 :(得分:0)

在您的React应用中尝试后端:8083,您将需要重建您的React映像。