Docker-Compose重启策略

时间:2017-02-14 00:45:57

标签: docker

我查看了docker-compose的文档,我看到版本3有一个部署重启策略,但它只适用于swarm。我尝试在我的服务上设置restart_policy但是出现了这个错误:

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

有没有办法在使用群组外的docker-compose创建的服务上设置重启策略?

3 个答案:

答案 0 :(得分:71)

它看起来像文档中的空白

在第3版中,我们仍然可以使用" restart"内部服务与v.2之前的相同(除了部署到swarm中)

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

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

答案 1 :(得分:68)

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

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

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

撰写格式版本3有一个名为restart_policy的参数,但据我从文档中可以看出,它仅作为deploy的一部分有效,仅在部署到Swarm时使用。var sampleData = [23,45,14,47,24,57,24,35]; function _div(id){ return document.getElementById(id); } function drawBarChart(dataset, idOfContainer){ var chartContainer = _div(idOfContainer) if(typeof(dataset) != "object"){ return; } var heightOfContainer = chartContainer.scrollWidth; var widthOfContainer = chartContainer.scrollHeight; var widthOfBar = parseInt(widthOfContainer / dataset.length) - 2; for(var i = 0; i < dataset.length; i++){ var divElement = document.createElement("div"); divElement.setAttribute("class", "div2"); divElement.style.marginLeft = parseInt(i * 2 + i * widthOfBar) + "px"; divElement.style.height = parseInt(dataset[i]) + "px"; divElement.style.width = parseInt(widthOfBar) + "px"; divElement.style.top = (heightOfContainer - parseInt(dataset[i]) - 1) + "px"; chartContainer.appendChild(divElement); } return false; } drawBarChart(sampleData, "div1"); console.log(); 。因此版本3在您的情况下可能没用。

答案 2 :(得分:3)

即使您处于群体模式,也有一个名为 --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