

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

# Migração para o Elastic Beanstalk Docker em execução no Amazon Linux 2 a partir do Docker de vários contêineres em execução no Amazon Linux
<a name="docker-multicontainer-migration"></a>

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 [Migrando seu aplicativo Elastic Beanstalk do Docker de vários contêineres gerenciado pelo ECS para o ECS no Amazon Linux 2023 AL1](migrate-to-ec2-AL2-platform.md). 

## (Herdado) Migração do Docker de vários contêineres no Amazon Linux para a ramificação da plataforma Docker no Amazon Linux 2
<a name="docker-multicontainer-migration-to-docker-al2"></a>

É possível migrar as aplicações em execução na [plataforma Docker de vários contêineres na AMI do Amazon Linux](create_deploy_docker_ecs.md) 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](https://docs.docker.com/compose/) e [Instalar o Docker Compose](https://docs.docker.com/compose/install/) no site do Docker.

### O arquivo `docker-compose.yml`
<a name="docker-multicontainer-migration.files"></a>

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](https://docs.docker.com/compose/compose-file/). Para obter mais informações sobre o arquivo `Dockerrun.aws.json v2`, consulte [`Dockerrun.aws.json` v2](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun). 


| **`docker-compose.yml`** | **`Dockerrun.aws.json v2`** | 
| --- | --- | 
|  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/pt_br/elasticbeanstalk/latest/dg/docker-multicontainer-migration.html)  | 
|  <pre>version: '2.4'<br />services:<br />  php-app:<br />    image: "php:fpm"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "${EB_LOG_BASE_DIR}/php-app:/var/log/sample-app"<br />    mem_limit: 128m<br />    environment:<br />      Container: PHP<br />  nginx-proxy:<br />    image: "nginx"<br />    ports:<br />      - "80:80"<br />    volumes:<br />      - "./php-app:/var/www/html:ro"<br />      - "./proxy/conf.d:/etc/nginx/conf.d:ro"<br />      - "${EB_LOG_BASE_DIR}/nginx-proxy:/var/log/nginx"<br />    mem_limit: 128m<br />    links:<br />      - php-app</pre>  | 
|  <pre>{<br />  "AWSEBDockerrunVersion": 2,<br />  "volumes": [<br />    {<br />      "name": "php-app",<br />      "host": {<br />        "sourcePath": "/var/app/current/php-app"<br />      }<br />    },<br />    {<br />      "name": "nginx-proxy-conf",<br />      "host": {<br />        "sourcePath": "/var/app/current/proxy/conf.d"<br />      }<br />    }<br />  ],<br />  "containerDefinitions": [<br />    {<br />      "name": "php-app",<br />      "image": "php:fpm",<br />      "environment": [<br />        {<br />          "name": "Container",<br />          "value": "PHP"<br />        }<br />      ],<br />      "essential": true,<br />      "memory": 128,<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        }<br />      ]<br />    },<br />    {<br />      "name": "nginx-proxy",<br />      "image": "nginx",<br />      "essential": true,<br />      "memory": 128,<br />      "portMappings": [<br />        {<br />          "hostPort": 80,<br />          "containerPort": 80<br />        }<br />      ],<br />      "links": [<br />        "php-app"<br />      ],<br />      "mountPoints": [<br />        {<br />          "sourceVolume": "php-app",<br />          "containerPath": "/var/www/html",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "nginx-proxy-conf",<br />          "containerPath": "/etc/nginx/conf.d",<br />          "readOnly": true<br />        },<br />        {<br />          "sourceVolume": "awseb-logs-nginx-proxy",<br />          "containerPath": "/var/log/nginx"<br />        }<br />      ]<br />    }<br />  ]<br />}<br /> </pre>  | 

### Considerações adicionais sobre migração
<a name="docker-multicontainer-migration.considerations"></a>

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](create_deploy_docker.container.console.md#docker-env-cfg.env-variables).   |  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 de contêineres do Docker com o Docker Compose](create_deploy_docker.container.console.md#docker-env-cfg.dc-customized-logging).   |  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](create_deploy_docker_v2config.md#create_deploy_docker_v2config_dockerrun_format).   | 

### Etapas da migração
<a name="docker-multicontainer-migration.procedure"></a>

**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`](#docker-multicontainer-migration.files).

1. 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
   ```

1. Use o comando **eb init** para configurar o diretório local para implantação no Elastic Beanstalk.

   ```
   ~/myApplication$ eb init -p docker application-name
   ```

1. Use o comando **eb create** para criar um ambiente e implante sua imagem do Docker.

   ```
   ~/myApplication$ eb create environment-name
   ```

1. 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
   ```

1. Você pode exibir o status do ambiente recém-criado usando o comando **eb status**.

   ```
   ~/myApplication$ eb status environment-name
   ```