Я пытаюсь получить базовый бэкэнд Flask и каркас внешнего интерфейса в отдельных контейнерах, взаимодействующих друг с другом через docker-compose.
Предостережение заключается в том, что я использую Windows 10 Home, поэтому мне нужно использовать Docker Toolbox, поэтому мне пришлось добавить несколько сетевых правил для переадресации портов.Однако, я не могу получить доступ к http://localhost:5000 для моего бэкэнда.Я получаю ECONNREFUSED.Я просто пытаюсь получить базовую связь между интерфейсом и интерфейсом для имитации интерфейса / API-интерфейса.
Учитывая мои правила переадресации портов, я могу получить доступ к http://localhost:8080 и просмотреть статические части приложения.Тем не менее, я не могу получить доступ к бэкэнду или могу сказать, общаются ли они с ним.Новичок в Flask и Docker, так что, пожалуйста, прости мое невежество.Исходя из .NET, Windows, кажется, действительно делает это болезненным.Спасибо за вашу помощь.
Вот моя структура проекта:
Вот мое приложение.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"