Docker暴露端口无法访问

问题描述 投票:0回答:1

我在docker容器上运行Node JS应用程序。它是100%工作,因为如果我没有docker它运行它是有效的。

问题是暴露的端口3002在浏览器中不起作用。 Nmap显示此端口可用并已打开,但它在浏览器中不起作用。

我有第二个应用程序也通过docker处理暴露的端口3001。这个确实有效。可能是什么问题呢?

编辑

Dockerfile:

# create a file named Dockerfile
FROM node:7.4.0-alpine

RUN mkdir /app
WORKDIR /app

COPY package.json /app
RUN npm install
RUN npm install -g lab

COPY . /app

EXPOSE 3002

CMD ["npm", "start"]

docker-compose.yml文件

version: "2"
services:
  soho-api:
    build: .
    image: messenger-bot:0.1
    container_name: messenger-bot
    environment:
      NODE_ENV: development
    ports:
      - "3002:3002"
    volumes:
      - ./src:/app/src

deploy.sh文件:

#!/bin/sh
sudo docker stop messenger-bot
sudo docker rm messenger-bot
sudo docker rmi messenger-bot:0.1
sudo docker-compose build
sudo docker-compose up -d

我从终端跑:bash deploy.sh

docker
1个回答
0
投票

首先,我建议您检查服务器的正常运行,因为您可以:

  • 根据shell连接到docker exec -it messenger-bot shdocker exec -it messenger-bot bash的容器
  • 尝试ping端口,看看你是否达到了什么:ping 0.0.0.0:3002
  • 如果安装了curl,您还可以检查响应:curl 0.0.0.0:3002

之后你会确定问题来自Docker外面。

[注意]检查您是否确实需要在脚本中以root身份运行:https://docs.docker.com/v17.12/install/linux/linux-postinstall/

© www.soinside.com 2019 - 2024. All rights reserved.