node.js-Dockerized Node js应用无法启动

前端之家收集整理的这篇文章主要介绍了node.js-Dockerized Node js应用无法启动 前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

在对演示Express Express js应用进行docker化并启动容器后,由于“连接超时”,我无法访问该服务

在进行docker化之前,for项目的网址(在浏览器中生成了“ Hello world!”):

http://localhost:3000/cars/example/fetchResult

启动docker容器后,该项目的网址(给出“ 172.17.0.2花费了太长时间来响应.”)

http://172.17.0.2:3000/cars/example/fetchResult

Docker文件

FROM node:argon

# 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 3000
CMD [ "node","server.js" ]

我建立了像

docker build -t prasannarb/example-node-service

我将Docker映像作为一个容器启动

docker run -t prasannarb/example-node-service

然后当我docker ps时,它给了我

CONTAINER ID        IMAGE                             COMMAND             CREATED              STATUS              PORTS               NAMES
7cf955f5d799        prasannarb/example-node-service   "node server.js"    About a minute ago   Up About a minute   3000/tcp            thirsty_perlman

Docker检查7cf955f5d799给我“ IPAddress”:“ 172.17.0.2”

由于我没有明确给出启动容器的端口,因此我假设它所使用的端口与我的docker容器(3000)暴露的端口相同,该端口也是我的服务将侦听的端口.

我在这里做错了什么?

最佳答案
EXPOSE指令通知Docker运行时容器在指定的网络端口上进行侦听. EXPOSE不会使主机可以访问容器的端口.

为此,您必须使用-p标志

您的docker run命令应如下所示:

$docker run -p3000:3000 -t prasannarb/example-node-service

另外,docker inspect命令为您提供了容器IP地址,而不是主机IP地址.

猜你在找的Docker相关文章