Estamos executando um ambiente Docker multicontêiner do Elastic Beanstalk no Amazon Linux 1, que foi obsoleto e precisa ser migrado para o Amazon Linux 2.
A documentação apresenta duas opções para fazer isso:
Pelo que entendi, eles recomendam a primeira opção, pois a plataforma ECS é mais parecida com a plataforma atual do AL1.
Estou me perguntando, no entanto, quais são as diferenças práticas entre essas duas opções. Qual é o papel do ECS nisso, quais vantagens ele tem sobre o Docker puro?
No ECS, implantamos com Dockerrun.aws.json, que geramos a partir de docker-compose.yml com container-transform. Isso funciona, mas seria bom se pudéssemos pular essa transformação. Com a segunda opção, sem ECS, seria possível implantar um arquivo docker-compose.yml diretamente?
Usamos uma única instância, sem balanceador de carga (mas queremos manter a opção aberta para o futuro).
Alguém já fez essa migração, com qualquer uma das opções, e pode fornecer alguns insights sobre o processo?
Fiz esta pergunta no ano passado e ela não obteve respostas ou votos positivos, por isso foi excluída pelo bot da comunidade. Estou postando novamente, pois tenho que fazer a migração agora, e fui orientado a fazê-lo.
Enquanto isso, o Amazon Linux 2023 foi lançado, mas a questão permanece basicamente a mesma (plataforma Docker ou plataforma ECS?).
Estou no processo de migração agora e posso compartilhar o que aprendi até agora.
Com o lançamento do Amazon Linux 2023, eles também atualizaram a documentação. Achei o seguinte mais relevante para tomar uma decisão:
Fonte
Ênfase minha. Resumindo: A plataforma ECS oferece uma migração mais fácil , mas a plataforma Docker é mais simples e utiliza menos recursos .
Como temos que atualizar a configuração de qualquer maneira, parece uma boa ideia migrar para a plataforma Docker mesmo quando isso dá mais trabalho, pois prefiro usar uma "abordagem mais simples" que "usa menos recursos". Também é mais familiar trabalhar diretamente com o docker-compose do que com tarefas do ECS.
Antes, costumávamos transformar um arquivo docker-compose em Dockerrun.aws.json com container-transform . Na plataforma Docker, esta etapa não é mais necessária e, em vez disso, podemos implantá-la
docker compose
diretamente.Tive que adicionar as seguintes opções ao
docker-compose.yml
arquivo, para cada contêiner:mem_limit
env_file: .env
restart: no
para contêineres que estavamessential: false
noDockerrun.aws.json
Nenhuma outra alteração foi necessária no artefato de implantação. Agora agrupamos o
docker-compose.yml
junto com o.ebextensions
, como fizemos antes com oDockerrun.aws.json
.