「Docker Compose」- 开机自动启动应用容器 @20210130
问题描述
当我们使用 Docker Compose 启动应用程序之后,如果主机发生重启,应用容器无法自动启动。
我们可以使用 Docker Compose 的重启策略,但是也存在一些问题。
该笔记将记录:1)自动启动服务的解决方案、2)及其常见问题和解决方法
方法一、通过 Docker Restart Policy 方法
在 Docker 中,支持 --restart 选项,来控制容器自动启动。在 Docker Compose 中,应该使用 restart 属性:
version: "3.6" services: frontend: image: frontend:v1.0.0 depends_on: - backend restart: always backend: image: backend:v1.0.0 restart: always
注意事项:
1)Docker 并不知道这些服务的依赖关系及启动顺序,需要我们精心编排 docker-compose.yaml 文件;
2)Docker Compose 不支持 deploy:restart_policy 属性,该属性只能用于 a swarm with docker stack deploy 环境;
方法二、通过进程管理服务(推荐)
该方法本质上还是在执行 docker-compose 命令。
使用 systemd 管理
如下示例,可以根据需要进行设置:
# cat /etc/systemd/system/docker-compose-app.service [Unit] Description=Docker Compose Application Service Requires=docker.service After=docker.service [Service] Type=oneshot RemainAfterExit=yes WorkingDirectory=/srv/docker/app/ ExecStart=/usr/local/bin/docker-compose up -d ExecStop=/usr/local/bin/docker-compose down TimeoutStartSec=0 [Install] WantedBy=multi-user.target
参考文献
WikiNotes/开机自动启动应用容器
Start containers automatically | Docker Documentation
How to run docker-compose up -d at system start up? - Stack Overflow
Compose file version 3 reference | Docker Documentation
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架