简体   繁体   English

无法访问Docker Container的暴露端口

[英]Cannot Access Docker Container's Exposed Port

Hello I cannot access the exposed port. 您好我无法访问暴露的端口。 It's a node server (no framework). 它是一个节点服务器(没有框架)。 Chrome sends ERR_EMPTY_RESPONSE. Chrome发送ERR_EMPTY_RESPONSE。 Each time I change the file and test it I run docker-compose build. 每次我更改文件并测试它时,我都会运行docker-compose build。 How can I get this up and running so my browser can ping port 3000? 如何启动并运行这样我的浏览器可以ping通端口3000?

EDIT: I included my server.js file incase I'm binding the port wrong in node. 编辑:我包含了我的server.js文件,因为我在节点中绑定了错误的端口。

Dockerfile 

FROM node:8.11.1-alpine

WORKDIR /usr/src/app

VOLUME [ "/usr/src/app" ]

RUN npm install -g nodemon

EXPOSE 3000

CMD [ "nodemon", "-L", "src/index.js" ]

Docker-compose.yml 泊坞窗,compose.yml

version: '3'

services:
  node:
    build:
      context: ./node
      dockerfile: Dockerfile
    working_dir: /usr/src/app
    volumes:
      - ./node:/usr/src/app
    networks:
      - app-network
    env_file: ./.env
    environment:
      - MESSAGE_QUEUE=amqp://rabbitmq
    ports:
    - "3000:3000"
    links:
      - rabbitmq

  python:
    build:
      context: ./python
      dockerfile: Dockerfile
    working_dir: /usr/src/app
    volumes:
       - ./python:/usr/src/app
    networks:
      - app-network
    env_file: ./.env
    links:
      - rabbitmq

  rabbitmq:
    image: rabbitmq:3.7.4
    networks:
      - app-network

networks:
  app-network:
    driver: bridge

Server.js Server.js

const mongoose = require('mongoose')

const hostname = '127.0.0.1';
const port = 3000;

const server = require('./controllers/index');

server.listen(port, hostname, () => {
    // Connect To Mongo 
    mongoose.connect(process.env.MONGO_URI, { keepAlive: true, keepAliveInitialDelay: 300000, useNewUrlParser: true });
    mongoose.connection.on('disconnected', () => {
        console.error('MongoDB Disconnected')
    })
    mongoose.connection.on('error', (err) => {
        console.error(err)
        console.error('MongoDB Error')
    })
    mongoose.connection.on('reconnected', () => {
        console.error('MongoDB Reconnected')
    })
    mongoose.connection.on('connected', () => {
        console.error('MongoDB Connected')
    })

    console.log(`Server running at http://${hostname}:${port}/`);
});

Try to bind your app to 0.0.0.0 like this 尝试将您的应用绑定到0.0.0.0

const hostname = '0.0.0.0';

it will listen on all network addresses. 它会监听所有网络地址。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM