加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-16 03:24:48 所属栏目:安全 来源:网络整理
导读:在对演示Express Express js应用进行docker化并启动容器后,由于“连接超时”,我无法访问该服务 在进行docker化之前,for项目的网址(在浏览器中生成了“ Hello world

在对演示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地址.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读