Невозможно подключить proxy_server localhost: 3000 к nginx конфигурационному файлу (docker -compose project) - PullRequest
0 голосов
/ 07 августа 2020

У меня есть следующие файлы docker -compose.yml, расположенные в двух разных папках:

~/front/docker-compose.yml и ~/api/docker-compose.yml

Мне нужно подключить proxy_server localhost: 3000 (от frontend) в конфигурационный файл nginx (из api). Что я мог упустить?

Вот файл конфигурации ngix:

server {
listen 80;
index index.html;
server_name localhost;
error_log  /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;
root /var/www/html/public;

}


server {
listen          80;             # the port nginx is listening on
server_name     client.localhost;    # setup your domain here


 location / {


    proxy_redirect                      off;
    proxy_set_header Host               $host;
    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_read_timeout          1m;
    proxy_connect_timeout       1m;
    proxy_pass                          http://127.0.0.1:3000/; # set the address of the Node.js instance here
}
}

Когда я делаю docker-compose logs -f nginx, это ошибка:

2020/08/07 10:50:10 [error] 28#28: *9 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.16.1, server: client.localhost, request: "GET /favicon.ico HTTP/1.1", upstream: "http://127.0.0.1:3000/favicon.ico", host: "client.localhost", referrer: "http://client.localhost/"

ошибка после запуска docker -compose logs -f nginx

Вот front / docker -compose.yml :

version: "3.5"
services:
  client:
    build:
      context: .
      dockerfile: Dockerfile
    container_name: client
    ports:
      - "3000:3000"
    networks:
      - client_esl
networks:
  client_esl:
   external:
      name : nginx_esl

api / docker -compose.yml

version: "3.5"

networks:
  esl:

services:
  site:
    image: nginx:stable-alpine
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./src:/var/www/html
      - ./nginx/default.conf:/etc/nginx/conf.d/default.conf
    networks:
      - esl

Файл док-станции в передней папке

ОТ узла: 12.4-alpine

RUN mkdir -p /usr/src/nuxt-app

RUN WORKDIR /usr/src/nuxt-app

RUN apk update && apk upgrade

RUN apk add git

КОПИРОВАТЬ. / usr / src / nuxt-app /

RUN npm install

RUN npm run build

EXPOSE 3000

ENV NUXT_HOST = 0.0.0.0

ENV NUXT_PORT = 3000

CMD [«npm», «начало»]

Ответы [ 2 ]

0 голосов
/ 11 августа 2020

запускайте контейнеры в одной сети, а в конфигурации Nginx используйте proxy_pass : client:3000, поскольку имя вашего контейнера для вашего приложения узла - client

0 голосов
/ 07 августа 2020

Если вы хотите соединить 2 контейнера вместе, есть несколько вариантов:

  • Откройте порт для хоста, как и вы (3000: 3000), тогда вы можете использовать этот порт + IP-адрес хоста (не localhost, поскольку он относится к самому контейнеру) из других контейнеров
  • Не раскрывайте порт, если контейнеры находятся в одной сети, используйте имя контейнера + порт, например клиент: 3000
...