我在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
答案 0 :(得分:0)
首先,我建议您检查服务器是否正常运行,为此,您可以:
docker exec -it messenger-bot sh
或docker exec -it messenger-bot bash
连接到容器ping 0.0.0.0:3002
curl 0.0.0.0:3002
此后,您将确定问题来自外部Docker。
[注意]检查您是否真的需要以root用户身份在脚本中运行: https://docs.docker.com/v17.12/install/linux/linux-postinstall/