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

使用AWS CodeDeploy部署Python Docker应用时遇Dockerfile缺失错误

解决方案

核心问题

CodeDeploy执行钩子脚本时,默认工作目录是/opt/codedeploy-agent/deployment-root/[部署组ID]/[部署ID]/deployment-archive,而非你指定的应用目标目录。你的docker build .命令在这个默认目录执行,但Dockerfile并未同步到此处,导致找不到文件。

具体修复步骤

  1. 修正appspec.yml的文件同步规则
    避免用source: /同步整个根目录,改为明确同步所需文件到目标目录,防止不必要的文件覆盖:

    version: 0.0
    os: linux
    files:
      - source: ./Dockerfile
        destination: /home/ec2-user/Deployment/
      - source: ./requirements.txt
        destination: /home/ec2-user/Deployment/
      - source: ./api.py
        destination: /home/ec2-user/Deployment/
      - source: ./scripts/
        destination: /home/ec2-user/Deployment/scripts/
    file_exists_behavior: OVERWRITE
    hooks:
      ApplicationStop:
        - location: scripts/kill_container.sh
          timeout: 300
          runas: ec2-user
      BeforeInstall:
        - location: scripts/install_dependencies.sh
          timeout: 300
          runas: ec2-user
      ApplicationStart:
        - location: scripts/start_container.sh
          timeout: 300
          runas: ec2-user
    
  2. 修改start_container.sh,切换到应用目录执行构建
    在执行docker build前,显式切换到你的应用部署目录,确保Dockerfile能被找到:

    #!/usr/bin/env bash
    echo "Starting container==="
    set -e
    # 切换到应用部署目录
    cd /home/ec2-user/Deployment
    echo $PWD
    pwd
    ls
    # 构建镜像并后台运行容器
    docker build -t python-api-docker .
    docker run -d -p 5000:5000 python-api-docker
    

    注意:添加-d参数让容器后台运行,否则CodeDeploy会因进程阻塞无法标记部署成功。

  3. 验证文件同步结果
    在install_dependencies.sh中添加查看目标目录的命令,确认Dockerfile等文件是否被正确同步:

    #!/usr/bin/env bash
    set -e
    echo "====================================================="
    echo $PWD
    pwd
    ls
    # 检查目标目录的文件
    ls /home/ec2-user/Deployment/
    

额外注意事项

  • 确保EC2实例上的ec2-user对/home/ec2-user/Deployment目录有读写权限。
  • 确认codedeploy-agent服务运行正常,可通过sudo service codedeploy-agent status检查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:18:17