Node.js 我用Docker Compose运行了2个图像,在Mac上访问本地主机时遇到问题。我正在暴露端口3000。我错过什么了吗?

Node.js 我用Docker Compose运行了2个图像,在Mac上访问本地主机时遇到问题。我正在暴露端口3000。我错过什么了吗?,node.js,docker,docker-compose,Node.js,Docker,Docker Compose,我正在使用Docker构建一个Node/Mongo应用程序,当我运行Docker compose up时,在运行MacOs的主机上点击本地主机时遇到问题。使用postman或curl-i localhost:3000不会返回任何内容。我还尝试检查容器并连接该ip。我做错了什么?谢谢 docker-compose.yml: version: "2" services: web: build: . ports: - "3000:3000" volumes:

我正在使用Docker构建一个Node/Mongo应用程序,当我运行
Docker compose up
时,在运行MacOs的主机上点击本地主机时遇到问题。使用postman或
curl-i localhost:3000
不会返回任何内容。我还尝试检查容器并连接该ip。我做错了什么?谢谢

docker-compose.yml:

version: "2"
services:
  web:
    build: .
    ports:
      - "3000:3000"
    volumes:
      - .:/app
    env_file:
      - todoListDocker.env
    links:
      - mongo

mongo:
    image: mongo
    environment:
      - MONGO_INITDB_ROOT_USERNAME=root
      - MONGO_INITDB_ROOT_PASSWORD=tWwp3Fm4hZUsaLw4
    volumes:
      - mongo:/data/db
    ports:
      - "27017:27017"
    env_file:
      - todoListDocker.env

volumes:
  mongo:
Dockerfile:

FROM node:boron

MAINTAINER Clinton Medbery <clintomed@gmail.com>

RUN ["apt-get", "update"]
RUN ["apt-get", "install", "-y", "vim"]

RUN mkdir - p /app
WORKDIR /app

COPY package.json /app

RUN npm install

COPY . /app
EXPOSE 3000

CMD ["npm", "start"]

您的express服务器正在侦听端口3000上的本地主机

var-PORT=process.env.PORT | 3000;
var HOST=process.env.HOST | |“127.0.0.1”;
这将绑定到容器的本地主机。它独立于Mac的localhost和任何其他容器的localhost。您无法从容器外部够到它

您需要绑定到容器的外部接口,该接口将允许Mac或其他容器连接到端口。您可以为此使用特殊地址
0.0.0.0

var-PORT=process.env.PORT | 3000;
var HOST=process.env.HOST | |“0.0.0.0”;
既然可以从Mac访问express服务器,那么端口绑定
3000:3000
将起作用。默认情况下,这将绑定在Mac的所有网络接口上,但如果愿意,可以将其限制在Mac的本地主机上

端口:
- "127.0.0.1:3000:3000"

您不需要点击一个暴露的端点吗?所以运行“curl-i localhost:3000/hello”可能会返回一些信息。谢谢!我试过了。答案如下!谢谢你的帮助,就这样!谢谢你,先生。我认为你的答案是正确的。太糟糕了,我不能用Stack Overflow的奥术代表系统投票。我很感激!
const express = require('express');
const morgan = require('morgan');
const bodyParser = require('body-parser');
const mongoose = require('mongoose');

var app = express();

var router = require('./services/router');

//Use ENV Variables
console.log("Connecting to Mongo");
mongoose.connect('mongodb://root:tWwp3Fm4hZUsaLw4@mongo:27017');
// mongoose.connect('mongodb://localhost:todoList/todoList');

console.log("Connected to Mongo");


app.use(morgan('combined'));
app.use(bodyParser.json());
app.use('/v1', router);

var PORT = process.env.PORT || 3000;
var HOST = process.env.HOST || '127.0.0.1';

app.get('/hello', function (req, res) {
    console.log("Hello World");
    res.send({hello:'Hello World!'});
});

console.log('Listening on port ', HOST, PORT);
app.listen(PORT, HOST);