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

Docker Swarm问题:Entrypoint执行成功后服务仍重复启动

Docker Swarm中一次性任务服务自动重启的解决办法

在Docker Swarm模式下,restart是容器级配置,Swarm集群不会用它来管理服务的重启行为,真正控制服务重启逻辑的是deploy.restart_policy配置项——这就是你加了restart: "no"但服务仍自动重启的核心原因。

要让client服务执行完编译任务后不再重启,需要修改docker-compose.yml中client服务的deploy配置,添加restart_policy并设置condition: none:

修改后的client服务完整配置:

client:
  image: my-client-image:latest
  deploy:
    mode: replicated
    replicas: 1
    placement:
      constraints:
        - node.role == manager
    restart_policy:
      condition: none  # 核心配置:任务完成后无论成败都不重启
      delay: 0s
      max_attempts: 0
  volumes:
    - /www:/app/www
  entrypoint: /entrypoint.sh

关键说明:

  • 可以直接删除原来的restart: "no",因为Swarm模式下该配置不会生效
  • restart_policy.condition: none是专门针对一次性任务的配置,能确保服务执行完指定命令后直接终止,不会被Swarm重新调度启动
  • 如果需要服务仅在执行失败时有限次数重启,可调整参数为:
    restart_policy:
      condition: on-failure
      max_attempts: 3
      delay: 5s
    

内容的提问来源于stack exchange,提问作者PTomasz

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 19:02:11