我有两个不同的项目spring boot和angular项目。现在,我想构建将包含两个项目的docker镜像。
我检查了maven-resource-plugin
,它将 Angular 文件复制到spring-boot /target/classes/resources directory
。
还有docker-maven-plugin
从spring-boot-app
构建docker镜像。
我应该同时使用两个插件的输出来创建所需的输出,还是应该更改创建docker镜像的方式?
现在我的 docker 镜像是从Spring Boot应用程序构建镜像。
FROM java:8
VOLUME /tmp
ADD gs-spring-boot-docker-0.1.0.jar app.jar
RUN bash -c 'touch /app.jar'
ENTRYPOINT ["java","-Djava.security.egd=file:/dev/./urandom","-jar","/app.jar"]
最佳答案
您可以将webpack生成的wwwroot托管为Spring Boot应用程序提供的静态文件。
而是通过执行ng serve
在webpack-dev上运行您的angular应用,您应该通过ng build --prod
生成静态文件(我可能会拼写一些命令,从内存中写入内容)并将它们作为静态文件放置在spring boot app中,如此处https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot所示
我不是 Spring 专家,但是您可以按照您说的做。当然,拥有一个仅包含前端的单独容器会很好,但是如果您的spring应用将与前端紧密 bundle 在一起,并且无法为其他服务提供api,则可以在Spring Boot服务器上使用托管angular的解决方案。
最后,您只是将html,js和css文件发送到客户端的浏览器,在此处执行代码,因此托管静态文件将不会成为负担。
如果您只想扩展后端服务以处理更大的流量,则将api与前端内容服务(即nginx,httpd)分开是合理的,但是我认为情况并非如此。
关于angular - 如何构建结合了 Angular 和Spring Boot应用程序的Docker镜像?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55081023/