node.js – 如何将我的NodeJS与我的Angular连接(在Nginx中)

我有一个有角度和nodejs的回购.
我在jenkins演出:

# install globally
npm install -g bower
npm install -g gulp

# install
bower install
npm install

# build dist folder
gulp build

现在我在我的根里:

Dockerfile.Nginx  Dockerfile.nodejs  README.md  bower.json  dist  gulp.config.js  gulpfile.js  node_modules  package.json  server.js  src

我正在复制我的Nginx容器中的dist文件夹.所以我主持角度. (使用dockerfile)

FROM Nginx
# copy folder
copY dist /usr/share/Nginx/html/dist

我正在复制:gulp.config.js gulpfile.js node_modules server.js到我的nodejscontainer. (还有一个dockerfile)

FROM node

# Create app directory
RUN mkdir -p /usr/src/www
workdir /usr/src/www 

# copy 
copY node_modules /usr/src/www/
copY gulpfile.js /usr/src/www/
copY gulp.config.js /usr/src/www/
copY server.js /usr/src/www/

 EXPOSE 8080
CMD [ "node", "server.js" ]

我运行2个容器,但是Nginx不与nodejs通信

EDIT1:
启动容器:

docker run -d -p 8888:8888 --name "nodejs" localhost:5000/test/nodejs:1

docker run -d -p 80:80 --name "Nginx" localhost:5000/test/Nginx:1

EDIT2:我的Nginx.conf看起来像这样:

http {

        upstream node-app {
              least_conn;
              server nodejs:8888 weight=10 max_fails=3 fail_timeout=30s;
        }

        server {
              listen 80;
              location /dist {
                alias /usr/share/Nginx/html/dist/;
               }

              location ~* /api {
              #location / {
                proxy_pass http://node-app;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
              }
        }
}

我的server.js看起来像:

app.get('/api/hello', requestProxy({
  url: xxx + "/hello"
}));

解决方法:

您需要公开Nginx(角度)容器将连接到的node.js容器的端口.
请参阅docker文档的Connect using network port mapping部分.

更新:我认为,您需要将Nginx配置文件配置到节点容器. This question有与您的用例相关的示例Nginx文件(尽管与容器无关).

编辑:要使用Nginx映射节点应用程序,首先需要将节点容器与Nginx容器链接.

docker run -d -p 80:80 --name "Nginx" --link nodejs:nodejs localhost:5000/test/Nginx:1

将节点容器与Nginx容器链接时,节点容器的地址将保存在/ etc / hosts中.所以Nginx容器可以从那里访问节点的地址.

因此,在Nginx配置文件中,nodejs可以作为nodejs的容器地址访问:

http {

        upstream node-app {
              server nodejs:8888 weight=10 max_fails=3 fail_timeout=30s;
        }

        server {
              listen 80;

              location / {
                proxy_pass http://node-app;
                proxy_http_version 1.1;
                proxy_set_header Upgrade $http_upgrade;
                proxy_set_header Connection 'upgrade';
                proxy_set_header Host $host;
                proxy_cache_bypass $http_upgrade;
              }
        }
}

相关文章

Docker是什么Docker是 Docker.Inc 公司开源的一个基于 LXC技...
本文为原创,原始地址为:http://www.cnblogs.com/fengzheng...
镜像操作列出镜像:$ sudo docker imagesREPOSITORY TAG IMA...
本文原创,原文地址为:http://www.cnblogs.com/fengzheng/p...
在 Docker 中,如果你修改了一个容器的内容并希望将这些更改...
在Docker中,--privileged 参数给予容器内的进程几乎相同的权...