Search code examples
systemdpodman

Rootless systemd for podman container (wihtout repalce or rm)


How to setup podman with systemd, if same container is to be run each time? (i.e. not podman run --replace)


Solution

  • Get pidfile from podman inspect:

    cd ~/
     
    # container-mypodmancontainer.service must be re-generated if container-id changes
    # prerequisite: podman container mypodmancontainer exists
    mkdir -vp ~/.config/systemd/user/
    cat > ~/.config/systemd/user/container-mypodmancontainer.service <<EOT
    [Unit]
    Description=Podman container-mypodmancontainer.service
    Documentation=mydocs
    Wants=network-online.target
    After=network-online.target
    RequiresMountsFor=%t/containers
     
    [Service]
    Environment=PODMAN_SYSTEMD_UNIT=%n
    Restart=always
    TimeoutStopSec=70
    ExecStart=/usr/bin/podman start mypodmancontainer
    ExecStop=/usr/bin/podman stop -t 5 mypodmancontainer
    Type=forking
    PIDFile=$(podman inspect --format '{{ .PidFile }}' mypodmancontainer)
     
    [Install]
    WantedBy=default.target
    EOT
     
    systemctl --user daemon-reload