docker-build
docker-build copied to clipboard
[knot-resolver] entrypoint.shでの実行順序によりセグフォする
container実行にあたって、entrypoint.shで複数のプロセスを実行するが、実行順序によりプロセスがセグメンテーションフォルトを発生させる。
$ docker logs docker-env_kresd_1
-f 1 -c /etc/knot-resolver/kresd.conf
[ ta ] keyfile '/etc/knot-resolver/root.keys': doesn't exist, bootstrapping
[system] bind to 'fe80::42:acff:fe16:2@53' (UDP): Invalid argument
Segmentation fault (core dumped)
Knot Resolver Cache Garbage Collector v. 0.2
#!/usr/bin/env sh
# Deleting the trust anchor key file
rm -f /var/run/knot-resolver/root.keys
# Process execution
var="$@"
# Knot Resolver daemon
/usr/sbin/kresd $var &
# Knot Resolver Garbage Collector daemon
kres-cache-gc -c /var/run/knot-resolver -d 1000 &
# process foreground
tail -f /dev/null
また、各々のプロセスをsh -cで呼び出す形にした場合、順序関係なくセグフォする。
また、各々のプロセスをsh -cで呼び出す形にした場合、順序関係なくセグフォする。
今確認したら、順番さえ気を付ければセグメンテーションフォルトは発生しなかった。
#!/usr/bin/env sh
# Deleting the trust anchor key file
rm -f /var/run/knot-resolver/root.keys
# Process execution
var="$@"
# Knot Resolver Garbage Collector daemon
sh -c "kres-cache-gc -c /var/run/knot-resolver -d 1000"
# Knot Resolver daemon
sh -c "/usr/sbin/kresd $var"
# process foreground
tail -f /dev/null