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