Testes do Podman
Copiar e executar os scripts localizados em scripts/podman_testing no servidor de teste Podman.
Configuração Inicial e Gerenciamento
copy.docker.duplistatus.local: Copia a imagem do Docker do daemon local do Docker para o Podman (para testes locais).copy.docker.duplistatus.remote: Copia a imagem do Docker de um servidor de desenvolvimento remoto para o Podman (requer acesso SSH).- Crie a imagem no servidor de desenvolvimento usando:
docker build . -t wsj-br/duplistatus:devel
- Crie a imagem no servidor de desenvolvimento usando:
start.duplistatus: Inicia o contêiner no modo sem privilégios (rootless).pod.testing: Testa o contêiner dentro de um pod do Podman (com privilégios de root).stop.duplistatus: Interrompe o pod e remove o contêiner.clean.duplistatus: Interrompe contêineres, remove pods e limpa imagens antigas.
Configuração de DNS
Os scripts detectam e configuram automaticamente as configurações de DNS do sistema host:
- Detecção Automática: Usa
resolvectl status(systemd-resolved) para extrair servidores DNS e domínios de pesquisa - Suporte de Fallback: Recorre à análise de
/etc/resolv.confem sistemas sem systemd - Filtragem Inteligente: Filtra automaticamente endereços de localhost e servidores de nomes IPv6
- Funciona com:
- Tailscale MagicDNS (100.100.100.100)
- Servidores DNS corporativos
- Configurações de rede padrão
- Configurações DNS personalizadas
Nenhuma configuração manual de DNS é necessária - os scripts lidam com isso automaticamente!
Monitoramento e Verificações de Saúde
check.duplistatus: Verifica os logs, conectividade e saúde da aplicação.
Comandos de Depuração
logs.duplistatus: Mostra os logs do pod.exec.shell.duplistatus: Abre um shell no container.restart.duplistatus: Para o pod, remove o container, copia a imagem, cria o container e inicia o pod.
Fluxo de Uso
Servidor de Desenvolvimento
Criar a imagem do Docker no servidor de desenvolvimento:
docker build . -t wsj-br/duplistatus:devel
Servidor Podman
- Transfira a imagem do Docker:
- Use
./copy.docker.duplistatus.localse o Docker e o Podman estiverem na mesma máquina - Use
./copy.docker.duplistatus.remotese estiver copiando de um servidor de desenvolvimento remoto (requer o arquivo.envcomREMOTE_USEReREMOTE_HOST)
- Use
- Inicie o contêiner com
./start.duplistatus(autônomo, sem privilégios)- Ou use
./pod.testingpara testar no modo pod (com root)
- Ou use
- Monitore com
./check.duplistatuse./logs.duplistatus - Pare com
./stop.duplistatusao finalizar - Use
./restart.duplistatuspara um ciclo completo de reinicialização (parar, copiar imagem, iniciar)- Observação: Este script atualmente faz referência a
copy.docker.duplistatus, que deve ser substituído pela variante.localou.remote
- Observação: Este script atualmente faz referência a
- Use
./clean.duplistatuspara remover contêineres, pods e imagens antigas
Testando a Aplicação
Se você estiver executando o servidor Podman na mesma máquina, use http://localhost:9666.
Se você estiver em outro servidor, obtenha a URL com:
echo "http://$(hostname -I | awk '{print $1}'):9666"
Notas Importantes
Rede de Pod do Podman
Quando executado em pods Podman, a aplicação requer:
- Configuração explícita de DNS (manipulada automaticamente pelo script
pod.testing) - Vinculação de porta a todas as interfaces (
0.0.0.0:9666)
Os scripts lidam com esses requisitos automaticamente - nenhuma configuração manual necessária.
Modo sem Root vs Modo Root
- Modo autônomo (
start.duplistatus): Executa sem privilégios com--userns=keep-id - Modo pod (
pod.testing): Executa como root dentro do pod para fins de teste
Ambos os modos funcionam corretamente com a detecção automática de DNS.
Configuração de Ambiente
Tanto copy.docker.duplistatus.local quanto copy.docker.duplistatus.remote exigem um arquivo .env no diretório scripts/podman_testing:
Para cópia local (copy.docker.duplistatus.local):
IMAGE=wsj-br/duplistatus:devel
Para cópia remota (copy.docker.duplistatus.remote):
IMAGE=wsj-br/duplistatus:devel
REMOTE_USER=your_username
REMOTE_HOST=your_hostname
O script start.duplistatus requer um arquivo .env com pelo menos a variável IMAGE:
IMAGE=wsj-br/duplistatus:devel
Nota: A mensagem de erro do script menciona REMOTE_USER e REMOTE_HOST, mas estes não são realmente utilizados por start.duplistatus—apenas IMAGE é obrigatório.