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

问题描述 投票:2回答:1

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

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

我知道容器正常工作,因为我可以将PHP文件提供给相应localhost端口的浏览器而不会出现任何问题。所以它需要与Angular一起导致错误。

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

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

javascript php angular docker
1个回答
5
投票

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

Building

这对大多数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和环境的更多信息,我可以提供一个更好的示例,用于构建和生成最终Web服务器映像的Angular应用程序。

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

© www.soinside.com 2019 - 2024. All rights reserved.