最后根据此图像启动最后一个容器

Unlock business potential through effective first dataset management solutions.
Post Reply
roseline371274
Posts: 932
Joined: Mon Dec 23, 2024 7:00 am

最后根据此图像启动最后一个容器

Post by roseline371274 »

如果您真的想用 NGINX 配置文件做一些奇特的事情,它会变得非常复杂。有关 NGINX 配置的详细说明,请参见此处。这是我们将用来构建图像的:


服务器部分负责确保服务器在 localhost:8080 上运行并监听。 位置将代理请求到我们两个 Spring Boot 应用程序 url 的上游位置(由proxy_pass和相应的上游部分处理)。proxy_set_header指令确保 NGINX 提供的 Swagger UI 的基本 URL 具有正确的值http://localhost:8080,因此 UI 上的所有调用都将由我们的两个 Spring Boot 容器之一提供。

目前这些信息应该足够了。让我们构建并推送镜像(现在 华人海外数据 可以在Docker Hub上找到它):


<span class="copy">Copy</span>

请注意,两个 Spring Boot 容器都需要启动,这样 NGINX 配置中相应的上游部分才有效。如果一个或两个容器关闭或运行在不同的端口或使用不同的名称,NGINX 容器将无法启动,而是会抛出错误(如果有人知道该问题的解决方案,请告诉我!)。然而,启动后,我们可以开始关闭 Spring Boot 容器而不会影响 NGINX 容器。

NGINX 容器启动后,Swagger UI 将在http://localhost:8080/swagger-ui.html上可用。您可以尝试一下并停止容器来观察它的行为。关闭一个 Spring Boot 容器不会影响系统。 NGINX 容器会将所有并发请求转发到一个正在运行的容器。如果两个 Spring Boot 容器都关闭了,您最终会收到 502 错误。

检查负载平衡的另一种方法是通过 Spring Boot Actuator 检查环境。要查询 HOSTNAME,请输入:http://localhost:8080/actuator/env/HOSTNAME。如果两个容器都在运行,您将看到 HOSTNAME 值将在两个值之间交替:



这些值对应于可以通过docker container inspect命令找到的主机名:



同样,如果您关闭一个容器并刷新,您会注意到 HOSTNAME 将坚持使用仍在运行的一个容器的值。

同样有趣的是(我们之前提到过)docker network inspect命令可以获取整个网络的概览:


清理
在您充分操作后,如果您想要清理系统上的所有容器、网络、卷和图像,请首先停止所有正在运行的容器,然后发出以下命令(请注意,这将删除系统上的每个 docker 数
概括。
Post Reply