Docker Swarm
SkillFiles & storageDesign, deploy, and operate Docker Swarm stacks with services, overlay networks, secrets, configs, placement, rollout, rollback, and quorum recovery. Use for swarm init, docker stack, services, managers, workers, or stack files; also use to decide manager/worker topology and strat
Available today. Use it from your connected AI after setup.
No other account needed.
Connect ahel once, and every AI you use reads what you have installed.
Then ask your AI: use the Docker Swarm skill
What this skill tells your AI
The instructions your AI receives, as published by promovaweb/specsfy in specialists/specsfy-specialist-docker-swarm/SKILL.md and read by ahel’s review.
Quando usar
- Acionar quando o projeto orquestra múltiplos nós com
docker swarm init/join,docker stack deployou arquivos de stack comdeploy:. - Acionar também para decidir topologia de managers/workers, rollout, rollback ou recuperação de quorum.
- Não acionar para desenvolvimento local com
docker compose upem uma única máquina, nem para build de imagem — usar$specsfy-specialist-dockernesse caso; muitas chaves do Compose (profiles,depends_on.condition,buildem runtime) não têm efeito emdocker stack deploy. - Combinar com
$specsfy-specialist-delivery-engineeringquando o rollout faz parte de um pipeline de release, e com$specsfy-specialist-observabilitypara decidir os sinais que autorizam ou revertem o rollout.
Fluxo
- Em release ou deploy completo, trabalhar sob
$specsfy-specialist-deploy. Conferir oSEMVERpreparado por$specsfy-specialist-versioning, executarverify-docker-tagantes dedocker stack deploye interromper quando a tag for diferente. - Mapear managers, workers, zonas, labels, quorum e dependências externas (registry, storage, DNS) antes de qualquer mudança de topologia.
- Validar que a imagem publicada é a mesma testada e que o arquivo de stack
usa apenas chaves suportadas por
docker stack deploy(não todo o schema do Compose). - Definir services, redes, ports, volumes, configs e secrets, com um owner claro para cada recurso compartilhado.
- Configurar replicas, placement constraints/preferences,
resources.limits/reservations, healthcheck erestart_policy. - Projetar
update_configerollback_config(paralelismo, delay, ordemstart-first/stop-first,failure_action) garantindo que a versão nova e a antiga coexistam sem quebrar contrato de API/dados durante o rollout. - Aplicar em um swarm representativo (staging com topologia equivalente, não
um único nó) e observar convergência com
docker service psedocker service logs. - Documentar procedimento de deploy, rollback, rotação de secret, backup do estado do Raft e plano de recuperação de perda de manager.
Padrões
-
Em deploy coordenado por
$specsfy-specialist-deploy, usar Cloudflare Tunnel como entrada pública padrão. Mantercloudflarede a aplicação na mesma rede overlay, sem publicar a porta do Laravel no host. Aceitar outro proxy quando a pessoa pedir essa troca de forma explícita. -
Entregar o token do túnel por Docker Secret montado como arquivo e iniciar
cloudflaredcom--token-file. Nunca guardar o valor na stack. -
Separar dependências, aplicação e ingress em stacks diferentes. Publicar em ordem de dependência, aguardar a convergência declarada de cada serviço e só então abrir o caminho público.
-
Concentrar migrations em uma réplica escolhida. Os demais serviços iniciam com migrations desativadas para impedir concorrência durante rollout.
-
Usar a mesma imagem imutável para HTTP, filas, scheduler e WebSocket, com comandos e healthchecks próprios. Manter o worker de contingência em zero réplica quando outro supervisor de filas estiver ativo.
-
Criar redes overlay externas e criptografadas antes das stacks. Serviços de dados ficam apenas na rede interna; um tunnel outbound-only pode eliminar portas públicas no host quando esse desenho atende ao projeto.
-
Manter número ímpar de managers (1, 3 ou 5) e nunca deixar o quorum dependente de um único manager em produção.
-
Publicar imagens imutáveis por digest (
image@sha256:...) acessíveis por todos os nodes; um node não pode divergir por ter build local. -
Usar secrets/configs versionados por nome (
app_secret_v2) e nunca embutir segredo em variável de ambiente do arquivo de stack. -
Separar rede de ingress, rede interna de serviço e rede de dados; não expor uma porta de serviço interno via
ports:publicado. -
Definir
resources.limitsereservationsexplicitamente; não depender de capacidade implícita do node mais folgado. -
Aplicar
placement.constraintsapenas com labels administradas (node.labels.*), nunca com hostname hardcoded. -
Não assumir que uma opção do Compose (
profiles,build,develop,depends_oncomcondition) é respeitada porstack deploy— validar contra a lista de campos suportados antes de depender dela.
Antipadrões
- Rolling update sem
update_config.order: start-firstem serviço com poucas réplicas: a réplica antiga cai antes da nova ficar saudável, e o serviço fica momentaneamente sem capacidade. - Volume local (
bindou volume nomeado sem driver distribuído) em serviço com múltiplas réplicas ou reagendamento: o dado "desaparece" quando o scheduler realoca o container para outro node. - Secret alterado in-place trocando o conteúdo do arquivo referenciado: Swarm
trata secrets como imutáveis por nome; a mudança correta é criar uma nova
versão (
app_secret_v2), anexá-la ao serviço e só então remover a antiga. - Confundir
docker-compose.ymlde desenvolvimento com o arquivo de stack de produção: healthcheck,deploy:, secrets e redes overlay costumam faltar ou divergir entre os dois.
Validação
- Rodar
docker stack config --compose-file <arquivo>(ou validação equivalente do provedor) antes do deploy para detectar erro de interpolação e de schema. - Observar
docker service ps <serviço>,docker service logs, réplicas desejadas vs atuais e eventos do node durante todo o rollout, não apenas no fim. - Simular falha de worker e, em ambiente autorizado e com backup validado, perda de um manager, confirmando que o quorum sobrevive com os managers restantes.
- Provar rollback de aplicação (
docker service update --rollbackourollback_config) e a compatibilidade de migrations de dados durante a janela em que as duas versões coexistem. - Não declarar a stack "pronta para produção" sem esses quatro pontos verificados; "funcionou no meu node" não é evidência de convergência do cluster.
Skills relacionadas
$specsfy-specialist-deploycoordena servidor, imagem, Ansible e publicação da stack; esta skill governa somente o Swarm.$specsfy-specialist-versioningpreparaSEMVERe confere a versão usada pela imagem e pelo manifesto da stack.$specsfy-specialist-ansibleprepara e mantém os nodes; esta skill governa quorum, scheduler, services e redes do Swarm.$specsfy-specialist-laraveldefine os contratos da aplicação e$specsfy-specialist-redisa persistência/cache usados pelos services.$specsfy-specialist-dockerpara build de imagem, Dockerfile e desenvolvimento local com Compose — fronteira: Swarm começa onde a aplicação passa a rodar em múltiplos nós com estado de cluster.$specsfy-specialist-delivery-engineeringquando o rollout do serviço faz parte de um pipeline de release com promoção entre ambientes.$specsfy-specialist-observabilitypara instrumentar os sinais (health, taxa de erro, latência) que decidem continuar, pausar ou reverter um rollout.$specsfy-specialist-debian-serverpara portas do cluster, kernel, filesystem e serviço Docker dos nodes.
Leia references/standards.md para topologia do Raft, ciclo de vida de secrets/configs, redes overlay, estratégias de rollout e disaster recovery, com fontes oficiais da documentação do Docker.
Signals
- GitHub stars
- 79
- Forks
- 37
- Last commit
- Sep 2026
ahel review
S4info
community integration — published by promovaweb, not docker
Automated review, not a security audit. Ruleset v1.
Advanced
- Catalog kind
- skill
- Gateway key
specsfy-specialist-docker-swarm- Source
- github.com/promovaweb/specsfy