【问题标题】:How do I run docker-compose up on a a docker-swarm?如何在 docker-swarm 上运行 docker-compose up?
【发布时间】:2017-05-18 01:51:47
【问题描述】:

我是 Docker 新手,并尝试通过在 Docker-Swarm 上本地部署一个 hello-world Flask 应用程序开始。

到目前为止,我有我的 Flask 应用程序、一个 Dockerfile 和一个 docker-compose.yml 文件。

version: "3"
services:
  webapp:
    build: .
    ports:
      - "5000:5000"

docker-compose up 工作正常并部署了我的 Flask 应用程序。

我已经使用docker swarm init 启动了一个 Docker Swarm,据我所知,它创建了一个具有单个节点的 swarm:

ID                           HOSTNAME  STATUS  AVAILABILITY  MANAGER STATUS
efcs0tef4eny6472eiffiugqp *  moby      Ready   Active        Leader

现在,我不需要工人或其他任何东西,只需要一个节点(默认创建的管理器节点),并将我的图像部署在那里。

查看这些说明https://docs.docker.com/get-started/part4/#create-a-cluster 似乎我必须创建一个 VM 驱动程序,然后在那里 scp 我的文件,然后通过 ssh 运行 docker-compose up。这是正常的工作方式吗?为什么需要虚拟机?我不能在群管理器上运行 docker-compose up 吗?我没有找到这样做的方法,所以我猜我错过了一些东西。

【问题讨论】:

    标签: docker docker-compose docker-swarm


    【解决方案1】:

    运行docker-compose up 将直接在主机上创建单独的容器。

    使用 swarm 模式,所有管理容器的命令都转移到了 docker stackdocker service,它们可以跨多个主机管理容器。 docker stack deploy 命令接受带有 -c 参数的 compose 文件,因此您可以在管理器节点上运行以下命令:

    docker stack deploy -c docker-compose.yml stack_name
    

    根据版本 3 的 yml 文件创建一个名为“stack_name”的堆栈。无论您是拥有一个节点还是由 swarm 管理的大型集群,此命令的工作方式都相同。

    【讨论】:

    • 谢谢!我认为这回答了我的问题,尽管不适用于我当前的 docker-compose 文件,因为似乎不支持构建选项,并且它需要指向存储库上预构建图像的链接。我会修复这些并回帖:)
    • swarm 使用的 compose 文件没有很多 docker-compose 扩展。我一直在使用docker-compose config(从内存中,命令可能有点偏离)将 yml 预处理为 swarm 可以使用的。您仍然可以使用 docker-compose 进行构建、推送和拉取步骤。
    • 创建图像并推送到我的存储库(本地图像似乎不起作用)工作!还要感谢docker-compose config 的提示!非常有用。
    • @zapatilla 你能否提供更多关于你如何使用docker-compose config 命令来预处理yml的细节
    猜你喜欢
    • 1970-01-01
    • 2020-09-13
    • 2018-12-18
    • 2023-01-16
    • 1970-01-01
    • 1970-01-01
    • 2021-06-13
    • 2023-03-09
    • 1970-01-01
    相关资源
    最近更新 更多