(Herdado) Migrar da ramificação da plataforma Docker de vários contêineres em execução no Amazon Linux para a ramificação da plataforma Docker em execução no Amazon Linux 2 - AWS Elastic Beanstalk

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á.

(Herdado) Migrar da ramificação da plataforma Docker de vários contêineres em execução no Amazon Linux para a ramificação da plataforma Docker em execução no Amazon Linux 2

Antes do lançamento da ramificação da plataforma ECS em execução no Amazon Linux 2 de 64 bits, o Elastic Beanstalk oferecia um caminho alternativo de migração para o Amazon Linux 2 para clientes com ambientes baseados no Docker de vários contêineres em execução no Amazon Linux de 64 bits. Este tópico descreve esse caminho de migração e foi mantido neste documento como referência para todos os clientes que concluíram esse caminho de migração.

Agora recomendamos que os clientes com ambientes baseados na ramificação da plataforma Docker de vários contêineres em execução no Amazon Linux de 64 bits migrem para a ramificação da plataforma ECS em execução no Amazon Linux 2 de 64 bits. Ao contrário do caminho alternativo de migração, essa abordagem continua a usar o Amazon ECS para coordenar implantações de contêineres em ambientes do Docker gerenciado pelo ECS. Esse aspecto permite uma abordagem mais direta. Não é necessária nenhuma alteração no código-fonte e o mesmo arquivo Dockerrun.aws.json v2 é compatível. Para obter mais informações, consulte . Migrar o Docker de vários contêineres em execução no Amazon Linux para o ECS no Amazon Linux 2023.

É possível migrar as aplicações em execução na plataforma Docker de vários contêineres na AMI do Amazon Linux para a plataforma do Amazon Linux 2 Docker. A plataforma Docker de vários contêineres na AMI do Amazon Linux requer que você especifique imagens de aplicação pré-criadas para serem executadas como contêineres. Após a migração, você não terá mais essa limitação, pois a plataforma Docker do Amazon Linux 2 também permite ao Elastic Beanstalk criar imagens de contêiner durante a implantação. As aplicações continuarão sendo executadas em ambientes de vários contêineres com os benefícios adicionais da ferramenta Docker Compose.

O Docker Compose é uma ferramenta para definição e execução de aplicações do Docker de vários contêineres. Para saber mais sobre o Docker Compose e como instalá-lo, consulte Visão geral do Docker Compose e Instalar o Docker Compose no site do Docker.

O arquivo docker-compose.yml

A ferramenta Docker Compose usa o arquivo docker-compose.yml para configuração dos serviços de aplicações. Esse arquivo substitui o arquivo Dockerrun.aws.json v2 no diretório de projetos de aplicações e no pacote de origem da aplicação. O arquivo docker-compose.yml é criado manualmente. Consulte o arquivo Dockerrun.aws.json v2 para a maioria dos valores de parâmetro.

Veja abaixo um arquivo demonstrativo docker-compose.yml e o arquivo Dockerrun.aws.json v2 correspondente para a mesma aplicação. Para obter mais informações sobre o arquivo docker-compose.yml, consulte Referência de arquivo do Compose. Para obter mais informações sobre o arquivo Dockerrun.aws.json v2, consulte Dockerrun.aws.json v2.

docker-compose.yml Dockerrun.aws.json v2
version: '2.4' services: php-app: image: "php:fpm" volumes: - "./php-app:/var/www/html:ro" - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app" mem_limit: 128m environment: Container: PHP nginx-proxy: image: "nginx" ports: - "80:80" volumes: - "./php-app:/var/www/html:ro" - "./proxy/conf.d:/etc/nginx/conf.d:ro" - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx" mem_limit: 128m links: - php-app
{ "AWSEBDockerrunVersion": 2, "volumes": [ { "name": "php-app", "host": { "sourcePath": "/var/app/current/php-app" } }, { "name": "nginx-proxy-conf", "host": { "sourcePath": "/var/app/current/proxy/conf.d" } } ], "containerDefinitions": [ { "name": "php-app", "image": "php:fpm", "environment": [ { "name": "Container", "value": "PHP" } ], "essential": true, "memory": 128, "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true } ] }, { "name": "nginx-proxy", "image": "nginx", "essential": true, "memory": 128, "portMappings": [ { "hostPort": 80, "containerPort": 80 } ], "links": [ "php-app" ], "mountPoints": [ { "sourceVolume": "php-app", "containerPath": "/var/www/html", "readOnly": true }, { "sourceVolume": "nginx-proxy-conf", "containerPath": "/etc/nginx/conf.d", "readOnly": true }, { "sourceVolume": "awseb-logs-nginx-proxy", "containerPath": "/var/log/nginx" } ] } ] }

Considerações adicionais sobre migração

A plataforma Docker Amazon Linux 2 e a plataforma Multi-container Docker Amazon Linux AMI implementam as propriedades do ambiente de forma diferente. Essas duas plataformas também têm diretórios de log diferentes que o Elastic Beanstalk cria para cada um de seus contêineres. Depois de migrar da plataforma do Amazon Linux AMI Multi-Container Docker, você precisará estar ciente dessas diferentes implementações para seu novo ambiente de plataforma do Amazon Linux 2 Docker.

Área Plataforma Docker no Amazon Linux 2 com Docker Compose Plataforma Docker de vários contêineres na AMI do Amazon Linux

Propriedades de ambiente

Para que seus contêineres acessem as propriedades do ambiente, é necessário adicionar uma referência ao arquivo .env no arquivo docker-compose.yml. O Elastic Beanstalk gera o arquivo .env, listando cada uma das propriedades como variáveis de ambiente. Para obter mais informações, consulte Fazer referência a variáveis de ambiente em contêineres.

O Elastic Beanstalk pode transmitir as propriedades do ambiente diretamente para o contêiner. Seu código em execução no contêiner pode acessar essas propriedades como variáveis de ambiente sem nenhuma configuração adicional.

Diretórios de log

Para cada contêiner, o Elastic Beanstalk cria um diretório de logs chamado /var/log/eb-docker/containers/<service name> (ou ${EB_LOG_BASE_DIR}/<service name>). Para obter mais informações, consulte Registro em log personalizado do contêiner do Docker (Docker Compose).

Para cada contêiner, o Elastic Beanstalk cria um diretório de logs chamado /var/log/containers/<containername>. Para obter mais informações, consulte o campo mountPoints no Formato de definição de contêiner.

Etapas da migração

Como migrar para a plataforma Docker do Amazon Linux 2
  1. Crie o arquivo docker-compose.yml para a aplicação, com base no arquivo Dockerrun.aws.json v2 existente. Para obter mais informações, consulte a seção acim O arquivo docker-compose.yml.

  2. No diretório raiz da pasta do projeto da aplicação, substitua o arquivo Dockerrun.aws.json v2 pelo docker-compose.yml que você acabou de criar.

    A estrutura do diretório deve ser a seguinte.

    ~/myApplication |-- docker-compose.yml |-- .ebextensions |-- php-app |-- proxy
  3. Use o comando eb init para configurar o diretório local para implantação no Elastic Beanstalk.

    ~/myApplication$ eb init -p docker application-name
  4. Use o comando eb create para criar um ambiente e implante sua imagem do Docker.

    ~/myApplication$ eb create environment-name
  5. Se for uma aplicação Web, depois que o ambiente for iniciado, use o comando eb open para exibi-la em um navegador da Web.

    ~/myApplication$ eb open environment-name
  6. Você pode exibir o status do ambiente recém-criado usando o comando eb status.

    ~/myApplication$ eb status environment-name