Node.js Web应用程序在Docker堆栈中无法正常运行

时间:2017-06-10 07:39:48

标签: node.js docker docker-compose

我有一个用Node.js编写的Web应用程序,我正试图进入Docker。使用docker run -p 80:80 image运行图像效果很好;我可以访问它托管的网页。但是,当我尝试在堆栈中运行它时,我无法访问该页面,而Chrome只是永远地“等待本地主机...”。

Dockerfile:

FROM readytalk/nodejs

WORKDIR /app
ADD . /app

RUN npm i

EXPOSE 80

CMD []
ENTRYPOINT ["/nodejs/bin/npm", "start"]

搬运工-compose.yml:

version: "3"
services:
  web:
    image: image_name
    deploy:
      replicas: 5
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "80:80"
    networks: 
      - webnet
networks:
  webnet:

非常感谢任何帮助。

编辑:添加了一些日志记录,似乎HTTP请求实际上从未实际发送到Node.js应用。似乎Docker已收到请求,但尚未将其路由到正在运行的应用程序。

1 个答案:

答案 0 :(得分:1)

  1. 有时您的泊坞窗容器会运行您的IP地址。 您可以通过运行此命令docker info
  2. 来检查它
  3. 第二个选项
  4. 转到终端并写入

    窗口中的

    ipconfig
    

    然后查看首选IP,然后使用指定端口

    的IP访问您的容器 在Ubuntu中

    ifconfig
    

    希望这可以解决您的问题并尝试使用127.0.0.1:port

    进行访问

    您可以查看此幻灯片,其中显示并运行hello world node + docker

    docker-node-hello-world-application

    我建议使用这个Docker文件。

    Node_DockerFile

    FROM alpine
    RUN apk update && apk upgrade
    RUN apk add nodejs
    RUN mkdir -p /app
    ADD app/package.json /app
    WORKDIR /app/
    ENV HOME /app
    ENV NODE_ENV development
    RUN npm install
    ADD app /app    
    EXPOSE 3000
    CMD npm start