Docker Compose с Express.js и Nginx — ответ 502

Я пытаюсь использовать express.js и nginx в качестве обратного прокси-сервера с Docker. Экспресс-приложение отлично работает с докером само по себе, но когда я добавляю nginx, я получаю ответ 502. Он печатает это:

nginx_1 | 30.03.2019 21:14:04 [ошибка] 6#6: *3 connect() не удалось (111: Отказано в соединении) при подключении к восходящему каналу, клиент: 172.20.0.1, сервер: localhost, запрос: «GET/HTTP /1.1", восходящий поток: "http://127.0.0.1:20000/", хост: "localhost:21000"

docker-compose.yml

version: '3.3'

services:
  app:
    image: node:latest
    volumes:
      - ./app:/usr/src/service/app
    working_dir: /usr/src/service/app
    command: ["node", "app"]
    ports:
      - 20000:18000

  nginx: 
    image: nginx:latest
    volumes:
      - ./nginx/nginx.conf:/etc/nginx/nginx.conf
      - ./nginx/error.log:/etc/nginx/error_log.log
      - ./nginx/cache/:/etc/nginx/cache
    ports:
      - 21000:80

nginx.conf

events {

}

http {
  upstream upstream_server {
    server localhost:20000;
  }

  server {
    listen 127.0.0.1;
    listen 80;
    server_name localhost;

    location / {
      proxy_set_header Host $http_host;
      proxy_redirect off;
      proxy_pass http://upstream_server;
      break;
    }
  }
}
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Развертывание модели машинного обучения с помощью Flask - Angular в Kubernetes
Kubernetes - это портативная, расширяемая платформа с открытым исходным кодом для управления контейнерными рабочими нагрузками и сервисами, которая...
Как создать PHP Image с нуля
Как создать PHP Image с нуля
Сегодня мы создадим PHP Image from Scratch для того, чтобы легко развернуть базовые PHP-приложения. Пожалуйста, имейте в виду, что это разработка для...
0
0
93
1

Ответы 1

Ваш контейнер nginx и контейнер приложения находятся в одной сети, но не на одном хосте, поэтому localhost не там, где вы найдете свое приложение.

Попробуйте app в качестве параметра server в восходящем потоке — это должно разрешить IP-адрес контейнера app в сети компоновки.

Другие вопросы по теме