Ich habe einen Oneshot-Dienst, der so aussieht
[Unit]
Description=My Service
After=network-online.target
[Service]
Type=oneshot
ExecStart=/usr/local/bin/myservice.sh start
ExecStop=/usr/local/bin/myservice.sh stop
RemainAfterExit=true
[Install]
WantedBy=multi-user.target
Das von mir verwendete Docker-Image hat
STOPSIGNAL SIGRTMIN+3
ENTRYPOINT ["/sbin/init"]
Der Dienst wird wie erwartet gestartet, wenn ich den Container starte. Wenn ich ihn manuell ausführe, systemctl stop myservice
funktioniert er wie erwartet, aber wenn ich ausführe docker stop mycontainer
, wird der Stopp nicht aufgerufen. Handelt es sich hier um ein Stoppsignal- oder Dienstkonfigurationsproblem?
Antwort1
Der Dienst und das Signal waren korrekt, aber systemd-halt
der Dienst muss ausgeführt werden, damit dies funktioniert.