
В данном примере рассмотрим создание репозитория в 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.