【发布时间】:2017-06-08 16:35:09
【问题描述】:
我正在尝试在各自的 docker 容器中运行节点和 nginx,并从 nginx 代理到节点。我一开始尝试了 without docker 下面的配置,它成功了。但是,当使用 docker 时,它不起作用,并在尝试连接到 http://localhost/ 时给出 Status Code:502 Bad Gateway。
节点服务器
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);
docker-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 配置
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/*
【问题讨论】:
-
NGINX 配置中的
app指向哪里? -
@robertklep 这是 docker-compose 中的应用服务
-
我对 Docker 不是很熟悉,所以我可能会问一些愚蠢的问题;D 是否有映射到运行节点服务器的端口 3001(我看到它被暴露了,但我看不到 NGINX 被告知在哪里使用它)。
-
@robertklep 是的,你是对的,我修复了错误。 .你要回答这个问题吗?
-
你解决了它,所以你可以回答它(就像你已经做过的那样:)
标签: node.js nginx docker docker-compose dockerfile