2017-10-12 36 views
1

我有graphql節點服務器。我可以在沒有docker的情況下在本地運行它。但是在創建服務器的碼頭容器並將容器端口與主機端口綁定後,這不起作用。即使在端口綁定後,docker上的節點服務器也無法在本地主機上訪問

這裏是我的Dockerfile代碼:

FROM node:boron-alpine 
WORKDIR /app 
COPY package.json /app 
RUN npm install 
COPY . /app 
ENV SERVER_PORT 8080 
EXPOSE 8080 
CMD npm run build && npm start 

我的節點服務器的代碼是這樣的:

app.listen(process.env.SERVER_PORT,'0.0.0.0') 
    console.log(`listening at ${port}`) 

我跑碼頭工人用下面的命令:

docker run -it -p 8080:8080 nodeapi 

這工作完全的NodeJS可以看到env SERVER_PORT導致它顯示

"listening at 8080" 

在控制檯中。

但是,當我打開本地主機:8080這不起作用(該網站無法到達)。

我也曾嘗試運行泊塢窗命令

docker run -it -p 127.0.0.1:8080:8080 nodeapi 

這不起作用

我使用在Windows 10最新版本泊塢窗工具箱

謝謝

回答

4

碼頭工人沒有按工具箱將端口映射到本地主機。它它映射到以下命令泊塢窗VM IP的

運行來獲得IP

docker-machine ip 

然後使用瀏覽器中的http://<IP>:8080

+1

這很好,謝謝。但有沒有辦法將它映射到本地主機? – scroobius

1

如果避免指定IP 0.0.0.0

app.listen(process.env.SERVER_PORT, function() { 
    console.log('Listening on port '+ process.env.SERVER_PORT); 
}); 

and

docker run -it -p 8080:8080 nodeapi 

它可以讓你加載網站爲

http://localhost:8080 
+0

這對docker工具箱不起作用 – scroobius

相關問題