【问题标题】:Docker-Compose Restart PolicyDocker-Compose 重启策略
【发布时间】:2017-02-14 00:45:56
【问题描述】:

我查看了 docker-compose 的文档,发现版本 3 具有部署重启策略,但它仅适用于 swarm。我尝试在我的服务上设置 restart_policy 但收到此错误:

ERROR: The Compose file './docker-compose.yml' is invalid because:
Unsupported config option for services.web: 'restart_policy'

有什么方法可以为在 swarm 之外使用 docker-compose 创建的服务设置重启策略?

【问题讨论】:

  • 您需要版本 3 撰写文件吗?转换到版本 3 的目的是为了支持 swarm。

标签: docker


【解决方案1】:

这看起来像是文档中的一个空白

在第 3 版中,我们仍然可以像以前在 v.2 中一样在服务内部使用“重启”(部署到 swarm 除外)

version: '3'
services:
  my-service:
    restart: on-failure:5 

https://docs.docker.com/compose/compose-file/compose-file-v3/#restart_policy

【讨论】:

  • 我不认为 :5 是 API 的记录部分。我错过了吗?你能澄清一下这样做的意图吗?
  • 似乎他们在文档中fixed that gap。 :5 仍未记录,显然是“最大重试次数”。我是这样使用它的:restart: unless-stopped:5 并得到最大重试次数不能与重启策略“除非停止”一起使用。我放了一个 0 而不是 5,它起作用了
  • 很抱歉这个愚蠢的问题,但我没有明白你所说的“除了部署到群中”的意思。 restart: on-failure:5 会在 swarm 之外工作,即我在 docker-compose up 版本 3 中做什么?
  • 最大重试次数,虽然没有记录,但可以在源代码here中找到。
  • @riverhorse 看来文档中的差距未修复。
【解决方案2】:

版本 2 支持重启策略,使用 restart 关键字,如果您不需要 Swarm(您说您不需要/不想要),它应该可以正常工作。

version: '2'
services:
  web:
    image: apache
    restart: always

https://docs.docker.com/compose/compose-file/compose-file-v2/#restart

Compose 格式版本 3 有一个名为 restart_policy 的参数,但据我所知,它仅作为 deploy 的一部分有效,仅在部署到 Swarm 时使用。所以第 3 版可能对您的情况没有用处。

【讨论】:

  • 问题是关于版本 3,尝试更新答案? docs.docker.com/compose/compose-file/#/restartpolicy
  • 我认为问题中的错误是因为使用了非版本 3 撰写文件
  • @cricket_007 来自文档的 AFAICT,restart_policy 仅在 deploy 内部有效,甚至仅在执行 Swarm 时才使用。由于 OP 询问 使用 Swarm,我觉得我的原始答案应该保持原样。
  • 第 3 版表示推荐用于所有新的撰写文件。 restart 简单改名为 AFAICT
  • @cricket_007 restart_policydeploy 的子选项,而文档中的deploy 表示“这仅在使用docker stack deploy 部署到集群时生效,并且被@ 忽略987654334@ 和 docker-compose run。”
【解决方案3】:

即使您处于 swarm 模式,也有一个名为 --compatibility 的选项适用于 restart_policy,这将即使您没有部署,也尝试重新启动。唯一的问题是,'delay''window' 的子键将被忽略。这是一个例子:

version: '3.7'
services:
  build:
    context: .
    dockerfile: Dockerfile
  container_name: example
  deploy:
    restart_policy:
      condition: on-failure
      max-attempts: 3

运行这个命令:

docker-compose -f docker-compose.yml --compatability up

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-12-12
  • 1970-01-01
  • 2017-10-19
  • 1970-01-01
  • 2018-02-23
  • 2015-01-07
  • 1970-01-01
相关资源
最近更新 更多