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