node.js - 无法访问 Docker 容器的暴露端口
问题描述
您好,我无法访问暴露的端口。它是一个节点服务器(无框架)。Chrome 发送 ERR_EMPTY_RESPONSE。每次我更改文件并对其进行测试时,我都会运行 docker-compose build。我怎样才能启动并运行它,以便我的浏览器可以 ping 端口 3000?
编辑:我包含了我的 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
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
服务器.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}/`);
});
解决方案
尝试像这样将您的应用绑定到 0.0.0.0
const hostname = '0.0.0.0';
它将侦听所有网络地址。
推荐阅读
- android-things - 如何用 Oreo/Kitkat/lollipop 或类似的完整 Android 操作系统替换 AoT 操作系统
- php - 来自谷歌字体的印地语字体在带有elfinder的cakephp中集成的tinymce编辑器中不起作用
- c++ - 将 double 添加到 long long 时的 C++ 精度错误
- windows - 管道输出到由 [Diagnostics.Process]::Start 启动的 Windows 可执行文件?
- php - 显示 systemctl 服务状态的 PHP 函数
- python - 如何将整数转换为base58?
- oracle - 尝试比较数字时出现 PLS-00103 错误
- javascript - 如何从包含的 Java 依赖项访问本机功能
- linux - bash中的十六进制到十进制转换
- c# - 更新 ZipArchive 中的文件