Prebuilt public Docker images on ghcr.io/cedricfarinazzo. Built once, reused everywhere — so downstream projects don't waste minutes recompiling heavy native dependencies.
- Multi-arch: every image ships
linux/amd64andlinux/arm64in the same manifest. Pull works the same on Intel laptops, Apple Silicon, and ARM cloud runners. - Matrix builds: one tag per
(version × distro × interpreter)combo, plus rolling aliases (latest,latest-<distro>,latest-py<py>, …) so callers can pin as tight or as loose as they want. - Nightly rebuilds: every image is rebuilt at 04:00 UTC with
--no-cache --pullso upstream base-image CVEs land in anightly-*tag without waiting for a release. - Per-image semver: each image has its own version and changelog. Tags are immutable; rolling aliases move forward.
- Narrow-COPY friendly: heavy bits live in known paths (e.g.
/usr/lib/libta_lib.*) so downstreamDockerfiles can pull just what they need withCOPY --from=....
| Image | What | Quick pull |
|---|---|---|
py-ta-lib |
Python 3.12 / 3.13 / 3.14 + TA-Lib C library 0.6.4 + build toolchain. The ta-lib Python binding is not preinstalled (release cadence is independent of the C lib — pin it yourself). Debian-slim and Alpine variants. |
docker pull ghcr.io/cedricfarinazzo/py-ta-lib:latest |
tftp-hpa |
TFTP server (tftp-hpa) on Alpine 3.23. Multi-arch. Volume at /data, exposes UDP 69. |
docker pull ghcr.io/cedricfarinazzo/tftp-hpa:latest |
git-server |
Self-hosted git server: gitolite ACLs over SSH and nginx smart-HTTP. No web UI, transport only. Alpine, supervised by s6-overlay. Multi-arch. Exposes 22 + 80. | docker pull ghcr.io/cedricfarinazzo/git-server:latest |
rover |
Apollo Rover CLI + Supergraph composition plugin baked in. Debian-slim. Multi-arch. Drop-in for federated GraphQL stack bring-up — no per-deploy CLI download. | docker pull ghcr.io/cedricfarinazzo/rover:latest |
actions-runner |
GitHub Actions self-hosted runner extending the official actions/actions-runner base with Docker CLI, Node.js 22, yq, and a full build toolchain. Multi-arch. |
docker pull ghcr.io/cedricfarinazzo/actions-runner:latest |
Each image directory has its own README.md with the full tag list, supported build args, and downstream recipes.
FROM ghcr.io/cedricfarinazzo/py-ta-lib:latest
COPY . /app
WORKDIR /app
RUN pip install -r requirements.txtdocker pull ghcr.io/cedricfarinazzo/py-ta-lib:1.0.0-py3.13-ta0.6.4-alpineFROM python:3.14-slim
RUN apt-get update && apt-get install -y --no-install-recommends build-essential && rm -rf /var/lib/apt/lists/*
COPY --from=ghcr.io/cedricfarinazzo/py-ta-lib:py3.14-ta0.6.4-debian /usr/lib/libta_lib.* /usr/lib/
COPY --from=ghcr.io/cedricfarinazzo/py-ta-lib:py3.14-ta0.6.4-debian /usr/include/ta-lib /usr/include/ta-lib
RUN pip install --no-cache-dir ta-lib==0.6.7Every image follows the same scheme:
- Immutable per combo:
<semver>-<axis1>-<axis2>-...(e.g.1.0.0-py3.14-ta0.6.4-debian). - Rolling aliases:
latest,latest-<distro>,latest-py<py>, semver truncations (1.0,1), and per-combo rollers. - Nightly:
nightly,nightly-<distro>,nightly-py<py>, plus dated immutable snapshotsnightly-YYYYMMDD-.... Nightly tags never overwrite semver tags.
The image's own README enumerates every alias.
Open an issue on this repo with the failing pull command, the image tag, and docker buildx imagetools inspect output for the affected tag.
MIT — see LICENSE.
CLAUDE.md— repo layout, conventions, full release pipeline..github/workflows/README.md— CI workflow reference.<image>/— per-image source (Dockerfiles,versions.json, README).