(Alternative zu docker-compose und --restart=always)
vgl. ressourcen hier:
- redhat.com/en/blog/quadlet-podman
- giacomo.coletto.io/blog/podman-quadlets/
- mag37.org/posts/guide_podman_quadlets/
-
Erstellung eines Ordners, wo die quadlets gespeichert werden (unter dem entsprechenden User, root auch möglich)
mkdir -p $HOME/.config/containers/systemd
-
Lasse podman täglich nach aufdatierten images suchen
podman system migrate
systemctl --user enable --now podman-auto-update
-
Kreiere ein ".container" unit file, welches das container image laufen lässt (CONTAINERNAME ist dabei der Name des entsprechenden Containers, zu finden z.B. über "podman container ls -a")
nano $HOME/.config/containers/systemd/CONTAINERNAME.container
-
Gebe folgende Informationen an und speichere das file (ctrl + x und dann y)
[Unit] Description=FREIER BESCHRIEB DES CONTAINERS/SERVICES [Container] Image=localhost/CONTAINER-IMAGE:latest ContainerName=CONTAINERNAME PublishPort=JE NACHDEM ABHÄNGIG (z.B. bei einer streamlit-app --> 8504:8504) [Service] Restart=always [Install] WantedBy=default.target
-
Reload den systemd daemon
systemctl --user daemon-reload
Nun wird ein file, basierend auf CONTAINERNAME.container (z.B. tarifbewertung.container), gebildet mit dem namen CONTAINER.service (z.B. tarifbewertung.service)
-
Status anschauen (kann auch im Verlauf immer wieder gemacht werden)
systemctl --user status CONTAINERNAME.service
-
Den Service starten
systemctl --user start CONTAINERNAME.service
-
Nun muss noch der User (z.B. "pi") enabled werden, dass er beim reboot und nach logout noch services starten kann
loginctl show-user pi
sudo loginctl enable-linger pi
loginctl show-user pi
Es sollte beim ersten Befehl bei "Linger=no" stehen und nach dem mittleren Befehl sollte "linger=yes" stehen. Nun sollte die Applikation funktionieren und auch bei einem reboot neustarten.
-
Falls nötig, kann ein Service wie folgt gestoppt werden:
cd $HOME/.config/containers/systemd/
systemctl --user stop CONTAINERNAME.service