2017-06-08 66 views
1

我試圖運行節點和nginx裏面他們自己的碼頭容器和代理從nginx到節點。我試着在以下的配置沒有碼頭在第一次,它的工作。但是,當使用docker時,它不起作用,並在嘗試連接到http://localhost/時給出Status Code:502 Bad Gateway502錯誤的網關與nginx和節點裏面的docker

節點服務器

var http = require('http'); 
http.createServer(function (req, res) { 
    res.setHeader('content-type', 'text/html'); 
    res.setHeader('Access-Control-Allow-Origin', '*'); 
    res.setHeader('Access-Control-Request-Headers', '*'); 
    res.setHeader('Access-Control-Request-Method', '*'); 
    res.setHeader('Access-Control-Allow-Methods', 'OPTIONS, GET'); 
    res.setHeader('Access-Control-Allow-Headers', '*'); 
    res.end('<html>Hey</html>'); 
}).listen(3001); 

搬運工-compose.yml

version: '3' 
services: 
    app: 
    build: ./servers 
    nginx: 
    build: ./nginx 
    depends_on: 
     - app 
    links: 
     - app 
    volumes: 
     - ./nginx/conf:/etc/nginx/conf.d:ro 
    ports: 
     - 80:80 

nginx的CONF

server { 
     listen 80; 
     listen [::]:80; 

     location/{ 
       proxy_pass http://app; 
     } 
} 

應用dockerfile

FROM node:alpine 
RUN mkdir /app/ 
COPY ./server.js /app 
EXPOSE 3001 
WORKDIR /app 
CMD node server 

nginx的dockerfile

FROM nginx:alpine 
RUN rm /etc/nginx/conf.d/* 
+0

哪裏'應用程序在你的NGINX配置指向? – robertklep

+0

@robertklep它是docker-compose中的應用服務 – Ced

+1

我對Docker不是很熟悉,所以我可能會問一些愚蠢的問題; D是否有一個映射到某個端口3001的節點服務器正在運行的地方(我看到它正在暴露,但我不知道NGINX在哪裏被告知使用它)。 – robertklep

回答

1

這現在看起來像一個愚蠢的問題,但我有這樣的泊塢窗鏈接集裝箱港口無論它開不指定端口的誤解。事實證明,我所遵循的例子是在另一端使用了80端口。總之,用足以證明我自己,我所要做的就是使端口上JS服務器偵聽80

http.createServer(function (req, res) { 
    ... 
}).listen(80); 

或者我相信我會在nginx的的c​​onf已經使用端口3001

location/{ 
      proxy_pass http://app:3001; 
    }