Usando o systemd para gerenciar o podman Link to heading
Recentimente eu migrei do Centos 7 para o Centos 8, com isso veio a mudança do Docker para o Podman, nessa migração eu troquei o docker-compose pelo Podman+Systemd.
Um exemplo da migração seria o do gitea:
version: "2"
networks:
gitea:
external: false
services:
server:
image: gitea/gitea:latest
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
networks:
- gitea
volumes:
- ./gitea:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
ports:
- "3000:3000"
- "222:22"
Do YAML do docker-compose, vira o seguinte arquivo para o systemd:
[Unit]
Description=TorrentBox
After=network.target
[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f "gitea"
ExecStart=podman run --pull=always --name=gitea -p 3000:3000 -p 222:22 -v /gitea:/data:rw,Z -v -e TZ=America/Sao_Paulo -e USER_UID=1000 -e USER_GID=1000 gitea/gitea:latest
ExecReload=-/usr/bin/podman stop "gitea"
ExecReload=-/usr/bin/podman rm "gitea"
ExecStop=-/usr/bin/podman stop "gitea"
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
Na linha do ExecStart, o parametro --pull=always
é utilizado para sempre buscar uma imagem nova, isso garante que o container sempre vai estar atualizado.
A pasta de destino que eu geralmente uso é /etc/systemd/system/
:
cat <<EOF > /etc/systemd/system/gitea.service
[Unit]
Description=TorrentBox
After=network.target
[Service]
Type=simple
TimeoutStartSec=5m
ExecStartPre=-/usr/bin/podman rm -f "gitea"
ExecStart=podman run --pull=always --name=gitea -p 3000:3000 -p 222:22 -v /gitea:/data:rw,Z -e TZ=America/Sao_Paulo -e USER_UID=1000 -e USER_GID=1000 gitea/gitea:latest
ExecReload=-/usr/bin/podman stop "gitea"
ExecReload=-/usr/bin/podman rm "gitea"
ExecStop=-/usr/bin/podman stop "gitea"
Restart=always
RestartSec=30
[Install]
WantedBy=multi-user.target
EOF
Depois de criar o arquivo com a extensão service:
systemctl daemon-reload
Para iniciar o container como serviço é só dar um enable com o argumento –now:
systemctl enable --now gitea.service
Não se esqueça de criar o diretorio /gitea.
Para verificar os logs do container, você pode consultar direto via podman ou utilizar o journalctl para isso:
Com o Podman:
podman logs gitea
Com o journalctl:
journalctl -u gitea.service