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 Docker do daemon Docker local para Podman (para testes locais).copy.docker.duplistatus.remote: Copia a imagem Docker de um servidor de desenvolvimento remoto para 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 container em modo rootless.pod.testing: Testa o container dentro de um pod Podman (com privilégios de root).stop.duplistatus: Para o pod e remove o container.clean.duplistatus: Para containers, 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: Retorna à análise de
/etc/resolv.confem sistemas não-systemd - Filtragem Inteligente: Filtra automaticamente endereços localhost e nameservers 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
- Transferir a imagem Docker:
- Use
./copy.docker.duplistatus.localse Docker e Podman estiverem na mesma máquina - Use
./copy.docker.duplistatus.remotese copiar de um servidor de desenvolvimento remoto (requer arquivo.envcomREMOTE_USEReREMOTE_HOST)
- Use
- Inicie o container com
./start.duplistatus(independente, sem privilégios de root)- Ou use
./pod.testingpara testar em modo pod (com root)
- Ou use
- Monitore com
./check.duplistatuse./logs.duplistatus - Pare com
./stop.duplistatusquando terminar - Use
./restart.duplistatuspara um ciclo de reinicialização completo (parar, copiar imagem, iniciar)- Nota: Este script atualmente referencia
copy.docker.duplistatusque deve ser substituído por uma das variantes.localou.remote
- Nota: Este script atualmente referencia
- Use
./clean.duplistatuspara remover containers, 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.