javascript - 如何在不使用 ng serve 的情况下为 Angular 5 应用程序提供服务?

标签 javascript php angular docker

我可以使用 ng serve 构建和服务 Angular 5 项目,并在我的浏览器中查看它。我想将文件移动到 docker 容器中,因为我的最终应用程序需要有一个 php 后端。

当我将使用 ng serve 运行的同一文件系统移动到 docker build 并尝试导航到它时,我收到服务器错误。

我知道容器可以正常工作,因为我可以在各自的本地主机端口向浏览器提供 PHP 文件,而不会出现任何问题。所以它需要是 Angular 导致错误的东西。

我注意到 ng new angular-tour-of-heroes 项目在根项目目录中没有 index.html。当我将 src/ 文件夹中的那个移动到根目录时,我在浏览器中仍然一无所获。

如何使用 Docker 而不是 ng serve 为 Angular 应用提供服务?

最佳答案

这个答案将分为两部分,因为听起来您可能不熟悉构建过程。

建筑

这对大多数 JavaScript 框架来说更为通用。通常有一个“构建”过程将以某种方式生成静态 Web 应用程序,它可以由 Web 服务器提供服务。

对于 Angular,它是 ng build。您可以在 https://github.com/angular/angular-cli/wiki/build 了解有关该命令的更多信息. ng build 命令将在您的项目中创建一个 dist 目录,其中包含构建的 HTML、CSS< 和 JavaScript。此目录中的文件是您将推送到 Web 服务器以提供服务的内容。

docker

现在我们了解了如何获取要提供服务的 Web 应用程序的源代码,我们希望将其作为容器运行。根据您的问题,我假设您已经拥有带有 Web 服务器的 Docker 镜像。在这种情况下,您可以将 dist 文件夹复制到与构建 Web 服务器的现有 Dockerfile 相同的位置,并向您的 Dockerfile 添加一行> 例如:

COPY dist/* /my/webserver/root

如果您可以提供有关现有图像、Dockerfile 和环境的更多信息,我可以提供一个更好的示例来构建和生成 Angular 应用程序以生成最终的 Web 服务器图像。

不过,您不一定需要从 PHP 应用程序为 Angular 应用程序提供服务。如果您的 Angular 应用程序连接到 PHP 应用程序,它们仍然可以是单独的 Docker 镜像和链接在一起的容器。

关于javascript - 如何在不使用 ng serve 的情况下为 Angular 5 应用程序提供服务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47930292/

相关文章:

javascript - Protractor firefox 控制台日志错误未出现

javascript - 从数组中删除标记后更新标记簇

typescript - Angular 2 如何将自定义提供程序注入(inject)服务?

javascript - 从天数创建日期

javascript - Dedup并获取javascript中对象数组中键的最大值行

php - 很难让 TLS 1.2 与 cURL 一起工作

PHP MySQL 加载搜索查询需要 0.8 秒到 3 秒,如何加快速度

php - sql插入和更新问题

javascript - Angular 4,错误 : Can't resolve all parameters for StateObservable: (?)

angular - 如何在 tsconfig 中包含 Angular(不是 JS)类型,这样我就不必导入它们了?