我可以使用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框架来说更为通用。通常有一个“构建”过程,它将以某种方式生成静态Web应用程序,它可以由Web服务器提供。
在Angular的情况下,它是ng build
。您可以在https://github.com/angular/angular-cli/wiki/build上了解有关该命令的更多信息。 ng build
命令将在您的项目中创建一个dist
目录,其中包含构建的HTML,CSS <和JavaScript。此目录中的文件是您要推送到Web服务器的文件。
现在我们已经了解了如何获取Web应用程序的源代码,我们希望将其作为容器运行。根据您的问题,我假设您已经拥有一个带有Web服务器的Docker镜像。在这种情况下,您可以将dist
文件夹复制到与构建Web服务器的现有Dockerfile
相同的位置,并向Dockerfile
添加一行,例如:
COPY dist/* /my/webserver/root
如果您可以提供有关现有图像,Dockerfile
和环境的更多信息,我可以提供一个更好的示例,用于构建和生成最终Web服务器映像的Angular应用程序。
但是,您不一定需要从PHP应用程序中提供Angular应用程序。如果您的Angular应用程序连接到PHP应用程序,它们仍然可以是单独的Docker镜像和链接在一起的容器。