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

Swarm | Start a service to execute just one time then be deleted

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

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

#!/bin/bash

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

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

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

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