Gerenciar o Container do Servidor Web como um Serviço systemd
Nesta etapa final, você aprenderá como configurar um container para iniciar automaticamente, garantindo que seu serviço seja resiliente a falhas ou reinicializações do sistema. Em um sistema Red Hat Enterprise Linux padrão, o systemd é a principal ferramenta para gerenciar serviços. No entanto, o ambiente Podman neste laboratório não usa systemd para gerenciar containers diretamente.
Em vez disso, alcançaremos o mesmo resultado — reinícios automáticos do serviço — usando as políticas de reinício (restart policies) integradas do Podman. Esta é a maneira padrão, nativa de container, de garantir que um container seja iniciado automaticamente pelo daemon Podman. Configurararemos nosso web_server para sempre reiniciar se parar por qualquer motivo.
Primeiro, devemos remover o container existente, pois as políticas de reinício só podem ser aplicadas quando um container é criado.
Pare o container web_server:
podman stop web_server
web_server
E agora remova-o:
podman rm web_server
web_server
Em seguida, recrie o container web_server com a mesma configuração de antes, mas adicione a flag --restart always. Esta flag instrui o daemon Podman a monitorar o container e reiniciá-lo se ele sair.
podman run -d \
--name web_server \
--network webapp-network \
-v $(pwd)/webapp_content:/usr/local/apache2/htdocs/:Z \
-p 8080:80 \
--restart always \
httpd:2.4
O container iniciará como de costume. Para confirmar que a política de reinício está ativa, você pode inspecionar a configuração do container.
podman inspect web_server --format '{{.HostConfig.RestartPolicy.Name}}'
O comando deve retornar always, confirmando que a política está definida.
always
Agora, vamos demonstrar como a política de reinício funciona reiniciando manualmente o container para simular o que aconteceria após uma reinicialização do sistema ou falha do container.
Primeiro, vamos verificar a configuração atual da política de reinício:
podman inspect web_server --format '{{.HostConfig.RestartPolicy.Name}}'
Isso deve mostrar always, confirmando que nossa política de reinício está configurada.
always
Agora, vamos testar o reinício manual para simular a recuperação após uma falha:
podman start web_server
web_server
Verifique se o container está em execução:
podman ps
Você deve ver ambos os containers em execução com a política de reinício em vigor:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e7f6g5h4i3j2 httpd:2.4 "httpd-foreground" About a minute ago Up 5 seconds 0.0.0.0:8080->80/tcp web_server
a1b2c3d4e5f6 mariadb:10.6 "docker-entrypoint.s…" About an hour ago Up About an hour 3306/tcp mariadb_server
Finalmente, confirme que o serviço está acessível:
curl http://localhost:8080
<h1>Welcome to My Web App</h1>
Entendendo as Políticas de Reinício:
A política --restart always que você configurou garante que:
- O container reiniciará automaticamente se sair inesperadamente
- O container iniciará automaticamente quando o serviço Podman iniciar (como após uma reinicialização do sistema)
- Isso fornece resiliência para implantações de produção
Observação: Em alguns ambientes de laboratório, o comportamento de reinício automático pode variar dependendo da configuração do Podman e se o serviço do sistema Podman está em execução. O principal objetivo de aprendizado é entender como configurar políticas de reinício para implantações de produção.
Você configurou com sucesso seu container para ser gerenciado como um serviço, garantindo que ele permaneça disponível automaticamente. Isso completa o gerenciamento básico do ciclo de vida de uma aplicação em container.