AWS CodeBuild - 无法在构建期间找到DockerFile

时间:2017-03-21 11:10:27

标签: amazon-web-services aws-codebuild

开始使用AWS CodeBuild。

目标是将docker图像作为最终结果,并在其中运行nodejs,hapi和sample app。

目前我有一个问题: "无法准备上下文:无法评估Dockerfile路径中的符号链接:lstat / tmp / src049302811 / src / Dockerfile:没有这样的文件或目录" 出现在BUILD阶段。

项目详情:

  1. 用作源的S3存储桶
  2. 存储在相应S3存储桶中的ZIP文件包含buildspec.yml,package.json,sample * .js文件和DockerFile。
  3. aws / codebuild / docker:1.12.1用作构建环境。
  4. 当我使用笔记本电脑上安装的Docker构建图像时,没有任何问题,因此我无法理解我需要指定哪个目录来摆脱此错误消息。

    下面附有Buildspec和DockerFile。

    感谢您提出任何意见。

    buildspec.yml
    
    version: 0.1
    
    phases:
      pre_build:
        commands:
          - echo Logging in to Amazon ECR...
          - $(aws ecr get-login --region eu-west-1)
      build:
        commands:
          - echo Build started on `date`
          - echo Building the Docker image...          
          - docker build -t <CONTAINER_NAME> .
          - docker tag <CONTAINER_NAME>:latest <ID>.dkr.ecr.eu-west-1.amazonaws.com/<CONTAINER_NAME>:latest
      post_build:
        commands:
          - echo Build completed on `date`
          - echo Pushing the Docker image...
          - docker push <id>.eu-west-1.amazonaws.com/<image>:latest
    
    DockerFile
    
    FROM alpine:latest
    
    RUN apk update && apk upgrade
    RUN apk add nodejs
    RUN rm -rf /var/cache/apk/*
    
    COPY . /src
    RUN cd /src; npm install hapi
    EXPOSE 80
    CMD ["node", "/src/server.js"]
    

2 个答案:

答案 0 :(得分:2)

好的,所以解决方案很简单。 问题与Dockerfile名称有关。 它不接受DockerFile(使用大写F,奇怪的是它在本地工作)但是Dockerfile(小写的f)工作得很好。

答案 1 :(得分:0)

您是否可以验证目录根目录中是否存在Dockerfile?一种方法是在构建规范中运行override def open(split: GenericInputSplit): Unit = { super.open(split) i = 0 } 作为ls -altr阶段的一部分(甚至在ecr登录之前)。