如何在docker swarm上运行docker compose?

如何在docker swarm上运行docker compose?,docker,docker-compose,docker-swarm,Docker,Docker Compose,Docker Swarm,我是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创建了一个Dock

我是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
现在,我不需要工人或其他任何东西,只需要一个节点(默认情况下创建的管理器节点),然后在那里部署我的映像


看这些说明,似乎我必须创建一个VM驱动程序,然后在那里scp我的文件,并使用ssh运行docker compose。这是正常的工作方式吗?为什么我需要虚拟机?我能不能在swarm manager上运行docker compose?我没有找到这样做的方法,所以我猜我遗漏了什么。

运行
docker compose up
将直接在主机上创建单个容器

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

docker stack deploy -c docker-compose.yml stack_name

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

运行
docker compose up
将直接在主机上创建单个容器

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

docker stack deploy -c docker-compose.yml stack_name

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

谢谢!我想这就回答了我的问题,尽管我当前的docker compose文件不适用,因为它似乎不支持build选项,并且它需要一个指向存储库中预构建映像的链接。我将修复这些问题并发回:)swarm使用的compose文件没有很多docker compose扩展名。我一直在使用
docker compose config
(从内存中,命令可能有点关闭)将yml预处理为swarm可以使用的格式。您仍然可以使用docker compose进行构建、推送和拉送步骤。创建映像并推送到我的存储库(本地映像似乎不起作用)成功了!还感谢您的
docker compose config
提示!非常有用。@zapatilla您能否提供有关如何使用
docker compose config
命令预处理YmlTanks的更多详细信息!我想这就回答了我的问题,尽管我当前的docker compose文件不适用,因为它似乎不支持build选项,并且它需要一个指向存储库中预构建映像的链接。我将修复这些问题并发回:)swarm使用的compose文件没有很多docker compose扩展名。我一直在使用
docker compose config
(从内存中,命令可能有点关闭)将yml预处理为swarm可以使用的格式。您仍然可以使用docker compose进行构建、推送和拉送步骤。创建映像并推送到我的存储库(本地映像似乎不起作用)成功了!还感谢您的
docker compose config
提示!非常有用。@zapatilla您能否提供有关如何使用
docker compose config
命令预处理yml的更多详细信息