我可以使用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应用?
答案 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镜像和链接在一起的容器。