Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js &引用;localhost没有';不要发送数据。ERR“u EMPTY”u RESPONSE“;及;curl:(52)来自服务器的空回复;_Node.js_Angular_Docker_Dockerfile - Fatal编程技术网

Node.js &引用;localhost没有';不要发送数据。ERR“u EMPTY”u RESPONSE“;及;curl:(52)来自服务器的空回复;

Node.js &引用;localhost没有';不要发送数据。ERR“u EMPTY”u RESPONSE“;及;curl:(52)来自服务器的空回复;,node.js,angular,docker,dockerfile,Node.js,Angular,Docker,Dockerfile,当我尝试访问Docker容器外部时,我得到的是带有以下错误的空数据。我对Docker容器中的curl和wget命令没有任何问题。该容器基于角度JS图像 “localhost未发送数据。ERR_EMPTY_RESPONSE”和“curl:(52)来自服务器的空回复” 请帮忙 对不起!忘记发布实际代码。这里是我的Dockerfile和package.json文件 package.json { "name": "angularjs-project”, "version": "0.0.0

当我尝试访问Docker容器外部时,我得到的是带有以下错误的空数据。我对Docker容器中的curl和wget命令没有任何问题。该容器基于角度JS图像

“localhost未发送数据。ERR_EMPTY_RESPONSE”和“curl:(52)来自服务器的空回复”

请帮忙

对不起!忘记发布实际代码。这里是我的Dockerfile和package.json文件

package.json

    {
  "name": "angularjs-project”,
  "version": "0.0.0",
  "license": "MIT",
  "scripts": {
    "ng": "ng",
    "start": "ng serve -H 0.0.0.0",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },
  "private": true,
  "dependencies": {
    "@angular/animations": "^4.3.6",
    "@angular/common": "^4.2.4",
    "@angular/compiler": "^4.2.4",
    "@angular/core": "^4.2.4",
    "@angular/forms": "^4.2.4",
    "@angular/http": "^4.2.4",
    "@angular/platform-browser": "^4.2.4",
    "@angular/platform-browser-dynamic": "^4.2.4",
    "@angular/router": "^4.2.4",
    "core-js": "^2.4.1",
    "font-awesome": "^4.7.0",
    "primeng": "^4.1.3",
    "rxjs": "^5.4.2",
    "zone.js": "^0.8.14"
  },
  "devDependencies": {
    "@angular/cli": "1.3.2",
    "@angular/compiler-cli": "^4.2.4",
    "@angular/language-service": "^4.2.4",
    "@types/jasmine": "~2.5.53",
    "@types/jasminewd2": "~2.0.2",
    "@types/node": "~6.0.60",
    "codelyzer": "~3.1.1",
    "jasmine-core": "~2.6.2",
    "jasmine-spec-reporter": "~4.1.0",
    "karma": "~1.7.0",
    "karma-chrome-launcher": "~2.1.1",
    "karma-cli": "~1.0.1",
    "karma-coverage-istanbul-reporter": "^1.2.1",
    "karma-jasmine": "~1.1.0",
    "karma-jasmine-html-reporter": "^0.2.2",
    "protractor": "~5.1.2",
    "ts-node": "~3.2.0",
    "tslint": "~5.3.2",
    "typescript": "~2.3.3"
  }
}
Dockerfile

    FROM node:6
RUN mkdir -p /angularjs-sample
ADD . /angularjs-sample
WORKDIR /angularjs-sample
RUN cd /angularjs-sample

RUN npm cache clean
RUN npm install -g @angular/cli
RUN npm install
RUN npm update
EXPOSE 4200
CMD ["ng", "serve"]

我建议的理想方法是在创建容器时将主机ip地址绑定到容器。您不应该从docker文件启动应用程序的运行。创建容器,与主机绑定,并编写脚本以启动应用程序

你可以这样做

docker run -d -p 4545:8553--name my-container my-image my-command
其中“8553”可以是应用程序默认的内部端口,与“4545”外部端口绑定

CMD ["ng", "serve", "--host=0.0.0.0"]
当像web浏览器(或者在本例中是curl)这样的HTTP客户机发送HTTP请求时,服务器需要客户机的IP地址,以便知道在哪里发送响应。当您运行本地开发服务器时,它会检查该IP地址,甚至不会响应不是来自127.0.0.1(localhost)的请求。这使得你的网络上的其他人(比如,坐在同一家星巴克里)不会使用dev服务器来破解你的盒子


当您在来宾容器或VM中运行开发服务器,并在主机上运行客户机(curl)时,服务器会看到不同的IP地址,并拒绝响应。大多数服务器允许您指定哪些IP地址是有效客户端的掩码。0.0.0.0表示fugetaboutit,接受所有客户端IP。它让保镖可以休息一晚。

@VijayKrishna,我希望你提供的链接能够解决这个问题。今天我已经通过了很多次链接来理解这个问题。你能告诉我为了解决这个问题,我需要用0.0.0.0更新Angular JS的哪个文件或位置吗?顺便说一句,如果这个问题很傻,请原谅我,因为我是Angular JS和Docker的新手。请发布您的dockerfile和package.json。请粘贴您使用dockerfile所做的详细步骤。如果容器内的进程仅侦听“localhost”,则只能从容器内访问它。确保进程正在侦听“任意”地址(即侦听
0.0.0.0
),以便它接受来自容器外部的连接@罗布,我错过了什么?我不清楚我应该做什么不同的事情。不要只是脱口而出代码。解释你在做什么。它如何回答这个问题?它做了什么来解决这个问题?我能得到对这个被接受的答案投反对票的理由吗?