Olá, pessoal, tudo bem?
Conforme falamos em um artigo anterior, o Docker lançou uma nova versão, a 1.13. Com ela, vieram diversas melhorias, além da criação de uma nova versão no Docker Compose, que é a v3. Essa novidade é totalmente compatível com o Docker Swarm, que hoje é nativo na mesma engine no Docker. Então, agora com o Docker Compose podemos gerenciar nossos serviços através do Docker Swarm.
Agora com a V3 existe opção chamada deploy que é responsável por realizar as implantações e execução de serviços. Dentro dessa opção, temos as seguintes funções:
- Mode
- Onde é possível escolher a opção “Global” (um container por nó de swarm) ou “Replicated” (Onde posso escolher a quantidade de réplicas que estarão distribuídas entre os nós). O padrão é replicated.
- Replicas
- replicas: x
- Global
- Placement
- Especifica restrições de posicionamento são elas:
- node.id = idworker
- node.hostname = nomeworker
- node.role = manager ou worker
- node.lables = nome
- engine.labels = Sistema Operacional ou Driver
- Especifica restrições de posicionamento são elas:
- Update_config
- Configura como devem ser as opções de atualizações dos serviços.
- Parallelism: 5 #O Numero de containers que vão ser atualizados em paralelo.
- delay: 10s #O tempo entre cada grupo de containers será atualizado
- failure_action: pause ou continue #O que irá acontecer se a atualização falhar. O padrão é pause.
- monitor: 0s # Duração após cada atualização para monitorar a falha. O padrão é 0s.
- max_failure_ratio: #Taxa de falha para atualizar.
- resources
- Configura a restrição de recursos
- limits:
- cpus: ‘0.5’ # 0.5 representa 50% de um núcleo, porem pode ser 1 ou 1.5 ou 2….
- memory: ‘512M’ #apenas especificar o prefixo M, G, K….
- limits:
- Configura a restrição de recursos
- Restart_policy
- Configura como reiniciar os containers quando eles derem exit.
- condity: none on-failure any #Por padrão é any
- delay: 0s #Tempo entre as tentativas de reiniciar o containers #Por padrão é 0s
- max_attempts: 0 #Quantas vezes irá tentar subir o container antes de desistir #Por padrão é nunca desistir.
- window: 0s #Quanto tempo demora para decidir se um reinicio foi bem sucedido #Por padrão é imediatamente,
- Configura como reiniciar os containers quando eles derem exit.
Além dessas opções, com a entrada da V3, foram descontinuadas as seguintes opções do Docker Compose: volume_driver, volumes_from, cpu_shares, cpu_quota, cpuset, mem_limit, memswap_limit.
Agora vamos demonstrar um exemplo de como ficaria o docker-compose.yml com essas opções que mostramos acima.
version: "3" services: redis: image: redis ports: - "6379" deploy: placement: constraints: [node.role == manager] nginx: image: nginx ports: - 80:80 depends_on: - redis deploy: mode: replicated replicas: 2 placement: constraints: [node.role == manager] resources: limits: memory: 512M restart_policy: condition: on-failure delay: 10s
Executando o comando docker deploy –compose-file docker-compose.yml nomedastack, criamos a stack mencionada acima em nossa estrutura. Após executar esse comando, é possível dar um docker stack ls e você poderá ver que a sua stack foi criada. Com o nome dela, você pode executar o docker stack services nomedastack e poderá ver os serviços criados e qual o seu status.
Então, por hoje, era isso, pessoal! Espero que tenham gostado e qualquer dúvida é só deixar um comentário que estaremos felizes em lhe ajudar!