master 65d4f89f3360 cached
365 files
705.8 KB
294.4k tokens
16 symbols
1 requests
Download .txt
Showing preview only (784K chars total). Download the full file or copy to clipboard to get everything.
Repository: docker-library/official-images
Branch: master
Commit: 65d4f89f3360
Files: 365
Total size: 705.8 KB

Directory structure:
gitextract_zs_h73wn/

├── .buildkit-build-contexts.sh
├── .external-pins/
│   ├── docker/
│   │   └── scout-sbom-indexer___1
│   ├── file.sh
│   ├── list.sh
│   ├── mcr.microsoft.com/
│   │   └── windows/
│   │       ├── nanoserver___ltsc2022
│   │       ├── nanoserver___ltsc2025
│   │       ├── servercore___ltsc2022
│   │       └── servercore___ltsc2025
│   ├── redhat/
│   │   ├── ubi10-minimal___latest
│   │   ├── ubi10___latest
│   │   ├── ubi8-minimal___latest
│   │   ├── ubi8___latest
│   │   ├── ubi9-minimal___latest
│   │   └── ubi9___latest
│   ├── tag.sh
│   ├── tianon/
│   │   └── buildkit___0.16
│   └── update.sh
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE.md
│   └── workflows/
│       ├── .bashbrew/
│       │   └── action.yml
│       ├── generate.sh
│       ├── munge-pr.yml
│       ├── naughty.sh
│       └── test-pr.yml
├── .gitignore
├── CODE-OF-CONDUCT.md
├── Dockerfile
├── LICENSE
├── MAINTAINERS
├── NEW-IMAGE-CHECKLIST.md
├── README.md
├── SECURITY.md
├── _bashbrew-cat-sorted.sh
├── diff-pr.sh
├── library/
│   ├── adminer
│   ├── aerospike
│   ├── almalinux
│   ├── alpine
│   ├── alt
│   ├── amazoncorretto
│   ├── amazonlinux
│   ├── api-firewall
│   ├── arangodb
│   ├── archlinux
│   ├── azul-zulu
│   ├── backdrop
│   ├── bash
│   ├── bonita
│   ├── buildpack-deps
│   ├── busybox
│   ├── caddy
│   ├── cassandra
│   ├── chronograf
│   ├── cirros
│   ├── clearlinux
│   ├── clefos
│   ├── clickhouse
│   ├── clojure
│   ├── composer
│   ├── convertigo
│   ├── couchbase
│   ├── couchdb
│   ├── crate
│   ├── dart
│   ├── debian
│   ├── docker
│   ├── drupal
│   ├── eclipse-mosquitto
│   ├── eclipse-temurin
│   ├── eggdrop
│   ├── elasticsearch
│   ├── elixir
│   ├── emqx
│   ├── erlang
│   ├── fedora
│   ├── flink
│   ├── fluentd
│   ├── friendica
│   ├── gazebo
│   ├── gcc
│   ├── geonetwork
│   ├── ghost
│   ├── golang
│   ├── gradle
│   ├── groovy
│   ├── haproxy
│   ├── haskell
│   ├── haxe
│   ├── hello-world
│   ├── hitch
│   ├── httpd
│   ├── hylang
│   ├── ibm-semeru-runtimes
│   ├── ibmjava
│   ├── influxdb
│   ├── irssi
│   ├── jetty
│   ├── joomla
│   ├── jruby
│   ├── julia
│   ├── kapacitor
│   ├── kibana
│   ├── kong
│   ├── krakend
│   ├── lightstreamer
│   ├── liquibase
│   ├── logstash
│   ├── mageia
│   ├── mariadb
│   ├── matomo
│   ├── maven
│   ├── mediawiki
│   ├── memcached
│   ├── mongo
│   ├── mongo-express
│   ├── monica
│   ├── mysql
│   ├── nats
│   ├── neo4j
│   ├── neurodebian
│   ├── nextcloud
│   ├── nginx
│   ├── node
│   ├── notary
│   ├── odoo
│   ├── open-liberty
│   ├── openjdk
│   ├── oraclelinux
│   ├── orientdb
│   ├── percona
│   ├── perl
│   ├── photon
│   ├── php
│   ├── php-zendserver
│   ├── phpmyadmin
│   ├── plone
│   ├── postfixadmin
│   ├── postgres
│   ├── pypy
│   ├── python
│   ├── r-base
│   ├── rabbitmq
│   ├── rakudo-star
│   ├── redis
│   ├── redmine
│   ├── registry
│   ├── rethinkdb
│   ├── rocket.chat
│   ├── rockylinux
│   ├── ros
│   ├── ruby
│   ├── rust
│   ├── sapmachine
│   ├── satosa
│   ├── silverpeas
│   ├── solr
│   ├── sonarqube
│   ├── spark
│   ├── spiped
│   ├── storm
│   ├── swift
│   ├── swipl
│   ├── teamspeak
│   ├── telegraf
│   ├── tomcat
│   ├── tomee
│   ├── traefik
│   ├── ubuntu
│   ├── unit
│   ├── varnish
│   ├── websphere-liberty
│   ├── wordpress
│   ├── xwiki
│   ├── yourls
│   ├── znc
│   └── zookeeper
├── naughty-commits.sh
├── naughty-constraints.sh
├── naughty-from.sh
├── naughty-sharedtags.sh
├── pr-urls.sh
├── test/
│   ├── README.md
│   ├── clean.sh
│   ├── config.sh
│   ├── retry.sh
│   ├── run.sh
│   └── tests/
│       ├── cassandra-basics/
│       │   └── run.sh
│       ├── cheeky-retries.sh
│       ├── composer/
│       │   ├── composer.json
│       │   └── container.sh
│       ├── convertigo-hello-world/
│       │   └── run.sh
│       ├── dart-hello-world/
│       │   ├── container.dart
│       │   └── expected-std-out.txt
│       ├── debian-apt-get/
│       │   ├── container.sh
│       │   └── expected-std-out.txt
│       ├── docker-build.sh
│       ├── docker-dind/
│       │   └── run.sh
│       ├── docker-registry-push-pull/
│       │   └── run.sh
│       ├── eclipse-mosquitto-basics/
│       │   ├── mosquitto.conf
│       │   └── run.sh
│       ├── elixir-hello-world/
│       │   ├── container.exs
│       │   └── expected-std-out.txt
│       ├── erlang-hello-world/
│       │   ├── container.erl
│       │   └── expected-std-out.txt
│       ├── gcc-c-hello-world/
│       │   ├── container.c
│       │   └── expected-std-out.txt
│       ├── gcc-cpp-hello-world/
│       │   ├── container.cpp
│       │   └── expected-std-out.txt
│       ├── ghost-basics/
│       │   └── run.sh
│       ├── golang-hello-world/
│       │   ├── container.go
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── haproxy-basics/
│       │   ├── haproxy.cfg
│       │   └── run.sh
│       ├── haskell-cabal/
│       │   └── container.sh
│       ├── haskell-ghci/
│       │   └── container.sh
│       ├── haskell-runhaskell/
│       │   ├── container.hs
│       │   └── expected-std-out.txt
│       ├── haskell-stack/
│       │   └── container.sh
│       ├── haxe-haxelib-install/
│       │   └── Container.hx
│       ├── haxe-hello-world/
│       │   ├── Container.hx
│       │   └── expected-std-out.txt
│       ├── hylang-hello-world/
│       │   ├── container.hy
│       │   └── expected-std-out.txt
│       ├── hylang-sh/
│       │   ├── container.hy
│       │   └── expected-std-out.txt
│       ├── image-name.sh
│       ├── java-ca-certificates/
│       │   └── container.java
│       ├── java-hello-world/
│       │   ├── container.java
│       │   └── expected-std-out.txt
│       ├── java-uimanager-font/
│       │   └── container.java
│       ├── jetty-hello-web/
│       │   ├── index.jsp
│       │   └── run.sh
│       ├── julia-downloads/
│       │   └── container.jl
│       ├── julia-hello-world/
│       │   ├── container.jl
│       │   └── expected-std-out.txt
│       ├── logstash-basics/
│       │   └── run.sh
│       ├── matomo-apache-run/
│       │   └── run.sh
│       ├── matomo-fpm-run/
│       │   └── run.sh
│       ├── memcached-basics/
│       │   └── run.sh
│       ├── mongo-basics/
│       │   └── run.sh
│       ├── mongo-express-run/
│       │   └── run.sh
│       ├── monica-apache-run/
│       │   └── run.sh
│       ├── monica-cli/
│       │   └── run.sh
│       ├── monica-cli-mariadb10/
│       │   └── run.sh
│       ├── monica-cli-mysql8/
│       │   └── run.sh
│       ├── monica-fpm-run/
│       │   └── run.sh
│       ├── mysql-basics/
│       │   └── run.sh
│       ├── mysql-initdb/
│       │   ├── initdb.sql
│       │   └── run.sh
│       ├── mysql-log-bin/
│       │   └── run.sh
│       ├── nextcloud-apache-run/
│       │   └── real-run.sh
│       ├── nextcloud-cli/
│       │   └── run.sh
│       ├── nextcloud-cli-mysql/
│       │   └── run.sh
│       ├── nextcloud-cli-postgres/
│       │   └── run.sh
│       ├── nextcloud-cli-sqlite/
│       │   └── run.sh
│       ├── nextcloud-fpm-run/
│       │   └── real-run.sh
│       ├── no-hard-coded-passwords/
│       │   └── run.sh
│       ├── node-hello-world/
│       │   ├── container.js
│       │   └── expected-std-out.txt
│       ├── nuxeo-basics/
│       │   └── run.sh
│       ├── nuxeo-conf/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── open-liberty-hello-world/
│       │   └── run.sh
│       ├── override-cmd/
│       │   └── run.sh
│       ├── percona-rocksdb/
│       │   └── run.sh
│       ├── percona-tokudb/
│       │   └── run.sh
│       ├── perl-cpanm/
│       │   └── container.sh
│       ├── perl-hello-world/
│       │   ├── container.pl
│       │   └── expected-std-out.txt
│       ├── php-apache-hello-web/
│       │   └── run.sh
│       ├── php-argon2/
│       │   └── container.php
│       ├── php-ext-install/
│       │   └── container.sh
│       ├── php-fpm-hello-web/
│       │   ├── index.php
│       │   └── run.sh
│       ├── php-hello-world/
│       │   ├── container.php
│       │   └── expected-std-out.txt
│       ├── plone-addons/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── plone-basics/
│       │   └── run.sh
│       ├── plone-cors/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── plone-versions/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── plone-zeoclient/
│       │   └── run.sh
│       ├── plone-zeosite/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── postfixadmin-apache-run/
│       │   └── run.sh
│       ├── postfixadmin-fpm-run/
│       │   └── run.sh
│       ├── postgres-basics/
│       │   └── run.sh
│       ├── postgres-initdb/
│       │   ├── initdb.sql
│       │   └── run.sh
│       ├── python-imports/
│       │   └── container.py
│       ├── python-no-pyc/
│       │   ├── container.cmd
│       │   └── container.sh
│       ├── python-pip-requests-ssl/
│       │   └── container.py
│       ├── python-sqlite3/
│       │   └── container.py
│       ├── python-stack-size/
│       │   └── container.py
│       ├── rabbitmq-basics/
│       │   ├── receive.py
│       │   ├── run.sh
│       │   ├── send.py
│       │   └── testconn.py
│       ├── rabbitmq-tls/
│       │   ├── inet-dist-tls.config
│       │   ├── rabbitmq-env.conf
│       │   ├── rabbitmq.conf
│       │   └── run.sh
│       ├── redis-basics/
│       │   └── run.sh
│       ├── redis-basics-config/
│       │   └── run.sh
│       ├── redis-basics-persistent/
│       │   └── run.sh
│       ├── redmine-basics/
│       │   └── run.sh
│       ├── ruby-binstubs/
│       │   ├── Gemfile
│       │   └── container.sh
│       ├── ruby-bundler/
│       │   ├── Gemfile
│       │   └── container.sh
│       ├── ruby-gems/
│       │   └── container.sh
│       ├── ruby-hello-world/
│       │   ├── container.rb
│       │   └── expected-std-out.txt
│       ├── ruby-native-extension/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── ruby-nonroot/
│       │   ├── Gemfile
│       │   └── run.sh
│       ├── ruby-standard-libs/
│       │   ├── container.rb
│       │   └── expected-std-out.txt
│       ├── run-bash-in-container.sh
│       ├── run-dart-in-container.sh
│       ├── run-elixir-in-container.sh
│       ├── run-erlang-in-container.sh
│       ├── run-g++-in-container.sh
│       ├── run-gcc-in-container.sh
│       ├── run-go-in-container.sh
│       ├── run-haskell-in-container.sh
│       ├── run-haxe-in-container.sh
│       ├── run-hy-in-container.sh
│       ├── run-in-container.sh
│       ├── run-java-in-container.sh
│       ├── run-julia-in-container.sh
│       ├── run-node-in-container.sh
│       ├── run-perl-in-container.sh
│       ├── run-php-in-container.sh
│       ├── run-python-in-container.sh
│       ├── run-ruby-in-container.sh
│       ├── run-rust-in-container.sh
│       ├── run-sh-in-container.sh
│       ├── run-swift-in-container.sh
│       ├── run-swipl-in-container.sh
│       ├── rust-hello-world/
│       │   ├── container/
│       │   │   ├── Cargo.toml
│       │   │   └── src/
│       │   │       └── main.rs
│       │   └── expected-std-out.txt
│       ├── silverpeas-basics/
│       │   └── run.sh
│       ├── spiped-basics/
│       │   └── run.sh
│       ├── swift-hello-world/
│       │   ├── container.swift
│       │   └── expected-std-out.txt
│       ├── swipl-modules/
│       │   ├── container.pl
│       │   └── expected-std-out.txt
│       ├── tomcat-hello-world/
│       │   ├── index.jsp
│       │   └── run.sh
│       ├── utc/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── varnish/
│       │   └── run.sh
│       ├── wordpress-apache-run/
│       │   └── run.sh
│       ├── wordpress-fpm-run/
│       │   └── run.sh
│       ├── znc-basics/
│       │   └── run.sh
│       └── zookeeper-basics/
│           └── run.sh
└── toc.sh

================================================
FILE CONTENTS
================================================

================================================
FILE: .buildkit-build-contexts.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

# given a list of image references, returns an appropriate list of "ref=docker-image://foo@sha256:xxx" for the current architecture

dir="$(dirname "$BASH_SOURCE")"

[ -n "$BASHBREW_ARCH" ]
archNamespace=

die() {
	echo >&2 "error: $*"
	exit 1
}

for img; do
	lookup=
	case "$img" in
		*@sha256:*)
			lookup="$img"
			;;

		*/*)
			file="$("$dir/.external-pins/file.sh" "$img")" || die "'$img': failed to look up external pin file"
			digest="$(< "$file")" || die "'$img': failed to read external pin file ('$file')"
			[ -n "$digest" ] || die "'$img': empty external pin file ('$file')"
			lookup="${img%@*}@$digest" # img should never have an @ in it here, but just in case
			;;

		*)
			[ -n "$BASHBREW_ARCH_NAMESPACES" ] || die 'missing BASHBREW_ARCH_NAMESPACES'
			archNamespace="${archNamespace:-$(bashbrew cat --format '{{ archNamespace arch }}' "$dir/library/hello-world")}"
			[ -n "$archNamespace" ] || die "failed to get arch namespace for '$BASHBREW_ARCH'"
			lookup="$archNamespace/$img"
			;;
	esac
	[ -n "$lookup" ] || die "'$img': failed to determine what image to query"

	json="$(bashbrew remote arches --json "$lookup" || die "'$img': failed lookup ('$lookup')")"
	digests="$(jq <<<"$json" -r '.arches[env.BASHBREW_ARCH] // [] | map(.digest | @sh) | join(" ")')"
	eval "digests=( $digests )"

	if [ "${#digests[@]}" -gt 1 ]; then
		echo >&2 "warning: '$lookup' has ${#digests[@]} images for '$BASHBREW_ARCH'; returning only the first"
	fi

	for digest in "${digests[@]}"; do
		echo "$img=docker-image://${lookup%@*}@$digest"
		continue 2
	done

	digest="$(jq <<<"$json" -r '.desc.digest')"
	arches="$(jq <<<"$json" -r '.arches | keys | join(" ")')"
	die "'$img': no appropriate digest for '$BASHBREW_ARCH' found in '$lookup' ('$digest'; arches '$arches')"
done


================================================
FILE: .external-pins/docker/scout-sbom-indexer___1
================================================
sha256:13c89fb6085aceb41f9556825c59d957917a3be670e3493598bd1f7f2a49f2fe


================================================
FILE: .external-pins/file.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

# given an image (name:tag), return the appropriate filename

dir="$(dirname "$BASH_SOURCE")"

for img; do
	if [[ "$img" != *:* ]]; then
		echo >&2 "error: '$img' does not contain ':' -- this violates our assumptions! (did you mean '$img:latest' ?)"
		exit 1
	fi

	imgFile="$dir/${img/:/___}" # see ".external-pins/list.sh"
	echo "$imgFile"
done


================================================
FILE: .external-pins/list.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

dir="$(dirname "$BASH_SOURCE")"

find "$dir" -mindepth 2 -type f -printf '%P\n' | sed -e 's/___/:/' | sort

# assumptions which make the "___" -> ":" conversion ~safe (examples referencing "example.com/foo/bar:baz"):
#
#   1. we *always* specify a tag ("baz")
#   2. the domain ("example.com") cannot contain underscores
#   3. we do not pin to any registry with a non-443 port ("example.com:8443")
#   4. the repository ("foo/bar") can only contain singular or double underscores (never triple underscore), and only between alphanumerics (thus never right up next to ":")
#   5. we do *not* use the "g" regex modifier in our sed, which means only the first instance of triple underscore is replaced (in pure Bash, that's "${img/:/___}" or "${img/___/:}" depending on the conversion direction)
#
# see https://github.com/distribution/distribution/blob/411d6bcfd2580d7ebe6e346359fa16aceec109d5/reference/regexp.go
# (see also https://github.com/docker-library/perl-bashbrew/blob/6685582f7889ef4806f0544b93f10640c7608b1a/lib/Bashbrew/RemoteImageRef.pm#L9-L26 for a condensed version)
#
# see https://github.com/docker-library/official-images/issues/13608 for why we can't just use ":" as-is (even though Linux, macOS, and even Windows via MSYS / WSL2 don't have any issues with it)


================================================
FILE: .external-pins/mcr.microsoft.com/windows/nanoserver___ltsc2022
================================================
sha256:be41510eb214c55def9162ef1fb5e71f1b71ce4d64d91bc963199f2383e034ea


================================================
FILE: .external-pins/mcr.microsoft.com/windows/nanoserver___ltsc2025
================================================
sha256:8e76dda6e26aeee6dd741d9d92cd44f9965e209dcc30b7e90b58d37c63d37cd9


================================================
FILE: .external-pins/mcr.microsoft.com/windows/servercore___ltsc2022
================================================
sha256:d4c6d1a8a1a306b12691c3b2e5e3a8bfad786cbd6b7831cd74a9a6a99eab08ad


================================================
FILE: .external-pins/mcr.microsoft.com/windows/servercore___ltsc2025
================================================
sha256:a4d6cb8427e90fd15e39bef29e0e800465989793d2a0826d3b7ceba78af0fe34


================================================
FILE: .external-pins/redhat/ubi10-minimal___latest
================================================
sha256:fa956af586b367c3366ac4376c3ee42a1141792b482e77d57aefb813f740f04d


================================================
FILE: .external-pins/redhat/ubi10___latest
================================================
sha256:17296ded9ab581e9a9019a71e15576c0a99813d8870eb6758e32b5bf93c5ff71


================================================
FILE: .external-pins/redhat/ubi8-minimal___latest
================================================
sha256:1352e7792cd20b906b6f3326f2ce714ae9f2ccf6ba06e7132759afa5efe26e3b


================================================
FILE: .external-pins/redhat/ubi8___latest
================================================
sha256:28a85f76ad1ea0a46a81a934b02fff48d75541f77777be403d48b6bb99a363ad


================================================
FILE: .external-pins/redhat/ubi9-minimal___latest
================================================
sha256:83006d535923fcf1345067873524a3980316f51794f01d8655be55d6e9387183


================================================
FILE: .external-pins/redhat/ubi9___latest
================================================
sha256:05fa0100593c08b5e9dde684cd3eaa94b4d5d7b3cc09944f1f73924e49fde036


================================================
FILE: .external-pins/tag.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

# given a filename, return the appropriate image (name:tag)

origDir="$(dirname "$BASH_SOURCE")"
dir="$(readlink -ve "$origDir")"

for file; do
	abs="$(readlink -vm "$file")"
	rel="${abs#$dir/}"
	rel="${rel##*.external-pins/}" # in case we weren't inside "$dir" but the path is legit
	if [ "$rel" = "$abs" ]; then
		echo >&2 "error: '$file' is not within '$origDir'"
		echo >&2 "('$abs' vs '$dir')"
		exit 1
	fi

	img="${rel/___/:}" # see ".external-pins/list.sh"
	if [ "$img" = "$rel" ]; then
		echo >&2 "error: '$file' does not contain ':' ('___') -- this violates our assumptions!"
		exit 1
	fi

	echo "$img"
done


================================================
FILE: .external-pins/tianon/buildkit___0.16
================================================
sha256:cb0ffa514974dcb631ee9f0be10b6ead0c0625bf12524bca3a673fdd79a0b62e


================================================
FILE: .external-pins/update.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

dir="$(dirname "$BASH_SOURCE")"

if [ "$#" -eq 0 ]; then
	images="$("$dir/list.sh")"
	set -- $images
fi

for img; do
	echo -n "$img -> "

	if [[ "$img" != *:* ]]; then
		echo >&2 "error: '$img' does not contain ':' -- this violates our assumptions! (did you mean '$img:latest' ?)"
		exit 1
	fi

	digest="$(bashbrew remote arches --json "$img" | jq -r '.desc.digest')"

	imgFile="$("$dir/file.sh" "$img")"
	imgDir="$(dirname "$imgFile")"
	mkdir -p "$imgDir"
	echo "$digest" | tee "$imgFile"
done


================================================
FILE: .gitattributes
================================================
# https://github.com/actions/checkout/issues/135#issuecomment-613361104
* text eol=lf


================================================
FILE: .github/CODEOWNERS
================================================
*  @docker-library/maintainers

# give Laurent a bit more responsibility / authority on images where he's comfortable and knowledgeable 🎉
/library/bash             @LaurentGoderre  @docker-library/maintainers
/library/docker           @LaurentGoderre  @docker-library/maintainers
/library/express-gateway  @LaurentGoderre  @docker-library/maintainers
/library/ghost            @LaurentGoderre  @docker-library/maintainers
/library/httpd            @LaurentGoderre  @docker-library/maintainers
/library/kong             @LaurentGoderre  @docker-library/maintainers
/library/mongo            @LaurentGoderre  @docker-library/maintainers
/library/mongo-express    @LaurentGoderre  @docker-library/maintainers
/library/nginx            @LaurentGoderre  @docker-library/maintainers
/library/node             @LaurentGoderre  @docker-library/maintainers
/library/oraclelinux      @LaurentGoderre  @docker-library/maintainers
/library/postgres         @LaurentGoderre  @docker-library/maintainers
/library/python           @LaurentGoderre  @docker-library/maintainers
/library/rabbitmq         @LaurentGoderre  @docker-library/maintainers
/library/redis            @LaurentGoderre  @docker-library/maintainers
/library/redmine          @LaurentGoderre  @docker-library/maintainers
/library/registry         @LaurentGoderre  @docker-library/maintainers
/library/ruby             @LaurentGoderre  @docker-library/maintainers
/library/traefik          @LaurentGoderre  @docker-library/maintainers
/library/ubuntu           @LaurentGoderre  @docker-library/maintainers

# make sure we check with Laurent before we update our SBOM indexer (he follows and is involved in those releases more closely than the rest of us) 👀
/.external-pins/docker/scout-sbom-indexer*  @LaurentGoderre


================================================
FILE: .github/ISSUE_TEMPLATE.md
================================================
<!--

WAIT!  Before you file an issue here, please keep in mind that your issue is _probably_ more appropriately filed somewhere else.

Specifically, if your issue is in regards to the documentation of an image, it should be filed at https://github.com/docker-library/docs/issues

If your issue is in regards to a specific image, please see the "Issues" section of the relevant image's description on the Docker Hub for information about where to file issues for that image.  For example, issues with the "python" image should be filed at https://github.com/docker-library/python/issues, NOT here.

-->


================================================
FILE: .github/workflows/.bashbrew/action.yml
================================================
# https://github.com/docker-library/official-images/pull/13556#issuecomment-1319181339 🙈
name: 'Shared Bashbrew Action'
description: 'Install the same version of Bashbrew consistently in all other GitHub Actions'
inputs:
  build:
    default: 'host' # or 'docker' or 'none'
runs:
  using: 'composite'
  steps:

    # these two version numbers are intentionally as close together as I could possibly get them because no matter what I tried, GitHub will not allow me to DRY them (can't have any useful variables in `uses:` and can't even have YAML references to steal it in `env:` or something)
    # https://github.com/docker-library/bashbrew/releases
    - shell: 'bash -Eeuo pipefail -x {0}'
      run:    echo BASHBREW_VERSION=v0.1.14 >> "$GITHUB_ENV"
    - uses: docker-library/bashbrew@v0.1.14
      if: inputs.build == 'host'

    - run: docker build --pull --tag oisupport/bashbrew:base "https://github.com/docker-library/bashbrew.git#$BASHBREW_VERSION"
      shell: 'bash -Eeuo pipefail -x {0}'
      if: inputs.build == 'docker'


================================================
FILE: .github/workflows/generate.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

#
# NOTE: this is *not* a good example for integrating these tests into your own repository!
# If you want that, check out https://github.com/docker-library/golang/blob/3f2c52653043f067156ce4f41182c2a758c4c857/.github/workflows/ci.yml instead.
#

[ -d "$BASHBREW_SCRIPTS/github-actions" ]

if [ "$#" -eq 0 ]; then
	git fetch --quiet https://github.com/docker-library/official-images.git master
	changes="$(git diff --no-renames --name-only --diff-filter='d' FETCH_HEAD...HEAD -- library/)"
	repos="$(xargs -rn1 basename <<<"$changes")"
	set -- $repos
fi

strategy='{}'
for repo; do
	newStrategy="$(GITHUB_REPOSITORY="$repo" GENERATE_STACKBREW_LIBRARY='cat "library/$GITHUB_REPOSITORY"' "$BASHBREW_SCRIPTS/github-actions/generate.sh")"
	newStrategy="$(jq -c --arg repo "$repo" '.matrix.include = [
		.matrix.include[]
		| ([ .meta.entries[].tags[0] ]) as $tags
		| .name = ($tags | join(", "))
		# replace "build" steps with something that uses "bashbrew" instead of "docker build"
		# https://github.com/docker-library/bashbrew/blob/20b5a50a4eafee1e92fadca5f9cbbce6b16d80b1/scripts/github-actions/generate.sh#L79-L105
		| .runs.build = (
			(if .os | startswith("windows-") then "export BASHBREW_ARCH=windows-amd64 BASHBREW_CONSTRAINTS=" + ([ .meta.entries[].constraints[] ] | join(", ") | @sh) + "\n" else "" end)
			+ "export BASHBREW_LIBRARY=\"$PWD/library\"\n"
			+ ([ $tags[] | "bashbrew build " + @sh ] | join("\n"))
		)
		# use our local clone of official-images for running tests (so test changes can be tested too, if they live in the PR with the image change)
		# https://github.com/docker-library/bashbrew/blob/a40a54d4d81b9fd2e39b4d7ba3fe203e8b022a67/scripts/github-actions/generate.sh#L95
		| .runs.test |= gsub("[^\n\t ]+/run[.]sh "; "./test/run.sh ")
	]' <<<"$newStrategy")"
	jq -c . <<<"$newStrategy" > /dev/null # sanity check
	strategy="$(jq -c '
		# https://stackoverflow.com/a/53666584/433558
		def meld(a; b):
			if (a | type) == "object" and (b | type) == "object" then
				# for some reason, "a" and "b" go out of scope for reduce??
				a as $a | b as $b |
				reduce (a + b | keys_unsorted[]) as $k
					({}; .[$k] = meld($a[$k]; $b[$k]))
			elif (a | type) == "array" and (b | type) == "array" then
				a + b
			elif b == null then
				a
			else
				b
			end;
		meld(.[0]; .[1])
	' <<<"[$strategy,$newStrategy]")"
done
jq -c . <<<"$strategy" > /dev/null # sanity check

if [ -t 1 ]; then
	jq <<<"$strategy"
else
	cat <<<"$strategy"
fi


================================================
FILE: .github/workflows/munge-pr.yml
================================================
name: Munge PR

on:
  pull_request_target:

permissions:
  contents: read
  pull-requests: write

defaults:
  run:
    shell: 'bash -Eeuo pipefail -x {0}'

env:
  # https://github.com/docker-library/bashbrew/issues/10
  GIT_LFS_SKIP_SMUDGE: 1

# limit to one run at a time per pull request
# no cancel-in-progress so that the running diff comment can finish before the next since the old diff could be helpful for review
concurrency:
  # this should use "github.ref", but:
  # "For pull requests events except pull_request_target, it is refs/pull/<pr_number>/merge. pull_request_target events have the ref from the base branch." 🙃
  # https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#github-context
  #group: ${{ github.workflow }}-${{ github.ref }}
  # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target
  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}
  cancel-in-progress: false

jobs:

  gather:
    name: Gather Metadata
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          # ideally this would be "github.event.pull_request.merge_commit_sha" but according to https://docs.github.com/en/free-pro-team@latest/rest/reference/pulls#get-a-pull-request if "mergeable" is null (meaning there's a background job in-progress to check mergeability), that value is undefined...
          ref: ${{ github.event.pull_request.head.sha }}
          fetch-depth: 0
      - id: gather
        name: Affected Images
        run: |
          (set +x; echo "::stop-commands::$(echo -n ${{ github.token }} | sha256sum | head -c 64)")
          git fetch --quiet https://github.com/docker-library/official-images.git master
          externalPins="$(git diff --no-renames --name-only FETCH_HEAD...HEAD -- '.external-pins/*/**')"
          externalPinTags="$(
            if [ -n "$externalPins" ]; then
              # doing backflips to run "tag.sh" from master instead of from the PR
              git show FETCH_HEAD:.external-pins/tag.sh > ~/master-external-pins-tag.sh
              chmod +x ~/master-external-pins-tag.sh
              ~/master-external-pins-tag.sh $externalPins
            fi
          )"
          images="$(git diff --no-renames --name-only FETCH_HEAD...HEAD -- library/)"
          if [ -n "$images" ]; then
            new="$(git diff --no-renames --name-only --diff-filter=A FETCH_HEAD...HEAD -- $images)"
            deleted="$(git diff --no-renames --name-only --diff-filter=D FETCH_HEAD...HEAD -- $images)"
          else
            new=
            deleted=
          fi
          export images new deleted externalPins externalPinTags
          images="$(jq -cn '
            (env.images | rtrimstr("\n") | split("\n")) as $images
            | (env.new | rtrimstr("\n") | split("\n")) as $new
            | (env.deleted | rtrimstr("\n") | split("\n")) as $deleted
            | (env.externalPins | rtrimstr("\n") | split("\n")) as $externalPins
            | (env.externalPinTags | rtrimstr("\n") | split("\n")) as $externalPinTags
            | {
              images: $images,
              count: ($images | length),
              new: $new,
              deleted: $deleted,
              externalPins: $externalPins,
              externalPinTags: $externalPinTags,
              externalPinsCount: ($externalPins | length),
            }
            | .imagesAndExternalPinsCount = (.count + .externalPinsCount) # man, I *really* do not love GitHub Actions expressions...
          ')"
          jq . <<<"$images"
          set +x
          echo "::$(echo -n ${{ github.token }} | sha256sum | head -c 64)::"
          echo "images=$images" >> "$GITHUB_OUTPUT"
    outputs:
      images: '${{ steps.gather.outputs.images }}'

  apply-labels:
    name: Apply Labels
    runs-on: ubuntu-latest
    needs: gather
    permissions:
      contents: read
      pull-requests: write
      # "issues: write" is now needed to create new labels
      # https://github.com/orgs/community/discussions/156181
      # but documentation still shows that pull-requests write should be enough 😓
      # https://docs.github.com/en/rest/issues/labels?apiVersion=2022-11-28#create-a-label
      issues: write
    if: fromJSON(needs.gather.outputs.images).imagesAndExternalPinsCount > 0
    steps:
      - name: Apply Labels
        uses: actions/github-script@v7
        env:
          IMAGES: ${{ needs.gather.outputs.images }}
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const data = JSON.parse(process.env.IMAGES);
            var labels = [
              ...data.images, // "library/debian", ...
              ...new Set(data.externalPinTags.map(x => 'external/' + x.replace(/:.+$/, ''))), // "external/mcr.microsoft.com/windows/servercore", ...
            ];
            if (data.new.length > 0) {
              labels.push('new-image');
            }
            console.log(labels);
            await github.rest.issues.addLabels({
              owner: context.repo.owner,
              repo: context.repo.repo,
              issue_number: context.payload.pull_request.number,
              labels: labels,
            });

  diff:
    name: Diff Comment
    runs-on: ubuntu-latest
    needs: gather
    if: fromJSON(needs.gather.outputs.images).imagesAndExternalPinsCount > 0
    steps:
      - uses: actions/checkout@v4
        with:
          # again, this would ideally be "github.event.pull_request.merge_commit_sha" but we might not have that yet when this runs, so we compromise by checkout out the latest code from the target branch (so we get the latest "diff-pr.sh" script to run)
          ref: ${{ github.event.pull_request.base.ref }}
          fetch-depth: 0
      - uses: ./.github/workflows/.bashbrew
        with:
          build: 'docker'
      - name: Prepare Environment
        run: |
          # this avoids running repo-local scripts (to avoid CVE-2020-15228 via the scripts being updated to write nasty things to $GITHUB_ENV)
          docker build --tag oisupport/bashbrew:diff-pr .
      - name: Gather Maintainers
        env:
          IMAGES: ${{ needs.gather.outputs.images }}
        run: |
          files="$(jq <<<"$IMAGES" -r '.images | map(@sh) | join(" ")')"
          eval "set -- $files"
          for f; do
            if [ -s "$f" ]; then
              docker run --rm --read-only --tmpfs /tmp oisupport/bashbrew:diff-pr \
                bashbrew cat --format '  - `{{ $.RepoName }}`:{{ range .Manifest.Global.Maintainers }} @{{ .Handle }}{{ end }}' "$f"
            fi
          done | tee "$GITHUB_WORKSPACE/oi-pr.maint"
      - name: Generate Diff
        env:
          GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}
        run: |
          docker run --rm --read-only --tmpfs /tmp oisupport/bashbrew:diff-pr ./diff-pr.sh "$GITHUB_PR_NUMBER" | tee "$GITHUB_WORKSPACE/oi-pr.diff"
      - name: Comment
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const commentText = 'Diff for ' + context.payload.pull_request.head.sha + ':';

            const fs = require('fs');
            const diff = fs.readFileSync(process.env.GITHUB_WORKSPACE + '/oi-pr.diff').toString().trimEnd();
            var body = "<details>\n<summary>" + commentText + "</summary>\n\n```diff\n" + diff + "\n```\n\n</details>";
            const maint = fs.readFileSync(process.env.GITHUB_WORKSPACE + '/oi-pr.maint').toString().trimEnd();
            if (maint.length > 0) {
              body += "\n\nRelevant Maintainers:\n\n" + maint;
            }
            fs.writeFileSync(process.env.GITHUB_STEP_SUMMARY, body);

            // https://docs.github.com/en/graphql/reference/mutations#minimizecomment
            const minimizeql = `
              mutation($comment: ID!) {
                minimizeComment(input: { classifier: OUTDATED, clientMutationId: "doi-munge-pr", subjectId: $comment }) {
                  clientMutationId
                  minimizedComment {
                    isMinimized
                    minimizedReason
                  }
                }
              }
            `;
            // https://docs.github.com/en/graphql/reference/mutations#unminimizecomment
            const unminimizeql = `
              mutation($comment: ID!) {
                unminimizeComment(input: { clientMutationId: "doi-munge-pr", subjectId: $comment }) {
                  clientMutationId
                  unminimizedComment {
                    isMinimized
                    minimizedReason
                  }
                }
              }
            `;

            needNewComment = true;
            console.log('Reviewing existing comments...');
            for await (const { data: comments } of github.paginate.iterator(
              github.rest.issues.listComments,
              {
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.payload.pull_request.number,
              }
            )) {
              for (const comment of comments) {
                if (comment.user.login === 'github-actions[bot]') {
                  if (needNewComment && comment.body.includes(commentText)) {
                    needNewComment = false;
                    console.log('Unhiding comment: ' + comment.id + ' (' + comment.node_id + ')');
                    const result = await github.graphql(unminimizeql, { comment: comment.node_id });
                    console.log('- result: ' + JSON.stringify(result));
                  } else {
                    console.log('Hiding comment: ' + comment.id + ' (' + comment.node_id + ')');
                    const result = await github.graphql(minimizeql, { comment: comment.node_id });
                    console.log('- result: ' + JSON.stringify(result));
                  }
                }
              }
            }
            if (needNewComment) {
              console.log('Creating new comment...');
              await github.rest.issues.createComment({
                owner: context.repo.owner,
                repo: context.repo.repo,
                issue_number: context.payload.pull_request.number,
                body: body,
              });
            }


================================================
FILE: .github/workflows/naughty.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

if [ "$#" -eq 0 ]; then
	git fetch --quiet https://github.com/docker-library/official-images.git master
	changes="$(git diff --no-renames --name-only --diff-filter='d' FETCH_HEAD...HEAD -- library/)"
	repos="$(xargs -rn1 basename <<<"$changes")"
	set -- $repos
fi

if [ "$#" -eq 0 ]; then
	echo >&2 'No library/ changes detected, skipping.'
	exit
fi

export BASHBREW_LIBRARY="$PWD/library"

bashbrew from --uniq "$@" > /dev/null

numNaughty=0

if badTags="$(bashbrew list "$@" | grep -E ':.+latest.*|:.*latest.+')" && [ -n "$badTags" ]; then
	echo >&2
	echo >&2 "Incorrectly formatted 'latest' tags detected:"
	echo >&2 ' ' $badTags
	echo >&2
	echo >&2 'Read https://github.com/docker-library/official-images#tags-and-aliases for more details.'
	echo >&2
	(( ++numNaughty ))
fi

naughtySharedTags="$(./naughty-sharedtags.sh "$@")"
if [ -n "$naughtySharedTags" ]; then
	echo >&2
	echo >&2 "Invalid 'SharedTags' combinations detected:"
	echo >&2
	echo >&2 "$naughtySharedTags"
	echo >&2
	echo >&2 'Read https://github.com/docker-library/faq#whats-the-difference-between-shared-and-simple-tags for more details.'
	echo >&2
	(( ++numNaughty ))
fi

naughtyFrom="$(./naughty-from.sh "$@")"
if [ -n "$naughtyFrom" ]; then
	echo >&2
	echo >&2 "Invalid 'FROM' + 'Architectures' combinations detected:"
	echo >&2
	echo >&2 "$naughtyFrom"
	echo >&2
	echo >&2 'Read https://github.com/docker-library/official-images#multiple-architectures for more details.'
	echo >&2
	(( ++numNaughty ))
fi

naughtyConstraints="$(./naughty-constraints.sh "$@")"
if [ -n "$naughtyConstraints" ]; then
	echo >&2
	echo >&2 "Invalid 'FROM' + 'Constraints' combinations detected:"
	echo >&2
	echo >&2 "$naughtyConstraints"
	echo >&2
	(( ++numNaughty ))
fi

naughtyCommits="$(./naughty-commits.sh "$@")"
if [ -n "$naughtyCommits" ]; then
	echo >&2
	echo >&2 "Unpleasant commits detected:"
	echo >&2
	echo >&2 "$naughtyCommits"
	echo >&2
	(( ++numNaughty ))
fi

exit "$numNaughty"


================================================
FILE: .github/workflows/test-pr.yml
================================================
name: Test PR

on:
  pull_request:

defaults:
  run:
    shell: 'bash -Eeuo pipefail -x {0}'

env:
  # https://github.com/docker-library/bashbrew/issues/10
  GIT_LFS_SKIP_SMUDGE: 1
  
# cancel existing runs if user makes another push
concurrency:
  group: ${{ github.workflow }}-${{ github.ref }}
  cancel-in-progress: ${{ github.event_name == 'pull_request' }}

permissions:
  contents: read

jobs:

  naughty:
    name: Naughty
    runs-on: ubuntu-latest
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: ./.github/workflows/.bashbrew
      - name: Check for Common Issues
        run: .github/workflows/naughty.sh

  generate-jobs:
    name: Generate Jobs
    runs-on: ubuntu-latest
    outputs:
      strategy: ${{ steps.generate-jobs.outputs.strategy }}
      length: ${{ steps.generate-jobs.outputs.length }}
    steps:
      - uses: actions/checkout@v4
        with:
          fetch-depth: 0
      - uses: ./.github/workflows/.bashbrew
      - id: generate-jobs
        name: Generate Jobs
        run: |
          strategy="$(.github/workflows/generate.sh)"
          echo "strategy=$strategy" >> "$GITHUB_OUTPUT"
          jq . <<<"$strategy" # sanity check / debugging aid
          length="$(jq <<<"$strategy" -r '.matrix.include | length')"
          echo "length=$length" >> "$GITHUB_OUTPUT"

  test:
    needs: generate-jobs
    strategy: ${{ fromJSON(needs.generate-jobs.outputs.strategy) }}
    if: needs.generate-jobs.outputs.length > 0
    name: ${{ matrix.name }}
    runs-on: ${{ matrix.os }}
    steps:
      - name: Prepare Git
        run: |
          # enable symlinks on Windows (https://git-scm.com/docs/git-config#Documentation/git-config.txt-coresymlinks)
          git config --global core.symlinks true
          # also, make sure Windows symlinks are *real* symlinks (https://github.com/git-for-windows/git/pull/156)
          echo 'MSYS=winsymlinks:nativestrict' >> "$GITHUB_ENV"
          # https://github.com/docker-library/bashbrew/blob/a40a54d4d81b9fd2e39b4d7ba3fe203e8b022a67/scripts/github-actions/generate.sh#L146-L149
        if: runner.os == 'Windows'
      - uses: actions/checkout@v4
      - uses: ./.github/workflows/.bashbrew
      - name: Prepare Environment
        run: ${{ matrix.runs.prepare }}
      - name: Pull Dependencies
        run: ${{ matrix.runs.pull }}
      - name: Build ${{ matrix.name }}
        run: ${{ matrix.runs.build }}
      - name: History ${{ matrix.name }}
        run: ${{ matrix.runs.history }}
      - name: Test ${{ matrix.name }}
        run: ${{ matrix.runs.test }}
      - name: '"docker images"'
        run: ${{ matrix.runs.images }}


================================================
FILE: .gitignore
================================================
.git


================================================
FILE: CODE-OF-CONDUCT.md
================================================
# Contributor Covenant Code of Conduct

## Our Pledge

We as members, contributors, and leaders pledge to make participation in our community a harassment-free experience for everyone, regardless of age, body size, visible or invisible disability, ethnicity, sex characteristics, gender identity and expression, level of experience, education, socio-economic status, nationality, personal appearance, race, religion, or sexual identity and orientation.

We pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.

## Our Standards

Examples of behavior that contributes to a positive environment for our community include:

-	Demonstrating empathy and kindness toward other people
-	Being respectful of differing opinions, viewpoints, and experiences
-	Giving and gracefully accepting constructive feedback
-	Accepting responsibility and apologizing to those affected by our mistakes, and learning from the experience
-	Focusing on what is best not just for us as individuals, but for the overall community

Examples of unacceptable behavior include:

-	The use of sexualized language or imagery, and sexual attention or advances of any kind
-	Trolling, insulting or derogatory comments, and personal or political attacks
-	Public or private harassment
-	Publishing others' private information, such as a physical or email address, without their explicit permission
-	Other conduct which could reasonably be considered inappropriate in a professional setting

## Enforcement Responsibilities

Community leaders are responsible for clarifying and enforcing our standards of acceptable behavior and will take appropriate and fair corrective action in response to any behavior that they deem inappropriate, threatening, offensive, or harmful.

Community leaders have the right and responsibility to remove, edit, or reject comments, commits, code, wiki edits, issues, and other contributions that are not aligned to this Code of Conduct, and will communicate reasons for moderation decisions when appropriate.

## Scope

This Code of Conduct applies within all community spaces, and also applies when an individual is officially representing the community in public spaces. Examples of representing our community include using an official e-mail address, posting via an official social media account, or acting as an appointed representative at an online or offline event.

## Enforcement

Instances of abusive, harassing, or otherwise unacceptable behavior may be reported to the community leaders responsible for enforcement as listed in [the MAINTAINERS file](https://github.com/docker-library/official-images/blob/master/MAINTAINERS). All complaints will be reviewed and investigated promptly and fairly.

All community leaders are obligated to respect the privacy and security of the reporter of any incident.

## Attribution

This Code of Conduct is adapted from the [Contributor Covenant](https://www.contributor-covenant.org), version 2.0, available at https://www.contributor-covenant.org/version/2/0/code_of_conduct.html.

Community Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).

For answers to common questions about this code of conduct, see the FAQ at https://www.contributor-covenant.org/faq. Translations are available at https://www.contributor-covenant.org/translations.


================================================
FILE: Dockerfile
================================================
# FYI, this base image is built via ".github/workflows/.bashbrew/action.yml" (from https://github.com/docker-library/bashbrew/tree/master/Dockerfile)
FROM oisupport/bashbrew:base

RUN set -eux; \
	apt-get update; \
	apt-get install -y --no-install-recommends \
# wget for downloading files (especially in tests, which run in this environment)
		ca-certificates \
		wget \
# git for cloning source code
		git \
# gawk for diff-pr.sh
		gawk \
# tar -tf in diff-pr.sh
		bzip2 \
# jq for diff-pr.sh
		jq \
	; \
	rm -rf /var/lib/apt/lists/*

ENV DIR /usr/src/official-images
ENV BASHBREW_LIBRARY $DIR/library

# crane for diff-pr.sh
# https://gcr.io/go-containerregistry/crane:latest
# https://explore.ggcr.dev/?image=gcr.io/go-containerregistry/crane:latest
COPY --from=gcr.io/go-containerregistry/crane@sha256:fc86bcad43a000c2a1ca926a1e167db26c053cebc3fa5d14285c72773fb8c11d /ko-app/crane /usr/local/bin/

WORKDIR $DIR
COPY . $DIR


================================================
FILE: LICENSE
================================================

                                 Apache License
                           Version 2.0, January 2004
                        http://www.apache.org/licenses/

   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION

   1. Definitions.

      "License" shall mean the terms and conditions for use, reproduction,
      and distribution as defined by Sections 1 through 9 of this document.

      "Licensor" shall mean the copyright owner or entity authorized by
      the copyright owner that is granting the License.

      "Legal Entity" shall mean the union of the acting entity and all
      other entities that control, are controlled by, or are under common
      control with that entity. For the purposes of this definition,
      "control" means (i) the power, direct or indirect, to cause the
      direction or management of such entity, whether by contract or
      otherwise, or (ii) ownership of fifty percent (50%) or more of the
      outstanding shares, or (iii) beneficial ownership of such entity.

      "You" (or "Your") shall mean an individual or Legal Entity
      exercising permissions granted by this License.

      "Source" form shall mean the preferred form for making modifications,
      including but not limited to software source code, documentation
      source, and configuration files.

      "Object" form shall mean any form resulting from mechanical
      transformation or translation of a Source form, including but
      not limited to compiled object code, generated documentation,
      and conversions to other media types.

      "Work" shall mean the work of authorship, whether in Source or
      Object form, made available under the License, as indicated by a
      copyright notice that is included in or attached to the work
      (an example is provided in the Appendix below).

      "Derivative Works" shall mean any work, whether in Source or Object
      form, that is based on (or derived from) the Work and for which the
      editorial revisions, annotations, elaborations, or other modifications
      represent, as a whole, an original work of authorship. For the purposes
      of this License, Derivative Works shall not include works that remain
      separable from, or merely link (or bind by name) to the interfaces of,
      the Work and Derivative Works thereof.

      "Contribution" shall mean any work of authorship, including
      the original version of the Work and any modifications or additions
      to that Work or Derivative Works thereof, that is intentionally
      submitted to Licensor for inclusion in the Work by the copyright owner
      or by an individual or Legal Entity authorized to submit on behalf of
      the copyright owner. For the purposes of this definition, "submitted"
      means any form of electronic, verbal, or written communication sent
      to the Licensor or its representatives, including but not limited to
      communication on electronic mailing lists, source code control systems,
      and issue tracking systems that are managed by, or on behalf of, the
      Licensor for the purpose of discussing and improving the Work, but
      excluding communication that is conspicuously marked or otherwise
      designated in writing by the copyright owner as "Not a Contribution."

      "Contributor" shall mean Licensor and any individual or Legal Entity
      on behalf of whom a Contribution has been received by Licensor and
      subsequently incorporated within the Work.

   2. Grant of Copyright License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      copyright license to reproduce, prepare Derivative Works of,
      publicly display, publicly perform, sublicense, and distribute the
      Work and such Derivative Works in Source or Object form.

   3. Grant of Patent License. Subject to the terms and conditions of
      this License, each Contributor hereby grants to You a perpetual,
      worldwide, non-exclusive, no-charge, royalty-free, irrevocable
      (except as stated in this section) patent license to make, have made,
      use, offer to sell, sell, import, and otherwise transfer the Work,
      where such license applies only to those patent claims licensable
      by such Contributor that are necessarily infringed by their
      Contribution(s) alone or by combination of their Contribution(s)
      with the Work to which such Contribution(s) was submitted. If You
      institute patent litigation against any entity (including a
      cross-claim or counterclaim in a lawsuit) alleging that the Work
      or a Contribution incorporated within the Work constitutes direct
      or contributory patent infringement, then any patent licenses
      granted to You under this License for that Work shall terminate
      as of the date such litigation is filed.

   4. Redistribution. You may reproduce and distribute copies of the
      Work or Derivative Works thereof in any medium, with or without
      modifications, and in Source or Object form, provided that You
      meet the following conditions:

      (a) You must give any other recipients of the Work or
          Derivative Works a copy of this License; and

      (b) You must cause any modified files to carry prominent notices
          stating that You changed the files; and

      (c) You must retain, in the Source form of any Derivative Works
          that You distribute, all copyright, patent, trademark, and
          attribution notices from the Source form of the Work,
          excluding those notices that do not pertain to any part of
          the Derivative Works; and

      (d) If the Work includes a "NOTICE" text file as part of its
          distribution, then any Derivative Works that You distribute must
          include a readable copy of the attribution notices contained
          within such NOTICE file, excluding those notices that do not
          pertain to any part of the Derivative Works, in at least one
          of the following places: within a NOTICE text file distributed
          as part of the Derivative Works; within the Source form or
          documentation, if provided along with the Derivative Works; or,
          within a display generated by the Derivative Works, if and
          wherever such third-party notices normally appear. The contents
          of the NOTICE file are for informational purposes only and
          do not modify the License. You may add Your own attribution
          notices within Derivative Works that You distribute, alongside
          or as an addendum to the NOTICE text from the Work, provided
          that such additional attribution notices cannot be construed
          as modifying the License.

      You may add Your own copyright statement to Your modifications and
      may provide additional or different license terms and conditions
      for use, reproduction, or distribution of Your modifications, or
      for any such Derivative Works as a whole, provided Your use,
      reproduction, and distribution of the Work otherwise complies with
      the conditions stated in this License.

   5. Submission of Contributions. Unless You explicitly state otherwise,
      any Contribution intentionally submitted for inclusion in the Work
      by You to the Licensor shall be under the terms and conditions of
      this License, without any additional terms or conditions.
      Notwithstanding the above, nothing herein shall supersede or modify
      the terms of any separate license agreement you may have executed
      with Licensor regarding such Contributions.

   6. Trademarks. This License does not grant permission to use the trade
      names, trademarks, service marks, or product names of the Licensor,
      except as required for reasonable and customary use in describing the
      origin of the Work and reproducing the content of the NOTICE file.

   7. Disclaimer of Warranty. Unless required by applicable law or
      agreed to in writing, Licensor provides the Work (and each
      Contributor provides its Contributions) on an "AS IS" BASIS,
      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
      implied, including, without limitation, any warranties or conditions
      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A
      PARTICULAR PURPOSE. You are solely responsible for determining the
      appropriateness of using or redistributing the Work and assume any
      risks associated with Your exercise of permissions under this License.

   8. Limitation of Liability. In no event and under no legal theory,
      whether in tort (including negligence), contract, or otherwise,
      unless required by applicable law (such as deliberate and grossly
      negligent acts) or agreed to in writing, shall any Contributor be
      liable to You for damages, including any direct, indirect, special,
      incidental, or consequential damages of any character arising as a
      result of this License or out of the use or inability to use the
      Work (including but not limited to damages for loss of goodwill,
      work stoppage, computer failure or malfunction, or any and all
      other commercial damages or losses), even if such Contributor
      has been advised of the possibility of such damages.

   9. Accepting Warranty or Additional Liability. While redistributing
      the Work or Derivative Works thereof, You may choose to offer,
      and charge a fee for, acceptance of support, warranty, indemnity,
      or other liability obligations and/or rights consistent with this
      License. However, in accepting such obligations, You may act only
      on Your own behalf and on Your sole responsibility, not on behalf
      of any other Contributor, and only if You agree to indemnify,
      defend, and hold each Contributor harmless for any liability
      incurred by, or claims asserted against, such Contributor by reason
      of your accepting any such warranty or additional liability.

   END OF TERMS AND CONDITIONS

   Copyright 2014 Docker, Inc.

   Licensed under the Apache License, Version 2.0 (the "License");
   you may not use this file except in compliance with the License.
   You may obtain a copy of the License at

       http://www.apache.org/licenses/LICENSE-2.0

   Unless required by applicable law or agreed to in writing, software
   distributed under the License is distributed on an "AS IS" BASIS,
   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   See the License for the specific language governing permissions and
   limitations under the License.


================================================
FILE: MAINTAINERS
================================================
# This file lists the maintainers of the Official Images program at large, not necessarily the maintainers of any given image.

Tianon Gravi <admwiggin@gmail.com> (@tianon)
Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)

# Emeritus: Talon Bowler <nolat301@gmail.com> (@daghack)
# Emeritus: Peter Salvatore <peter@psftw.com> (@psftw)

# To find the maintainers for a given image, see "library/IMAGENAME" in this repository, or see the "Maintained by:" section of the "Quick Reference" of the image description on Docker Hub (or in the "docs" repo at https://github.com/docker-library/docs).


================================================
FILE: NEW-IMAGE-CHECKLIST.md
================================================
# Checklist for Review

**NOTE:** This checklist is intended for the use of the Official Images maintainers both to track the status of your PR and to help inform you and others of where we're at. As such, please leave the "checking" of items to the repository maintainers. If there is a point below for which you would like to provide additional information or note completion, please do so by commenting on the PR. Thanks! (and thanks for staying patient with us :heart:)

-	[ ] associated with or contacted upstream?
-	[ ] available under [an OSI-approved license](https://opensource.org/licenses)?
-	[ ] does it fit into one of the common categories? ("service", "language stack", "base distribution")
-	[ ] is it reasonably popular, or does it solve a particular use case well?
-	[ ] does a [documentation](https://github.com/docker-library/docs/blob/master/README.md) PR exist? (should be reviewed and merged at roughly the same time so that we don't have an empty image page on the Hub for very long)
-	[ ] official-images maintainer dockerization review for best practices and cache gotchas/improvements (ala [the official review guidelines](https://github.com/docker-library/official-images/blob/master/README.md#review-guidelines))?
-	[ ] 2+ official-images maintainer dockerization review?
-	[ ] existing official images have been considered as a base? (ie, if `foobar` needs Node.js, has `FROM node:...` instead of grabbing `node` via other means been considered?)
-	[ ] if `FROM scratch`, tarballs only exist in a single commit within the associated history?
-	[ ] passes current tests? any simple new tests that might be appropriate to add, [assuming this image has any other images it might be interchangeable with](https://github.com/docker-library/official-images/tree/HEAD/test#what-tests-belong-here)?


================================================
FILE: README.md
================================================
# Docker Official Images

## Table of Contents

<!-- AUTOGENERATED TOC -->

1.	[Docker Official Images](#docker-official-images)
	1.	[Table of Contents](#table-of-contents)
	2.	[What are "Official Images"?](#what-are-official-images)
	3.	[Architectures other than amd64?](#architectures-other-than-amd64)
	4.	[More FAQs?](#more-faqs)
	5.	[Contributing to the standard library](#contributing-to-the-standard-library)
		1.	[Review Guidelines](#review-guidelines)
			1.	[Maintainership](#maintainership)
			2.	[Repeatability](#repeatability)
			3.	[Consistency](#consistency)
			4.	[Clarity](#clarity)
			5.	[init](#init)
			6.	[Cacheability](#cacheability)
			7.	[Security](#security)
				1.	[Image Build](#image-build)
				2.	[Runtime Configuration](#runtime-configuration)
				3.	[Security Releases](#security-releases)
			8.	[Multiple Architectures](#multiple-architectures)
		2.	[Commitment](#commitment)
	6.	[Library definition files](#library-definition-files)
		1.	[Filenames](#filenames)
		2.	[Tags and aliases](#tags-and-aliases)
		3.	[Instruction format](#instruction-format)
		4.	[Creating a new repository](#creating-a-new-repository)
		5.	[Adding a new tag in an existing repository (that you're the maintainer of)](#adding-a-new-tag-in-an-existing-repository-that-youre-the-maintainer-of)
		6.	[Change to a tag in an existing repository (that you're the maintainer of)](#change-to-a-tag-in-an-existing-repository-that-youre-the-maintainer-of)
	7.	[Bashbrew](#bashbrew)

<!-- AUTOGENERATED TOC -->

## What are "Official Images"?

The Docker Official Images are curated images [hosted on Docker Hub](https://hub.docker.com/u/library). The main tenets are:

- Focus on [Free](https://www.debian.org/social_contract#guidelines) and [Open-Source](https://opensource.org/) Software

- Support [multiple architectures](#architectures-other-than-amd64)

- Exemplify [`Dockerfile` best practices](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)

- [Actively rebuild](#library-definition-files) for updates and security fixes

- Adhere to upstream recommendations

- Add minimal quality-of-life behavior for the container environment where fit

See [Docker's documentation](https://docs.docker.com/docker-hub/official_repos/) for a good high-level overview of the program.

In essence we strive to heed upstream's recommendations on how they intend for their software to be consumed. Many images are maintained in collaboration with the relevant upstream project if not maintained directly by them. Additionally we aim to exemplify the best practices for Dockerfiles to serve as a reference when making or deriving your own images from them.

(If you are a representative of an upstream for which there exists an image and you would like to get involved, please see the [Maintainership](#maintainership) section below!)

## Architectures other than amd64?

Some images have been ported for other architectures, and many of these are officially supported (to various degrees).

-	Architectures officially supported by Docker, Inc. for running Docker: (see [download.docker.com](https://download.docker.com/linux/))
	-	ARMv6 32-bit (`arm32v6`): https://hub.docker.com/u/arm32v6/
	-	ARMv7 32-bit (`arm32v7`): https://hub.docker.com/u/arm32v7/
	-	ARMv8 64-bit (`arm64v8`): https://hub.docker.com/u/arm64v8/
	-	Linux x86-64 (`amd64`): https://hub.docker.com/u/amd64/
	-	Windows x86-64 (`windows-amd64`): https://hub.docker.com/u/winamd64/
-	Other architectures built by official images: (but *not* officially supported by Docker, Inc.)
	-	ARMv5 32-bit (`arm32v5`): https://hub.docker.com/u/arm32v5/
	-	IBM POWER8 (`ppc64le`): https://hub.docker.com/u/ppc64le/
	-	IBM z Systems (`s390x`): https://hub.docker.com/u/s390x/
	-	MIPS64 LE (`mips64le`): https://hub.docker.com/u/mips64le/
	-	RISC-V 64-bit (`riscv64`): https://hub.docker.com/u/riscv64/
	-	x86/i686 (`i386`): https://hub.docker.com/u/i386/

These other architectures are included under the non-prefixed images via [OCI "image indexes"](https://github.com/opencontainers/image-spec/blob/v1.1.1/image-index.md), such that, for example, `docker run hello-world` should run as-is on all supported platforms.

If you're curious about how these are built, head over to [our FAQ entry](https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what) to see an explanation of the process or visit [meta-scripts](https://github.com/docker-library/meta-scripts) to see the build process source files.

See the [multi-arch section](#multiple-architectures) below for recommendations in adding more architectures to an official image.

## More FAQs?

Yes! We have [a dedicated FAQ repository](https://github.com/docker-library/faq) where we try to collect other common questions (both about the program and about our practices).

## Contributing to the standard library

Thank you for your interest in the Docker official images project! We strive to make these instructions as simple and straightforward as possible, but if you find yourself lost, don't hesitate to seek us out on [Libera.Chat IRC](https://libera.chat) in channel `#docker-library` or by creating a GitHub issue here.

Be sure to familiarize yourself with [Official Repositories on Docker Hub](https://docs.docker.com/docker-hub/official_repos/) and the [Best practices for writing Dockerfiles](https://docs.docker.com/articles/dockerfile_best-practices/) in the Docker documentation. These will be the foundation of the review process performed by the official images maintainers. If you'd like the review process to go more smoothly, please ensure that your `Dockerfile`s adhere to all the points mentioned there, as well as [below](README.md#review-guidelines), before submitting a pull request.

Also, the Hub descriptions for these images are currently stored separately in the [`docker-library/docs` repository](https://github.com/docker-library/docs), whose [`README.md` file](https://github.com/docker-library/docs/blob/master/README.md) explains more about how it's structured and how to contribute to it. Please be prepared to submit a PR there as well, pending acceptance of your image here.

### Review Guidelines

Because the official images are intended to be learning tools for those new to Docker as well as the base images for advanced users to build their production releases, we review each proposed `Dockerfile` to ensure that it meets a minimum standard for quality and maintainability. While some of that standard is hard to define (due to subjectivity), as much as possible is defined here, while also adhering to the "Best Practices" where appropriate.

A checklist which may be used by the maintainers during review can be found in [`NEW-IMAGE-CHECKLIST.md`](NEW-IMAGE-CHECKLIST.md).

#### Maintainership

Version bumps and security fixes should be attended to in a timely manner.

If you do not represent upstream and upstream becomes interested in maintaining the image, steps should be taken to ensure a smooth transition of image maintainership over to upstream.

For upstreams interested in taking over maintainership of an existing repository, the first step is to get involved in the existing repository. Making comments on issues, proposing changes, and making yourself known within the "image community" (even if that "community" is just the current maintainer) are all important places to start to ensure that the transition is unsurprising to existing contributors and users.

When taking over an existing repository, please ensure that the entire Git history of the original repository is kept in the new upstream-maintained repository to make sure the review process isn't stalled during the transition. This is most easily accomplished by forking the new from the existing repository, but can also be accomplished by fetching the commits directly from the original and pushing them into the new repo (ie, `git fetch https://github.com/jsmith/example.git master`, `git rebase FETCH_HEAD`, `git push -f`). On GitHub, an alternative is to move ownership of the git repository. This can be accomplished without giving either group admin access to the other owner's repository:

-	create temporary intermediary organization
	-	[docker-library-transitioner](https://github.com/docker-library-transitioner) is available for this purpose if you would like our help
-	give old and new owners admin access to intermediary organization
-	old owner transfers repo ownership to intermediary organization
-	new owner transfers repo ownership to its new home
	-	recommend that old owner does not fork new repo back into the old organization to ensure that GitHub redirects will just work

#### Repeatability

Rebuilding the same `Dockerfile` should result in the same version of the image being packaged, even if the second build happens several versions later, or the build should fail outright, such that an inadvertent rebuild of a `Dockerfile` tagged as `0.1.0` doesn't end up containing `0.2.3`. For example, if using `apt` to install the main program for the image, be sure to pin it to a specific version (ex: `... apt-get install -y my-package=0.1.0 ...`). For dependent packages installed by `apt` there is not usually a need to pin them to a version.

No official images can be derived from, or depend on, non-official images (allowing the non-image [`scratch`](https://hub.docker.com/_/scratch/) and the intentionally limited exceptions pinned in [`.external-pins`](.external-pins) -- see also [`.external-pins/list.sh`](.external-pins/list.sh)).

#### Consistency

All official images should provide a consistent interface. A beginning user should be able to `docker run official-image bash` (or `sh`) without needing to learn about `--entrypoint`. It is also nice for advanced users to take advantage of entrypoint, so that they can `docker run official-image --arg1 --arg2` without having to specify the binary to execute.

1.	If the startup process does not need arguments, just use `CMD`:

	```Dockerfile
	CMD ["irb"]
	```

2.	If there is initialization that needs to be done on start, like creating the initial database, use an `ENTRYPOINT` along with `CMD`:

	```Dockerfile
	ENTRYPOINT ["/docker-entrypoint.sh"]
	CMD ["postgres"]
	```

	1.	Ensure that `docker run official-image bash` (or `sh`) works too. The easiest way is to check for the expected command and if it is something else, just `exec "$@"` (run whatever was passed, properly keeping the arguments escaped).

		```sh
		#!/bin/sh
		set -e

		# this if will check if the first argument is a flag
		# but only works if all arguments require a hyphenated flag
		# -v; -SL; -f arg; etc will work, but not arg1 arg2
		if [ "$#" -eq 0 ] || [ "${1#-}" != "$1" ]; then
		    set -- mongod "$@"
		fi

		# check for the expected command
		if [ "$1" = 'mongod' ]; then
		    # init db stuff....
		    # use gosu (or su-exec) to drop to a non-root user
		    exec gosu mongod "$@"
		fi

		# else default to run whatever the user wanted like "bash" or "sh"
		exec "$@"
		```

3.	If the image only contains the main executable and its linked libraries (ie no shell) then it is fine to use the executable as the `ENTRYPOINT`, since that is the only thing that can run:

	```Dockerfile
	ENTRYPOINT ["fully-static-binary"]
	CMD ["--help"]
	```

	The most common indicator of whether this is appropriate is that the image `Dockerfile` starts with [`scratch`](https://registry.hub.docker.com/_/scratch/) (`FROM scratch`).

#### Clarity

Try to make the `Dockerfile` easy to understand/read. It may be tempting, for the sake of brevity, to put complicated initialization details into a standalone script and merely add a `RUN` command in the `Dockerfile`. However, this causes the resulting `Dockerfile` to be overly opaque, and such `Dockerfile`s are unlikely to pass review. Instead, it is recommended to put all the commands for initialization into the `Dockerfile` as appropriate `RUN` or `ENV` command combinations. To find good examples, look at the current official images.

Some examples at the time of writing:

-	[php](https://github.com/docker-library/php/blob/b4aeb948e2e240c732d78890ff03285b16e8edda/5.6/Dockerfile)
-	[python](https://github.com/docker-library/python/blob/3e5826ad0c6e29f07f6dc7ff8f30b4c54385d1bb/3.4/Dockerfile)
-	[ruby:2.2](https://github.com/docker-library/ruby/blob/e34b201a0f0b49818fc8373f6a9148e13d546bdf/2.2/Dockerfile)

#### init

Following the Docker guidelines it is highly recommended that the resulting image be just one concern per container; predominantly this means just one process per container, so there is no need for a full init system. There are two situations where an init-like process would be helpful for the container. The first being signal handling. If the process launched does not handle `SIGTERM` by exiting, it will not be killed since it is PID 1 in the container (see "NOTE" at the end of the [Foreground section](https://docs.docker.com/engine/reference/run/#foreground) in the docker docs). The second situation would be zombie reaping. If the process spawns child processes and does not properly reap them it will lead to a full process table, which can prevent the whole system from spawning any new processes. For both of these concerns we recommend [tini](https://github.com/krallin/tini). It is incredibly small, has minimal external dependencies, fills each of these roles, and does only the necessary parts of reaping and signal forwarding.

Be sure to use tini in `CMD` or `ENTRYPOINT` as appropriate.

It is best to install tini from a distribution-provided package (ex. `apt-get install tini`). If tini is not available in your distribution or is too old, here is a snippet of a `Dockerfile` to add in tini:

```Dockerfile
# Install tini for signal processing and zombie killing
ENV TINI_VERSION v0.18.0
ENV TINI_SIGN_KEY 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7
RUN set -eux; \
  wget -O /usr/local/bin/tini "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini"; \
  wget -O /usr/local/bin/tini.asc "https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini.asc"; \
  export GNUPGHOME="$(mktemp -d)"; \
  gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$TINI_SIGN_KEY"; \
  gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \
  command -v gpgconf && gpgconf --kill all || :; \
  rm -r "$GNUPGHOME" /usr/local/bin/tini.asc; \
  chmod +x /usr/local/bin/tini; \
  tini --version
```

#### Cacheability

This is one place that experience ends up trumping documentation for the path to enlightenment, but the following tips might help:

-	Avoid `COPY`/`ADD` whenever possible, but when necessary, be as specific as possible (ie, `COPY one-file.sh /somewhere/` instead of `COPY . /somewhere`).

	The reason for this is that the cache for `COPY` instructions considers file `mtime` changes to be a cache bust, which can make the cache behavior of `COPY` unpredictable sometimes, especially when `.git` is part of what needs to be `COPY`ed (for example).

-	Ensure that lines which are less likely to change come before lines that are more likely to change (with the caveat that each line should generate an image that still runs successfully without assumptions of later lines).

	For example, the line that contains the software version number (`ENV MYSOFTWARE_VERSION 4.2`) should come after a line that sets up the APT repository `.list` file (`RUN echo 'deb http://example.com/mysoftware/debian some-suite main' > /etc/apt/sources.list.d/mysoftware.list`).

#### Security

##### Image Build

The `Dockerfile` should be written to help mitigate interception attacks during build. Our requirements focus on three main objectives: verifying the source, verifying author, and verifying the content; these are respectively accomplished by the following: using https where possible; importing PGP keys with the full fingerprint in the `Dockerfile` to check signatures; embedding checksums directly in the `Dockerfile`. All three should be used when possible. Just https and embedded checksum can be used when no signature is published. As a last resort, just an embedded checksum is acceptable if the site doesn't have https available and no signature.

The purpose in recommending the use of https for downloading needed artifacts is that it ensures that the download is from a trusted source which also happens to make interception much more difficult.

The purpose in recommending PGP signature verification is to ensure that only an authorized user published the given artifact. When importing PGP keys, please use the [the `keys.openpgp.org` service](https://keys.openpgp.org/about) when possible (preferring `keyserver.ubuntu.com` otherwise). See also the FAQ section on [keys and verification](https://github.com/docker-library/faq/#openpgp--gnupg-keys-and-verification).

The purpose in recommending checksum verification is to verify that the artifact is as expected. This ensures that when remote content changes, the Dockerfile also will change and provide a natural `docker build` cache bust. As a bonus, this also prevents accidentally downloading newer-than-expected artifacts on poorly versioned files.

Below are some examples:

-	**Preferred**: *download over https, PGP key full fingerprint import and `asc` verification, embedded checksum verified.*

	```Dockerfile
	ENV PYTHON_DOWNLOAD_SHA512 (sha512-value-here)
	RUN set -eux; \
	    curl -fL "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz" -o python.tar.xz; \
	    curl -fL "https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz.asc" -o python.tar.xz.asc; \
	    export GNUPGHOME="$(mktemp -d)"; \
	# gpg: key F73C700D: public key "Larry Hastings <larry@hastings.org>" imported
	    gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 97FC712E4C024BBEA48A61ED3A5CA953F73C700D; \
	    gpg --batch --verify python.tar.xz.asc python.tar.xz; \
	    rm -r "$GNUPGHOME" python.tar.xz.asc; \
	    echo "$PYTHON_DOWNLOAD_SHA512 *python.tar.xz" | sha512sum --strict --check; \
	    # install
	```

-	**Alternate**: *full key fingerprint imported to apt which will check signatures and checksums when packages are downloaded and installed.*

	```Dockerfile
	RUN set -eux; \
	    key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \
	    export GNUPGHOME="$(mktemp -d)"; \
	    gpg --batch --keyserver keyserver.ubuntu.com --recv-keys "$key"; \
	    gpg --batch --armor --export "$key" > /etc/apt/keyrings/mysql.asc; \
	    gpgconf --kill all; \
	    rm -rf "$GNUPGHOME"; \
	    apt-key list > /dev/null

	RUN set -eux; \
	    echo "deb [ signed-by=/etc/apt/keyrings/mysql.asc ] http://repo.mysql.com/apt/debian/ bookworm mysql-${MYSQL_MAJOR}" > /etc/apt/sources.list.d/mysql.list; \
	    apt-get update; \
	    apt-get install -y mysql-community-client="${MYSQL_VERSION}" mysql-community-server-core="${MYSQL_VERSION}"; \
	    rm -rf /var/lib/apt/lists/*; \
	    # ...
	```

	(As a side note, `rm -rf /var/lib/apt/lists/*` is *roughly* the opposite of `apt-get update` -- it ensures that the layer doesn't include the extra ~8MB of APT package list data, and enforces [appropriate `apt-get update` usage](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#apt-get).)

-	**Less Secure Alternate**: *embed the checksum into the `Dockerfile`.*

	```Dockerfile
	ENV RUBY_DOWNLOAD_SHA256 (sha256-value-here)
	RUN set -eux; \
	    curl -fL -o ruby.tar.gz "https://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz"; \
	    echo "$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz" | sha256sum --strict --check; \
	    # install
	```

	-	**Note:** the use of either SHA1 or MD5 should be considered a "checksum of last resort" as both are considered generally unsafe:

		-	["Single-block collision for MD5" from 2012](https://marc-stevens.nl/research/md5-1block-collision/)
		-	["Announcing the first SHA1 collision" from 2017](https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html)

-	**Unacceptable**: *download the file over http(s) with no verification.*

	```Dockerfile
	RUN curl -fL "https://julialang.s3.amazonaws.com/bin/linux/x64/${JULIA_VERSION%[.-]*}/julia-${JULIA_VERSION}-linux-x86_64.tar.gz" | tar ... \
	    # install
	```

##### Runtime Configuration

By default, Docker containers are executed with reduced privileges: whitelisted Linux capabilities, Control Groups, and a default Seccomp profile (1.10+ w/ host support). Software running in a container may require additional privileges in order to function correctly, and there are a number of command line options to customize container execution. See [`docker run` Reference](https://docs.docker.com/engine/reference/run/) and [Seccomp for Docker](https://docs.docker.com/engine/security/seccomp/) for reference.

Official Repositories that require additional privileges should specify the minimal set of command line options for the software to function, and may still be rejected if this introduces significant portability or security issues. In general, `--privileged` is not allowed, but a combination of `--cap-add` and `--device` options may be acceptable. Additionally, `--volume` can be tricky as there are many host filesystem locations that introduce portability/security issues (e.g. X11 socket).

##### Security Releases

For image updates which constitute a security fix, there are a few things we recommend to help ensure your update is merged, built, and released as quickly as possible:

1.	[Send an email to `doi@docker.com`](mailto:doi@docker.com) a few (business) days in advance to give us a heads up and a timing estimate (so we can schedule time for the incoming update appropriately).
2.	Include `[security]` in the title of your pull request (for example, `[security] Update FooBar to 1.2.5, 1.3.7, 2.0.1`).
3.	Keep the pull request free of changes that are unrelated to the security fix -- we'll still be doing review of the update, but it will be expedited so this will help us help you.
4.	Be active and responsive to comments on the pull request after it's opened (as usual, but even more so if the timing of the release is of importance).

#### Multiple Architectures

Each repo can specify multiple architectures for any and all tags. If no architecture is specified, images are built in Linux on `amd64` (aka x86-64). To specify more or different architectures, use the `Architectures` field (comma-delimited list, whitespace is trimmed). Valid architectures are found in [Bashbrew's `oci-platform.go` file](https://github.com/docker-library/bashbrew/blob/v0.1.2/architecture/oci-platform.go#L14-L27):

-	`amd64`
-	`arm32v6`
-	`arm32v7`
-	`arm64v8`
-	`i386`
-	`mips64le`
-	`ppc64le`
-	`riscv64`
-	`s390x`
-	`windows-amd64`

The `Architectures` of any given tag must be a strict subset of the `Architectures` of the tag it is `FROM`.

Images must have a single `Dockerfile` per entry in the library file that can be used for multiple architectures. This means that each supported architecture will have the same `FROM` line (e.g. `FROM debian:bookworm`). See [`golang`](https://github.com/docker-library/official-images/blob/master/library/golang), [`docker`](https://github.com/docker-library/official-images/blob/master/library/docker), [`haproxy`](https://github.com/docker-library/official-images/blob/master/library/haproxy), and [`php`](https://github.com/docker-library/official-images/blob/master/library/php) for examples of library files using one `Dockerfile` per entry and see their respective git repos for example `Dockerfile`s.

If different parts of the Dockerfile only happen in one architecture or another, use control flow (e.g.`if`/`case`) along with `dpkg --print-architecture` or `apk -print-arch` to detect the userspace architecture. Only use `uname` for architecture detection when more accurate tools cannot be installed. See [golang](https://github.com/docker-library/golang/blob/72bc141d781ae54ef20f71aa1105449cb6c2edc4/1.20/bookworm/Dockerfile#L26-L63) for an example where some architectures require building binaries from the upstream source packages and some merely download the binary release.

For base images like `debian` it will be necessary to have a different `Dockerfile` and build context in order to `ADD` architecture specific binaries and this is a valid exception to the above. Since these images use the same `Tags`, they need to be in the same entry. Use the architecture specific fields for `GitRepo`, `GitFetch`, `GitCommit`, and `Directory`, which are the architecture concatenated with hyphen (`-`) and the field (e.g. `arm32v7-GitCommit`). Any architecture that does not have an architecture-specific field will use the default field (e.g. no `arm32v7-Directory` means `Directory` will be used for `arm32v7`). See the [`debian`](https://github.com/docker-library/official-images/blob/master/library/debian) or [`ubuntu`](https://github.com/docker-library/official-images/blob/master/library/ubuntu) files in the library for examples. The following is an example for [`hello-world`](https://github.com/docker-library/official-images/blob/master/library/hello-world):

```
Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),
             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
GitRepo: https://github.com/docker-library/hello-world.git
GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87

Tags: latest
Architectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, s390x
# all the same commit; easy for us to generate this way since they could be different
amd64-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
amd64-Directory: amd64/hello-world
arm32v5-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
arm32v5-Directory: arm32v5/hello-world
arm32v7-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
arm32v7-Directory: arm32v7/hello-world
arm64v8-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
arm64v8-Directory: arm64v8/hello-world
ppc64le-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
ppc64le-Directory: ppc64le/hello-world
s390x-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
s390x-Directory: s390x/hello-world

Tags: nanoserver
Architectures: windows-amd64
# if there is only one architecture, you can use the unprefixed fields
Directory: amd64/hello-world/nanoserver
# or use the prefixed versions
windows-amd64-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87
Constraints: nanoserver
```

See the [instruction format section](#instruction-format) for more information on the format of the library file.

### Commitment

Proposing a new official image should not be undertaken lightly. We expect and require a commitment to maintain your image (including and especially timely updates as appropriate, as noted above).

## Library definition files

The library definition files are plain text files found in the [`library/` directory of the `official-images` repository](https://github.com/docker-library/official-images/tree/master/library). Each library file controls the current "supported" set of image tags that appear on the Docker Hub description. Tags that are removed from a library file do not get removed from the Docker Hub, so that old versions can continue to be available for use, but are not maintained by upstream or the maintainer of the official image. Tags in the library file are only built through an update to that library file or as a result of its base image being updated (ie, an image `FROM debian:bookworm` would be rebuilt when `debian:bookworm` is built). Only what is in the library file will be rebuilt when a base has updates.

Given this policy, it is worth clarifying a few cases: backfilled versions, release candidates, and continuous integration builds. When a new repository is proposed, it is common to include some older unsupported versions in the initial pull request with the agreement to remove them right after acceptance. Don't confuse this with a comprehensive historical archive which is not the intention. Another common case where the term "supported" is stretched a bit is with release candidates. A release candidate is really just a naming convention for what are expected to be shorter-lived releases, so they are totally acceptable and encouraged. Unlike a release candidate, continuous integration builds which have a fully automated release cycle based on code commits or a regular schedule are not appropriate.

It is highly recommended that you browse some of the existing `library/` file contents (and history to get a feel for how they change over time) before creating a new one to become familiar with the prevailing conventions and further help streamline the review process (so that we can focus on content instead of esoteric formatting or tag usage/naming).

### Filenames

The filename of a definition file will determine the name of the image repository it creates on the Docker Hub. For example, the `library/ubuntu` file will create tags in the `ubuntu` repository.

### Tags and aliases

The tags of a repository should reflect upstream's versions or variations. For example, Ubuntu 14.04 is also known as Ubuntu Trusty Tahr, but often as simply Ubuntu Trusty (especially in usage), so `ubuntu:14.04` (version number) and `ubuntu:trusty` (version name) are appropriate aliases for the same image contents. In Docker, the `latest` tag is a special case, but it's a bit of a misnomer; `latest` really is the "default" tag. When one does `docker run xyz`, Docker interprets that to mean `docker run xyz:latest`. Given that background, no other tag ever contains the string `latest`, since it's not something users are expected or encouraged to actually type out (ie, `xyz:latest` should really be used as simply `xyz`). Put another way, having an alias for the "highest 2.2-series release of XYZ" should be `xyz:2.2`, not `xyz:2.2-latest`. Similarly, if there is an Alpine variant of `xyz:latest`, it should be aliased as `xyz:alpine`, not `xyz:alpine-latest` or `xyz:latest-alpine`.

It is strongly encouraged that version number tags be given aliases which make it easy for the user to stay on the "most recent" release of a particular series. For example, given currently supported XYZ Software versions of 2.3.7 and 2.2.4, suggested aliases would be `Tags: 2.3.7, 2.3, 2, latest` and `Tags: 2.2.4, 2.2`, respectively. In this example, the user can use `xyz:2.2` to easily use the most recent patch release of the 2.2 series, or `xyz:2` if less granularity is needed (Python is a good example of where that's most obviously useful -- `python:2` and `python:3` are very different, and can be thought of as the `latest` tag for each of the major release tracks of Python).

As described above, `latest` is really "default", so the image that it is an alias for should reflect which version or variation of the software users should use if they do not know or do not care which version they use. Using Ubuntu as an example, `ubuntu:latest` points to the most recent LTS release, given that it is what the majority of users should be using if they know they want Ubuntu but do not know or care which version (especially considering it will be the most "stable" and well-supported release at any given time).

### Instruction format

The manifest file format is officially based on [RFC 2822](https://www.ietf.org/rfc/rfc2822.txt), and as such should be familiar to folks who are already familiar with the "headers" of many popular internet protocols/formats such as HTTP or email.

The primary additions are inspired by the way Debian commonly uses 2822 -- namely, lines starting with `#` are ignored and "entries" are separated by a blank line.

The first entry is the "global" metadata for the image. The only required field in the global entry is `Maintainers`, whose value is comma-separated in the format of `Name <email> (@github)` or `Name (@github)`. Any field specified in the global entry will be the default for the rest of the entries and can be overridden in an individual entry.

	# this is a comment and will be ignored
	Maintainers: John Smith <jsmith@example.com> (@example-jsmith),
	             Anne Smith <asmith@example.com> (@example-asmith)
	GitRepo: https://github.com/example/docker-example.git
	GitCommit: deadbeefdeadbeefdeadbeefdeadbeefdeadbeef
	
	# this is also a comment, and will also be ignored
	
	Tags: 1.2.3, 1.2, 1, latest
	Directory: 1
	
	Tags: 2.0-rc1, 2.0-rc, 2-rc, rc
	GitRepo: https://github.com/example/docker-example-rc.git
	GitFetch: refs/heads/2.0-pre-release
	GitCommit: beefdeadbeefdeadbeefdeadbeefdeadbeefdead
	Directory: 2
	File: Dockerfile-to-use

Bashbrew will fetch code out of the Git repository (`GitRepo`) at the commit specified (`GitCommit`). If the commit referenced is not available by fetching `master` of the associated `GitRepo`, it becomes necessary to supply a value for `GitFetch` in order to tell Bashbrew what ref to fetch in order to get the commit necessary.

The built image will be tagged as `<manifest-filename>:<tag>` (ie, `library/golang` with a `Tags` value of `1.6, 1, latest` will create tags of `golang:1.6`, `golang:1`, and `golang:latest`).

Optionally, if `Directory` is present, Bashbrew will look for the `Dockerfile` inside the specified subdirectory instead of at the root (and `Directory` will be used as the ["context" for the build](https://docs.docker.com/reference/builder/) instead of the top-level of the repository). If `File` is present, the specified filename instead of `Dockerfile` will be used.

See the [multi-arch section](#multiple-architectures) for details on how to specify a different `GitRepo`, `GitFetch`, `GitCommit`, or `Directory` for a specific architecture.

### Creating a new repository

-	Create a new file in the `library/` folder. Its name will be the name of your repository on the Hub.
-	Add your tag definitions using the appropriate syntax (see above).
-	Create a pull request adding the file from your forked repository to this one. Please be sure to add details as to what your repository does.

### Adding a new tag in an existing repository (that you're the maintainer of)

-	Add your tag definition using the instruction format documented above.
-	Create a pull request from your Git repository to this one. Please be sure to add details about what's new, if possible.

### Change to a tag in an existing repository (that you're the maintainer of)

-	Update the relevant tag definition using the instruction format documented above.
-	Create a pull request from your Git repository to this one. Please be sure to add details about what's changed, if possible.

## Bashbrew

Bashbrew (`bashbrew`) is a tool for cloning, building, tagging, and pushing the Docker official images. See [the Bashbrew `README`](https://github.com/docker-library/bashbrew#readme) for more information.


================================================
FILE: SECURITY.md
================================================
# Security Policy

If you have run a CVE/security scanner on an image and that is why you are here, you should read [our "Why does my security scanner show that an image has CVEs?" FAQ entry](https://github.com/docker-library/faq#why-does-my-security-scanner-show-that-an-image-has-cves).

If you believe you have found a net new security vulnerability, please make every effort to report it to the appropriate maintainers responsibly so that it can be fixed discreetly (also known as "embargo").

When the issue relates to a specific image, please make an effort to (privately) contact the maintainers of that specific image.  Some maintainers publish/maintain a `SECRUITY.md` in their GitHub repository, for example, which can be a great place to find information about how to report an issue appropriately.

For issues related to anything maintained under [@docker-library on GitHub](https://github.com/docker-library) or associated infrastructure, please [send an email to `doi@docker.com`](mailto:doi@docker.com) or [use GitHub's security advisory feature](https://github.com/docker-library/official-images/security/advisories/new).

Image maintainers should also be aware of the ["Security Releases" section of the maintainer documentation](https://github.com/docker-library/official-images#security-releases) for pre-notifying the project maintainers of upcoming security-related releases.


================================================
FILE: _bashbrew-cat-sorted.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail

# a mimic of "bashbrew cat" which should sort slightly more deterministically (so even full-order-changing PRs should have reasonable diffs)

images="$(
	bashbrew list --repos --uniq "$@" \
		| sort -uV
)"
set -- $images

declare -A seenGlobal=()

first=1
for img; do
	if [ -n "$first" ]; then
		first=
	else
		echo; echo
	fi

	if [ "$#" -gt 1 ]; then
		echo "# $img"
	fi

	repo="${img%:*}"
	if [ -z "${seenGlobal["$repo"]:-}" ]; then
		bashbrew cat --format '{{ printf "%s\n" (.Manifest.Global.ClearDefaults defaults) }}' "$img"
		seenGlobal["$repo"]="$img"
	else
		echo "# (see also ${seenGlobal["$repo"]} above)"
	fi

	bashbrew list --uniq "$img" \
		| sort -V \
		| xargs -r bashbrew cat --format '
			{{- range $e := .TagEntries -}}
				{{- printf "\n%s\n" ($e.ClearDefaults $.Manifest.Global) -}}
			{{- end -}}
		'
done


================================================
FILE: diff-pr.sh
================================================
#!/usr/bin/env bash
set -Eeuo pipefail
shopt -s dotglob

# make sure we can GTFO
trap 'echo >&2 Ctrl+C captured, exiting; exit 1' SIGINT

# if bashbrew is missing, bail early with a sane error
bashbrew --version > /dev/null

usage() {
	cat <<-EOUSAGE
		usage: $0 [PR number] [repo[:tag]]
		   ie: $0 1024
		       $0 9001 debian php django
	EOUSAGE
}

# TODO flags parsing
allFiles=
listTarballContents=1
findCopies='20%'

uninterestingTarballContent=(
	# "config_diff_2017_01_07.log"
	'var/log/YaST2/'

	# "ks-script-mqmz_080.log"
	# "ks-script-ycfq606i.log"
	'var/log/anaconda/'

	# "2016-12-20/"
	'var/lib/yum/history/'
	'var/lib/dnf/history/'

	# "a/f8c032d2be757e1a70f00336b55c434219fee230-acl-2.2.51-12.el7-x86_64/var_uuid"
	'var/lib/yum/yumdb/'
	'var/lib/dnf/yumdb/'

	# "b42ff584.0"
	'etc/pki/tls/rootcerts/'

	# "09/401f736622f2c9258d14388ebd47900bbab126"
	'usr/lib/.build-id/'
)

# prints "$2$1$3$1...$N"
join() {
	local sep="$1"; shift
	local out; printf -v out "${sep//%/%%}%s" "$@"
	echo "${out#$sep}"
}

uninterestingTarballGrep="^([.]?/)?($(join '|' "${uninterestingTarballContent[@]}"))"

if [ "$#" -eq 0 ]; then
	usage >&2
	exit 1
fi
pull="$1" # PR number
shift

diffDir="$(readlink -f "$BASH_SOURCE")"
diffDir="$(dirname "$diffDir")"

tempDir="$(mktemp -d)"
trap "rm -rf '$tempDir'" EXIT
cd "$tempDir"

git clone --quiet \
	https://github.com/docker-library/official-images.git \
	oi

if [ "$pull" != '0' ]; then
	git -C oi fetch --quiet \
		origin "pull/$pull/merge":refs/heads/pull
else
	git -C oi fetch --quiet --update-shallow \
		"$diffDir" HEAD:refs/heads/pull
fi

externalPins=
if [ "$#" -eq 0 ]; then
	externalPins="$(git -C oi/.external-pins diff --no-renames --name-only HEAD...pull -- '*/**')"

	images="$(git -C oi/library diff --no-renames --name-only HEAD...pull -- .)"
	if [ -z "$images" ] && [ -z "$externalPins" ]; then
		exit 0
	fi
	images="$(xargs -rn1 basename <<<"$images")"
	set -- $images
fi

export BASHBREW_LIBRARY="$PWD/oi/library"

: "${BASHBREW_ARCH:=amd64}" # TODO something smarter with arches
export BASHBREW_ARCH

# TODO something less hacky than "git archive" hackery, like a "bashbrew archive" or "bashbrew context" or something
template='
	tempDir="$(mktemp -d)"
	{{- "\n" -}}
	{{- range $.Entries -}}
		{{- $arch := .HasArchitecture arch | ternary arch (.Architectures | first) -}}
		{{- /* cannot replace ArchDockerFroms with bashbrew fetch or the arch selector logic has to be duplicated 🥹*/ -}}
		{{- $froms := $.ArchDockerFroms $arch . -}}
		{{- $outDir := join "_" $.RepoName (.Tags | last) -}}
		git -C "{{ gitCache }}" archive --format=tar
		{{- " " -}}
		{{- "--prefix=" -}}
		{{- $outDir -}}
		{{- "/" -}}
		{{- " " -}}
		{{- .ArchGitCommit $arch -}}
		{{- ":" -}}
		{{- $dir := .ArchDirectory $arch -}}
		{{- (eq $dir ".") | ternary "" $dir -}}
		{{- "\n" -}}
		mkdir -p "$tempDir/{{- $outDir -}}" && echo "{{- .ArchBuilder $arch -}}" > "$tempDir/{{- $outDir -}}/.bashbrew-builder" && echo "{{- .ArchFile $arch -}}" > "$tempDir/{{- $outDir -}}/.bashbrew-file"
		{{- "\n" -}}
	{{- end -}}
	tar -cC "$tempDir" . && rm -rf "$tempDir"
'

_tar-t() {
	tar -t "$@" \
		| grep -vE "$uninterestingTarballGrep" \
		| sed -e 's!^[.]/!!' \
			-r \
			-e 's!([/.-]|^)((lib)?(c?python|py)-?)[0-9]+([.][0-9]+)?([/.-]|$)!\1\2XXX\6!g' \
		| sort
}

_jq() {
	if [ "$#" -eq 0 ]; then
		set -- '.'
	fi
	jq --tab -S "$@"
}

copy-tar() {
	local src="$1"; shift
	local dst="$1"; shift

	if [ -n "$allFiles" ]; then
		mkdir -p "$dst"
		cp -al "$src"/*/ "$dst/"
		return
	fi

	local d indexes=() dockerfiles=()
	for d in "$src"/*/.bashbrew-file; do
		[ -f "$d" ] || continue
		local bf; bf="$(< "$d")"
		local dDir; dDir="$(dirname "$d")"
		local builder; builder="$(< "$dDir/.bashbrew-builder")"
		if [ "$builder" = 'oci-import' ]; then
			indexes+=( "$dDir/$bf" )
		else
			dockerfiles+=( "$dDir/$bf" )
			if [ "$bf" = 'Dockerfile' ]; then
				# if "Dockerfile.builder" exists, let's check that too (busybox, hello-world)
				if [ -f "$dDir/$bf.builder" ]; then
					dockerfiles+=( "$dDir/$bf.builder" )
				fi
			fi
		fi
		rm "$d" "$dDir/.bashbrew-builder" # remove the ".bashbrew-*" files we created
	done

	# now that we're done with our globbing needs, let's disable globbing so it doesn't give us wrong answers
	local -
	set -o noglob

	for i in "${indexes[@]}"; do
		local iName; iName="$(basename "$i")"
		local iDir; iDir="$(dirname "$i")"
		local iDirName; iDirName="$(basename "$iDir")"
		local iDst="$dst/$iDirName"

		mkdir -p "$iDst"

		_jq . "$i" > "$iDst/$iName"

		local digest
		digest="$(jq -r --arg name "$iName" '
			if $name == "index.json" then
				.manifests[0].digest
			else
				.digest
			end
		' "$i")"

		local blob="blobs/${digest//://}"
		local blobDir; blobDir="$(dirname "$blob")"
		local manifest="$iDir/$blob"
		mkdir -p "$iDst/$blobDir"
		_jq . "$manifest" > "$iDst/$blob"

		local configDigest; configDigest="$(jq -r '.config.digest' "$manifest")"
		local blob="blobs/${configDigest//://}"
		local blobDir; blobDir="$(dirname "$blob")"
		local config="$iDir/$blob"
		mkdir -p "$iDst/$blobDir"
		_jq . "$config" > "$iDst/$blob"

		local layers
		layers="$(jq -r '[ .layers[].digest | @sh ] | join(" ")' "$manifest")"
		eval "layers=( $layers )"
		local layerDigest
		for layerDigest in "${layers[@]}"; do
			local blob="blobs/${layerDigest//://}"
			local blobDir; blobDir="$(dirname "$blob")"
			local layer="$iDir/$blob"
			mkdir -p "$iDst/$blobDir"
			_tar-t -f "$layer" > "$iDst/$blob  'tar -t'"
		done
	done

	for d in "${dockerfiles[@]}"; do
		local dDir; dDir="$(dirname "$d")"
		local dDirName; dDirName="$(basename "$dDir")"

		# TODO choke on "syntax" parser directive
		# TODO handle "escape" parser directive reasonably
		local flatDockerfile; flatDockerfile="$(
			gawk '
				BEGIN { line = "" }
				/^[[:space:]]*#/ {
					gsub(/^[[:space:]]+/, "")
					print
					next
				}
				{
					if (match($0, /^(.*)(\\[[:space:]]*)$/, m)) {
						line = line m[1]
						next
					}
					print line $0
					line = ""
				}
			' "$d"
		)"

		local IFS=$'\n'
		local copyAddContext; copyAddContext="$(awk '
			toupper($1) == "COPY" || toupper($1) == "ADD" {
				for (i = 2; i < NF; i++) {
					if ($i ~ /^--from=/) {
						next
					}
					# COPY and ADD options
					if ($i ~ /^--(chown|chmod|link|parents|exclude)=/) {
						continue
					}
					# additional ADD options
					if ($i ~ /^--(keep-git-dir|checksum)=/) {
						continue
					}
					for ( ; i < NF; i++) {
						print $i
					}
				}
			}
		' <<<"$flatDockerfile")"
		local dBase; dBase="$(basename "$d")"
		local files=(
			"$dBase"
			$copyAddContext

			# some extra files which are likely interesting if they exist, but no big loss if they do not
			' .dockerignore' # will be used automatically by "docker build"
			' *.manifest' # debian/ubuntu "package versions" list
			' *.ks' # fedora "kickstart" (rootfs build script)
			' build*.txt' # ubuntu "build-info.txt", debian "build-command.txt"

			# usefulness yet to be proven:
			#' *.log'
			#' {MD5,SHA1,SHA256}SUMS'
			#' *.{md5,sha1,sha256}'

			# (the space prefix is removed below and is used to ignore non-matching globs so that bad "Dockerfile" entries appropriately lead to failure)
		)
		unset IFS

		mkdir -p "$dst/$dDirName"

		local f origF failureMatters
		for origF in "${files[@]}"; do
			f="${origF# }" # trim off leading space (indicates we don't care about failure)
			[ "$f" = "$origF" ] && failureMatters=1 || failureMatters=

			local globbed
			# "find: warning: -path ./xxx/ will not match anything because it ends with /."
			local findGlobbedPath="${f%/}"
			findGlobbedPath="${findGlobbedPath#./}"
			local globbedStr; globbedStr="$(cd "$dDir" && find -path "./$findGlobbedPath")"
			local -a globbed=( $globbedStr )
			if [ "${#globbed[@]}" -eq 0 ]; then
				globbed=( "$f" )
			fi

			local g
			for g in "${globbed[@]}"; do
				local srcG="$dDir/$g" dstG="$dst/$dDirName/$g"

				if [ -z "$failureMatters" ] && [ ! -e "$srcG" ]; then
					continue
				fi

				local gDir; gDir="$(dirname "$dstG")"
				mkdir -p "$gDir"
				cp -alT "$srcG" "$dstG"

				if [ -n "$listTarballContents" ]; then
					case "$g" in
						*.tar.* | *.tgz)
							if [ -s "$dstG" ]; then
								_tar-t -f "$dstG" > "$dstG  'tar -t'"
							fi
							;;
					esac
				fi
			done
		done
	done
}

# a "bashbrew cat" template that gives us the last / "least specific" tags for the arguments
# (in other words, this is "bashbrew list --uniq" but last instead of first)
templateLastTags='
	{{- range .TagEntries -}}
		{{- $.RepoName -}}
		{{- ":" -}}
		{{- .Tags | last -}}
		{{- "\n" -}}
	{{- end -}}
'

_metadata-files() {
	if [ "$#" -gt 0 ]; then
		bashbrew list "$@" 2>>temp/_bashbrew.err | sort -uV > temp/_bashbrew-list || :

		bashbrew cat --format '{{ range .Entries }}{{ range .Architectures }}{{ . }}{{ "\n" }}{{ end }}{{ end }}' "$@" 2>>temp/_bashbrew.err | sort -u > temp/_bashbrew-arches || :

		"$diffDir/_bashbrew-cat-sorted.sh" "$@" 2>>temp/_bashbrew.err > temp/_bashbrew-cat || :

		# piping "bashbrew list" first so that .TagEntries is filled up (keeping "templateLastTags" simpler)
		# sorting that by version number so it's ~stable
		# then doing --build-order on that, which is a "stable sort"
		# then redoing that list back into "templateLastTags" so we get the tags we want listed (not the tags "--uniq" chooses)
		bashbrew list --uniq "$@" \
			| xargs -r bashbrew cat --format "$templateLastTags" \
			| sort -V \
			| xargs -r bashbrew list --uniq --build-order 2>>temp/_bashbrew.err \
			| xargs -r bashbrew cat --format "$templateLastTags" 2>>temp/_bashbrew.err \
			> temp/_bashbrew-list-build-order || :

		# oci images can't be fetched with ArchDockerFroms
		# todo: use each first arch instead of current arch
		bashbrew fetch --arch-filter "$@"
		script="$(bashbrew cat --format "$template" "$@")"
		mkdir tar
		( eval "$script" | tar -xiC tar )
		copy-tar tar temp
		rm -rf tar

		# TODO we should *also* validate that our lists ended up non-empty 😬
		cat >&2 temp/_bashbrew.err
	fi

	if [ -n "$externalPins" ] && command -v crane &> /dev/null; then
		local file
		for file in $externalPins; do
			[ -e "oi/$file" ] || continue
			local pin digest dir
			pin="$("$diffDir/.external-pins/tag.sh" "$file")"
			digest="$(< "oi/$file")"
			dir="temp/$file"
			mkdir -p "$dir"
			bashbrew remote arches --json "$pin@$digest" | _jq > "$dir/bashbrew.json"
			local manifests manifest
			manifests="$(jq -r '
				[ (
					.arches
					| if has(env.BASHBREW_ARCH) then
						.[env.BASHBREW_ARCH]
					else
						.[keys_unsorted | first]
					end
				)[].digest | @sh ]
				| join(" ")
			' "$dir/bashbrew.json")"
			eval "manifests=( $manifests )"
			for manifest in "${manifests[@]}"; do
				crane manifest "$pin@$manifest" | _jq > "$dir/manifest-${manifest//:/_}.json"
				local config
				config="$(jq -r '.config.digest' "$dir/manifest-${manifest//:/_}.json")"
				crane blob "$pin@$config" | _jq > "$dir/manifest-${manifest//:/_}-config.json"
			done
		done
	fi
}

mkdir temp
git -C temp init --quiet
git -C temp config user.name 'Bogus'
git -C temp config user.email 'bogus@bogus'

# handle "new-image" PRs gracefully
for img; do touch "$BASHBREW_LIBRARY/$img"; [ -s "$BASHBREW_LIBRARY/$img" ] || echo 'Maintainers: New Image! :D (@docker-library-bot)' > "$BASHBREW_LIBRARY/$img"; done

_metadata-files "$@"
git -C temp add . || :
git -C temp commit --quiet --allow-empty -m 'initial' || :

git -C oi clean --quiet --force
git -C oi checkout --quiet pull

# handle "deleted-image" PRs gracefully :(
for img; do touch "$BASHBREW_LIBRARY/$img"; [ -s "$BASHBREW_LIBRARY/$img" ] || echo 'Maintainers: Deleted Image D: (@docker-library-bot)' > "$BASHBREW_LIBRARY/$img"; done

git -C temp rm --quiet -rf . || :

_metadata-files "$@"
git -C temp add .

git -C temp diff \
	--find-copies-harder \
	--find-copies="$findCopies" \
	--find-renames="$findCopies" \
	--ignore-blank-lines \
	--ignore-space-at-eol \
	--ignore-space-change \
	--irreversible-delete \
	--minimal \
	--staged


================================================
FILE: library/adminer
================================================
# this file is generated via https://github.com/TimWolla/docker-adminer/blob/d05fa68d13a889364cf8c81884ecf1a11a37957f/generate-stackbrew-library.sh

Maintainers: Tim Düsterhus <tim@bastelstu.be> (@TimWolla)
GitRepo: https://github.com/TimWolla/docker-adminer.git

Tags: 5.4.2, 5, latest, 5.4.2-standalone, 5-standalone, standalone
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 1c484a27a9cc34ad306dfd63856db49ad7cb4bbe
Directory: 5

Tags: 5.4.2-fastcgi, 5-fastcgi, fastcgi
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 1c484a27a9cc34ad306dfd63856db49ad7cb4bbe
Directory: 5/fastcgi

Tags: 4.17.1, 4, 4.17.1-standalone, 4-standalone
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 0c0fd187e8646ad61fe592a80d66abec2c1dc951
Directory: 4

Tags: 4.17.1-fastcgi, 4-fastcgi
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 0c0fd187e8646ad61fe592a80d66abec2c1dc951
Directory: 4/fastcgi


================================================
FILE: library/aerospike
================================================
Maintainers: Lucien Volmar <lucien@aerospike.com> (@volmarl),
             Michael Coberly <mcoberly@aerospike.com> (@mcoberly2),
             Phuc Vinh <pvinh@aerospike.com> (@pvinh-spike),
             Kevin Porter <kporter@aerospike.com> (@kportertx),
             Thomas Huelbert <thuelbert@aerospike.com> (@thomasaerospike)

Tags: ee-8.1.1.1, ee-8.1.1.1_1
Architectures: amd64, arm64v8
GitRepo: https://github.com/aerospike/aerospike-server.docker.git
GitCommit: 8b5917e1d0dba5b3d7f7ea8839a6bbe74f609b1b
Directory: enterprise/ubuntu24.04

Tags: ce-8.1.1.1, ce-8.1.1.1_1
Architectures: amd64, arm64v8
GitRepo: https://github.com/aerospike/aerospike-server.docker.git
GitCommit: 8b5917e1d0dba5b3d7f7ea8839a6bbe74f609b1b
Directory: community/ubuntu24.04


================================================
FILE: library/almalinux
================================================
# This file was generated on https://github.com/AlmaLinux/container-images/actions/runs/22493082393
Maintainers: The AlmaLinux OS Foundation <cloud-infra@almalinux.org> (@AlmaLinux)
GitRepo: https://github.com/AlmaLinux/container-images.git

Tags: 10-kitten, 10-kitten-20260227
GitFetch: refs/heads/10-kitten
GitCommit: f03a0f177d767ab6a5745773d9c519d8e14e14a7
amd64-Directory: default/amd64/
arm64v8-Directory: default/arm64/
ppc64le-Directory: default/ppc64le/
s390x-Directory: default/s390x/
riscv64-Directory: default/riscv64/
Architectures: amd64, arm64v8, ppc64le, s390x, riscv64

Tags: 10-kitten-minimal, 10-kitten-minimal-20260227
GitFetch: refs/heads/10-kitten
GitCommit: f03a0f177d767ab6a5745773d9c519d8e14e14a7
amd64-Directory: minimal/amd64/
arm64v8-Directory: minimal/arm64/
ppc64le-Directory: minimal/ppc64le/
s390x-Directory: minimal/s390x/
riscv64-Directory: minimal/riscv64/
Architectures: amd64, arm64v8, ppc64le, s390x, riscv64

Tags: latest, 10, 10.1, 10.1-20260129
GitFetch: refs/heads/10
GitCommit: af233919d4574c14336c76f427d3aed477025828
amd64-Directory: default/amd64/
arm64v8-Directory: default/arm64/
ppc64le-Directory: default/ppc64le/
s390x-Directory: default/s390x/
Architectures: amd64, arm64v8, ppc64le, s390x

Tags: minimal, 10-minimal, 10.1-minimal, 10.1-minimal-20260129
GitFetch: refs/heads/10
GitCommit: af233919d4574c14336c76f427d3aed477025828
amd64-Directory: minimal/amd64/
arm64v8-Directory: minimal/arm64/
ppc64le-Directory: minimal/ppc64le/
s390x-Directory: minimal/s390x/
Architectures: amd64, arm64v8, ppc64le, s390x

Tags: 8, 8.10, 8.10-20260129
GitFetch: refs/heads/8
GitCommit: dd2f4548f9b440b794a379472aaef1a9aca1ef38
amd64-Directory: default/amd64/
arm64v8-Directory: default/arm64/
ppc64le-Directory: default/ppc64le/
s390x-Directory: default/s390x/
Architectures: amd64, arm64v8, ppc64le, s390x

Tags: 8-minimal, 8.10-minimal, 8.10-minimal-20260129
GitFetch: refs/heads/8
GitCommit: dd2f4548f9b440b794a379472aaef1a9aca1ef38
amd64-Directory: minimal/amd64/
arm64v8-Directory: minimal/arm64/
ppc64le-Directory: minimal/ppc64le/
s390x-Directory: minimal/s390x/
Architectures: amd64, arm64v8, ppc64le, s390x

Tags: 9, 9.7, 9.7-20260129
GitFetch: refs/heads/9
GitCommit: 12e644ec2f45dab879fa299bb3c08f300f9eeb35
amd64-Directory: default/amd64/
arm64v8-Directory: default/arm64/
ppc64le-Directory: default/ppc64le/
s390x-Directory: default/s390x/
Architectures: amd64, arm64v8, ppc64le, s390x

Tags: 9-minimal, 9.7-minimal, 9.7-minimal-20260129
GitFetch: refs/heads/9
GitCommit: 12e644ec2f45dab879fa299bb3c08f300f9eeb35
amd64-Directory: minimal/amd64/
arm64v8-Directory: minimal/arm64/
ppc64le-Directory: minimal/ppc64le/
s390x-Directory: minimal/s390x/
Architectures: amd64, arm64v8, ppc64le, s390x


================================================
FILE: library/alpine
================================================
Maintainers: Natanael Copa <ncopa@alpinelinux.org> (@ncopa)
GitRepo: https://github.com/alpinelinux/docker-alpine.git

Tags: 20260127, edge
Architectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64
GitFetch: refs/heads/edge
GitCommit: c5f299db02fde44c146488e2161773e1daebe581
arm64v8-Directory: aarch64/
arm32v6-Directory: armhf/
arm32v7-Directory: armv7/
ppc64le-Directory: ppc64le/
riscv64-Directory: riscv64/
s390x-Directory: s390x/
i386-Directory: x86/
amd64-Directory: x86_64/

Tags: 3.23.3, 3.23, 3, latest
Architectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64
GitFetch: refs/heads/v3.23
GitCommit: a037d70ba44f91b00dff940019d29a28f7ba1265
arm64v8-Directory: aarch64/
arm32v6-Directory: armhf/
arm32v7-Directory: armv7/
ppc64le-Directory: ppc64le/
riscv64-Directory: riscv64/
s390x-Directory: s390x/
i386-Directory: x86/
amd64-Directory: x86_64/

Tags: 3.22.3, 3.22
Architectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64
GitFetch: refs/heads/v3.22
GitCommit: c65c121d664a527ec65e1fa4cecc9063fff656da
arm64v8-Directory: aarch64/
arm32v6-Directory: armhf/
arm32v7-Directory: armv7/
ppc64le-Directory: ppc64le/
riscv64-Directory: riscv64/
s390x-Directory: s390x/
i386-Directory: x86/
amd64-Directory: x86_64/

Tags: 3.21.6, 3.21
Architectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64
GitFetch: refs/heads/v3.21
GitCommit: d9ff52957b2fe5361ffeb5d871db8c321e5605d8
arm64v8-Directory: aarch64/
arm32v6-Directory: armhf/
arm32v7-Directory: armv7/
ppc64le-Directory: ppc64le/
riscv64-Directory: riscv64/
s390x-Directory: s390x/
i386-Directory: x86/
amd64-Directory: x86_64/

Tags: 3.20.9, 3.20
Architectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64
GitFetch: refs/heads/v3.20
GitCommit: b3f87708e5052e29737a251b2e9865e182dafe0c
arm64v8-Directory: aarch64/
arm32v6-Directory: armhf/
arm32v7-Directory: armv7/
ppc64le-Directory: ppc64le/
riscv64-Directory: riscv64/
s390x-Directory: s390x/
i386-Directory: x86/
amd64-Directory: x86_64/


================================================
FILE: library/alt
================================================
Maintainers: ALT Linux Team Cloud <alt-cloud@altlinux.org> (@alt-cloud),
             Alexey Shabalin <shaba@altlinux.org> (@shaba),
             Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> (@glebfm),
             Nadezhda Fedorova <fedor@altlunux.org> (@FNDenisovna)
GitRepo: https://github.com/alt-cloud/docker-brew-alt.git

Tags: p10
Architectures: amd64, i386, arm64v8
GitFetch: refs/heads/p10
GitCommit: 920886636db2d75287b93587f841b2fdb46ec711
amd64-Directory: x86_64/
i386-Directory: i586/
arm64v8-Directory: aarch64/

Tags: sisyphus
Architectures: amd64, i386, arm64v8, riscv64
GitFetch: refs/heads/sisyphus
GitCommit: a700dbea4a6d8aa769e1cfcf651bdf162494b518
amd64-Directory: x86_64/
arm64v8-Directory: aarch64/
i386-Directory: i586/
riscv64-Directory: riscv64/

Tags: p11, latest
Architectures: amd64, i386, arm64v8
GitFetch: refs/heads/p11
GitCommit: bf8979511d2508a410db13b840302df6ccbb59a6
amd64-Directory: x86_64/
arm64v8-Directory: aarch64/
i386-Directory: i586/


================================================
FILE: library/amazoncorretto
================================================
Maintainers: Amazon Corretto Team <corretto-team@amazon.com> (@corretto),
             Dan Lutker <lutkerd@amazon.com> (@lutkerd),
             Ben Taylor <benty@amazon.com> (@benty-amzn),
             David Alvarez <alvdavi@amazon.com> (@alvdavi),
             Rui Li <ruiamzn@amazon.com> (@rgithubli),
             Sergey Bylokhov <bylokhov@amazon.com> (@mrserb),
             Victor Rudometov <vicrud@amazon.com> (@Rudometov),
             Elif Aslan <elifasln@amazon.com> (@elifaslan1),
             Chad Rakoczy <chadrako@amazon.com> (@chadrako),
             Ian Myers <ianrichr@amazon.com> (@ianrichr),
             John Spurling <spurn@amazon.com> (@synecdoche),
             Daniel Hu <costmuch@amazon.com> (@cost0much),
             Michael De Vera <mldevera@amazon.com> (@midver),
             Min Choi <minschoi@amazon.com> (@mmm-choi),
             Satyen Subramaniam <satyenme@amazon.com> (@satyenme)
GitRepo: https://github.com/corretto/corretto-docker.git
GitFetch: refs/heads/main
GitCommit: b96e13a7da2cf50ccd332b3f18e280d2068dfbeb

Tags: 8, 8u482, 8u482-al2, 8-al2-full, 8-al2-jdk, 8-al2-generic, 8u482-al2-generic, 8-al2-generic-jdk, latest
Architectures: amd64, arm64v8
Directory: 8/jdk/al2-generic

Tags: 8-al2023, 8u482-al2023, 8-al2023-jdk
Architectures: amd64, arm64v8
Directory: 8/jdk/al2023

Tags: 8-al2023-jre, 8u482-al2023-jre
Architectures: amd64, arm64v8
Directory: 8/jdk/al2023

Tags: 8-al2-native-jre, 8u482-al2-native-jre
Architectures: amd64, arm64v8
Directory: 8/jre/al2

Tags: 8-al2-native-jdk, 8u482-al2-native-jdk
Architectures: amd64, arm64v8
Directory: 8/jdk/al2

Tags: 8-alpine3.20, 8u482-alpine3.20, 8-alpine3.20-full, 8-alpine3.20-jdk
Architectures: amd64, arm64v8
Directory: 8/jdk/alpine/3.20

Tags: 8-alpine3.20-jre, 8u482-alpine3.20-jre
Architectures: amd64, arm64v8
Directory: 8/jre/alpine/3.20

Tags: 8-alpine3.21, 8u482-alpine3.21, 8-alpine3.21-full, 8-alpine3.21-jdk
Architectures: amd64, arm64v8
Directory: 8/jdk/alpine/3.21

Tags: 8-alpine3.21-jre, 8u482-alpine3.21-jre
Architectures: amd64, arm64v8
Directory: 8/jre/alpine/3.21

Tags: 8-alpine3.22, 8u482-alpine3.22, 8-alpine3.22-full, 8-alpine3.22-jdk
Architectures: amd64, arm64v8
Directory: 8/jdk/alpine/3.22

Tags: 8-alpine3.22-jre, 8u482-alpine3.22-jre
Architectures: amd64, arm64v8
Directory: 8/jre/alpine/3.22

Tags: 8-alpine3.23, 8u482-alpine3.23, 8-alpine3.23-full, 8-alpine3.23-jdk, 8-alpine, 8u482-alpine, 8-alpine-full, 8-alpine-jdk
Architectures: amd64, arm64v8
Directory: 8/jdk/alpine/3.23

Tags: 8-alpine3.23-jre, 8u482-alpine3.23-jre, 8-alpine-jre, 8u482-alpine-jre
Architectures: amd64, arm64v8
Directory: 8/jre/alpine/3.23

Tags: 11, 11.0.30, 11.0.30-al2, 11-al2-full, 11-al2-jdk, 11-al2-generic, 11.0.30-al2-generic, 11-al2-generic-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/al2-generic

Tags: 11-al2023, 11.0.30-al2023, 11-al2023-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/al2023

Tags: 11-al2023-headless, 11.0.30-al2023-headless
Architectures: amd64, arm64v8
Directory: 11/headless/al2023

Tags: 11-al2023-headful, 11.0.30-al2023-headful
Architectures: amd64, arm64v8
Directory: 11/headful/al2023

Tags: 11-al2-native-headless, 11.0.30-al2-native-headless
Architectures: amd64, arm64v8
Directory: 11/headless/al2

Tags: 11-al2-native-jdk, 11.0.30-al2-native-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/al2

Tags: 11-alpine3.20, 11.0.30-alpine3.20, 11-alpine3.20-full, 11-alpine3.20-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/alpine/3.20

Tags: 11-alpine3.21, 11.0.30-alpine3.21, 11-alpine3.21-full, 11-alpine3.21-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/alpine/3.21

Tags: 11-alpine3.22, 11.0.30-alpine3.22, 11-alpine3.22-full, 11-alpine3.22-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/alpine/3.22

Tags: 11-alpine3.23, 11.0.30-alpine3.23, 11-alpine3.23-full, 11-alpine3.23-jdk, 11-alpine, 11.0.30-alpine, 11-alpine-full, 11-alpine-jdk
Architectures: amd64, arm64v8
Directory: 11/jdk/alpine/3.23

Tags: 17, 17.0.18, 17.0.18-al2, 17-al2-full, 17-al2-jdk, 17-al2-generic, 17.0.18-al2-generic, 17-al2-generic-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/al2-generic

Tags: 17-al2023, 17.0.18-al2023, 17-al2023-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/al2023

Tags: 17-al2023-headless, 17.0.18-al2023-headless
Architectures: amd64, arm64v8
Directory: 17/headless/al2023

Tags: 17-al2023-headful, 17.0.18-al2023-headful
Architectures: amd64, arm64v8
Directory: 17/headful/al2023

Tags: 17-al2-native-headless, 17.0.18-al2-native-headless
Architectures: amd64, arm64v8
Directory: 17/headless/al2

Tags: 17-al2-native-headful, 17.0.18-al2-native-headful
Architectures: amd64, arm64v8
Directory: 17/headful/al2

Tags: 17-al2-native-jdk, 17.0.18-al2-native-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/al2

Tags: 17-alpine3.20, 17.0.18-alpine3.20, 17-alpine3.20-full, 17-alpine3.20-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/alpine/3.20

Tags: 17-alpine3.21, 17.0.18-alpine3.21, 17-alpine3.21-full, 17-alpine3.21-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/alpine/3.21

Tags: 17-alpine3.22, 17.0.18-alpine3.22, 17-alpine3.22-full, 17-alpine3.22-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/alpine/3.22

Tags: 17-alpine3.23, 17.0.18-alpine3.23, 17-alpine3.23-full, 17-alpine3.23-jdk, 17-alpine, 17.0.18-alpine, 17-alpine-full, 17-alpine-jdk
Architectures: amd64, arm64v8
Directory: 17/jdk/alpine/3.23

Tags: 21, 21.0.10, 21.0.10-al2, 21-al2-full, 21-al2-jdk, 21-al2-generic, 21.0.10-al2-generic, 21-al2-generic-jdk
Architectures: amd64, arm64v8
Directory: 21/jdk/al2-generic

Tags: 21-al2023, 21.0.10-al2023, 21-al2023-jdk
Architectures: amd64, arm64v8
Directory: 21/jdk/al2023

Tags: 21-al2023-headless, 21.0.10-al2023-headless
Architectures: amd64, arm64v8
Directory: 21/headless/al2023

Tags: 21-al2023-headful, 21.0.10-al2023-headful
Architectures: amd64, arm64v8
Directory: 21/headful/al2023

Tags: 21-alpine3.20, 21.0.10-alpine3.20, 21-alpine3.20-full, 21-alpine3.20-jdk
Architectures: amd64, arm64v8
Directory: 21/jdk/alpine/3.20

Tags: 21-alpine3.21, 21.0.10-alpine3.21, 21-alpine3.21-full, 21-alpine3.21-jdk
Architectures: amd64, arm64v8
Directory: 21/jdk/alpine/3.21

Tags: 21-alpine3.22, 21.0.10-alpine3.22, 21-alpine3.22-full, 21-alpine3.22-jdk
Architectures: amd64, arm64v8
Directory: 21/jdk/alpine/3.22

Tags: 21-alpine3.23, 21.0.10-alpine3.23, 21-alpine3.23-full, 21-alpine3.23-jdk, 21-alpine, 21.0.10-alpine, 21-alpine-full, 21-alpine-jdk
Architectures: amd64, arm64v8
Directory: 21/jdk/alpine/3.23

Tags: 25-al2023, 25.0.2-al2023, 25-al2023-jdk, 25, 25-jdk, 25.0.2
Architectures: amd64, arm64v8
Directory: 25/jdk/al2023

Tags: 25-al2023-headless, 25.0.2-al2023-headless, 25-headless
Architectures: amd64, arm64v8
Directory: 25/headless/al2023

Tags: 25-al2023-headful, 25.0.2-al2023-headful, 25-headful
Architectures: amd64, arm64v8
Directory: 25/headful/al2023

Tags: 25-alpine3.20, 25.0.2-alpine3.20, 25-alpine3.20-full, 25-alpine3.20-jdk
Architectures: amd64, arm64v8
Directory: 25/jdk/alpine/3.20

Tags: 25-alpine3.21, 25.0.2-alpine3.21, 25-alpine3.21-full, 25-alpine3.21-jdk
Architectures: amd64, arm64v8
Directory: 25/jdk/alpine/3.21

Tags: 25-alpine3.22, 25.0.2-alpine3.22, 25-alpine3.22-full, 25-alpine3.22-jdk
Architectures: amd64, arm64v8
Directory: 25/jdk/alpine/3.22

Tags: 25-alpine3.23, 25.0.2-alpine3.23, 25-alpine3.23-full, 25-alpine3.23-jdk, 25-alpine, 25.0.2-alpine, 25-alpine-full, 25-alpine-jdk
Architectures: amd64, arm64v8
Directory: 25/jdk/alpine/3.23

Tags: 26-al2023, 26.0.0-al2023, 26-al2023-jdk, 26, 26-jdk, 26.0.0
Architectures: amd64, arm64v8
Directory: 26/jdk/al2023

Tags: 26-al2023-headless, 26.0.0-al2023-headless, 26-headless
Architectures: amd64, arm64v8
Directory: 26/headless/al2023

Tags: 26-al2023-headful, 26.0.0-al2023-headful, 26-headful
Architectures: amd64, arm64v8
Directory: 26/headful/al2023

Tags: 26-alpine3.20, 26.0.0-alpine3.20, 26-alpine3.20-full, 26-alpine3.20-jdk
Architectures: amd64, arm64v8
Directory: 26/jdk/alpine/3.20

Tags: 26-alpine3.21, 26.0.0-alpine3.21, 26-alpine3.21-full, 26-alpine3.21-jdk
Architectures: amd64, arm64v8
Directory: 26/jdk/alpine/3.21

Tags: 26-alpine3.22, 26.0.0-alpine3.22, 26-alpine3.22-full, 26-alpine3.22-jdk
Architectures: amd64, arm64v8
Directory: 26/jdk/alpine/3.22

Tags: 26-alpine3.23, 26.0.0-alpine3.23, 26-alpine3.23-full, 26-alpine3.23-jdk, 26-alpine, 26.0.0-alpine, 26-alpine-full, 26-alpine-jdk
Architectures: amd64, arm64v8
Directory: 26/jdk/alpine/3.23


================================================
FILE: library/amazonlinux
================================================
Maintainers: Amazon Linux <amazon-linux@amazon.com> (@amazonlinux),
             Frédérick Lefebvre (@fred-lefebvre),
             Stewart Smith (@stewartsmith),
             Christopher Miller (@mysteriouspants),
             Sumit Tomer (@sktomer),
             Jason Jiannuo Pei (@peijiannuo),
             Michael Mammo (@MichaelAbebaw),
             Piyush Talreja (@piyush-talreja),
             Akhila Katkuri (@Akhilark1202),
             Neelkanth Poosa (@neelkanthpoosa),
             Ishwar Thirunavukkarasu (@ishwartg)
GitRepo: https://github.com/amazonlinux/container-images.git
GitCommit: cc7a1876866f4056fa73a789a5b758358151c189

Tags: 2023, latest, 2023.10.20260302.1
Architectures: amd64, arm64v8
amd64-GitFetch: refs/heads/al2023
amd64-GitCommit: 067442068b2c915e7af7b61c6a58cf0cf422e470
arm64v8-GitFetch: refs/heads/al2023-arm64
arm64v8-GitCommit: f98d788e7b60d3eae932e1f69c5c1284a75269e5

Tags: 2, 2.0.20260302.0
Architectures: amd64, arm64v8
amd64-GitFetch: refs/heads/amzn2
amd64-GitCommit: 9925759ad43f2e78e58edf31f16dac11a51bee64
arm64v8-GitFetch: refs/heads/amzn2-arm64
arm64v8-GitCommit: 44b55b829fc1004c4da08cd9c2dd7e215921226f

Tags: 1, 2018.03, 2018.03.0.20231218.0
Architectures: amd64
amd64-GitFetch: refs/heads/2018.03
amd64-GitCommit: cfb41ad1c7624786ea10f60c15ce9c117c4da3b6


================================================
FILE: library/api-firewall
================================================
Maintainers: Ivan Novikov <in@wallarm.com> (@d0znpp), 
             Nikolay Tkachenko (@afr1ka)
GitRepo: https://github.com/wallarm/api-firewall-docker.git

Tags: 0.9.5, latest
Architectures: amd64, arm64v8, i386
GitCommit: f8ae1a56dccac4d1d8e918c0867b37f3cc40ffb2
GitFetch: refs/heads/main
Directory: 0.9.5


================================================
FILE: library/arangodb
================================================
Maintainers: Frank Celler <info@arangodb.com> (@fceller), Wilfried Goesgens <w.goesgens@arangodb.org> (@dothebart), Vadim Kondratev <vadim@arangodb.org> (@KVS85)
GitRepo: https://github.com/arangodb/arangodb-docker
GitFetch: refs/heads/official

Tags: 3.12, 3.12.8, latest
Architectures: amd64, arm64v8
GitCommit: 30ea7cc3dc73075d9b9f0c5295fd65e33803f197
Directory: alpine/3.12.8


================================================
FILE: library/archlinux
================================================
# https://gitlab.archlinux.org/archlinux/archlinux-docker

Maintainers: Santiago Torres-Arias <santiago@archlinux.org> (@SantiagoTorres),
             Christian Rebischke <Chris.Rebischke@archlinux.org> (@shibumi),
             Justin Kromlinger <hashworks@archlinux.org> (@hashworks)
GitRepo: https://gitlab.archlinux.org/archlinux/archlinux-docker.git

Tags: latest, base, base-20260315.0.500537
GitCommit: 0fc0a650d90bf036a88bb3cc188e981becce59ab
GitFetch: refs/tags/v20260315.0.500537
File: Dockerfile.base

Tags: base-devel, base-devel-20260315.0.500537
GitCommit: 0fc0a650d90bf036a88bb3cc188e981becce59ab
GitFetch: refs/tags/v20260315.0.500537
File: Dockerfile.base-devel

Tags: multilib-devel, multilib-devel-20260315.0.500537
GitCommit: 0fc0a650d90bf036a88bb3cc188e981becce59ab
GitFetch: refs/tags/v20260315.0.500537
File: Dockerfile.multilib-devel



================================================
FILE: library/azul-zulu
================================================
Maintainers: Azul Devops Team <devops@azul.com> (@azul-publisher),
             Pavel Petroshenko <pavel@azul.com> (@ppetrosh),
             Anton Kozlov <akozlov@azul.com> (@AntonKozlov),
             Sergey Grinev <sergey.grinev@azul.com> (@sgrinev),
             Daniel Sentivany <dsentivany@azul.com> (@dsent9),
             Frank Delporte <fdelporte@azul.com> (@fdelporte),
             Geertjan Wielenga <gwielenga@azul.com> (@geertjanw)
GitRepo: https://github.com/AzulSystems/azul-zulu-images.git
GitFetch: refs/heads/main
GitCommit: e8b7c6c813f173f44d5aab27ed399f8346a0763c


Tags: 8.92-8.0.482-jdk-debian13, 8, 8-jdk, 8-jdk-debian, 8-jdk-debian13
Architectures: amd64, arm64v8
Directory: 8/jdk/debian

Tags: 8.92-8.0.482-jdk-headless-debian13, 8-headless, 8-headless-debian, 8-headless-debian13
Architectures: amd64, arm64v8
Directory: 8/jdk-headless/debian

Tags: 8.92-8.0.482-jre-debian13, 8-jre, 8-jre-debian, 8-jre-debian13
Architectures: amd64, arm64v8
Directory: 8/jre/debian

Tags: 8.92-8.0.482-jre-headless-debian13, 8-jre-headless, 8-jre-headless-debian, 8-jre-headless-debian13
Architectures: amd64, arm64v8
Directory: 8/jre-headless/debian

Tags: 11.86-11.0.30-jdk-debian13, 11, 11-jdk, 11-jdk-debian, 11-jdk-debian13
Architectures: amd64, arm64v8
Directory: 11/jdk/debian

Tags: 11.86-11.0.30-jdk-headless-debian13, 11-headless, 11-headless-debian, 11-headless-debian13
Architectures: amd64, arm64v8
Directory: 11/jdk-headless/debian

Tags: 11.86-11.0.30-jre-debian13, 11-jre, 11-jre-debian, 11-jre-debian13
Architectures: amd64, arm64v8
Directory: 11/jre/debian

Tags: 11.86-11.0.30-jre-headless-debian13, 11-jre-headless, 11-jre-headless-debian, 11-jre-headless-debian13
Architectures: amd64, arm64v8
Directory: 11/jre-headless/debian

Tags: 17.64-17.0.18-jdk-debian13, 17, 17-jdk, 17-jdk-debian, 17-jdk-debian13
Architectures: amd64, arm64v8
Directory: 17/jdk/debian

Tags: 17.64-17.0.18-jdk-headless-debian13, 17-headless, 17-headless-debian, 17-headless-debian13
Architectures: amd64, arm64v8
Directory: 17/jdk-headless/debian

Tags: 17.64-17.0.18-jre-debian13, 17-jre, 17-jre-debian, 17-jre-debian13
Architectures: amd64, arm64v8
Directory: 17/jre/debian

Tags: 17.64-17.0.18-jre-headless-debian13, 17-jre-headless, 17-jre-headless-debian, 17-jre-headless-debian13
Architectures: amd64, arm64v8
Directory: 17/jre-headless/debian

Tags: 21.48-21.0.10-jdk-debian13, 21, 21-jdk, 21-jdk-debian, 21-jdk-debian13
Architectures: amd64, arm64v8
Directory: 21/jdk/debian

Tags: 21.48-21.0.10-jdk-headless-debian13, 21-headless, 21-headless-debian, 21-headless-debian13
Architectures: amd64, arm64v8
Directory: 21/jdk-headless/debian

Tags: 21.48-21.0.10-jre-debian13, 21-jre, 21-jre-debian, 21-jre-debian13
Architectures: amd64, arm64v8
Directory: 21/jre/debian

Tags: 21.48-21.0.10-jre-headless-debian13, 21-jre-headless, 21-jre-headless-debian, 21-jre-headless-debian13
Architectures: amd64, arm64v8
Directory: 21/jre-headless/debian

Tags: 25.32-25.0.2-jdk-debian13, 25, 25-jdk, 25-jdk-debian, 25-jdk-debian13
Architectures: amd64, arm64v8
Directory: 25/jdk/debian

Tags: 25.32-25.0.2-jdk-headless-debian13, 25-headless, 25-headless-debian, 25-headless-debian13
Architectures: amd64, arm64v8
Directory: 25/jdk-headless/debian

Tags: 25.32-25.0.2-jre-debian13, 25-jre, 25-jre-debian, 25-jre-debian13
Architectures: amd64, arm64v8
Directory: 25/jre/debian

Tags: 25.32-25.0.2-jre-headless-debian13, 25-jre-headless, 25-jre-headless-debian, 25-jre-headless-debian13
Architectures: amd64, arm64v8
Directory: 25/jre-headless/debian

Tags: 26.28-26.0.0-jdk-debian13, 26, 26-jdk, 26-jdk-debian, 26-jdk-debian13
Architectures: amd64, arm64v8
Directory: 26/jdk/debian

Tags: 26.28-26.0.0-jdk-headless-debian13, 26-headless, 26-headless-debian, 26-headless-debian13
Architectures: amd64, arm64v8
Directory: 26/jdk-headless/debian

Tags: 26.28-26.0.0-jre-debian13, 26-jre, 26-jre-debian, 26-jre-debian13
Architectures: amd64, arm64v8
Directory: 26/jre/debian

Tags: 26.28-26.0.0-jre-headless-debian13, 26-jre-headless, 26-jre-headless-debian, 26-jre-headless-debian13
Architectures: amd64, arm64v8
Directory: 26/jre-headless/debian


================================================
FILE: library/backdrop
================================================
Maintainers: Mike Pirog <mike@kalabox.io> (@pirog),
             Geoff St. Pierre <serundeputy@gmail.com> (@serundeputy),
             Jen Lampton <jen+docker@jeneration.com> (@jenlampton),
             Greg Netsas <greg@userfriendly.tech> (@klonos)
GitRepo: https://github.com/backdrop-ops/backdrop-docker.git

Tags: 1.33.0, 1.33, 1, 1.33.0-apache, 1.33-apache, 1-apache, apache, latest
Architectures: amd64, arm64v8
GitCommit: 7507205f204226257a3686d581f2a44efa4c998c
Directory: 1/apache

Tags: 1.33.0-fpm, 1.33-fpm, 1-fpm, fpm
Architectures: amd64, arm64v8
GitCommit: 7507205f204226257a3686d581f2a44efa4c998c
Directory: 1/fpm


================================================
FILE: library/bash
================================================
# this file is generated via https://github.com/tianon/docker-bash/blob/59788c3224d1c11f14518f6c860ce6bccaf21d54/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon)
GitRepo: https://github.com/tianon/docker-bash.git

Tags: devel-20260309, devel, devel-20260309-alpine3.23, devel-alpine3.23
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 5b559e99a3edb62532ae3a1c4ed7de7ed7c0c10c
Directory: devel

Tags: 5.3.9, 5.3, 5, latest, 5.3.9-alpine3.23, 5.3-alpine3.23, 5-alpine3.23, alpine3.23
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 59999c513d9e7bddb3972d38aa112af045cb0e80
Directory: 5.3

Tags: 5.2.37, 5.2, 5.2.37-alpine3.22, 5.2-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 9fc164bd1a8e4bfe16c517623ce935dc821bbb08
Directory: 5.2

Tags: 5.1.16, 5.1, 5.1.16-alpine3.22, 5.1-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 8ba8423bc0d3339722d4ba2d1af1f53fd179f506
Directory: 5.1

Tags: 5.0.18, 5.0, 5.0.18-alpine3.22, 5.0-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 5f58d08f8ee4a558b8302ef22352af99d4beedfd
Directory: 5.0

Tags: 4.4.23, 4.4, 4, 4.4.23-alpine3.22, 4.4-alpine3.22, 4-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f
Directory: 4.4

Tags: 4.3.48, 4.3, 4.3.48-alpine3.22, 4.3-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f
Directory: 4.3

Tags: 4.2.53, 4.2, 4.2.53-alpine3.22, 4.2-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 8556e37dc74a044cfd6e8255acfd116a5bdb8588
Directory: 4.2

Tags: 4.1.17, 4.1, 4.1.17-alpine3.22, 4.1-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f
Directory: 4.1

Tags: 4.0.44, 4.0, 4.0.44-alpine3.22, 4.0-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f
Directory: 4.0

Tags: 3.2.57, 3.2, 3, 3.2.57-alpine3.22, 3.2-alpine3.22, 3-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f
Directory: 3.2

Tags: 3.1.23, 3.1, 3.1.23-alpine3.22, 3.1-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f
Directory: 3.1

Tags: 3.0.22, 3.0, 3.0.22-alpine3.22, 3.0-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 5ffa8349006e790fe3534d0a6c3100fd6d725407
Directory: 3.0


================================================
FILE: library/bonita
================================================
Maintainers: Emmanuel Duchastenier <emmanuel.duchastenier@bonitasoft.org> (@educhastenier),
             Anthony Birembaut <anthony.birembaut@bonitasoft.org> (@abirembaut),
             Romain Bioteau <romain.bioteau@bonitasoft.org> (@rbioteau),
             Adrien Kantcheff <adrien.kantcheff@bonitasoft.org> (@akantcheff)
GitRepo: https://github.com/bonitasoft/bonita-distrib.git
Directory: docker

Tags: 2025.2-u5, 2025.2, 10.4.5, 10.4, latest
Architectures: amd64
GitFetch: refs/heads/docker/2025.2-u5
GitCommit: 502b96e7666b6690d948aef91d4f1ac641e47611


================================================
FILE: library/buildpack-deps
================================================
# this file is generated via https://github.com/docker-library/buildpack-deps/blob/abbc41715d6f92a6e5137a6a09b59400a6333606/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),
             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
GitRepo: https://github.com/docker-library/buildpack-deps.git

Tags: bookworm-curl, oldstable-curl
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
GitCommit: 3e18c3af1f5dce6a48abf036857f9097b6bd79cc
Directory: debian/bookworm/curl

Tags: bookworm-scm, oldstable-scm
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
GitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae
Directory: debian/bookworm/scm

Tags: bookworm, oldstable
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
GitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae
Directory: debian/bookworm

Tags: bullseye-curl, oldoldstable-curl
Architectures: amd64, arm32v7, arm64v8, i386
GitCommit: 93d6db0797f91ab674535553b7e0e762941a02d0
Directory: debian/bullseye/curl

Tags: bullseye-scm, oldoldstable-scm
Architectures: amd64, arm32v7, arm64v8, i386
GitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae
Directory: debian/bullseye/scm

Tags: bullseye, oldoldstable
Architectures: amd64, arm32v7, arm64v8, i386
GitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae
Directory: debian/bullseye

Tags: forky-curl, testing-curl
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 6fbd1fd6aa17031b10f11a97c31b9da1ac09db76
Directory: debian/forky/curl

Tags: forky-scm, testing-scm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 6fbd1fd6aa17031b10f11a97c31b9da1ac09db76
Directory: debian/forky/scm

Tags: forky, testing
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 6fbd1fd6aa17031b10f11a97c31b9da1ac09db76
Directory: debian/forky

Tags: sid-curl, unstable-curl
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 2b3a8b7d1f8875865034be3bab98ddd737e37d5e
Directory: debian/sid/curl

Tags: sid-scm, unstable-scm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 2b3a8b7d1f8875865034be3bab98ddd737e37d5e
Directory: debian/sid/scm

Tags: sid, unstable
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 2b3a8b7d1f8875865034be3bab98ddd737e37d5e
Directory: debian/sid

Tags: trixie-curl, stable-curl, curl
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5
Directory: debian/trixie/curl

Tags: trixie-scm, stable-scm, scm
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5
Directory: debian/trixie/scm

Tags: trixie, stable, latest
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5
Directory: debian/trixie

Tags: jammy-curl, 22.04-curl
Architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x
GitCommit: 93d6db0797f91ab674535553b7e0e762941a02d0
Directory: ubuntu/jammy/curl

Tags: jammy-scm, 22.04-scm
Architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x
GitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae
Directory: ubuntu/jammy/scm

Tags: jammy, 22.04
Architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x
GitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae
Directory: ubuntu/jammy

Tags: noble-curl, 24.04-curl
Architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x
GitCommit: 60dc5f9555c521de086b2f5770514faf69ee2cc4
Directory: ubuntu/noble/curl

Tags: noble-scm, 24.04-scm
Architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x
GitCommit: 60dc5f9555c521de086b2f5770514faf69ee2cc4
Directory: ubuntu/noble/scm

Tags: noble, 24.04
Architectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x
GitCommit: 60dc5f9555c521de086b2f5770514faf69ee2cc4
Directory: ubuntu/noble

Tags: questing-curl, 25.10-curl
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb
Directory: ubuntu/questing/curl

Tags: questing-scm, 25.10-scm
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb
Directory: ubuntu/questing/scm

Tags: questing, 25.10
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb
Directory: ubuntu/questing

Tags: resolute-curl, 26.04-curl
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2
Directory: ubuntu/resolute/curl

Tags: resolute-scm, 26.04-scm
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2
Directory: ubuntu/resolute/scm

Tags: resolute, 26.04
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2
Directory: ubuntu/resolute


================================================
FILE: library/busybox
================================================
# this file is generated via https://github.com/docker-library/busybox/blob/32ed6b6c9363239c5acccfcf89bf401e07fc33c3/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),
             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
GitRepo: https://github.com/docker-library/busybox.git
GitCommit: 32ed6b6c9363239c5acccfcf89bf401e07fc33c3
Builder: oci-import
File: index.json
# https://github.com/docker-library/busybox/tree/dist-amd64
amd64-GitFetch: refs/heads/dist-amd64
amd64-GitCommit: 557f024d4e247f4fa6e086640e7982333b29f04e
# https://github.com/docker-library/busybox/tree/dist-arm32v5
arm32v5-GitFetch: refs/heads/dist-arm32v5
arm32v5-GitCommit: 3edda89aee2cb45463eb3e4858b0d0b55b28b0cd
# https://github.com/docker-library/busybox/tree/dist-arm32v6
arm32v6-GitFetch: refs/heads/dist-arm32v6
arm32v6-GitCommit: 262f1f8fc3fd7ae038d0abee2908193c1f8ed7fd
# https://github.com/docker-library/busybox/tree/dist-arm32v7
arm32v7-GitFetch: refs/heads/dist-arm32v7
arm32v7-GitCommit: 6dde356a78739c0bf7e2fcd3c84a194431bdd73b
# https://github.com/docker-library/busybox/tree/dist-arm64v8
arm64v8-GitFetch: refs/heads/dist-arm64v8
arm64v8-GitCommit: 86823563177e12460ad3e122103a3ee14691807d
# https://github.com/docker-library/busybox/tree/dist-i386
i386-GitFetch: refs/heads/dist-i386
i386-GitCommit: b637faa0f5db2890dab7f4b93495ee1c7d951b08
# https://github.com/docker-library/busybox/tree/dist-ppc64le
ppc64le-GitFetch: refs/heads/dist-ppc64le
ppc64le-GitCommit: ec0723d76b735e22d7b8070f928ab6de1cc8a17a
# https://github.com/docker-library/busybox/tree/dist-riscv64
riscv64-GitFetch: refs/heads/dist-riscv64
riscv64-GitCommit: e43482cb6af1ec3c0e58945046222805ad069d5b
# https://github.com/docker-library/busybox/tree/dist-s390x
s390x-GitFetch: refs/heads/dist-s390x
s390x-GitCommit: d76495a831258bec4d30c217b742399a4a793bfc

Tags: 1.37.0-glibc, 1.37-glibc, 1-glibc, unstable-glibc, glibc
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
amd64-Directory: latest/glibc/amd64
arm32v5-Directory: latest/glibc/arm32v5
arm32v7-Directory: latest/glibc/arm32v7
arm64v8-Directory: latest/glibc/arm64v8
i386-Directory: latest/glibc/i386
ppc64le-Directory: latest/glibc/ppc64le
riscv64-Directory: latest/glibc/riscv64
s390x-Directory: latest/glibc/s390x

Tags: 1.37.0-uclibc, 1.37-uclibc, 1-uclibc, unstable-uclibc, uclibc
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64
amd64-Directory: latest/uclibc/amd64
arm32v5-Directory: latest/uclibc/arm32v5
arm32v7-Directory: latest/uclibc/arm32v7
arm64v8-Directory: latest/uclibc/arm64v8
i386-Directory: latest/uclibc/i386
riscv64-Directory: latest/uclibc/riscv64

Tags: 1.37.0-musl, 1.37-musl, 1-musl, unstable-musl, musl
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
amd64-Directory: latest/musl/amd64
arm32v6-Directory: latest/musl/arm32v6
arm32v7-Directory: latest/musl/arm32v7
arm64v8-Directory: latest/musl/arm64v8
i386-Directory: latest/musl/i386
ppc64le-Directory: latest/musl/ppc64le
riscv64-Directory: latest/musl/riscv64
s390x-Directory: latest/musl/s390x

Tags: 1.37.0, 1.37, 1, unstable, latest
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x, arm32v6
amd64-Directory: latest/glibc/amd64
arm32v5-Directory: latest/glibc/arm32v5
arm32v7-Directory: latest/glibc/arm32v7
arm64v8-Directory: latest/glibc/arm64v8
i386-Directory: latest/glibc/i386
ppc64le-Directory: latest/glibc/ppc64le
riscv64-Directory: latest/glibc/riscv64
s390x-Directory: latest/glibc/s390x
arm32v6-Directory: latest/musl/arm32v6

Tags: 1.36.1-glibc, 1.36-glibc, stable-glibc
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
amd64-Directory: latest-1/glibc/amd64
arm32v5-Directory: latest-1/glibc/arm32v5
arm32v7-Directory: latest-1/glibc/arm32v7
arm64v8-Directory: latest-1/glibc/arm64v8
i386-Directory: latest-1/glibc/i386
ppc64le-Directory: latest-1/glibc/ppc64le
riscv64-Directory: latest-1/glibc/riscv64
s390x-Directory: latest-1/glibc/s390x

Tags: 1.36.1-uclibc, 1.36-uclibc, stable-uclibc
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64
amd64-Directory: latest-1/uclibc/amd64
arm32v5-Directory: latest-1/uclibc/arm32v5
arm32v7-Directory: latest-1/uclibc/arm32v7
arm64v8-Directory: latest-1/uclibc/arm64v8
i386-Directory: latest-1/uclibc/i386
riscv64-Directory: latest-1/uclibc/riscv64

Tags: 1.36.1-musl, 1.36-musl, stable-musl
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
amd64-Directory: latest-1/musl/amd64
arm32v6-Directory: latest-1/musl/arm32v6
arm32v7-Directory: latest-1/musl/arm32v7
arm64v8-Directory: latest-1/musl/arm64v8
i386-Directory: latest-1/musl/i386
ppc64le-Directory: latest-1/musl/ppc64le
riscv64-Directory: latest-1/musl/riscv64
s390x-Directory: latest-1/musl/s390x

Tags: 1.36.1, 1.36, stable
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x, arm32v6
amd64-Directory: latest-1/glibc/amd64
arm32v5-Directory: latest-1/glibc/arm32v5
arm32v7-Directory: latest-1/glibc/arm32v7
arm64v8-Directory: latest-1/glibc/arm64v8
i386-Directory: latest-1/glibc/i386
ppc64le-Directory: latest-1/glibc/ppc64le
riscv64-Directory: latest-1/glibc/riscv64
s390x-Directory: latest-1/glibc/s390x
arm32v6-Directory: latest-1/musl/arm32v6


================================================
FILE: library/caddy
================================================
# this file is generated with gomplate:
# template: https://github.com/caddyserver/caddy-docker/blob/e05f66898af9a0a694af637db2724f91d9d82ed7/stackbrew.tmpl
# config context: https://github.com/caddyserver/caddy-docker/blob/03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b/stackbrew-config.yaml
Maintainers: Dave Henderson (@hairyhenderson),
             Francis Lavoie (@francislavoie)

Tags: 2.11.2-alpine, 2.11-alpine, 2-alpine, alpine
SharedTags: 2.11.2, 2.11, 2, latest
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/alpine
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: amd64, arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x

Tags: 2.11.2-builder-alpine, 2.11-builder-alpine, 2-builder-alpine, builder-alpine
SharedTags: 2.11.2-builder, 2.11-builder, 2-builder, builder
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/builder
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: amd64, arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x

Tags: 2.11.2-windowsservercore-ltsc2022, 2.11-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022, windowsservercore-ltsc2022
SharedTags: 2.11.2-windowsservercore, 2.11-windowsservercore, 2-windowsservercore, windowsservercore, 2.11.2, 2.11, 2, latest
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/windows/ltsc2022
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: windows-amd64
Constraints: windowsservercore-ltsc2022

Tags: 2.11.2-windowsservercore-ltsc2025, 2.11-windowsservercore-ltsc2025, 2-windowsservercore-ltsc2025, windowsservercore-ltsc2025
SharedTags: 2.11.2-windowsservercore, 2.11-windowsservercore, 2-windowsservercore, windowsservercore, 2.11.2, 2.11, 2, latest
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/windows/ltsc2025
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: windows-amd64
Constraints: windowsservercore-ltsc2025

Tags: 2.11.2-nanoserver-ltsc2022, 2.11-nanoserver-ltsc2022, 2-nanoserver-ltsc2022, nanoserver-ltsc2022
SharedTags: 2.11.2-nanoserver, 2.11-nanoserver, 2-nanoserver, nanoserver
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/windows-nanoserver/ltsc2022
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: windows-amd64
Constraints: nanoserver-ltsc2022, windowsservercore-ltsc2022

Tags: 2.11.2-nanoserver-ltsc2025, 2.11-nanoserver-ltsc2025, 2-nanoserver-ltsc2025, nanoserver-ltsc2025
SharedTags: 2.11.2-nanoserver, 2.11-nanoserver, 2-nanoserver, nanoserver
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/windows-nanoserver/ltsc2025
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: windows-amd64
Constraints: nanoserver-ltsc2025, windowsservercore-ltsc2025

Tags: 2.11.2-builder-windowsservercore-ltsc2022, 2.11-builder-windowsservercore-ltsc2022, 2-builder-windowsservercore-ltsc2022, builder-windowsservercore-ltsc2022
SharedTags: 2.11.2-builder, 2.11-builder, 2-builder, builder
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/windows-builder/ltsc2022
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: windows-amd64
Constraints: windowsservercore-ltsc2022

Tags: 2.11.2-builder-windowsservercore-ltsc2025, 2.11-builder-windowsservercore-ltsc2025, 2-builder-windowsservercore-ltsc2025, builder-windowsservercore-ltsc2025
SharedTags: 2.11.2-builder, 2.11-builder, 2-builder, builder
GitRepo: https://github.com/caddyserver/caddy-docker.git
Directory: 2.11/windows-builder/ltsc2025
GitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b
Architectures: windows-amd64
Constraints: windowsservercore-ltsc2025



================================================
FILE: library/cassandra
================================================
# this file is generated via https://github.com/docker-library/cassandra/blob/7c5b1270f935620330a51c1658d2c0557432f4ac/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),
             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
GitRepo: https://github.com/docker-library/cassandra.git

Tags: 5.0.6, 5.0, 5, latest, 5.0.6-bookworm, 5.0-bookworm, 5-bookworm, bookworm
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 7c5b1270f935620330a51c1658d2c0557432f4ac
Directory: 5.0

Tags: 4.1.10, 4.1, 4, 4.1.10-bookworm, 4.1-bookworm, 4-bookworm
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 7c5b1270f935620330a51c1658d2c0557432f4ac
Directory: 4.1

Tags: 4.0.19, 4.0, 4.0.19-bookworm, 4.0-bookworm
Architectures: amd64, arm32v7, arm64v8, ppc64le, s390x
GitCommit: 7c5b1270f935620330a51c1658d2c0557432f4ac
Directory: 4.0


================================================
FILE: library/chronograf
================================================
Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),
             Sven Rebhan <srebhan@influxdata.com> (@srebhan),
             Maya Strandboge <mstrandboge@influxdata.com> (@mstrandboge)
GitRepo: https://github.com/influxdata/influxdata-docker
GitCommit: 3dc2d064944d033907d137e1af8069d35852de94

Tags: 1.7, 1.7.17
Architectures: amd64, arm32v7, arm64v8
Directory: chronograf/1.7

Tags: 1.7-alpine, 1.7.17-alpine
Directory: chronograf/1.7/alpine

Tags: 1.8, 1.8.10
Architectures: amd64, arm32v7, arm64v8
Directory: chronograf/1.8

Tags: 1.8-alpine, 1.8.10-alpine
Directory: chronograf/1.8/alpine

Tags: 1.9, 1.9.4
Architectures: amd64, arm32v7, arm64v8
Directory: chronograf/1.9

Tags: 1.9-alpine, 1.9.4-alpine
Directory: chronograf/1.9/alpine

Tags: 1.10, 1.10.9, latest
Architectures: amd64, arm32v7, arm64v8
Directory: chronograf/1.10

Tags: 1.10-alpine, 1.10.9-alpine, alpine
Directory: chronograf/1.10/alpine


================================================
FILE: library/cirros
================================================
# this file is generated via https://github.com/tianon/docker-brew-cirros/blob/bc178480989db677c1271933567a0555e35856dc/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon)
GitRepo: https://github.com/tianon/docker-brew-cirros.git
GitFetch: refs/heads/dist
GitCommit: 1821a0ca9eaf82280a2e953df56e88ab50178628
Architectures: amd64, arm32v7, arm64v8, ppc64le
amd64-Directory: arches/amd64
arm32v7-Directory: arches/arm32v7
arm64v8-Directory: arches/arm64v8
ppc64le-Directory: arches/ppc64le

Tags: 0.6.3, 0.6, 0, latest


================================================
FILE: library/clearlinux
================================================
Maintainers: William Douglas <william.douglas@intel.com> (@bryteise)
GitRepo: https://github.com/clearlinux/docker-brew-clearlinux.git

Tags: latest, base
GitCommit: 03e2dcd390233733b398e72ce2382e54b5ef48a4
GitFetch: refs/heads/base-43630


================================================
FILE: library/clefos
================================================
Maintainers: The ClefOS Project <neale@sinenomine.net> (@nealef)
GitRepo: https://github.com/nealef/clefos.git

# https://github.com/docker-library/docs/pull/2477


================================================
FILE: library/clickhouse
================================================
# The file is generated by https://github.com/ClickHouse/ClickHouse/blob/2ee3817600b03194beae6e050e7cb19f46690fa3/tests/ci/official_docker.py

Maintainers: Misha f. Shiryaev <felixoid@clickhouse.com> (@Felixoid),
             Max Kainov <max.kainov@clickhouse.com> (@mkaynov),
             Alexander Tokmakov <tavplubix@clickhouse.com> (@tavplubix),
             Alexander Sapin <alesapin@clickhouse.com> (@alesapin)
GitRepo: https://github.com/ClickHouse/docker-library.git
GitFetch: refs/heads/main
GitCommit: 7697338ff98fafdedbaa5f0a6e77c8cf3321e775

Tags: latest, jammy, 26.2, 26.2-jammy, 26.2.4, 26.2.4-jammy, 26.2.4.23, 26.2.4.23-jammy
Architectures: amd64, arm64v8
Directory: server/26.2.4.23
File: Dockerfile.ubuntu

Tags: 26.1, 26.1-jammy, 26.1.4, 26.1.4-jammy, 26.1.4.35, 26.1.4.35-jammy
Architectures: amd64, arm64v8
Directory: server/26.1.4.35
File: Dockerfile.ubuntu

Tags: 25.12, 25.12-jammy, 25.12.8, 25.12.8-jammy, 25.12.8.9, 25.12.8.9-jammy
Architectures: amd64, arm64v8
Directory: server/25.12.8.9
File: Dockerfile.ubuntu

Tags: lts, lts-jammy, 25.8, 25.8-jammy, 25.8.18, 25.8.18-jammy, 25.8.18.1, 25.8.18.1-jammy
Architectures: amd64, arm64v8
Directory: server/25.8.18.1
File: Dockerfile.ubuntu

Tags: 25.3, 25.3-jammy, 25.3.14, 25.3.14-jammy, 25.3.14.14, 25.3.14.14-jammy
Architectures: amd64, arm64v8
Directory: server/25.3.14.14
File: Dockerfile.ubuntu


================================================
FILE: library/clojure
================================================
Maintainers: Paul Lam <paul@quantisan.com> (@Quantisan),
             Wes Morgan <wes@wesmorgan.me> (@cap10morgan)
Architectures: riscv64, arm64v8, ppc64le, amd64, s390x
GitRepo: https://github.com/Quantisan/docker-clojure.git
GitCommit: 14dff87caeb3172b199e26146f4dfeb11e893c5f


Tags: latest
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-25/latest

Tags: temurin-8-lein-2.12.0-bookworm, temurin-8-lein-bookworm
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-bookworm-8/lein

Tags: temurin-8-lein-2.12.0-bookworm-slim, temurin-8-lein-bookworm-slim
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-bookworm-slim-8/lein

Tags: temurin-8-lein-2.12.0-bullseye, temurin-8-lein-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-8/lein

Tags: temurin-8-lein-2.12.0-bullseye-slim, temurin-8-lein-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-8/lein

Tags: temurin-8-lein-2.12.0-jammy, temurin-8-lein-jammy
Architectures: arm64v8, ppc64le, amd64
Directory: target/eclipse-temurin-8-jdk-jammy/lein

Tags: temurin-8-lein, temurin-8-lein-2.12.0, temurin-8-lein-2.12.0-noble, temurin-8-lein-noble
Architectures: arm64v8, ppc64le, amd64
Directory: target/eclipse-temurin-8-jdk-noble/lein

Tags: temurin-8-lein-2.12.0-trixie, temurin-8-lein-trixie
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-trixie-8/lein

Tags: temurin-8-lein-2.12.0-trixie-slim, temurin-8-lein-trixie-slim
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-trixie-slim-8/lein

Tags: temurin-8-bookworm, temurin-8-tools-deps-1.12.4.1618-bookworm, temurin-8-tools-deps-bookworm
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-bookworm-8/tools-deps

Tags: temurin-8-bookworm-slim, temurin-8-tools-deps-1.12.4.1618-bookworm-slim, temurin-8-tools-deps-bookworm-slim
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-bookworm-slim-8/tools-deps

Tags: temurin-8-bullseye, temurin-8-tools-deps-1.12.4.1618-bullseye, temurin-8-tools-deps-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-8/tools-deps

Tags: temurin-8-bullseye-slim, temurin-8-tools-deps-1.12.4.1618-bullseye-slim, temurin-8-tools-deps-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-8/tools-deps

Tags: temurin-8-jammy, temurin-8-tools-deps-1.12.4.1618-jammy, temurin-8-tools-deps-jammy
Architectures: arm64v8, ppc64le, amd64
Directory: target/eclipse-temurin-8-jdk-jammy/tools-deps

Tags: temurin-8-noble, temurin-8-tools-deps, temurin-8-tools-deps-1.12.4.1618, temurin-8-tools-deps-1.12.4.1618-noble, temurin-8-tools-deps-noble
Architectures: arm64v8, ppc64le, amd64
Directory: target/eclipse-temurin-8-jdk-noble/tools-deps

Tags: temurin-8-tools-deps-1.12.4.1618-trixie, temurin-8-tools-deps-trixie, temurin-8-trixie
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-trixie-8/tools-deps

Tags: temurin-8-tools-deps-1.12.4.1618-trixie-slim, temurin-8-tools-deps-trixie-slim, temurin-8-trixie-slim
Architectures: arm64v8, ppc64le, amd64
Directory: target/debian-trixie-slim-8/tools-deps

Tags: temurin-11-lein-2.12.0-alpine, temurin-11-lein-alpine
Architectures: amd64
Directory: target/eclipse-temurin-11-jdk-alpine/lein

Tags: temurin-11-lein-2.12.0-bookworm, temurin-11-lein-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-11/lein

Tags: temurin-11-lein-2.12.0-bookworm-slim, temurin-11-lein-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-11/lein

Tags: temurin-11-lein-2.12.0-bullseye, temurin-11-lein-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-11/lein

Tags: temurin-11-lein-2.12.0-bullseye-slim, temurin-11-lein-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-11/lein

Tags: temurin-11-lein-2.12.0-jammy, temurin-11-lein-jammy
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-11-jdk-jammy/lein

Tags: temurin-11-lein, temurin-11-lein-2.12.0, temurin-11-lein-2.12.0-noble, temurin-11-lein-noble
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-11-jdk-noble/lein

Tags: temurin-11-lein-2.12.0-trixie, temurin-11-lein-trixie
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-trixie-11/lein

Tags: temurin-11-lein-2.12.0-trixie-slim, temurin-11-lein-trixie-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-trixie-slim-11/lein

Tags: temurin-11-alpine, temurin-11-tools-deps-1.12.4.1618-alpine, temurin-11-tools-deps-alpine
Architectures: amd64
Directory: target/eclipse-temurin-11-jdk-alpine/tools-deps

Tags: temurin-11-bookworm, temurin-11-tools-deps-1.12.4.1618-bookworm, temurin-11-tools-deps-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-11/tools-deps

Tags: temurin-11-bookworm-slim, temurin-11-tools-deps-1.12.4.1618-bookworm-slim, temurin-11-tools-deps-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-11/tools-deps

Tags: temurin-11-bullseye, temurin-11-tools-deps-1.12.4.1618-bullseye, temurin-11-tools-deps-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-11/tools-deps

Tags: temurin-11-bullseye-slim, temurin-11-tools-deps-1.12.4.1618-bullseye-slim, temurin-11-tools-deps-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-11/tools-deps

Tags: temurin-11-jammy, temurin-11-tools-deps-1.12.4.1618-jammy, temurin-11-tools-deps-jammy
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-11-jdk-jammy/tools-deps

Tags: temurin-11-noble, temurin-11-tools-deps, temurin-11-tools-deps-1.12.4.1618, temurin-11-tools-deps-1.12.4.1618-noble, temurin-11-tools-deps-noble
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-11-jdk-noble/tools-deps

Tags: temurin-11-tools-deps-1.12.4.1618-trixie, temurin-11-tools-deps-trixie, temurin-11-trixie
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-trixie-11/tools-deps

Tags: temurin-11-tools-deps-1.12.4.1618-trixie-slim, temurin-11-tools-deps-trixie-slim, temurin-11-trixie-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-trixie-slim-11/tools-deps

Tags: temurin-17-lein-2.12.0-alpine, temurin-17-lein-alpine
Architectures: amd64
Directory: target/eclipse-temurin-17-jdk-alpine/lein

Tags: temurin-17-lein-2.12.0-bookworm, temurin-17-lein-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-17/lein

Tags: temurin-17-lein-2.12.0-bookworm-slim, temurin-17-lein-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-17/lein

Tags: temurin-17-lein-2.12.0-bullseye, temurin-17-lein-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-17/lein

Tags: temurin-17-lein-2.12.0-bullseye-slim, temurin-17-lein-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-17/lein

Tags: temurin-17-lein-2.12.0-jammy, temurin-17-lein-jammy
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-17-jdk-jammy/lein

Tags: temurin-17-lein, temurin-17-lein-2.12.0, temurin-17-lein-2.12.0-noble, temurin-17-lein-noble
Directory: target/eclipse-temurin-17-jdk-noble/lein

Tags: temurin-17-lein-2.12.0-trixie, temurin-17-lein-trixie
Directory: target/debian-trixie-17/lein

Tags: temurin-17-lein-2.12.0-trixie-slim, temurin-17-lein-trixie-slim
Directory: target/debian-trixie-slim-17/lein

Tags: temurin-17-alpine, temurin-17-tools-deps-1.12.4.1618-alpine, temurin-17-tools-deps-alpine
Architectures: amd64
Directory: target/eclipse-temurin-17-jdk-alpine/tools-deps

Tags: temurin-17-bookworm, temurin-17-tools-deps-1.12.4.1618-bookworm, temurin-17-tools-deps-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-17/tools-deps

Tags: temurin-17-bookworm-slim, temurin-17-tools-deps-1.12.4.1618-bookworm-slim, temurin-17-tools-deps-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-17/tools-deps

Tags: temurin-17-bullseye, temurin-17-tools-deps-1.12.4.1618-bullseye, temurin-17-tools-deps-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-17/tools-deps

Tags: temurin-17-bullseye-slim, temurin-17-tools-deps-1.12.4.1618-bullseye-slim, temurin-17-tools-deps-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-17/tools-deps

Tags: temurin-17-jammy, temurin-17-tools-deps-1.12.4.1618-jammy, temurin-17-tools-deps-jammy
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-17-jdk-jammy/tools-deps

Tags: temurin-17-noble, temurin-17-tools-deps, temurin-17-tools-deps-1.12.4.1618, temurin-17-tools-deps-1.12.4.1618-noble, temurin-17-tools-deps-noble
Directory: target/eclipse-temurin-17-jdk-noble/tools-deps

Tags: temurin-17-tools-deps-1.12.4.1618-trixie, temurin-17-tools-deps-trixie, temurin-17-trixie
Directory: target/debian-trixie-17/tools-deps

Tags: temurin-17-tools-deps-1.12.4.1618-trixie-slim, temurin-17-tools-deps-trixie-slim, temurin-17-trixie-slim
Directory: target/debian-trixie-slim-17/tools-deps

Tags: temurin-21-lein-2.12.0-alpine, temurin-21-lein-alpine
Architectures: arm64v8, amd64
Directory: target/eclipse-temurin-21-jdk-alpine/lein

Tags: temurin-21-lein, temurin-21-lein-2.12.0, temurin-21-lein-2.12.0-bookworm, temurin-21-lein-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-21/lein

Tags: temurin-21-lein-2.12.0-bookworm-slim, temurin-21-lein-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-21/lein

Tags: temurin-21-lein-2.12.0-bullseye, temurin-21-lein-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-21/lein

Tags: temurin-21-lein-2.12.0-bullseye-slim, temurin-21-lein-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-21/lein

Tags: temurin-21-lein-2.12.0-jammy, temurin-21-lein-jammy
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-21-jdk-jammy/lein

Tags: temurin-21-lein-2.12.0-noble, temurin-21-lein-noble
Directory: target/eclipse-temurin-21-jdk-noble/lein

Tags: temurin-21-lein-2.12.0-trixie, temurin-21-lein-trixie
Directory: target/debian-trixie-21/lein

Tags: temurin-21-lein-2.12.0-trixie-slim, temurin-21-lein-trixie-slim
Directory: target/debian-trixie-slim-21/lein

Tags: temurin-21-alpine, temurin-21-tools-deps-1.12.4.1618-alpine, temurin-21-tools-deps-alpine
Architectures: arm64v8, amd64
Directory: target/eclipse-temurin-21-jdk-alpine/tools-deps

Tags: temurin-21-bookworm, temurin-21-tools-deps, temurin-21-tools-deps-1.12.4.1618, temurin-21-tools-deps-1.12.4.1618-bookworm, temurin-21-tools-deps-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-21/tools-deps

Tags: temurin-21-bookworm-slim, temurin-21-tools-deps-1.12.4.1618-bookworm-slim, temurin-21-tools-deps-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-21/tools-deps

Tags: temurin-21-bullseye, temurin-21-tools-deps-1.12.4.1618-bullseye, temurin-21-tools-deps-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-21/tools-deps

Tags: temurin-21-bullseye-slim, temurin-21-tools-deps-1.12.4.1618-bullseye-slim, temurin-21-tools-deps-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-21/tools-deps

Tags: temurin-21-jammy, temurin-21-tools-deps-1.12.4.1618-jammy, temurin-21-tools-deps-jammy
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/eclipse-temurin-21-jdk-jammy/tools-deps

Tags: temurin-21-noble, temurin-21-tools-deps-1.12.4.1618-noble, temurin-21-tools-deps-noble
Directory: target/eclipse-temurin-21-jdk-noble/tools-deps

Tags: temurin-21-tools-deps-1.12.4.1618-trixie, temurin-21-tools-deps-trixie, temurin-21-trixie
Directory: target/debian-trixie-21/tools-deps

Tags: temurin-21-tools-deps-1.12.4.1618-trixie-slim, temurin-21-tools-deps-trixie-slim, temurin-21-trixie-slim
Directory: target/debian-trixie-slim-21/tools-deps

Tags: temurin-25-lein-2.12.0-alpine, temurin-25-lein-alpine
Architectures: arm64v8, amd64
Directory: target/eclipse-temurin-25-jdk-alpine/lein

Tags: lein, lein-2.12.0, lein-2.12.0-bookworm, lein-bookworm, temurin-25-lein, temurin-25-lein-2.12.0, temurin-25-lein-2.12.0-bookworm, temurin-25-lein-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-25/lein

Tags: lein-2.12.0-bookworm-slim, lein-bookworm-slim, temurin-25-lein-2.12.0-bookworm-slim, temurin-25-lein-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-25/lein

Tags: lein-2.12.0-bullseye, lein-bullseye, temurin-25-lein-2.12.0-bullseye, temurin-25-lein-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-25/lein

Tags: lein-2.12.0-bullseye-slim, lein-bullseye-slim, temurin-25-lein-2.12.0-bullseye-slim, temurin-25-lein-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-25/lein

Tags: temurin-25-lein-2.12.0-noble, temurin-25-lein-noble
Directory: target/eclipse-temurin-25-jdk-noble/lein

Tags: lein-2.12.0-trixie, lein-trixie, temurin-25-lein-2.12.0-trixie, temurin-25-lein-trixie
Directory: target/debian-trixie-25/lein

Tags: lein-2.12.0-trixie-slim, lein-trixie-slim, temurin-25-lein-2.12.0-trixie-slim, temurin-25-lein-trixie-slim
Directory: target/debian-trixie-slim-25/lein

Tags: temurin-25-alpine, temurin-25-tools-deps-1.12.4.1618-alpine, temurin-25-tools-deps-alpine
Architectures: arm64v8, amd64
Directory: target/eclipse-temurin-25-jdk-alpine/tools-deps

Tags: temurin-25-bookworm, temurin-25-tools-deps, temurin-25-tools-deps-1.12.4.1618, temurin-25-tools-deps-1.12.4.1618-bookworm, temurin-25-tools-deps-bookworm, tools-deps, tools-deps-1.12.4.1618, tools-deps-1.12.4.1618-bookworm, tools-deps-bookworm
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-25/tools-deps

Tags: temurin-25-bookworm-slim, temurin-25-tools-deps-1.12.4.1618-bookworm-slim, temurin-25-tools-deps-bookworm-slim, tools-deps-1.12.4.1618-bookworm-slim, tools-deps-bookworm-slim
Architectures: arm64v8, ppc64le, amd64, s390x
Directory: target/debian-bookworm-slim-25/tools-deps

Tags: temurin-25-bullseye, temurin-25-tools-deps-1.12.4.1618-bullseye, temurin-25-tools-deps-bullseye, tools-deps-1.12.4.1618-bullseye, tools-deps-bullseye
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-25/tools-deps

Tags: temurin-25-bullseye-slim, temurin-25-tools-deps-1.12.4.1618-bullseye-slim, temurin-25-tools-deps-bullseye-slim, tools-deps-1.12.4.1618-bullseye-slim, tools-deps-bullseye-slim
Architectures: arm64v8, amd64
Directory: target/debian-bullseye-slim-25/tools-deps

Tags: temurin-25-noble, temurin-25-tools-deps-1.12.4.1618-noble, temurin-25-tools-deps-noble
Directory: target/eclipse-temurin-25-jdk-noble/tools-deps

Tags: temurin-25-tools-deps-1.12.4.1618-trixie, temurin-25-tools-deps-trixie, temurin-25-trixie, tools-deps-1.12.4.1618-trixie, tools-deps-trixie
Directory: target/debian-trixie-25/tools-deps

Tags: temurin-25-tools-deps-1.12.4.1618-trixie-slim, temurin-25-tools-deps-trixie-slim, temurin-25-trixie-slim, tools-deps-1.12.4.1618-trixie-slim, tools-deps-trixie-slim
Directory: target/debian-trixie-slim-25/tools-deps


================================================
FILE: library/composer
================================================
# this file was generated using https://github.com/composer/docker/blob/3fdb03de2e013b14208ce98cdd2125d488adc196/generate-stackbrew-library.sh

Maintainers: Composer (@composer), Rob Bast (@alcohol)
GitRepo: https://github.com/composer/docker.git
Builder: buildkit

Tags: 2.9.5, 2.9, 2, latest
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitFetch: refs/heads/main
GitCommit: d847d1738962086f205984ed253cace363731af7
Directory: latest

Tags: 2.2.26, 2.2
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitFetch: refs/heads/main
GitCommit: fa961e74c7bd38b762e5a358eca4794e86f0464c
Directory: 2.2


================================================
FILE: library/convertigo
================================================
Maintainers: Nicolas Albert <nicolasa@convertigo.com> (@nicolas-albert), Olivier Picciotto <olivier.picciotto@convertigo.com> (@opicciotto)
GitRepo: https://github.com/convertigo/convertigo
GitCommit: fb6f00cdd5842fffb22271230507789e4c565fa4

Tags: 8.4.1, 8.4, latest
Architectures: amd64, arm64v8
Directory: docker/default

================================================
FILE: library/couchbase
================================================
Maintainers: Couchbase Docker Team <docker@couchbase.com> (@cb-robot)
GitRepo: https://github.com/couchbase/docker

Tags: 8.0.0, enterprise, enterprise-8.0.0, latest
GitCommit: c11b8eac06fe26a16b2e2b17020a965d45d7f329
Directory: enterprise/couchbase-server/8.0.0
Architectures: amd64, arm64v8

Tags: community, community-8.0.0
GitCommit: e2600d59a2b84984adeccbe1c0f8b5d926d4b529
Directory: community/couchbase-server/8.0.0
Architectures: amd64, arm64v8

Tags: 7.6.9, enterprise-7.6.9
GitCommit: b18d7484594299cd7fdc11b7e9115c1fa86acc74
Directory: enterprise/couchbase-server/7.6.9
Architectures: amd64, arm64v8

Tags: 7.6.8, enterprise-7.6.8
GitCommit: 79e990af7621fa397c0dc12fd08bad6db4f49476
Directory: enterprise/couchbase-server/7.6.8
Architectures: amd64, arm64v8

Tags: 7.6.7, enterprise-7.6.7
GitCommit: a322cc7110124b2581339f52d88bab80fb50016d
Directory: enterprise/couchbase-server/7.6.7
Architectures: amd64, arm64v8

Tags: 7.6.6, enterprise-7.6.6
GitCommit: 9ce3cbc835dd4e072943ac7878aa7f87d6b95178
Directory: enterprise/couchbase-server/7.6.6
Architectures: amd64, arm64v8

Tags: 7.6.5, enterprise-7.6.5
GitCommit: ec16abff6f0551ced6c771bd5606a4392379dd31
Directory: enterprise/couchbase-server/7.6.5
Architectures: amd64, arm64v8

Tags: 7.6.4, enterprise-7.6.4
GitCommit: 9990e2cfabc94b37607e5666d9ef1eab69a397a6
Directory: enterprise/couchbase-server/7.6.4
Architectures: amd64, arm64v8

Tags: 7.6.3, enterprise-7.6.3
GitCommit: 553d1baa4aa90fe506e1d7bcdf4daec387a110fe
Directory: enterprise/couchbase-server/7.6.3
Architectures: amd64, arm64v8

Tags: 7.6.2, enterprise-7.6.2
GitCommit: ce13f602d2c95f76835c67a8855d5e73480973a6
Directory: enterprise/couchbase-server/7.6.2
Architectures: amd64, arm64v8

Tags: community-7.6.2
GitCommit: 3f81af158b7f307e42f8c42ceaf7657b2690bfca
Directory: community/couchbase-server/7.6.2
Architectures: amd64, arm64v8

Tags: 7.6.10, enterprise-7.6.10
GitCommit: 0603961e7e5a07d9aa1f4f28224721d9695014e8
Directory: enterprise/couchbase-server/7.6.10
Architectures: amd64, arm64v8

Tags: 7.6.1, enterprise-7.6.1
GitCommit: 966143f937bfe6979b7c09b86684004fdd21e5b8
Directory: enterprise/couchbase-server/7.6.1
Architectures: amd64, arm64v8

Tags: community-7.6.1
GitCommit: a18464c9b23efba391317fd21f898bf64dff6ec1
Directory: community/couchbase-server/7.6.1
Architectures: amd64, arm64v8

Tags: 7.6.0, enterprise-7.6.0
GitCommit: 9bdcf41deedd86da4c71347ffeea350a9895d816
Directory: enterprise/couchbase-server/7.6.0
Architectures: amd64, arm64v8

Tags: community-7.6.0
GitCommit: 6d669d0e34e6990b43c1b91ea74720235c96c4ac
Directory: community/couchbase-server/7.6.0
Architectures: amd64, arm64v8

Tags: 7.2.9, enterprise-7.2.9
GitCommit: 3d91b428d1c1399713c5c900ab775a5cb3d82980
Directory: enterprise/couchbase-server/7.2.9
Architectures: amd64, arm64v8

Tags: 7.2.8, enterprise-7.2.8
GitCommit: 5023e9104d765a15cde8e978be5266a6f1889fb0
Directory: enterprise/couchbase-server/7.2.8
Architectures: amd64, arm64v8

Tags: 7.2.7, enterprise-7.2.7
GitCommit: 23887cae4fd6ce054f383d524a7975d2e3a6b72e
Directory: enterprise/couchbase-server/7.2.7
Architectures: amd64, arm64v8

Tags: 7.2.6, enterprise-7.2.6
GitCommit: 181af64dcbedc1abf6e0916d9f5373cf1c18cb6e
Directory: enterprise/couchbase-server/7.2.6
Architectures: amd64, arm64v8

Tags: 7.2.5, enterprise-7.2.5
GitCommit: 94d97d9eea3d4057846be28f319940927d5166cb
Directory: enterprise/couchbase-server/7.2.5
Architectures: amd64, arm64v8

Tags: 7.2.4, enterprise-7.2.4
GitCommit: 15c1c3c0b4717a8b23ef7962f3fde28fe68e4311
Directory: enterprise/couchbase-server/7.2.4
Architectures: amd64, arm64v8

Tags: community-7.2.4
GitCommit: 7c8453ef8584ff18f7b6c052828758693af4f72c
Directory: community/couchbase-server/7.2.4
Architectures: amd64, arm64v8

Tags: 7.2.3, enterprise-7.2.3
GitCommit: b54049418018144369816d18c63d9bf76e34bc9f
Directory: enterprise/couchbase-server/7.2.3
Architectures: amd64, arm64v8

Tags: 7.2.2, enterprise-7.2.2
GitCommit: 3515fb617a469a5f46d492cf6910dddff8efb825
Directory: enterprise/couchbase-server/7.2.2
Architectures: amd64, arm64v8

Tags: community-7.2.2
GitCommit: c7a25ac7f38a81a465aa97f1a1d753a6c579954f
Directory: community/couchbase-server/7.2.2
Architectures: amd64, arm64v8

Tags: 7.2.0, enterprise-7.2.0
GitCommit: 4e769975179dc4e5bf4138349818bc8a0e191c9f
Directory: enterprise/couchbase-server/7.2.0
Architectures: amd64, arm64v8

Tags: community-7.2.0
GitCommit: 71596d088ce2bc0218418187ac40ffccb08dbc36
Directory: community/couchbase-server/7.2.0
Architectures: amd64, arm64v8


================================================
FILE: library/couchdb
================================================
# see https://couchdb.apache.org/
# also the announce@couchdb.apache.org mailing list

Maintainers: Joan Touzet <wohali@apache.org> (@wohali), Jan Lehnardt <jan@apache.org> (@janl), Nick Vatamaniuc (@nickva)
GitRepo: https://github.com/apache/couchdb-docker
GitFetch: refs/heads/main
GitCommit: 4c82ee090d6299c27616f30d93c9622f769431dd

Tags: latest, 3.5.1, 3.5, 3
Architectures: amd64, arm64v8, s390x
Directory: 3.5.1

Tags: 3.5.1-nouveau, 3.5-nouveau, 3-nouveau
Architectures: amd64, arm64v8, s390x
Directory: 3.5.1-nouveau

Tags: 3.4.3, 3.4
Architectures: amd64, arm64v8, s390x
Directory: 3.4.3

Tags: 3.4.3-nouveau, 3.4-nouveau
Architectures: amd64, arm64v8, s390x
Directory: 3.4.3-nouveau

# dev, dev-cluster versions must not be published officially per
# ASF release policy, see:
# http://www.apache.org/dev/release-distribution.html#unreleased
# The middle two bullet points are the issue.


================================================
FILE: library/crate
================================================
Maintainers: Mathias Fußenegger <mathias@crate.io> (@mfussenegger),
             Sebastian Utz <sebastian@crate.io> (@seut),
             Andreas Motl <andreas.motl@crate.io> (@amotl)
GitRepo: https://github.com/crate/docker-crate.git


Tags: 6.2.3, 6.2, latest
Architectures: amd64, arm64v8
GitCommit: 17626566ab1dbf78381aecf8d5af8dafcd21995c

Tags: 6.1.3, 6.1
Architectures: amd64, arm64v8
GitCommit: ccb0a7319da7ba24513b443602c2ffd9d925850d


================================================
FILE: library/dart
================================================
Maintainers: Alexander Thomas <athom@google.com> (@athomas), Ivan Inozemtsev <iinozemtsev@google.com> (@iinozemtsev)
GitRepo: https://github.com/dart-lang/dart-docker.git
GitFetch: refs/heads/main
GitCommit: 24476333cc9023a655bfa64df802cd0c253c26bb

Tags: 3.11.2-sdk, 3.11-sdk, 3-sdk, stable-sdk, sdk, 3.11.2, 3.11, 3, stable, latest
Architectures: amd64, arm32v7, arm64v8, riscv64
Directory: stable/trixie

Tags: 3.12.0-210.1.beta-sdk, beta-sdk, 3.12.0-210.1.beta, beta
Architectures: amd64, arm32v7, arm64v8, riscv64
Directory: beta/trixie


================================================
FILE: library/debian
================================================
# tarballs built by debuerreotype
# see https://github.com/debuerreotype/debuerreotype

Maintainers: Tianon Gravi <tianon@debian.org> (@tianon),
             Paul Tagliamonte <paultag@debian.org> (@paultag)
GitRepo: https://github.com/debuerreotype/docker-debian-artifacts.git
GitCommit: 7935fc7dd049cb343df42037c152f570069d274f
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-amd64
amd64-GitFetch: refs/heads/dist-amd64
amd64-GitCommit: 188606311c383852312693d370f97ecfbbc6ac35
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-arm32v5
arm32v5-GitFetch: refs/heads/dist-arm32v5
arm32v5-GitCommit: 37c51fc11ff030a3beb0b069918fe09333df1ad1
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-arm32v7
arm32v7-GitFetch: refs/heads/dist-arm32v7
arm32v7-GitCommit: 1243c66ed482ebf022662cb2348e0ca261636f42
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-arm64v8
arm64v8-GitFetch: refs/heads/dist-arm64v8
arm64v8-GitCommit: 262b12fbfe800391c45cc975b037f33cb911051d
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-i386
i386-GitFetch: refs/heads/dist-i386
i386-GitCommit: 0c6ead133859447ba7a3ce54fc7b85356e147c69
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-mips64le
mips64le-GitFetch: refs/heads/dist-mips64le
mips64le-GitCommit: 8b35e242b227d867383a90b028e299b0616e1fed
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-ppc64le
ppc64le-GitFetch: refs/heads/dist-ppc64le
ppc64le-GitCommit: a474854d39be606660f261307535414d46c88cc6
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-riscv64
riscv64-GitFetch: refs/heads/dist-riscv64
riscv64-GitCommit: 9f62dd60003488b3c51a193225dc54d7973c0a68
# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-s390x
s390x-GitFetch: refs/heads/dist-s390x
s390x-GitCommit: 0e7baa2227cf61fdeb22dbd1d60410caaa88aad3

# bookworm -- Debian 12.13 Released 10 January 2026
Tags: bookworm, bookworm-20260316, 12.13, 12
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
Builder: oci-import
Directory: bookworm/oci
File: index.json

Tags: bookworm-backports
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
Directory: bookworm/backports

Tags: bookworm-slim, bookworm-20260316-slim, 12.13-slim, 12-slim
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
Builder: oci-import
Directory: bookworm/slim/oci
File: index.json

# bullseye -- Debian 11.11 Released 31 August 2024
Tags: bullseye, bullseye-20260316, 11.11, 11
Architectures: amd64, arm32v7, arm64v8, i386
Builder: oci-import
Directory: bullseye/oci
File: index.json

Tags: bullseye-slim, bullseye-20260316-slim, 11.11-slim, 11-slim
Architectures: amd64, arm32v7, arm64v8, i386
Builder: oci-import
Directory: bullseye/slim/oci
File: index.json

# experimental -- Experimental packages - not released; use at your own risk.
Tags: experimental, experimental-20260316
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Directory: experimental

# forky -- Debian x.y Testing distribution - Not Released
Tags: forky, forky-20260316
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: forky/oci
File: index.json

Tags: forky-backports
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Directory: forky/backports

Tags: forky-slim, forky-20260316-slim
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: forky/slim/oci
File: index.json

# oldoldstable -- Debian 11.11 Released 31 August 2024
Tags: oldoldstable, oldoldstable-20260316
Architectures: amd64, arm32v7, arm64v8, i386
Builder: oci-import
Directory: oldoldstable/oci
File: index.json

Tags: oldoldstable-slim, oldoldstable-20260316-slim
Architectures: amd64, arm32v7, arm64v8, i386
Builder: oci-import
Directory: oldoldstable/slim/oci
File: index.json

# oldstable -- Debian 12.13 Released 10 January 2026
Tags: oldstable, oldstable-20260316
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
Builder: oci-import
Directory: oldstable/oci
File: index.json

Tags: oldstable-backports
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
Directory: oldstable/backports

Tags: oldstable-slim, oldstable-20260316-slim
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x
Builder: oci-import
Directory: oldstable/slim/oci
File: index.json

# rc-buggy -- Experimental packages - not released; use at your own risk.
Tags: rc-buggy, rc-buggy-20260316
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Directory: rc-buggy

# sid -- Debian x.y Unstable - Not Released
Tags: sid, sid-20260316
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: sid/oci
File: index.json

Tags: sid-slim, sid-20260316-slim
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: sid/slim/oci
File: index.json

# stable -- Debian 13.4 Released 14 March 2026
Tags: stable, stable-20260316
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: stable/oci
File: index.json

Tags: stable-backports
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Directory: stable/backports

Tags: stable-slim, stable-20260316-slim
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: stable/slim/oci
File: index.json

# testing -- Debian x.y Testing distribution - Not Released
Tags: testing, testing-20260316
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: testing/oci
File: index.json

Tags: testing-backports
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Directory: testing/backports

Tags: testing-slim, testing-20260316-slim
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: testing/slim/oci
File: index.json

# trixie -- Debian 13.4 Released 14 March 2026
Tags: trixie, trixie-20260316, 13.4, 13, latest
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: trixie/oci
File: index.json

Tags: trixie-backports
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Directory: trixie/backports

Tags: trixie-slim, trixie-20260316-slim, 13.4-slim, 13-slim
Architectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: trixie/slim/oci
File: index.json

# unstable -- Debian x.y Unstable - Not Released
Tags: unstable, unstable-20260316
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: unstable/oci
File: index.json

Tags: unstable-slim, unstable-20260316-slim
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
Builder: oci-import
Directory: unstable/slim/oci
File: index.json


================================================
FILE: library/docker
================================================
# this file is generated via https://github.com/docker-library/docker/blob/9f57f3fb1ef688e231b911e0b414da241804c511/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <tianon@dockerproject.org> (@tianon),
             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
GitRepo: https://github.com/docker-library/docker.git
Builder: buildkit

Tags: 29.3.0-cli, 29.3-cli, 29-cli, cli, 29.3.0-cli-alpine3.23
Architectures: amd64, arm32v6, arm32v7, arm64v8
GitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a
Directory: 29/cli

Tags: 29.3.0-dind, 29.3-dind, 29-dind, dind, 29.3.0-dind-alpine3.23, 29.3.0, 29.3, 29, latest, 29.3.0-alpine3.23
Architectures: amd64, arm32v6, arm32v7, arm64v8
GitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a
Directory: 29/dind

Tags: 29.3.0-dind-rootless, 29.3-dind-rootless, 29-dind-rootless, dind-rootless
Architectures: amd64, arm64v8
GitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a
Directory: 29/dind-rootless

Tags: 29.3.0-windowsservercore-ltsc2025, 29.3-windowsservercore-ltsc2025, 29-windowsservercore-ltsc2025, windowsservercore-ltsc2025
SharedTags: 29.3.0-windowsservercore, 29.3-windowsservercore, 29-windowsservercore, windowsservercore
Architectures: windows-amd64
GitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a
Directory: 29/windows/windowsservercore-ltsc2025
Constraints: windowsservercore-ltsc2025
Builder: classic

Tags: 29.3.0-windowsservercore-ltsc2022, 29.3-windowsservercore-ltsc2022, 29-windowsservercore-ltsc2022, windowsservercore-ltsc2022
SharedTags: 29.3.0-windowsservercore, 29.3-windowsservercore, 29-windowsservercore, windowsservercore
Architectures: windows-amd64
GitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a
Directory: 29/windows/windowsservercore-ltsc2022
Constraints: windowsservercore-ltsc2022
Builder: classic


================================================
FILE: library/drupal
================================================
# this file is generated via https://github.com/docker-library/drupal/blob/8527ca0412b456cd3719cb8719bfb83da5d530a7/generate-stackbrew-library.sh

Maintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),
             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)
GitRepo: https://github.com/docker-library/drupal.git

Tags: 11.3.5-php8.5-apache-trixie, 11.3-php8.5-apache-trixie, 11-php8.5-apache-trixie, php8.5-apache-trixie, 11.3.5-php8.5-apache, 11.3-php8.5-apache, 11-php8.5-apache, php8.5-apache, 11.3.5-php8.5, 11.3-php8.5, 11-php8.5, php8.5
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.5/apache-trixie

Tags: 11.3.5-php8.5-fpm-trixie, 11.3-php8.5-fpm-trixie, 11-php8.5-fpm-trixie, php8.5-fpm-trixie, 11.3.5-php8.5-fpm, 11.3-php8.5-fpm, 11-php8.5-fpm, php8.5-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.5/fpm-trixie

Tags: 11.3.5-php8.5-apache-bookworm, 11.3-php8.5-apache-bookworm, 11-php8.5-apache-bookworm, php8.5-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.5/apache-bookworm

Tags: 11.3.5-php8.5-fpm-bookworm, 11.3-php8.5-fpm-bookworm, 11-php8.5-fpm-bookworm, php8.5-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.5/fpm-bookworm

Tags: 11.3.5-php8.5-fpm-alpine3.23, 11.3-php8.5-fpm-alpine3.23, 11-php8.5-fpm-alpine3.23, php8.5-fpm-alpine3.23, 11.3.5-php8.5-fpm-alpine, 11.3-php8.5-fpm-alpine, 11-php8.5-fpm-alpine, php8.5-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.5/fpm-alpine3.23

Tags: 11.3.5-php8.5-fpm-alpine3.22, 11.3-php8.5-fpm-alpine3.22, 11-php8.5-fpm-alpine3.22, php8.5-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.5/fpm-alpine3.22

Tags: 11.3.5-php8.4-apache-trixie, 11.3-php8.4-apache-trixie, 11-php8.4-apache-trixie, php8.4-apache-trixie, 11.3.5-php8.4-apache, 11.3-php8.4-apache, 11-php8.4-apache, php8.4-apache, 11.3.5-php8.4, 11.3-php8.4, 11-php8.4, php8.4, 11.3.5-apache-trixie, 11.3-apache-trixie, 11-apache-trixie, apache-trixie, 11.3.5-apache, 11.3-apache, 11-apache, apache, 11.3.5, 11.3, 11, latest
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.4/apache-trixie

Tags: 11.3.5-php8.4-fpm-trixie, 11.3-php8.4-fpm-trixie, 11-php8.4-fpm-trixie, php8.4-fpm-trixie, 11.3.5-php8.4-fpm, 11.3-php8.4-fpm, 11-php8.4-fpm, php8.4-fpm, 11.3.5-fpm-trixie, 11.3-fpm-trixie, 11-fpm-trixie, fpm-trixie, 11.3.5-fpm, 11.3-fpm, 11-fpm, fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.4/fpm-trixie

Tags: 11.3.5-php8.4-apache-bookworm, 11.3-php8.4-apache-bookworm, 11-php8.4-apache-bookworm, php8.4-apache-bookworm, 11.3.5-apache-bookworm, 11.3-apache-bookworm, 11-apache-bookworm, apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.4/apache-bookworm

Tags: 11.3.5-php8.4-fpm-bookworm, 11.3-php8.4-fpm-bookworm, 11-php8.4-fpm-bookworm, php8.4-fpm-bookworm, 11.3.5-fpm-bookworm, 11.3-fpm-bookworm, 11-fpm-bookworm, fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.4/fpm-bookworm

Tags: 11.3.5-php8.4-fpm-alpine3.23, 11.3-php8.4-fpm-alpine3.23, 11-php8.4-fpm-alpine3.23, php8.4-fpm-alpine3.23, 11.3.5-php8.4-fpm-alpine, 11.3-php8.4-fpm-alpine, 11-php8.4-fpm-alpine, php8.4-fpm-alpine, 11.3.5-fpm-alpine3.23, 11.3-fpm-alpine3.23, 11-fpm-alpine3.23, fpm-alpine3.23, 11.3.5-fpm-alpine, 11.3-fpm-alpine, 11-fpm-alpine, fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.4/fpm-alpine3.23

Tags: 11.3.5-php8.4-fpm-alpine3.22, 11.3-php8.4-fpm-alpine3.22, 11-php8.4-fpm-alpine3.22, php8.4-fpm-alpine3.22, 11.3.5-fpm-alpine3.22, 11.3-fpm-alpine3.22, 11-fpm-alpine3.22, fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360
Directory: 11.3/php8.4/fpm-alpine3.22

Tags: 11.2.10-php8.4-apache-trixie, 11.2-php8.4-apache-trixie, 11.2.10-php8.4-apache, 11.2-php8.4-apache, 11.2.10-php8.4, 11.2-php8.4, 11.2.10-apache-trixie, 11.2-apache-trixie, 11.2.10-apache, 11.2-apache, 11.2.10, 11.2
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.4/apache-trixie

Tags: 11.2.10-php8.4-fpm-trixie, 11.2-php8.4-fpm-trixie, 11.2.10-php8.4-fpm, 11.2-php8.4-fpm, 11.2.10-fpm-trixie, 11.2-fpm-trixie, 11.2.10-fpm, 11.2-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.4/fpm-trixie

Tags: 11.2.10-php8.4-apache-bookworm, 11.2-php8.4-apache-bookworm, 11.2.10-apache-bookworm, 11.2-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.4/apache-bookworm

Tags: 11.2.10-php8.4-fpm-bookworm, 11.2-php8.4-fpm-bookworm, 11.2.10-fpm-bookworm, 11.2-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.4/fpm-bookworm

Tags: 11.2.10-php8.4-fpm-alpine3.23, 11.2-php8.4-fpm-alpine3.23, 11.2.10-php8.4-fpm-alpine, 11.2-php8.4-fpm-alpine, 11.2.10-fpm-alpine3.23, 11.2-fpm-alpine3.23, 11.2.10-fpm-alpine, 11.2-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.4/fpm-alpine3.23

Tags: 11.2.10-php8.4-fpm-alpine3.22, 11.2-php8.4-fpm-alpine3.22, 11.2.10-fpm-alpine3.22, 11.2-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.4/fpm-alpine3.22

Tags: 11.2.10-php8.3-apache-trixie, 11.2-php8.3-apache-trixie, 11.2.10-php8.3-apache, 11.2-php8.3-apache, 11.2.10-php8.3, 11.2-php8.3
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.3/apache-trixie

Tags: 11.2.10-php8.3-fpm-trixie, 11.2-php8.3-fpm-trixie, 11.2.10-php8.3-fpm, 11.2-php8.3-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.3/fpm-trixie

Tags: 11.2.10-php8.3-apache-bookworm, 11.2-php8.3-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.3/apache-bookworm

Tags: 11.2.10-php8.3-fpm-bookworm, 11.2-php8.3-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.3/fpm-bookworm

Tags: 11.2.10-php8.3-fpm-alpine3.23, 11.2-php8.3-fpm-alpine3.23, 11.2.10-php8.3-fpm-alpine, 11.2-php8.3-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.3/fpm-alpine3.23

Tags: 11.2.10-php8.3-fpm-alpine3.22, 11.2-php8.3-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b
Directory: 11.2/php8.3/fpm-alpine3.22

Tags: 10.6.5-php8.4-apache-trixie, 10.6-php8.4-apache-trixie, 10-php8.4-apache-trixie, 10.6.5-php8.4-apache, 10.6-php8.4-apache, 10-php8.4-apache, 10.6.5-php8.4, 10.6-php8.4, 10-php8.4, 10.6.5-apache-trixie, 10.6-apache-trixie, 10-apache-trixie, 10.6.5-apache, 10.6-apache, 10-apache, 10.6.5, 10.6, 10
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.4/apache-trixie

Tags: 10.6.5-php8.4-fpm-trixie, 10.6-php8.4-fpm-trixie, 10-php8.4-fpm-trixie, 10.6.5-php8.4-fpm, 10.6-php8.4-fpm, 10-php8.4-fpm, 10.6.5-fpm-trixie, 10.6-fpm-trixie, 10-fpm-trixie, 10.6.5-fpm, 10.6-fpm, 10-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.4/fpm-trixie

Tags: 10.6.5-php8.4-apache-bookworm, 10.6-php8.4-apache-bookworm, 10-php8.4-apache-bookworm, 10.6.5-apache-bookworm, 10.6-apache-bookworm, 10-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.4/apache-bookworm

Tags: 10.6.5-php8.4-fpm-bookworm, 10.6-php8.4-fpm-bookworm, 10-php8.4-fpm-bookworm, 10.6.5-fpm-bookworm, 10.6-fpm-bookworm, 10-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.4/fpm-bookworm

Tags: 10.6.5-php8.4-fpm-alpine3.23, 10.6-php8.4-fpm-alpine3.23, 10-php8.4-fpm-alpine3.23, 10.6.5-php8.4-fpm-alpine, 10.6-php8.4-fpm-alpine, 10-php8.4-fpm-alpine, 10.6.5-fpm-alpine3.23, 10.6-fpm-alpine3.23, 10-fpm-alpine3.23, 10.6.5-fpm-alpine, 10.6-fpm-alpine, 10-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.4/fpm-alpine3.23

Tags: 10.6.5-php8.4-fpm-alpine3.22, 10.6-php8.4-fpm-alpine3.22, 10-php8.4-fpm-alpine3.22, 10.6.5-fpm-alpine3.22, 10.6-fpm-alpine3.22, 10-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.4/fpm-alpine3.22

Tags: 10.6.5-php8.3-apache-trixie, 10.6-php8.3-apache-trixie, 10-php8.3-apache-trixie, 10.6.5-php8.3-apache, 10.6-php8.3-apache, 10-php8.3-apache, 10.6.5-php8.3, 10.6-php8.3, 10-php8.3
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.3/apache-trixie

Tags: 10.6.5-php8.3-fpm-trixie, 10.6-php8.3-fpm-trixie, 10-php8.3-fpm-trixie, 10.6.5-php8.3-fpm, 10.6-php8.3-fpm, 10-php8.3-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.3/fpm-trixie

Tags: 10.6.5-php8.3-apache-bookworm, 10.6-php8.3-apache-bookworm, 10-php8.3-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.3/apache-bookworm

Tags: 10.6.5-php8.3-fpm-bookworm, 10.6-php8.3-fpm-bookworm, 10-php8.3-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.3/fpm-bookworm

Tags: 10.6.5-php8.3-fpm-alpine3.23, 10.6-php8.3-fpm-alpine3.23, 10-php8.3-fpm-alpine3.23, 10.6.5-php8.3-fpm-alpine, 10.6-php8.3-fpm-alpine, 10-php8.3-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.3/fpm-alpine3.23

Tags: 10.6.5-php8.3-fpm-alpine3.22, 10.6-php8.3-fpm-alpine3.22, 10-php8.3-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e
Directory: 10.6/php8.3/fpm-alpine3.22

Tags: 10.5.8-php8.4-apache-trixie, 10.5-php8.4-apache-trixie, 10.5.8-php8.4-apache, 10.5-php8.4-apache, 10.5.8-php8.4, 10.5-php8.4, 10.5.8-apache-trixie, 10.5-apache-trixie, 10.5.8-apache, 10.5-apache, 10.5.8, 10.5
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.4/apache-trixie

Tags: 10.5.8-php8.4-fpm-trixie, 10.5-php8.4-fpm-trixie, 10.5.8-php8.4-fpm, 10.5-php8.4-fpm, 10.5.8-fpm-trixie, 10.5-fpm-trixie, 10.5.8-fpm, 10.5-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.4/fpm-trixie

Tags: 10.5.8-php8.4-apache-bookworm, 10.5-php8.4-apache-bookworm, 10.5.8-apache-bookworm, 10.5-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.4/apache-bookworm

Tags: 10.5.8-php8.4-fpm-bookworm, 10.5-php8.4-fpm-bookworm, 10.5.8-fpm-bookworm, 10.5-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.4/fpm-bookworm

Tags: 10.5.8-php8.4-fpm-alpine3.23, 10.5-php8.4-fpm-alpine3.23, 10.5.8-php8.4-fpm-alpine, 10.5-php8.4-fpm-alpine, 10.5.8-fpm-alpine3.23, 10.5-fpm-alpine3.23, 10.5.8-fpm-alpine, 10.5-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.4/fpm-alpine3.23

Tags: 10.5.8-php8.4-fpm-alpine3.22, 10.5-php8.4-fpm-alpine3.22, 10.5.8-fpm-alpine3.22, 10.5-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.4/fpm-alpine3.22

Tags: 10.5.8-php8.3-apache-trixie, 10.5-php8.3-apache-trixie, 10.5.8-php8.3-apache, 10.5-php8.3-apache, 10.5.8-php8.3, 10.5-php8.3
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.3/apache-trixie

Tags: 10.5.8-php8.3-fpm-trixie, 10.5-php8.3-fpm-trixie, 10.5.8-php8.3-fpm, 10.5-php8.3-fpm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.3/fpm-trixie

Tags: 10.5.8-php8.3-apache-bookworm, 10.5-php8.3-apache-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.3/apache-bookworm

Tags: 10.5.8-php8.3-fpm-bookworm, 10.5-php8.3-fpm-bookworm
Architectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.3/fpm-bookworm

Tags: 10.5.8-php8.3-fpm-alpine3.23, 10.5-php8.3-fpm-alpine3.23, 10.5.8-php8.3-fpm-alpine, 10.5-php8.3-fpm-alpine
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.3/fpm-alpine3.23

Tags: 10.5.8-php8.3-fpm-alpine3.22, 10.5-php8.3-fpm-alpine3.22
Architectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x
GitCommit: 4a684115b7703293a77e383381f19a23b2212b3d
Directory: 10.5/php8.3/fpm-alpine3.22


================================================
FILE: library/eclipse-mosquitto
================================================
Maintainers: Roger Light <roger@atchoo.org> (@ralight)
GitRepo: https://github.com/eclipse-mosquitto/mosquitto.git
GitCommit: 5b74cce8a4fe2a73b57df6c703bfde2cfd535d60
Architectures: amd64, arm32v6, arm64v8, i386, ppc64le, s390x

Tags: 2.1.2-alpine, 2.1-alpine, alpine, 2, latest
Directory: docker/2.1-alpine

Tags: 2.0.22, 2.0.22-openssl, 2.0, 2.0-openssl, 2-openssl, openssl
Directory: docker/2.0-openssl

Tags: 1.6.15-openssl, 1.6-openssl
Directory: docker/1.6-openssl


================================================
FILE: library/eclipse-temurin
================================================
# Eclipse Temurin OpenJDK images provided by the Eclipse Foundation.

Maintainers: George Adams <george.adams@microsoft.com> (@gdams),
             Stewart Addison <sxa@redhat.com> (@sxa)
GitRepo: https://github.com/adoptium/containers.git
GitFetch: refs/heads/main
Builder: buildkit

#------------------------------v8 images---------------------------------
Tags: 8u482-b08-jdk-alpine-3.20, 8-jdk-alpine-3.20, 8-alpine-3.20
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/alpine/3.20

Tags: 8u482-b08-jdk-alpine-3.21, 8-jdk-alpine-3.21, 8-alpine-3.21
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/alpine/3.21

Tags: 8u482-b08-jdk-alpine-3.22, 8-jdk-alpine-3.22, 8-alpine-3.22
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/alpine/3.22

Tags: 8u482-b08-jdk-alpine-3.23, 8-jdk-alpine-3.23, 8-alpine-3.23, 8u482-b08-jdk-alpine, 8-jdk-alpine, 8-alpine
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/alpine/3.23

Tags: 8u482-b08-jdk-jammy, 8-jdk-jammy, 8-jammy
Architectures: amd64, arm32v7, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/ubuntu/jammy

Tags: 8u482-b08-jdk-noble, 8-jdk-noble, 8-noble
SharedTags: 8u482-b08-jdk, 8-jdk, 8
Architectures: amd64, arm32v7, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/ubuntu/noble

Tags: 8u482-b08-jdk-ubi10-minimal, 8-jdk-ubi10-minimal, 8-ubi10-minimal
Architectures: amd64, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/ubi/ubi10-minimal

Tags: 8u482-b08-jdk-ubi9-minimal, 8-jdk-ubi9-minimal, 8-ubi9-minimal
Architectures: amd64, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/ubi/ubi9-minimal

Tags: 8u482-b08-jdk-windowsservercore-ltsc2025, 8-jdk-windowsservercore-ltsc2025, 8-windowsservercore-ltsc2025
SharedTags: 8u482-b08-jdk-windowsservercore, 8-jdk-windowsservercore, 8-windowsservercore, 8u482-b08-jdk, 8-jdk, 8
Architectures: windows-amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/windows/windowsservercore-ltsc2025
Builder: classic
Constraints: windowsservercore-ltsc2025

Tags: 8u482-b08-jdk-nanoserver-ltsc2025, 8-jdk-nanoserver-ltsc2025, 8-nanoserver-ltsc2025
SharedTags: 8u482-b08-jdk-nanoserver, 8-jdk-nanoserver, 8-nanoserver
Architectures: windows-amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/windows/nanoserver-ltsc2025
Builder: classic
Constraints: nanoserver-ltsc2025, windowsservercore-ltsc2025

Tags: 8u482-b08-jdk-windowsservercore-ltsc2022, 8-jdk-windowsservercore-ltsc2022, 8-windowsservercore-ltsc2022
SharedTags: 8u482-b08-jdk-windowsservercore, 8-jdk-windowsservercore, 8-windowsservercore, 8u482-b08-jdk, 8-jdk, 8
Architectures: windows-amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/windows/windowsservercore-ltsc2022
Builder: classic
Constraints: windowsservercore-ltsc2022

Tags: 8u482-b08-jdk-nanoserver-ltsc2022, 8-jdk-nanoserver-ltsc2022, 8-nanoserver-ltsc2022
SharedTags: 8u482-b08-jdk-nanoserver, 8-jdk-nanoserver, 8-nanoserver
Architectures: windows-amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jdk/windows/nanoserver-ltsc2022
Builder: classic
Constraints: nanoserver-ltsc2022, windowsservercore-ltsc2022

Tags: 8u482-b08-jre-alpine-3.20, 8-jre-alpine-3.20
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jre/alpine/3.20

Tags: 8u482-b08-jre-alpine-3.21, 8-jre-alpine-3.21
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jre/alpine/3.21

Tags: 8u482-b08-jre-alpine-3.22, 8-jre-alpine-3.22
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jre/alpine/3.22

Tags: 8u482-b08-jre-alpine-3.23, 8-jre-alpine-3.23, 8u482-b08-jre-alpine, 8-jre-alpine
Architectures: amd64
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jre/alpine/3.23

Tags: 8u482-b08-jre-jammy, 8-jre-jammy
Architectures: amd64, arm32v7, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jre/ubuntu/jammy

Tags: 8u482-b08-jre-noble, 8-jre-noble
SharedTags: 8u482-b08-jre, 8-jre
Architectures: amd64, arm32v7, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2
Directory: 8/jre/ubuntu/noble

Tags: 8u482-b08-jre-ubi10-minimal, 8-jre-ubi10-minimal
Architectures: amd64, arm64v8, ppc64le
GitCommit: a475d69551c1fa735bb4bd1570b7c908691525b
Download .txt
gitextract_zs_h73wn/

├── .buildkit-build-contexts.sh
├── .external-pins/
│   ├── docker/
│   │   └── scout-sbom-indexer___1
│   ├── file.sh
│   ├── list.sh
│   ├── mcr.microsoft.com/
│   │   └── windows/
│   │       ├── nanoserver___ltsc2022
│   │       ├── nanoserver___ltsc2025
│   │       ├── servercore___ltsc2022
│   │       └── servercore___ltsc2025
│   ├── redhat/
│   │   ├── ubi10-minimal___latest
│   │   ├── ubi10___latest
│   │   ├── ubi8-minimal___latest
│   │   ├── ubi8___latest
│   │   ├── ubi9-minimal___latest
│   │   └── ubi9___latest
│   ├── tag.sh
│   ├── tianon/
│   │   └── buildkit___0.16
│   └── update.sh
├── .gitattributes
├── .github/
│   ├── CODEOWNERS
│   ├── ISSUE_TEMPLATE.md
│   └── workflows/
│       ├── .bashbrew/
│       │   └── action.yml
│       ├── generate.sh
│       ├── munge-pr.yml
│       ├── naughty.sh
│       └── test-pr.yml
├── .gitignore
├── CODE-OF-CONDUCT.md
├── Dockerfile
├── LICENSE
├── MAINTAINERS
├── NEW-IMAGE-CHECKLIST.md
├── README.md
├── SECURITY.md
├── _bashbrew-cat-sorted.sh
├── diff-pr.sh
├── library/
│   ├── adminer
│   ├── aerospike
│   ├── almalinux
│   ├── alpine
│   ├── alt
│   ├── amazoncorretto
│   ├── amazonlinux
│   ├── api-firewall
│   ├── arangodb
│   ├── archlinux
│   ├── azul-zulu
│   ├── backdrop
│   ├── bash
│   ├── bonita
│   ├── buildpack-deps
│   ├── busybox
│   ├── caddy
│   ├── cassandra
│   ├── chronograf
│   ├── cirros
│   ├── clearlinux
│   ├── clefos
│   ├── clickhouse
│   ├── clojure
│   ├── composer
│   ├── convertigo
│   ├── couchbase
│   ├── couchdb
│   ├── crate
│   ├── dart
│   ├── debian
│   ├── docker
│   ├── drupal
│   ├── eclipse-mosquitto
│   ├── eclipse-temurin
│   ├── eggdrop
│   ├── elasticsearch
│   ├── elixir
│   ├── emqx
│   ├── erlang
│   ├── fedora
│   ├── flink
│   ├── fluentd
│   ├── friendica
│   ├── gazebo
│   ├── gcc
│   ├── geonetwork
│   ├── ghost
│   ├── golang
│   ├── gradle
│   ├── groovy
│   ├── haproxy
│   ├── haskell
│   ├── haxe
│   ├── hello-world
│   ├── hitch
│   ├── httpd
│   ├── hylang
│   ├── ibm-semeru-runtimes
│   ├── ibmjava
│   ├── influxdb
│   ├── irssi
│   ├── jetty
│   ├── joomla
│   ├── jruby
│   ├── julia
│   ├── kapacitor
│   ├── kibana
│   ├── kong
│   ├── krakend
│   ├── lightstreamer
│   ├── liquibase
│   ├── logstash
│   ├── mageia
│   ├── mariadb
│   ├── matomo
│   ├── maven
│   ├── mediawiki
│   ├── memcached
│   ├── mongo
│   ├── mongo-express
│   ├── monica
│   ├── mysql
│   ├── nats
│   ├── neo4j
│   ├── neurodebian
│   ├── nextcloud
│   ├── nginx
│   ├── node
│   ├── notary
│   ├── odoo
│   ├── open-liberty
│   ├── openjdk
│   ├── oraclelinux
│   ├── orientdb
│   ├── percona
│   ├── perl
│   ├── photon
│   ├── php
│   ├── php-zendserver
│   ├── phpmyadmin
│   ├── plone
│   ├── postfixadmin
│   ├── postgres
│   ├── pypy
│   ├── python
│   ├── r-base
│   ├── rabbitmq
│   ├── rakudo-star
│   ├── redis
│   ├── redmine
│   ├── registry
│   ├── rethinkdb
│   ├── rocket.chat
│   ├── rockylinux
│   ├── ros
│   ├── ruby
│   ├── rust
│   ├── sapmachine
│   ├── satosa
│   ├── silverpeas
│   ├── solr
│   ├── sonarqube
│   ├── spark
│   ├── spiped
│   ├── storm
│   ├── swift
│   ├── swipl
│   ├── teamspeak
│   ├── telegraf
│   ├── tomcat
│   ├── tomee
│   ├── traefik
│   ├── ubuntu
│   ├── unit
│   ├── varnish
│   ├── websphere-liberty
│   ├── wordpress
│   ├── xwiki
│   ├── yourls
│   ├── znc
│   └── zookeeper
├── naughty-commits.sh
├── naughty-constraints.sh
├── naughty-from.sh
├── naughty-sharedtags.sh
├── pr-urls.sh
├── test/
│   ├── README.md
│   ├── clean.sh
│   ├── config.sh
│   ├── retry.sh
│   ├── run.sh
│   └── tests/
│       ├── cassandra-basics/
│       │   └── run.sh
│       ├── cheeky-retries.sh
│       ├── composer/
│       │   ├── composer.json
│       │   └── container.sh
│       ├── convertigo-hello-world/
│       │   └── run.sh
│       ├── dart-hello-world/
│       │   ├── container.dart
│       │   └── expected-std-out.txt
│       ├── debian-apt-get/
│       │   ├── container.sh
│       │   └── expected-std-out.txt
│       ├── docker-build.sh
│       ├── docker-dind/
│       │   └── run.sh
│       ├── docker-registry-push-pull/
│       │   └── run.sh
│       ├── eclipse-mosquitto-basics/
│       │   ├── mosquitto.conf
│       │   └── run.sh
│       ├── elixir-hello-world/
│       │   ├── container.exs
│       │   └── expected-std-out.txt
│       ├── erlang-hello-world/
│       │   ├── container.erl
│       │   └── expected-std-out.txt
│       ├── gcc-c-hello-world/
│       │   ├── container.c
│       │   └── expected-std-out.txt
│       ├── gcc-cpp-hello-world/
│       │   ├── container.cpp
│       │   └── expected-std-out.txt
│       ├── ghost-basics/
│       │   └── run.sh
│       ├── golang-hello-world/
│       │   ├── container.go
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── haproxy-basics/
│       │   ├── haproxy.cfg
│       │   └── run.sh
│       ├── haskell-cabal/
│       │   └── container.sh
│       ├── haskell-ghci/
│       │   └── container.sh
│       ├── haskell-runhaskell/
│       │   ├── container.hs
│       │   └── expected-std-out.txt
│       ├── haskell-stack/
│       │   └── container.sh
│       ├── haxe-haxelib-install/
│       │   └── Container.hx
│       ├── haxe-hello-world/
│       │   ├── Container.hx
│       │   └── expected-std-out.txt
│       ├── hylang-hello-world/
│       │   ├── container.hy
│       │   └── expected-std-out.txt
│       ├── hylang-sh/
│       │   ├── container.hy
│       │   └── expected-std-out.txt
│       ├── image-name.sh
│       ├── java-ca-certificates/
│       │   └── container.java
│       ├── java-hello-world/
│       │   ├── container.java
│       │   └── expected-std-out.txt
│       ├── java-uimanager-font/
│       │   └── container.java
│       ├── jetty-hello-web/
│       │   ├── index.jsp
│       │   └── run.sh
│       ├── julia-downloads/
│       │   └── container.jl
│       ├── julia-hello-world/
│       │   ├── container.jl
│       │   └── expected-std-out.txt
│       ├── logstash-basics/
│       │   └── run.sh
│       ├── matomo-apache-run/
│       │   └── run.sh
│       ├── matomo-fpm-run/
│       │   └── run.sh
│       ├── memcached-basics/
│       │   └── run.sh
│       ├── mongo-basics/
│       │   └── run.sh
│       ├── mongo-express-run/
│       │   └── run.sh
│       ├── monica-apache-run/
│       │   └── run.sh
│       ├── monica-cli/
│       │   └── run.sh
│       ├── monica-cli-mariadb10/
│       │   └── run.sh
│       ├── monica-cli-mysql8/
│       │   └── run.sh
│       ├── monica-fpm-run/
│       │   └── run.sh
│       ├── mysql-basics/
│       │   └── run.sh
│       ├── mysql-initdb/
│       │   ├── initdb.sql
│       │   └── run.sh
│       ├── mysql-log-bin/
│       │   └── run.sh
│       ├── nextcloud-apache-run/
│       │   └── real-run.sh
│       ├── nextcloud-cli/
│       │   └── run.sh
│       ├── nextcloud-cli-mysql/
│       │   └── run.sh
│       ├── nextcloud-cli-postgres/
│       │   └── run.sh
│       ├── nextcloud-cli-sqlite/
│       │   └── run.sh
│       ├── nextcloud-fpm-run/
│       │   └── real-run.sh
│       ├── no-hard-coded-passwords/
│       │   └── run.sh
│       ├── node-hello-world/
│       │   ├── container.js
│       │   └── expected-std-out.txt
│       ├── nuxeo-basics/
│       │   └── run.sh
│       ├── nuxeo-conf/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── open-liberty-hello-world/
│       │   └── run.sh
│       ├── override-cmd/
│       │   └── run.sh
│       ├── percona-rocksdb/
│       │   └── run.sh
│       ├── percona-tokudb/
│       │   └── run.sh
│       ├── perl-cpanm/
│       │   └── container.sh
│       ├── perl-hello-world/
│       │   ├── container.pl
│       │   └── expected-std-out.txt
│       ├── php-apache-hello-web/
│       │   └── run.sh
│       ├── php-argon2/
│       │   └── container.php
│       ├── php-ext-install/
│       │   └── container.sh
│       ├── php-fpm-hello-web/
│       │   ├── index.php
│       │   └── run.sh
│       ├── php-hello-world/
│       │   ├── container.php
│       │   └── expected-std-out.txt
│       ├── plone-addons/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── plone-basics/
│       │   └── run.sh
│       ├── plone-cors/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── plone-versions/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── plone-zeoclient/
│       │   └── run.sh
│       ├── plone-zeosite/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── postfixadmin-apache-run/
│       │   └── run.sh
│       ├── postfixadmin-fpm-run/
│       │   └── run.sh
│       ├── postgres-basics/
│       │   └── run.sh
│       ├── postgres-initdb/
│       │   ├── initdb.sql
│       │   └── run.sh
│       ├── python-imports/
│       │   └── container.py
│       ├── python-no-pyc/
│       │   ├── container.cmd
│       │   └── container.sh
│       ├── python-pip-requests-ssl/
│       │   └── container.py
│       ├── python-sqlite3/
│       │   └── container.py
│       ├── python-stack-size/
│       │   └── container.py
│       ├── rabbitmq-basics/
│       │   ├── receive.py
│       │   ├── run.sh
│       │   ├── send.py
│       │   └── testconn.py
│       ├── rabbitmq-tls/
│       │   ├── inet-dist-tls.config
│       │   ├── rabbitmq-env.conf
│       │   ├── rabbitmq.conf
│       │   └── run.sh
│       ├── redis-basics/
│       │   └── run.sh
│       ├── redis-basics-config/
│       │   └── run.sh
│       ├── redis-basics-persistent/
│       │   └── run.sh
│       ├── redmine-basics/
│       │   └── run.sh
│       ├── ruby-binstubs/
│       │   ├── Gemfile
│       │   └── container.sh
│       ├── ruby-bundler/
│       │   ├── Gemfile
│       │   └── container.sh
│       ├── ruby-gems/
│       │   └── container.sh
│       ├── ruby-hello-world/
│       │   ├── container.rb
│       │   └── expected-std-out.txt
│       ├── ruby-native-extension/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── ruby-nonroot/
│       │   ├── Gemfile
│       │   └── run.sh
│       ├── ruby-standard-libs/
│       │   ├── container.rb
│       │   └── expected-std-out.txt
│       ├── run-bash-in-container.sh
│       ├── run-dart-in-container.sh
│       ├── run-elixir-in-container.sh
│       ├── run-erlang-in-container.sh
│       ├── run-g++-in-container.sh
│       ├── run-gcc-in-container.sh
│       ├── run-go-in-container.sh
│       ├── run-haskell-in-container.sh
│       ├── run-haxe-in-container.sh
│       ├── run-hy-in-container.sh
│       ├── run-in-container.sh
│       ├── run-java-in-container.sh
│       ├── run-julia-in-container.sh
│       ├── run-node-in-container.sh
│       ├── run-perl-in-container.sh
│       ├── run-php-in-container.sh
│       ├── run-python-in-container.sh
│       ├── run-ruby-in-container.sh
│       ├── run-rust-in-container.sh
│       ├── run-sh-in-container.sh
│       ├── run-swift-in-container.sh
│       ├── run-swipl-in-container.sh
│       ├── rust-hello-world/
│       │   ├── container/
│       │   │   ├── Cargo.toml
│       │   │   └── src/
│       │   │       └── main.rs
│       │   └── expected-std-out.txt
│       ├── silverpeas-basics/
│       │   └── run.sh
│       ├── spiped-basics/
│       │   └── run.sh
│       ├── swift-hello-world/
│       │   ├── container.swift
│       │   └── expected-std-out.txt
│       ├── swipl-modules/
│       │   ├── container.pl
│       │   └── expected-std-out.txt
│       ├── tomcat-hello-world/
│       │   ├── index.jsp
│       │   └── run.sh
│       ├── utc/
│       │   ├── expected-std-out.txt
│       │   └── run.sh
│       ├── varnish/
│       │   └── run.sh
│       ├── wordpress-apache-run/
│       │   └── run.sh
│       ├── wordpress-fpm-run/
│       │   └── run.sh
│       ├── znc-basics/
│       │   └── run.sh
│       └── zookeeper-basics/
│           └── run.sh
└── toc.sh
Download .txt
SYMBOL INDEX (16 symbols across 12 files)

FILE: test/tests/dart-hello-world/container.dart
  function main (line 1) | void main()

FILE: test/tests/gcc-c-hello-world/container.c
  function main (line 3) | int main() {

FILE: test/tests/gcc-cpp-hello-world/container.cpp
  function main (line 3) | int main() {

FILE: test/tests/golang-hello-world/container.go
  function main (line 5) | func main() {

FILE: test/tests/java-ca-certificates/container.java
  class container (line 3) | public class container {
    method main (line 4) | public static void main(String[] args) {

FILE: test/tests/java-hello-world/container.java
  class container (line 1) | public class container {
    method main (line 5) | public static void main(String[] args) {

FILE: test/tests/java-uimanager-font/container.java
  class container (line 4) | public class container {
    method main (line 18) | public static void main(String[] args) {
    method bad (line 43) | private static void bad(String msg, Throwable t) {

FILE: test/tests/mysql-initdb/initdb.sql
  type test (line 1) | CREATE TABLE test (a INT, b INT, c VARCHAR(255))

FILE: test/tests/postgres-initdb/initdb.sql
  type test (line 1) | CREATE TABLE test (a INT, b INT, c VARCHAR(255))

FILE: test/tests/python-stack-size/container.py
  function fun (line 5) | def fun(i):

FILE: test/tests/rabbitmq-basics/receive.py
  function callback (line 11) | def callback(ch, method, properties, body):

FILE: test/tests/rust-hello-world/container/src/main.rs
  function main (line 1) | fn main() {
Condensed preview — 365 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (774K chars).
[
  {
    "path": ".buildkit-build-contexts.sh",
    "chars": 1821,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# given a list of image references, returns an appropriate list of \"ref=docker-i"
  },
  {
    "path": ".external-pins/docker/scout-sbom-indexer___1",
    "chars": 72,
    "preview": "sha256:13c89fb6085aceb41f9556825c59d957917a3be670e3493598bd1f7f2a49f2fe\n"
  },
  {
    "path": ".external-pins/file.sh",
    "chars": 386,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# given an image (name:tag), return the appropriate filename\n\ndir=\"$(dirname \"$B"
  },
  {
    "path": ".external-pins/list.sh",
    "chars": 1320,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\nfind \"$dir\" -mindepth 2 -type f -printf '%P\\n' "
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/nanoserver___ltsc2022",
    "chars": 72,
    "preview": "sha256:be41510eb214c55def9162ef1fb5e71f1b71ce4d64d91bc963199f2383e034ea\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/nanoserver___ltsc2025",
    "chars": 72,
    "preview": "sha256:8e76dda6e26aeee6dd741d9d92cd44f9965e209dcc30b7e90b58d37c63d37cd9\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/servercore___ltsc2022",
    "chars": 72,
    "preview": "sha256:d4c6d1a8a1a306b12691c3b2e5e3a8bfad786cbd6b7831cd74a9a6a99eab08ad\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/servercore___ltsc2025",
    "chars": 72,
    "preview": "sha256:a4d6cb8427e90fd15e39bef29e0e800465989793d2a0826d3b7ceba78af0fe34\n"
  },
  {
    "path": ".external-pins/redhat/ubi10-minimal___latest",
    "chars": 72,
    "preview": "sha256:fa956af586b367c3366ac4376c3ee42a1141792b482e77d57aefb813f740f04d\n"
  },
  {
    "path": ".external-pins/redhat/ubi10___latest",
    "chars": 72,
    "preview": "sha256:17296ded9ab581e9a9019a71e15576c0a99813d8870eb6758e32b5bf93c5ff71\n"
  },
  {
    "path": ".external-pins/redhat/ubi8-minimal___latest",
    "chars": 72,
    "preview": "sha256:1352e7792cd20b906b6f3326f2ce714ae9f2ccf6ba06e7132759afa5efe26e3b\n"
  },
  {
    "path": ".external-pins/redhat/ubi8___latest",
    "chars": 72,
    "preview": "sha256:28a85f76ad1ea0a46a81a934b02fff48d75541f77777be403d48b6bb99a363ad\n"
  },
  {
    "path": ".external-pins/redhat/ubi9-minimal___latest",
    "chars": 72,
    "preview": "sha256:83006d535923fcf1345067873524a3980316f51794f01d8655be55d6e9387183\n"
  },
  {
    "path": ".external-pins/redhat/ubi9___latest",
    "chars": 72,
    "preview": "sha256:05fa0100593c08b5e9dde684cd3eaa94b4d5d7b3cc09944f1f73924e49fde036\n"
  },
  {
    "path": ".external-pins/tag.sh",
    "chars": 657,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# given a filename, return the appropriate image (name:tag)\n\norigDir=\"$(dirname "
  },
  {
    "path": ".external-pins/tianon/buildkit___0.16",
    "chars": 72,
    "preview": "sha256:cb0ffa514974dcb631ee9f0be10b6ead0c0625bf12524bca3a673fdd79a0b62e\n"
  },
  {
    "path": ".external-pins/update.sh",
    "chars": 535,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\nif [ \"$#\" -eq 0 ]; then\n\timages=\"$(\"$dir/list.s"
  },
  {
    "path": ".gitattributes",
    "chars": 86,
    "preview": "# https://github.com/actions/checkout/issues/135#issuecomment-613361104\n* text eol=lf\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "chars": 1769,
    "preview": "*  @docker-library/maintainers\n\n# give Laurent a bit more responsibility / authority on images where he's comfortable an"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "chars": 603,
    "preview": "<!--\n\nWAIT!  Before you file an issue here, please keep in mind that your issue is _probably_ more appropriately filed s"
  },
  {
    "path": ".github/workflows/.bashbrew/action.yml",
    "chars": 1037,
    "preview": "# https://github.com/docker-library/official-images/pull/13556#issuecomment-1319181339 🙈\nname: 'Shared Bashbrew Action'\n"
  },
  {
    "path": ".github/workflows/generate.sh",
    "chars": 2500,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n#\n# NOTE: this is *not* a good example for integrating these tests into your own"
  },
  {
    "path": ".github/workflows/munge-pr.yml",
    "chars": 10454,
    "preview": "name: Munge PR\n\non:\n  pull_request_target:\n\npermissions:\n  contents: read\n  pull-requests: write\n\ndefaults:\n  run:\n    s"
  },
  {
    "path": ".github/workflows/naughty.sh",
    "chars": 1986,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nif [ \"$#\" -eq 0 ]; then\n\tgit fetch --quiet https://github.com/docker-library/off"
  },
  {
    "path": ".github/workflows/test-pr.yml",
    "chars": 2666,
    "preview": "name: Test PR\n\non:\n  pull_request:\n\ndefaults:\n  run:\n    shell: 'bash -Eeuo pipefail -x {0}'\n\nenv:\n  # https://github.co"
  },
  {
    "path": ".gitignore",
    "chars": 5,
    "preview": ".git\n"
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "chars": 3421,
    "preview": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe as members, contributors, and leaders pledge to make participa"
  },
  {
    "path": "Dockerfile",
    "chars": 928,
    "preview": "# FYI, this base image is built via \".github/workflows/.bashbrew/action.yml\" (from https://github.com/docker-library/bas"
  },
  {
    "path": "LICENSE",
    "chars": 10758,
    "preview": "\n                                 Apache License\n                           Version 2.0, January 2004\n                  "
  },
  {
    "path": "MAINTAINERS",
    "chars": 592,
    "preview": "# This file lists the maintainers of the Official Images program at large, not necessarily the maintainers of any given "
  },
  {
    "path": "NEW-IMAGE-CHECKLIST.md",
    "chars": 1821,
    "preview": "# Checklist for Review\n\n**NOTE:** This checklist is intended for the use of the Official Images maintainers both to trac"
  },
  {
    "path": "README.md",
    "chars": 34799,
    "preview": "# Docker Official Images\n\n## Table of Contents\n\n<!-- AUTOGENERATED TOC -->\n\n1.\t[Docker Official Images](#docker-official"
  },
  {
    "path": "SECURITY.md",
    "chars": 1397,
    "preview": "# Security Policy\n\nIf you have run a CVE/security scanner on an image and that is why you are here, you should read [our"
  },
  {
    "path": "_bashbrew-cat-sorted.sh",
    "chars": 867,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# a mimic of \"bashbrew cat\" which should sort slightly more deterministically (s"
  },
  {
    "path": "diff-pr.sh",
    "chars": 12007,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\nshopt -s dotglob\n\n# make sure we can GTFO\ntrap 'echo >&2 Ctrl+C captured, exiting"
  },
  {
    "path": "library/adminer",
    "chars": 1047,
    "preview": "# this file is generated via https://github.com/TimWolla/docker-adminer/blob/d05fa68d13a889364cf8c81884ecf1a11a37957f/ge"
  },
  {
    "path": "library/aerospike",
    "chars": 756,
    "preview": "Maintainers: Lucien Volmar <lucien@aerospike.com> (@volmarl),\n             Michael Coberly <mcoberly@aerospike.com> (@mc"
  },
  {
    "path": "library/almalinux",
    "chars": 2746,
    "preview": "# This file was generated on https://github.com/AlmaLinux/container-images/actions/runs/22493082393\nMaintainers: The Alm"
  },
  {
    "path": "library/alpine",
    "chars": 2050,
    "preview": "Maintainers: Natanael Copa <ncopa@alpinelinux.org> (@ncopa)\nGitRepo: https://github.com/alpinelinux/docker-alpine.git\n\nT"
  },
  {
    "path": "library/alt",
    "chars": 984,
    "preview": "Maintainers: ALT Linux Team Cloud <alt-cloud@altlinux.org> (@alt-cloud),\n             Alexey Shabalin <shaba@altlinux.or"
  },
  {
    "path": "library/amazoncorretto",
    "chars": 8488,
    "preview": "Maintainers: Amazon Corretto Team <corretto-team@amazon.com> (@corretto),\n             Dan Lutker <lutkerd@amazon.com> ("
  },
  {
    "path": "library/amazonlinux",
    "chars": 1309,
    "preview": "Maintainers: Amazon Linux <amazon-linux@amazon.com> (@amazonlinux),\n             Frédérick Lefebvre (@fred-lefebvre),\n  "
  },
  {
    "path": "library/api-firewall",
    "chars": 308,
    "preview": "Maintainers: Ivan Novikov <in@wallarm.com> (@d0znpp), \n             Nikolay Tkachenko (@afr1ka)\nGitRepo: https://github."
  },
  {
    "path": "library/arangodb",
    "chars": 380,
    "preview": "Maintainers: Frank Celler <info@arangodb.com> (@fceller), Wilfried Goesgens <w.goesgens@arangodb.org> (@dothebart), Vadi"
  },
  {
    "path": "library/archlinux",
    "chars": 858,
    "preview": "# https://gitlab.archlinux.org/archlinux/archlinux-docker\n\nMaintainers: Santiago Torres-Arias <santiago@archlinux.org> ("
  },
  {
    "path": "library/azul-zulu",
    "chars": 4143,
    "preview": "Maintainers: Azul Devops Team <devops@azul.com> (@azul-publisher),\n             Pavel Petroshenko <pavel@azul.com> (@ppe"
  },
  {
    "path": "library/backdrop",
    "chars": 629,
    "preview": "Maintainers: Mike Pirog <mike@kalabox.io> (@pirog),\n             Geoff St. Pierre <serundeputy@gmail.com> (@serundeputy)"
  },
  {
    "path": "library/bash",
    "chars": 2944,
    "preview": "# this file is generated via https://github.com/tianon/docker-bash/blob/59788c3224d1c11f14518f6c860ce6bccaf21d54/generat"
  },
  {
    "path": "library/bonita",
    "chars": 558,
    "preview": "Maintainers: Emmanuel Duchastenier <emmanuel.duchastenier@bonitasoft.org> (@educhastenier),\n             Anthony Biremba"
  },
  {
    "path": "library/buildpack-deps",
    "chars": 5055,
    "preview": "# this file is generated via https://github.com/docker-library/buildpack-deps/blob/abbc41715d6f92a6e5137a6a09b59400a6333"
  },
  {
    "path": "library/busybox",
    "chars": 5310,
    "preview": "# this file is generated via https://github.com/docker-library/busybox/blob/32ed6b6c9363239c5acccfcf89bf401e07fc33c3/gen"
  },
  {
    "path": "library/caddy",
    "chars": 3690,
    "preview": "# this file is generated with gomplate:\n# template: https://github.com/caddyserver/caddy-docker/blob/e05f66898af9a0a694a"
  },
  {
    "path": "library/cassandra",
    "chars": 890,
    "preview": "# this file is generated via https://github.com/docker-library/cassandra/blob/7c5b1270f935620330a51c1658d2c0557432f4ac/g"
  },
  {
    "path": "library/chronograf",
    "chars": 930,
    "preview": "Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),\n             Sven Rebhan <srebhan@influxdata.com> (@"
  },
  {
    "path": "library/cirros",
    "chars": 554,
    "preview": "# this file is generated via https://github.com/tianon/docker-brew-cirros/blob/bc178480989db677c1271933567a0555e35856dc/"
  },
  {
    "path": "library/clearlinux",
    "chars": 239,
    "preview": "Maintainers: William Douglas <william.douglas@intel.com> (@bryteise)\nGitRepo: https://github.com/clearlinux/docker-brew-"
  },
  {
    "path": "library/clefos",
    "chars": 163,
    "preview": "Maintainers: The ClefOS Project <neale@sinenomine.net> (@nealef)\nGitRepo: https://github.com/nealef/clefos.git\n\n# https:"
  },
  {
    "path": "library/clickhouse",
    "chars": 1375,
    "preview": "# The file is generated by https://github.com/ClickHouse/ClickHouse/blob/2ee3817600b03194beae6e050e7cb19f46690fa3/tests/"
  },
  {
    "path": "library/clojure",
    "chars": 15596,
    "preview": "Maintainers: Paul Lam <paul@quantisan.com> (@Quantisan),\n             Wes Morgan <wes@wesmorgan.me> (@cap10morgan)\nArchi"
  },
  {
    "path": "library/composer",
    "chars": 660,
    "preview": "# this file was generated using https://github.com/composer/docker/blob/3fdb03de2e013b14208ce98cdd2125d488adc196/generat"
  },
  {
    "path": "library/convertigo",
    "chars": 323,
    "preview": "Maintainers: Nicolas Albert <nicolasa@convertigo.com> (@nicolas-albert), Olivier Picciotto <olivier.picciotto@convertigo"
  },
  {
    "path": "library/couchbase",
    "chars": 4510,
    "preview": "Maintainers: Couchbase Docker Team <docker@couchbase.com> (@cb-robot)\nGitRepo: https://github.com/couchbase/docker\n\nTags"
  },
  {
    "path": "library/couchdb",
    "chars": 898,
    "preview": "# see https://couchdb.apache.org/\n# also the announce@couchdb.apache.org mailing list\n\nMaintainers: Joan Touzet <wohali@"
  },
  {
    "path": "library/crate",
    "chars": 444,
    "preview": "Maintainers: Mathias Fußenegger <mathias@crate.io> (@mfussenegger),\n             Sebastian Utz <sebastian@crate.io> (@se"
  },
  {
    "path": "library/dart",
    "chars": 542,
    "preview": "Maintainers: Alexander Thomas <athom@google.com> (@athomas), Ivan Inozemtsev <iinozemtsev@google.com> (@iinozemtsev)\nGit"
  },
  {
    "path": "library/debian",
    "chars": 7126,
    "preview": "# tarballs built by debuerreotype\n# see https://github.com/debuerreotype/debuerreotype\n\nMaintainers: Tianon Gravi <tiano"
  },
  {
    "path": "library/docker",
    "chars": 1795,
    "preview": "# this file is generated via https://github.com/docker-library/docker/blob/9f57f3fb1ef688e231b911e0b414da241804c511/gene"
  },
  {
    "path": "library/drupal",
    "chars": 15267,
    "preview": "# this file is generated via https://github.com/docker-library/drupal/blob/8527ca0412b456cd3719cb8719bfb83da5d530a7/gene"
  },
  {
    "path": "library/eclipse-mosquitto",
    "chars": 471,
    "preview": "Maintainers: Roger Light <roger@atchoo.org> (@ralight)\nGitRepo: https://github.com/eclipse-mosquitto/mosquitto.git\nGitCo"
  },
  {
    "path": "library/eclipse-temurin",
    "chars": 29823,
    "preview": "# Eclipse Temurin OpenJDK images provided by the Eclipse Foundation.\n\nMaintainers: George Adams <george.adams@microsoft."
  },
  {
    "path": "library/eggdrop",
    "chars": 629,
    "preview": "Maintainers: Geo Van O <geo@eggheads.org> (@vanosg)\nGitRepo: https://github.com/eggheads/eggdrop-docker.git\n\nTags: devel"
  },
  {
    "path": "library/elasticsearch",
    "chars": 498,
    "preview": "Maintainers: Rene Groeschke (@breskeby)\nGitRepo: https://github.com/elastic/dockerfiles.git\nDirectory: elasticsearch\nBui"
  },
  {
    "path": "library/elixir",
    "chars": 9117,
    "preview": "# this file is generated via https://github.com/erlef/docker-elixir/blob/8fac2ddba9508801bf2a03bac7edbd1d7e9c135b/genera"
  },
  {
    "path": "library/emqx",
    "chars": 446,
    "preview": "Maintainers: Rory Z <rory-z@outlook.com> (@rory-z), Ivan Dyachkov <ivan.dyachkov@emqx.io> (@id)\nGitRepo: https://github."
  },
  {
    "path": "library/erlang",
    "chars": 3571,
    "preview": "# this file is generated via https://github.com/erlang/docker-erlang-otp/blob/9c7d9e72c8832cd5147afb9145f257555d841b2e/g"
  },
  {
    "path": "library/fedora",
    "chars": 1164,
    "preview": "Maintainers: Clement Verna <cverna@fedoraproject.org> (@cverna), Vipul Siddharth <siddharthvipul1@fedoraproject.org> (@s"
  },
  {
    "path": "library/flink",
    "chars": 3008,
    "preview": "# this file is generated via https://github.com/apache/flink-docker/blob/187238c6b444457d9b57279715fa16b37fe59e45/genera"
  },
  {
    "path": "library/fluentd",
    "chars": 671,
    "preview": "Maintainers: Masahiro Nakagawa <repeatedly@gmail.com> (@repeatedly),\n             Fluentd developers <fluentd@googlegrou"
  },
  {
    "path": "library/friendica",
    "chars": 2148,
    "preview": "# This file is generated via https://github.com/friendica/docker/blob/9321c9a1e9b68461c342b85d27bab4046c4c8c38/generate-"
  },
  {
    "path": "library/gazebo",
    "chars": 123,
    "preview": "Maintainers: Tully Foote <tfoote+buildfarm@osrfoundation.org> (@tfoote)\nGitRepo: https://github.com/osrf/docker_images.g"
  },
  {
    "path": "library/gcc",
    "chars": 1328,
    "preview": "# this file is generated via https://github.com/docker-library/gcc/blob/58af1a21e095e94e24b02350d0dbbc3d7f0a62ba/generat"
  },
  {
    "path": "library/geonetwork",
    "chars": 999,
    "preview": "# this file is generated via https://github.com/geonetwork/docker-geonetwork/blob/69cb85ef18f6fe11ad4c9f848e47e307757199"
  },
  {
    "path": "library/ghost",
    "chars": 757,
    "preview": "# this file is generated via https://github.com/docker-library/ghost/blob/98ead58b730477b94884db445c67f3251408cdc4/gener"
  },
  {
    "path": "library/golang",
    "chars": 5952,
    "preview": "# this file is generated via https://github.com/docker-library/golang/blob/e3086cb731933f5a15c07553943a7120c82d70b8/gene"
  },
  {
    "path": "library/gradle",
    "chars": 20607,
    "preview": "Maintainers: Louis Jacomet <louis@gradle.com> (@ljacomet),\n             Christoph Obexer <cobexer@gradle.com> (@cobexer)"
  },
  {
    "path": "library/groovy",
    "chars": 6134,
    "preview": "Maintainers: Keegan Witt <keeganwitt@gmail.com> (@keeganwitt)\nGitRepo: https://github.com/groovy/docker-groovy.git\n\nTags"
  },
  {
    "path": "library/haproxy",
    "chars": 3729,
    "preview": "# this file is generated via https://github.com/docker-library/haproxy/blob/875a6dd82a46bc6474b8fa10003655f6103e7c67/gen"
  },
  {
    "path": "library/haskell",
    "chars": 2245,
    "preview": "Maintainers: Albert Krewinkel <albert+docker@tarleb.com> (@tarleb),\n             Andrei Dziahel <develop7@develop7.info>"
  },
  {
    "path": "library/haxe",
    "chars": 6729,
    "preview": "Maintainers: Andy Li <andy@onthewings.net> (@andyli),\n             Rudy Ges <k@klabz.org> (@kLabz)\nGitRepo: https://gith"
  },
  {
    "path": "library/hello-world",
    "chars": 1984,
    "preview": "# this file is generated via https://github.com/docker-library/hello-world/blob/d2ad81cd7a88c0114e152da6a3849aba64a68610"
  },
  {
    "path": "library/hitch",
    "chars": 442,
    "preview": "# this file was generated using https://github.com/varnish/docker-hitch/blob/fa19f55cf3b713e5f6787315c889a3885ab270bf/po"
  },
  {
    "path": "library/httpd",
    "chars": 806,
    "preview": "# this file is generated via https://github.com/docker-library/httpd/blob/116c9eea074b85041a217cc17e4195eab2b78845/gener"
  },
  {
    "path": "library/hylang",
    "chars": 10010,
    "preview": "Maintainers: Paul Tagliamonte <paultag@hylang.org> (@paultag), Hy Docker Team (@hylang/docker)\nGitRepo: https://github.c"
  },
  {
    "path": "library/ibm-semeru-runtimes",
    "chars": 5434,
    "preview": "# IBM Semeru Runtimes official Docker images.\n\nMaintainers: Jayashree Gopi <jayasg12@in.ibm.com> (@jayasg12)\nGitRepo: ht"
  },
  {
    "path": "library/ibmjava",
    "chars": 597,
    "preview": "#ibmjava official images\n\nMaintainers: Jayashree Gopi <jayasg12@in.ibm.com> (@jayasg12)\nGitRepo: https://github.com/ibmr"
  },
  {
    "path": "library/influxdb",
    "chars": 2116,
    "preview": "Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),\n             Devan Benz <dbenz@influxdata.com> (@dev"
  },
  {
    "path": "library/irssi",
    "chars": 790,
    "preview": "# this file is generated via https://github.com/jessfraz/irssi/blob/0b6d8e4fba6d47b66ab7a2030d91bf2c4c3c981a/generate-st"
  },
  {
    "path": "library/jetty",
    "chars": 7079,
    "preview": "Maintainers: Greg Wilkins <gregw@webtide.com> (@gregw),\n             Lachlan Roberts <lachlan@webtide.com> (@lachlan-rob"
  },
  {
    "path": "library/joomla",
    "chars": 3377,
    "preview": "# this file is generated via https://github.com/joomla-docker/docker-joomla/blob/ee137cbaebee5425cb84a113d559c4c8c26c1c0"
  },
  {
    "path": "library/jruby",
    "chars": 4171,
    "preview": "Maintainers: JRuby Admin <admin@jruby.org> (@jruby),\n             Charles Oliver Nutter <headius@headius.com> (@headius)"
  },
  {
    "path": "library/julia",
    "chars": 3873,
    "preview": "# this file is generated via https://github.com/docker-library/julia/blob/632505b60c6b0d7158c173285717eb6e5424afdc/gener"
  },
  {
    "path": "library/kapacitor",
    "chars": 602,
    "preview": "Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),\n             Sven Rebhan <srebhan@influxdata.com> (@"
  },
  {
    "path": "library/kibana",
    "chars": 487,
    "preview": "Maintainers: Jon Budzenski (@jbudz)\nGitRepo: https://github.com/elastic/dockerfiles.git\nDirectory: kibana\nBuilder: build"
  },
  {
    "path": "library/kong",
    "chars": 810,
    "preview": "Maintainers: Kong Docker Maintainers <team-gateway@konghq.com> (@team-gateway-bot)\nGitRepo: https://github.com/Kong/dock"
  },
  {
    "path": "library/krakend",
    "chars": 458,
    "preview": "Maintainers: Daniel Ortiz <dortiz@krakend.io> (@taik0),\n             Daniel López <dlopez@krakend.io> (@kpacha),\n       "
  },
  {
    "path": "library/lightstreamer",
    "chars": 2860,
    "preview": "Maintainers: Lightstreamer Server Development Team <support@lightstreamer.com> (@lightstreamer),\n             Dario Criv"
  },
  {
    "path": "library/liquibase",
    "chars": 402,
    "preview": "Maintainers: Jake Newton <docker@liquibase.com> (@jnewton03)\nArchitectures: arm64v8, amd64\nGitRepo: https://github.com/l"
  },
  {
    "path": "library/logstash",
    "chars": 486,
    "preview": "Maintainers: João Duarte (@jsvd)\nGitRepo: https://github.com/elastic/dockerfiles.git\nDirectory: logstash\nBuilder: buildk"
  },
  {
    "path": "library/mageia",
    "chars": 626,
    "preview": "Maintainers: Juan Luis Baptiste <juancho@mageia.org> (@juanluisbaptiste)\nGitRepo: https://github.com/juanluisbaptiste/do"
  },
  {
    "path": "library/mariadb",
    "chars": 2580,
    "preview": "# this file is generated via https://github.com/MariaDB/mariadb-docker/blob/65483980c6c0034361a604ca1e2a048c48da08c6/gen"
  },
  {
    "path": "library/matomo",
    "chars": 861,
    "preview": "# This file is generated via https://github.com/matomo-org/docker/blob/46d5da6d8958f77248588fe70242627d721dd0bb/generate"
  },
  {
    "path": "library/maven",
    "chars": 13539,
    "preview": "Maintainers: Carlos Sanchez <carlos@apache.org> (@carlossg)\nBuilder: buildkit\nGitRepo: https://github.com/carlossg/docke"
  },
  {
    "path": "library/mediawiki",
    "chars": 1207,
    "preview": "Maintainers: Kunal Mehta <legoktm@debian.org> (@legoktm),\n             addshore <addshorewiki@gmail.com> (@addshore),\n  "
  },
  {
    "path": "library/memcached",
    "chars": 817,
    "preview": "# this file is generated via https://github.com/docker-library/memcached/blob/41e28506e64d0b5daabbafc8d6349eddc91c17c0/g"
  },
  {
    "path": "library/mongo",
    "chars": 4010,
    "preview": "# this file is generated via https://github.com/docker-library/mongo/blob/7f63818a51a1c6904953a2a708c1aa4aab629034/gener"
  },
  {
    "path": "library/mongo-express",
    "chars": 1457,
    "preview": "# this file is generated via https://github.com/mongo-express/mongo-express-docker/blob/075234363b3c008c7c2e97de8a3639e2"
  },
  {
    "path": "library/monica",
    "chars": 1537,
    "preview": "# This file is generated via https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/generate-s"
  },
  {
    "path": "library/mysql",
    "chars": 1294,
    "preview": "# this file is generated via https://github.com/docker-library/mysql/blob/6faf41e2e9d9d0a2b97d83449830ca75cbee17f9/gener"
  },
  {
    "path": "library/nats",
    "chars": 3244,
    "preview": "Maintainers: Derek Collison <derek@synadia.com> (@derekcollison),\n             Waldemar Quevedo Salinas <wally@synadia.c"
  },
  {
    "path": "library/neo4j",
    "chars": 4656,
    "preview": "Maintainers: Jenny Owen <jenny.owen@neo4j.com> (@jennyowen),\n             Eric Sporre <eric.sporre@neo4j.com> (@ericspor"
  },
  {
    "path": "library/neurodebian",
    "chars": 1573,
    "preview": "Maintainers: Yaroslav Halchenko <debian@onerussian.com> (@yarikoptic)\nGitRepo: https://github.com/neurodebian/dockerfile"
  },
  {
    "path": "library/nextcloud",
    "chars": 2250,
    "preview": "# This file is generated via https://github.com/nextcloud/docker/blob/3787374f48c11a6b29b1d60fe12e3b9688c61774/generate-"
  },
  {
    "path": "library/nginx",
    "chars": 4254,
    "preview": "# this file is generated via https://github.com/nginx/docker-nginx/blob/1733df4445c59503d7855d6d8bed74cf049ac570/generat"
  },
  {
    "path": "library/node",
    "chars": 7423,
    "preview": "# this file is generated via https://github.com/nodejs/docker-node/blob/913d93f2ba4cddb224b73fa9f7531cacb501815e/stackbr"
  },
  {
    "path": "library/notary",
    "chars": 388,
    "preview": "Maintainers: TBD (@docker)\nGitRepo: https://github.com/docker/notary-official-images.git\nGitCommit: 77b9b7833f8dd6be0710"
  },
  {
    "path": "library/odoo",
    "chars": 408,
    "preview": "Maintainers: Christophe Monniez <moc@odoo.com> (@d-fence)\nGitRepo: https://github.com/odoo/docker\nGitCommit: b5ff5c6057c"
  },
  {
    "path": "library/open-liberty",
    "chars": 5436,
    "preview": "Maintainers: Gkerta Seferi <Gkerta.Seferi@ibm.com> (@gkertasef),\n             Leo Christy Jesuraj <leojc@ca.ibm.com> (@l"
  },
  {
    "path": "library/openjdk",
    "chars": 3054,
    "preview": "# this file is generated via https://github.com/docker-library/openjdk/blob/82ebf1fc0e888b0319007852b65899fa32c58f1e/gen"
  },
  {
    "path": "library/oraclelinux",
    "chars": 1222,
    "preview": "Maintainers: Oracle Linux Product Team <ol-ovm-info_ww@oracle.com> (@Oracle)\nGitRepo: https://github.com/oracle/containe"
  },
  {
    "path": "library/orientdb",
    "chars": 840,
    "preview": "\nMaintainers: Tglman <tglman@tglman.com> (@tglman)\n\nTags: 3.2.50, 3.2, latest\nArchitectures: amd64, arm32v7, arm64v8\nGit"
  },
  {
    "path": "library/percona",
    "chars": 1113,
    "preview": "Maintainers: Evgeniy Patlan <evgeniy.patlan@percona.com> (@EvgeniyPatlan),\n             Viacheslav Sarzhan <slava.sarzha"
  },
  {
    "path": "library/perl",
    "chars": 8200,
    "preview": "Maintainers: Peter Martini <PeterCMartini@GMail.com> (@PeterMartini),\n             Zak B. Elep <zakame@cpan.org> (@zakam"
  },
  {
    "path": "library/photon",
    "chars": 1142,
    "preview": "# this file is generated via https://github.com/vmware/photon-docker-image/blob/c48f588cebc54dba10db21c75d4354a03fa6ebc2"
  },
  {
    "path": "library/php",
    "chars": 13994,
    "preview": "# this file is generated via https://github.com/docker-library/php/blob/6c91a369458bf48ae137a647934585ce0480067d/generat"
  },
  {
    "path": "library/php-zendserver",
    "chars": 302,
    "preview": "Maintainers: Heigo Sinilind <hsinilind@perforce.com> (@hsinilind),\n             Rain Viigipuu <rviigipuu@perforce.com> ("
  },
  {
    "path": "library/phpmyadmin",
    "chars": 946,
    "preview": "# This file is generated via https://github.com/phpmyadmin/docker/blob/0c64340e5d8cbae534b84c4820e0f38d28f44081/generate"
  },
  {
    "path": "library/plone",
    "chars": 780,
    "preview": "Maintainers: Alin Voinea <alin.voinea@gmail.com> (@avoinea),\n             Piero Nicolli <piero.nicolli@redturtle.it> (@p"
  },
  {
    "path": "library/postfixadmin",
    "chars": 870,
    "preview": "# This file is generated via https://github.com/postfixadmin/docker/blob/052a5f0370796309c813597e1dd73f89ae616b70/genera"
  },
  {
    "path": "library/postgres",
    "chars": 4367,
    "preview": "# this file is generated via https://github.com/docker-library/postgres/blob/304578a4b447792df66768a25a54e2247b117e74/ge"
  },
  {
    "path": "library/pypy",
    "chars": 5856,
    "preview": "# this file is generated via https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/genera"
  },
  {
    "path": "library/python",
    "chars": 10440,
    "preview": "# this file is generated via https://github.com/docker-library/python/blob/59e4abf1fb132d2f7be0b808bdc0b3e616519eeb/gene"
  },
  {
    "path": "library/r-base",
    "chars": 358,
    "preview": "Maintainers: Carl Boettiger <rocker-maintainers@eddelbuettel.com> (@cboettig),\n             Dirk Eddelbuettel <rocker-ma"
  },
  {
    "path": "library/rabbitmq",
    "chars": 2683,
    "preview": "# this file is generated via https://github.com/docker-library/rabbitmq/blob/423cdaa94f7e3dc15462ae62487fa216e65d7c6a/ge"
  },
  {
    "path": "library/rakudo-star",
    "chars": 704,
    "preview": "Maintainers: Moritz Lenz <moritz.lenz@gmail.com> (@moritz),\n             Joelle Maslak <jmaslak@antelope.net> (@jmaslak)"
  },
  {
    "path": "library/redis",
    "chars": 3752,
    "preview": "Maintainers: Adam Ben Shmuel <adam.ben-shmuel@redis.com> (@adamiBs),\n             Yossi Gottlieb <yossi@redis.com> (@yos"
  },
  {
    "path": "library/redmine",
    "chars": 2873,
    "preview": "# this file is generated via https://github.com/docker-library/redmine/blob/a78ef22f57df24fe9e7d4a9b149751a45c87b755/gen"
  },
  {
    "path": "library/registry",
    "chars": 343,
    "preview": "Maintainers: Milos Gajdos (@milosgajdos),\n             Sebastiaan van Stijn (@thajeztah)\nGitRepo: https://github.com/dis"
  },
  {
    "path": "library/rethinkdb",
    "chars": 343,
    "preview": "Maintainers: RethinkDB <services@rethinkdb.com> (@gabor-boros)\nGitRepo: https://github.com/rethinkdb/rethinkdb-dockerfil"
  },
  {
    "path": "library/rocket.chat",
    "chars": 930,
    "preview": "# this file is generated via https://github.com/RocketChat/Docker.Official.Image/blob/889b82cf0d2fe18e30c8fbe32acbcceb98"
  },
  {
    "path": "library/rockylinux",
    "chars": 1973,
    "preview": "Maintainers: The Rocky Linux Foundation <infrastructure@rockylinux.org> (@rocky-linux),\n             Neil Hanlon <neil@r"
  },
  {
    "path": "library/ros",
    "chars": 2915,
    "preview": "Maintainers: Tully Foote <tfoote+buildfarm@osrfoundation.org> (@tfoote)\nGitRepo: https://github.com/osrf/docker_images.g"
  },
  {
    "path": "library/ruby",
    "chars": 5586,
    "preview": "# this file is generated via https://github.com/docker-library/ruby/blob/2895a675d1b1690faab2105c56aa0e14f6865ff2/genera"
  },
  {
    "path": "library/rust",
    "chars": 2466,
    "preview": "# this file is generated via https://github.com/rust-lang/docker-rust/blob/606fc92c104f66af9e7e5f2bea1bf2f5072d84b6/x.py"
  },
  {
    "path": "library/sapmachine",
    "chars": 15781,
    "preview": "Maintainers: Christoph Langer <sapmachine@sap.com> (@realclanger), Arno Zeller <sapmachine@sap.com> (@ArnoZeller)\nGitRep"
  },
  {
    "path": "library/satosa",
    "chars": 730,
    "preview": "# This file is generated via https://github.com/IdentityPython/satosa-docker/blob/07ce67c693fbacb188e3d70c700e072e947b15"
  },
  {
    "path": "library/silverpeas",
    "chars": 453,
    "preview": "# This file is generated via https://github.com/Silverpeas/docker-silverpeas-prod/blob/master/generate-docker-library.sh"
  },
  {
    "path": "library/solr",
    "chars": 1273,
    "preview": "# this file is generated via https://github.com/apache/solr-docker/blob/c33200c4b1c42b32c80f4e85621438df479a29b5/generat"
  },
  {
    "path": "library/sonarqube",
    "chars": 3312,
    "preview": "Maintainers: Carmine Vassallo <carmine.vassallo@sonarsource.com> (@carminevassallo),\n\tEmma Mansalier <emma.mansalier@son"
  },
  {
    "path": "library/spark",
    "chars": 3343,
    "preview": "Maintainers: Apache Spark Developers <dev@spark.apache.org> (@ApacheSpark),\n             Hyukjin Kwon (@HyukjinKwon),\n  "
  },
  {
    "path": "library/spiped",
    "chars": 665,
    "preview": "# this file is generated via https://github.com/TimWolla/docker-spiped/blob/f1f01eb79a88ece779c33acdd75ca29c879cac63/gen"
  },
  {
    "path": "library/storm",
    "chars": 453,
    "preview": "Maintainers: The Apache Storm Project <dev@storm.apache.org> (@asfbot),\n             Julien Nioche (@jnioche),\n         "
  },
  {
    "path": "library/swift",
    "chars": 7169,
    "preview": "Maintainers: Ted Kremenek <kremenek@apple.com> (@tkremenek),\n             Mishal Shah <mishal_shah@apple.com> (@shahmish"
  },
  {
    "path": "library/swipl",
    "chars": 369,
    "preview": "Maintainers: Jan Wielemaker <jan@swi-prolog.org> (@JanWielemaker),\n             Dave Curylo <dave@curylo.org> (@ninjarob"
  },
  {
    "path": "library/teamspeak",
    "chars": 321,
    "preview": "Maintainers: Hubert Nöbauer <hubert.noebauer@teamspeak.com> (@HuppiN),\n             Achim Klittich <achim.klittich@teams"
  },
  {
    "path": "library/telegraf",
    "chars": 874,
    "preview": "Maintainers: Sven Rebhan <srebhan@influxdata.com> (@srebhan),\n             Maya Strandboge <mstrandboge@influxdata.com> "
  },
  {
    "path": "library/tomcat",
    "chars": 14880,
    "preview": "# this file is generated via https://github.com/docker-library/tomcat/blob/56c209618997c452e7d645b82fd4e4fa55147f35/gene"
  },
  {
    "path": "library/tomee",
    "chars": 18803,
    "preview": "Maintainers: Alex Soto <asotobu@gmail.com> (@lordofthejars), Otavio Santana <otaviojava@apache.org> (@otaviojava), Jonat"
  },
  {
    "path": "library/traefik",
    "chars": 6170,
    "preview": "Maintainers: Julien Salleyron <julien@traefik.io> (@juliens), Romain Tribotté <romain.tribotte@traefik.io> (@rtribotte),"
  },
  {
    "path": "library/ubuntu",
    "chars": 6460,
    "preview": "# see https://git.launchpad.net/cloud-images/+oci/ubuntu-base\n# see also https://wiki.ubuntu.com/Releases#Current\n\nMaint"
  },
  {
    "path": "library/unit",
    "chars": 196,
    "preview": "Maintainers: Unit Docker Maintainers <docker-maint@nginx.com> (@nginx),\n             Konstantin Pavlov (@thresheek),\n   "
  },
  {
    "path": "library/varnish",
    "chars": 431,
    "preview": "# this file was generated using https://github.com/varnish/docker-varnish/blob/9549601f65e81660417432a6963cdb9a41da3caf/"
  },
  {
    "path": "library/websphere-liberty",
    "chars": 4256,
    "preview": "Maintainers: Gkerta Seferi <Gkerta.Seferi@ibm.com> (@gkertasef),\n             Leo Christy Jesuraj <leojc@ca.ibm.com> (@l"
  },
  {
    "path": "library/wordpress",
    "chars": 8217,
    "preview": "# this file is generated via https://github.com/docker-library/wordpress/blob/c8b214cc10dae78c4a7c9e1d98ee104e0f027441/g"
  },
  {
    "path": "library/xwiki",
    "chars": 2646,
    "preview": "Maintainers: XWiki Core Dev Team <committers@xwiki.org> (@xwiki)\nGitRepo: https://github.com/xwiki-contrib/docker-xwiki."
  },
  {
    "path": "library/yourls",
    "chars": 966,
    "preview": "# this file is generated via https://github.com/YOURLS/containers/blob/1839562c06c847bc7931bd8b9387881b3d52841b/bin/gene"
  },
  {
    "path": "library/znc",
    "chars": 304,
    "preview": "Maintainers: Alexey Sokolov <alexey+znc@asokolov.org> (@DarthGandalf)\nGitRepo: https://github.com/znc/znc-docker.git\nGit"
  },
  {
    "path": "library/zookeeper",
    "chars": 393,
    "preview": "Maintainers: Elisey Zanko <elisey.zanko@gmail.com> (@31z4)\nGitRepo: https://github.com/31z4/zookeeper-docker.git\nArchite"
  },
  {
    "path": "naughty-commits.sh",
    "chars": 3540,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nfileSizeThresholdMB='2'\n\nexport BASHBREW_ARCH=\n\ngitCache=\"$(bashbrew cat --forma"
  },
  {
    "path": "naughty-constraints.sh",
    "chars": 2755,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nexport BASHBREW_ARCH=\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--all'\nfi\n\n_windows_cons"
  },
  {
    "path": "naughty-from.sh",
    "chars": 4405,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nexport BASHBREW_ARCH= BASHBREW_NAMESPACE=\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--al"
  },
  {
    "path": "naughty-sharedtags.sh",
    "chars": 1787,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--all'\nfi\n\nbashbrew cat --format '\n\t{{- range $"
  },
  {
    "path": "pr-urls.sh",
    "chars": 901,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n#\n# usage:\n#   $ ./pr-urls.sh PR-NUMBER\n#   $ ./pr-urls.sh PR-NUMBER IMAGE1 IMAG"
  },
  {
    "path": "test/README.md",
    "chars": 6928,
    "preview": "# Official Images Test Suite\n\n## What tests belong here?\n\nWe have a lot of historical tests that violate this line, but "
  },
  {
    "path": "test/clean.sh",
    "chars": 318,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndocker image ls --digests --no-trunc --format '\n\t{{- if ne .Tag \"<none>\" -}}\n\t\t{"
  },
  {
    "path": "test/config.sh",
    "chars": 6274,
    "preview": "#!/usr/bin/env bash\n\nglobalTests+=(\n\tutc\n\tno-hard-coded-passwords\n\toverride-cmd\n)\n\n# for \"explicit\" images, only run tes"
  },
  {
    "path": "test/retry.sh",
    "chars": 1026,
    "preview": "#!/bin/bash\n\nset -e\n\nopts=\"$(getopt -o 'i:c:t:s:' --long 'image:,cid:,tries:,sleep:' -- \"$@\")\"\neval set -- \"$opts\"\nwhile"
  },
  {
    "path": "test/run.sh",
    "chars": 6246,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nself=\"$(basename \"$0\")\"\n\nusage"
  },
  {
    "path": "test/tests/cassandra-basics/run.sh",
    "chars": 2028,
    "preview": "#!/bin/bash\n\n[ \"$DEBUG\" ] && set -x\n\nset -eo pipefail -o errtrace\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nima"
  },
  {
    "path": "test/tests/cheeky-retries.sh",
    "chars": 400,
    "preview": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# intended to be symlinked as \"run.sh\" next to \"real-run.sh\" such that we give \""
  },
  {
    "path": "test/tests/composer/composer.json",
    "chars": 61,
    "preview": "{\n    \"require\": {\n        \"composer/composer\": \"^2\"\n    }\n}\n"
  },
  {
    "path": "test/tests/composer/container.sh",
    "chars": 181,
    "preview": "#!/bin/sh\n\ndir=\"$(mktemp -d)\"\n\ntrap \"rm -rf '$dir'\" EXIT\n\ncp composer.json \"$dir\"\n\ncd \"$dir\"\n\ncomposer --version\ncompose"
  },
  {
    "path": "test/tests/convertigo-hello-world/run.sh",
    "chars": 948,
    "preview": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\n# Use a client image w"
  },
  {
    "path": "test/tests/dart-hello-world/container.dart",
    "chars": 41,
    "preview": "void main() {\n  print('Hello World!');\n}\n"
  },
  {
    "path": "test/tests/dart-hello-world/expected-std-out.txt",
    "chars": 13,
    "preview": "Hello World!\n"
  },
  {
    "path": "test/tests/debian-apt-get/container.sh",
    "chars": 711,
    "preview": "#!/bin/bash\nset -e\n\n# We have to eat stderr here because of:\n# W: Conflicting distribution: http://http.debian.net rc-bu"
  },
  {
    "path": "test/tests/debian-apt-get/expected-std-out.txt",
    "chars": 14,
    "preview": "Hello, world!\n"
  },
  {
    "path": "test/tests/docker-build.sh",
    "chars": 1040,
    "preview": "#!/usr/bin/env bash\nset -e\n\n# wrapper around \"docker build\" that creates a temporary directory and copies files into it "
  },
  {
    "path": "test/tests/docker-dind/run.sh",
    "chars": 1186,
    "preview": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ncname=\"docker-daemon-contain"
  },
  {
    "path": "test/tests/docker-registry-push-pull/run.sh",
    "chars": 1779,
    "preview": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\ncase \"${image##*/}\" in\n\tdocke"
  },
  {
    "path": "test/tests/eclipse-mosquitto-basics/mosquitto.conf",
    "chars": 35,
    "preview": "listener 1883\nallow_anonymous true\n"
  }
]

// ... and 165 more files (download for full content)

About this extraction

This page contains the full source code of the docker-library/official-images GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 365 files (705.8 KB), approximately 294.4k tokens, and a symbol index with 16 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.

Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.

Copied to clipboard!