* [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script
@ 2024-07-31 18:13 Fiona Klute via buildroot
2024-07-31 18:13 ` [Buildroot] [PATCH v2 2/2] package/docker-engine: add wrapper script for logging to syslog Fiona Klute via buildroot
2024-08-15 12:53 ` [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script Thomas Petazzoni via buildroot
0 siblings, 2 replies; 3+ messages in thread
From: Fiona Klute via buildroot @ 2024-07-31 18:13 UTC (permalink / raw)
To: buildroot; +Cc: Thomas Petazzoni, Christian Stewart, Fiona Klute (WIWA)
From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
This brings the dockerd init script in line with the standard
Buildroot init script pattern.
Reload using SIGHUP is also supported now, note that the Docker
documentation cautions that not all parameters can be changed at
runtime (without a full restart).
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
---
Changes v1 -> v2:
* drop wait loop for startup
.checkpackageignore | 1 -
package/docker-engine/S60dockerd | 88 +++++++++++++++++++++-----------
2 files changed, 59 insertions(+), 30 deletions(-)
diff --git a/.checkpackageignore b/.checkpackageignore
index 70a2e88462..abf8b4c772 100644
--- a/.checkpackageignore
+++ b/.checkpackageignore
@@ -452,7 +452,6 @@ package/dmalloc/0004-Makefile-use-the-configure-detected-or-user-supplied.patch
package/dmalloc/0005-configure-use-LD-instead-of-hard-coding-ld.patch lib_patch.Upstream
package/dmraid/0001-fix-compilation-under-musl.patch lib_patch.Upstream
package/dmraid/S20dmraid lib_sysv.Variables
-package/docker-engine/S60dockerd Shellcheck lib_sysv.Indent lib_sysv.Variables
package/docopt-cpp/0001-only-build-one-target-use-BUILD_SHARED_LIBS-where-appropriate.patch lib_patch.Upstream
package/domoticz/S99domoticz Shellcheck
package/dovecot/0001-auth-Fix-handling-passdbs-with-identical-driver-args.patch lib_patch.Upstream
diff --git a/package/docker-engine/S60dockerd b/package/docker-engine/S60dockerd
index def8bea149..aab50d84d4 100644
--- a/package/docker-engine/S60dockerd
+++ b/package/docker-engine/S60dockerd
@@ -1,38 +1,68 @@
#!/bin/sh
-NAME=dockerd
-DAEMON=/usr/bin/$NAME
-PIDFILE=/var/run/$NAME.pid
-DAEMON_ARGS=""
-
-[ -r /etc/default/$NAME ] && . /etc/default/$NAME $1
-
-do_start() {
- echo -n "Starting $NAME: "
- start-stop-daemon --start --quiet --background --make-pidfile \
- --pidfile $PIDFILE --exec $DAEMON -- $DAEMON_ARGS \
- && echo "OK" || echo "FAIL"
+DAEMON="dockerd"
+PIDFILE="/var/run/$DAEMON.pid"
+
+DOCKERD_ARGS=""
+
+# shellcheck source=/dev/null
+[ -r "/etc/default/$DAEMON" ] && . "/etc/default/$DAEMON"
+
+start() {
+ printf 'Starting %s: ' "$DAEMON"
+ # shellcheck disable=SC2086 # we need word splitting for DOCKERD_ARGS
+ start-stop-daemon --start --background --pidfile "$PIDFILE" \
+ --exec "/usr/bin/$DAEMON" \
+ -- --pidfile "$PIDFILE" $DOCKERD_ARGS
+ status=$?
+ if [ "$status" -eq 0 ]; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ return "$status"
+}
+
+stop() {
+ printf 'Stopping %s: ' "$DAEMON"
+ start-stop-daemon --stop --pidfile "$PIDFILE" --exec "/usr/bin/$DAEMON"
+ status=$?
+ if [ "$status" -eq 0 ]; then
+ echo "OK"
+ else
+ echo "FAIL"
+ return "$status"
+ fi
+ while start-stop-daemon --stop --test --quiet --pidfile "$PIDFILE" \
+ --exec "/usr/bin/$DAEMON"; do
+ sleep 0.1
+ done
+ rm -f "$PIDFILE"
+ return "$status"
+}
+
+restart() {
+ stop
+ start
}
-do_stop() {
- echo -n "Stopping $NAME: "
- start-stop-daemon --stop --quiet --pidfile $PIDFILE \
- && echo "OK" || echo "FAIL"
+reload() {
+ printf "Reloading %s config: " "$DAEMON"
+ start-stop-daemon --stop --signal HUP -q --pidfile "$PIDFILE" \
+ --exec "/usr/bin/$DAEMON"
+ status=$?
+ if [ "$status" -eq 0 ]; then
+ echo "OK"
+ else
+ echo "FAIL"
+ fi
+ return "$status"
}
case "$1" in
- start)
- do_start
- ;;
- stop)
- do_stop
- ;;
- restart)
- do_stop
- sleep 1
- do_start
- ;;
+ start|stop|restart|reload)
+ "$1";;
*)
- echo "Usage: $0 {start|stop|restart}"
- exit 1
+ echo "Usage: $0 {start|stop|restart|reload}"
+ exit 1
esac
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
* [Buildroot] [PATCH v2 2/2] package/docker-engine: add wrapper script for logging to syslog
2024-07-31 18:13 [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script Fiona Klute via buildroot
@ 2024-07-31 18:13 ` Fiona Klute via buildroot
2024-08-15 12:53 ` [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script Thomas Petazzoni via buildroot
1 sibling, 0 replies; 3+ messages in thread
From: Fiona Klute via buildroot @ 2024-07-31 18:13 UTC (permalink / raw)
To: buildroot; +Cc: Thomas Petazzoni, Christian Stewart, Fiona Klute (WIWA)
From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
Dockerd logs only to stdout/stderr [1], which is lost with
--background. The upstream SysV init script [2] logs to a file by
passing --no-close to start-stop-daemon and redirecting the output,
but that option is not supported by Busybox' start-stop-daemon.
The wrapper script added with this commit captures the output of
dockerd (or whatever other command it is given) and forwards each line
to syslog.
[1] https://github.com/moby/moby/discussions/48260
[2] https://github.com/moby/moby/blob/50c3d19179e69f9e7ff01f688c4dbf32c5129ced/contrib/init/sysvinit-debian/docker
Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
---
Changes v1 -> v2:
* slightly clarify comment about wrapper in init script
package/docker-engine/S60dockerd | 8 ++++++--
package/docker-engine/docker-engine.mk | 2 ++
package/docker-engine/dockerd-syslog-wrapper.sh | 4 ++++
3 files changed, 12 insertions(+), 2 deletions(-)
create mode 100644 package/docker-engine/dockerd-syslog-wrapper.sh
diff --git a/package/docker-engine/S60dockerd b/package/docker-engine/S60dockerd
index aab50d84d4..dda6dc7474 100644
--- a/package/docker-engine/S60dockerd
+++ b/package/docker-engine/S60dockerd
@@ -10,10 +10,14 @@ DOCKERD_ARGS=""
start() {
printf 'Starting %s: ' "$DAEMON"
+ # Dockerd logs only to stdout/stderr, which is lost with
+ # --background. The wrapper script runs the given command
+ # (after "--", including dockerd) and forwards stdout/stderr
+ # to syslog.
# shellcheck disable=SC2086 # we need word splitting for DOCKERD_ARGS
start-stop-daemon --start --background --pidfile "$PIDFILE" \
- --exec "/usr/bin/$DAEMON" \
- -- --pidfile "$PIDFILE" $DOCKERD_ARGS
+ --exec /usr/libexec/dockerd-syslog-wrapper.sh \
+ -- "/usr/bin/$DAEMON" --pidfile "$PIDFILE" $DOCKERD_ARGS
status=$?
if [ "$status" -eq 0 ]; then
echo "OK"
diff --git a/package/docker-engine/docker-engine.mk b/package/docker-engine/docker-engine.mk
index c7c51c5ef5..268b851520 100644
--- a/package/docker-engine/docker-engine.mk
+++ b/package/docker-engine/docker-engine.mk
@@ -72,6 +72,8 @@ endef
define DOCKER_ENGINE_INSTALL_INIT_SYSV
$(INSTALL) -D -m 755 package/docker-engine/S60dockerd \
$(TARGET_DIR)/etc/init.d/S60dockerd
+ $(INSTALL) -D -m 755 package/docker-engine/dockerd-syslog-wrapper.sh \
+ $(TARGET_DIR)/usr/libexec/dockerd-syslog-wrapper.sh
endef
define DOCKER_ENGINE_USERS
diff --git a/package/docker-engine/dockerd-syslog-wrapper.sh b/package/docker-engine/dockerd-syslog-wrapper.sh
new file mode 100644
index 0000000000..3d6a80a739
--- /dev/null
+++ b/package/docker-engine/dockerd-syslog-wrapper.sh
@@ -0,0 +1,4 @@
+#!/bin/sh
+"${@}" 2>&1 | while read -r LINE; do
+ logger -t "$(basename "${1}")" "$LINE";
+done
--
2.45.2
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply related [flat|nested] 3+ messages in thread
* Re: [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script
2024-07-31 18:13 [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script Fiona Klute via buildroot
2024-07-31 18:13 ` [Buildroot] [PATCH v2 2/2] package/docker-engine: add wrapper script for logging to syslog Fiona Klute via buildroot
@ 2024-08-15 12:53 ` Thomas Petazzoni via buildroot
1 sibling, 0 replies; 3+ messages in thread
From: Thomas Petazzoni via buildroot @ 2024-08-15 12:53 UTC (permalink / raw)
To: Fiona Klute via buildroot; +Cc: Fiona Klute, Christian Stewart
On Wed, 31 Jul 2024 20:13:33 +0200
Fiona Klute via buildroot <buildroot@buildroot.org> wrote:
> From: "Fiona Klute (WIWA)" <fiona.klute@gmx.de>
>
> This brings the dockerd init script in line with the standard
> Buildroot init script pattern.
>
> Reload using SIGHUP is also supported now, note that the Docker
> documentation cautions that not all parameters can be changed at
> runtime (without a full restart).
>
> Signed-off-by: Fiona Klute (WIWA) <fiona.klute@gmx.de>
> ---
> Changes v1 -> v2:
> * drop wait loop for startup
Thanks, both patches applied to the next branch!
Thomas
--
Thomas Petazzoni, CTO, Bootlin
Embedded Linux and Kernel engineering
https://bootlin.com
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2024-08-15 12:54 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-31 18:13 [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script Fiona Klute via buildroot
2024-07-31 18:13 ` [Buildroot] [PATCH v2 2/2] package/docker-engine: add wrapper script for logging to syslog Fiona Klute via buildroot
2024-08-15 12:53 ` [Buildroot] [PATCH v2 1/2] package/docker-engine: rewrite dockerd init script Thomas Petazzoni via buildroot
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox