On 13/01/2019 18:27, Nick Williams wrote:
I’m working on a Docker container to run my PDNS Authoritative
servers. I’m installing PDNS from repo.powerdns.com
<http://repo.powerdns.com>. The Docker command that is run in
`pdns_server`. The `docker stop` command sends a `SIGTERM` to PID 1,
waits some amount of time, and then sends SIGKILL to force it to stop.
It’s having to resort to SIGKILL, because `pdns_server` doesn’t
respond to `SIGTERM`. What is the correct signal to tell PDNS to shut
down?
The problem is not with pdns, it's with docker: strange things happen if
you run the application as pid 1. For an explanation see:
https://hackernoon.com/my-process-became-pid-1-and-now-signals-behave-strangely-b05c52cc551c
Solution: run a different pid 1 process whose job it is to launch the
application, such as tini:
https://github.com/krallin/tini
With a modern version of docker, tini is included. Just use the --init
flag to docker run, and it should all be fine.
Regards,
Brian.
P.S. You can easily show that pdns is happy with a SIGTERM when you run
it outside of docker.
root@ns2:~# ps auxwww | grep pdns
pdns 1612 0.0 0.7 677608 8064 ? Ssl 2018 16:37
/usr/sbin/pdns_server --guardian=no --daemon=no --disable-syslog
--write-pid=no
root 25477 0.0 0.0 12944 968 pts/0 S+ 20:24 0:00 grep
--color=auto pdns
root@ns2:~# kill -TERM 1612
root@ns2:~# ps auxwww | grep pdns
root 25486 0.0 0.0 12944 940 pts/0 S+ 20:24 0:00 grep
--color=auto pdns
root@ns2:~#
This is pdns-server 4.0.6 under Ubuntu 16.04, with mysql backend.
_______________________________________________
Pdns-users mailing list
[email protected]
https://mailman.powerdns.com/mailman/listinfo/pdns-users