【问题标题】:Running docker stack deploy not able to connect to app. Docker-compose works fine运行 docker stack deploy 无法连接到应用程序。 Docker-compose 工作正常
【发布时间】:2021-05-31 19:47:22
【问题描述】:

我正在尝试让一个非常简单的 docker-swarm 运行。如果我使用docker-compose up -d 启动容器,我可以转到 locahost 并查看“Hello 消息”。 运行 docker stack deploy -c docker-compose.yml swar 可以很好地启动 swarm。 码头工人ps

docker 服务 ls

但是导航到 localhost、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:

Dockerfile:

FROM node:11.1.0-alpine

WORKDIR /home/node

COPY . .

RUN npm install

CMD npm start

编辑: 运行 wget 只是挂起。

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

curl 只是挂起没有输出。

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

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

仍然没有运气。

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

【问题讨论】:

  • 值得注意的是,docker stack deploy 不支持 build: 指令,因此除非最近在本地构建了映像,否则它将尝试从 docker hub 部署具有该名称的映像。你可以去docker-compose build,它将使用 build: 属性构建每个服务,并使用任何 image: 属性自动标记它。这将适用于单个节点。否则,您将需要一个注册表来托管所有节点都可以访问的自定义图像。
  • 我应该提到的是,我确实使用 compose 构建了图像,这也是教程步骤的一部分。

标签: node.js docker docker-swarm


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 2022-06-29
    • 2019-02-08
    • 2019-08-28
    • 2018-04-16
    • 2019-07-30
    • 1970-01-01
    • 1970-01-01
    • 2015-05-19
    • 1970-01-01
    相关资源
    最近更新 更多