AWS — CodeCommit и CodeBuild собираем Docker образ и пушаем его в ECR

В данном примере рассмотрим создание репозитория в CodeCommit и сборку простого Docker образа при помощи CodeBuild и запушаем его в ECR.

Создадим в CodeCommit репозиторий. Имя моего репозитория - "artem-test"

Для того, чтобы работать с репозиторием убедитесь, что у вашего пользователя загружен SSH ключ. Если уже загружен, посмотрите его ID, он будет нужен.

 

Клонируем себе репозиторий:

git clone ssh://[email protected]/v1/repos/artem-test

 

Не забудьте поменять регион, в котором создан репозиторий.

 

Добавим в него для теста пример простого Dockerfile

Dockerfile:

FROM php:7.1-apache-jessie

RUN apt update && \
    apt install curl net-tools && \
    apt-get clean

CMD ["apache2-foreground"]

 

Для сборки будем использовать: buildspec.yml

buildspec.yml:

version: 0.2

env:
  variables:
    AWS_ACCOUNT_ID: "XXXXXXXXXXXX"
    AWS_DEFAULT_REGION: "us-east-1"
    IMAGE_REPO_NAME: "artem-test"
    IMAGE_TAG: "latest"

phases:
  install:
    runtime-versions:
      docker: 18
  pre_build:
    commands:
      - echo Logging in to Amazon ECR...
      - $(aws ecr get-login --no-include-email --region $AWS_DEFAULT_REGION)
  build:
    commands:
      - echo Build started on `date`
      - echo Building the Docker image...          
      - docker build -t $IMAGE_REPO_NAME:$IMAGE_TAG .
      - docker tag $IMAGE_REPO_NAME:$IMAGE_TAG $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG 
  post_build:
    commands:
      - echo Build completed on `date`
      - echo Pushing the Docker image...
      - docker push $AWS_ACCOUNT_ID.dkr.ecr.$AWS_DEFAULT_REGION.amazonaws.com/$IMAGE_REPO_NAME:$IMAGE_TAG

 

Отправим локальные изменения на сервер:

git add .
git commit -am "git init"
git push

 

Создаем проект в CodeBuild, указав в качестве источника репозиторий в CodeCommit.

Дадим для CodeBuild права в ECR

Открываем IAM -> CodeBuild

Ищем "codebuild-artem-test-service-role"

И добавляем этой роли следующую Policy:

AmazonEC2ContainerRegistryPowerUser

 

Для вывода логов сборки переходим в сервис "CloudWatch" и создаем группу. Так же можно создать S3 Bucket для хранения архивов логов.

Можно пробовать собирать образ в CodeBuild.

0 0 vote
Article Rating

Метки: Метки

Подписаться
Уведомление о
guest
0 Комментарий
Inline Feedbacks
View all comments