Ordenando a execução dos containers
Baixar o Docker Compose para eliminar os container criados para o Host Driver:
~/compose$ docker compose -f host-compose.yaml down
[+] Running 3/3
✔ Container compose-nginx-1 Removed 0.0s
✔ Container compose-curl-1 Removed 0.0s
✔ Network compose_default Removed 0.7sRemover o arquivo host-compose.yaml:
~/compose$ rm host-compose.yamlSimulação de cenário
Ao executar o comando docker compose up -d os containers são criados numa ordem aleatória, pois as especificações do arquivos compose.yaml são apenas declarativas.
~/compose$ docker compose up -d
[+] Running 2/2
✔ Container compose-kubenews-1 Starte... 0.6s
✔ Container compose-postgre-1 Started 0.6sPorém, muitas vezes, existem dependências entre os containers. Neste exemplo, o container kubenews depende do container postgre. Ou seja, a aplicação depende do banco de dados para se conectar a ele.
Faz sentido criar o container postgre antes do kubenews, por isso é necessário especificar as dependências dos containers no arquivo compose.yaml.
Ordenando a execução
Edição do arquivo compose.yaml para inserir no container kubenews a sua dependência do postgre:
Destaque para:
Com isso a ordem de execução especificada é aplicada:
O depends_on é uma lista. Com isso é possível especificar que um container depende de um ou mais containers.
Por exemplo, criar mais um container nginx:
Poderia especificar que o container postgre depende do container nginx, e que o container nginx deixa de depende do kubenews:
O container nginx foi criado antes do container postgre:
Dependência Circular
Cuidado para não criar uma dependência circular. No exemplo acima se o container nginx continuasse dependente do container kubenews.
No arquivo compose.yaml é possível verificar as especificações de que os containers são dependentes entre si:
nginx depende do kubenews
kubenews depende do postgre
postgre depende do nginx
Retirando a dependência inserida para o container postgre a dependência cíclica é resolvida:
Last updated