运行 docker 堆栈部署无法连接到应用程序。 Docker-撰写工作正常

Running docker stack deploy not able to connect to app. Docker-compose works fine

我正在尝试建立一个非常简单的 docker-swarm。如果我使用 docker-compose up -d 启动容器,我可以转到 locahost 并查看 'Hello message'。 运行 docker stack deploy -c docker-compose.yml swar 开始 swarm 正常。 dockerps

docker 服务 ls

但是导航到本地主机、0.0.0.0、127.0.0.1 或机器的 IP 不起作用,它只是超时并显示“无法访问此站点。花了太长时间才回应。 我还尝试了另一个来自 github 的小教程,它也有同样的问题。 有什么想法吗?

server.js:

const express = require("express");
const os = require("os");

const app = express();

app.get("/", (req, res) => {
  res.send("Hello from Swarm " + os.hostname());
});

app.listen(3000, () => {
  console.log("Server is running on port 3000");
});

docker-compose.yml:

version: "3"

services:
  web:
    build: .
    image: takacsmark/swarm-example:1.0
    ports:
      - 80:3000
    networks:
      - mynet

networks:
  mynet:

Docker 文件:

FROM node:11.1.0-alpine

WORKDIR /home/node

COPY . .

RUN npm install

CMD npm start

编辑: 运行 wget <我的电脑 ip> 挂了。

--2021-05-28 16:59:52--  http://<ip>/
Connecting to <ip>:80... 

curl < ip > 挂起没有输出。

我已经初始化了包含广告 ip 的 swarm

docker swarm init --advertise-addr <my address> 

仍然没有运气。

我的docker版本是20.10.5,docker-compose版本:1.25.0

对于遇到此类问题的任何人。问题是 docker 的版本。我删除了 20.10.15 并重新安装了 docker 19.03.10。要安装自定义 docker 而不是最新的,请按照以下步骤操作。 https://docs.docker.com/engine/install/ubuntu/ locahost 不工作,但是 运行 hostname -I 获取你机器的 ip 并将其粘贴进去。然后就可以工作了。