Как я могу использовать nginx для балансировки нагрузки - простой файл node.js с docker compose? - PullRequest
0 голосов
/ 25 мая 2019

Я гуглю и пытаюсь использовать nginx для простого приложения node.js с докером compose.Но когда я смотрю на localhost: 8081 Мой запрос вернул меня как 502 неверный путь.Как я могу справиться с этой ошибкой?

Моя файловая структура ниже:

enter image description here

Балансировщик нагрузки:

DockerFile:

FROM nginx:stable-alpine 
LABEL xxx yyyyyy
COPY nginx.conf /etc/nginx/nginx.conf

EXPOSE 8081
CMD ["nginx", "-g", "daemon off;"]

nginx.conf:

events { worker_connections 1024; }

http {

upstream localhost {
server backend1:3001;
server backend2:3001;
server backend3:3001;
}

server {
listen 8081;
server_name localhost;

location / {
   proxy_pass http://localhost;
   proxy_set_header X-Real-IP $remote_addr;
   proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
   proxy_set_header X-Forwarded-Proto $scheme;
   proxy_set_header Host $http_host;
   proxy_set_header X-NginX-Proxy true;
}
 }
 }

docker-compose.yml


version: '3.2'
services:
  backend1:
      build: ./backend
      tty: true
      volumes:
        - './backend'

  backend2:
      build: ./backend
      tty: true
      volumes:
        - './backend'

  backend3:
      build: ./backend
      tty: true
      volumes:
        - './backend'

  loadbalancer:
      build: ./load-balancer
      tty: true
      links:
          - backend1
          - backend2
          - backend3
      ports:
          - '8081:8081'

volumes:
  backend:

Мой репозиторий: https://github.com/yusufkaratoprak/nginx_docker_loadbalancer

1 Ответ

1 голос
/ 26 мая 2019

Не задана команда для запуска образов контейнера backend.

Официальные образы nodejs по умолчанию запускаются node, что запускает cli, когда существует tty.Я предполагаю, что tty был включен в определении compose, чтобы не допустить сбоя контейнеров.

Простой Dockerfile для приложения будет выглядеть так:

FROM node:boron
WORKDIR /app
COPY src/. /app/
RUN npm install
EXPOSE 3001
CMD [ "node", "/app/index.js" ]

A tty shouldn 'Для большинства демонов это не нужно, удалите настройки tty из docker-compose.yml.links также избыточны в композитных файлах версии 2+.

version: '3.2'
services:
  backend1:
      build: ./backend
      volumes:
        - './backend'

  backend2:
      build: ./backend
      volumes:
        - './backend'

  backend3:
      build: ./backend
      volumes:
        - './backend'

  loadbalancer:
      build: ./load-balancer
      ports:
          - '8081:8081'

volumes:
  backend:
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...