群 |启动一个服务只执行一次然后被删除

问题描述

我有一个 Swarm 集群,我有一个服务,它只会创建一个容器,执行一个脚本,然后删除容器。目前它工作正常,容器执行脚本然后在执行后删除自己。但几秒钟后,服务重新启动容器并再次执行脚本。 但是我想在第一次执行后删除该服务,就像该服务多次不执行该工作一样。

我唯一的想法是在我启动服务的第一个脚本中,我放置了一个计时器,比如 4 秒,然后我就删除脚本中的服务:

#!/bin/bash

docker stack deploy -c docker-compose.yaml database-preapre
sleep 4
docker service rm database-prepare

但如果有一天,服务腾出更多时间来执行他的脚本,我会在他运行时切断服务。或者,如果服务真正快速地执行一次,然后在 3 秒后重新启动它自己以进行第二次执行。我不想砍他...

解决方法

为了解决这个问题,我只是在我的脚本中调整了一些东西。首先,在创建临时容器的脚本中,我只睡了 10 秒钟,然后销毁了容器。 (10 秒非常大,但我想确保容器有时间完成这项工作)

其次,当容器完成执行入口点脚本时,他将自己删除并重新启动(因为 swarm 重新启动它),但我不希望我的脚本在第二次执行期间向上,向下和向上并被切断,并且破坏工作。所以我在我的临时容器运行的脚本中添加了一个睡眠定时器,这样他就不会上下颠簸……他执行他的工作然后等待。