簡體   English   中英

如何構建Docker映像並將其推到帶有CIRCLE 2.0的ECR中?

[英]How can I build a Docker image and push it to ECR with CIRCLE 2.0?

我正在嘗試從CIRCLE 1.0升級到2.0,並且無法構建Docker映像。 我有以下工作:|

... There is another Job here which runs some tests
deploy-aws:
    # machine: true
    docker:
      - image: ecrurl/backend
        aws_auth:
              aws_access_key_id: ID1
              aws_secret_access_key: $ECR_AWS_SECRET_ACCESS_KEY  # or project UI envar reference
        environment:
            TAG: $CIRCLE_BRANCH-$CIRCLE_SHA1
            ECR_URL: ecrurl/backend
            DOCKER_IMAGE: $ECR_URL:$TAG
            STAGING_BUCKET: staging
            TESTING_BUCKET: testing
            PRODUCTION_BUCKET: production
            NPM_TOKEN: $NPM_TOKEN

    working_directory: ~/backend

    steps:
    - run:
        name: Install awscli
        command: sudo apt-get -y -qq install awscli

    - checkout

    - run:
        name: Build Docker image
        command: |
          if [ "${CIRCLE_BRANCH}" == "master" ]; then
            docker pull $ECR_URL:latest
            docker build -t backend NODE_ENV=$NODE_ENV  --build-arg NPM_TOKEN=$NPM_TOKEN .
            docker tag backend $DOCKER_IMAGE
            docker push $DOCKER_IMAGE
            docker tag -f $DOCKER_IMAGE $ECR_URL:latest
            docker push $ECR_URL:latest
          fi

workflows:
  version: 2
  build-deploy:
    jobs:
      - build # This one simply runs test
      - deploy-aws:
          requires:
            - build

運行此命令將引發以下錯誤:

#!/bin/bash -eo pipefail
sudo apt-get -y -qq install awscli
/bin/bash: sudo: command not found
Exited with code 127

我之前要做的就是:

dependencies:
  pre:
    - $(aws ecr get-login --region us-west-2)


deployment:
  staging:
    branch: staging
      - docker pull $ECR_URL:latest
      - docker build -t backend NODE_ENV=$NODE_ENV  --build-arg NPM_TOKEN=$NPM_TOKEN .
      - docker tag backend $DOCKER_IMAGE
      - docker push $DOCKER_IMAGE
      - docker tag -f $DOCKER_IMAGE $ECR_URL:latest
      - docker push $ECR_URL:latest

這是我為了使這項工作而更改的配置:

deploy-aws:
docker:
  - image: docker:17.05.0-ce-git

 steps:
  - checkout
  - setup_remote_docker
  - run:
      name: Install dependencies
      command: |
        apk add --no-cache \
          py-pip=9.0.0-r1
        pip install \
          docker-compose==1.12.0 \
          awscli==1.11.76

  - restore_cache:
      keys:
        - v1-{{ .Branch }}
      paths:
        - /caches/app.tar
  - run:
      name: Load Docker image layer cache
      command: |
        set +o pipefail
        docker load -i /caches/app.tar | true

  - run:
      name: Build Docker image
      command: |
        if [ "${CIRCLE_BRANCH}" == "master" ]; then
          docker build -t backend --build-arg  .
        fi
  - run:
      name: Save Docker image layer cache
      command: |
        mkdir -p /caches
        docker save -o /caches/app.tar app

  - save_cache:
        key: v1-{{ .Branch }}-{{ epoch }}
        paths:
          - /caches/app.tar
  - run:
      name: Tag and push to ECR
      command: |
        if [ "${CIRCLE_BRANCH}" == "master" ]; then
          docker tag backend $DOCKER_IMAGE
          docker push $DOCKER_IMAGE
          docker tag -f $DOCKER_IMAGE $ECR_URL:latest
          docker push $ECR_URL:latest
        fi

查看此鏈接: https : //github.com/builtinnya/circleci-2.0-beta-docker-example/blob/master/.circleci/config.yml#L39

暫無
暫無

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

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