You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

docker-compose中restart_policy的delay参数未生效问题求助

问题原因

你使用的deploy.restart_policy是Docker Swarm集群模式专属的配置项,当用普通单机的docker-compose up启动服务时,Docker会直接忽略deploy节点下的所有配置。这就是为什么你的delay:6000s完全不起作用,容器退出后立刻重启,和restart: always行为一致。

解决办法

根据你移除systemd、实现带延迟容器重启的需求,有两种可行方案:

方案1:切换到Docker Swarm模式运行

如果你的环境允许使用Swarm,单节点也可以部署,按以下步骤操作:

  1. 初始化Swarm:
docker swarm init
  1. 用Swarm命令替代普通compose命令启动服务:
docker stack deploy -c docker-compose.yml my-service

此时deploy.restart_policy里的delay参数会生效,容器退出后会等待6000秒再重启。

方案2:单机环境下用脚本实现延迟重启

如果不想用Swarm,可以写一个简单的shell脚本循环启动容器,在容器退出后添加延迟:

#!/bin/bash
while true; do
    docker run --rm imagexy
    echo "容器退出,等待10分钟后重启..."
    sleep 600
done

给脚本添加执行权限后运行:

chmod +x restart-script.sh
./restart-script.sh

如果需要后台运行,可搭配nohup:

nohup ./restart-script.sh &
补充说明

单机版docker-compose本身不支持自定义重启延迟,restart参数只有no、always、on-failure、unless-stopped这几个选项,没有延迟配置。

内容的提问来源于stack exchange,提问作者jan-seins

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.22 10:47:15