如何在不使用ng服务的情况下投放Angular 5应用程序?

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

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

我知道容器工作正常,因为我可以PHP文件浏览器在各自的本地端口没有任何问题。 所以它需要是Angular导致错误的东西。

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

我如何使用Docker而不是ng serve来使用Angular应用程序?

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

build造

这对于大多数JavaScript框架来说是更通用的。 通常会有一个“构build”的过程,它会以某种方式产生静态的Web应用程序,使得它可以被Web服务器所服务。

在Angular的情况下,这是ng build 。 您可以通过https://github.com/angular/angular-cli/wiki/build了解有关该命令的更多信息&#x3002; ng build命令将在您的项目中创build一个dist目录,其中包含构build的HTML,CSS <和JavaScript所在的目录。 这个目录中的文件是你要推送到你的Web服务器的服务。

docker

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

 COPY dist/* /my/webserver/root 

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

虽然,您不一定需要从您的PHP应用程序提供Angular应用程序。 如果您的Angular应用程序连接到PHP应用程序,它们仍可能是独立的Docker镜像和连接在一起的容器。