From 593e623cfffeac67dd4a057b3a640d91533ffb9d Mon Sep 17 00:00:00 2001 From: sneak Date: Thu, 5 Nov 2026 19:51:53 +0000 Subject: [PATCH] The base image never starts a service (closes #16) build.sh and bin/test used to start valkey-server and ping it to prove it runs; they now check it with valkey-server --version and valkey-cli --version, so the ping loop, shutdown, and the cleanup of the Valkey run's log files are gone. /var/log/valkey and /var/log/nginx keep their package owners and modes, and nginx -t stays. README states that Valkey, PostgreSQL and nginx are installed but never run. No package install starts a service: invoke-rc.d already denies every start, and no ENTRYPOINT or CMD starts one. Model: deepseek-v4-pro --- README.md | 10 ++++++---- bin/test | 3 --- build.sh | 9 ++------- 3 files changed, 8 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 0d3a182..464528b 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,9 @@ # baseimage A fat Docker base image that trades size for build speed. Everything a -typical Go, Node, Python, or Hugo project needs is preinstalled, so child -images only have to copy their source and build, instead of spending the -first few minutes of every build on `apt-get install` and toolchain -downloads. +typical Go, Node, Python, or Hugo project needs is preinstalled. Child +images only copy their source and build, without spending the first +minutes of every build on `apt-get install` and toolchain downloads. Image: `git.eeqj.de/sneak/baseimage`, built for `linux/amd64` and `linux/arm64`. @@ -140,6 +139,9 @@ exec /usr/local/bin/myapp Services should log to stdout/stderr; the container's log is the combined output of all services. +The image installs Valkey, PostgreSQL and nginx but never runs them; a child +image that wants one runs it as a service. + The image sets `CMD ["/usr/local/sbin/runsvinit"]` and no `ENTRYPOINT`, so a child image that only needs one unsupervised process can override `CMD` and ignore runit entirely, and `docker run -it image bash` works as diff --git a/bin/test b/bin/test index a94ea8d..59fe31e 100755 --- a/bin/test +++ b/bin/test @@ -34,9 +34,6 @@ docker run --rm "$img" bash -ec ' bundle --version valkey-server --version valkey-cli --version - valkey-server /etc/valkey/valkey.conf - ok=; for i in $(seq 1 50); do if valkey-cli ping 2>/dev/null | grep -q PONG; then ok=1; break; fi; sleep 0.1; done; [ -n "$ok" ] - valkey-cli shutdown nosave psql --version postgres --version nginx -t diff --git a/build.sh b/build.sh index 5c57002..244e37c 100755 --- a/build.sh +++ b/build.sh @@ -146,8 +146,8 @@ rm -rf /usr/share/doc /usr/share/man /usr/share/info /usr/share/lintian find /usr/share/locale -mindepth 1 -maxdepth 1 ! -name 'en*' ! -name 'locale.alias' -exec rm -rf {} + rm -rf /root/.cache /root/.npm /root/.config /root/go /tmp/* /var/tmp/* -# nginx and Valkey open their log files at startup; recreate the log -# directories the cleanup above removed, with their package owners. +# Recreate the log directories the cleanup above removed, with their package +# owners, so child images have them ready without recreating them at startup. install -d -o root -g adm /var/log/nginx install -d -o valkey -g adm -m 2750 /var/log/valkey @@ -167,9 +167,6 @@ ruby --version bundle --version valkey-server --version valkey-cli --version -valkey-server /etc/valkey/valkey.conf -ok=; for i in $(seq 1 50); do if valkey-cli ping 2>/dev/null | grep -q PONG; then ok=1; break; fi; sleep 0.1; done; [ -n "$ok" ] -valkey-cli shutdown nosave psql --version postgres --version nginx -t @@ -192,7 +189,5 @@ test -d /etc/service # The checks above leave caches and log files behind. rm -rf /tmp/* /var/tmp/* /root/.cache /root/.npm /root/.config -rm -f /var/log/valkey/* rm -f /var/log/nginx/* -install -d -o valkey -g adm -m 2750 /var/log/valkey rm -f "$0"