Pruebas de Podman
Copiar y ejecutar los scripts ubicados en scripts/podman_testing en el Servidor de prueba de Podman.
Configuración Inicial y Gestión
copy.docker.duplistatus.local: Copia la imagen de Docker del daemon de Docker local a Podman (para pruebas locales).copy.docker.duplistatus.remote: Copia la imagen de Docker de un servidor de desarrollo remoto a Podman (requiere acceso SSH).- Cree la imagen en el servidor de desarrollo utilizando:
docker build . -t wsj-br/duplistatus:devel
- Cree la imagen en el servidor de desarrollo utilizando:
start.duplistatus: Inicia el contenedor en modo sin privilegios de root.pod.testing: Prueba el contenedor dentro de un pod de Podman (con privilegios de root).stop.duplistatus: Detiene el pod y elimina el contenedor.clean.duplistatus: Detiene los contenedores, elimina los pods y limpia las imágenes antiguas.
Configuración de DNS
Los scripts detectan y configuran automáticamente la configuración de DNS desde el sistema host:
- Detección Automática: Utiliza
resolvectl status(systemd-resolved) para extraer servidores DNS y dominios de búsqueda - Soporte de Respaldo: Recurre al análisis de
/etc/resolv.confen sistemas sin systemd - Filtrado Inteligente: Filtra automáticamente direcciones localhost y servidores de nombres IPv6
- Compatible con:
- Tailscale MagicDNS (100.100.100.100)
- Servidores DNS corporativos
- Configuraciones de red estándar
- Configuraciones DNS Personalizadas
No es necesaria ninguna configuración manual de DNS: ¡los scripts la manejan automáticamente!
Monitoreo y Verificaciones de Salud
check.duplistatus: Comprueba los logs, la conectividad y el estado de la aplicación.
Comandos de Depuración
logs.duplistatus: Muestra los logs del pod.exec.shell.duplistatus: Abre un shell en el contenedor.restart.duplistatus: Detiene el pod, elimina el contenedor, copia la imagen, crea el contenedor e inicia el pod.
Flujo de Trabajo de Uso
Servidor de Desarrollo
Crear la imagen de Docker en el servidor de desarrollo:
docker build . -t wsj-br/duplistatus:devel
Servidor Podman
- Transferir la imagen de Docker:
- Use
./copy.docker.duplistatus.localsi Docker y Podman están en la misma máquina - Use
./copy.docker.duplistatus.remotesi copia desde un servidor de desarrollo remoto (requiere archivo.envconREMOTE_USERyREMOTE_HOST)
- Use
- Inicie el contenedor con
./start.duplistatus(independiente, sin privilegios)- O use
./pod.testingpara probar en modo pod (con root)
- O use
- Monitoree con
./check.duplistatusy./logs.duplistatus - Detenga con
./stop.duplistatuscuando haya terminado - Use
./restart.duplistatuspara un ciclo de reinicio completo (detener, copiar imagen, iniciar)- Nota: Este script actualmente hace referencia a
copy.docker.duplistatusque debe reemplazarse con la variante.localo.remote
- Nota: Este script actualmente hace referencia a
- Use
./clean.duplistatuspara eliminar contenedores, pods e imágenes antiguas
Prueba de la Aplicación
Si está ejecutando el servidor de Podman en la misma máquina, utilice http://localhost:9666.
Si estás en otro servidor, obtén la URL con:
echo "http://$(hostname -I | awk '{print $1}'):9666"
Notas Importantes
Redes de Pods de Podman
Cuando se ejecuta en pods de Podman, la aplicación requiere:
- Configuración explícita de DNS (manejada automáticamente por el script
pod.testing) - Vinculación de puerto a todas las interfaces (
0.0.0.0:9666)
Los scripts manejan estos requisitos automáticamente - no se requiere configuración manual.
Modo sin root vs Modo root
- Modo independiente (
start.duplistatus): Se ejecuta sin privilegios de root con--userns=keep-id - Modo pod (
pod.testing): Se ejecuta como root dentro del pod para propósitos de prueba
Ambos modos funcionan correctamente con la detección automática de DNS.
Configuración del Entorno
Tanto copy.docker.duplistatus.local como copy.docker.duplistatus.remote requieren un archivo .env en el directorio scripts/podman_testing:
Para copia local (copy.docker.duplistatus.local):
IMAGE=wsj-br/duplistatus:devel
Para copia remota (copy.docker.duplistatus.remote):
IMAGE=wsj-br/duplistatus:devel
REMOTE_USER=your_username
REMOTE_HOST=your_hostname
El script start.duplistatus requiere un archivo .env con al menos la variable IMAGE:
IMAGE=wsj-br/duplistatus:devel
Nota: El mensaje de error del script menciona REMOTE_USER y REMOTE_HOST, pero estos no son utilizados realmente por start.duplistatus—solo se requiere IMAGE.