如何在docker-swarm上运行docker-compose?

我是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的Docker Swarm,我知道这个Swarm只有一个节点:

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

现在,我不需要工作人员或其他任何东西,只需要一个节点(默认情况下创buildpipe理器节点),然后在那里部署我的映像。

看看这些说明https://docs.docker.com/get-started/part4/#create-a-cluster它似乎我必须创build一个虚拟机驱动程序,然后在那里scp我的文件,并SSH运行docker撰写向上。 这是正常的工作方式吗? 为什么我需要虚拟机? 我不能在swarmpipe理器上运行docker-compose? 我没有find办法,所以我猜我错过了一些东西。

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

在swarm模式下,pipe理容器的所有命令都转移到了docker stackdocker service ,它们pipe理多个主机上的容器。 docker stack deploy命令接受一个带-c arg的组合文件,所以你可以在pipe理器节点上运行以下命令:

 docker stack deploy -c docker-compose.yml stack_name 

基于版本3的yml文件创build名为“stack_name”的堆栈。 无论您是否有一个节点或群集pipe理的大型群集,此命令的工作原理都是一样的。