我可以使用 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/