簡體   English   中英

無法在瀏覽器上訪問Docker nodejs容器

[英]Unable to access the Docker nodejs container on the browser

我使用的是Windows ver 10家庭版,因此我使用的是“ Windows的docker工具箱”,其中我的docker客戶端是Windows / amd64,服務器是linux / amd64。

我用三個文件構建了一個非常簡單的nodejs應用程序。

server.js

/**


* Created by farhanx on 7/28/2018.
 */
'use strict';

const express = require('express');

// Constants
const PORT = 5000;
const HOST = 'localhost';

// App
const app = express();


app.get('/', function (req, res) {

    res.send('Hello world\n');
});

app.get('/students', function (req, res) {

    res.send('student page\n');
});

app.listen(PORT, HOST);
console.log('Running on http://'+HOST+':'+PORT);

和package.json

{
  "name": "docker_web_app",
  "version": "1.0.0",
  "description": "Node.js on Docker",
  "author": "First Last <first.last@example.com>",
  "main": "server.js",
  "scripts": {
    "start": "node server.js"
  },
  "dependencies": {
    "express": "^4.16.1"
  }
}

Docker文件

FROM node:8
# Create app directory
WORKDIR /usr/src/app

# Install app dependencies
# A wildcard is used to ensure both package.json AND package-lock.json are copied
# where available (npm@5+)
COPY package*.json ./

RUN npm install
# If you are building your code for production
# RUN npm install --only=production

# Bundle app source
COPY . .

EXPOSE 5001
CMD [ "npm", "start" ]

然后我已經成功構建了我的docker鏡像並運行了該命令

泊塢窗運行-p 5001:5000 Farhan / mynode

因為我已經在nodejs服務器文件和docker文件中提到服務器的端口5000,所以我將5001公開為端口。

現在它可以正常運行,並在控制台上顯示nodejs服務器正在運行,但是每當我使用localhost:5001時,它就會顯示找不到頁面。 這意味着docker容器可以正常工作,但瀏覽器無法訪問。

由於您正在使用工具箱,因此必須通過http:// linux_docker_host_ip:5001在瀏覽器中訪問應用程序。

要知道主機IP,請轉到virtualbox,然后查看Docker機器的IP地址。 通常,在虛擬框中單擊虛擬機時,您會在右下角找到一個網絡圖標。 默認情況下IP為``192.168.99.100''

公開端口意味着您允許請求該端口的請求通過。 您必須公開端口5000,而不是5001。

EXPOSE 5000

另外,您不應將Express應用程序的HOST設置為localhost 如果這樣做,則只有本地主機(容器)才能發出請求。

通常,您不設置主機(默認為0.0.0.0並接受所有內容):

app.listen(PORT);

暫無
暫無

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

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