无法运行docker node.js application

时间:2017-01-13 08:03:40

标签: node.js docker

我是Docker的新手,所以我可能无法正确构建问题。

我使用下面的命令为我的节点js应用程序创建了一个图像。

 docker build -t ramakishore/nodeapp .

我通过执行以下命令

为此图像创建了一个容器
docker run -p 49160:8080 -d ramakishore/nodeapp

docker ps命令显示

CONTAINER ID        IMAGE                 COMMAND             CREATED             STATUS              PORTS                     NAMES
ca64b61afca7        ramakishore/nodeapp   "npm start"         6 minutes ago       Up 6 minutes        0.0.0.0:49160->8080/tcp   gigantic_swanson

我的dockerFile的内容是

FROM node:boron

# Create app directory
RUN mkdir -p /usr/src/app
WORKDIR /usr/src/app

# Install app dependencies
COPY package.json /usr/src/app/
RUN npm install

# Bundle app source
COPY . /usr/src/app

EXPOSE 8080
CMD [ "npm", "start" ]

当我在chrome中输入http://localhost:8080时,我希望显示我的节点页面,而是显示“无法访问此站点”。

知道我做错了什么。

1 个答案:

答案 0 :(得分:0)

首先,我会通过输入容器并查看正在运行的内容来检查您的应用程序是否在Docker容器内运行:

$ docker exec -ti ca64b61afca7
$ ps aux

然后检查以确保它正在侦听正确的端口(和0.0.0.0):

$ netstat -tunlp

接下来,我会尝试从容器内部卷曲:

$ curl localhost:8080

如果此方法有效,您的应用就会正常运行,问题出在容器和主机之间。

接下来我将退出docker容器(ctrl + d)并尝试从主机点击应用程序:

$ curl localhost:49160

注意:如果您使用的是Mac或Windows,则可能需要点击泊坞主机的IP地址 - 您可以通过echo $DOCKER_HOST找到此IP(或者在Windows echo %DOCKER_HOST%上。

例如,如果您的DOCKER_HOST是192.168.1.50,那么您可以执行以下操作:

curl 192.168.1.50:49160