Alw*_*ner 6 node.js docker dockerfile angular
当我尝试访问 Docker 容器外部时,我收到空数据并出现下面提到的错误。我对 Docker 容器内的curl 和wget 命令没有任何问题。该容器基于 Angular JS 镜像。
\n\n“本地主机没有发送数据。ERR_EMPTY_RESPONSE”和“curl:(52)来自服务器的空回复”
\n\n请帮忙。
\n\n对不起!忘记发布实际代码。这是我的 Dockerfile 和 package.json 文件。
\n\n包.json
\n\n {\n "name": "angularjs-project\xe2\x80\x9d,\n "version": "0.0.0",\n "license": "MIT",\n "scripts": {\n "ng": "ng",\n "start": "ng serve -H 0.0.0.0",\n "build": "ng build",\n "test": "ng test",\n "lint": "ng lint",\n "e2e": "ng e2e"\n },\n "private": true,\n "dependencies": {\n "@angular/animations": "^4.3.6",\n "@angular/common": "^4.2.4",\n "@angular/compiler": "^4.2.4",\n "@angular/core": "^4.2.4",\n "@angular/forms": "^4.2.4",\n "@angular/http": "^4.2.4",\n "@angular/platform-browser": "^4.2.4",\n "@angular/platform-browser-dynamic": "^4.2.4",\n "@angular/router": "^4.2.4",\n "core-js": "^2.4.1",\n "font-awesome": "^4.7.0",\n "primeng": "^4.1.3",\n "rxjs": "^5.4.2",\n "zone.js": "^0.8.14"\n },\n "devDependencies": {\n "@angular/cli": "1.3.2",\n "@angular/compiler-cli": "^4.2.4",\n "@angular/language-service": "^4.2.4",\n "@types/jasmine": "~2.5.53",\n "@types/jasminewd2": "~2.0.2",\n "@types/node": "~6.0.60",\n "codelyzer": "~3.1.1",\n "jasmine-core": "~2.6.2",\n "jasmine-spec-reporter": "~4.1.0",\n "karma": "~1.7.0",\n "karma-chrome-launcher": "~2.1.1",\n "karma-cli": "~1.0.1",\n "karma-coverage-istanbul-reporter": "^1.2.1",\n "karma-jasmine": "~1.1.0",\n "karma-jasmine-html-reporter": "^0.2.2",\n "protractor": "~5.1.2",\n "ts-node": "~3.2.0",\n "tslint": "~5.3.2",\n "typescript": "~2.3.3"\n }\n}\nRun Code Online (Sandbox Code Playgroud)\n\nDockerfile
\n\n FROM node:6\nRUN mkdir -p /angularjs-sample\nADD . /angularjs-sample\nWORKDIR /angularjs-sample\nRUN cd /angularjs-sample\n\nRUN npm cache clean\nRUN npm install -g @angular/cli\nRUN npm install\nRUN npm update\nEXPOSE 4200\nCMD ["ng", "serve"]\nRun Code Online (Sandbox Code Playgroud)\n
Jef*_*wab 10
CMD ["ng", "serve", "--host=0.0.0.0"]\nRun Code Online (Sandbox Code Playgroud)\n当 HTTP 客户端(例如 Web 浏览器)(或在本例中为curl)发送 HTTP 请求时,服务器需要 client\xe2\x80\x99s IP 地址,以便知道将响应发送到哪里。当您运行本地开发服务器时,它会检查该 IP 地址,甚至不会响应来自 127.0.0.1 (localhost) 的请求。这可以防止您网络上的其他人(例如,坐在同一家星巴克)使用开发服务器来攻击您的盒子。
\n当您在来宾容器或虚拟机中运行开发服务器并在主机上运行客户端 (curl) 时,服务器会看到不同的 IP 地址,并拒绝响应。大多数服务器允许您指定哪些 IP 地址是有效客户端的掩码。0.0.0.0 表示 fugetaboutit,接受所有客户端 IP。它让保镖休息一晚。
\n我建议的理想方法是在创建时将主机 IP 地址绑定到容器。您不应该从 docker 文件启动应用程序的运行。创建容器,与主机绑定并编写脚本来启动应用程序
你可以这样做,
docker run -d -p 4545:8553--name my-container my-image my-command
Run Code Online (Sandbox Code Playgroud)
其中“ 8553 ”可以是您的应用程序默认内部端口,与“ 4545 ”外部端口合并
| 归档时间: |
|
| 查看次数: |
9267 次 |
| 最近记录: |