簡體   English   中英

Docker node.js應用程序沒有偵聽端口

[英]Docker node.js app not listening on port

我正在使用node.js Web應用程序並使用localhost:8080通過發送Postman的請求來測試它。 每當我在不使用Docker的情況下運行應用程序(npm start)時,應用程序工作正常並偵聽端口8080

當我使用Docker運行應用程序時,應用程序似乎正在正常運行(它顯示它正在運行並在端口8080上偵聽),但是使用Postman無法訪問(我收到錯誤: Could not get any response )。 你知道這個的原因是什么嗎?

Dockerfile:

FROM node:8  
WORKDIR /opt/service
COPY package.json .
COPY package-lock.json .
RUN npm i
COPY . .
EXPOSE 8080
CMD ["npm", "start"]

我使用以下命令在Docker中構建並運行應用程序:

docker build -t my-app . 
docker run my-app

我已嘗試綁定端口,如下所述,但我也無法通過端口8181到達服務器。

docker run -p 8181:8080 my-app

在我的應用程序中,服務器以下列方式進行偵聽(使用Express ):

app.listen(8080, () => {
    console.log('listening on port 8080');
})

我也試過用:

app.listen(8080, '0.0.0.0', () => {
    console.log('listening on port 8080');
})

docker port命令返回:

8080/tcp -> 0.0.0.0:8181

你們有沒有想到這可能是什么原因?

更新 :使用從docker-machine( 192.168.99.100:8181 )獲得的IP,我能夠訪問該應用程序。 但是,我希望能夠從localhost:8181到達它。

設置端口分配的方式要求您使用docker機器的ip地址,而不是localhost。 您可以使用以下命令找到您的docker機器ip:

docker-machine ip dev

如果要將容器ip映射到localhost端口,則應在端口之前指定localhost ip,如下所示

docker run -p 127.0.0.1:8181:8080 my-app

類似的問題

暫無
暫無

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

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