docker-compose 在失败时重新启动

时间:2021-03-22 05:23:13

标签: docker docker-compose

我想在容器停止运行时自动重启容器(而不是运行图像)。

我看到的所有示例都提到了 docker run,但我只想重新启动之前创建的容器。

我尝试将以下内容添加到 yml 文件中的服务定义中,但它没有做任何事情:

restart: always

2 个答案:

答案 0 :(得分:1)

你能试试这个吗docker_restart_policy


version: "3.9"
services:
  redis:
    image: redis:alpine
    deploy:
      restart_policy:
        condition: on-failure
        delay: 5s
        max_attempts: 3
        window: 120s

答案 1 :(得分:1)

容器属性是不可变的,一旦容器被创建,你就不能改变它们中的任何一个。在 docker-compose.yml 中更改服务定义后,您必须重新创建容器 (docker-compose up) 才能进行更改。使用 restart: always 容器在任何情况下都将在未运行时重新启动。这不仅是在失败之后,在重启之后也是如此。

如果您想重新启动现有容器而不重新创建,您可以使用 cron 脚本:

* * * * * docker ps | grep -q container_name || docker start container_name

每分钟检查一次容器是否已启动,如果未启动,则重新启动它。

UPD:powershell 代码段:

if ( docker ps | Select-String -quiet container_name ) {} else { docker start container_name }