Я пытаюсь докернизировать веб-приложение Flask / React для простоты разработки / совместной работы, но возникают проблемы при получении правильного ответа от приложения. Я могу получить образ, и сервер Flask запущен в контейнере, но возникают проблемы с его обработкой.
Мы используем HAProxy для пересылки запросов, и все работает нормально, когда у меня есть прокси и веб-сервер работает локально Проблема заключалась в получении docker в миксе. Я считаю, что это должно быть проблема с отображением портов, но у меня нет идей, и я чувствую, что мне не хватает ключевых тонкостей HAProxy / Docker. Файл proxy.cfg выглядит следующим образом (без посторонних хостов):
global
maxconn 4096
pidfile ~/tmp/haproxy.pid
defaults
log global
log 127.0.0.1 local0
log 127.0.0.1 local1 notice
mode http
timeout connect 300000
timeout client 300000
timeout server 300000
maxconn 2000
option redispatch
retries 3
option httpclose
option httplog
option forwardfor
option httpchk HEAD / HTTP/1.0
frontend dev
bind *:8080 ssl crt ./proxy.pem
acl allow_web path_beg /app/
use_backend be_web if allow_web
backend be_web
balance roundrobin
server web_5000 localhost:5000
Dockerfile:
FROM node:10.6.0
RUN apt-get update
RUN apt-get install -y python-pip python-dev build-essential
WORKDIR /usr/src/app
COPY ./package.json .
RUN npm install
COPY . .
RUN pip install -e ./server
CMD ["npm", "start"]
docker -compose.yml:
version: "3"
services:
userportal:
build: .
volumes:
- /usr/src/app/node_modules
- .:/usr/src/app
ports:
- "5000:5000"
Сервер Flask связывается с портом 5000, следовательно, сопоставление. Я попытался заменить IP-адрес контейнера на localhost
(например, 172.19.0.2:5000
), но тот же результат.
Редактировать:
Я попытался добавить прокси как службу в docker -compose.yml и изменение хоста с localhost:5000
на userportal_1:5000
, но это привело к 503. docker -compose.yml:
services:
userportal:
build: .
volumes:
- /usr/src/app/client/node_modules
- ./client:/usr/src/app/client
- ./server:/usr/src/app/server
ports:
- "5000:5000"
proxy:
image: haproxy:alpine
volumes:
- ./haproxy.cfg:/usr/local/etc/haproxy/haproxy.cfg:ro
- ./proxy.pem:/certs/proxy.pem
ports:
- "8080:8080"