ng 服务无法在 Docker 容器中工作

2023-11-23

我有这个Docker Compose 配置我只需创建一个 NodeJS 容器并在其中安装 Angular CLI。

After a docker-compose up -d,我可以在容器内通过 SSH 连接docker-compose run node bash. ng new工作完美但是ng serve似乎不起作用。它启动正确,控制台中没有错误。但是,如果我访问localhost(广告我将端口 4200 映射到 80),没有加载任何内容。

我错过了什么吗?


在你的 Dockerfile 中你缺少了Expose行如:

EXPOSE 4200

尝试将其放在 docker 文件中最后一个 RUN 命令之前。

此行公开容器本身的端口(在本例中为 4200),因此 compose 的映射可以正常工作(80:4200)。

Compose 只是这样做:将 80 从主机转发到容器中的 4200。但它不知道也不关心 4200 是否真的被监听。 dockerfile 中的 Expose 确保在构建镜像时,为未来运行的容器公开此端口,以便您的 ng 服务器可以监听它。


解决

所以为了得到你想要的docker-compose run, use publish发布端口。作为run不使用您的映射docker-compose.yml,它会忽略它们。所以像这样使用它:

docker-compose run --publish 80:4200 node bash

然后创建角度应用程序并像您所做的那样启动它。


测试示例供将来参考

cd tmp(或任何可写文件夹)

ng new myProject

cd myProject

ng serve --host 0.0.0.0(--host 0.0.0.0 监听容器中的所有接口)

然后在浏览器中转到localhost现在您应该看到 Angular 欢迎页面作为端口4200已发布并绑定到主机端口80通过发布命令,如我上面所示。

每次遇到端口转发问题时,如果您打开一个新终端,则保留执行原始终端的另一个终端run command并运行docker ps您将在“端口”列中看到:

0.0.0.0:80->4200/tcp这意味着端口 80 上的主机已成功转发到端口 4200 上的容器。

如果你看到类似的东西4200/tcp而不是->部分,这意味着没有发布映射或端口。

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

ng 服务无法在 Docker 容器中工作 的相关文章

随机推荐

  • MVC - 模型与同一页面上的多个实体绑定

    我想知道如何在从页面上多个实体返回信息的场景中使用模型绑定 我想显示来自两个单独实体的字段组合 即客户 地址 我正在为我的模型使用 Microsoft 的 DAAB 和自定义业务实体 有任何想法吗 如果您尝试在回发时绑定到多个模型 则应尝试
  • 如何在 MS SQL Server 2008 上设置日期格式

    我想根据模式格式化日期 例如 22 01 2015 或 2016 12 15 在 NET Framework 中 我们有 DateTime gt ToString 方法 它接受格式作为参数 甚至接受 string Format 它的作用相同
  • 在 Web 应用程序中处理时区

    在我们的网络应用程序中 我们需要显示并输入 不同时区不同国家的日期时间信息 目前 我们正在为每个国家 地区维护单独的 Web 服务器和单独的数据库 oracle 11g 我们计划将所有内容合并到一个具有单一数据库 Oracle 11g 的门
  • 如何在此 SSRS 表达式中“指定数据集聚合”?

    我的 SSRS 报告中需要一个行值 该值是根据报告中已使用的几个字段计算得出的 我希望它显示在名为 textboxPercentageValue 的文本框中 用半简单的英语来说 表达式 公式是 If the value of the Wee
  • Android 自定义 ArrayAdapter 在过滤后不刷新

    所以我有一个习惯ArrayAdapter所以我可以使用标题 副标题视图ListView 我有一个EditText它接受一个字符串并过滤适配器 过滤器的工作原理是过滤正确的对象 我可以通过单击它来判断 它以正确的 附加 开始意图 但是 即使过
  • Javascript:关于如何定义新数据类型有哪些指导原则?

    假设您正在创建数据类型并公开其行为 您能否举例说明何时使用 一个功能和新功能 define new data type var CustomDataType function this a whatever this doX functio
  • 设置内联元素的宽度

    您可以设置内联元素的宽度 例如 span em and strong 但在放置它们之前您不会注意到任何效果 a 我以为内联元素的宽度不能设置 b 假设可以设置宽度 在我们定位内联元素之前 我们不会注意到任何效果 因此我们指定的宽度 位置如何
  • “撤消”功能的最佳设计模式[重复]

    这个问题在这里已经有答案了 可能的重复 撤消引擎的设计模式 一般来说 您如何处理应用程序中支持 撤消 功能的问题 我曾经开发过网络应用程序和桌面应用程序 但我从来没有真正对我制作的任何 撤消 系统感到满意 我相信应该是Command设计模式
  • Angular2.js 与 Angular2.dev.js

    我想知道之间的差异angular2 js and angular2 dev js 当然还有更多文件 例如 router dev js and router js还有 我的问题是为什么有两个版本 它们之间有什么区别 angular2 dev
  • Ruby on Rails 使用外键删除固定装置

    我在使用使用外键的装置设置测试时遇到问题 如果有人能帮助我理解这一点 我将不胜感激 比方说 user type模型有一个参考 role模型 当测试执行时 测试数据库中的所有数据都被删除并再次重新插入 Rails 首先从角色模型中删除数据 而
  • 在 JS 中访问 Asp.Net Session 变量

    我无法访问 js 文件中的变量 我在页面顶部的代码是 然后我想访问我的 js 文件中的权限 我现在只想提醒您这一点 我能做到吗 thanks 您必须将会话值存储在隐藏字段中 之后您可以在 JS 中访问隐藏的 FieldValue
  • php中的应用范围

    我需要在所有请求之间共享相同的数组对象 无论来自同一浏览器 用户的请求如何 php 中是否有任何应用程序范围可以存储该数组对象 我正在使用 php 5 x 如果您想在每个用户的所有请求中共享它 使用会话可能是要走的路 如果您想在所有用户的所
  • 从 dict 创建 ORM 对象并添加到会话中

    假设我有一个User具有属性的模型id name email和一段关系languages 是否有可能创建一个User来自现有数据的实例 其行为就像我查询它一样dbsession query User get 42 我的意思特别是我希望能够访
  • 在 Qt MainWindow 上设置 WA_DeleteOnClose 属性时,删除 ui 指针时程序崩溃

    我已经设置了WA DeleteOnClose主窗口中的小部件属性 setAttribute Qt WA DeleteOnClose 但是 每当我关闭该主窗口时 我都会在其析构函数中遇到段错误 该析构函数只包含delete ui 简而言之 在
  • Pandas:将日期范围解压缩为单个日期

    Dataset 我有一个 1GB 的股票数据集 其中包含日期范围内的值 日期范围没有重叠 数据集按 股票代码 开始日期 排序 gt gt gt df head start date end date val ticker AAPL 2014
  • SonarQube 重构此方法以降低其认知复杂性

    我有以下实用方法 并且我正在使用多个 if 语句并遇到认知复杂性问题 我浏览了一些链接 但我无法理解应该如何更改代码而不影响此方法的用户 public static boolean isWrapperValid WrapperClass w
  • 如何在gtk3-python中执行后台任务?

    我有这个主线 Gui py from gi repository import Gtk Gdk import Process import gobject class gui def init self self window Gtk Wi
  • JavaScript 日期差异

    我在使用 DateDiff 函数时遇到问题 我试图找出两个日期 时间之间的差异 我读过这篇文章 在Javascript中计算日期差异的最佳方法是什么 我还看了这个教程 http www javascriptkit com javatutor
  • 如何查找当前页面使用了哪些CSS文件[重复]

    这个问题在这里已经有答案了 我的页面上有很多 CSS 文件 但其中很多文件并没有被样式使用 是否可以确定哪些文件被页面使用 哪些文件不被页面使用 Use http getfirebug com 来调试页面 当查看 css 时 它将引用使用的
  • ng 服务无法在 Docker 容器中工作

    我有这个Docker Compose 配置我只需创建一个 NodeJS 容器并在其中安装 Angular CLI After a docker compose up d 我可以在容器内通过 SSH 连接docker compose run