📦 Instalação do Watchtower via Docker Compose

O Watchtower é uma ferramenta que realiza a atualização automática dos seus contêineres Docker para as versões mais recentes das imagens. Ele verifica continuamente todos os contêineres em execução e os atualiza em tempo real sempre que uma nova imagem é disponibilizada. Este tutorial explica como configurá-lo utilizando o Docker Compose, incluindo o envio de notificações via Gmail e a definição de quais contêineres devem ser atualizados.


⚙️ Pré-requisitos

Antes de começar a instalação do Watchtower, você precisa ter:

  • Docker e Docker Compose instalados.
  • Acesso ao terminal ou linha de comando.
  • Permissões adequadas para executar comandos Docker.

🛠️ Passo a Passo para Instalação

1. Criação do Arquivo docker-compose.yml

Crie um arquivo docker-compose.yml em seu diretório de trabalho. O conteúdo básico do arquivo deve ser:

services:
  watchtower:
    image: v2tec/watchtower
    container_name: watchtower
    restart: unless-stopped
    environment:
      - [email protected]
      - [email protected]
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER=smtp.gmail.com
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PORT=587
      - [email protected]
      - WATCHTOWER_NOTIFICATION_EMAIL_SERVER_PASSWORD=sua-senha-de-app
      - WATCHTOWER_POLL_INTERVAL=3600  # Verifica a cada 1 hora
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock

2. Executar o Watchtower

No terminal, navegue até o diretório onde está o arquivo docker-compose.yml e execute o seguinte comando:

docker-compose up -d

Isso iniciará o Watchtower em segundo plano.


3. Verificação de Containers

Para verificar se o Watchtower está funcionando corretamente, você pode visualizar os logs com:

docker-compose logs watchtower

❓ Entendendo a Seleção de Contêineres

4. Verificação de Containers

Por padrão, o Watchtower monitora todos os contêineres. No entanto, em algumas situações, apenas alguns contêineres precisam ser atualizados.

Existem duas opções para controlar o monitoramento:

1. Exclusão Completa - Para excluir completamente um contêiner do monitoramento pelo Watchtower, você deve definir o rótulo:

LABEL com.centurylinklabs.watchtower.enable="false"

Esse rótulo deve ser aplicado aos contêineres que você deseja ignorar.

Importante: isso não deve ser definido no próprio Watchtower.

2. Somente Monitoramento - Se você quiser que o Watchtower apenas verifique atualizações e envie notificações sem realizar a atualização, defina o rótulo:

LABEL com.centurylinklabs.watchtower.monitor-only="true"

Ou, ao executar o contêiner, você pode especificar isso na linha de comando / docker-compose:

docker run -d --label=com.centurylinklabs.watchtower.monitor-only=true someimage

Configuração de Inclusão

Se preferir incluir apenas contêineres com o rótulo de habilitação, você pode passar o sinalizador --label-enable ou a variável de ambiente WATCHTOWER_LABEL_ENABLE na inicialização do Watchtower e definir o rótulo:

LABEL com.centurylinklabs.watchtower.enable="true"

Regras de Monitoramento

O Watchtower filtra contêineres em execução com base nos critérios configurados. Um contêiner será monitorado se todos os critérios forem atendidos.

Por exemplo:

  • Se o nome de um contêiner estiver na lista de monitoramento (não usando o argumento --name vazio), mas não estiver habilitado (com.centurylinklabs.watchtower.enable=false), ele não será monitorado.
  • Se o nome de um contêiner não estiver na lista de monitoramento (usando o argumento --name não vazio), mesmo que esteja habilitado (com.centurylinklabs.watchtower.enable=true e o sinalizador --label-enable esteja definido), ele não será monitorado.

Aqui está um docker-compose.yml de exemplo do Grafana de como ajustar para permitir as atualizações automáticas.

Lembrando que basta adicionar a seção de labels no arquivo de configuração do Docker Compose, utilizando a seguinte instrução: "com.centurylinklabs.watchtower.enable=true".

Essa configuração habilita o Watchtower, para estar sempre verificando e se necessario, atualizando a imagem do container, sem a necessidade de intervenções manuais.

  grafana:
    image: grafana/grafana:latest
    container_name: grafana
    user: '472'
    restart: always
    labels: 
      - com.centurylinklabs.watchtower.enable=true
    environment:
      GF_SECURITY_ADMIN_USER: ${GRAFANA_USER:-admin}
      GF_SECURITY_ADMIN_PASSWORD: ${GRAFANA_PASSWORD:-admin}
      GF_PATHS_PROVISIONING: /etc/grafana/provisioning
      GF_INSTALL_PLUGINS: 'grafana-clock-panel,grafana-strava-datasource'
      GF_FEATURE_TOGGLES_ENABLE: 'externalServiceAccounts'
    volumes:
      - grafana_data:/var/lib/grafana
      - ./grafana/provisioning:/etc/grafana/provisioning
    env_file:
      - .env
    ports:
      - 3000:3000
    depends_on:
      - prometheus

4. Configuração de Notificações via Gmail

Para configurar notificações por e-mail usando o Gmail, siga estas etapas:

Ativar a Verificação em Duas Etapas:

  • Acesse sua conta do Gmail.
  • Vá para "Segurança" e ative a verificação em duas etapas.

Criar uma Senha de Aplicativo:

  • Após ativar a verificação em duas etapas, vá para Senhas de aplicativos.
  • Crie uma nova senha de aplicativo para o Watchtower e copie-a.

Substitua a senha no docker-compose.yml:

  • No arquivo docker-compose.yml, substitua "sua-senha-de-app" pela senha de aplicativo que você gerou e reinicie o container.
docker-compose restart watchtower

❓ Perguntas Frequentes (FAQ)

  1. O Watchtower pode atualizar todos os meus containers?

    • Sim, o Watchtower monitora e atualiza todos os containers em execução que possuem a label com.centurylinklabs.watchtower.enable=true.
  2. Como posso parar o Watchtower?

    • Para parar o Watchtower, use:
docker-compose down
  1. O que acontece se uma atualização falhar?

    • Se uma atualização falhar, o Watchtower não removerá o container anterior ele tentará reiniciar o container usando a versão anterior.
  2. Posso usar o Watchtower em um ambiente de produção?

    • Sim, o Watchtower é adequado para ambientes de produção, mas recomenda-se testar em um ambiente de desenvolvimento antes da implementação.
  3. Como posso desinstalar o Watchtower?

    • Para parar o container do Watchtower, no diretorio do docker-compose use:
docker-compose down

📜 Conclusão

O Watchtower é uma solução eficiente para automatizar a gestão de atualizações de containers Docker. Este guia permitirá que você instale e configure o Watchtower utilizando o Docker Compose, incluindo a configuração de notificações por e-mail via Gmail e o monitoramento de containers específicos por meio de labels.

Para obter mais informações, consulte a documentação oficial em Watchtower.