首页 > 解决方案 > 使用 docker 容器在 Java 应用程序中将前端与后端分开

问题描述

我在 Spring 框架中非常新,尤其是在 Docker 中,无论如何我想以这种方式改进我的应用程序:

目前我有一个带有 2 个容器的应用程序:数据库和应用程序(基于 tomcat)。在应用程序容器中,我们同时拥有:前端(js 文件)和后端。在构建应用程序期间,我们创建 .war 来存储前端文件,在 compose-up 命令期间,我们将这些文件作为 .war 文件复制到应用程序容器(tomcat 工作的地方)。现在我想为前端创建另一个容器以将前端与后端分开,并且将来使部署过程更容易(所以我想要 3 个容器:数据库、应用程序和应用程序前端)。这个目标可以实现吗?我想到的第一个想法是(使用 docker-compose)启动应用程序容器,然后将前端从应用程序前端复制到 tomcat。可能吗?

标签: springdocker

解决方案


是的,这绝对是可能的。

所以你想要3个容器

database, app and app-frontend

您的应用程序已经通过 REST API 公开了您的所有功能。

应用程序前端调用这些 API。

因此,换句话说,您可以将您的应用程序前端分开并在不同容器中的其他地方运行它,它会正常工作。

您需要牢记并可能面临问题的几件事

  1. 将应用程序前端与应用程序分开后,您将遇到跨域问题。由于您的 API 和应用程序前端不在同一个地址上。因此,您可能需要在您的应用程序中允许跨源调用

  2. 可能您需要更改 API 调用路径。如果您使用的是 jquery,您可能正在使用 url:“/userdetail”。这行不通。您需要将其更改为“url”:“IP:PORT/baseApp/userdetail”

  3. app-frontend 应该能够与应用 API 对话。

编辑1:

回答您的问题

1. 如何构建这样的应用前端容器?还是我的观念错了?

由于您将使用静态文件。

只需将这些文件放在任何 Web 服务器中,如果您已经处理了 API url。

您已完成构建应用程序前端容器。

2.我需要像nginx这样的东西吗?

您可以使用任何 Web 服务器,如 Nginx、Apache ... 来部署您的应用程序前端


推荐阅读