You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在CloudWatch告警触发EC2重启后执行Docker-Compose等命令

解决AWS EC2重启后自动执行Docker Compose命令的方案

以下是几种可靠的实现方式,适用于CloudWatch告警触发实例重启后的场景:

方法一:使用Systemd服务(推荐)

这是当前主流Linux发行版(如Amazon Linux 2、Ubuntu 20.04+、CentOS 8+)的标准方案,稳定性最高。

  1. 创建启动脚本
    创建一个包含所需命令的脚本文件,比如/opt/start-docker-containers.sh:

    #!/bin/bash
    # 重定向日志到文件,方便排查问题
    exec > /var/log/start-docker-containers.log 2>&1
    
    # 切换到docker-compose.yml所在的绝对路径
    cd /home/ec2-user/my-docker-project
    # 启动容器(使用docker-compose的绝对路径,避免环境变量问题)
    /usr/local/bin/docker-compose up -d
    

    给脚本添加执行权限:

    chmod +x /opt/start-docker-containers.sh
    
  2. 创建Systemd服务配置文件
    在/etc/systemd/system/目录下创建服务文件start-docker-containers.service:

    [Unit]
    Description=Auto-start Docker Compose containers on system boot
    Requires=docker.service
    After=docker.service network.target
    
    [Service]
    Type=oneshot
    ExecStart=/opt/start-docker-containers.sh
    RemainAfterExit=yes
    
    [Install]
    WantedBy=multi-user.target
    
    • Requires=docker.service:确保Docker服务启动后再执行本脚本
    • After=docker.service network.target:等待Docker和网络服务就绪后运行
  3. 启用并激活服务

    # 重新加载systemd配置
    systemctl daemon-reload
    # 设置开机自启
    systemctl enable start-docker-containers.service
    # 立即测试执行
    systemctl start start-docker-containers.service
    

方法二:使用rc.local(适用于旧版Linux系统)

如果你的EC2实例使用的是传统init系统(如CentOS 7、Ubuntu 16.04),可以用rc.local实现:

  1. 确保rc.local可执行

    chmod +x /etc/rc.local
    
  2. 添加启动命令
    编辑/etc/rc.local,在exit 0之前添加以下内容(注意使用绝对路径):

    # 后台启动Docker Compose容器
    cd /home/ec2-user/my-docker-project && /usr/local/bin/docker-compose up -d &
    

关键注意事项

  • 确保Docker服务本身已设置开机自启:systemctl enable docker.service,否则脚本执行时Docker未就绪会失败
  • 所有路径尽量使用绝对路径,避免系统启动时环境变量缺失导致命令找不到
  • 可以通过查看日志文件(如/var/log/start-docker-containers.log)排查启动失败的问题

内容的提问来源于stack exchange,提问作者Kevin G

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 07:39:24