Dockerized Node js 应用程序无法启动

2024-01-09

在对我的演示 Express js 应用程序进行 Docker 化并启动容器后,由于以下原因我无法访问该服务"Connection Timeout"

dockerized 之前的 for 项目的 URL (产生了“Hello world!”在浏览器上):

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

启动 docker 容器后项目的 URL(给出一个“172.17.0.2 响应时间过长。")

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

Dockerfile

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镜像

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 inspect 7cf955f5d799给我"IPAddress": "172.17.0.2"

由于我没有明确提供启动容器的端口,因此我假设它与我的 docker 容器(3000)公开的端口相同,这也是我的服务也会侦听的端口。

我在这里做错了什么?


The EXPOSE指令通知 Docker 容器在运行时监听指定的网络端口。EXPOSE不会使容器的端口可供主机访问。

为此,您必须使用-p flag

Your docker run命令应如下所示:

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

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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Dockerized Node js 应用程序无法启动 的相关文章

随机推荐

  • 将 UIView 中的位置转换为 SKScene

    我想在 UIView 中使用 touchBegan 功能 并且应该触发 SKScene 方法 一切都几乎正常 除了我的 SKNode 的起始位置与 UIView 中的触摸不同之外 我在这里读到 Swift 中令人困惑的反向触摸事件 http
  • 查找 3 个输入的最大值 VBA

    我正在尝试找到最多 3 个输入 问题不在于算法 因为当我在 python 中制作相同的脚本时 它工作得很好 问题是它没有按预期工作 我将写一些场景以及结果 8 5 12 最多 125 8 12 最多 1212 5 8 最多 812 8 5
  • 用于选择首选糖果的高效 SQL 2000 查询

    我希望我能想出一个更具描述性的标题 如果您能说出我要询问的查询类型 请建议一个或编辑这篇文章 数据库 SQL Server 2000 示例数据 假设 500 000 行 Name Candy PreferenceFactor Jim Cho
  • 获取 XPath 中标签后面的文本

    我正在尝试使用 Selenium 进行一些测试 但遇到了一些问题 假设我有以下内容 div class itemize row p class subText span class item label Card Color span Ma
  • Action 到子动作的链接

    我已经调用了另一个视图Html Action方法 当用户单击操作链接时 我想在子视图内使用参数调用相同的操作 当我编写此代码时 我收到此错误消息 Html ActionLink link Configure new id 2 配置 操作只能
  • Cron 不将参数传递给 PHP 脚本

    我有一个 cron 作业集 例如 php home novinarb public html index php uri cron 24satahr 但 uri 参数根本没有到达 php 脚本 我也尝试过在 uri 前面没有 但仍然没有 有
  • Swing:JTable 结构更改后 JScrollPane 不刷新

    我有一个 JTable 与 DefaultTableModel 关联 位于 JPanel 中 SpringLayout 位于 JScrollPane 中 当我使用下面的方法修改 DefaultTableModel 的结构时 JTable 会
  • Hibernate createNativeQuery 返回 Clob 的代理对象

    我被迫陷入使用 hibernate createNativeQuery 返回对象数组列表的情况 我的查询返回值的 许多 列之一是 CLOB 返回的对象是 com sun Proxy 对象 我看到一个问题here https stackove
  • 如何通过XML在Spring bean中设置XmlAdapters的Jaxb2Marshaller列表?

    我正在尝试定义一个Jaxb2MarshallerSpring WS 中的 bean 使用扩展的自定义适配器XmlAdapter 我的 XML 文件中有以下内容
  • 文本聚类主题建模效率低下

    我尝试使用 LDA 进行文本聚类 但它没有给我不同的聚类 下面是我的代码 Import libraries from gensim import corpora models import pandas as pd from gensim
  • 什么是脚手架?它是特定平台的术语吗?

    脚手架 是什么 这是仅限 Rails 的东西吗 脚手架通常是指快速设置应用程序的骨架 它不仅仅是 Rails 因为其他平台也有它 它通常也不意味着是一个 最终 系统 只是第一个 最小的方法
  • 在 Python 中使用 Re 删除双空格/制表符组合

    我想使用 Re 模块将 Python 中存在连续制表符和 或空格的所有实例替换为单个空格 我不想删除新行 这排除了 s 推荐 目前我有 formateed string re sub t formateed string formateed
  • 如何使用流获取嵌套集合中的所有元素

    我有一个包含不同嵌套集合的类 现在我想接收嵌套集合的所有元素 具体我想收集集合的所有 StrokePoints 我可以用 旧 java解决它 但如何用流来解决它 int strokesCounter 0 List
  • 名为“DefaultApi”的路由已在路由集合中

    这个问题可能看起来重复 但这略有不同 在所有其他问题中 我注意到他们注册了多条路线 但就我而言 我只有一条路线 我正在创建 asp net webapi framework 4 5 并且在 RegisterRoutes 方法中只有一条路由
  • 在本地找不到元数据

    在本地机器上 我安装了一个带有 Maven 存储库的 Artifactory 并且我的项目有一个非常简单的 pom 文件 它指向它
  • 在安全的 Android 锁屏中使用 FLAG_SHOW_WHEN_LOCKED 和 disableKeyguard()

    上下文 最近 我一直在寻找可靠的方法来控制安全的 Android Keyguard 主要是显示自定义锁屏 我知道谷歌已经声明自定义锁屏不受该平台的正式支持 并且应该预料到事情会被破坏 但是 利用现有的 API 我相信一定有办法做到这一点 我
  • Linux 下 C 语言的公钥实现

    我正在尝试使用公钥加密来签名并稍后验证文件 该文件是一个简单的纯文本文件 其中包含用于创作目的的用户信息 我尝试了不同的站点来实现公钥加密算法的 C 实现 但我没有找到任何东西 许多网站都指出使用证书 x 509 等 但这远远超出了我的需要
  • 如何使用带有变量表名称和条件的立即执行

    我想创建一个 PL SQL 函数 该函数传递一个表名和一个条件 并返回该表上满足条件的行数 我创建了这个函数 CREATE OR REPLACE FUNCTION CHECK EXISTS TABLE NAME VARCHAR2 CONDI
  • 如何删除除最后五个之外的所有 Git 提交

    我有一个非常大的 Git 存储库 其中仅包含经常更改的二进制文件 当然 Git 存储库是much比其中的实际文件大 我并不真正关心旧的历史记录 我只需要一些较新的历史记录就能够恢复一些错误的更改 假设我想删除除最后五个之外的所有提交 当然
  • Dockerized Node js 应用程序无法启动

    在对我的演示 Express js 应用程序进行 Docker 化并启动容器后 由于以下原因我无法访问该服务 Connection Timeout dockerized 之前的 for 项目的 URL 产生了 Hello world 在浏览