簡體   English   中英

執行從 docker 容器到主機的端口映射時,如何修復“curl (56) Recv failure: Connection reset by peer”錯誤?

[英]How to fix "curl (56) Recv failure: Connection reset by peer" error when doing a port mapping from docker container to host machine?

我有一個 Angular 項目在端口 4200 的 docker 容器中運行。我已經完成了從 docker 容器的 4200 端口到我的本地主機 4200 的端口映射。

我在 Ubuntu 16.04 上運行它。 執行netstat -nltp ,我得到輸出

tcp6 0 0 :::4200 :::* LISTEN

我的 Dockerfile 看起來像:

FROM node
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app
COPY package.json /usr/src/app
RUN npm cache clean --force
RUN npm install
COPY . /usr/src/app
EXPOSE 4200
CMD ["npm","start"]

我期望在運行 curl :::4200 時向我顯示網頁源代碼而不是錯誤, curl (56) Recv failure: Connection reset by peer

為我的 angular 項目更改package.json的以下內容即可解決問題。

{
  "name": "client",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  }

{
  "name": "client",
  "version": "0.0.0",
  "scripts": {
    "ng": "ng",
    "start": "ng serve --host 0.0.0.0",
    "build": "ng build",
    "test": "ng test",
    "lint": "ng lint",
    "e2e": "ng e2e"
  },

點擊鏈接了解更多詳情

第一次運行容器時執行端口映射作為

docker run -ti --name angular angular_image:latest -p 4200:4200

這將覆蓋 dockerfile 中的 EXPOSE 命令。 在真正的 docker 中,會分配一個從容器到主機的隨機端口映射。 所以,有必要有一個端口映射 docker cli。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM