Skip to content

Latest commit

 

History

History
112 lines (78 loc) · 3.42 KB

File metadata and controls

112 lines (78 loc) · 3.42 KB

Makerprism Containers

Reusable container images for Makerprism engineering workflows.

This repository publishes versioned images to GitHub Container Registry (GHCR) for:

  • GitHub Actions CI jobs across Makerprism repositories
  • Backend Docker builds that need a stable toolchain base

Published Images

ghcr.io/makerprism/containers/dev-base (Recommended)

Purpose: unified image for CI pipelines, coding agents, and local development.

Includes:

  • Alpine Linux 3.22
  • Node.js 20.20.0
  • pnpm 10
  • dune 3.23.0 (built from the official release tarball during image build)
  • build toolchain (make, gcc, musl-dev via build-base)
  • common CI tools (git, curl, jq, unzip, etc.)
  • Claude Code CLI (for coding agents)
  • GitHub CLI (gh)

Version source: images/dev-base/VERSION

ghcr.io/makerprism/containers/backend-builder-base

Purpose: generic backend Docker builder base for static OCaml/PostgreSQL-linked binaries.

Includes:

  • Alpine 3.20
  • OCaml build deps + static libs
  • dune 3.23.0 (built from the official release tarball during image build)
  • PostgreSQL static client libraries built from source (v16.3)

Version source: images/backend-builder-base/VERSION

ghcr.io/makerprism/ci-node-pnpm-dune (Deprecated)

⚠️ Deprecated - Use dev-base instead.

This image is no longer built. Existing tags remain available but will not receive updates.

Tagging Policy

Each image is published with:

  • exact version tag from VERSION (recommended for consumers)
  • major alias tag (e.g. :1)
  • immutable commit tag (:sha-<gitsha>)

For production-grade consumers, pinning by digest is recommended.

Versioning

This project follows Semantic Versioning 2.0.0:

  • MAJOR: Incompatible changes that break existing consumers
  • MINOR: Backwards-compatible additions or new features
  • PATCH: Backwards-compatible bug fixes

Publishing

Workflow: .github/workflows/build-images.yml

Triggers:

  • push to main when image/workflow files change
  • pull requests for validation builds (no publish)
  • manual run (workflow_dispatch)

Images are published to repository-scoped GHCR paths under ghcr.io/makerprism/containers/.... The workflow also publishes the previous org-scoped paths under ghcr.io/makerprism/... for existing consumers, but new CI consumers should use the repository-scoped paths.

Visibility

Repository-scoped image paths are the public distribution path. They are created by the public makerprism/containers repository workflow, which keeps package visibility tied to this repository instead of depending on a separate GHCR visibility toggle.

Why GHCR first (vs Docker Hub)

GHCR is currently preferred because:

  • native GitHub Actions auth with GITHUB_TOKEN
  • straightforward org-private package access control
  • no extra Docker Hub credential handling for CI

Docker Hub mirroring can be added later as an additional publish target once images are stable.

Consumer Examples

GitHub Actions job container

jobs:
  build_frontend:
    runs-on: ubuntu-latest
    container:
      image: ghcr.io/makerprism/containers/dev-base:3
    steps:
      - uses: actions/checkout@v4
      - run: pnpm --version && dune --version

Dockerfile backend builder base

FROM ghcr.io/makerprism/containers/backend-builder-base:3 AS builder
WORKDIR /app
COPY . .
RUN dune build --profile=release bin/main.exe