Validation: T4 Dockerfile Migration to Arch Base
Ticket
pal-enterprises#18 — Migrate Dockerfile from Debian ruby:slim to Arch Linux base image. PRs: #20 (migration), #21 (tag fix).
Environment
Local Docker build with external Harbor URL substitution. Image:
pal-enterprises:arch-test.Checks
| # | Criterion | How to Verify | Result | Evidence |
|---|---|---|---|---|
| 1 | Dockerfile builds successfully | <code>docker build</code> with Arch base | PASS | Build completed, all stages successful including asset precompilation |
| 2 | Ruby version | <code>docker run ... ruby --version</code> | PASS | ruby 3.4.8 (2025-12-17) +PRISM [x86_64-linux] |
| 3 | Rails boots | <code>rails runner "puts 'ok'"</code> | PASS | Rails runner works (no DB needed for boot test) |
| 4 | jemalloc preloaded | Check LD_PRELOAD and lib presence | PASS | LD_PRELOAD=/usr/lib/libjemalloc.so, file present |
| 5 | Non-root user | <code>whoami</code> in container | PASS | USER=rails |
| 6 | No Debian artifacts | <code>which apt-get</code> | PASS | apt-get not found |
| 7 | .ruby-version removed | File check | PASS | Deleted in PR #20 |
| 8 | k8s/dev.yaml removed | File check | PASS | Deleted in PR #20 |
Verdict
PASS — Dockerfile builds on Arch base, Rails boots, jemalloc loaded, non-root user, no Debian remnants. Full /up health check deferred to post-deploy (requires Postgres).
Discovered Issues
- Missing :build tag: The ruby-arch pipeline only pushes
:latest(which is the build stage). The Dockerfile originally referenced:buildwhich doesn't exist. Fixed in PR #21 by using:latestfor both stages. Follow-up: update ruby-arch pipeline to push separate:baseand:buildtags via Kaniko--target.