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

时间:2017-12-21 17:55:00

标签: javascript php angular docker

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

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

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

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

如何使用Docker而不是ng serve来提供Angular应用?

1 个答案:

答案 0 :(得分:5)

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

建筑

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

在Angular的情况下,它是ng build。您可以在https://github.com/angular/angular-cli/wiki/build了解有关该命令的更多信息。 ng build命令将在项目中创建一个dist目录,其中构建的HTML,CSS<和JavaScript一起生活。此目录中的文件是您要推送到Web服务器的文件。

泊坞

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

COPY dist/* /my/webserver/root

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

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