The Dockerfile builds pixad on one Alpine release and runs it on an older one. The test and build stages use golang:1.25.4-alpine, which is Alpine 3.22 and has libvips 8.16. The runtime stage is alpine:3.21, which has libvips 8.15. So pixad is compiled against libvips 8.16 headers and runs against an older libvips, and the same goes for musl and the other C libraries. A function or struct that changed between the two releases can fail at startup or behave wrongly while the image runs. The tests run against 8.16, so they do not catch it. The review of #226 found this.
Definition of done
The runtime stage uses the same Alpine release as the stage that builds pixad. Recommended: alpine:3.22, pinned by digest with the dated comment the Dockerfile uses for its other images. The test, build and runtime stages then have the same libvips.
The runtime image starts and is healthy (script/docker-smoke). pixad in it resizes a JPEG and converts it to AVIF, and to JPEG XL once JPEG XL is a format on next.
README.md changes only where it names the runtime image's Alpine or libvips version, if it does.
Model: opus-5-5
The `Dockerfile` builds pixad on one Alpine release and runs it on an older one. The test and build stages use `golang:1.25.4-alpine`, which is Alpine 3.22 and has libvips 8.16. The runtime stage is `alpine:3.21`, which has libvips 8.15. So pixad is compiled against libvips 8.16 headers and runs against an older libvips, and the same goes for musl and the other C libraries. A function or struct that changed between the two releases can fail at startup or behave wrongly while the image runs. The tests run against 8.16, so they do not catch it. The review of https://git.eeqj.de/sneak/pixa/pulls/226 found this.
## Definition of done
- The runtime stage uses the same Alpine release as the stage that builds pixad. Recommended: `alpine:3.22`, pinned by digest with the dated comment the `Dockerfile` uses for its other images. The test, build and runtime stages then have the same libvips.
- The runtime image starts and is healthy (`script/docker-smoke`). pixad in it resizes a JPEG and converts it to AVIF, and to JPEG XL once JPEG XL is a format on `next`.
- `README.md` changes only where it names the runtime image's Alpine or libvips version, if it does.
Model: opus-5-5
clawbot
self-assigned this 2026-10-08 06:19:44 +02:00
#231 moves the runtime stage of the Dockerfile to alpine:3.22, pinned by digest, so it has the libvips (8.16) that pixad is built against, and corrects the libvips version in README.md.
Model: opus-5-5
https://git.eeqj.de/sneak/pixa/pulls/231 moves the runtime stage of the `Dockerfile` to `alpine:3.22`, pinned by digest, so it has the libvips (8.16) that pixad is built against, and corrects the libvips version in `README.md`.
Model: opus-5-5
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
The
Dockerfilebuilds pixad on one Alpine release and runs it on an older one. The test and build stages usegolang:1.25.4-alpine, which is Alpine 3.22 and has libvips 8.16. The runtime stage isalpine:3.21, which has libvips 8.15. So pixad is compiled against libvips 8.16 headers and runs against an older libvips, and the same goes for musl and the other C libraries. A function or struct that changed between the two releases can fail at startup or behave wrongly while the image runs. The tests run against 8.16, so they do not catch it. The review of #226 found this.Definition of done
alpine:3.22, pinned by digest with the dated comment theDockerfileuses for its other images. The test, build and runtime stages then have the same libvips.script/docker-smoke). pixad in it resizes a JPEG and converts it to AVIF, and to JPEG XL once JPEG XL is a format onnext.README.mdchanges only where it names the runtime image's Alpine or libvips version, if it does.Model: opus-5-5
#231 moves the runtime stage of the
Dockerfiletoalpine:3.22, pinned by digest, so it has the libvips (8.16) that pixad is built against, and corrects the libvips version inREADME.md.Model: opus-5-5