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

AWS CodeDeploy部署EC2时Bash脚本执行失败求助

AWS CodeDeploy部署脚本执行失败问题排查与解决

问题背景

尝试通过AWS CodeDeploy将GitHub上的API服务部署至EC2实例,代码已成功同步到目标目录/home/ec2-user/Gritly-backend-v2,但build.sh脚本执行失败。

相关配置文件

appspec.yml

version: 0.0
os: linux
files:
  - source: /
    destination: /home/ec2-user/Gritly-backend-v2
hooks:
  AfterInstall:
    - location: build.sh
      timeout: 400
      runas: root

build.sh

#!/bin/bash
cd /home/ec2-user/Gritly-backend-v2
docker build . -t gritly_backend -f Dockerfile.dev
docker stop gritly_backend
docker rm gritly_backend
docker run -d -p 80:80 --name gritly_backend gritly_backend
OUTPUT=$(docker images --filter "dangling=true" -q --no-trunc | wc -l)
if [ ${OUTPUT} != 0 ];
then    
    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
fi

错误信息

CodeDeploy执行报错

LifecycleEvent - AfterInstall
Script - build.sh
[stderr]bash: /opt/codedeploy-agent/deployment-root/4ceeb37e-1874-4290-9e55-a92d655d1558/d-G03KT19HJ/deployment-archive/build.sh: /bin/bash^M: bad interpreter: No such file or directory

手动执行sh build.sh报错

: No such file or directory/ec2-user/Gritly-backend-v2
: no such file or directoryunable to evaluate symlinks in Dockerfile path: lstat /home/ec2-user/Gritly-backend-v2/Dockerfile.dev
Error response from daemon: No such container: gritly_backend
Error: No such container: gritly_backend
docker: invalid reference format.
See 'docker run --help'.
build.sh: line 8: $'\r': command not found

问题分析与解决

核心原因

脚本采用了Windows风格的CRLF换行符(错误信息中的^M或$'\r'),Linux系统仅支持LF换行符,导致脚本解析失败。

修复步骤

  1. 转换本地脚本换行符

    • 如果脚本在Windows环境编写,使用文本编辑器将换行符改为LF:
      • VS Code:点击右下角CRLF选项,切换为LF后保存。
      • Notepad++:依次点击「编辑」→「文档格式转换」→「转为UNIX格式」。
    • 提交修改后的脚本到GitHub,重新触发部署。
  2. 修复EC2实例上已存在的脚本
    登录EC2实例,执行命令转换换行符并添加执行权限:

    sed -i 's/\r$//' /home/ec2-user/Gritly-backend-v2/build.sh
    chmod +x /home/ec2-user/Gritly-backend-v2/build.sh
    
  3. 优化脚本容错性
    修改build.sh中容器操作部分,避免容器不存在时脚本中断:

    docker stop gritly_backend || true
    docker rm gritly_backend || true
    

内容的提问来源于stack exchange,提问作者Mohamed Anser Ali

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.18 17:10:17