首页 > 解决方案 > Docker swarm 容器副本正在运行,但无法在浏览器或 curl 中访问相同的副本

问题描述

我正在关注 docker 文档并尝试使用链接创建节点的副本 --> https://docs.docker.com/get-started/part3/

我已按照文档中提到的步骤进行操作,但无法在 curl 或浏览器上获得预期的应用程序响应。

docker 分解文件如下所示:

version: "3"
services:
  web:
    image: vigneshnithin23/restaurant:latest
    deploy:
      replicas: 2
      placement:
          constraints: [node.role == manager]
      resources:
        limits:
          cpus: "0.1"
          memory: 50M
      restart_policy:
        condition: on-failure
    ports:
      - "8090:8090"
    networks:
      - webnet
networks:
  webnet:

根据文档,他们能够卷曲 URL。而我不能这样做。

我有两个 IP 地址并使用 --advertise-addr 初始化了 docker swarm - 第一个 wlan 地址

如果我在单个容器上运行相同的代码,就能得到想要的结果。

我浏览了下面链接中的问题,之前有人问过这个问题,但没有正确的答案

网站在独立容器中可用,而不是在群中

任何帮助,将不胜感激。

标签: dockerdocker-composedocker-swarm

解决方案


您需要问问自己,您的 SpringBoot 应用程序是否能够在每秒 50% 的 CPU 使用率和 50M 的受限环境中运行。

当您将其作为单个容器运行时[9ms 启动],它在不受约束的环境中运行,而在您的堆栈文件中,您正在限制它。因此,当您启动服务时,需要更长的时间来预热和启动。

这是同一应用程序的屏幕截图,只需将副本集更改为“1”并将内存增加到 100M,服务应用程序和服务响应需要大约 900 毫秒。 在此处输入图像描述

因此,请尝试针对资源限制微调这些设置。


推荐阅读