当它们自动崩溃时重新启动Docker容器

我想重新启动一个容器,如果它自动崩溃。 我不知道如何去做这件事。 我有一个脚本docker-compose-deps.yml,它具有elasticsearch,redis,nats和mongo。 我在terminal运行这个设置: docker-compose -f docker-compose-deps.yml up -d 。 在此之后,我通过运行docker-compose up -d设置我的容器。 有没有办法让这些容器重新启动,如果他们崩溃? 我注意到docker有一个内置的重新启动,但我不知道如何实现这一点。

经过一些反馈,我添加了restart: always到我的docker-compose文件和我的docker-compose-deps.yml文件。 这看起来正确吗? 或者,你是如何实现重启始终?

docker – 撰写样本

 myproject-server: build: "../myproject-server" dockerfile: Dockerfile-dev restart: always ports: - 5880:5880 - 6971:6971 volumes: - "../myproject-server/src:/src" working_dir: "/src" external_links: - nats - mongo - elasticsearch - redis myproject-associate: build: "../myproject-associate" dockerfile: Dockerfile-dev restart: always ports: - 5870:5870 volumes: - "../myproject-associate/src:/src" working_dir: "/src" external_links: - nats - mongo - elasticsearch - redis 

docker-compose-deps.yml示例

 nats: image: nats container_name: nats restart: always ports: - 4222:4222 mongo: image: mongo container_name: mongo restart: always volumes: - "./data:/data" ports: - 27017:27017 

如果你使用的是compose,它有一个类似docker run命令中的重启标志,所以你可以使用它。 这里是关于这个部分的文档的链接 – https://docs.docker.com/compose/compose-file/

部署时,取决于部署到的位置。 大多数容器集群(如kubernetes,mesos或ECS)都可以使用一些configuration来自动重启容器。 如果您不使用这些工具中的任何一种,则可能是手动启动容器,然后可以像在本地一样使用重新启动标志。