簡體   English   中英

連接到上游時出錯。 Docker 組合、NodeJS、Nginx

[英]error while connecting to upstream. Docker compose, NodeJS, Nginx

我正在嘗試為 Nginx 和 NodeJS(使用 React)設置一個 docker compose。 但是得到以下錯誤: *2 connect() failed (111: Connection refused) while connecting to upstream, client: 192.168.0.1, server: ~.*, request: "GET /favicon.ico HTTP/1.1", upstream: "http://192.168.0.2:3000/favicon.ico", host: "localhost", referrer: "http://localhost/"

曾嘗試修改nginx.conf文件,添加depends_on、links參數,在default.conf中添加各種配置,從windows和linux啟動,使用其他端口,都無濟於事。 有了這個配置,原來是收集其他項目,除此之外大家都在工作,但是結構上和其他的一樣,除了這里是根文件夾“app”中的.env文件。

用於節點的 Dockerfile:

FROM node:13.12.0-alpine

# set working directory
WORKDIR /home/node/app

# install app dependencies

COPY package*.json ./

RUN npm install react-scripts -g
RUN npm install

# add app
COPY . ./

# start app
CMD ["npm", "start"]

docker-compose.yml:

version: '3'

services:
  nodejs:
    build:
      context: ../app
      dockerfile: ./../docker/dockerfile/node/Dockerfile
    container_name: user-node
    restart: unless-stopped
    volumes:
      - ../app:/home/node/app
    expose:
      - 3000
  nginx:
    image: nginx:latest
    container_name: forensic-nginx
    volumes:
        - ../app:/home/node/app
        - ./logs/nginx:/var/log/nginx
        - ./config/nginx:/etc/nginx/conf.d
    ports:
      - 80:80
    depends_on:
      - nodejs

default.conf (nginx):

server {
    listen 80;
    server_name ~.*;

    location / {
        proxy_pass http://user-node:3000;
    }
}

項目結構:

- project
  - app
    - package.json *and more*
  - docker
    - confing
      - nginx
        - default.conf
    - dockerfile
      - node
        - Dockerfile
    docker-compose.yml

在打開 localhost:80 時出現錯誤 502: bad geteway

您需要使用 docker 網絡。 像這樣改變你docker-compose.yml

version: '3'

services:
  nodejs:
    networks:
      - custom-network
    build:
      context: ../app
      dockerfile: ./../docker/dockerfile/node/Dockerfile
    container_name: user-node
    restart: unless-stopped
    volumes:
      - ../app:/home/node/app
    expose:
      - 3000
  nginx:
    networks:
      - custom-network
    image: nginx:latest
    container_name: forensic-nginx
    volumes:
        - ../app:/home/node/app
        - ./logs/nginx:/var/log/nginx
        - ./config/nginx:/etc/nginx/conf.d
    ports:
      - 80:80
    depends_on:
      - nodejs
      
networks:
  custom-network:
    driver: bridge

你的 nginx 配置應該是這樣的:

server {
    listen 80;
    server_name ~.*;

    location / {
        proxy_pass http://nodejs:3000;
    }
}

如果您在 localhost 上使用端口 80 時遇到問題,請嘗試更改docker-compose.yml nginx 部分中的映射以使用另一個端口。 例如

    ports:
      - 8088:80

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM