簡體   English   中英

docker-compose 推送到 ECR 在代碼構建中失敗

[英]docker-compose push to ECR fails in codebuild

幾天來我一直試圖解決這個問題,但由於我沒有收到有用的錯誤消息,問題變得更加復雜。

我在 codebuild 中使用以下 buildspec.yml 文件來構建 docker 容器,然后發送到 AWS ECR。

version: 0.2
env:
  parameter-store:
    AWS_DEFAULT_REGION: "/docker_test/region"
    IMAGE_REPO_NAME: "/docker_test/repo_name"
    IMAGE_TAG: "/docker_test/img_tag"
    AWS_ACCOUNT_ID: "account_id"

phases:
  install:
    runtime-versions:
      docker: 18
  pre_build:
    commands:
      - echo Logging in to Amazon ECR and DockerHub...
      - docker login -u AWS -p $(aws ecr get-login-password --region $AWS_DEFAULT_REGION) $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...
      - docker-compose -f docker-compose.yml -f docker-compose.prod.yml build
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker-compose -f docker-compose.yml -f docker-compose.prod.yml push
artifacts:
  files:
    - 'Dockerrun.aws.json'

我試過 docker 19, docker login行的版本略有不同,並確保我的角色已設置。 我得到“登錄成功”,所以我認為登錄行很好。

[Container] 2021/12/22 16:19:20 Running command docker login -u AWS -p $(aws ecr get-login-password --region $AWS_DEFAULT_REGION) $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com
WARNING! Using --password via the CLI is insecure. Use --password-stdin.
WARNING! Your password will be stored unencrypted in /root/.docker/config.json.
Configure a credential helper to remove this warning. See
https://docs.docker.com/engine/reference/commandline/login/#credentials-store

Login Succeeded

[Container] 2021/12/22 16:19:26 Phase complete: PRE_BUILD State: SUCCEEDED
[Container] 2021/12/22 16:19:26 Phase context status code:  Message: 
[Container] 2021/12/22 16:19:26 Entering phase BUILD

但是, post_build階段失敗,原因如下:

Successfully built d6878cbb68ba
Successfully tagged ***.dkr.ecr.***.amazonaws.com/***:latest

[Container] 2021/12/22 16:21:58 Phase complete: BUILD State: SUCCEEDED
[Container] 2021/12/22 16:21:58 Phase context status code:  Message: 
[Container] 2021/12/22 16:21:58 Entering phase POST_BUILD
[Container] 2021/12/22 16:21:58 Running command echo Build completed on `date`
Build completed on Wed Dec 22 16:21:58 UTC 2021

[Container] 2021/12/22 16:21:58 Running command echo Pushing the Docker image...
Pushing the Docker image...

[Container] 2021/12/22 16:21:58 Running command docker-compose -f docker-compose.yml -f docker-compose.prod.yml push
Pushing myapp (***.dkr.ecr.***.amazonaws.com/***:latest)...
The push refers to repository [***.dkr.ecr.***.amazonaws.com/***]
EOF

[Container] 2021/12/22 16:22:49 Command did not exit successfully docker-compose -f docker-compose.yml -f docker-compose.prod.yml push exit status 1
[Container] 2021/12/22 16:22:49 Phase complete: POST_BUILD State: FAILED
[Container] 2021/12/22 16:22:49 Phase context status code: COMMAND_EXECUTION_ERROR Message: Error while executing command: docker-compose -f docker-compose.yml -f docker-compose.prod.yml push. Reason: exit status 1
[Container] 2021/12/22 16:22:49 Phase complete: UPLOAD_ARTIFACTS State: SUCCEEDED
[Container] 2021/12/22 16:22:49 Phase context status code:  Message: 

我只是不確定如何獲得有關此錯誤的更多信息 - 這將是理想的。

編輯:

我正在添加docker-compose.prod.yml文件以獲取更多上下文:

version: "3.2"

services:
  myapp:
    image: ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_TAG}
    command: bash -c "
        python manage.py migrate
        && gunicorn --bind :8000 --workers 3 --threads 2 --timeout 240  project.wsgi:application"

    restart: always
    ports:
      - "80:80"

  celery_worker:
    image: ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_TAG}
    command: celery -A project worker --loglevel=${CELERY_LOG_LEVEL:-WARNING}
    restart: always

好的,所以我想通了。 您關於確保回購存在的問題為我指明了正確的方向@mreferre。 我對在嘗試構建它時引用的代碼示例中使用IMAGE_TAGIMAGE_REPO_NAME感到困惑。 它們本質上應該是相同的,所以推送失敗了,因為我試圖推送到一個名為“proj-name”的 ECR 存儲庫,但它並不存在。 我只需要將其更改為“repo-name”,因此docker-compose.prod.yml中的圖像變為:

image: ${AWS_ACCOUNT_ID}.dkr.ecr.${AWS_DEFAULT_REGION}.amazonaws.com/${IMAGE_REPO_NAME}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM