У меня проблема при использовании Nginx для направления запросов к сервисам, определенным в docker-compose.yml - PullRequest
0 голосов
/ 10 июля 2019

Я настраиваю приложение с несколькими контейнерами и использую nginx для перенаправления запросов на исправление контейнера.Однако я застрял с ошибкой 502 Bad Gateway.

На самом деле код взят из курса по Udemy: Docker и Kubernetes.Я просто копирую и вставляю код, он запускается на компьютере инструктора, но не на моем.Я попробовал свои окна и мой macbook, перезапустил докер, но все еще не надеялся.Я искал решения в других статьях stackoverflow, в некоторых других статьях, но ни одна из них не рассказала мне, почему он работает на чужих машинах, а не на моих.

Вот репозиторий кода .

docker-compose.yml ( полный код ):

version: "3"
services:
  postgres:
    ...
  redis:
    ...
  nginx:
    restart: always
    build:
      dockerfile: Dockerfile.dev
      context: ./nginx
    ports:
      - "3050:80"
  api:
    ...
  client:
    ...
  worker:
    ...

nginx / Dockerfile.dev

FROM nginx
COPY ./default.conf /etc/nginx/conf.d/default.conf

nginx / default.conf

upstream client {
  server client:3000;
}

upstream api {
  server api:5000;
}

server {
  listen 80;
  server_name  localhost;

  location / {
    proxy_pass http://client;
  }

  location /api {
    rewrite /api/(.*) /$1 break;
    proxy_pass http://api;
  }
}

Он отлично работает на машине преподавателя и других учеников, но не на моих машинах.Я получил ошибку при подключении http://localhost:3050 и http://localhost:3050/api:

nginx_1     | 2019/07/08 02:52:35 [error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.25.0.1, server: , request: "GET / HTTP/1.1", upstream: "http://125.235.4.59:3000/", host: "localhost:3050"
nginx_1     | 172.25.0.1 - - [08/Jul/2019:02:52:35 +0000] "GET / HTTP/1.1" 502 559 "-" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-"
nginx_1     | 2019/07/08 02:52:57 [error] 6#6: *1 connect() failed (111: Connection refused) while connecting to upstream, client: 172.25.0.1, server: , request: "GET /favicon.ico HTTP/1.1", upstream: "http://125.235.4.59:3000/favicon.ico", host: "localhost:3050", referrer: "http://localhost:3050/"
nginx_1     | 172.25.0.1 - - [08/Jul/2019:02:52:57 +0000] "GET /favicon.ico HTTP/1.1" 502 559 "http://localhost:3050/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/75.0.3770.100 Safari/537.36" "-"

Любая помощь приветствуется.

1 Ответ

0 голосов
/ 10 июля 2019

Требуется изменить docker-compose.yml:

  1. вышестоящие службы должны предоставлять свои порты, чтобы служба nginx могла подключаться, т.е.
  api:
    expose:
    - '5000'

  client:
    expose:
    - '3000'

  1. nginx служба depends_on восходящие службы:
  nginx:
    depends_on:
    - 'client'
    - 'api'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...