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

Remover o arquivo host-compose.yaml:

~/compose$ rm host-compose.yaml

Simulaçã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.6s

Poré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