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

使用Github Actions部署至EC2后,Docker容器代码未更新问题

问题排查与解决

核心问题分析

虽然Github Actions执行成功、Docker镜像/容器已创建,但应用返回旧代码结果,大概率是部署流程未拉取最新代码,或Docker构建时使用了旧文件。结合配置和Dockerfile异常提示,具体修复方案如下:

1. 修复Git拉取逻辑的问题

当前部署脚本每次执行git clone,若EC2服务器上已存在actions文件夹,这一步会直接失败,后续Docker构建/启动步骤不会执行,导致依然运行旧容器。

修改部署脚本,替换git clone为拉取最新代码的逻辑:

# 替换原SSH and Deploy步骤里的git相关命令
ssh -o StrictHostKeyChecking=no -i ~/.ssh/id_rsa ubuntu@"${{secrets.EC2_PUBLIC_DNS}}" << EOF
  # 文件夹不存在则克隆,否则拉取最新代码
  if [ ! -d "actions" ]; then
    git clone https://${{ secrets.REPO_CLONE_ACCESS_TOKEN }}@github.com/mahesh-jackett/actions.git
  else
    cd actions && git pull origin main
  fi
  cd actions
  docker stop fastapi_container || true
  docker rm fastapi_container || true
  docker build -t fastapi_image .
  docker run -d --name fastapi_container -p 8000:8000 fastapi_image
EOF
  • 增加|| true是为了避免容器不存在时stop/rm命令报错中断流程。

2. 修复Dockerfile异常问题

你提供的Dockerfile仅5行,但截图显示第77行存在异常,说明EC2服务器上actions文件夹内的Dockerfile不是最新版本(可能是旧文件残留)。

解决方法:

  • 执行上述修改后的脚本,通过git pull拉取最新的Dockerfile;
  • 若拉取后仍有问题,手动登录EC2服务器,进入actions目录,查看Dockerfile内容,删除多余的无效行(第77行相关错误内容),确保Dockerfile与你提供的一致。

3. 验证部署有效性

部署完成后,登录EC2服务器执行以下命令确认:

  • 进入actions目录,查看main.py内容:cat main.py,确认是否为最新的{"Hello": "Show This"};
  • 查看Docker构建日志:docker build -t fastapi_image .,检查是否有报错;
  • 查看容器运行日志:docker logs fastapi_container,确认应用是否正常启动且加载了最新代码。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 20:43:10