【发布时间】:2019-07-17 19:11:42
【问题描述】:
我正在尝试获得一个基本的 Flask 后端和前端框架,它们位于不同的容器中,通过 docker-compose 相互通信。
这里需要注意的是,我使用的是 Windows 10 家庭版,所以我需要使用 Docker 工具箱,所以我必须为端口转发添加一些网络规则。但是,我的后端似乎无法访问http://localhost:5000。我被 ECONNREFUSED 拒绝了。我只是想在前端和后端通信之间进行基本通信,以模拟前端/api 通信。
根据我的端口转发规则,我可以访问http://localhost:8080 并且可以查看应用程序的静态部分。但是,我无法访问后端,或者我可以判断他们是否正在通信。 Flask 和 Docker 都是新手,所以请原谅我的无知。来自 .NET 背景,Windows 似乎真的让这很痛苦。感谢您的帮助。
这是我的项目结构:
这是我的 application.py:
# Start with a basic flask app webpage.
from flask_socketio import SocketIO, emit
from flask import Flask, render_template, url_for, copy_current_request_context
app = Flask(__name__)
app.config['SECRET_KEY'] = 'secret!'
app.config['DEBUG'] = True
#turn the flask app into a socketio app
socketio = SocketIO(app)
@app.route('/')
def index():
#only by sending this page first will the client be connected to the socketio instance
return render_template('index.html')
if __name__ == '__main__':
socketio.run(app)
后端的 Dockerfile:
FROM python:2.7
ADD ./requirements.txt /backend/requirements.txt
WORKDIR /backend
RUN pip install -r requirements.txt
ADD . /backend
ENTRYPOINT ["python"]
CMD ["/backend/application.py"]
EXPOSE 5000
前端的 Dockerfile:
FROM node:latest
COPY . /src
WORKDIR /src
RUN npm install --loglevel warn
RUN npm run production
EXPOSE 8080
CMD [ "node", "server.js" ]
还有我的 docker-compose.yml:
version: '2'
services:
backend:
build:
context: ./backend
dockerfile: Dockerfile
restart: always
ports:
- "5000:5000"
env_file:
- .env
frontend:
build: ./frontend
ports:
- "8080:8080"
【问题讨论】:
标签: docker flask docker-compose