As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Crie e envie imagens do Docker para o Amazon ECR usando GitHub Actions e Terraform
Ruchika Modi, Amazon Web Services
Resumo
Esse padrão explica como você pode criar GitHub fluxos de trabalho reutilizáveis para criar seu Dockerfile e enviar a imagem resultante para o Amazon Elastic Container Registry (Amazon ECR). O padrão automatiza o processo de criação de seus Dockerfiles usando o Terraform e o Actions. GitHub Isso minimiza a possibilidade de erros humanos e reduz consideravelmente o tempo de implantação.
Uma ação GitHub push para a ramificação principal do seu GitHub repositório inicia a implantação dos recursos. O fluxo de trabalho cria um repositório Amazon ECR exclusivo com base na combinação da GitHub organização e do nome do repositório. Em seguida, o fluxo envia a imagem do Dockerfile para o repositório do Amazon ECR.
Pré-requisitos e limitações
Pré-requisitos
Uma conta AWS ativa
Uma GitHub conta ativa.
O Terraform, na versão 1 ou em versões posteriores, instalado e configurado
. Um bucket do Amazon Simple Storage Service (Amazon S3) para o backend do Terraform
. Uma tabela do Amazon DynamoDB
para controle de bloqueio e consistência do estado do Terraform. A tabela deve ter uma chave de partição chamada LockID, do tipoString. Se isso não for configurado, o bloqueio de estado será desabilitado.Um perfil do AWS Identity and Access Management (IAM) com permissões para configurar o backend do Amazon S3 para o Terraform. Para obter instruções de configuração, consulte a documentação do Terraform
.
Limitações
Esse código reutilizável foi testado somente com GitHub Actions.
Arquitetura
Pilha de tecnologias de destino
Repositório do Amazon ECR
GitHub Ações
Terraform
Arquitetura de destino

O diagrama ilustra o seguinte:
1. Um usuário adiciona modelos do Dockerfile e do Terraform ao repositório. GitHub
2. Essas adições iniciam um fluxo de trabalho de GitHub ações.
3. O fluxo de trabalho verifica a existência de um repositório do Amazon ECR. Caso contrário, ele cria o repositório com base na GitHub organização e no nome do repositório.
4. O fluxo de trabalho cria o Dockerfile e envia a imagem para o repositório do Amazon ECR.
Ferramentas
Serviço da Amazon
O Amazon Elastic Container Registry (Amazon ECR) é um serviço gerenciado de registro de contêiner, que é seguro, escalável e confiável.
Outras ferramentas
GitHub O Actions
é integrado à GitHub plataforma para ajudar você a criar, compartilhar e executar fluxos de trabalho em seus GitHub repositórios. Você pode usar o GitHub Actions para automatizar tarefas como criar, testar e implantar seu código. O Terraform
é uma ferramenta de infraestrutura como código (IaC) HashiCorp que ajuda você a criar e gerenciar a infraestrutura na nuvem e no local.
Repositório de código
O código desse padrão está disponível no repositório GitHub Docker ECR Actions Workflow
Quando você cria GitHub ações, os arquivos do fluxo de trabalho do Docker são salvos na
/.github/workflows/pasta desse repositório. O fluxo de trabalho desta solução encontra-se no arquivo workflow.yaml. A pasta
e2e-testdisponibiliza um Dockerfile de amostra para referência e testes.
Práticas recomendadas
Para obter as práticas recomendadas para a escrita de Dockerfiles, consulte a documentação do Docker
. Use um endpoint da VPC para o Amazon ECR. Os VPC endpoints são desenvolvidos pela AWS PrivateLink, uma tecnologia que permite que você acesse o Amazon APIs ECR de forma privada por meio de endereços IP privados. Para as tarefas do Amazon ECS que usam o tipo de execução do Fargate, o endpoint da VPC permite que a tarefa realize a extração de imagens privadas do Amazon ECR sem atribuir um endereço IP público à tarefa.
Épicos
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Configure o OpenID Connect. | Crie um provedor de OpenID Connect (OIDC) Você usará o provedor na política de confiança para o perfil do IAM usado nesta ação. Para obter instruções, consulte Configuração do OpenID Connect na Amazon | Administrador da AWS, AWS DevOps, AWS geral |
Clone o GitHub repositório. | Clone o repositório GitHub Docker ECR Actions Workflow
| DevOps engenheiro |
| Tarefa | Description | Habilidades necessárias |
|---|---|---|
Personalize o evento que inicia o fluxo de trabalho do Docker. | O fluxo de trabalho desta solução encontra-se em workflow.yaml | DevOps engenheiro |
Personalize o fluxo de trabalho. | O arquivo workflow.yaml
| DevOps engenheiro |
Implante os modelos do Terraform. | O fluxo de trabalho implanta automaticamente os modelos do Terraform que criam o repositório Amazon ECR, com base no evento que você configurou. GitHub Estes modelos estão disponíveis como arquivos | AWS DevOps, DevOps engenheiro |
Solução de problemas
| Problema | Solução |
|---|---|
Problemas ou erros ao configurar o Amazon S3 e o DynamoDB como o backend remoto do Terraform. | Siga as instruções apresentadas na documentação do Terraform |
Não é possível executar ou iniciar o fluxo de trabalho com o evento | O fluxo de trabalho que está configurado para realizar a implantação usando o evento |