
न्यूनतम CVE-हार्डन कंटेनर छवि संग्रह
छोटे, कठोर कंटेनर इमेजेस, मुफ्त और MIT-लाइसेंस प्राप्त।
Chainguard के apko और Wolfi पैकेजों के साथ स्रोत से निर्मित, हर छह घंटे में पुनर्निर्मित।
हर इमेज cosign-signed है, एक SPDX SBOM प्रमाणन भेजता है, और SLSA स्तर 3 बिल्ड प्रोवनेंस रखता है। आप बिना किसी खाते के यह सब सत्यापित कर सकते हैं।
🌐 minimalcontainers.com पर पूरी सूची ब्राउज़ करें →
इमेज सूची · · ·
इन इमेजेस का उद्देश्य यह है कि आपको मुझ पर भरोसा करने की आवश्यकता नहीं है। एक को पुल करें, फिर स्वयं प्रोवनेंस जांचें:```bash
docker pull ghcr.io/rtvkiz/minimal-python:latest
gh attestation verify oci://ghcr.io/rtvkiz/minimal-python:latest --owner rtvkiz
cosign verify-attestation --type spdxjson
--certificate-identity-regexp='https://github.com/rtvkiz/minimal/'
--certificate-oidc-issuer='https://token.actions.githubusercontent.com'
ghcr.io/rtvkiz/minimal-python:latest
| jq -r '.payload | @base64d | fromjson | .predicate' > python-sbom.spdx.json
More verification recipes (cosign signature, SBOM, SLSA provenance) live in [`.github/SECURITY.md`](https://github.com/rtvkiz/minimal/blob/main/.github/SECURITY.md).
## `minimal` कैसे अलग है
| | minimal | Chainguard | Docker Hardened | Minimus / RapidFort |
|---|:---:|:---:|:---:|:---:|
| **लाइसेंस** | MIT | स्वामित्व | Apache-2.0 | स्वामित्व |
| **लागत** | $0 | ~$30k/इमेज/वर्ष | निःशुल्क + सशुल्क समर्थन | बिक्री कॉल |
| **खींचने के लिए प्रमाणीकरण** | नहीं | हाँ | हाँ | हाँ |
| **दर सीमाएँ** | कोई नहीं | हाँ | हाँ | हाँ |
| **बिल्ड रेसिपी सार्वजनिक** | हाँ, हर `melange.yaml` | नहीं | हाँ, Dockerfiles | नहीं |
| **Cosign sig + SBOM + SLSA L3** | हाँ | हाँ | हाँ | हाँ |
| **विक्रेता SLA, FedRAMP/STIG** | नहीं | हाँ (सशुल्क) | हाँ (सशुल्क) | हाँ (सशुल्क) |
`minimal` का उपयोग करें यदि आप बिना भुगतान या पंजीकरण के मजबूत इमेज चाहते हैं, यदि आप हर बिल्ड रेसिपी को शुरू से अंत तक पढ़ना चाहते हैं, या यदि आप अपने आंतरिक कैटलॉग में फोर्क करने के लिए एक कार्यशील टेम्पलेट चाहते हैं।
यह शायद सही विकल्प नहीं है यदि आपको विक्रेता अनुबंध, FedRAMP या STIG प्रत्यायन कागजी कार्रवाई, या पहले दिन पर हज़ार से अधिक इमेज चाहिए — ये वास्तविक चीजें हैं जिन्हें यह परियोजना हल करने का प्रयास नहीं करती।
## हर इमेज के साथ क्या आता है
- एक cosign keyless हस्ताक्षर, जो सार्वजनिक Rekor पारदर्शिता लॉग के विरुद्ध सत्यापन योग्य है।
- एक SPDX SBOM जो in-toto attestation के रूप में संलग्न है — हर पैकेज, संस्करण और लाइसेंस।
- SLSA v1.0 बिल्ड प्रोवेनेंस — क्रिप्टोग्राफिक प्रमाण कि किस वर्कफ़्लो, किस कमिट और किस रनर ने इमेज बनाई।
- एक दैनिक Grype स्कैन, जिसके परिणाम [सार्वजनिक कैटलॉग](https://minimalcontainers.com) और GitHub Security टैब में उपलब्ध हैं।
- मूल `linux/amd64` और `linux/arm64` बिल्ड।
- डिफ़ॉल्ट रूप से एक गैर-रूट उपयोगकर्ता (UID 65532), जब तक कि अपस्ट्रीम अन्यथा आग्रह न करे।
- जहाँ संभव हो कोई शेल नहीं — अधिकांश इमेज `/bin/sh` शिप नहीं करतीं।
- छह घंटे की पुनर्निर्माण आवृत्ति, ताकि Wolfi CVE पैच घंटों में लगें, दिनों में नहीं।
## उपलब्ध इमेज — कुल 57
| श्रेणी | गणना | मुख्य विशेषताएँ |
|---|---|---|
| **भाषाएँ और रनटाइम** | 9 | python, node-slim, bun, go, java, ruby, php, dotnet, deno |
| **डेटाबेस** | 5 | mysql, mariadb, postgres-slim, sqlite, opensearch |
| **कैश, कतारें, संदेशन** | 7 | redis-slim, valkey, memcached, kafka, rabbitmq, nats, mosquitto |
| **वेब सर्वर और प्रॉक्सी** | 6 | nginx, httpd, caddy, haproxy, traefik, envoy |
| **अवलोकनीयता** | 14 | prometheus, alertmanager, victoria-metrics, thanos, mimir, jaeger, loki, tempo, otelcol, fluent-bit, telegraf, node-exporter, blackbox-exporter, pushgateway |
| **बुनियादी ढाँचा** | 7 | coredns, etcd, openbao, keycloak, qdrant, registry, consul |
| **Kubernetes, CI और IaC** | 4 | helm, kubectl, opentofu, trivy |
| **एप्स** | 5 | jenkins, gitea, minio, rails, mailpit |
हर इमेज को ब्राउज़ करें — लाइव CVE स्कैन, सभी टैग, SBOM और बिल्ड प्रोवेनेंस के साथ — **[minimalcontainers.com](https://minimalcontainers.com)** पर, या नीचे पूर्ण पुल-कमांड सूची का विस्तार करें।
<details>
<summary><strong>पूर्ण इमेज कैटलॉग पुल कमांड के साथ</strong></summary>
<br>
| इमेज | पुल कमांड | शेल | उपयोग |
|-------|--------------|-------|----------|
| | | **भाषाएँ** | |
| Python | `docker pull ghcr.io/rtvkiz/minimal-python:latest` | नहीं | Python apps, माइक्रोसर्विसेज़ |
| Node.js-slim | `docker pull ghcr.io/rtvkiz/minimal-node-slim:latest` | नहीं | Node.js apps, JavaScript |
| Bun | `docker pull ghcr.io/rtvkiz/minimal-bun:latest` | नहीं | तेज़ JavaScript/TypeScript रनटाइम |
| Go | `docker pull ghcr.io/rtvkiz/minimal-go:latest` | नहीं | Go डेवलपमेंट, CGO बिल्ड |
| .NET Runtime | `docker pull ghcr.io/rtvkiz/minimal-dotnet:latest` | नहीं | ऐप्स के लिए .NET 10 रनटाइम |
| Java | `docker pull ghcr.io/rtvkiz/minimal-java:latest` | नहीं | Java apps के लिए OpenJDK 26 JRE |
| Ruby | `docker pull ghcr.io/rtvkiz/minimal-ruby:latest` | नहीं | Ruby 4.0 रनटाइम (स्रोत से निर्मित) |
| PHP | `docker pull ghcr.io/rtvkiz/minimal-php:latest` | नहीं | PHP 8.5 CLI (स्रोत से निर्मित) |
| Rails | `docker pull ghcr.io/rtvkiz/minimal-rails:latest` | नहीं | Ruby 4.0 + Rails 8.1 (स्रोत से निर्मित) |
| Deno | `docker pull ghcr.io/rtvkiz/minimal-deno:latest` | नहीं | सुरक्षित TypeScript/JavaScript रनटाइम |
| | | **डेटाबेस** | |
| MySQL | `docker pull ghcr.io/rtvkiz/minimal-mysql:latest` | हाँ | MySQL LTS 8.4.x, स्रोत से निर्मित |
| MariaDB | `docker pull ghcr.io/rtvkiz/minimal-mariadb:latest` | हाँ | MariaDB LTS 11.4.x, स्रोत से निर्मित |
| PostgreSQL-slim | `docker pull ghcr.io/rtvkiz/minimal-postgres-slim:latest` | नहीं | रिलेशनल डेटाबेस |
| SQLite | `docker pull ghcr.io/rtvkiz/minimal-sqlite:latest` | नहीं | एम्बेडेड SQL डेटाबेस CLI |
| OpenSearch | `docker pull ghcr.io/rtvkiz/minimal-opensearch:latest` | नहीं* | OpenSearch 3.x — खोज और विश्लेषण |
| | | **कैश, कतारें, संदेशन** | |
| Redis-slim | `docker pull ghcr.io/rtvkiz/minimal-redis-slim:latest` | नहीं | इन-मेमोरी डेटा स्टोर |
| Memcached | `docker pull ghcr.io/rtvkiz/minimal-memcached:latest` | नहीं | इन-मेमोरी कैशिंग (स्रोत से निर्मित) |
| Valkey | `docker pull ghcr.io/rtvkiz/minimal-valkey:latest` | नहीं | BSD-लाइसेंस प्राप्त Redis फोर्क (LF) |
| Kafka | `docker pull ghcr.io/rtvkiz/minimal-kafka:latest` | हाँ | Apache Kafka 4.x, KRaft मोड |
| RabbitMQ | `docker pull ghcr.io/rtvkiz/minimal-rabbitmq:latest` | हाँ | RabbitMQ 4.x AMQP ब्रोकर |
| NATS | `docker pull ghcr.io/rtvkiz/minimal-nats:latest` | नहीं | JetStream के साथ NATS सर्वर |
| Mosquitto | `docker pull ghcr.io/rtvkiz/minimal-mosquitto:latest` | नहीं | Eclipse Mosquitto MQTT ब्रोकर (EPL-2.0/EDL-1.0) |
| | | **वेब सर्वर और प्रॉक्सी** | |
| Nginx | `docker pull ghcr.io/rtvkiz/minimal-nginx:latest` | नहीं | रिवर्स प्रॉक्सी, स्थैतिक फ़ाइलें |
| HTTPD | `docker pull ghcr.io/rtvkiz/minimal-httpd:latest` | हो सकता है* | Apache वेब सर्वर |
| Caddy | `docker pull ghcr.io/rtvkiz/minimal-caddy:latest` | नहीं | स्वचालित HTTPS वेब सर्वर |
| HAProxy | `docker pull ghcr.io/rtvkiz/minimal-haproxy:latest` | नहीं | TCP/HTTP लोड बैलेंसर |
| Traefik | `docker pull ghcr.io/rtvkiz/minimal-traefik:latest` | नहीं | क्लाउड-नेटिव रिवर्स प्रॉक्सी |
| Envoy | `docker pull ghcr.io/rtvkiz/minimal-envoy:latest` | नहीं | सर्विस प्रॉक्सी और लोड बैलेंसर |
| | | **अवलोकनीयता** | |
| Prometheus | `docker pull ghcr.io/rtvkiz/minimal-prometheus:latest` | नहीं | मीट्रिक संग्रह और अलर्टिंग |
| VictoriaMetrics | `docker pull ghcr.io/rtvkiz/minimal-victoria-metrics:latest` | नहीं | उच्च-प्रदर्शन मीट्रिक भंडारण |
| Jaeger | `docker pull ghcr.io/rtvkiz/minimal-jaeger:latest` | नहीं | वितरित ट्रेसिंग (v2) |
| Loki | `docker pull ghcr.io/rtvkiz/minimal-loki:latest` | नहीं | लॉग एकत्रीकरण (Grafana Labs) |
| Tempo | `docker pull ghcr.io/rtvkiz/minimal-tempo:latest` | नहीं | वितरित ट्रेसिंग बैकएंड (Grafana Labs, AGPL) |
| OTel Collector | `docker pull ghcr.io/rtvkiz/minimal-otelcol:latest` | नहीं | OpenTelemetry कलेक्टर कोर |
| Fluent Bit | `docker pull ghcr.io/rtvkiz/minimal-fluent-bit:latest` | नहीं | हल्का लॉग प्रोसेसर |
| Node Exporter | `docker pull ghcr.io/rtvkiz/minimal-node-exporter:latest` | नहीं | Prometheus होस्ट हार्डवेयर और OS मीट्रिक |
| Blackbox Exporter | `docker pull ghcr.io/rtvkiz/minimal-blackbox-exporter:latest` | नहीं | Prometheus एंडपॉइंट प्रोबिंग (HTTP/DNS/TCP/ICMP) |
| Pushgateway | `docker pull ghcr.io/rtvkiz/minimal-pushgateway:latest` | नहीं | बैच जॉब्स के लिए Prometheus मीट्रिक पुश |
| | | **बुनियादी ढाँचा** | |
| CoreDNS | `docker pull ghcr.io/rtvkiz/minimal-coredns:latest` | नहीं | Kubernetes डिफ़ॉल्ट DNS |
| etcd | `docker pull ghcr.io/rtvkiz/minimal-etcd:latest` | नहीं | वितरित कुंजी-मान स्टोर |
| OpenBao | `docker pull ghcr.io/rtvkiz/minimal-openbao:latest` | नहीं | गुप्त प्रबंधन (Vault फोर्क) |
| Keycloak | `docker pull ghcr.io/rtvkiz/minimal-keycloak:latest` | हाँ | पहचान और पहुँच प्रबंधन |
| Qdrant | `docker pull ghcr.io/rtvkiz/minimal-qdrant:latest` | नहीं | AI/ML के लिए वेक्टर DB (Rust) |
| Registry | `docker pull ghcr.io/rtvkiz/minimal-registry:latest` | नहीं | OCI वितरण रजिस्ट्री (Docker Registry v2), स्रोत से निर्मित |
| Consul | `docker pull ghcr.io/rtvkiz/minimal-consul:latest` | नहीं | HashiCorp Consul सेवा खोज + KV (BUSL-1.1) |
| | | **Kubernetes और CI** | |
| Helm | `docker pull ghcr.io/rtvkiz/minimal-helm:latest` | नहीं | Kubernetes चार्ट परिनियोजन के लिए Helm 3 CLI |
| kubectl | `docker pull ghcr.io/rtvkiz/minimal-kubectl:latest` | नहीं | Kubernetes क्लस्टर संचालन के लिए kubectl CLI |
| | | **एप्स** | |
| Jenkins | `docker pull ghcr.io/rtvkiz/minimal-jenkins:latest` | हाँ | CI/CD ऑटोमेशन |
| Gitea | `docker pull ghcr.io/rtvkiz/minimal-gitea:latest` | हाँ | स्व-होस्टेड Git सेवा |
| MinIO | `docker pull ghcr.io/rtvkiz/minimal-minio:latest` | नहीं | S3-संगत ऑब्जेक्ट स्टोरेज |
| Mailpit | `docker pull ghcr.io/rtvkiz/minimal-mailpit:latest` | नहीं | डेवलपर्स के लिए SMTP और ईमेल परीक्षण, स्रोत से निर्मित |
| | | **AI / ML** | |
| CUDA Python | *अक्षम* | नहीं | Python + CUDA 12.9 + cuDNN 9.10 (बिल्ड रोका गया, कोड बरकरार) |
*\*HTTPD, Jenkins, Kafka, MySQL, OpenSearch, Gitea, Keycloak में ट्रांज़िटिव Wolfi निर्भरता या अपस्ट्रीम एंट्रीपॉइंट की आवश्यकता के कारण शेल (`sh`/`busybox`/`bash`) शामिल है। CI शेल की उपस्थिति को सूचनात्मक मानता है।*
</details>
## त्वरित आरंभ```bash
# Python app
docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-python:latest /app/main.py
# Nginx reverse proxy
docker run -d -p 8080:80 ghcr.io/rtvkiz/minimal-nginx:latest
# PostgreSQL
docker run -d -p 5432:5432 -v pgdata:/var/lib/postgresql/data \
ghcr.io/rtvkiz/minimal-postgres-slim:latest
# Redis
docker run -d -p 6379:6379 ghcr.io/rtvkiz/minimal-redis-slim:latest
# Kafka (KRaft mode — auto-initializes storage on first boot)
docker run -d -p 9092:9092 -v kafkadata:/var/kafka/data \
ghcr.io/rtvkiz/minimal-kafka:latest
docker run उदाहरण (Node, Go, MySQL, MariaDB, Java, .NET, PHP, Rails, RabbitMQ, Gitea, …)
```bash
docker run --rm -v $(pwd):/app -w /app ghcr.io/rtvkiz/minimal-node-slim:latest index.js
docker run --rm ghcr.io/rtvkiz/minimal-bun:latest --version
docker run --rm -v $(pwd):/app -w /app ghcr.io/rtvkiz/minimal-go:latest build -o /tmp/app .
docker run -d -p 8080:80 ghcr.io/rtvkiz/minimal-httpd:latest
docker run -d -p 8080:8080 -v jenkins_home:/var/jenkins_home ghcr.io/rtvkiz/minimal-jenkins:latest
docker run -d -p 3306:3306 -v mysqldata:/var/lib/mysql ghcr.io/rtvkiz/minimal-mysql:latest
docker run -d -p 11211:11211 ghcr.io/rtvkiz/minimal-memcached:latest
docker run --rm -v $(pwd):/data ghcr.io/rtvkiz/minimal-sqlite:latest /data/mydb.sqlite "SELECT sqlite_version();"
docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-dotnet:latest /app/myapp.dll
docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-java:latest -jar /app/myapp.jar
docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-php:latest /app/index.php
docker run --rm -v $(pwd):/app ghcr.io/rtvkiz/minimal-rails:latest -e "require 'rails'; puts Rails.version"
docker run -d -p 5672:5672 -v rabbitmqdata:/var/lib/rabbitmq ghcr.io/rtvkiz/minimal-rabbitmq:latest
docker run -d -p 3000:3000 -v giteadata:/data/gitea ghcr.io/rtvkiz/minimal-gitea:latest
</details>
## प्रोडक्शन में उपयोग करना
**अपरिवर्तनीय संस्करण टैग पर पिन करें।** प्रत्येक इमेज दो टैग के साथ प्रकाशित होती है:
| टैग | फॉर्मेट | उदाहरण | परिवर्तनशील |
|---|---|---|---|
| वर्जन | `VERSION-rEPOCH` | `ghcr.io/rtvkiz/minimal-redis-slim:8.4.1-r0` | नहीं |
| नवीनतम | `latest` | `ghcr.io/rtvkiz/minimal-redis-slim:latest` | हाँ |
### डेव वेरिएंट (`:latest-dev`)
अधिकांश इमेज एक `-dev` सहयोगी प्रकाशित करती हैं जो **प्रोडक्शन के समान स्रोत** से बनाई गई होती है — समान रनटाइम वर्जन, समान क्यूरेटेड पैकेज सेट — साथ ही एक शेल, पैकेज मैनेजर, कंपाइलर टूलचेन, और इमेज-उपयुक्त डीबग टूलिंग। CI बिल्ड स्टेज और इन-पॉड डीबगिंग के लिए अभिप्रेत, **प्रोडक्शन डिप्लॉयमेंट के लिए नहीं**।
विशिष्ट मल्टी-स्टेज उपयोग:```dockerfile
FROM ghcr.io/rtvkiz/minimal-ruby:latest-dev AS build
WORKDIR /work
COPY Gemfile Gemfile.lock ./
RUN bundle install
FROM ghcr.io/rtvkiz/minimal-ruby:latest
COPY --from=build /work /work
इंटरैक्टिव शेल प्राप्त करने के लिए, एंट्रीपॉइंट को ओवरराइड करें (डेव इमेज प्रॉड एंट्रीपॉइंट को ड्रॉप-इन संगतता के लिए रखती हैं):```bash docker run -it --entrypoint /bin/sh ghcr.io/rtvkiz/minimal-:latest-dev docker run -it --entrypoint /bin/bash ghcr.io/rtvkiz/minimal-:latest-dev
Dev variants प्रोड इमेज के signing, SBOM और SLSA provenance pipeline को साझा करते हैं। वे **सार्वजनिक CVE डैशबोर्ड पर ट्रैक नहीं किए जाते** — वे जानबूझकर एक बड़ा आक्रमण सतह शिप करते हैं। नीति के लिए [`.github/SECURITY.md`](https://github.com/rtvkiz/minimal/blob/main/.github/SECURITY.md#dev-variants--dev-tags) और पैकेज संरचना नियमों के लिए [`docs/dev-variants/CONVENTIONS.md`](https://github.com/rtvkiz/minimal/blob/main/docs/dev-variants/CONVENTIONS.md) देखें।
**आज शिपिंग:** 57 में से 57 डेव वेरिएंट — कैटलॉग की प्रत्येक छवि अब प्रोड के समान स्रोत से निर्मित एक `:latest-dev` साथी शिप करती है।
<details>
<summary><strong>प्रति-छवि डेव वेरिएंट स्थिति</strong></summary>
<br>
Legends: ✅ `:latest-dev` शिपिंग · 🚧 प्रगति पर · 📝 योजनाबद्ध
श्रेणियाँ [`docs/dev-variants/templates/`](https://github.com/rtvkiz/minimal/blob/main/docs/dev-variants/templates) में तीन टेम्पलेट्स (runtime / daemon / server) का पालन करती हैं। "Reference" कॉलम दिखाता है कि हम Chainguard के सार्वजनिक `<image>-public/devConfigs` पैकेज सेट को कहाँ मिरर करते हैं; **in-house** का मतलब है कि Chainguard केवल Enterprise-स्तर की छवि शिप करता है और हमने स्वयं dev संरचना डिज़ाइन की।
| छवि | श्रेणी | संदर्भ | स्थिति |
|---|---|---|---|
| ruby | runtime | Chainguard `ruby-public` | ✅ |
| python | runtime | Chainguard `python-public` | ✅ |
| node-slim | runtime | Chainguard `node-public` | ✅ |
| go | runtime | Chainguard `go-public` | ✅ |
| java | runtime | Chainguard `jdk-public` | ✅ |
| dotnet | runtime | Chainguard `dotnet-runtime-10-public` | ✅ |
| php | runtime | in-house (composer deferred — see PR) | ✅ |
| rails | runtime | in-house (derive from ruby) | ✅ |
| bun | runtime | in-house | ✅ |
| deno | runtime | in-house | ✅ |
| postgres-slim | daemon | Chainguard `postgres-public` | ✅ |
| mariadb | daemon | Chainguard `mariadb-public` | ✅ |
| mysql | daemon | in-house | ✅ |
| redis-slim | daemon | Chainguard `redis-public` | ✅ |
| valkey | daemon | Chainguard `valkey-public` | ✅ |
| memcached | daemon | in-house | ✅ |
| sqlite | daemon | in-house | ✅ |
| opensearch | daemon | in-house | ✅ |
| kafka | daemon | in-house | ✅ |
| rabbitmq | daemon | in-house | ✅ |
| nats | daemon | in-house | ✅ |
| etcd | daemon | in-house | ✅ |
| qdrant | daemon | in-house | ✅ |
| nginx | server | Chainguard `nginx-public` | ✅ |
| haproxy | server | Chainguard `haproxy-public` | ✅ |
| minio | server | Chainguard `minio-client-public` (server in-house) | ✅ |
| httpd | server | in-house | ✅ |
| caddy | server | in-house | ✅ |
| traefik | server | in-house | ✅ |
| envoy | server | in-house | ✅ |
| prometheus | server | in-house | ✅ |
| victoria-metrics | server | in-house | ✅ |
| jaeger | server | in-house | ✅ |
| otelcol | server | in-house | ✅ |
| loki | server | in-house | ✅ |
| fluent-bit | server | in-house | ✅ |
| node-exporter | server | in-house | ✅ |
| blackbox-exporter | server | in-house | ✅ |
| pushgateway | server | in-house | ✅ |
| coredns | server | in-house | ✅ |
| gitea | server | in-house | ✅ |
| jenkins | server | in-house | ✅ |
| keycloak | server | in-house | ✅ |
| openbao | server | in-house | ✅ |
| registry | server | Chainguard `registry-public` | ✅ |
| mailpit | server | in-house (Chainguard ships no public mailpit) | ✅ |
| consul | server | in-house (Chainguard ships no public consul; BUSL-1.1) | ✅ |
| tempo | server | in-house (Chainguard ships no public tempo; AGPL-3.0) | ✅ |
| mosquitto | daemon | in-house (Chainguard ships no public mosquitto; EPL-2.0/EDL-1.0) | ✅ |
</details>```dockerfile
# Production Dockerfile — pin by version tag, ideally by digest
FROM ghcr.io/rtvkiz/minimal-go:1.26.0-r0 AS build
WORKDIR /src
COPY . .
RUN go build -o /out/app
FROM ghcr.io/rtvkiz/minimal-python:3.14.0-r0
COPY --from=build /out/app /usr/bin/app
ENTRYPOINT ["/usr/bin/app"]
Kubernetes में हस्ताक्षर + प्रोवेनेंस लागू करें sigstore-policy-controller या Kyverno के साथ:```yaml
apiVersion: kyverno.io/v1 kind: ClusterPolicy metadata: name: verify-minimal-images spec: validationFailureAction: Enforce rules: - name: check-signature match: any: - resources: kinds: [Pod] verifyImages: - imageReferences: - "ghcr.io/rtvkiz/minimal-" attestors: - entries: - keyless: subject: "https://github.com/rtvkiz/minimal/" issuer: "https://token.actions.githubusercontent.com"
The `-r0` suffix is the revision number — resets to `r0` on each upstream version bump, increments (`r1`, `r2`, …) for rebuilds of the same upstream version (e.g., dependency patches). Old version tags are preserved across rebuilds.
## Build pipeline
<details>
<summary><strong>Pipeline diagram</strong></summary>
<br>```
┌─────────────────────────────────────────────────────────────────────────────┐
│ BUILD PIPELINE │
├─────────────────────────────────────────────────────────────────────────────┤
│ │
│ Signing Keys: │
│ ┌─────────────────────────────────────────────────────────────────────┐ │
│ │ PRs: keygen job (ephemeral) │ Main: repository secrets (persistent)│ │
│ └─────────────────────────────────────────────────────────────────────┘ │
│ │ │
│ ▼ │
│ ┌─────────────────────────────┐ ┌─────────────────────────────────────┐ │
│ │ melange-build │ │ build-apko │ │
│ │ Native ARM64 runners │ │ Wolfi pre-built packages │ │
│ │ ┌────────┐ ┌────────────┐ │ │ ┌─────────┐ ┌───────────────┐ │ │
│ │ │ x86_64 │ │ aarch64 │ │ │ │ Wolfi │────►│ apko publish │ │ │
│ │ │ ubuntu │ │ ubuntu-arm │ │ │ │ packages│ │ (multi-arch) │ │ │
│ │ └────┬───┘ └─────┬──────┘ │ │ └─────────┘ └───────┬───────┘ │ │
│ │ └─────┬──────┘ │ │ │ │ │
│ │ ▼ │ └──────────────────────────│──────────┘ │
│ │ ┌──────────────┐ │ │ │
│ │ │ artifacts │ │ │ │
│ │ │ (x86+arm64) │ │ │ │
│ │ └──────┬───────┘ │ │ │
│ └────────────│────────────────┘ │ │
│ ▼ │ │
│ ┌─────────────────────────────┐ │ │
│ │ build-melange │ │ │
│ │ ┌─────────┐ ┌────────────┐ │ │ │
│ │ │ merge │►│ apko │─┼───────────────────────────────┤ │
│ │ │ packages│ │ publish │ │ │ │
│ │ └─────────┘ └────────────┘ │ │ │
│ └─────────────────────────────┘ │ │
│ ▼ │
│ ┌──────────────────────────────────────────────────────────────────────┐ │
│ │ Verification & Attestation │ │
│ │ ┌──────────┐ ┌──────────┐ ┌──────────┐ ┌─────────────────────┐ │ │
│ │ │ Grype │─►│ Test │─►│ cosign │─►│ SBOM + SLSA L3 │ │ │
│ │ │ CVE scan │ │ image │ │ sign │ │ attestations │ │ │
│ │ └──────────┘ └──────────┘ └──────────┘ └─────────────────────┘ │ │
│ └──────────────────────────────────────────────────────────────────────┘ │
│ │
│ Note: PRs build and test but do not publish. Only main branch publishes. │
└─────────────────────────────────────────────────────────────────────────────┘
| ट्रिगर | कब | उद्देश्य |
|---|---|---|
| अनुसूचित | हर 6 घंटे | Wolfi से नवीनतम CVE पैच लेना |
| पुश | main में मर्ज होने पर | कॉन्फ़िगरेशन परिवर्तन तैनात करें |
| मैन्युअल | वर्कफ़्लो डिस्पैच | आपातकालीन पुनर्निर्माण |
भेद्यता स्कैन परिणाम लाइव कैटलॉग, कार्य सारांश और GitHub सुरक्षा टैब में दिखाई देते हैं।
स्रोत-निर्मित इमेज को समर्पित वर्कफ़्लो द्वारा ट्रैक किया जाता है जो दैनिक अपस्ट्रीम जाँचते हैं और PR खोलते हैं:
| वर्कफ़्लो | क्या देखता है | यह क्या करता है |
|---|---|---|
update-jenkins.yml | Jenkins LTS रिलीज़ | melange कॉन्फ़िग, Makefile, build.yml में संस्करण अपडेट करता है |
update-redis.yml | Redis GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है |
update-mysql.yml | MySQL LTS (8.4.x) GitHub टैग | संस्करण और SHA256 अपडेट करता है |
update-memcached.yml | Memcached GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है |
update-kafka.yml | Apache Kafka 4.x GitHub टैग | संस्करण और SHA512 अपडेट करता है |
update-php.yml | php.net रिलीज़ API | संस्करण और SHA256 अपडेट करता है; नई माइनर/मेजर श्रृंखला के लिए इश्यू खोलता है |
update-rails.yml | RubyGems API + Ruby GitHub टैग | Rails gem और Ruby स्रोत संस्करणों को स्वतंत्र रूप से अपडेट करता है |
update-rabbitmq.yml | RabbitMQ GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है |
update-minio.yml | MinIO GitHub रिलीज़ | रिलीज़ टैग, तिथि-आधारित संस्करण और SHA256 अपडेट करता है |
update-victoria-metrics.yml | VictoriaMetrics GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है |
update-jaeger.yml | Jaeger v2.x GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है; मेजर संस्करण परिवर्तन पर चेतावनी देता है |
update-otelcol.yml | OTel Collector स्थिर रिलीज़ | संस्करण और SHA256 अपडेट करता है; प्रीरिलीज़ को छोड़ता है |
update-qdrant.yml | Qdrant v1.x GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है |
update-etcd.yml | etcd v3.x GitHub रिलीज़ | संस्करण और SHA256 अपडेट करता है |
update-opensearch.yml | OpenSearch 3.x GitHub रिलीज़ | Makefile और README में संस्करण अपडेट करता है |
update-gitea.yml | Gitea v1.x GitHub टैग | संस्करण और SHA256 अपडेट करता है |
पैच अपडेट स्वचालित रूप से PR किए जाते हैं और CI द्वारा मान्य किए जाते हैं। माइनर/मेजर बंप एक मैन्युअल अपग्रेड चेकलिस्ट के साथ GitHub इश्यू बनाते हैं।
| इमेज | संस्करण | उपयोगकर्ता | प्रवेश बिंदु | कार्य निर्देशिका |
|---|---|---|---|---|
| Python | 3.14.x | nonroot (65532) | /usr/bin/python3 | /app |
| Node.js-slim | 25.x | nonroot (65532) | /usr/bin/dumb-init -- /usr/bin/node | /app |
| Bun | latest | nonroot (65532) | /usr/bin/bun | /app |
| Go | 1.26.x | nonroot (65532) | /usr/bin/go | /app |
| Nginx | mainline | nginx (65532) | /usr/sbin/nginx -g "daemon off;" | / |
| HTTPD | 2.4.x | www-data (65532) | /usr/sbin/httpd -DFOREGROUND | /var/www/localhost/htdocs |
| Jenkins | 2.555.x LTS | jenkins (1000) | tini -- java -jar jenkins.war | /var/jenkins_home |
| Redis | 8.6.x | redis (65532) | /usr/bin/redis-server | / |
| MySQL | 8.4.x | mysql (65532) | /usr/bin/docker-entrypoint.sh | / |
| MariaDB | 11.4.x | mariadb (65532) | /usr/bin/mariadbd | /var/lib/mysql |
| Memcached | 1.6.x | memcached (65532) | /usr/bin/memcached | / |
| PostgreSQL | 18.x | postgres (70) | /usr/bin/postgres | / |
| SQLite | 3.51.x | nonroot (65532) | /usr/bin/sqlite3 | /data |
| .NET Runtime | 10.x |
go install chainguard.dev/apko@latest go install chainguard.dev/melange@latest brew install anchore/grype/grype
make python make test-python
make build
make scan
देखें [Makefile](https://github.com/rtvkiz/minimal/blob/main/Makefile) पूर्ण लक्ष्य सूची के लिए।
## प्रोजेक्ट संरचना
<details>
<summary><strong>रिपॉजिटरी लेआउट</strong></summary>
<br>```
minimal/
├── <image>/
│ ├── apko/<name>.yaml # final image config
│ ├── melange.yaml # source build (optional)
│ └── test.sh # smoke test
├── .github/
│ ├── SECURITY.md # disclosure policy + verification recipes
│ └── workflows/
│ ├── build.yml # main CI pipeline (6h rebuilds)
│ ├── patch-go-deps.yml # daily Go transitive CVE patching
│ ├── update-<image>.yml # per-image upstream version tracking
│ └── update-wolfi-packages.yml
├── Makefile
├── README.md
├── CONTRIBUTING.md
└── LICENSE
हाल ही में जोड़े गए:
cosign verify-attestation से सत्यापनीय।gh attestation verify से सत्यापनीय।आगे:
यह प्रोजेक्ट क्या नहीं है:
PRs का स्वागत है। CONTRIBUTING.md में बिल्ड सेटअप, इमेज कन्वेंशन और स्थानीय सत्यापन चेकलिस्ट है जो मैं पुश करने से पहले चलाता हूँ।
यदि आपको कोई सुरक्षा समस्या मिलती है, तो कृपया सार्वजनिक मुद्दा खोलने के बजाय GitHub की निजी भेद्यता रिपोर्टिंग का उपयोग करें। प्रकटीकरण नीति और प्रतिक्रिया समयरेखा .github/SECURITY.md में है।
MIT — LICENSE देखें।
कंटेनर इमेज में Wolfi और अन्य स्रोतों से पैकेज शामिल हैं, प्रत्येक के अपने लाइसेंस हैं (Apache-2.0, MIT, GPL, LGPL, BSD, आदि)। पूर्ण लाइसेंस जानकारी प्रत्येक इमेज के SBOM में है:```bash cosign download sbom ghcr.io/rtvkiz/minimal-python:latest | jq '.packages[].licenseConcluded'
update-coredns.yml |
| CoreDNS v1.x GitHub टैग |
| संस्करण और SHA256 अपडेट करता है |
update-openbao.yml | OpenBao v2.x GitHub टैग | संस्करण और SHA256 अपडेट करता है |
update-loki.yml | Loki v3.x GitHub टैग | संस्करण और SHA256 अपडेट करता है |
update-fluent-bit.yml | Fluent Bit v5.x GitHub टैग | संस्करण और SHA256 अपडेट करता है |
update-keycloak.yml | Keycloak 26.x GitHub टैग | संस्करण और SHA256 अपडेट करता है |
update-wolfi-packages.yml | Wolfi APKINDEX | नए Python, Node, Go, .NET, Java, PostgreSQL, Deno संस्करणों का पता लगाता है |
| nonroot (65532) |
/usr/bin/dotnet |
/app |
| Java | 26.x | nonroot (65532) | /usr/bin/java | /app |
| Ruby | 4.0.x | nonroot (65532) | /usr/bin/ruby | /work |
| PHP | 8.5.x | nonroot (65532) | /usr/bin/php | /app |
| Rails | Ruby 4.0.x + Rails 8.1.x | nonroot (65532) | /usr/bin/ruby | /app |
| Kafka | 4.2.x | kafka (65532) | /usr/bin/kafka-entrypoint.sh | / |
| RabbitMQ | 4.3.x | rabbitmq (65532) | /opt/rabbitmq/sbin/rabbitmq-server | / |
| NATS | latest | nonroot (65532) | /usr/bin/nats-server | / |
| Valkey | latest | nonroot (65532) | /usr/bin/valkey-server | / |
| MinIO | RELEASE.2025-10-15 | minio (65532) | /usr/bin/minio server --console-address :9001 /data | /data |
| OpenSearch | 3.7.0 | opensearch (65532) | /usr/share/opensearch/opensearch-docker-entrypoint.sh | /usr/share/opensearch/data |
| etcd | 3.6.x | nonroot (65532) | /usr/bin/etcd | /var/lib/etcd |
| VictoriaMetrics | 1.142.x | nonroot (65532) | /usr/bin/victoria-metrics | / |
| Jaeger | 2.18.x | nonroot (65532) | /usr/bin/jaeger | / |
| OTel Collector | 0.151.x | nonroot (65532) | /usr/bin/otelcol | / |
| Qdrant | 1.17.x | nonroot (65532) | /usr/bin/qdrant | /qdrant |
| Deno | 2.x | nonroot (65532) | /usr/bin/deno | /app |
| Gitea | 1.26.x | gitea (65532) | /usr/bin/gitea web --config /etc/gitea/app.ini | /var/lib/gitea |
| CoreDNS | 1.14.x | nonroot (65532) | /usr/bin/coredns | / |
| OpenBao | 2.5.x | openbao (65532) | /usr/bin/bao server | /openbao/data |
| Keycloak | 26.6.x | keycloak (65532) | /opt/keycloak/bin/kc.sh start-dev | /opt/keycloak/data |
| Loki | 3.6.x | loki (65532) | /usr/bin/loki | /loki |
| Fluent Bit | 5.0.x | nonroot (65532) | /usr/bin/fluent-bit | / |