Nginx, развернутый в Docker-контейнере, не предоставляет nuxtjs, развернутый в другом Docker-контейнере (502 Bad Gateway) - PullRequest
1 голос
/ 01 июля 2019

Я пытаюсь запустить приложение nuxtjs, используя nginx в качестве прокси-сервера в Docker-контейнерах.Итак, у меня есть 2 контейнера: nginx и nuxt enter image description here

вот как я создаю приложение nuxt

FROM node:11.15
ENV APP_ROOT /src
RUN mkdir ${APP_ROOT}
WORKDIR ${APP_ROOT}
ADD . ${APP_ROOT}
RUN npm install
RUN npm run build
ENV host 0.0.0.0

Результат вроде бы хорош enter image description here

Далее идет конфигурация nginx

server {
  listen 80;
  server_name dev.iceik.com.ua;

  location / {
      proxy_pass http://nuxt:3000;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

Также я попробовал эту конфигурацию nginx

upstream nuxt {
  server nuxt:3000;
}
server {
  listen 80;
  server_name dev.iceik.com.ua;

  location / {
      proxy_pass http://nuxt;
      proxy_set_header Host $host;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  }
}

И, наконец, мой docker-composeфайл

version: "3"

services:
  nuxt:
    build: ./app/
    container_name: nuxt
    restart: always
    ports:
      - "3000:3000"
    command:
      "npm run start"

  nginx:
    image: nginx:1.17
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx:/etc/nginx/conf.d
    depends_on:
      - nuxt

Я могу пропинговать контейнер nuxt из контейнера nginx enter image description here

Также здесь открыты порты enter image description here

Итак, ожидаемый результат - я могу получить доступ к своему приложению nuxt.Однако я получаю 502 Bad Gateway

Есть ли у вас какие-либо идеи, почему nginx не представляет мое приложение nuxt?

Спасибо за любые предложения!

Ответы [ 2 ]

1 голос
/ 02 июля 2019

Nodejs выставлен localhost:3000 вместо 0.0.0.0:3000

Пожалуйста, исправьте это. Это будет работать

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

Всегда хорошо, что ваши контейнеры помещаются в сеть, если им нужно общаться друг с другом, иначе можно использовать хост-сеть (работает только в linux). Попробуйте ниже docker-compose.yml они должны иметь возможность говорить друг с другом из имен контейнеров.

version: "3"

services:
  nuxt:
    build: ./app/
    container_name: nuxt
    restart: always
    ports:
      - "3000:3000"
    command:
      "npm run start"
    networks:
      - my_net

  nginx:
    image: nginx:1.17
    container_name: nginx
    ports:
      - "80:80"
    volumes:
      - ./nginx:/etc/nginx/conf.d
    depends_on:
      - nuxt
    networks:
      - my_net

networks:
  my_net:
    driver: "bridge"
...