想要的行为

启动我的dockerized nodejs服务器时,我可以从本地计算机访问以下地址:http://localhost:3030

然后,Docker控制台应打印“Hello World”

问题描述

我在Docker容器中包含一个nodejs服务器。我无法从浏览器访问http://localhost:3030/

server.js文件

const port = require('./configuration/serverConfiguration').port
const express = require('express')
const app = express()

app.get('/', function (req, res) {
  res.send('Hello World')
})

app.listen(port)

DockerFile公开端口3000,这是server.js文件使用的端口

DockerFile的
FROM node:latest

RUN mkdir /src

RUN npm install nodemon -g

WORKDIR /src
ADD app/package.json package.json
RUN npm install

EXPOSE 3000

CMD npm start

我使用docker-compose.yml文件,因为我将容器与mongodb服务链接

docker-compose.yml文件
version: '3'
services:
  node_server:
    build: .
    volumes:
      - "./app:/src/app"
    ports:
      - "3030:3000"
    links:
      - "mongo:mongo"
  mongo:
    image: mongo
    ports:
      - "27017:27017"

文件将我的容器3000端口发布到主机3030端口

新信息
试图在OSX上执行它,成功了。 Windows似乎有问题。

最佳答案

自从我使用docker toolbox以来,我将本地ip更改为机器ip。我不好看没有dept的文档

10-01 15:27