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

在AWS CodeDeploy中使用Git及Docker-Compose遇权限与容器问题

问题1:CodeDeploy执行脚本时Git拉取权限拒绝

原因

直接登录EC2使用的是ec2-user用户,该用户的SSH密钥已授权访问Git仓库;但CodeDeploy通过codedeploy-agent用户执行脚本,此用户没有对应的SSH密钥权限,导致拉取代码失败。

解决方法

方法1:给codedeploy-agent用户配置SSH密钥

  1. 切换到codedeploy-agent用户:
    sudo su - codedeploy-agent -s /bin/bash
    
  2. 创建并配置.ssh目录权限:
    mkdir -p ~/.ssh
    chmod 700 ~/.ssh
    
  3. 复制ec2-user的SSH密钥到该用户目录:
    cp /home/ec2-user/.ssh/id_rsa ~/.ssh/
    chmod 600 ~/.ssh/id_rsa
    
  4. 退出codedeploy-agent用户:exit

方法2:Git命令中指定密钥路径

修改deploy.sh中的git拉取命令,显式指定ec2-user的密钥:

GIT_SSH_COMMAND="ssh -i /home/ec2-user/.ssh/id_rsa" git pull origin develop

额外检查

确认EC2实例的公钥已添加到Git托管平台(如GitHub、GitLab)的SSH授权列表中。


问题2:docker-compose exec提示容器未运行

原因

docker-compose exec仅能对运行中的容器执行命令,出现报错可能是:

  • app服务对应的容器未启动
  • 脚本执行时未指定正确的docker-compose配置文件路径
  • docker-compose.yml中服务名称拼写错误

解决方法

  1. 先确保容器处于运行状态
    修改deploy.sh,在执行exec命令前先启动容器:

    cd /home/ec2-user/myapp
    docker-compose up -d app  # 后台启动app服务容器
    docker-compose exec app bash -c "php artisan migrate && composer install"
    
  2. 指定完整配置文件路径
    如果脚本执行的工作目录不确定,显式指定docker-compose.yml路径:

    docker-compose -f /home/ec2-user/myapp/docker-compose.yml up -d app
    docker-compose -f /home/ec2-user/myapp/docker-compose.yml exec app bash -c "php artisan migrate && composer install"
    
  3. 检查服务名称正确性
    打开/home/ec2-user/myapp/docker-compose.yml,确认服务块的service名称确实是app,没有拼写错误。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 05:00:08