Pruebas de Podman
Copiar y ejecutar los scripts ubicados en scripts/podman_testing en el servidor de pruebas de Podman.
Configuración inicial y gestión
copy.docker.duplistatus.local: Copia la imagen de Docker desde el daemon de Docker local a Podman (para pruebas locales).copy.docker.duplistatus.remote: Copia la imagen de Docker desde un servidor de desarrollo remoto a Podman (requiere acceso SSH).- Cree la imagen en el servidor de desarrollo usando:
docker build . -t wsj-br/duplistatus:devel
- Cree la imagen en el servidor de desarrollo usando:
start.duplistatus: Inicia el contenedor en modo sin raíz.pod.testing: Prueba el contenedor dentro de un pod de Podman (con privilegios de raíz).stop.duplistatus: Detiene el pod y elimina el contenedor.clean.duplistatus: Detiene contenedores, elimina pods y limpia imágenes antiguas.
Configuración de DNS
Los scripts detectan y configuran automáticamente los parámetros de DNS del sistema host:
- Detección automática: Usa
resolvectl status(systemd-resolved) para extraer servidores DNS y dominios de búsqueda - Soporte alternativo: Recurre al análisis de
/etc/resolv.confen sistemas sin systemd - Filtrado inteligente: Filtra automáticamente direcciones de localhost y servidores de nombres IPv6
- Funciona con:
- Tailscale MagicDNS (100.100.100.100)
- Servidores DNS corporativos
- Configuraciones de red estándar
- Configuraciones DNS personalizadas
No se requiere configuración manual de DNS: ¡los scripts lo manejan automáticamente!
Monitoreo y comprobaciones de estado
check.duplistatus: Comprueba los registros, la conectividad y el estado de la aplicación.
Comandos de depuración
logs.duplistatus: Muestra los registros 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 de Podman
- Transfiera 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 raíz)- O use
./pod.testingpara probar en modo pod (con raíz)
- O use
- Supervise con
./check.duplistatusy./logs.duplistatus - Detenga con
./stop.duplistatuscuando haya terminado - Use
./restart.duplistatuspara un ciclo completo de reinicio (detener, copiar imagen, iniciar)- Nota: Este script actualmente hace referencia a
copy.docker.duplistatusque debería sustituirse por 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 ejecutas el servidor Podman en la misma máquina, utiliza 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 Podman Pod
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 necesita configuración manual.
Modo sin raíz frente a modo raíz
- Modo independiente (
start.duplistatus): Se ejecuta sin raíz con--userns=keep-id - Modo pod (
pod.testing): Se ejecuta como raíz dentro del pod para fines 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 realmente utilizados por start.duplistatus—solo se requiere IMAGE.