我有一个有角度和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;
}
}
}