DEV Community

kauayrocha
kauayrocha

Posted on

(Gitlab + ECR) Build and Push Docker Image to ECR - AWS

Em tempos de estudo para aprender sobre outras ferramentas de CI\CD, peguei o desafio de realizar a criação de um CI para poder fazer o build e push das minhas imagens Docker para o ECR da AWS com Gitlab. Então depois de muitas consultas ao pai de todas as pesquisas (Google e Documentação), irei documentar e compartilhar neste Post de forma mais simples possivel como você pode utilizar aqueles minutos "free" do gitlab para fazer este processo.

Passos:

AWS - IAM Permissões:

  • 1 - Crie um usuário com policy de acesso ao ECR, pode ser utilizada a policy AmazonEC2ContainerRegistryFullAccess para este teste, depois verifique qual a permissão mais adequada;

  • 2 - Crie o seu repositorio ECR na AWS;

GitLab:

  • 3 - Crie no seu repositorio do gitlab, o arquivo .gitlab-ci.yml e também versione todos os seus arquivos referente a sua imagem Docker (.Dockerfile e etc);

  • 4 - Definindo as variaveis de conexão com a sua account AWS para que o Gitlab possa se comunicar com o ECR.

    Acesse as configurações (settings -> CI\CD) do seu projeto;
    Defina as variaveis e os valores que serão utilizados no pipeline do gitlab.

Variaveis Gitlab + AWS:
As três variveis abaixo (AWS*) são nativas de integração do gitlab com a AWS para permitir realizar a autenticação com a AWS (get-login).
Referencia: https://docs.gitlab.com/ee/ci/cloud_deployment/

AWS_ACCESS_KEY_ID = ID da sua account aws;
AWS_SECRET_ACCESS_KEY = secret da sua account;
AWS_DEFAULT_REGION = region do ECR;

Outras variaveis:
DOCKER_REGISTRY = caminho do seu repositorio;
Exemplo: (seuregistry.dkr.ecr.us-east-1.amazonaws.com);
REPOSITORY = nome do repositorio (/nome_repositorio);

Exemplo:
image

Só copiar e testar ;)

image: 
  #utilizado image aws-cli para permitir realizar o get-login da aws;
  name: amazon/aws-cli
  entrypoint: [""]

services:
  - docker:dind

stages:
  - build
before_script:
## realizando a instalação do docker
  - amazon-linux-extras install docker
  - aws --version
  - docker --version
##login na aws
  - aws ecr get-login-password --region $AWS_DEFAULT_REGION | docker login --username AWS --password-stdin $DOCKER_REGISTRY

Build and Push - ECR:
  stage: build
  script:
    - docker build -t $DOCKER_REGISTRY/$REPOSITORY:latest .
    - docker push $DOCKER_REGISTRY/$REPOSITORY:latest 

Enter fullscreen mode Exit fullscreen mode

Top comments (0)