Skip to content

Remove Debian Docker variant, consolidate to Alpine-only (#231)#244

Merged
nitrobass24 merged 1 commit intodevelopfrom
feat/alpine-only-docker
Mar 12, 2026
Merged

Remove Debian Docker variant, consolidate to Alpine-only (#231)#244
nitrobass24 merged 1 commit intodevelopfrom
feat/alpine-only-docker

Conversation

@nitrobass24
Copy link
Owner

@nitrobass24 nitrobass24 commented Mar 12, 2026

Summary

  • Remove Dockerfile.alpine and promote Alpine as the sole Dockerfile
  • Simplify CI workflow by removing the variant matrix (Debian/Alpine), consolidating artifact names and metadata steps
  • Update Makefile shell target from /bin/bash to /bin/sh (Alpine uses ash)
  • Add BuildKit cache mount for npm to speed up frontend builds

Closes #231

Test plan

  • CI builds the Docker image successfully on both amd64 and arm64
  • Container starts and serves the web UI
  • Verify image size is ~45 MB (Alpine baseline)
  • make shell works correctly with /bin/sh

🤖 Generated with Claude Code

Summary by CodeRabbit

  • Chores
    • Simplified CI/CD pipeline by consolidating build variants into a single, unified configuration
    • Migrated container images from Debian to Alpine Linux for improved efficiency and reduced image size
    • Optimized Docker build caching and removed unnecessary packages to streamline container builds

Drop the Debian Dockerfile and promote Alpine as the single image.
This simplifies the CI pipeline from 4 matrix builds (2 variants x
2 arches) down to 2 (amd64 + arm64), removes the `-alpine` tag
suffix, and eliminates duplicate metadata steps in the publish job.

- Delete `Dockerfile` (Debian) and rename `Dockerfile.alpine` to `Dockerfile`
- Remove variant matrix from build, build-arm64, and publish CI jobs
- Simplify artifact names from `digests-{variant}-{arch}` to `digests-{arch}`
- Consolidate four metadata extraction steps into two (release + develop)
- Tags now use `latest`/`X.Y.Z`/`develop` without `-alpine` suffix
- Add BuildKit cache mount for npm ci (`--mount=type=cache,target=/root/.npm`)
- HEALTHCHECK already uses wget (Alpine-native) instead of python urllib
- Update Makefile shell target from /bin/bash to /bin/sh

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: ASSERTIVE

Plan: Pro

Run ID: a779a9e9-a4f0-41d1-8def-14b758474aaa

📥 Commits

Reviewing files that changed from the base of the PR and between d8cb576 and c744316.

📒 Files selected for processing (4)
  • .github/workflows/ci.yml
  • Makefile
  • src/docker/build/docker-image/Dockerfile
  • src/docker/build/docker-image/Dockerfile.alpine
💤 Files with no reviewable changes (1)
  • src/docker/build/docker-image/Dockerfile.alpine

📝 Walkthrough

Walkthrough

The pull request consolidates the Docker build pipeline from separate Debian and Alpine variants into a single Alpine-based approach. Changes include removing the Dockerfile.alpine file, simplifying the CI workflow by eliminating matrix strategy configurations, and optimizing the unified Dockerfile with Alpine-specific base images, caching strategies (npm cache mount), and dependency management. The shell in the Makefile dev container is switched from bash to sh.

Changes

Cohort / File(s) Summary
CI Workflow Consolidation
.github/workflows/ci.yml
Removed matrix strategy from build and publish jobs; eliminated per-variant (debian/alpine) artifact naming and metadata extraction steps; simplified artifact handling to architecture-based scopes (amd64/arm64); consolidated build conditions and cache sources; unified publish job naming and cross-job success checks.
Dockerfile Alpine Migration
src/docker/build/docker-image/Dockerfile
Replaced Debian-based stages (bookworm-slim) with Alpine equivalents (alpine, node:22-alpine, python:3.12-alpine); added npm cache mount for layer efficiency; implemented aggressive Python cache and stdlib cleanup; switched runtime dependency installation from apt-get to apk; updated HEALTHCHECK from Python urllib to wget.
Removed Debian Variant
src/docker/build/docker-image/Dockerfile.alpine
Deleted entire Alpine Dockerfile definition (113 lines); consolidation into main Dockerfile replaces this variant-specific file.
Shell Configuration
Makefile
Changed interactive dev container shell from /bin/bash to /bin/sh.

Estimated code review effort

🎯 3 (Moderate) | ⏱️ ~20 minutes

Possibly related PRs

Poem

🐰 Farewell Debian, Alpine takes the stage,
One image slim—the future's turning page!
No matrix splits, no variants to keep,
Just alpine roots, lean builds, and lighter sleep. 🏔️

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title accurately and concisely describes the primary change: removing the Debian Docker variant and consolidating to Alpine-only, matching the main objective of the PR.
Linked Issues check ✅ Passed The PR addresses all major coding requirements from issue #231: removes Debian Dockerfile, simplifies CI matrix, updates artifact naming, adds npm cache mount, updates HEALTHCHECK to wget, and updates Makefile shell to /bin/sh.
Out of Scope Changes check ✅ Passed All changes are directly related to consolidating to Alpine-only and CI optimization. The Makefile shell change, Dockerfile updates, and CI workflow simplification are all necessary to achieve the stated objectives.
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.

✏️ Tip: You can configure your own custom pre-merge checks in the settings.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Post copyable unit tests in a comment
  • Commit unit tests in branch feat/alpine-only-docker
📝 Coding Plan
  • Generate coding plan for human review comments

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands and usage tips.

@nitrobass24
Copy link
Owner Author

@CodeRabbit review

@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

1 similar comment
@coderabbitai
Copy link

coderabbitai bot commented Mar 12, 2026

✅ Actions performed

Review triggered.

Note: CodeRabbit is an incremental review system and does not re-review already reviewed commits. This command is applicable only when automatic reviews are paused.

@nitrobass24 nitrobass24 merged commit a0e0247 into develop Mar 12, 2026
8 checks passed
@nitrobass24 nitrobass24 deleted the feat/alpine-only-docker branch March 12, 2026 19:12
nitrobass24 added a commit that referenced this pull request Mar 12, 2026
Drop the Debian Dockerfile and promote Alpine as the single image.
This simplifies the CI pipeline from 4 matrix builds (2 variants x
2 arches) down to 2 (amd64 + arm64), removes the `-alpine` tag
suffix, and eliminates duplicate metadata steps in the publish job.

- Delete `Dockerfile` (Debian) and rename `Dockerfile.alpine` to `Dockerfile`
- Remove variant matrix from build, build-arm64, and publish CI jobs
- Simplify artifact names from `digests-{variant}-{arch}` to `digests-{arch}`
- Consolidate four metadata extraction steps into two (release + develop)
- Tags now use `latest`/`X.Y.Z`/`develop` without `-alpine` suffix
- Add BuildKit cache mount for npm ci (`--mount=type=cache,target=/root/.npm`)
- HEALTHCHECK already uses wget (Alpine-native) instead of python urllib
- Update Makefile shell target from /bin/bash to /bin/sh

Co-authored-by: Claude Opus 4.6 <noreply@anthropic.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant