Validation: T4 Dockerfile Migration to Arch Base

validation-18-2026-05-10 Doc

validation pass

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 :build which doesn't exist. Fixed in PR #21 by using :latest for both stages. Follow-up: update ruby-arch pipeline to push separate :base and :build tags via Kaniko --target.