Docker暴露端口无法访问

时间:2017-01-19 18:36:30

标签: docker

我在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 file

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

运行

1 个答案:

答案 0 :(得分:0)

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

  • 根据外壳使用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/