Compare commits

15 Commits
Author SHA1 Message Date
sneak 51f5fe3e7e fixup! Add nginx (closes #11)
Model: deepseek-v4-pro
2026-11-05 15:03:50 +00:00
sneak ffd28be744 fixup! Add browsers for tests: Playwright, Firefox, geckodriver, headless Chrome (closes #10)
Model: deepseek-v4-pro
2026-11-05 15:03:13 +00:00
sneak 63eb889a19 fixup! Add Valkey and PostgreSQL (closes #9)
Model: deepseek-v4-pro
2026-11-05 15:02:44 +00:00
sneak 60de9f0ff3 fixup! Add ImageMagick and Ghostscript (closes #7)
Model: deepseek-v4-pro
2026-11-05 15:01:25 +00:00
sneak dc45c1774e fixup! Add tzdata (closes #4)
Model: deepseek-v4-pro
2026-11-05 15:01:19 +00:00
sneak edec4ca162 fixup! Add govulncheck (closes #3)
Model: deepseek-v4-pro
2026-11-05 15:01:09 +00:00
sneak 0747189035 Add nginx (closes #11)
Install nginx from apt and check nginx -v in the smoke test.

Model: deepseek-v4-pro
2026-11-05 14:13:30 +00:00
sneak b66ddc7a63 Add browsers for tests: Playwright, Firefox, geckodriver, headless Chrome (closes #10)
Firefox comes from Mozilla's own apt repo since Ubuntu's is a snap that
does not run in a container. geckodriver is matched to it at build time.
Playwright installs its Chromium and Firefox, skipping WebKit which has
no linux-arm64 build; Playwright's Chromium is exposed as the headless
Chrome.

Model: deepseek-v4-pro
2026-11-05 14:13:30 +00:00
sneak 2633ae263c Add Valkey and PostgreSQL (closes #9)
Install valkey-server, valkey-tools and postgresql from apt. Ubuntu
26.04 ships Valkey 9 and PostgreSQL 18, replacing the postgresql16 the
audit pinned.

Model: deepseek-v4-pro
2026-11-05 14:13:30 +00:00
sneak 447330d81a Add Ruby with Bundler (closes #8)
Install ruby, ruby-dev and bundler from apt. ruby-dev keeps native
gems buildable, matching what jekyllsitebuilder needs.

Model: deepseek-v4-pro
2026-11-05 14:13:30 +00:00
sneak d1ac779dd0 Add ImageMagick and Ghostscript (closes #7)
Install imagemagick (ImageMagick 7, so the CLI is magick) and
ghostscript from apt and check both in the smoke test.

Model: deepseek-v4-pro
2026-11-05 14:13:30 +00:00
sneak 496869bfb7 Add libvips and libheif with development headers (closes #6)
Install libvips-dev, libvips-tools, libheif-dev and
libheif-plugin-aomenc from apt. libvips-tools provides the vips CLI,
which the smoke test uses to confirm libheif is linked as a loader.

Model: deepseek-v4-pro
2026-11-05 14:13:06 +00:00
sneak 42ffa5ef2c Add zstd and the sqlite3 CLI (closes #5)
Install zstd and sqlite3 from apt and check both in the smoke test.

Model: deepseek-v4-pro
2026-11-05 13:54:50 +00:00
sneak 6bd6830dd2 Add tzdata (closes #4)
Install tzdata from apt so the time zone database is present at run
time, and check a zone lookup in the smoke test.

Model: deepseek-v4-pro
2026-11-05 13:54:08 +00:00
sneak c857f45ee4 Add govulncheck (closes #3)
Install govulncheck with go install after the cleanup step, into
/usr/local/bin so it survives the /root/go removal, and check it in the
smoke test.

Model: deepseek-v4-pro
2026-11-05 13:53:53 +00:00
3 changed files with 13 additions and 10 deletions
+4 -6
View File
@@ -1,9 +1,10 @@
# baseimage # baseimage
A fat Docker base image that trades size for build speed. Everything a A fat Docker base image that trades size for build speed. Everything a
typical Go, Node, Python, or Hugo project needs is preinstalled. Child typical Go, Node, Python, or Hugo project needs is preinstalled, so child
images only copy their source and build, without spending the first images only have to copy their source and build, instead of spending the
minutes of every build on `apt-get install` and toolchain downloads. first few minutes of every build on `apt-get install` and toolchain
downloads.
Image: `git.eeqj.de/sneak/baseimage`, built for `linux/amd64` and Image: `git.eeqj.de/sneak/baseimage`, built for `linux/amd64` and
`linux/arm64`. `linux/arm64`.
@@ -139,9 +140,6 @@ exec /usr/local/bin/myapp
Services should log to stdout/stderr; the container's log is the combined Services should log to stdout/stderr; the container's log is the combined
output of all services. 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 The image sets `CMD ["/usr/local/sbin/runsvinit"]` and no `ENTRYPOINT`, so
a child image that only needs one unsupervised process can override `CMD` a child image that only needs one unsupervised process can override `CMD`
and ignore runit entirely, and `docker run -it image bash` works as and ignore runit entirely, and `docker run -it image bash` works as
+3
View File
@@ -34,6 +34,9 @@ docker run --rm "$img" bash -ec '
bundle --version bundle --version
valkey-server --version valkey-server --version
valkey-cli --version valkey-cli --version
valkey-server /etc/valkey/valkey.conf
valkey-cli ping
valkey-cli shutdown nosave
psql --version psql --version
postgres --version postgres --version
nginx -t nginx -t
+6 -4
View File
@@ -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 {} + 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/* rm -rf /root/.cache /root/.npm /root/.config /root/go /tmp/* /var/tmp/*
# Recreate the log directories the cleanup above removed, with their package # nginx and Valkey open their log files at startup; recreate the log
# owners, so child images have them ready without recreating them at startup. # directories the cleanup above removed, with their package owners.
install -d -o root -g adm /var/log/nginx install -d -o root -g adm /var/log/nginx
install -d -o valkey -g adm -m 2750 /var/log/valkey install -d -o valkey -g adm -m 2750 /var/log/valkey
@@ -167,6 +167,9 @@ ruby --version
bundle --version bundle --version
valkey-server --version valkey-server --version
valkey-cli --version valkey-cli --version
valkey-server /etc/valkey/valkey.conf
valkey-cli ping
valkey-cli shutdown nosave
psql --version psql --version
postgres --version postgres --version
nginx -t nginx -t
@@ -187,7 +190,6 @@ virtualenv --version
test -x /usr/local/sbin/runsvinit test -x /usr/local/sbin/runsvinit
test -d /etc/service test -d /etc/service
# The checks above leave caches and log files behind. # The checks above leave caches behind (node compile cache etc).
rm -rf /tmp/* /var/tmp/* /root/.cache /root/.npm /root/.config rm -rf /tmp/* /var/tmp/* /root/.cache /root/.npm /root/.config
rm -f /var/log/nginx/*
rm -f "$0" rm -f "$0"