【问题标题】:How to build docker image which combines angular and spring boot app?如何构建结合了 Angular 和 Spring Boot 应用程序的 Docker 映像?
【发布时间】:2019-07-31 12:53:45
【问题描述】:

我有两个不同的项目 spring boot 和 angular 项目。现在我想构建包含这两个项目的 docker 镜像。 我检查了maven-resource-plugin,它将角度文件复制到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"]

【问题讨论】:

  • 有什么理由同时部署到同一个容器?我建议通过创建两个不同的图像来部署到不同的容器
  • 好吧,这个 webapp 会很少使用,比如一个月左右一次,我不想为此一直保持单独的 Ui 容器。

标签: angular spring-boot docker dockerfile


【解决方案1】:

您可以将 webpack 生成的 wwwroot 托管为 Spring Boot 应用程序提供的静态文件。

而不是通过执行ng serve 在 webpack-dev 上运行您的 Angular 应用程序,您应该通过ng build --prod 生成静态文件(我可能拼错了一些命令,从内存中写入)并将它们作为静态文件放置在 spring boot 应用程序中,如图所示这里https://spring.io/blog/2013/12/19/serving-static-web-content-with-spring-boot

我不是弹簧专家,但你可以像你说的那样做。当然,拥有一个只有前端的单独容器会很好,但是如果您的 spring 应用程序将与前端紧密绑定并且不会为其他服务提供 api,您可以在 spring boot 服务器上使用解决方案托管 angular。

最后,您只是将 html、js 和 css 文件发送到客户端的浏览器,并在其中执行代码,因此托管静态文件不会成为负担。

如果您只想扩展后端服务以处理更大的流量,那么将 api 与前端内容服务服务(即 nginx、httpd)分离是合理的,但我认为这里并非如此。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-01-08
    • 2020-11-14
    • 2020-06-09
    • 2017-02-11
    • 2019-07-13
    • 2019-02-09
    • 1970-01-01
    • 2017-02-11
    相关资源
    最近更新 更多