我正在使用Docker Compose运行2张图像,而我在Mac中击中Localhost遇到了麻烦.我正在暴露端口300



我正在使用docker构建一个节点/mongo应用程序,并且在运行 docker-compose up时,我很难从主机上击中我的本地主机。使用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"]

index.js:

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);

您的Express服务器正在 local -Host 端口3000。

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

这将绑定到容器的 localhost。这独立于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的所有网络接口上绑定,但是如果您喜欢

ports:
  - "127.0.0.1:3000:3000"

相关内容

最新更新