[
  {
    "path": ".buildkit-build-contexts.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# given a list of image references, returns an appropriate list of \"ref=docker-image://foo@sha256:xxx\" for the current architecture\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\n[ -n \"$BASHBREW_ARCH\" ]\narchNamespace=\n\ndie() {\n\techo >&2 \"error: $*\"\n\texit 1\n}\n\nfor img; do\n\tlookup=\n\tcase \"$img\" in\n\t\t*@sha256:*)\n\t\t\tlookup=\"$img\"\n\t\t\t;;\n\n\t\t*/*)\n\t\t\tfile=\"$(\"$dir/.external-pins/file.sh\" \"$img\")\" || die \"'$img': failed to look up external pin file\"\n\t\t\tdigest=\"$(< \"$file\")\" || die \"'$img': failed to read external pin file ('$file')\"\n\t\t\t[ -n \"$digest\" ] || die \"'$img': empty external pin file ('$file')\"\n\t\t\tlookup=\"${img%@*}@$digest\" # img should never have an @ in it here, but just in case\n\t\t\t;;\n\n\t\t*)\n\t\t\t[ -n \"$BASHBREW_ARCH_NAMESPACES\" ] || die 'missing BASHBREW_ARCH_NAMESPACES'\n\t\t\tarchNamespace=\"${archNamespace:-$(bashbrew cat --format '{{ archNamespace arch }}' \"$dir/library/hello-world\")}\"\n\t\t\t[ -n \"$archNamespace\" ] || die \"failed to get arch namespace for '$BASHBREW_ARCH'\"\n\t\t\tlookup=\"$archNamespace/$img\"\n\t\t\t;;\n\tesac\n\t[ -n \"$lookup\" ] || die \"'$img': failed to determine what image to query\"\n\n\tjson=\"$(bashbrew remote arches --json \"$lookup\" || die \"'$img': failed lookup ('$lookup')\")\"\n\tdigests=\"$(jq <<<\"$json\" -r '.arches[env.BASHBREW_ARCH] // [] | map(.digest | @sh) | join(\" \")')\"\n\teval \"digests=( $digests )\"\n\n\tif [ \"${#digests[@]}\" -gt 1 ]; then\n\t\techo >&2 \"warning: '$lookup' has ${#digests[@]} images for '$BASHBREW_ARCH'; returning only the first\"\n\tfi\n\n\tfor digest in \"${digests[@]}\"; do\n\t\techo \"$img=docker-image://${lookup%@*}@$digest\"\n\t\tcontinue 2\n\tdone\n\n\tdigest=\"$(jq <<<\"$json\" -r '.desc.digest')\"\n\tarches=\"$(jq <<<\"$json\" -r '.arches | keys | join(\" \")')\"\n\tdie \"'$img': no appropriate digest for '$BASHBREW_ARCH' found in '$lookup' ('$digest'; arches '$arches')\"\ndone\n"
  },
  {
    "path": ".external-pins/docker/scout-sbom-indexer___1",
    "content": "sha256:13c89fb6085aceb41f9556825c59d957917a3be670e3493598bd1f7f2a49f2fe\n"
  },
  {
    "path": ".external-pins/file.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# given an image (name:tag), return the appropriate filename\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\nfor img; do\n\tif [[ \"$img\" != *:* ]]; then\n\t\techo >&2 \"error: '$img' does not contain ':' -- this violates our assumptions! (did you mean '$img:latest' ?)\"\n\t\texit 1\n\tfi\n\n\timgFile=\"$dir/${img/:/___}\" # see \".external-pins/list.sh\"\n\techo \"$imgFile\"\ndone\n"
  },
  {
    "path": ".external-pins/list.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\nfind \"$dir\" -mindepth 2 -type f -printf '%P\\n' | sed -e 's/___/:/' | sort\n\n# assumptions which make the \"___\" -> \":\" conversion ~safe (examples referencing \"example.com/foo/bar:baz\"):\n#\n#   1. we *always* specify a tag (\"baz\")\n#   2. the domain (\"example.com\") cannot contain underscores\n#   3. we do not pin to any registry with a non-443 port (\"example.com:8443\")\n#   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 \":\")\n#   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)\n#\n# see https://github.com/distribution/distribution/blob/411d6bcfd2580d7ebe6e346359fa16aceec109d5/reference/regexp.go\n# (see also https://github.com/docker-library/perl-bashbrew/blob/6685582f7889ef4806f0544b93f10640c7608b1a/lib/Bashbrew/RemoteImageRef.pm#L9-L26 for a condensed version)\n#\n# 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)\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/nanoserver___ltsc2022",
    "content": "sha256:be41510eb214c55def9162ef1fb5e71f1b71ce4d64d91bc963199f2383e034ea\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/nanoserver___ltsc2025",
    "content": "sha256:8e76dda6e26aeee6dd741d9d92cd44f9965e209dcc30b7e90b58d37c63d37cd9\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/servercore___ltsc2022",
    "content": "sha256:d4c6d1a8a1a306b12691c3b2e5e3a8bfad786cbd6b7831cd74a9a6a99eab08ad\n"
  },
  {
    "path": ".external-pins/mcr.microsoft.com/windows/servercore___ltsc2025",
    "content": "sha256:a4d6cb8427e90fd15e39bef29e0e800465989793d2a0826d3b7ceba78af0fe34\n"
  },
  {
    "path": ".external-pins/redhat/ubi10-minimal___latest",
    "content": "sha256:fa956af586b367c3366ac4376c3ee42a1141792b482e77d57aefb813f740f04d\n"
  },
  {
    "path": ".external-pins/redhat/ubi10___latest",
    "content": "sha256:17296ded9ab581e9a9019a71e15576c0a99813d8870eb6758e32b5bf93c5ff71\n"
  },
  {
    "path": ".external-pins/redhat/ubi8-minimal___latest",
    "content": "sha256:1352e7792cd20b906b6f3326f2ce714ae9f2ccf6ba06e7132759afa5efe26e3b\n"
  },
  {
    "path": ".external-pins/redhat/ubi8___latest",
    "content": "sha256:28a85f76ad1ea0a46a81a934b02fff48d75541f77777be403d48b6bb99a363ad\n"
  },
  {
    "path": ".external-pins/redhat/ubi9-minimal___latest",
    "content": "sha256:83006d535923fcf1345067873524a3980316f51794f01d8655be55d6e9387183\n"
  },
  {
    "path": ".external-pins/redhat/ubi9___latest",
    "content": "sha256:05fa0100593c08b5e9dde684cd3eaa94b4d5d7b3cc09944f1f73924e49fde036\n"
  },
  {
    "path": ".external-pins/tag.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# given a filename, return the appropriate image (name:tag)\n\norigDir=\"$(dirname \"$BASH_SOURCE\")\"\ndir=\"$(readlink -ve \"$origDir\")\"\n\nfor file; do\n\tabs=\"$(readlink -vm \"$file\")\"\n\trel=\"${abs#$dir/}\"\n\trel=\"${rel##*.external-pins/}\" # in case we weren't inside \"$dir\" but the path is legit\n\tif [ \"$rel\" = \"$abs\" ]; then\n\t\techo >&2 \"error: '$file' is not within '$origDir'\"\n\t\techo >&2 \"('$abs' vs '$dir')\"\n\t\texit 1\n\tfi\n\n\timg=\"${rel/___/:}\" # see \".external-pins/list.sh\"\n\tif [ \"$img\" = \"$rel\" ]; then\n\t\techo >&2 \"error: '$file' does not contain ':' ('___') -- this violates our assumptions!\"\n\t\texit 1\n\tfi\n\n\techo \"$img\"\ndone\n"
  },
  {
    "path": ".external-pins/tianon/buildkit___0.16",
    "content": "sha256:cb0ffa514974dcb631ee9f0be10b6ead0c0625bf12524bca3a673fdd79a0b62e\n"
  },
  {
    "path": ".external-pins/update.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\nif [ \"$#\" -eq 0 ]; then\n\timages=\"$(\"$dir/list.sh\")\"\n\tset -- $images\nfi\n\nfor img; do\n\techo -n \"$img -> \"\n\n\tif [[ \"$img\" != *:* ]]; then\n\t\techo >&2 \"error: '$img' does not contain ':' -- this violates our assumptions! (did you mean '$img:latest' ?)\"\n\t\texit 1\n\tfi\n\n\tdigest=\"$(bashbrew remote arches --json \"$img\" | jq -r '.desc.digest')\"\n\n\timgFile=\"$(\"$dir/file.sh\" \"$img\")\"\n\timgDir=\"$(dirname \"$imgFile\")\"\n\tmkdir -p \"$imgDir\"\n\techo \"$digest\" | tee \"$imgFile\"\ndone\n"
  },
  {
    "path": ".gitattributes",
    "content": "# https://github.com/actions/checkout/issues/135#issuecomment-613361104\n* text eol=lf\n"
  },
  {
    "path": ".github/CODEOWNERS",
    "content": "*  @docker-library/maintainers\n\n# give Laurent a bit more responsibility / authority on images where he's comfortable and knowledgeable 🎉\n/library/bash             @LaurentGoderre  @docker-library/maintainers\n/library/docker           @LaurentGoderre  @docker-library/maintainers\n/library/express-gateway  @LaurentGoderre  @docker-library/maintainers\n/library/ghost            @LaurentGoderre  @docker-library/maintainers\n/library/httpd            @LaurentGoderre  @docker-library/maintainers\n/library/kong             @LaurentGoderre  @docker-library/maintainers\n/library/mongo            @LaurentGoderre  @docker-library/maintainers\n/library/mongo-express    @LaurentGoderre  @docker-library/maintainers\n/library/nginx            @LaurentGoderre  @docker-library/maintainers\n/library/node             @LaurentGoderre  @docker-library/maintainers\n/library/oraclelinux      @LaurentGoderre  @docker-library/maintainers\n/library/postgres         @LaurentGoderre  @docker-library/maintainers\n/library/python           @LaurentGoderre  @docker-library/maintainers\n/library/rabbitmq         @LaurentGoderre  @docker-library/maintainers\n/library/redis            @LaurentGoderre  @docker-library/maintainers\n/library/redmine          @LaurentGoderre  @docker-library/maintainers\n/library/registry         @LaurentGoderre  @docker-library/maintainers\n/library/ruby             @LaurentGoderre  @docker-library/maintainers\n/library/traefik          @LaurentGoderre  @docker-library/maintainers\n/library/ubuntu           @LaurentGoderre  @docker-library/maintainers\n\n# 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) 👀\n/.external-pins/docker/scout-sbom-indexer*  @LaurentGoderre\n"
  },
  {
    "path": ".github/ISSUE_TEMPLATE.md",
    "content": "<!--\n\nWAIT!  Before you file an issue here, please keep in mind that your issue is _probably_ more appropriately filed somewhere else.\n\nSpecifically, if your issue is in regards to the documentation of an image, it should be filed at https://github.com/docker-library/docs/issues\n\nIf 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.\n\n-->\n"
  },
  {
    "path": ".github/workflows/.bashbrew/action.yml",
    "content": "# https://github.com/docker-library/official-images/pull/13556#issuecomment-1319181339 🙈\nname: 'Shared Bashbrew Action'\ndescription: 'Install the same version of Bashbrew consistently in all other GitHub Actions'\ninputs:\n  build:\n    default: 'host' # or 'docker' or 'none'\nruns:\n  using: 'composite'\n  steps:\n\n    # 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)\n    # https://github.com/docker-library/bashbrew/releases\n    - shell: 'bash -Eeuo pipefail -x {0}'\n      run:    echo BASHBREW_VERSION=v0.1.14 >> \"$GITHUB_ENV\"\n    - uses: docker-library/bashbrew@v0.1.14\n      if: inputs.build == 'host'\n\n    - run: docker build --pull --tag oisupport/bashbrew:base \"https://github.com/docker-library/bashbrew.git#$BASHBREW_VERSION\"\n      shell: 'bash -Eeuo pipefail -x {0}'\n      if: inputs.build == 'docker'\n"
  },
  {
    "path": ".github/workflows/generate.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n#\n# NOTE: this is *not* a good example for integrating these tests into your own repository!\n# If you want that, check out https://github.com/docker-library/golang/blob/3f2c52653043f067156ce4f41182c2a758c4c857/.github/workflows/ci.yml instead.\n#\n\n[ -d \"$BASHBREW_SCRIPTS/github-actions\" ]\n\nif [ \"$#\" -eq 0 ]; then\n\tgit fetch --quiet https://github.com/docker-library/official-images.git master\n\tchanges=\"$(git diff --no-renames --name-only --diff-filter='d' FETCH_HEAD...HEAD -- library/)\"\n\trepos=\"$(xargs -rn1 basename <<<\"$changes\")\"\n\tset -- $repos\nfi\n\nstrategy='{}'\nfor repo; do\n\tnewStrategy=\"$(GITHUB_REPOSITORY=\"$repo\" GENERATE_STACKBREW_LIBRARY='cat \"library/$GITHUB_REPOSITORY\"' \"$BASHBREW_SCRIPTS/github-actions/generate.sh\")\"\n\tnewStrategy=\"$(jq -c --arg repo \"$repo\" '.matrix.include = [\n\t\t.matrix.include[]\n\t\t| ([ .meta.entries[].tags[0] ]) as $tags\n\t\t| .name = ($tags | join(\", \"))\n\t\t# replace \"build\" steps with something that uses \"bashbrew\" instead of \"docker build\"\n\t\t# https://github.com/docker-library/bashbrew/blob/20b5a50a4eafee1e92fadca5f9cbbce6b16d80b1/scripts/github-actions/generate.sh#L79-L105\n\t\t| .runs.build = (\n\t\t\t(if .os | startswith(\"windows-\") then \"export BASHBREW_ARCH=windows-amd64 BASHBREW_CONSTRAINTS=\" + ([ .meta.entries[].constraints[] ] | join(\", \") | @sh) + \"\\n\" else \"\" end)\n\t\t\t+ \"export BASHBREW_LIBRARY=\\\"$PWD/library\\\"\\n\"\n\t\t\t+ ([ $tags[] | \"bashbrew build \" + @sh ] | join(\"\\n\"))\n\t\t)\n\t\t# 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)\n\t\t# https://github.com/docker-library/bashbrew/blob/a40a54d4d81b9fd2e39b4d7ba3fe203e8b022a67/scripts/github-actions/generate.sh#L95\n\t\t| .runs.test |= gsub(\"[^\\n\\t ]+/run[.]sh \"; \"./test/run.sh \")\n\t]' <<<\"$newStrategy\")\"\n\tjq -c . <<<\"$newStrategy\" > /dev/null # sanity check\n\tstrategy=\"$(jq -c '\n\t\t# https://stackoverflow.com/a/53666584/433558\n\t\tdef meld(a; b):\n\t\t\tif (a | type) == \"object\" and (b | type) == \"object\" then\n\t\t\t\t# for some reason, \"a\" and \"b\" go out of scope for reduce??\n\t\t\t\ta as $a | b as $b |\n\t\t\t\treduce (a + b | keys_unsorted[]) as $k\n\t\t\t\t\t({}; .[$k] = meld($a[$k]; $b[$k]))\n\t\t\telif (a | type) == \"array\" and (b | type) == \"array\" then\n\t\t\t\ta + b\n\t\t\telif b == null then\n\t\t\t\ta\n\t\t\telse\n\t\t\t\tb\n\t\t\tend;\n\t\tmeld(.[0]; .[1])\n\t' <<<\"[$strategy,$newStrategy]\")\"\ndone\njq -c . <<<\"$strategy\" > /dev/null # sanity check\n\nif [ -t 1 ]; then\n\tjq <<<\"$strategy\"\nelse\n\tcat <<<\"$strategy\"\nfi\n"
  },
  {
    "path": ".github/workflows/munge-pr.yml",
    "content": "name: Munge PR\n\non:\n  pull_request_target:\n\npermissions:\n  contents: read\n  pull-requests: write\n\ndefaults:\n  run:\n    shell: 'bash -Eeuo pipefail -x {0}'\n\nenv:\n  # https://github.com/docker-library/bashbrew/issues/10\n  GIT_LFS_SKIP_SMUDGE: 1\n\n# limit to one run at a time per pull request\n# no cancel-in-progress so that the running diff comment can finish before the next since the old diff could be helpful for review\nconcurrency:\n  # this should use \"github.ref\", but:\n  # \"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.\" 🙃\n  # https://docs.github.com/en/actions/writing-workflows/choosing-what-your-workflow-does/accessing-contextual-information-about-workflow-runs#github-context\n  #group: ${{ github.workflow }}-${{ github.ref }}\n  # https://docs.github.com/en/actions/writing-workflows/choosing-when-your-workflow-runs/events-that-trigger-workflows#pull_request_target\n  group: ${{ github.workflow }}-${{ github.event.pull_request.number }}\n  cancel-in-progress: false\n\njobs:\n\n  gather:\n    name: Gather Metadata\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          # 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...\n          ref: ${{ github.event.pull_request.head.sha }}\n          fetch-depth: 0\n      - id: gather\n        name: Affected Images\n        run: |\n          (set +x; echo \"::stop-commands::$(echo -n ${{ github.token }} | sha256sum | head -c 64)\")\n          git fetch --quiet https://github.com/docker-library/official-images.git master\n          externalPins=\"$(git diff --no-renames --name-only FETCH_HEAD...HEAD -- '.external-pins/*/**')\"\n          externalPinTags=\"$(\n            if [ -n \"$externalPins\" ]; then\n              # doing backflips to run \"tag.sh\" from master instead of from the PR\n              git show FETCH_HEAD:.external-pins/tag.sh > ~/master-external-pins-tag.sh\n              chmod +x ~/master-external-pins-tag.sh\n              ~/master-external-pins-tag.sh $externalPins\n            fi\n          )\"\n          images=\"$(git diff --no-renames --name-only FETCH_HEAD...HEAD -- library/)\"\n          if [ -n \"$images\" ]; then\n            new=\"$(git diff --no-renames --name-only --diff-filter=A FETCH_HEAD...HEAD -- $images)\"\n            deleted=\"$(git diff --no-renames --name-only --diff-filter=D FETCH_HEAD...HEAD -- $images)\"\n          else\n            new=\n            deleted=\n          fi\n          export images new deleted externalPins externalPinTags\n          images=\"$(jq -cn '\n            (env.images | rtrimstr(\"\\n\") | split(\"\\n\")) as $images\n            | (env.new | rtrimstr(\"\\n\") | split(\"\\n\")) as $new\n            | (env.deleted | rtrimstr(\"\\n\") | split(\"\\n\")) as $deleted\n            | (env.externalPins | rtrimstr(\"\\n\") | split(\"\\n\")) as $externalPins\n            | (env.externalPinTags | rtrimstr(\"\\n\") | split(\"\\n\")) as $externalPinTags\n            | {\n              images: $images,\n              count: ($images | length),\n              new: $new,\n              deleted: $deleted,\n              externalPins: $externalPins,\n              externalPinTags: $externalPinTags,\n              externalPinsCount: ($externalPins | length),\n            }\n            | .imagesAndExternalPinsCount = (.count + .externalPinsCount) # man, I *really* do not love GitHub Actions expressions...\n          ')\"\n          jq . <<<\"$images\"\n          set +x\n          echo \"::$(echo -n ${{ github.token }} | sha256sum | head -c 64)::\"\n          echo \"images=$images\" >> \"$GITHUB_OUTPUT\"\n    outputs:\n      images: '${{ steps.gather.outputs.images }}'\n\n  apply-labels:\n    name: Apply Labels\n    runs-on: ubuntu-latest\n    needs: gather\n    permissions:\n      contents: read\n      pull-requests: write\n      # \"issues: write\" is now needed to create new labels\n      # https://github.com/orgs/community/discussions/156181\n      # but documentation still shows that pull-requests write should be enough 😓\n      # https://docs.github.com/en/rest/issues/labels?apiVersion=2022-11-28#create-a-label\n      issues: write\n    if: fromJSON(needs.gather.outputs.images).imagesAndExternalPinsCount > 0\n    steps:\n      - name: Apply Labels\n        uses: actions/github-script@v7\n        env:\n          IMAGES: ${{ needs.gather.outputs.images }}\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const data = JSON.parse(process.env.IMAGES);\n            var labels = [\n              ...data.images, // \"library/debian\", ...\n              ...new Set(data.externalPinTags.map(x => 'external/' + x.replace(/:.+$/, ''))), // \"external/mcr.microsoft.com/windows/servercore\", ...\n            ];\n            if (data.new.length > 0) {\n              labels.push('new-image');\n            }\n            console.log(labels);\n            await github.rest.issues.addLabels({\n              owner: context.repo.owner,\n              repo: context.repo.repo,\n              issue_number: context.payload.pull_request.number,\n              labels: labels,\n            });\n\n  diff:\n    name: Diff Comment\n    runs-on: ubuntu-latest\n    needs: gather\n    if: fromJSON(needs.gather.outputs.images).imagesAndExternalPinsCount > 0\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          # 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)\n          ref: ${{ github.event.pull_request.base.ref }}\n          fetch-depth: 0\n      - uses: ./.github/workflows/.bashbrew\n        with:\n          build: 'docker'\n      - name: Prepare Environment\n        run: |\n          # this avoids running repo-local scripts (to avoid CVE-2020-15228 via the scripts being updated to write nasty things to $GITHUB_ENV)\n          docker build --tag oisupport/bashbrew:diff-pr .\n      - name: Gather Maintainers\n        env:\n          IMAGES: ${{ needs.gather.outputs.images }}\n        run: |\n          files=\"$(jq <<<\"$IMAGES\" -r '.images | map(@sh) | join(\" \")')\"\n          eval \"set -- $files\"\n          for f; do\n            if [ -s \"$f\" ]; then\n              docker run --rm --read-only --tmpfs /tmp oisupport/bashbrew:diff-pr \\\n                bashbrew cat --format '  - `{{ $.RepoName }}`:{{ range .Manifest.Global.Maintainers }} @{{ .Handle }}{{ end }}' \"$f\"\n            fi\n          done | tee \"$GITHUB_WORKSPACE/oi-pr.maint\"\n      - name: Generate Diff\n        env:\n          GITHUB_PR_NUMBER: ${{ github.event.pull_request.number }}\n        run: |\n          docker run --rm --read-only --tmpfs /tmp oisupport/bashbrew:diff-pr ./diff-pr.sh \"$GITHUB_PR_NUMBER\" | tee \"$GITHUB_WORKSPACE/oi-pr.diff\"\n      - name: Comment\n        uses: actions/github-script@v7\n        with:\n          github-token: ${{ secrets.GITHUB_TOKEN }}\n          script: |\n            const commentText = 'Diff for ' + context.payload.pull_request.head.sha + ':';\n\n            const fs = require('fs');\n            const diff = fs.readFileSync(process.env.GITHUB_WORKSPACE + '/oi-pr.diff').toString().trimEnd();\n            var body = \"<details>\\n<summary>\" + commentText + \"</summary>\\n\\n```diff\\n\" + diff + \"\\n```\\n\\n</details>\";\n            const maint = fs.readFileSync(process.env.GITHUB_WORKSPACE + '/oi-pr.maint').toString().trimEnd();\n            if (maint.length > 0) {\n              body += \"\\n\\nRelevant Maintainers:\\n\\n\" + maint;\n            }\n            fs.writeFileSync(process.env.GITHUB_STEP_SUMMARY, body);\n\n            // https://docs.github.com/en/graphql/reference/mutations#minimizecomment\n            const minimizeql = `\n              mutation($comment: ID!) {\n                minimizeComment(input: { classifier: OUTDATED, clientMutationId: \"doi-munge-pr\", subjectId: $comment }) {\n                  clientMutationId\n                  minimizedComment {\n                    isMinimized\n                    minimizedReason\n                  }\n                }\n              }\n            `;\n            // https://docs.github.com/en/graphql/reference/mutations#unminimizecomment\n            const unminimizeql = `\n              mutation($comment: ID!) {\n                unminimizeComment(input: { clientMutationId: \"doi-munge-pr\", subjectId: $comment }) {\n                  clientMutationId\n                  unminimizedComment {\n                    isMinimized\n                    minimizedReason\n                  }\n                }\n              }\n            `;\n\n            needNewComment = true;\n            console.log('Reviewing existing comments...');\n            for await (const { data: comments } of github.paginate.iterator(\n              github.rest.issues.listComments,\n              {\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                issue_number: context.payload.pull_request.number,\n              }\n            )) {\n              for (const comment of comments) {\n                if (comment.user.login === 'github-actions[bot]') {\n                  if (needNewComment && comment.body.includes(commentText)) {\n                    needNewComment = false;\n                    console.log('Unhiding comment: ' + comment.id + ' (' + comment.node_id + ')');\n                    const result = await github.graphql(unminimizeql, { comment: comment.node_id });\n                    console.log('- result: ' + JSON.stringify(result));\n                  } else {\n                    console.log('Hiding comment: ' + comment.id + ' (' + comment.node_id + ')');\n                    const result = await github.graphql(minimizeql, { comment: comment.node_id });\n                    console.log('- result: ' + JSON.stringify(result));\n                  }\n                }\n              }\n            }\n            if (needNewComment) {\n              console.log('Creating new comment...');\n              await github.rest.issues.createComment({\n                owner: context.repo.owner,\n                repo: context.repo.repo,\n                issue_number: context.payload.pull_request.number,\n                body: body,\n              });\n            }\n"
  },
  {
    "path": ".github/workflows/naughty.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nif [ \"$#\" -eq 0 ]; then\n\tgit fetch --quiet https://github.com/docker-library/official-images.git master\n\tchanges=\"$(git diff --no-renames --name-only --diff-filter='d' FETCH_HEAD...HEAD -- library/)\"\n\trepos=\"$(xargs -rn1 basename <<<\"$changes\")\"\n\tset -- $repos\nfi\n\nif [ \"$#\" -eq 0 ]; then\n\techo >&2 'No library/ changes detected, skipping.'\n\texit\nfi\n\nexport BASHBREW_LIBRARY=\"$PWD/library\"\n\nbashbrew from --uniq \"$@\" > /dev/null\n\nnumNaughty=0\n\nif badTags=\"$(bashbrew list \"$@\" | grep -E ':.+latest.*|:.*latest.+')\" && [ -n \"$badTags\" ]; then\n\techo >&2\n\techo >&2 \"Incorrectly formatted 'latest' tags detected:\"\n\techo >&2 ' ' $badTags\n\techo >&2\n\techo >&2 'Read https://github.com/docker-library/official-images#tags-and-aliases for more details.'\n\techo >&2\n\t(( ++numNaughty ))\nfi\n\nnaughtySharedTags=\"$(./naughty-sharedtags.sh \"$@\")\"\nif [ -n \"$naughtySharedTags\" ]; then\n\techo >&2\n\techo >&2 \"Invalid 'SharedTags' combinations detected:\"\n\techo >&2\n\techo >&2 \"$naughtySharedTags\"\n\techo >&2\n\techo >&2 'Read https://github.com/docker-library/faq#whats-the-difference-between-shared-and-simple-tags for more details.'\n\techo >&2\n\t(( ++numNaughty ))\nfi\n\nnaughtyFrom=\"$(./naughty-from.sh \"$@\")\"\nif [ -n \"$naughtyFrom\" ]; then\n\techo >&2\n\techo >&2 \"Invalid 'FROM' + 'Architectures' combinations detected:\"\n\techo >&2\n\techo >&2 \"$naughtyFrom\"\n\techo >&2\n\techo >&2 'Read https://github.com/docker-library/official-images#multiple-architectures for more details.'\n\techo >&2\n\t(( ++numNaughty ))\nfi\n\nnaughtyConstraints=\"$(./naughty-constraints.sh \"$@\")\"\nif [ -n \"$naughtyConstraints\" ]; then\n\techo >&2\n\techo >&2 \"Invalid 'FROM' + 'Constraints' combinations detected:\"\n\techo >&2\n\techo >&2 \"$naughtyConstraints\"\n\techo >&2\n\t(( ++numNaughty ))\nfi\n\nnaughtyCommits=\"$(./naughty-commits.sh \"$@\")\"\nif [ -n \"$naughtyCommits\" ]; then\n\techo >&2\n\techo >&2 \"Unpleasant commits detected:\"\n\techo >&2\n\techo >&2 \"$naughtyCommits\"\n\techo >&2\n\t(( ++numNaughty ))\nfi\n\nexit \"$numNaughty\"\n"
  },
  {
    "path": ".github/workflows/test-pr.yml",
    "content": "name: Test PR\n\non:\n  pull_request:\n\ndefaults:\n  run:\n    shell: 'bash -Eeuo pipefail -x {0}'\n\nenv:\n  # https://github.com/docker-library/bashbrew/issues/10\n  GIT_LFS_SKIP_SMUDGE: 1\n  \n# cancel existing runs if user makes another push\nconcurrency:\n  group: ${{ github.workflow }}-${{ github.ref }}\n  cancel-in-progress: ${{ github.event_name == 'pull_request' }}\n\npermissions:\n  contents: read\n\njobs:\n\n  naughty:\n    name: Naughty\n    runs-on: ubuntu-latest\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n      - uses: ./.github/workflows/.bashbrew\n      - name: Check for Common Issues\n        run: .github/workflows/naughty.sh\n\n  generate-jobs:\n    name: Generate Jobs\n    runs-on: ubuntu-latest\n    outputs:\n      strategy: ${{ steps.generate-jobs.outputs.strategy }}\n      length: ${{ steps.generate-jobs.outputs.length }}\n    steps:\n      - uses: actions/checkout@v4\n        with:\n          fetch-depth: 0\n      - uses: ./.github/workflows/.bashbrew\n      - id: generate-jobs\n        name: Generate Jobs\n        run: |\n          strategy=\"$(.github/workflows/generate.sh)\"\n          echo \"strategy=$strategy\" >> \"$GITHUB_OUTPUT\"\n          jq . <<<\"$strategy\" # sanity check / debugging aid\n          length=\"$(jq <<<\"$strategy\" -r '.matrix.include | length')\"\n          echo \"length=$length\" >> \"$GITHUB_OUTPUT\"\n\n  test:\n    needs: generate-jobs\n    strategy: ${{ fromJSON(needs.generate-jobs.outputs.strategy) }}\n    if: needs.generate-jobs.outputs.length > 0\n    name: ${{ matrix.name }}\n    runs-on: ${{ matrix.os }}\n    steps:\n      - name: Prepare Git\n        run: |\n          # enable symlinks on Windows (https://git-scm.com/docs/git-config#Documentation/git-config.txt-coresymlinks)\n          git config --global core.symlinks true\n          # also, make sure Windows symlinks are *real* symlinks (https://github.com/git-for-windows/git/pull/156)\n          echo 'MSYS=winsymlinks:nativestrict' >> \"$GITHUB_ENV\"\n          # https://github.com/docker-library/bashbrew/blob/a40a54d4d81b9fd2e39b4d7ba3fe203e8b022a67/scripts/github-actions/generate.sh#L146-L149\n        if: runner.os == 'Windows'\n      - uses: actions/checkout@v4\n      - uses: ./.github/workflows/.bashbrew\n      - name: Prepare Environment\n        run: ${{ matrix.runs.prepare }}\n      - name: Pull Dependencies\n        run: ${{ matrix.runs.pull }}\n      - name: Build ${{ matrix.name }}\n        run: ${{ matrix.runs.build }}\n      - name: History ${{ matrix.name }}\n        run: ${{ matrix.runs.history }}\n      - name: Test ${{ matrix.name }}\n        run: ${{ matrix.runs.test }}\n      - name: '\"docker images\"'\n        run: ${{ matrix.runs.images }}\n"
  },
  {
    "path": ".gitignore",
    "content": ".git\n"
  },
  {
    "path": "CODE-OF-CONDUCT.md",
    "content": "# Contributor Covenant Code of Conduct\n\n## Our Pledge\n\nWe 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.\n\nWe pledge to act and interact in ways that contribute to an open, welcoming, diverse, inclusive, and healthy community.\n\n## Our Standards\n\nExamples of behavior that contributes to a positive environment for our community include:\n\n-\tDemonstrating empathy and kindness toward other people\n-\tBeing respectful of differing opinions, viewpoints, and experiences\n-\tGiving and gracefully accepting constructive feedback\n-\tAccepting responsibility and apologizing to those affected by our mistakes, and learning from the experience\n-\tFocusing on what is best not just for us as individuals, but for the overall community\n\nExamples of unacceptable behavior include:\n\n-\tThe use of sexualized language or imagery, and sexual attention or advances of any kind\n-\tTrolling, insulting or derogatory comments, and personal or political attacks\n-\tPublic or private harassment\n-\tPublishing others' private information, such as a physical or email address, without their explicit permission\n-\tOther conduct which could reasonably be considered inappropriate in a professional setting\n\n## Enforcement Responsibilities\n\nCommunity 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.\n\nCommunity 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.\n\n## Scope\n\nThis 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.\n\n## Enforcement\n\nInstances 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.\n\nAll community leaders are obligated to respect the privacy and security of the reporter of any incident.\n\n## Attribution\n\nThis 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.\n\nCommunity Impact Guidelines were inspired by [Mozilla's code of conduct enforcement ladder](https://github.com/mozilla/diversity).\n\nFor 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.\n"
  },
  {
    "path": "Dockerfile",
    "content": "# FYI, this base image is built via \".github/workflows/.bashbrew/action.yml\" (from https://github.com/docker-library/bashbrew/tree/master/Dockerfile)\nFROM oisupport/bashbrew:base\n\nRUN set -eux; \\\n\tapt-get update; \\\n\tapt-get install -y --no-install-recommends \\\n# wget for downloading files (especially in tests, which run in this environment)\n\t\tca-certificates \\\n\t\twget \\\n# git for cloning source code\n\t\tgit \\\n# gawk for diff-pr.sh\n\t\tgawk \\\n# tar -tf in diff-pr.sh\n\t\tbzip2 \\\n# jq for diff-pr.sh\n\t\tjq \\\n\t; \\\n\trm -rf /var/lib/apt/lists/*\n\nENV DIR /usr/src/official-images\nENV BASHBREW_LIBRARY $DIR/library\n\n# crane for diff-pr.sh\n# https://gcr.io/go-containerregistry/crane:latest\n# https://explore.ggcr.dev/?image=gcr.io/go-containerregistry/crane:latest\nCOPY --from=gcr.io/go-containerregistry/crane@sha256:fc86bcad43a000c2a1ca926a1e167db26c053cebc3fa5d14285c72773fb8c11d /ko-app/crane /usr/local/bin/\n\nWORKDIR $DIR\nCOPY . $DIR\n"
  },
  {
    "path": "LICENSE",
    "content": "\n                                 Apache License\n                           Version 2.0, January 2004\n                        http://www.apache.org/licenses/\n\n   TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION\n\n   1. Definitions.\n\n      \"License\" shall mean the terms and conditions for use, reproduction,\n      and distribution as defined by Sections 1 through 9 of this document.\n\n      \"Licensor\" shall mean the copyright owner or entity authorized by\n      the copyright owner that is granting the License.\n\n      \"Legal Entity\" shall mean the union of the acting entity and all\n      other entities that control, are controlled by, or are under common\n      control with that entity. For the purposes of this definition,\n      \"control\" means (i) the power, direct or indirect, to cause the\n      direction or management of such entity, whether by contract or\n      otherwise, or (ii) ownership of fifty percent (50%) or more of the\n      outstanding shares, or (iii) beneficial ownership of such entity.\n\n      \"You\" (or \"Your\") shall mean an individual or Legal Entity\n      exercising permissions granted by this License.\n\n      \"Source\" form shall mean the preferred form for making modifications,\n      including but not limited to software source code, documentation\n      source, and configuration files.\n\n      \"Object\" form shall mean any form resulting from mechanical\n      transformation or translation of a Source form, including but\n      not limited to compiled object code, generated documentation,\n      and conversions to other media types.\n\n      \"Work\" shall mean the work of authorship, whether in Source or\n      Object form, made available under the License, as indicated by a\n      copyright notice that is included in or attached to the work\n      (an example is provided in the Appendix below).\n\n      \"Derivative Works\" shall mean any work, whether in Source or Object\n      form, that is based on (or derived from) the Work and for which the\n      editorial revisions, annotations, elaborations, or other modifications\n      represent, as a whole, an original work of authorship. For the purposes\n      of this License, Derivative Works shall not include works that remain\n      separable from, or merely link (or bind by name) to the interfaces of,\n      the Work and Derivative Works thereof.\n\n      \"Contribution\" shall mean any work of authorship, including\n      the original version of the Work and any modifications or additions\n      to that Work or Derivative Works thereof, that is intentionally\n      submitted to Licensor for inclusion in the Work by the copyright owner\n      or by an individual or Legal Entity authorized to submit on behalf of\n      the copyright owner. For the purposes of this definition, \"submitted\"\n      means any form of electronic, verbal, or written communication sent\n      to the Licensor or its representatives, including but not limited to\n      communication on electronic mailing lists, source code control systems,\n      and issue tracking systems that are managed by, or on behalf of, the\n      Licensor for the purpose of discussing and improving the Work, but\n      excluding communication that is conspicuously marked or otherwise\n      designated in writing by the copyright owner as \"Not a Contribution.\"\n\n      \"Contributor\" shall mean Licensor and any individual or Legal Entity\n      on behalf of whom a Contribution has been received by Licensor and\n      subsequently incorporated within the Work.\n\n   2. Grant of Copyright License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      copyright license to reproduce, prepare Derivative Works of,\n      publicly display, publicly perform, sublicense, and distribute the\n      Work and such Derivative Works in Source or Object form.\n\n   3. Grant of Patent License. Subject to the terms and conditions of\n      this License, each Contributor hereby grants to You a perpetual,\n      worldwide, non-exclusive, no-charge, royalty-free, irrevocable\n      (except as stated in this section) patent license to make, have made,\n      use, offer to sell, sell, import, and otherwise transfer the Work,\n      where such license applies only to those patent claims licensable\n      by such Contributor that are necessarily infringed by their\n      Contribution(s) alone or by combination of their Contribution(s)\n      with the Work to which such Contribution(s) was submitted. If You\n      institute patent litigation against any entity (including a\n      cross-claim or counterclaim in a lawsuit) alleging that the Work\n      or a Contribution incorporated within the Work constitutes direct\n      or contributory patent infringement, then any patent licenses\n      granted to You under this License for that Work shall terminate\n      as of the date such litigation is filed.\n\n   4. Redistribution. You may reproduce and distribute copies of the\n      Work or Derivative Works thereof in any medium, with or without\n      modifications, and in Source or Object form, provided that You\n      meet the following conditions:\n\n      (a) You must give any other recipients of the Work or\n          Derivative Works a copy of this License; and\n\n      (b) You must cause any modified files to carry prominent notices\n          stating that You changed the files; and\n\n      (c) You must retain, in the Source form of any Derivative Works\n          that You distribute, all copyright, patent, trademark, and\n          attribution notices from the Source form of the Work,\n          excluding those notices that do not pertain to any part of\n          the Derivative Works; and\n\n      (d) If the Work includes a \"NOTICE\" text file as part of its\n          distribution, then any Derivative Works that You distribute must\n          include a readable copy of the attribution notices contained\n          within such NOTICE file, excluding those notices that do not\n          pertain to any part of the Derivative Works, in at least one\n          of the following places: within a NOTICE text file distributed\n          as part of the Derivative Works; within the Source form or\n          documentation, if provided along with the Derivative Works; or,\n          within a display generated by the Derivative Works, if and\n          wherever such third-party notices normally appear. The contents\n          of the NOTICE file are for informational purposes only and\n          do not modify the License. You may add Your own attribution\n          notices within Derivative Works that You distribute, alongside\n          or as an addendum to the NOTICE text from the Work, provided\n          that such additional attribution notices cannot be construed\n          as modifying the License.\n\n      You may add Your own copyright statement to Your modifications and\n      may provide additional or different license terms and conditions\n      for use, reproduction, or distribution of Your modifications, or\n      for any such Derivative Works as a whole, provided Your use,\n      reproduction, and distribution of the Work otherwise complies with\n      the conditions stated in this License.\n\n   5. Submission of Contributions. Unless You explicitly state otherwise,\n      any Contribution intentionally submitted for inclusion in the Work\n      by You to the Licensor shall be under the terms and conditions of\n      this License, without any additional terms or conditions.\n      Notwithstanding the above, nothing herein shall supersede or modify\n      the terms of any separate license agreement you may have executed\n      with Licensor regarding such Contributions.\n\n   6. Trademarks. This License does not grant permission to use the trade\n      names, trademarks, service marks, or product names of the Licensor,\n      except as required for reasonable and customary use in describing the\n      origin of the Work and reproducing the content of the NOTICE file.\n\n   7. Disclaimer of Warranty. Unless required by applicable law or\n      agreed to in writing, Licensor provides the Work (and each\n      Contributor provides its Contributions) on an \"AS IS\" BASIS,\n      WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or\n      implied, including, without limitation, any warranties or conditions\n      of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A\n      PARTICULAR PURPOSE. You are solely responsible for determining the\n      appropriateness of using or redistributing the Work and assume any\n      risks associated with Your exercise of permissions under this License.\n\n   8. Limitation of Liability. In no event and under no legal theory,\n      whether in tort (including negligence), contract, or otherwise,\n      unless required by applicable law (such as deliberate and grossly\n      negligent acts) or agreed to in writing, shall any Contributor be\n      liable to You for damages, including any direct, indirect, special,\n      incidental, or consequential damages of any character arising as a\n      result of this License or out of the use or inability to use the\n      Work (including but not limited to damages for loss of goodwill,\n      work stoppage, computer failure or malfunction, or any and all\n      other commercial damages or losses), even if such Contributor\n      has been advised of the possibility of such damages.\n\n   9. Accepting Warranty or Additional Liability. While redistributing\n      the Work or Derivative Works thereof, You may choose to offer,\n      and charge a fee for, acceptance of support, warranty, indemnity,\n      or other liability obligations and/or rights consistent with this\n      License. However, in accepting such obligations, You may act only\n      on Your own behalf and on Your sole responsibility, not on behalf\n      of any other Contributor, and only if You agree to indemnify,\n      defend, and hold each Contributor harmless for any liability\n      incurred by, or claims asserted against, such Contributor by reason\n      of your accepting any such warranty or additional liability.\n\n   END OF TERMS AND CONDITIONS\n\n   Copyright 2014 Docker, Inc.\n\n   Licensed under the Apache License, Version 2.0 (the \"License\");\n   you may not use this file except in compliance with the License.\n   You may obtain a copy of the License at\n\n       http://www.apache.org/licenses/LICENSE-2.0\n\n   Unless required by applicable law or agreed to in writing, software\n   distributed under the License is distributed on an \"AS IS\" BASIS,\n   WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\n   See the License for the specific language governing permissions and\n   limitations under the License.\n"
  },
  {
    "path": "MAINTAINERS",
    "content": "# This file lists the maintainers of the Official Images program at large, not necessarily the maintainers of any given image.\n\nTianon Gravi <admwiggin@gmail.com> (@tianon)\nJoseph Ferguson <yosifkit@gmail.com> (@yosifkit)\n\n# Emeritus: Talon Bowler <nolat301@gmail.com> (@daghack)\n# Emeritus: Peter Salvatore <peter@psftw.com> (@psftw)\n\n# 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).\n"
  },
  {
    "path": "NEW-IMAGE-CHECKLIST.md",
    "content": "# Checklist for Review\n\n**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:)\n\n-\t[ ] associated with or contacted upstream?\n-\t[ ] available under [an OSI-approved license](https://opensource.org/licenses)?\n-\t[ ] does it fit into one of the common categories? (\"service\", \"language stack\", \"base distribution\")\n-\t[ ] is it reasonably popular, or does it solve a particular use case well?\n-\t[ ] 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)\n-\t[ ] 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))?\n-\t[ ] 2+ official-images maintainer dockerization review?\n-\t[ ] 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?)\n-\t[ ] if `FROM scratch`, tarballs only exist in a single commit within the associated history?\n-\t[ ] 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)?\n"
  },
  {
    "path": "README.md",
    "content": "# Docker Official Images\n\n## Table of Contents\n\n<!-- AUTOGENERATED TOC -->\n\n1.\t[Docker Official Images](#docker-official-images)\n\t1.\t[Table of Contents](#table-of-contents)\n\t2.\t[What are \"Official Images\"?](#what-are-official-images)\n\t3.\t[Architectures other than amd64?](#architectures-other-than-amd64)\n\t4.\t[More FAQs?](#more-faqs)\n\t5.\t[Contributing to the standard library](#contributing-to-the-standard-library)\n\t\t1.\t[Review Guidelines](#review-guidelines)\n\t\t\t1.\t[Maintainership](#maintainership)\n\t\t\t2.\t[Repeatability](#repeatability)\n\t\t\t3.\t[Consistency](#consistency)\n\t\t\t4.\t[Clarity](#clarity)\n\t\t\t5.\t[init](#init)\n\t\t\t6.\t[Cacheability](#cacheability)\n\t\t\t7.\t[Security](#security)\n\t\t\t\t1.\t[Image Build](#image-build)\n\t\t\t\t2.\t[Runtime Configuration](#runtime-configuration)\n\t\t\t\t3.\t[Security Releases](#security-releases)\n\t\t\t8.\t[Multiple Architectures](#multiple-architectures)\n\t\t2.\t[Commitment](#commitment)\n\t6.\t[Library definition files](#library-definition-files)\n\t\t1.\t[Filenames](#filenames)\n\t\t2.\t[Tags and aliases](#tags-and-aliases)\n\t\t3.\t[Instruction format](#instruction-format)\n\t\t4.\t[Creating a new repository](#creating-a-new-repository)\n\t\t5.\t[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)\n\t\t6.\t[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)\n\t7.\t[Bashbrew](#bashbrew)\n\n<!-- AUTOGENERATED TOC -->\n\n## What are \"Official Images\"?\n\nThe Docker Official Images are curated images [hosted on Docker Hub](https://hub.docker.com/u/library). The main tenets are:\n\n- Focus on [Free](https://www.debian.org/social_contract#guidelines) and [Open-Source](https://opensource.org/) Software\n\n- Support [multiple architectures](#architectures-other-than-amd64)\n\n- Exemplify [`Dockerfile` best practices](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/)\n\n- [Actively rebuild](#library-definition-files) for updates and security fixes\n\n- Adhere to upstream recommendations\n\n- Add minimal quality-of-life behavior for the container environment where fit\n\nSee [Docker's documentation](https://docs.docker.com/docker-hub/official_repos/) for a good high-level overview of the program.\n\nIn 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.\n\n(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!)\n\n## Architectures other than amd64?\n\nSome images have been ported for other architectures, and many of these are officially supported (to various degrees).\n\n-\tArchitectures officially supported by Docker, Inc. for running Docker: (see [download.docker.com](https://download.docker.com/linux/))\n\t-\tARMv6 32-bit (`arm32v6`): https://hub.docker.com/u/arm32v6/\n\t-\tARMv7 32-bit (`arm32v7`): https://hub.docker.com/u/arm32v7/\n\t-\tARMv8 64-bit (`arm64v8`): https://hub.docker.com/u/arm64v8/\n\t-\tLinux x86-64 (`amd64`): https://hub.docker.com/u/amd64/\n\t-\tWindows x86-64 (`windows-amd64`): https://hub.docker.com/u/winamd64/\n-\tOther architectures built by official images: (but *not* officially supported by Docker, Inc.)\n\t-\tARMv5 32-bit (`arm32v5`): https://hub.docker.com/u/arm32v5/\n\t-\tIBM POWER8 (`ppc64le`): https://hub.docker.com/u/ppc64le/\n\t-\tIBM z Systems (`s390x`): https://hub.docker.com/u/s390x/\n\t-\tMIPS64 LE (`mips64le`): https://hub.docker.com/u/mips64le/\n\t-\tRISC-V 64-bit (`riscv64`): https://hub.docker.com/u/riscv64/\n\t-\tx86/i686 (`i386`): https://hub.docker.com/u/i386/\n\nThese 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.\n\nIf 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.\n\nSee the [multi-arch section](#multiple-architectures) below for recommendations in adding more architectures to an official image.\n\n## More FAQs?\n\nYes! 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).\n\n## Contributing to the standard library\n\nThank 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.\n\nBe 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.\n\nAlso, 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.\n\n### Review Guidelines\n\nBecause 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.\n\nA checklist which may be used by the maintainers during review can be found in [`NEW-IMAGE-CHECKLIST.md`](NEW-IMAGE-CHECKLIST.md).\n\n#### Maintainership\n\nVersion bumps and security fixes should be attended to in a timely manner.\n\nIf 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.\n\nFor 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.\n\nWhen 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:\n\n-\tcreate temporary intermediary organization\n\t-\t[docker-library-transitioner](https://github.com/docker-library-transitioner) is available for this purpose if you would like our help\n-\tgive old and new owners admin access to intermediary organization\n-\told owner transfers repo ownership to intermediary organization\n-\tnew owner transfers repo ownership to its new home\n\t-\trecommend that old owner does not fork new repo back into the old organization to ensure that GitHub redirects will just work\n\n#### Repeatability\n\nRebuilding 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.\n\nNo 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)).\n\n#### Consistency\n\nAll 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.\n\n1.\tIf the startup process does not need arguments, just use `CMD`:\n\n\t```Dockerfile\n\tCMD [\"irb\"]\n\t```\n\n2.\tIf there is initialization that needs to be done on start, like creating the initial database, use an `ENTRYPOINT` along with `CMD`:\n\n\t```Dockerfile\n\tENTRYPOINT [\"/docker-entrypoint.sh\"]\n\tCMD [\"postgres\"]\n\t```\n\n\t1.\tEnsure 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).\n\n\t\t```sh\n\t\t#!/bin/sh\n\t\tset -e\n\n\t\t# this if will check if the first argument is a flag\n\t\t# but only works if all arguments require a hyphenated flag\n\t\t# -v; -SL; -f arg; etc will work, but not arg1 arg2\n\t\tif [ \"$#\" -eq 0 ] || [ \"${1#-}\" != \"$1\" ]; then\n\t\t    set -- mongod \"$@\"\n\t\tfi\n\n\t\t# check for the expected command\n\t\tif [ \"$1\" = 'mongod' ]; then\n\t\t    # init db stuff....\n\t\t    # use gosu (or su-exec) to drop to a non-root user\n\t\t    exec gosu mongod \"$@\"\n\t\tfi\n\n\t\t# else default to run whatever the user wanted like \"bash\" or \"sh\"\n\t\texec \"$@\"\n\t\t```\n\n3.\tIf 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:\n\n\t```Dockerfile\n\tENTRYPOINT [\"fully-static-binary\"]\n\tCMD [\"--help\"]\n\t```\n\n\tThe most common indicator of whether this is appropriate is that the image `Dockerfile` starts with [`scratch`](https://registry.hub.docker.com/_/scratch/) (`FROM scratch`).\n\n#### Clarity\n\nTry 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.\n\nSome examples at the time of writing:\n\n-\t[php](https://github.com/docker-library/php/blob/b4aeb948e2e240c732d78890ff03285b16e8edda/5.6/Dockerfile)\n-\t[python](https://github.com/docker-library/python/blob/3e5826ad0c6e29f07f6dc7ff8f30b4c54385d1bb/3.4/Dockerfile)\n-\t[ruby:2.2](https://github.com/docker-library/ruby/blob/e34b201a0f0b49818fc8373f6a9148e13d546bdf/2.2/Dockerfile)\n\n#### init\n\nFollowing 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.\n\nBe sure to use tini in `CMD` or `ENTRYPOINT` as appropriate.\n\nIt 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:\n\n```Dockerfile\n# Install tini for signal processing and zombie killing\nENV TINI_VERSION v0.18.0\nENV TINI_SIGN_KEY 595E85A6B1B4779EA4DAAEC70B588DFF0527A9B7\nRUN set -eux; \\\n  wget -O /usr/local/bin/tini \"https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini\"; \\\n  wget -O /usr/local/bin/tini.asc \"https://github.com/krallin/tini/releases/download/${TINI_VERSION}/tini.asc\"; \\\n  export GNUPGHOME=\"$(mktemp -d)\"; \\\n  gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$TINI_SIGN_KEY\"; \\\n  gpg --batch --verify /usr/local/bin/tini.asc /usr/local/bin/tini; \\\n  command -v gpgconf && gpgconf --kill all || :; \\\n  rm -r \"$GNUPGHOME\" /usr/local/bin/tini.asc; \\\n  chmod +x /usr/local/bin/tini; \\\n  tini --version\n```\n\n#### Cacheability\n\nThis is one place that experience ends up trumping documentation for the path to enlightenment, but the following tips might help:\n\n-\tAvoid `COPY`/`ADD` whenever possible, but when necessary, be as specific as possible (ie, `COPY one-file.sh /somewhere/` instead of `COPY . /somewhere`).\n\n\tThe 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).\n\n-\tEnsure 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).\n\n\tFor 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`).\n\n#### Security\n\n##### Image Build\n\nThe `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.\n\nThe 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.\n\nThe 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).\n\nThe 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.\n\nBelow are some examples:\n\n-\t**Preferred**: *download over https, PGP key full fingerprint import and `asc` verification, embedded checksum verified.*\n\n\t```Dockerfile\n\tENV PYTHON_DOWNLOAD_SHA512 (sha512-value-here)\n\tRUN set -eux; \\\n\t    curl -fL \"https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz\" -o python.tar.xz; \\\n\t    curl -fL \"https://www.python.org/ftp/python/$PYTHON_VERSION/Python-$PYTHON_VERSION.tar.xz.asc\" -o python.tar.xz.asc; \\\n\t    export GNUPGHOME=\"$(mktemp -d)\"; \\\n\t# gpg: key F73C700D: public key \"Larry Hastings <larry@hastings.org>\" imported\n\t    gpg --batch --keyserver keyserver.ubuntu.com --recv-keys 97FC712E4C024BBEA48A61ED3A5CA953F73C700D; \\\n\t    gpg --batch --verify python.tar.xz.asc python.tar.xz; \\\n\t    rm -r \"$GNUPGHOME\" python.tar.xz.asc; \\\n\t    echo \"$PYTHON_DOWNLOAD_SHA512 *python.tar.xz\" | sha512sum --strict --check; \\\n\t    # install\n\t```\n\n-\t**Alternate**: *full key fingerprint imported to apt which will check signatures and checksums when packages are downloaded and installed.*\n\n\t```Dockerfile\n\tRUN set -eux; \\\n\t    key='A4A9406876FCBD3C456770C88C718D3B5072E1F5'; \\\n\t    export GNUPGHOME=\"$(mktemp -d)\"; \\\n\t    gpg --batch --keyserver keyserver.ubuntu.com --recv-keys \"$key\"; \\\n\t    gpg --batch --armor --export \"$key\" > /etc/apt/keyrings/mysql.asc; \\\n\t    gpgconf --kill all; \\\n\t    rm -rf \"$GNUPGHOME\"; \\\n\t    apt-key list > /dev/null\n\n\tRUN set -eux; \\\n\t    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; \\\n\t    apt-get update; \\\n\t    apt-get install -y mysql-community-client=\"${MYSQL_VERSION}\" mysql-community-server-core=\"${MYSQL_VERSION}\"; \\\n\t    rm -rf /var/lib/apt/lists/*; \\\n\t    # ...\n\t```\n\n\t(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).)\n\n-\t**Less Secure Alternate**: *embed the checksum into the `Dockerfile`.*\n\n\t```Dockerfile\n\tENV RUBY_DOWNLOAD_SHA256 (sha256-value-here)\n\tRUN set -eux; \\\n\t    curl -fL -o ruby.tar.gz \"https://cache.ruby-lang.org/pub/ruby/$RUBY_MAJOR/ruby-$RUBY_VERSION.tar.gz\"; \\\n\t    echo \"$RUBY_DOWNLOAD_SHA256 *ruby.tar.gz\" | sha256sum --strict --check; \\\n\t    # install\n\t```\n\n\t-\t**Note:** the use of either SHA1 or MD5 should be considered a \"checksum of last resort\" as both are considered generally unsafe:\n\n\t\t-\t[\"Single-block collision for MD5\" from 2012](https://marc-stevens.nl/research/md5-1block-collision/)\n\t\t-\t[\"Announcing the first SHA1 collision\" from 2017](https://security.googleblog.com/2017/02/announcing-first-sha1-collision.html)\n\n-\t**Unacceptable**: *download the file over http(s) with no verification.*\n\n\t```Dockerfile\n\tRUN curl -fL \"https://julialang.s3.amazonaws.com/bin/linux/x64/${JULIA_VERSION%[.-]*}/julia-${JULIA_VERSION}-linux-x86_64.tar.gz\" | tar ... \\\n\t    # install\n\t```\n\n##### Runtime Configuration\n\nBy 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.\n\nOfficial 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).\n\n##### Security Releases\n\nFor 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:\n\n1.\t[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).\n2.\tInclude `[security]` in the title of your pull request (for example, `[security] Update FooBar to 1.2.5, 1.3.7, 2.0.1`).\n3.\tKeep 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.\n4.\tBe 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).\n\n#### Multiple Architectures\n\nEach 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):\n\n-\t`amd64`\n-\t`arm32v6`\n-\t`arm32v7`\n-\t`arm64v8`\n-\t`i386`\n-\t`mips64le`\n-\t`ppc64le`\n-\t`riscv64`\n-\t`s390x`\n-\t`windows-amd64`\n\nThe `Architectures` of any given tag must be a strict subset of the `Architectures` of the tag it is `FROM`.\n\nImages 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.\n\nIf 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.\n\nFor 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):\n\n```\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/hello-world.git\nGitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\n\nTags: latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, s390x\n# all the same commit; easy for us to generate this way since they could be different\namd64-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\namd64-Directory: amd64/hello-world\narm32v5-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\narm32v5-Directory: arm32v5/hello-world\narm32v7-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\narm32v7-Directory: arm32v7/hello-world\narm64v8-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\narm64v8-Directory: arm64v8/hello-world\nppc64le-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\nppc64le-Directory: ppc64le/hello-world\ns390x-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\ns390x-Directory: s390x/hello-world\n\nTags: nanoserver\nArchitectures: windows-amd64\n# if there is only one architecture, you can use the unprefixed fields\nDirectory: amd64/hello-world/nanoserver\n# or use the prefixed versions\nwindows-amd64-GitCommit: 7d0ee592e4ed60e2da9d59331e16ecdcadc1ed87\nConstraints: nanoserver\n```\n\nSee the [instruction format section](#instruction-format) for more information on the format of the library file.\n\n### Commitment\n\nProposing 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).\n\n## Library definition files\n\nThe 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.\n\nGiven 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.\n\nIt 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).\n\n### Filenames\n\nThe 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.\n\n### Tags and aliases\n\nThe 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`.\n\nIt 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).\n\nAs 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).\n\n### Instruction format\n\nThe 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.\n\nThe 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.\n\nThe 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.\n\n\t# this is a comment and will be ignored\n\tMaintainers: John Smith <jsmith@example.com> (@example-jsmith),\n\t             Anne Smith <asmith@example.com> (@example-asmith)\n\tGitRepo: https://github.com/example/docker-example.git\n\tGitCommit: deadbeefdeadbeefdeadbeefdeadbeefdeadbeef\n\t\n\t# this is also a comment, and will also be ignored\n\t\n\tTags: 1.2.3, 1.2, 1, latest\n\tDirectory: 1\n\t\n\tTags: 2.0-rc1, 2.0-rc, 2-rc, rc\n\tGitRepo: https://github.com/example/docker-example-rc.git\n\tGitFetch: refs/heads/2.0-pre-release\n\tGitCommit: beefdeadbeefdeadbeefdeadbeefdeadbeefdead\n\tDirectory: 2\n\tFile: Dockerfile-to-use\n\nBashbrew 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.\n\nThe 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`).\n\nOptionally, 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.\n\nSee the [multi-arch section](#multiple-architectures) for details on how to specify a different `GitRepo`, `GitFetch`, `GitCommit`, or `Directory` for a specific architecture.\n\n### Creating a new repository\n\n-\tCreate a new file in the `library/` folder. Its name will be the name of your repository on the Hub.\n-\tAdd your tag definitions using the appropriate syntax (see above).\n-\tCreate 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.\n\n### Adding a new tag in an existing repository (that you're the maintainer of)\n\n-\tAdd your tag definition using the instruction format documented above.\n-\tCreate a pull request from your Git repository to this one. Please be sure to add details about what's new, if possible.\n\n### Change to a tag in an existing repository (that you're the maintainer of)\n\n-\tUpdate the relevant tag definition using the instruction format documented above.\n-\tCreate a pull request from your Git repository to this one. Please be sure to add details about what's changed, if possible.\n\n## Bashbrew\n\nBashbrew (`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.\n"
  },
  {
    "path": "SECURITY.md",
    "content": "# 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 \"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).\n\nIf 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\").\n\nWhen 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.\n\nFor 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).\n\nImage 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.\n"
  },
  {
    "path": "_bashbrew-cat-sorted.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# a mimic of \"bashbrew cat\" which should sort slightly more deterministically (so even full-order-changing PRs should have reasonable diffs)\n\nimages=\"$(\n\tbashbrew list --repos --uniq \"$@\" \\\n\t\t| sort -uV\n)\"\nset -- $images\n\ndeclare -A seenGlobal=()\n\nfirst=1\nfor img; do\n\tif [ -n \"$first\" ]; then\n\t\tfirst=\n\telse\n\t\techo; echo\n\tfi\n\n\tif [ \"$#\" -gt 1 ]; then\n\t\techo \"# $img\"\n\tfi\n\n\trepo=\"${img%:*}\"\n\tif [ -z \"${seenGlobal[\"$repo\"]:-}\" ]; then\n\t\tbashbrew cat --format '{{ printf \"%s\\n\" (.Manifest.Global.ClearDefaults defaults) }}' \"$img\"\n\t\tseenGlobal[\"$repo\"]=\"$img\"\n\telse\n\t\techo \"# (see also ${seenGlobal[\"$repo\"]} above)\"\n\tfi\n\n\tbashbrew list --uniq \"$img\" \\\n\t\t| sort -V \\\n\t\t| xargs -r bashbrew cat --format '\n\t\t\t{{- range $e := .TagEntries -}}\n\t\t\t\t{{- printf \"\\n%s\\n\" ($e.ClearDefaults $.Manifest.Global) -}}\n\t\t\t{{- end -}}\n\t\t'\ndone\n"
  },
  {
    "path": "diff-pr.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\nshopt -s dotglob\n\n# make sure we can GTFO\ntrap 'echo >&2 Ctrl+C captured, exiting; exit 1' SIGINT\n\n# if bashbrew is missing, bail early with a sane error\nbashbrew --version > /dev/null\n\nusage() {\n\tcat <<-EOUSAGE\n\t\tusage: $0 [PR number] [repo[:tag]]\n\t\t   ie: $0 1024\n\t\t       $0 9001 debian php django\n\tEOUSAGE\n}\n\n# TODO flags parsing\nallFiles=\nlistTarballContents=1\nfindCopies='20%'\n\nuninterestingTarballContent=(\n\t# \"config_diff_2017_01_07.log\"\n\t'var/log/YaST2/'\n\n\t# \"ks-script-mqmz_080.log\"\n\t# \"ks-script-ycfq606i.log\"\n\t'var/log/anaconda/'\n\n\t# \"2016-12-20/\"\n\t'var/lib/yum/history/'\n\t'var/lib/dnf/history/'\n\n\t# \"a/f8c032d2be757e1a70f00336b55c434219fee230-acl-2.2.51-12.el7-x86_64/var_uuid\"\n\t'var/lib/yum/yumdb/'\n\t'var/lib/dnf/yumdb/'\n\n\t# \"b42ff584.0\"\n\t'etc/pki/tls/rootcerts/'\n\n\t# \"09/401f736622f2c9258d14388ebd47900bbab126\"\n\t'usr/lib/.build-id/'\n)\n\n# prints \"$2$1$3$1...$N\"\njoin() {\n\tlocal sep=\"$1\"; shift\n\tlocal out; printf -v out \"${sep//%/%%}%s\" \"$@\"\n\techo \"${out#$sep}\"\n}\n\nuninterestingTarballGrep=\"^([.]?/)?($(join '|' \"${uninterestingTarballContent[@]}\"))\"\n\nif [ \"$#\" -eq 0 ]; then\n\tusage >&2\n\texit 1\nfi\npull=\"$1\" # PR number\nshift\n\ndiffDir=\"$(readlink -f \"$BASH_SOURCE\")\"\ndiffDir=\"$(dirname \"$diffDir\")\"\n\ntempDir=\"$(mktemp -d)\"\ntrap \"rm -rf '$tempDir'\" EXIT\ncd \"$tempDir\"\n\ngit clone --quiet \\\n\thttps://github.com/docker-library/official-images.git \\\n\toi\n\nif [ \"$pull\" != '0' ]; then\n\tgit -C oi fetch --quiet \\\n\t\torigin \"pull/$pull/merge\":refs/heads/pull\nelse\n\tgit -C oi fetch --quiet --update-shallow \\\n\t\t\"$diffDir\" HEAD:refs/heads/pull\nfi\n\nexternalPins=\nif [ \"$#\" -eq 0 ]; then\n\texternalPins=\"$(git -C oi/.external-pins diff --no-renames --name-only HEAD...pull -- '*/**')\"\n\n\timages=\"$(git -C oi/library diff --no-renames --name-only HEAD...pull -- .)\"\n\tif [ -z \"$images\" ] && [ -z \"$externalPins\" ]; then\n\t\texit 0\n\tfi\n\timages=\"$(xargs -rn1 basename <<<\"$images\")\"\n\tset -- $images\nfi\n\nexport BASHBREW_LIBRARY=\"$PWD/oi/library\"\n\n: \"${BASHBREW_ARCH:=amd64}\" # TODO something smarter with arches\nexport BASHBREW_ARCH\n\n# TODO something less hacky than \"git archive\" hackery, like a \"bashbrew archive\" or \"bashbrew context\" or something\ntemplate='\n\ttempDir=\"$(mktemp -d)\"\n\t{{- \"\\n\" -}}\n\t{{- range $.Entries -}}\n\t\t{{- $arch := .HasArchitecture arch | ternary arch (.Architectures | first) -}}\n\t\t{{- /* cannot replace ArchDockerFroms with bashbrew fetch or the arch selector logic has to be duplicated 🥹*/ -}}\n\t\t{{- $froms := $.ArchDockerFroms $arch . -}}\n\t\t{{- $outDir := join \"_\" $.RepoName (.Tags | last) -}}\n\t\tgit -C \"{{ gitCache }}\" archive --format=tar\n\t\t{{- \" \" -}}\n\t\t{{- \"--prefix=\" -}}\n\t\t{{- $outDir -}}\n\t\t{{- \"/\" -}}\n\t\t{{- \" \" -}}\n\t\t{{- .ArchGitCommit $arch -}}\n\t\t{{- \":\" -}}\n\t\t{{- $dir := .ArchDirectory $arch -}}\n\t\t{{- (eq $dir \".\") | ternary \"\" $dir -}}\n\t\t{{- \"\\n\" -}}\n\t\tmkdir -p \"$tempDir/{{- $outDir -}}\" && echo \"{{- .ArchBuilder $arch -}}\" > \"$tempDir/{{- $outDir -}}/.bashbrew-builder\" && echo \"{{- .ArchFile $arch -}}\" > \"$tempDir/{{- $outDir -}}/.bashbrew-file\"\n\t\t{{- \"\\n\" -}}\n\t{{- end -}}\n\ttar -cC \"$tempDir\" . && rm -rf \"$tempDir\"\n'\n\n_tar-t() {\n\ttar -t \"$@\" \\\n\t\t| grep -vE \"$uninterestingTarballGrep\" \\\n\t\t| sed -e 's!^[.]/!!' \\\n\t\t\t-r \\\n\t\t\t-e 's!([/.-]|^)((lib)?(c?python|py)-?)[0-9]+([.][0-9]+)?([/.-]|$)!\\1\\2XXX\\6!g' \\\n\t\t| sort\n}\n\n_jq() {\n\tif [ \"$#\" -eq 0 ]; then\n\t\tset -- '.'\n\tfi\n\tjq --tab -S \"$@\"\n}\n\ncopy-tar() {\n\tlocal src=\"$1\"; shift\n\tlocal dst=\"$1\"; shift\n\n\tif [ -n \"$allFiles\" ]; then\n\t\tmkdir -p \"$dst\"\n\t\tcp -al \"$src\"/*/ \"$dst/\"\n\t\treturn\n\tfi\n\n\tlocal d indexes=() dockerfiles=()\n\tfor d in \"$src\"/*/.bashbrew-file; do\n\t\t[ -f \"$d\" ] || continue\n\t\tlocal bf; bf=\"$(< \"$d\")\"\n\t\tlocal dDir; dDir=\"$(dirname \"$d\")\"\n\t\tlocal builder; builder=\"$(< \"$dDir/.bashbrew-builder\")\"\n\t\tif [ \"$builder\" = 'oci-import' ]; then\n\t\t\tindexes+=( \"$dDir/$bf\" )\n\t\telse\n\t\t\tdockerfiles+=( \"$dDir/$bf\" )\n\t\t\tif [ \"$bf\" = 'Dockerfile' ]; then\n\t\t\t\t# if \"Dockerfile.builder\" exists, let's check that too (busybox, hello-world)\n\t\t\t\tif [ -f \"$dDir/$bf.builder\" ]; then\n\t\t\t\t\tdockerfiles+=( \"$dDir/$bf.builder\" )\n\t\t\t\tfi\n\t\t\tfi\n\t\tfi\n\t\trm \"$d\" \"$dDir/.bashbrew-builder\" # remove the \".bashbrew-*\" files we created\n\tdone\n\n\t# now that we're done with our globbing needs, let's disable globbing so it doesn't give us wrong answers\n\tlocal -\n\tset -o noglob\n\n\tfor i in \"${indexes[@]}\"; do\n\t\tlocal iName; iName=\"$(basename \"$i\")\"\n\t\tlocal iDir; iDir=\"$(dirname \"$i\")\"\n\t\tlocal iDirName; iDirName=\"$(basename \"$iDir\")\"\n\t\tlocal iDst=\"$dst/$iDirName\"\n\n\t\tmkdir -p \"$iDst\"\n\n\t\t_jq . \"$i\" > \"$iDst/$iName\"\n\n\t\tlocal digest\n\t\tdigest=\"$(jq -r --arg name \"$iName\" '\n\t\t\tif $name == \"index.json\" then\n\t\t\t\t.manifests[0].digest\n\t\t\telse\n\t\t\t\t.digest\n\t\t\tend\n\t\t' \"$i\")\"\n\n\t\tlocal blob=\"blobs/${digest//://}\"\n\t\tlocal blobDir; blobDir=\"$(dirname \"$blob\")\"\n\t\tlocal manifest=\"$iDir/$blob\"\n\t\tmkdir -p \"$iDst/$blobDir\"\n\t\t_jq . \"$manifest\" > \"$iDst/$blob\"\n\n\t\tlocal configDigest; configDigest=\"$(jq -r '.config.digest' \"$manifest\")\"\n\t\tlocal blob=\"blobs/${configDigest//://}\"\n\t\tlocal blobDir; blobDir=\"$(dirname \"$blob\")\"\n\t\tlocal config=\"$iDir/$blob\"\n\t\tmkdir -p \"$iDst/$blobDir\"\n\t\t_jq . \"$config\" > \"$iDst/$blob\"\n\n\t\tlocal layers\n\t\tlayers=\"$(jq -r '[ .layers[].digest | @sh ] | join(\" \")' \"$manifest\")\"\n\t\teval \"layers=( $layers )\"\n\t\tlocal layerDigest\n\t\tfor layerDigest in \"${layers[@]}\"; do\n\t\t\tlocal blob=\"blobs/${layerDigest//://}\"\n\t\t\tlocal blobDir; blobDir=\"$(dirname \"$blob\")\"\n\t\t\tlocal layer=\"$iDir/$blob\"\n\t\t\tmkdir -p \"$iDst/$blobDir\"\n\t\t\t_tar-t -f \"$layer\" > \"$iDst/$blob  'tar -t'\"\n\t\tdone\n\tdone\n\n\tfor d in \"${dockerfiles[@]}\"; do\n\t\tlocal dDir; dDir=\"$(dirname \"$d\")\"\n\t\tlocal dDirName; dDirName=\"$(basename \"$dDir\")\"\n\n\t\t# TODO choke on \"syntax\" parser directive\n\t\t# TODO handle \"escape\" parser directive reasonably\n\t\tlocal flatDockerfile; flatDockerfile=\"$(\n\t\t\tgawk '\n\t\t\t\tBEGIN { line = \"\" }\n\t\t\t\t/^[[:space:]]*#/ {\n\t\t\t\t\tgsub(/^[[:space:]]+/, \"\")\n\t\t\t\t\tprint\n\t\t\t\t\tnext\n\t\t\t\t}\n\t\t\t\t{\n\t\t\t\t\tif (match($0, /^(.*)(\\\\[[:space:]]*)$/, m)) {\n\t\t\t\t\t\tline = line m[1]\n\t\t\t\t\t\tnext\n\t\t\t\t\t}\n\t\t\t\t\tprint line $0\n\t\t\t\t\tline = \"\"\n\t\t\t\t}\n\t\t\t' \"$d\"\n\t\t)\"\n\n\t\tlocal IFS=$'\\n'\n\t\tlocal copyAddContext; copyAddContext=\"$(awk '\n\t\t\ttoupper($1) == \"COPY\" || toupper($1) == \"ADD\" {\n\t\t\t\tfor (i = 2; i < NF; i++) {\n\t\t\t\t\tif ($i ~ /^--from=/) {\n\t\t\t\t\t\tnext\n\t\t\t\t\t}\n\t\t\t\t\t# COPY and ADD options\n\t\t\t\t\tif ($i ~ /^--(chown|chmod|link|parents|exclude)=/) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\t# additional ADD options\n\t\t\t\t\tif ($i ~ /^--(keep-git-dir|checksum)=/) {\n\t\t\t\t\t\tcontinue\n\t\t\t\t\t}\n\t\t\t\t\tfor ( ; i < NF; i++) {\n\t\t\t\t\t\tprint $i\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t' <<<\"$flatDockerfile\")\"\n\t\tlocal dBase; dBase=\"$(basename \"$d\")\"\n\t\tlocal files=(\n\t\t\t\"$dBase\"\n\t\t\t$copyAddContext\n\n\t\t\t# some extra files which are likely interesting if they exist, but no big loss if they do not\n\t\t\t' .dockerignore' # will be used automatically by \"docker build\"\n\t\t\t' *.manifest' # debian/ubuntu \"package versions\" list\n\t\t\t' *.ks' # fedora \"kickstart\" (rootfs build script)\n\t\t\t' build*.txt' # ubuntu \"build-info.txt\", debian \"build-command.txt\"\n\n\t\t\t# usefulness yet to be proven:\n\t\t\t#' *.log'\n\t\t\t#' {MD5,SHA1,SHA256}SUMS'\n\t\t\t#' *.{md5,sha1,sha256}'\n\n\t\t\t# (the space prefix is removed below and is used to ignore non-matching globs so that bad \"Dockerfile\" entries appropriately lead to failure)\n\t\t)\n\t\tunset IFS\n\n\t\tmkdir -p \"$dst/$dDirName\"\n\n\t\tlocal f origF failureMatters\n\t\tfor origF in \"${files[@]}\"; do\n\t\t\tf=\"${origF# }\" # trim off leading space (indicates we don't care about failure)\n\t\t\t[ \"$f\" = \"$origF\" ] && failureMatters=1 || failureMatters=\n\n\t\t\tlocal globbed\n\t\t\t# \"find: warning: -path ./xxx/ will not match anything because it ends with /.\"\n\t\t\tlocal findGlobbedPath=\"${f%/}\"\n\t\t\tfindGlobbedPath=\"${findGlobbedPath#./}\"\n\t\t\tlocal globbedStr; globbedStr=\"$(cd \"$dDir\" && find -path \"./$findGlobbedPath\")\"\n\t\t\tlocal -a globbed=( $globbedStr )\n\t\t\tif [ \"${#globbed[@]}\" -eq 0 ]; then\n\t\t\t\tglobbed=( \"$f\" )\n\t\t\tfi\n\n\t\t\tlocal g\n\t\t\tfor g in \"${globbed[@]}\"; do\n\t\t\t\tlocal srcG=\"$dDir/$g\" dstG=\"$dst/$dDirName/$g\"\n\n\t\t\t\tif [ -z \"$failureMatters\" ] && [ ! -e \"$srcG\" ]; then\n\t\t\t\t\tcontinue\n\t\t\t\tfi\n\n\t\t\t\tlocal gDir; gDir=\"$(dirname \"$dstG\")\"\n\t\t\t\tmkdir -p \"$gDir\"\n\t\t\t\tcp -alT \"$srcG\" \"$dstG\"\n\n\t\t\t\tif [ -n \"$listTarballContents\" ]; then\n\t\t\t\t\tcase \"$g\" in\n\t\t\t\t\t\t*.tar.* | *.tgz)\n\t\t\t\t\t\t\tif [ -s \"$dstG\" ]; then\n\t\t\t\t\t\t\t\t_tar-t -f \"$dstG\" > \"$dstG  'tar -t'\"\n\t\t\t\t\t\t\tfi\n\t\t\t\t\t\t\t;;\n\t\t\t\t\tesac\n\t\t\t\tfi\n\t\t\tdone\n\t\tdone\n\tdone\n}\n\n# a \"bashbrew cat\" template that gives us the last / \"least specific\" tags for the arguments\n# (in other words, this is \"bashbrew list --uniq\" but last instead of first)\ntemplateLastTags='\n\t{{- range .TagEntries -}}\n\t\t{{- $.RepoName -}}\n\t\t{{- \":\" -}}\n\t\t{{- .Tags | last -}}\n\t\t{{- \"\\n\" -}}\n\t{{- end -}}\n'\n\n_metadata-files() {\n\tif [ \"$#\" -gt 0 ]; then\n\t\tbashbrew list \"$@\" 2>>temp/_bashbrew.err | sort -uV > temp/_bashbrew-list || :\n\n\t\tbashbrew cat --format '{{ range .Entries }}{{ range .Architectures }}{{ . }}{{ \"\\n\" }}{{ end }}{{ end }}' \"$@\" 2>>temp/_bashbrew.err | sort -u > temp/_bashbrew-arches || :\n\n\t\t\"$diffDir/_bashbrew-cat-sorted.sh\" \"$@\" 2>>temp/_bashbrew.err > temp/_bashbrew-cat || :\n\n\t\t# piping \"bashbrew list\" first so that .TagEntries is filled up (keeping \"templateLastTags\" simpler)\n\t\t# sorting that by version number so it's ~stable\n\t\t# then doing --build-order on that, which is a \"stable sort\"\n\t\t# then redoing that list back into \"templateLastTags\" so we get the tags we want listed (not the tags \"--uniq\" chooses)\n\t\tbashbrew list --uniq \"$@\" \\\n\t\t\t| xargs -r bashbrew cat --format \"$templateLastTags\" \\\n\t\t\t| sort -V \\\n\t\t\t| xargs -r bashbrew list --uniq --build-order 2>>temp/_bashbrew.err \\\n\t\t\t| xargs -r bashbrew cat --format \"$templateLastTags\" 2>>temp/_bashbrew.err \\\n\t\t\t> temp/_bashbrew-list-build-order || :\n\n\t\t# oci images can't be fetched with ArchDockerFroms\n\t\t# todo: use each first arch instead of current arch\n\t\tbashbrew fetch --arch-filter \"$@\"\n\t\tscript=\"$(bashbrew cat --format \"$template\" \"$@\")\"\n\t\tmkdir tar\n\t\t( eval \"$script\" | tar -xiC tar )\n\t\tcopy-tar tar temp\n\t\trm -rf tar\n\n\t\t# TODO we should *also* validate that our lists ended up non-empty 😬\n\t\tcat >&2 temp/_bashbrew.err\n\tfi\n\n\tif [ -n \"$externalPins\" ] && command -v crane &> /dev/null; then\n\t\tlocal file\n\t\tfor file in $externalPins; do\n\t\t\t[ -e \"oi/$file\" ] || continue\n\t\t\tlocal pin digest dir\n\t\t\tpin=\"$(\"$diffDir/.external-pins/tag.sh\" \"$file\")\"\n\t\t\tdigest=\"$(< \"oi/$file\")\"\n\t\t\tdir=\"temp/$file\"\n\t\t\tmkdir -p \"$dir\"\n\t\t\tbashbrew remote arches --json \"$pin@$digest\" | _jq > \"$dir/bashbrew.json\"\n\t\t\tlocal manifests manifest\n\t\t\tmanifests=\"$(jq -r '\n\t\t\t\t[ (\n\t\t\t\t\t.arches\n\t\t\t\t\t| if has(env.BASHBREW_ARCH) then\n\t\t\t\t\t\t.[env.BASHBREW_ARCH]\n\t\t\t\t\telse\n\t\t\t\t\t\t.[keys_unsorted | first]\n\t\t\t\t\tend\n\t\t\t\t)[].digest | @sh ]\n\t\t\t\t| join(\" \")\n\t\t\t' \"$dir/bashbrew.json\")\"\n\t\t\teval \"manifests=( $manifests )\"\n\t\t\tfor manifest in \"${manifests[@]}\"; do\n\t\t\t\tcrane manifest \"$pin@$manifest\" | _jq > \"$dir/manifest-${manifest//:/_}.json\"\n\t\t\t\tlocal config\n\t\t\t\tconfig=\"$(jq -r '.config.digest' \"$dir/manifest-${manifest//:/_}.json\")\"\n\t\t\t\tcrane blob \"$pin@$config\" | _jq > \"$dir/manifest-${manifest//:/_}-config.json\"\n\t\t\tdone\n\t\tdone\n\tfi\n}\n\nmkdir temp\ngit -C temp init --quiet\ngit -C temp config user.name 'Bogus'\ngit -C temp config user.email 'bogus@bogus'\n\n# handle \"new-image\" PRs gracefully\nfor img; do touch \"$BASHBREW_LIBRARY/$img\"; [ -s \"$BASHBREW_LIBRARY/$img\" ] || echo 'Maintainers: New Image! :D (@docker-library-bot)' > \"$BASHBREW_LIBRARY/$img\"; done\n\n_metadata-files \"$@\"\ngit -C temp add . || :\ngit -C temp commit --quiet --allow-empty -m 'initial' || :\n\ngit -C oi clean --quiet --force\ngit -C oi checkout --quiet pull\n\n# handle \"deleted-image\" PRs gracefully :(\nfor img; do touch \"$BASHBREW_LIBRARY/$img\"; [ -s \"$BASHBREW_LIBRARY/$img\" ] || echo 'Maintainers: Deleted Image D: (@docker-library-bot)' > \"$BASHBREW_LIBRARY/$img\"; done\n\ngit -C temp rm --quiet -rf . || :\n\n_metadata-files \"$@\"\ngit -C temp add .\n\ngit -C temp diff \\\n\t--find-copies-harder \\\n\t--find-copies=\"$findCopies\" \\\n\t--find-renames=\"$findCopies\" \\\n\t--ignore-blank-lines \\\n\t--ignore-space-at-eol \\\n\t--ignore-space-change \\\n\t--irreversible-delete \\\n\t--minimal \\\n\t--staged\n"
  },
  {
    "path": "library/adminer",
    "content": "# this file is generated via https://github.com/TimWolla/docker-adminer/blob/d05fa68d13a889364cf8c81884ecf1a11a37957f/generate-stackbrew-library.sh\n\nMaintainers: Tim Düsterhus <tim@bastelstu.be> (@TimWolla)\nGitRepo: https://github.com/TimWolla/docker-adminer.git\n\nTags: 5.4.2, 5, latest, 5.4.2-standalone, 5-standalone, standalone\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1c484a27a9cc34ad306dfd63856db49ad7cb4bbe\nDirectory: 5\n\nTags: 5.4.2-fastcgi, 5-fastcgi, fastcgi\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1c484a27a9cc34ad306dfd63856db49ad7cb4bbe\nDirectory: 5/fastcgi\n\nTags: 4.17.1, 4, 4.17.1-standalone, 4-standalone\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 0c0fd187e8646ad61fe592a80d66abec2c1dc951\nDirectory: 4\n\nTags: 4.17.1-fastcgi, 4-fastcgi\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 0c0fd187e8646ad61fe592a80d66abec2c1dc951\nDirectory: 4/fastcgi\n"
  },
  {
    "path": "library/aerospike",
    "content": "Maintainers: Lucien Volmar <lucien@aerospike.com> (@volmarl),\n             Michael Coberly <mcoberly@aerospike.com> (@mcoberly2),\n             Phuc Vinh <pvinh@aerospike.com> (@pvinh-spike),\n             Kevin Porter <kporter@aerospike.com> (@kportertx),\n             Thomas Huelbert <thuelbert@aerospike.com> (@thomasaerospike)\n\nTags: ee-8.1.1.1, ee-8.1.1.1_1\nArchitectures: amd64, arm64v8\nGitRepo: https://github.com/aerospike/aerospike-server.docker.git\nGitCommit: 8b5917e1d0dba5b3d7f7ea8839a6bbe74f609b1b\nDirectory: enterprise/ubuntu24.04\n\nTags: ce-8.1.1.1, ce-8.1.1.1_1\nArchitectures: amd64, arm64v8\nGitRepo: https://github.com/aerospike/aerospike-server.docker.git\nGitCommit: 8b5917e1d0dba5b3d7f7ea8839a6bbe74f609b1b\nDirectory: community/ubuntu24.04\n"
  },
  {
    "path": "library/almalinux",
    "content": "# This file was generated on https://github.com/AlmaLinux/container-images/actions/runs/22493082393\nMaintainers: The AlmaLinux OS Foundation <cloud-infra@almalinux.org> (@AlmaLinux)\nGitRepo: https://github.com/AlmaLinux/container-images.git\n\nTags: 10-kitten, 10-kitten-20260227\nGitFetch: refs/heads/10-kitten\nGitCommit: f03a0f177d767ab6a5745773d9c519d8e14e14a7\namd64-Directory: default/amd64/\narm64v8-Directory: default/arm64/\nppc64le-Directory: default/ppc64le/\ns390x-Directory: default/s390x/\nriscv64-Directory: default/riscv64/\nArchitectures: amd64, arm64v8, ppc64le, s390x, riscv64\n\nTags: 10-kitten-minimal, 10-kitten-minimal-20260227\nGitFetch: refs/heads/10-kitten\nGitCommit: f03a0f177d767ab6a5745773d9c519d8e14e14a7\namd64-Directory: minimal/amd64/\narm64v8-Directory: minimal/arm64/\nppc64le-Directory: minimal/ppc64le/\ns390x-Directory: minimal/s390x/\nriscv64-Directory: minimal/riscv64/\nArchitectures: amd64, arm64v8, ppc64le, s390x, riscv64\n\nTags: latest, 10, 10.1, 10.1-20260129\nGitFetch: refs/heads/10\nGitCommit: af233919d4574c14336c76f427d3aed477025828\namd64-Directory: default/amd64/\narm64v8-Directory: default/arm64/\nppc64le-Directory: default/ppc64le/\ns390x-Directory: default/s390x/\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\nTags: minimal, 10-minimal, 10.1-minimal, 10.1-minimal-20260129\nGitFetch: refs/heads/10\nGitCommit: af233919d4574c14336c76f427d3aed477025828\namd64-Directory: minimal/amd64/\narm64v8-Directory: minimal/arm64/\nppc64le-Directory: minimal/ppc64le/\ns390x-Directory: minimal/s390x/\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\nTags: 8, 8.10, 8.10-20260129\nGitFetch: refs/heads/8\nGitCommit: dd2f4548f9b440b794a379472aaef1a9aca1ef38\namd64-Directory: default/amd64/\narm64v8-Directory: default/arm64/\nppc64le-Directory: default/ppc64le/\ns390x-Directory: default/s390x/\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\nTags: 8-minimal, 8.10-minimal, 8.10-minimal-20260129\nGitFetch: refs/heads/8\nGitCommit: dd2f4548f9b440b794a379472aaef1a9aca1ef38\namd64-Directory: minimal/amd64/\narm64v8-Directory: minimal/arm64/\nppc64le-Directory: minimal/ppc64le/\ns390x-Directory: minimal/s390x/\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\nTags: 9, 9.7, 9.7-20260129\nGitFetch: refs/heads/9\nGitCommit: 12e644ec2f45dab879fa299bb3c08f300f9eeb35\namd64-Directory: default/amd64/\narm64v8-Directory: default/arm64/\nppc64le-Directory: default/ppc64le/\ns390x-Directory: default/s390x/\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\nTags: 9-minimal, 9.7-minimal, 9.7-minimal-20260129\nGitFetch: refs/heads/9\nGitCommit: 12e644ec2f45dab879fa299bb3c08f300f9eeb35\namd64-Directory: minimal/amd64/\narm64v8-Directory: minimal/arm64/\nppc64le-Directory: minimal/ppc64le/\ns390x-Directory: minimal/s390x/\nArchitectures: amd64, arm64v8, ppc64le, s390x\n"
  },
  {
    "path": "library/alpine",
    "content": "Maintainers: Natanael Copa <ncopa@alpinelinux.org> (@ncopa)\nGitRepo: https://github.com/alpinelinux/docker-alpine.git\n\nTags: 20260127, edge\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64\nGitFetch: refs/heads/edge\nGitCommit: c5f299db02fde44c146488e2161773e1daebe581\narm64v8-Directory: aarch64/\narm32v6-Directory: armhf/\narm32v7-Directory: armv7/\nppc64le-Directory: ppc64le/\nriscv64-Directory: riscv64/\ns390x-Directory: s390x/\ni386-Directory: x86/\namd64-Directory: x86_64/\n\nTags: 3.23.3, 3.23, 3, latest\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64\nGitFetch: refs/heads/v3.23\nGitCommit: a037d70ba44f91b00dff940019d29a28f7ba1265\narm64v8-Directory: aarch64/\narm32v6-Directory: armhf/\narm32v7-Directory: armv7/\nppc64le-Directory: ppc64le/\nriscv64-Directory: riscv64/\ns390x-Directory: s390x/\ni386-Directory: x86/\namd64-Directory: x86_64/\n\nTags: 3.22.3, 3.22\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64\nGitFetch: refs/heads/v3.22\nGitCommit: c65c121d664a527ec65e1fa4cecc9063fff656da\narm64v8-Directory: aarch64/\narm32v6-Directory: armhf/\narm32v7-Directory: armv7/\nppc64le-Directory: ppc64le/\nriscv64-Directory: riscv64/\ns390x-Directory: s390x/\ni386-Directory: x86/\namd64-Directory: x86_64/\n\nTags: 3.21.6, 3.21\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64\nGitFetch: refs/heads/v3.21\nGitCommit: d9ff52957b2fe5361ffeb5d871db8c321e5605d8\narm64v8-Directory: aarch64/\narm32v6-Directory: armhf/\narm32v7-Directory: armv7/\nppc64le-Directory: ppc64le/\nriscv64-Directory: riscv64/\ns390x-Directory: s390x/\ni386-Directory: x86/\namd64-Directory: x86_64/\n\nTags: 3.20.9, 3.20\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x, i386, amd64\nGitFetch: refs/heads/v3.20\nGitCommit: b3f87708e5052e29737a251b2e9865e182dafe0c\narm64v8-Directory: aarch64/\narm32v6-Directory: armhf/\narm32v7-Directory: armv7/\nppc64le-Directory: ppc64le/\nriscv64-Directory: riscv64/\ns390x-Directory: s390x/\ni386-Directory: x86/\namd64-Directory: x86_64/\n"
  },
  {
    "path": "library/alt",
    "content": "Maintainers: ALT Linux Team Cloud <alt-cloud@altlinux.org> (@alt-cloud),\n             Alexey Shabalin <shaba@altlinux.org> (@shaba),\n             Gleb Fotengauer-Malinovskiy <glebfm@altlinux.org> (@glebfm),\n             Nadezhda Fedorova <fedor@altlunux.org> (@FNDenisovna)\nGitRepo: https://github.com/alt-cloud/docker-brew-alt.git\n\nTags: p10\nArchitectures: amd64, i386, arm64v8\nGitFetch: refs/heads/p10\nGitCommit: 920886636db2d75287b93587f841b2fdb46ec711\namd64-Directory: x86_64/\ni386-Directory: i586/\narm64v8-Directory: aarch64/\n\nTags: sisyphus\nArchitectures: amd64, i386, arm64v8, riscv64\nGitFetch: refs/heads/sisyphus\nGitCommit: a700dbea4a6d8aa769e1cfcf651bdf162494b518\namd64-Directory: x86_64/\narm64v8-Directory: aarch64/\ni386-Directory: i586/\nriscv64-Directory: riscv64/\n\nTags: p11, latest\nArchitectures: amd64, i386, arm64v8\nGitFetch: refs/heads/p11\nGitCommit: bf8979511d2508a410db13b840302df6ccbb59a6\namd64-Directory: x86_64/\narm64v8-Directory: aarch64/\ni386-Directory: i586/\n"
  },
  {
    "path": "library/amazoncorretto",
    "content": "Maintainers: Amazon Corretto Team <corretto-team@amazon.com> (@corretto),\n             Dan Lutker <lutkerd@amazon.com> (@lutkerd),\n             Ben Taylor <benty@amazon.com> (@benty-amzn),\n             David Alvarez <alvdavi@amazon.com> (@alvdavi),\n             Rui Li <ruiamzn@amazon.com> (@rgithubli),\n             Sergey Bylokhov <bylokhov@amazon.com> (@mrserb),\n             Victor Rudometov <vicrud@amazon.com> (@Rudometov),\n             Elif Aslan <elifasln@amazon.com> (@elifaslan1),\n             Chad Rakoczy <chadrako@amazon.com> (@chadrako),\n             Ian Myers <ianrichr@amazon.com> (@ianrichr),\n             John Spurling <spurn@amazon.com> (@synecdoche),\n             Daniel Hu <costmuch@amazon.com> (@cost0much),\n             Michael De Vera <mldevera@amazon.com> (@midver),\n             Min Choi <minschoi@amazon.com> (@mmm-choi),\n             Satyen Subramaniam <satyenme@amazon.com> (@satyenme)\nGitRepo: https://github.com/corretto/corretto-docker.git\nGitFetch: refs/heads/main\nGitCommit: b96e13a7da2cf50ccd332b3f18e280d2068dfbeb\n\nTags: 8, 8u482, 8u482-al2, 8-al2-full, 8-al2-jdk, 8-al2-generic, 8u482-al2-generic, 8-al2-generic-jdk, latest\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/al2-generic\n\nTags: 8-al2023, 8u482-al2023, 8-al2023-jdk\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/al2023\n\nTags: 8-al2023-jre, 8u482-al2023-jre\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/al2023\n\nTags: 8-al2-native-jre, 8u482-al2-native-jre\nArchitectures: amd64, arm64v8\nDirectory: 8/jre/al2\n\nTags: 8-al2-native-jdk, 8u482-al2-native-jdk\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/al2\n\nTags: 8-alpine3.20, 8u482-alpine3.20, 8-alpine3.20-full, 8-alpine3.20-jdk\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/alpine/3.20\n\nTags: 8-alpine3.20-jre, 8u482-alpine3.20-jre\nArchitectures: amd64, arm64v8\nDirectory: 8/jre/alpine/3.20\n\nTags: 8-alpine3.21, 8u482-alpine3.21, 8-alpine3.21-full, 8-alpine3.21-jdk\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/alpine/3.21\n\nTags: 8-alpine3.21-jre, 8u482-alpine3.21-jre\nArchitectures: amd64, arm64v8\nDirectory: 8/jre/alpine/3.21\n\nTags: 8-alpine3.22, 8u482-alpine3.22, 8-alpine3.22-full, 8-alpine3.22-jdk\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/alpine/3.22\n\nTags: 8-alpine3.22-jre, 8u482-alpine3.22-jre\nArchitectures: amd64, arm64v8\nDirectory: 8/jre/alpine/3.22\n\nTags: 8-alpine3.23, 8u482-alpine3.23, 8-alpine3.23-full, 8-alpine3.23-jdk, 8-alpine, 8u482-alpine, 8-alpine-full, 8-alpine-jdk\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/alpine/3.23\n\nTags: 8-alpine3.23-jre, 8u482-alpine3.23-jre, 8-alpine-jre, 8u482-alpine-jre\nArchitectures: amd64, arm64v8\nDirectory: 8/jre/alpine/3.23\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/al2-generic\n\nTags: 11-al2023, 11.0.30-al2023, 11-al2023-jdk\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/al2023\n\nTags: 11-al2023-headless, 11.0.30-al2023-headless\nArchitectures: amd64, arm64v8\nDirectory: 11/headless/al2023\n\nTags: 11-al2023-headful, 11.0.30-al2023-headful\nArchitectures: amd64, arm64v8\nDirectory: 11/headful/al2023\n\nTags: 11-al2-native-headless, 11.0.30-al2-native-headless\nArchitectures: amd64, arm64v8\nDirectory: 11/headless/al2\n\nTags: 11-al2-native-jdk, 11.0.30-al2-native-jdk\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/al2\n\nTags: 11-alpine3.20, 11.0.30-alpine3.20, 11-alpine3.20-full, 11-alpine3.20-jdk\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/alpine/3.20\n\nTags: 11-alpine3.21, 11.0.30-alpine3.21, 11-alpine3.21-full, 11-alpine3.21-jdk\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/alpine/3.21\n\nTags: 11-alpine3.22, 11.0.30-alpine3.22, 11-alpine3.22-full, 11-alpine3.22-jdk\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/alpine/3.22\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/alpine/3.23\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/al2-generic\n\nTags: 17-al2023, 17.0.18-al2023, 17-al2023-jdk\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/al2023\n\nTags: 17-al2023-headless, 17.0.18-al2023-headless\nArchitectures: amd64, arm64v8\nDirectory: 17/headless/al2023\n\nTags: 17-al2023-headful, 17.0.18-al2023-headful\nArchitectures: amd64, arm64v8\nDirectory: 17/headful/al2023\n\nTags: 17-al2-native-headless, 17.0.18-al2-native-headless\nArchitectures: amd64, arm64v8\nDirectory: 17/headless/al2\n\nTags: 17-al2-native-headful, 17.0.18-al2-native-headful\nArchitectures: amd64, arm64v8\nDirectory: 17/headful/al2\n\nTags: 17-al2-native-jdk, 17.0.18-al2-native-jdk\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/al2\n\nTags: 17-alpine3.20, 17.0.18-alpine3.20, 17-alpine3.20-full, 17-alpine3.20-jdk\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/alpine/3.20\n\nTags: 17-alpine3.21, 17.0.18-alpine3.21, 17-alpine3.21-full, 17-alpine3.21-jdk\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/alpine/3.21\n\nTags: 17-alpine3.22, 17.0.18-alpine3.22, 17-alpine3.22-full, 17-alpine3.22-jdk\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/alpine/3.22\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/alpine/3.23\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/al2-generic\n\nTags: 21-al2023, 21.0.10-al2023, 21-al2023-jdk\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/al2023\n\nTags: 21-al2023-headless, 21.0.10-al2023-headless\nArchitectures: amd64, arm64v8\nDirectory: 21/headless/al2023\n\nTags: 21-al2023-headful, 21.0.10-al2023-headful\nArchitectures: amd64, arm64v8\nDirectory: 21/headful/al2023\n\nTags: 21-alpine3.20, 21.0.10-alpine3.20, 21-alpine3.20-full, 21-alpine3.20-jdk\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/alpine/3.20\n\nTags: 21-alpine3.21, 21.0.10-alpine3.21, 21-alpine3.21-full, 21-alpine3.21-jdk\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/alpine/3.21\n\nTags: 21-alpine3.22, 21.0.10-alpine3.22, 21-alpine3.22-full, 21-alpine3.22-jdk\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/alpine/3.22\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/alpine/3.23\n\nTags: 25-al2023, 25.0.2-al2023, 25-al2023-jdk, 25, 25-jdk, 25.0.2\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk/al2023\n\nTags: 25-al2023-headless, 25.0.2-al2023-headless, 25-headless\nArchitectures: amd64, arm64v8\nDirectory: 25/headless/al2023\n\nTags: 25-al2023-headful, 25.0.2-al2023-headful, 25-headful\nArchitectures: amd64, arm64v8\nDirectory: 25/headful/al2023\n\nTags: 25-alpine3.20, 25.0.2-alpine3.20, 25-alpine3.20-full, 25-alpine3.20-jdk\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk/alpine/3.20\n\nTags: 25-alpine3.21, 25.0.2-alpine3.21, 25-alpine3.21-full, 25-alpine3.21-jdk\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk/alpine/3.21\n\nTags: 25-alpine3.22, 25.0.2-alpine3.22, 25-alpine3.22-full, 25-alpine3.22-jdk\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk/alpine/3.22\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk/alpine/3.23\n\nTags: 26-al2023, 26.0.0-al2023, 26-al2023-jdk, 26, 26-jdk, 26.0.0\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk/al2023\n\nTags: 26-al2023-headless, 26.0.0-al2023-headless, 26-headless\nArchitectures: amd64, arm64v8\nDirectory: 26/headless/al2023\n\nTags: 26-al2023-headful, 26.0.0-al2023-headful, 26-headful\nArchitectures: amd64, arm64v8\nDirectory: 26/headful/al2023\n\nTags: 26-alpine3.20, 26.0.0-alpine3.20, 26-alpine3.20-full, 26-alpine3.20-jdk\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk/alpine/3.20\n\nTags: 26-alpine3.21, 26.0.0-alpine3.21, 26-alpine3.21-full, 26-alpine3.21-jdk\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk/alpine/3.21\n\nTags: 26-alpine3.22, 26.0.0-alpine3.22, 26-alpine3.22-full, 26-alpine3.22-jdk\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk/alpine/3.22\n\nTags: 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\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk/alpine/3.23\n"
  },
  {
    "path": "library/amazonlinux",
    "content": "Maintainers: Amazon Linux <amazon-linux@amazon.com> (@amazonlinux),\n             Frédérick Lefebvre (@fred-lefebvre),\n             Stewart Smith (@stewartsmith),\n             Christopher Miller (@mysteriouspants),\n             Sumit Tomer (@sktomer),\n             Jason Jiannuo Pei (@peijiannuo),\n             Michael Mammo (@MichaelAbebaw),\n             Piyush Talreja (@piyush-talreja),\n             Akhila Katkuri (@Akhilark1202),\n             Neelkanth Poosa (@neelkanthpoosa),\n             Ishwar Thirunavukkarasu (@ishwartg)\nGitRepo: https://github.com/amazonlinux/container-images.git\nGitCommit: cc7a1876866f4056fa73a789a5b758358151c189\n\nTags: 2023, latest, 2023.10.20260302.1\nArchitectures: amd64, arm64v8\namd64-GitFetch: refs/heads/al2023\namd64-GitCommit: 067442068b2c915e7af7b61c6a58cf0cf422e470\narm64v8-GitFetch: refs/heads/al2023-arm64\narm64v8-GitCommit: f98d788e7b60d3eae932e1f69c5c1284a75269e5\n\nTags: 2, 2.0.20260302.0\nArchitectures: amd64, arm64v8\namd64-GitFetch: refs/heads/amzn2\namd64-GitCommit: 9925759ad43f2e78e58edf31f16dac11a51bee64\narm64v8-GitFetch: refs/heads/amzn2-arm64\narm64v8-GitCommit: 44b55b829fc1004c4da08cd9c2dd7e215921226f\n\nTags: 1, 2018.03, 2018.03.0.20231218.0\nArchitectures: amd64\namd64-GitFetch: refs/heads/2018.03\namd64-GitCommit: cfb41ad1c7624786ea10f60c15ce9c117c4da3b6\n"
  },
  {
    "path": "library/api-firewall",
    "content": "Maintainers: Ivan Novikov <in@wallarm.com> (@d0znpp), \n             Nikolay Tkachenko (@afr1ka)\nGitRepo: https://github.com/wallarm/api-firewall-docker.git\n\nTags: 0.9.5, latest\nArchitectures: amd64, arm64v8, i386\nGitCommit: f8ae1a56dccac4d1d8e918c0867b37f3cc40ffb2\nGitFetch: refs/heads/main\nDirectory: 0.9.5\n"
  },
  {
    "path": "library/arangodb",
    "content": "Maintainers: Frank Celler <info@arangodb.com> (@fceller), Wilfried Goesgens <w.goesgens@arangodb.org> (@dothebart), Vadim Kondratev <vadim@arangodb.org> (@KVS85)\nGitRepo: https://github.com/arangodb/arangodb-docker\nGitFetch: refs/heads/official\n\nTags: 3.12, 3.12.8, latest\nArchitectures: amd64, arm64v8\nGitCommit: 30ea7cc3dc73075d9b9f0c5295fd65e33803f197\nDirectory: alpine/3.12.8\n"
  },
  {
    "path": "library/archlinux",
    "content": "# https://gitlab.archlinux.org/archlinux/archlinux-docker\n\nMaintainers: Santiago Torres-Arias <santiago@archlinux.org> (@SantiagoTorres),\n             Christian Rebischke <Chris.Rebischke@archlinux.org> (@shibumi),\n             Justin Kromlinger <hashworks@archlinux.org> (@hashworks)\nGitRepo: https://gitlab.archlinux.org/archlinux/archlinux-docker.git\n\nTags: latest, base, base-20260315.0.500537\nGitCommit: 0fc0a650d90bf036a88bb3cc188e981becce59ab\nGitFetch: refs/tags/v20260315.0.500537\nFile: Dockerfile.base\n\nTags: base-devel, base-devel-20260315.0.500537\nGitCommit: 0fc0a650d90bf036a88bb3cc188e981becce59ab\nGitFetch: refs/tags/v20260315.0.500537\nFile: Dockerfile.base-devel\n\nTags: multilib-devel, multilib-devel-20260315.0.500537\nGitCommit: 0fc0a650d90bf036a88bb3cc188e981becce59ab\nGitFetch: refs/tags/v20260315.0.500537\nFile: Dockerfile.multilib-devel\n\n"
  },
  {
    "path": "library/azul-zulu",
    "content": "Maintainers: Azul Devops Team <devops@azul.com> (@azul-publisher),\n             Pavel Petroshenko <pavel@azul.com> (@ppetrosh),\n             Anton Kozlov <akozlov@azul.com> (@AntonKozlov),\n             Sergey Grinev <sergey.grinev@azul.com> (@sgrinev),\n             Daniel Sentivany <dsentivany@azul.com> (@dsent9),\n             Frank Delporte <fdelporte@azul.com> (@fdelporte),\n             Geertjan Wielenga <gwielenga@azul.com> (@geertjanw)\nGitRepo: https://github.com/AzulSystems/azul-zulu-images.git\nGitFetch: refs/heads/main\nGitCommit: e8b7c6c813f173f44d5aab27ed399f8346a0763c\n\n\nTags: 8.92-8.0.482-jdk-debian13, 8, 8-jdk, 8-jdk-debian, 8-jdk-debian13\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk/debian\n\nTags: 8.92-8.0.482-jdk-headless-debian13, 8-headless, 8-headless-debian, 8-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 8/jdk-headless/debian\n\nTags: 8.92-8.0.482-jre-debian13, 8-jre, 8-jre-debian, 8-jre-debian13\nArchitectures: amd64, arm64v8\nDirectory: 8/jre/debian\n\nTags: 8.92-8.0.482-jre-headless-debian13, 8-jre-headless, 8-jre-headless-debian, 8-jre-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 8/jre-headless/debian\n\nTags: 11.86-11.0.30-jdk-debian13, 11, 11-jdk, 11-jdk-debian, 11-jdk-debian13\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk/debian\n\nTags: 11.86-11.0.30-jdk-headless-debian13, 11-headless, 11-headless-debian, 11-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 11/jdk-headless/debian\n\nTags: 11.86-11.0.30-jre-debian13, 11-jre, 11-jre-debian, 11-jre-debian13\nArchitectures: amd64, arm64v8\nDirectory: 11/jre/debian\n\nTags: 11.86-11.0.30-jre-headless-debian13, 11-jre-headless, 11-jre-headless-debian, 11-jre-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 11/jre-headless/debian\n\nTags: 17.64-17.0.18-jdk-debian13, 17, 17-jdk, 17-jdk-debian, 17-jdk-debian13\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk/debian\n\nTags: 17.64-17.0.18-jdk-headless-debian13, 17-headless, 17-headless-debian, 17-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 17/jdk-headless/debian\n\nTags: 17.64-17.0.18-jre-debian13, 17-jre, 17-jre-debian, 17-jre-debian13\nArchitectures: amd64, arm64v8\nDirectory: 17/jre/debian\n\nTags: 17.64-17.0.18-jre-headless-debian13, 17-jre-headless, 17-jre-headless-debian, 17-jre-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 17/jre-headless/debian\n\nTags: 21.48-21.0.10-jdk-debian13, 21, 21-jdk, 21-jdk-debian, 21-jdk-debian13\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk/debian\n\nTags: 21.48-21.0.10-jdk-headless-debian13, 21-headless, 21-headless-debian, 21-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 21/jdk-headless/debian\n\nTags: 21.48-21.0.10-jre-debian13, 21-jre, 21-jre-debian, 21-jre-debian13\nArchitectures: amd64, arm64v8\nDirectory: 21/jre/debian\n\nTags: 21.48-21.0.10-jre-headless-debian13, 21-jre-headless, 21-jre-headless-debian, 21-jre-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 21/jre-headless/debian\n\nTags: 25.32-25.0.2-jdk-debian13, 25, 25-jdk, 25-jdk-debian, 25-jdk-debian13\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk/debian\n\nTags: 25.32-25.0.2-jdk-headless-debian13, 25-headless, 25-headless-debian, 25-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 25/jdk-headless/debian\n\nTags: 25.32-25.0.2-jre-debian13, 25-jre, 25-jre-debian, 25-jre-debian13\nArchitectures: amd64, arm64v8\nDirectory: 25/jre/debian\n\nTags: 25.32-25.0.2-jre-headless-debian13, 25-jre-headless, 25-jre-headless-debian, 25-jre-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 25/jre-headless/debian\n\nTags: 26.28-26.0.0-jdk-debian13, 26, 26-jdk, 26-jdk-debian, 26-jdk-debian13\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk/debian\n\nTags: 26.28-26.0.0-jdk-headless-debian13, 26-headless, 26-headless-debian, 26-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 26/jdk-headless/debian\n\nTags: 26.28-26.0.0-jre-debian13, 26-jre, 26-jre-debian, 26-jre-debian13\nArchitectures: amd64, arm64v8\nDirectory: 26/jre/debian\n\nTags: 26.28-26.0.0-jre-headless-debian13, 26-jre-headless, 26-jre-headless-debian, 26-jre-headless-debian13\nArchitectures: amd64, arm64v8\nDirectory: 26/jre-headless/debian\n"
  },
  {
    "path": "library/backdrop",
    "content": "Maintainers: Mike Pirog <mike@kalabox.io> (@pirog),\n             Geoff St. Pierre <serundeputy@gmail.com> (@serundeputy),\n             Jen Lampton <jen+docker@jeneration.com> (@jenlampton),\n             Greg Netsas <greg@userfriendly.tech> (@klonos)\nGitRepo: https://github.com/backdrop-ops/backdrop-docker.git\n\nTags: 1.33.0, 1.33, 1, 1.33.0-apache, 1.33-apache, 1-apache, apache, latest\nArchitectures: amd64, arm64v8\nGitCommit: 7507205f204226257a3686d581f2a44efa4c998c\nDirectory: 1/apache\n\nTags: 1.33.0-fpm, 1.33-fpm, 1-fpm, fpm\nArchitectures: amd64, arm64v8\nGitCommit: 7507205f204226257a3686d581f2a44efa4c998c\nDirectory: 1/fpm\n"
  },
  {
    "path": "library/bash",
    "content": "# this file is generated via https://github.com/tianon/docker-bash/blob/59788c3224d1c11f14518f6c860ce6bccaf21d54/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon)\nGitRepo: https://github.com/tianon/docker-bash.git\n\nTags: devel-20260309, devel, devel-20260309-alpine3.23, devel-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5b559e99a3edb62532ae3a1c4ed7de7ed7c0c10c\nDirectory: devel\n\nTags: 5.3.9, 5.3, 5, latest, 5.3.9-alpine3.23, 5.3-alpine3.23, 5-alpine3.23, alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 59999c513d9e7bddb3972d38aa112af045cb0e80\nDirectory: 5.3\n\nTags: 5.2.37, 5.2, 5.2.37-alpine3.22, 5.2-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9fc164bd1a8e4bfe16c517623ce935dc821bbb08\nDirectory: 5.2\n\nTags: 5.1.16, 5.1, 5.1.16-alpine3.22, 5.1-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 8ba8423bc0d3339722d4ba2d1af1f53fd179f506\nDirectory: 5.1\n\nTags: 5.0.18, 5.0, 5.0.18-alpine3.22, 5.0-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5f58d08f8ee4a558b8302ef22352af99d4beedfd\nDirectory: 5.0\n\nTags: 4.4.23, 4.4, 4, 4.4.23-alpine3.22, 4.4-alpine3.22, 4-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f\nDirectory: 4.4\n\nTags: 4.3.48, 4.3, 4.3.48-alpine3.22, 4.3-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f\nDirectory: 4.3\n\nTags: 4.2.53, 4.2, 4.2.53-alpine3.22, 4.2-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 8556e37dc74a044cfd6e8255acfd116a5bdb8588\nDirectory: 4.2\n\nTags: 4.1.17, 4.1, 4.1.17-alpine3.22, 4.1-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f\nDirectory: 4.1\n\nTags: 4.0.44, 4.0, 4.0.44-alpine3.22, 4.0-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f\nDirectory: 4.0\n\nTags: 3.2.57, 3.2, 3, 3.2.57-alpine3.22, 3.2-alpine3.22, 3-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f\nDirectory: 3.2\n\nTags: 3.1.23, 3.1, 3.1.23-alpine3.22, 3.1-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 099d6114cbdb9b016fb8c4beb653187df002f66f\nDirectory: 3.1\n\nTags: 3.0.22, 3.0, 3.0.22-alpine3.22, 3.0-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5ffa8349006e790fe3534d0a6c3100fd6d725407\nDirectory: 3.0\n"
  },
  {
    "path": "library/bonita",
    "content": "Maintainers: Emmanuel Duchastenier <emmanuel.duchastenier@bonitasoft.org> (@educhastenier),\n             Anthony Birembaut <anthony.birembaut@bonitasoft.org> (@abirembaut),\n             Romain Bioteau <romain.bioteau@bonitasoft.org> (@rbioteau),\n             Adrien Kantcheff <adrien.kantcheff@bonitasoft.org> (@akantcheff)\nGitRepo: https://github.com/bonitasoft/bonita-distrib.git\nDirectory: docker\n\nTags: 2025.2-u5, 2025.2, 10.4.5, 10.4, latest\nArchitectures: amd64\nGitFetch: refs/heads/docker/2025.2-u5\nGitCommit: 502b96e7666b6690d948aef91d4f1ac641e47611\n"
  },
  {
    "path": "library/buildpack-deps",
    "content": "# this file is generated via https://github.com/docker-library/buildpack-deps/blob/abbc41715d6f92a6e5137a6a09b59400a6333606/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/buildpack-deps.git\n\nTags: bookworm-curl, oldstable-curl\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 3e18c3af1f5dce6a48abf036857f9097b6bd79cc\nDirectory: debian/bookworm/curl\n\nTags: bookworm-scm, oldstable-scm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae\nDirectory: debian/bookworm/scm\n\nTags: bookworm, oldstable\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae\nDirectory: debian/bookworm\n\nTags: bullseye-curl, oldoldstable-curl\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 93d6db0797f91ab674535553b7e0e762941a02d0\nDirectory: debian/bullseye/curl\n\nTags: bullseye-scm, oldoldstable-scm\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae\nDirectory: debian/bullseye/scm\n\nTags: bullseye, oldoldstable\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae\nDirectory: debian/bullseye\n\nTags: forky-curl, testing-curl\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6fbd1fd6aa17031b10f11a97c31b9da1ac09db76\nDirectory: debian/forky/curl\n\nTags: forky-scm, testing-scm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6fbd1fd6aa17031b10f11a97c31b9da1ac09db76\nDirectory: debian/forky/scm\n\nTags: forky, testing\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6fbd1fd6aa17031b10f11a97c31b9da1ac09db76\nDirectory: debian/forky\n\nTags: sid-curl, unstable-curl\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 2b3a8b7d1f8875865034be3bab98ddd737e37d5e\nDirectory: debian/sid/curl\n\nTags: sid-scm, unstable-scm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 2b3a8b7d1f8875865034be3bab98ddd737e37d5e\nDirectory: debian/sid/scm\n\nTags: sid, unstable\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 2b3a8b7d1f8875865034be3bab98ddd737e37d5e\nDirectory: debian/sid\n\nTags: trixie-curl, stable-curl, curl\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5\nDirectory: debian/trixie/curl\n\nTags: trixie-scm, stable-scm, scm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5\nDirectory: debian/trixie/scm\n\nTags: trixie, stable, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5\nDirectory: debian/trixie\n\nTags: jammy-curl, 22.04-curl\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 93d6db0797f91ab674535553b7e0e762941a02d0\nDirectory: ubuntu/jammy/curl\n\nTags: jammy-scm, 22.04-scm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae\nDirectory: ubuntu/jammy/scm\n\nTags: jammy, 22.04\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae\nDirectory: ubuntu/jammy\n\nTags: noble-curl, 24.04-curl\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 60dc5f9555c521de086b2f5770514faf69ee2cc4\nDirectory: ubuntu/noble/curl\n\nTags: noble-scm, 24.04-scm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 60dc5f9555c521de086b2f5770514faf69ee2cc4\nDirectory: ubuntu/noble/scm\n\nTags: noble, 24.04\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 60dc5f9555c521de086b2f5770514faf69ee2cc4\nDirectory: ubuntu/noble\n\nTags: questing-curl, 25.10-curl\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb\nDirectory: ubuntu/questing/curl\n\nTags: questing-scm, 25.10-scm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb\nDirectory: ubuntu/questing/scm\n\nTags: questing, 25.10\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb\nDirectory: ubuntu/questing\n\nTags: resolute-curl, 26.04-curl\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2\nDirectory: ubuntu/resolute/curl\n\nTags: resolute-scm, 26.04-scm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2\nDirectory: ubuntu/resolute/scm\n\nTags: resolute, 26.04\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2\nDirectory: ubuntu/resolute\n"
  },
  {
    "path": "library/busybox",
    "content": "# this file is generated via https://github.com/docker-library/busybox/blob/32ed6b6c9363239c5acccfcf89bf401e07fc33c3/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/busybox.git\nGitCommit: 32ed6b6c9363239c5acccfcf89bf401e07fc33c3\nBuilder: oci-import\nFile: index.json\n# https://github.com/docker-library/busybox/tree/dist-amd64\namd64-GitFetch: refs/heads/dist-amd64\namd64-GitCommit: 557f024d4e247f4fa6e086640e7982333b29f04e\n# https://github.com/docker-library/busybox/tree/dist-arm32v5\narm32v5-GitFetch: refs/heads/dist-arm32v5\narm32v5-GitCommit: 3edda89aee2cb45463eb3e4858b0d0b55b28b0cd\n# https://github.com/docker-library/busybox/tree/dist-arm32v6\narm32v6-GitFetch: refs/heads/dist-arm32v6\narm32v6-GitCommit: 262f1f8fc3fd7ae038d0abee2908193c1f8ed7fd\n# https://github.com/docker-library/busybox/tree/dist-arm32v7\narm32v7-GitFetch: refs/heads/dist-arm32v7\narm32v7-GitCommit: 6dde356a78739c0bf7e2fcd3c84a194431bdd73b\n# https://github.com/docker-library/busybox/tree/dist-arm64v8\narm64v8-GitFetch: refs/heads/dist-arm64v8\narm64v8-GitCommit: 86823563177e12460ad3e122103a3ee14691807d\n# https://github.com/docker-library/busybox/tree/dist-i386\ni386-GitFetch: refs/heads/dist-i386\ni386-GitCommit: b637faa0f5db2890dab7f4b93495ee1c7d951b08\n# https://github.com/docker-library/busybox/tree/dist-ppc64le\nppc64le-GitFetch: refs/heads/dist-ppc64le\nppc64le-GitCommit: ec0723d76b735e22d7b8070f928ab6de1cc8a17a\n# https://github.com/docker-library/busybox/tree/dist-riscv64\nriscv64-GitFetch: refs/heads/dist-riscv64\nriscv64-GitCommit: e43482cb6af1ec3c0e58945046222805ad069d5b\n# https://github.com/docker-library/busybox/tree/dist-s390x\ns390x-GitFetch: refs/heads/dist-s390x\ns390x-GitCommit: d76495a831258bec4d30c217b742399a4a793bfc\n\nTags: 1.37.0-glibc, 1.37-glibc, 1-glibc, unstable-glibc, glibc\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\namd64-Directory: latest/glibc/amd64\narm32v5-Directory: latest/glibc/arm32v5\narm32v7-Directory: latest/glibc/arm32v7\narm64v8-Directory: latest/glibc/arm64v8\ni386-Directory: latest/glibc/i386\nppc64le-Directory: latest/glibc/ppc64le\nriscv64-Directory: latest/glibc/riscv64\ns390x-Directory: latest/glibc/s390x\n\nTags: 1.37.0-uclibc, 1.37-uclibc, 1-uclibc, unstable-uclibc, uclibc\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64\namd64-Directory: latest/uclibc/amd64\narm32v5-Directory: latest/uclibc/arm32v5\narm32v7-Directory: latest/uclibc/arm32v7\narm64v8-Directory: latest/uclibc/arm64v8\ni386-Directory: latest/uclibc/i386\nriscv64-Directory: latest/uclibc/riscv64\n\nTags: 1.37.0-musl, 1.37-musl, 1-musl, unstable-musl, musl\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\namd64-Directory: latest/musl/amd64\narm32v6-Directory: latest/musl/arm32v6\narm32v7-Directory: latest/musl/arm32v7\narm64v8-Directory: latest/musl/arm64v8\ni386-Directory: latest/musl/i386\nppc64le-Directory: latest/musl/ppc64le\nriscv64-Directory: latest/musl/riscv64\ns390x-Directory: latest/musl/s390x\n\nTags: 1.37.0, 1.37, 1, unstable, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x, arm32v6\namd64-Directory: latest/glibc/amd64\narm32v5-Directory: latest/glibc/arm32v5\narm32v7-Directory: latest/glibc/arm32v7\narm64v8-Directory: latest/glibc/arm64v8\ni386-Directory: latest/glibc/i386\nppc64le-Directory: latest/glibc/ppc64le\nriscv64-Directory: latest/glibc/riscv64\ns390x-Directory: latest/glibc/s390x\narm32v6-Directory: latest/musl/arm32v6\n\nTags: 1.36.1-glibc, 1.36-glibc, stable-glibc\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\namd64-Directory: latest-1/glibc/amd64\narm32v5-Directory: latest-1/glibc/arm32v5\narm32v7-Directory: latest-1/glibc/arm32v7\narm64v8-Directory: latest-1/glibc/arm64v8\ni386-Directory: latest-1/glibc/i386\nppc64le-Directory: latest-1/glibc/ppc64le\nriscv64-Directory: latest-1/glibc/riscv64\ns390x-Directory: latest-1/glibc/s390x\n\nTags: 1.36.1-uclibc, 1.36-uclibc, stable-uclibc\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64\namd64-Directory: latest-1/uclibc/amd64\narm32v5-Directory: latest-1/uclibc/arm32v5\narm32v7-Directory: latest-1/uclibc/arm32v7\narm64v8-Directory: latest-1/uclibc/arm64v8\ni386-Directory: latest-1/uclibc/i386\nriscv64-Directory: latest-1/uclibc/riscv64\n\nTags: 1.36.1-musl, 1.36-musl, stable-musl\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\namd64-Directory: latest-1/musl/amd64\narm32v6-Directory: latest-1/musl/arm32v6\narm32v7-Directory: latest-1/musl/arm32v7\narm64v8-Directory: latest-1/musl/arm64v8\ni386-Directory: latest-1/musl/i386\nppc64le-Directory: latest-1/musl/ppc64le\nriscv64-Directory: latest-1/musl/riscv64\ns390x-Directory: latest-1/musl/s390x\n\nTags: 1.36.1, 1.36, stable\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x, arm32v6\namd64-Directory: latest-1/glibc/amd64\narm32v5-Directory: latest-1/glibc/arm32v5\narm32v7-Directory: latest-1/glibc/arm32v7\narm64v8-Directory: latest-1/glibc/arm64v8\ni386-Directory: latest-1/glibc/i386\nppc64le-Directory: latest-1/glibc/ppc64le\nriscv64-Directory: latest-1/glibc/riscv64\ns390x-Directory: latest-1/glibc/s390x\narm32v6-Directory: latest-1/musl/arm32v6\n"
  },
  {
    "path": "library/caddy",
    "content": "# this file is generated with gomplate:\n# template: https://github.com/caddyserver/caddy-docker/blob/e05f66898af9a0a694af637db2724f91d9d82ed7/stackbrew.tmpl\n# config context: https://github.com/caddyserver/caddy-docker/blob/03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b/stackbrew-config.yaml\nMaintainers: Dave Henderson (@hairyhenderson),\n             Francis Lavoie (@francislavoie)\n\nTags: 2.11.2-alpine, 2.11-alpine, 2-alpine, alpine\nSharedTags: 2.11.2, 2.11, 2, latest\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/alpine\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: amd64, arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x\n\nTags: 2.11.2-builder-alpine, 2.11-builder-alpine, 2-builder-alpine, builder-alpine\nSharedTags: 2.11.2-builder, 2.11-builder, 2-builder, builder\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/builder\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: amd64, arm64v8, arm32v6, arm32v7, ppc64le, riscv64, s390x\n\nTags: 2.11.2-windowsservercore-ltsc2022, 2.11-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 2.11.2-windowsservercore, 2.11-windowsservercore, 2-windowsservercore, windowsservercore, 2.11.2, 2.11, 2, latest\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/windows/ltsc2022\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n\nTags: 2.11.2-windowsservercore-ltsc2025, 2.11-windowsservercore-ltsc2025, 2-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 2.11.2-windowsservercore, 2.11-windowsservercore, 2-windowsservercore, windowsservercore, 2.11.2, 2.11, 2, latest\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/windows/ltsc2025\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\nTags: 2.11.2-nanoserver-ltsc2022, 2.11-nanoserver-ltsc2022, 2-nanoserver-ltsc2022, nanoserver-ltsc2022\nSharedTags: 2.11.2-nanoserver, 2.11-nanoserver, 2-nanoserver, nanoserver\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/windows-nanoserver/ltsc2022\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: windows-amd64\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 2.11.2-nanoserver-ltsc2025, 2.11-nanoserver-ltsc2025, 2-nanoserver-ltsc2025, nanoserver-ltsc2025\nSharedTags: 2.11.2-nanoserver, 2.11-nanoserver, 2-nanoserver, nanoserver\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/windows-nanoserver/ltsc2025\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: windows-amd64\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 2.11.2-builder-windowsservercore-ltsc2022, 2.11-builder-windowsservercore-ltsc2022, 2-builder-windowsservercore-ltsc2022, builder-windowsservercore-ltsc2022\nSharedTags: 2.11.2-builder, 2.11-builder, 2-builder, builder\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/windows-builder/ltsc2022\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n\nTags: 2.11.2-builder-windowsservercore-ltsc2025, 2.11-builder-windowsservercore-ltsc2025, 2-builder-windowsservercore-ltsc2025, builder-windowsservercore-ltsc2025\nSharedTags: 2.11.2-builder, 2.11-builder, 2-builder, builder\nGitRepo: https://github.com/caddyserver/caddy-docker.git\nDirectory: 2.11/windows-builder/ltsc2025\nGitCommit: 03d78cdcd835a384ab5567ea2a5ffa022ce3ec3b\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\n"
  },
  {
    "path": "library/cassandra",
    "content": "# this file is generated via https://github.com/docker-library/cassandra/blob/7c5b1270f935620330a51c1658d2c0557432f4ac/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/cassandra.git\n\nTags: 5.0.6, 5.0, 5, latest, 5.0.6-bookworm, 5.0-bookworm, 5-bookworm, bookworm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 7c5b1270f935620330a51c1658d2c0557432f4ac\nDirectory: 5.0\n\nTags: 4.1.10, 4.1, 4, 4.1.10-bookworm, 4.1-bookworm, 4-bookworm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 7c5b1270f935620330a51c1658d2c0557432f4ac\nDirectory: 4.1\n\nTags: 4.0.19, 4.0, 4.0.19-bookworm, 4.0-bookworm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 7c5b1270f935620330a51c1658d2c0557432f4ac\nDirectory: 4.0\n"
  },
  {
    "path": "library/chronograf",
    "content": "Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),\n             Sven Rebhan <srebhan@influxdata.com> (@srebhan),\n             Maya Strandboge <mstrandboge@influxdata.com> (@mstrandboge)\nGitRepo: https://github.com/influxdata/influxdata-docker\nGitCommit: 3dc2d064944d033907d137e1af8069d35852de94\n\nTags: 1.7, 1.7.17\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: chronograf/1.7\n\nTags: 1.7-alpine, 1.7.17-alpine\nDirectory: chronograf/1.7/alpine\n\nTags: 1.8, 1.8.10\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: chronograf/1.8\n\nTags: 1.8-alpine, 1.8.10-alpine\nDirectory: chronograf/1.8/alpine\n\nTags: 1.9, 1.9.4\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: chronograf/1.9\n\nTags: 1.9-alpine, 1.9.4-alpine\nDirectory: chronograf/1.9/alpine\n\nTags: 1.10, 1.10.9, latest\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: chronograf/1.10\n\nTags: 1.10-alpine, 1.10.9-alpine, alpine\nDirectory: chronograf/1.10/alpine\n"
  },
  {
    "path": "library/cirros",
    "content": "# this file is generated via https://github.com/tianon/docker-brew-cirros/blob/bc178480989db677c1271933567a0555e35856dc/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon)\nGitRepo: https://github.com/tianon/docker-brew-cirros.git\nGitFetch: refs/heads/dist\nGitCommit: 1821a0ca9eaf82280a2e953df56e88ab50178628\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\namd64-Directory: arches/amd64\narm32v7-Directory: arches/arm32v7\narm64v8-Directory: arches/arm64v8\nppc64le-Directory: arches/ppc64le\n\nTags: 0.6.3, 0.6, 0, latest\n"
  },
  {
    "path": "library/clearlinux",
    "content": "Maintainers: William Douglas <william.douglas@intel.com> (@bryteise)\nGitRepo: https://github.com/clearlinux/docker-brew-clearlinux.git\n\nTags: latest, base\nGitCommit: 03e2dcd390233733b398e72ce2382e54b5ef48a4\nGitFetch: refs/heads/base-43630\n"
  },
  {
    "path": "library/clefos",
    "content": "Maintainers: The ClefOS Project <neale@sinenomine.net> (@nealef)\nGitRepo: https://github.com/nealef/clefos.git\n\n# https://github.com/docker-library/docs/pull/2477\n"
  },
  {
    "path": "library/clickhouse",
    "content": "# The file is generated by https://github.com/ClickHouse/ClickHouse/blob/2ee3817600b03194beae6e050e7cb19f46690fa3/tests/ci/official_docker.py\n\nMaintainers: Misha f. Shiryaev <felixoid@clickhouse.com> (@Felixoid),\n             Max Kainov <max.kainov@clickhouse.com> (@mkaynov),\n             Alexander Tokmakov <tavplubix@clickhouse.com> (@tavplubix),\n             Alexander Sapin <alesapin@clickhouse.com> (@alesapin)\nGitRepo: https://github.com/ClickHouse/docker-library.git\nGitFetch: refs/heads/main\nGitCommit: 7697338ff98fafdedbaa5f0a6e77c8cf3321e775\n\nTags: latest, jammy, 26.2, 26.2-jammy, 26.2.4, 26.2.4-jammy, 26.2.4.23, 26.2.4.23-jammy\nArchitectures: amd64, arm64v8\nDirectory: server/26.2.4.23\nFile: Dockerfile.ubuntu\n\nTags: 26.1, 26.1-jammy, 26.1.4, 26.1.4-jammy, 26.1.4.35, 26.1.4.35-jammy\nArchitectures: amd64, arm64v8\nDirectory: server/26.1.4.35\nFile: Dockerfile.ubuntu\n\nTags: 25.12, 25.12-jammy, 25.12.8, 25.12.8-jammy, 25.12.8.9, 25.12.8.9-jammy\nArchitectures: amd64, arm64v8\nDirectory: server/25.12.8.9\nFile: Dockerfile.ubuntu\n\nTags: lts, lts-jammy, 25.8, 25.8-jammy, 25.8.18, 25.8.18-jammy, 25.8.18.1, 25.8.18.1-jammy\nArchitectures: amd64, arm64v8\nDirectory: server/25.8.18.1\nFile: Dockerfile.ubuntu\n\nTags: 25.3, 25.3-jammy, 25.3.14, 25.3.14-jammy, 25.3.14.14, 25.3.14.14-jammy\nArchitectures: amd64, arm64v8\nDirectory: server/25.3.14.14\nFile: Dockerfile.ubuntu\n"
  },
  {
    "path": "library/clojure",
    "content": "Maintainers: Paul Lam <paul@quantisan.com> (@Quantisan),\n             Wes Morgan <wes@wesmorgan.me> (@cap10morgan)\nArchitectures: riscv64, arm64v8, ppc64le, amd64, s390x\nGitRepo: https://github.com/Quantisan/docker-clojure.git\nGitCommit: 14dff87caeb3172b199e26146f4dfeb11e893c5f\n\n\nTags: latest\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-25/latest\n\nTags: temurin-8-lein-2.12.0-bookworm, temurin-8-lein-bookworm\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-bookworm-8/lein\n\nTags: temurin-8-lein-2.12.0-bookworm-slim, temurin-8-lein-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-bookworm-slim-8/lein\n\nTags: temurin-8-lein-2.12.0-bullseye, temurin-8-lein-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-8/lein\n\nTags: temurin-8-lein-2.12.0-bullseye-slim, temurin-8-lein-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-8/lein\n\nTags: temurin-8-lein-2.12.0-jammy, temurin-8-lein-jammy\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/eclipse-temurin-8-jdk-jammy/lein\n\nTags: temurin-8-lein, temurin-8-lein-2.12.0, temurin-8-lein-2.12.0-noble, temurin-8-lein-noble\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/eclipse-temurin-8-jdk-noble/lein\n\nTags: temurin-8-lein-2.12.0-trixie, temurin-8-lein-trixie\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-trixie-8/lein\n\nTags: temurin-8-lein-2.12.0-trixie-slim, temurin-8-lein-trixie-slim\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-trixie-slim-8/lein\n\nTags: temurin-8-bookworm, temurin-8-tools-deps-1.12.4.1618-bookworm, temurin-8-tools-deps-bookworm\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-bookworm-8/tools-deps\n\nTags: temurin-8-bookworm-slim, temurin-8-tools-deps-1.12.4.1618-bookworm-slim, temurin-8-tools-deps-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-bookworm-slim-8/tools-deps\n\nTags: temurin-8-bullseye, temurin-8-tools-deps-1.12.4.1618-bullseye, temurin-8-tools-deps-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-8/tools-deps\n\nTags: temurin-8-bullseye-slim, temurin-8-tools-deps-1.12.4.1618-bullseye-slim, temurin-8-tools-deps-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-8/tools-deps\n\nTags: temurin-8-jammy, temurin-8-tools-deps-1.12.4.1618-jammy, temurin-8-tools-deps-jammy\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/eclipse-temurin-8-jdk-jammy/tools-deps\n\nTags: 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\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/eclipse-temurin-8-jdk-noble/tools-deps\n\nTags: temurin-8-tools-deps-1.12.4.1618-trixie, temurin-8-tools-deps-trixie, temurin-8-trixie\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-trixie-8/tools-deps\n\nTags: temurin-8-tools-deps-1.12.4.1618-trixie-slim, temurin-8-tools-deps-trixie-slim, temurin-8-trixie-slim\nArchitectures: arm64v8, ppc64le, amd64\nDirectory: target/debian-trixie-slim-8/tools-deps\n\nTags: temurin-11-lein-2.12.0-alpine, temurin-11-lein-alpine\nArchitectures: amd64\nDirectory: target/eclipse-temurin-11-jdk-alpine/lein\n\nTags: temurin-11-lein-2.12.0-bookworm, temurin-11-lein-bookworm\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-11/lein\n\nTags: temurin-11-lein-2.12.0-bookworm-slim, temurin-11-lein-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-11/lein\n\nTags: temurin-11-lein-2.12.0-bullseye, temurin-11-lein-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-11/lein\n\nTags: temurin-11-lein-2.12.0-bullseye-slim, temurin-11-lein-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-11/lein\n\nTags: temurin-11-lein-2.12.0-jammy, temurin-11-lein-jammy\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-11-jdk-jammy/lein\n\nTags: temurin-11-lein, temurin-11-lein-2.12.0, temurin-11-lein-2.12.0-noble, temurin-11-lein-noble\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-11-jdk-noble/lein\n\nTags: temurin-11-lein-2.12.0-trixie, temurin-11-lein-trixie\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-trixie-11/lein\n\nTags: temurin-11-lein-2.12.0-trixie-slim, temurin-11-lein-trixie-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-trixie-slim-11/lein\n\nTags: temurin-11-alpine, temurin-11-tools-deps-1.12.4.1618-alpine, temurin-11-tools-deps-alpine\nArchitectures: amd64\nDirectory: target/eclipse-temurin-11-jdk-alpine/tools-deps\n\nTags: temurin-11-bookworm, temurin-11-tools-deps-1.12.4.1618-bookworm, temurin-11-tools-deps-bookworm\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-11/tools-deps\n\nTags: temurin-11-bookworm-slim, temurin-11-tools-deps-1.12.4.1618-bookworm-slim, temurin-11-tools-deps-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-11/tools-deps\n\nTags: temurin-11-bullseye, temurin-11-tools-deps-1.12.4.1618-bullseye, temurin-11-tools-deps-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-11/tools-deps\n\nTags: temurin-11-bullseye-slim, temurin-11-tools-deps-1.12.4.1618-bullseye-slim, temurin-11-tools-deps-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-11/tools-deps\n\nTags: temurin-11-jammy, temurin-11-tools-deps-1.12.4.1618-jammy, temurin-11-tools-deps-jammy\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-11-jdk-jammy/tools-deps\n\nTags: 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\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-11-jdk-noble/tools-deps\n\nTags: temurin-11-tools-deps-1.12.4.1618-trixie, temurin-11-tools-deps-trixie, temurin-11-trixie\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-trixie-11/tools-deps\n\nTags: temurin-11-tools-deps-1.12.4.1618-trixie-slim, temurin-11-tools-deps-trixie-slim, temurin-11-trixie-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-trixie-slim-11/tools-deps\n\nTags: temurin-17-lein-2.12.0-alpine, temurin-17-lein-alpine\nArchitectures: amd64\nDirectory: target/eclipse-temurin-17-jdk-alpine/lein\n\nTags: temurin-17-lein-2.12.0-bookworm, temurin-17-lein-bookworm\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-17/lein\n\nTags: temurin-17-lein-2.12.0-bookworm-slim, temurin-17-lein-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-17/lein\n\nTags: temurin-17-lein-2.12.0-bullseye, temurin-17-lein-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-17/lein\n\nTags: temurin-17-lein-2.12.0-bullseye-slim, temurin-17-lein-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-17/lein\n\nTags: temurin-17-lein-2.12.0-jammy, temurin-17-lein-jammy\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-17-jdk-jammy/lein\n\nTags: temurin-17-lein, temurin-17-lein-2.12.0, temurin-17-lein-2.12.0-noble, temurin-17-lein-noble\nDirectory: target/eclipse-temurin-17-jdk-noble/lein\n\nTags: temurin-17-lein-2.12.0-trixie, temurin-17-lein-trixie\nDirectory: target/debian-trixie-17/lein\n\nTags: temurin-17-lein-2.12.0-trixie-slim, temurin-17-lein-trixie-slim\nDirectory: target/debian-trixie-slim-17/lein\n\nTags: temurin-17-alpine, temurin-17-tools-deps-1.12.4.1618-alpine, temurin-17-tools-deps-alpine\nArchitectures: amd64\nDirectory: target/eclipse-temurin-17-jdk-alpine/tools-deps\n\nTags: temurin-17-bookworm, temurin-17-tools-deps-1.12.4.1618-bookworm, temurin-17-tools-deps-bookworm\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-17/tools-deps\n\nTags: temurin-17-bookworm-slim, temurin-17-tools-deps-1.12.4.1618-bookworm-slim, temurin-17-tools-deps-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-17/tools-deps\n\nTags: temurin-17-bullseye, temurin-17-tools-deps-1.12.4.1618-bullseye, temurin-17-tools-deps-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-17/tools-deps\n\nTags: temurin-17-bullseye-slim, temurin-17-tools-deps-1.12.4.1618-bullseye-slim, temurin-17-tools-deps-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-17/tools-deps\n\nTags: temurin-17-jammy, temurin-17-tools-deps-1.12.4.1618-jammy, temurin-17-tools-deps-jammy\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-17-jdk-jammy/tools-deps\n\nTags: 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\nDirectory: target/eclipse-temurin-17-jdk-noble/tools-deps\n\nTags: temurin-17-tools-deps-1.12.4.1618-trixie, temurin-17-tools-deps-trixie, temurin-17-trixie\nDirectory: target/debian-trixie-17/tools-deps\n\nTags: temurin-17-tools-deps-1.12.4.1618-trixie-slim, temurin-17-tools-deps-trixie-slim, temurin-17-trixie-slim\nDirectory: target/debian-trixie-slim-17/tools-deps\n\nTags: temurin-21-lein-2.12.0-alpine, temurin-21-lein-alpine\nArchitectures: arm64v8, amd64\nDirectory: target/eclipse-temurin-21-jdk-alpine/lein\n\nTags: temurin-21-lein, temurin-21-lein-2.12.0, temurin-21-lein-2.12.0-bookworm, temurin-21-lein-bookworm\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-21/lein\n\nTags: temurin-21-lein-2.12.0-bookworm-slim, temurin-21-lein-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-21/lein\n\nTags: temurin-21-lein-2.12.0-bullseye, temurin-21-lein-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-21/lein\n\nTags: temurin-21-lein-2.12.0-bullseye-slim, temurin-21-lein-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-21/lein\n\nTags: temurin-21-lein-2.12.0-jammy, temurin-21-lein-jammy\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-21-jdk-jammy/lein\n\nTags: temurin-21-lein-2.12.0-noble, temurin-21-lein-noble\nDirectory: target/eclipse-temurin-21-jdk-noble/lein\n\nTags: temurin-21-lein-2.12.0-trixie, temurin-21-lein-trixie\nDirectory: target/debian-trixie-21/lein\n\nTags: temurin-21-lein-2.12.0-trixie-slim, temurin-21-lein-trixie-slim\nDirectory: target/debian-trixie-slim-21/lein\n\nTags: temurin-21-alpine, temurin-21-tools-deps-1.12.4.1618-alpine, temurin-21-tools-deps-alpine\nArchitectures: arm64v8, amd64\nDirectory: target/eclipse-temurin-21-jdk-alpine/tools-deps\n\nTags: 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\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-21/tools-deps\n\nTags: temurin-21-bookworm-slim, temurin-21-tools-deps-1.12.4.1618-bookworm-slim, temurin-21-tools-deps-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-21/tools-deps\n\nTags: temurin-21-bullseye, temurin-21-tools-deps-1.12.4.1618-bullseye, temurin-21-tools-deps-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-21/tools-deps\n\nTags: temurin-21-bullseye-slim, temurin-21-tools-deps-1.12.4.1618-bullseye-slim, temurin-21-tools-deps-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-21/tools-deps\n\nTags: temurin-21-jammy, temurin-21-tools-deps-1.12.4.1618-jammy, temurin-21-tools-deps-jammy\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/eclipse-temurin-21-jdk-jammy/tools-deps\n\nTags: temurin-21-noble, temurin-21-tools-deps-1.12.4.1618-noble, temurin-21-tools-deps-noble\nDirectory: target/eclipse-temurin-21-jdk-noble/tools-deps\n\nTags: temurin-21-tools-deps-1.12.4.1618-trixie, temurin-21-tools-deps-trixie, temurin-21-trixie\nDirectory: target/debian-trixie-21/tools-deps\n\nTags: temurin-21-tools-deps-1.12.4.1618-trixie-slim, temurin-21-tools-deps-trixie-slim, temurin-21-trixie-slim\nDirectory: target/debian-trixie-slim-21/tools-deps\n\nTags: temurin-25-lein-2.12.0-alpine, temurin-25-lein-alpine\nArchitectures: arm64v8, amd64\nDirectory: target/eclipse-temurin-25-jdk-alpine/lein\n\nTags: 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\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-25/lein\n\nTags: lein-2.12.0-bookworm-slim, lein-bookworm-slim, temurin-25-lein-2.12.0-bookworm-slim, temurin-25-lein-bookworm-slim\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-25/lein\n\nTags: lein-2.12.0-bullseye, lein-bullseye, temurin-25-lein-2.12.0-bullseye, temurin-25-lein-bullseye\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-25/lein\n\nTags: lein-2.12.0-bullseye-slim, lein-bullseye-slim, temurin-25-lein-2.12.0-bullseye-slim, temurin-25-lein-bullseye-slim\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-25/lein\n\nTags: temurin-25-lein-2.12.0-noble, temurin-25-lein-noble\nDirectory: target/eclipse-temurin-25-jdk-noble/lein\n\nTags: lein-2.12.0-trixie, lein-trixie, temurin-25-lein-2.12.0-trixie, temurin-25-lein-trixie\nDirectory: target/debian-trixie-25/lein\n\nTags: lein-2.12.0-trixie-slim, lein-trixie-slim, temurin-25-lein-2.12.0-trixie-slim, temurin-25-lein-trixie-slim\nDirectory: target/debian-trixie-slim-25/lein\n\nTags: temurin-25-alpine, temurin-25-tools-deps-1.12.4.1618-alpine, temurin-25-tools-deps-alpine\nArchitectures: arm64v8, amd64\nDirectory: target/eclipse-temurin-25-jdk-alpine/tools-deps\n\nTags: 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\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-25/tools-deps\n\nTags: 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\nArchitectures: arm64v8, ppc64le, amd64, s390x\nDirectory: target/debian-bookworm-slim-25/tools-deps\n\nTags: 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\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-25/tools-deps\n\nTags: 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\nArchitectures: arm64v8, amd64\nDirectory: target/debian-bullseye-slim-25/tools-deps\n\nTags: temurin-25-noble, temurin-25-tools-deps-1.12.4.1618-noble, temurin-25-tools-deps-noble\nDirectory: target/eclipse-temurin-25-jdk-noble/tools-deps\n\nTags: 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\nDirectory: target/debian-trixie-25/tools-deps\n\nTags: 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\nDirectory: target/debian-trixie-slim-25/tools-deps\n"
  },
  {
    "path": "library/composer",
    "content": "# this file was generated using https://github.com/composer/docker/blob/3fdb03de2e013b14208ce98cdd2125d488adc196/generate-stackbrew-library.sh\n\nMaintainers: Composer (@composer), Rob Bast (@alcohol)\nGitRepo: https://github.com/composer/docker.git\nBuilder: buildkit\n\nTags: 2.9.5, 2.9, 2, latest\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitFetch: refs/heads/main\nGitCommit: d847d1738962086f205984ed253cace363731af7\nDirectory: latest\n\nTags: 2.2.26, 2.2\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitFetch: refs/heads/main\nGitCommit: fa961e74c7bd38b762e5a358eca4794e86f0464c\nDirectory: 2.2\n"
  },
  {
    "path": "library/convertigo",
    "content": "Maintainers: Nicolas Albert <nicolasa@convertigo.com> (@nicolas-albert), Olivier Picciotto <olivier.picciotto@convertigo.com> (@opicciotto)\nGitRepo: https://github.com/convertigo/convertigo\nGitCommit: fb6f00cdd5842fffb22271230507789e4c565fa4\n\nTags: 8.4.1, 8.4, latest\nArchitectures: amd64, arm64v8\nDirectory: docker/default"
  },
  {
    "path": "library/couchbase",
    "content": "Maintainers: Couchbase Docker Team <docker@couchbase.com> (@cb-robot)\nGitRepo: https://github.com/couchbase/docker\n\nTags: 8.0.0, enterprise, enterprise-8.0.0, latest\nGitCommit: c11b8eac06fe26a16b2e2b17020a965d45d7f329\nDirectory: enterprise/couchbase-server/8.0.0\nArchitectures: amd64, arm64v8\n\nTags: community, community-8.0.0\nGitCommit: e2600d59a2b84984adeccbe1c0f8b5d926d4b529\nDirectory: community/couchbase-server/8.0.0\nArchitectures: amd64, arm64v8\n\nTags: 7.6.9, enterprise-7.6.9\nGitCommit: b18d7484594299cd7fdc11b7e9115c1fa86acc74\nDirectory: enterprise/couchbase-server/7.6.9\nArchitectures: amd64, arm64v8\n\nTags: 7.6.8, enterprise-7.6.8\nGitCommit: 79e990af7621fa397c0dc12fd08bad6db4f49476\nDirectory: enterprise/couchbase-server/7.6.8\nArchitectures: amd64, arm64v8\n\nTags: 7.6.7, enterprise-7.6.7\nGitCommit: a322cc7110124b2581339f52d88bab80fb50016d\nDirectory: enterprise/couchbase-server/7.6.7\nArchitectures: amd64, arm64v8\n\nTags: 7.6.6, enterprise-7.6.6\nGitCommit: 9ce3cbc835dd4e072943ac7878aa7f87d6b95178\nDirectory: enterprise/couchbase-server/7.6.6\nArchitectures: amd64, arm64v8\n\nTags: 7.6.5, enterprise-7.6.5\nGitCommit: ec16abff6f0551ced6c771bd5606a4392379dd31\nDirectory: enterprise/couchbase-server/7.6.5\nArchitectures: amd64, arm64v8\n\nTags: 7.6.4, enterprise-7.6.4\nGitCommit: 9990e2cfabc94b37607e5666d9ef1eab69a397a6\nDirectory: enterprise/couchbase-server/7.6.4\nArchitectures: amd64, arm64v8\n\nTags: 7.6.3, enterprise-7.6.3\nGitCommit: 553d1baa4aa90fe506e1d7bcdf4daec387a110fe\nDirectory: enterprise/couchbase-server/7.6.3\nArchitectures: amd64, arm64v8\n\nTags: 7.6.2, enterprise-7.6.2\nGitCommit: ce13f602d2c95f76835c67a8855d5e73480973a6\nDirectory: enterprise/couchbase-server/7.6.2\nArchitectures: amd64, arm64v8\n\nTags: community-7.6.2\nGitCommit: 3f81af158b7f307e42f8c42ceaf7657b2690bfca\nDirectory: community/couchbase-server/7.6.2\nArchitectures: amd64, arm64v8\n\nTags: 7.6.10, enterprise-7.6.10\nGitCommit: 0603961e7e5a07d9aa1f4f28224721d9695014e8\nDirectory: enterprise/couchbase-server/7.6.10\nArchitectures: amd64, arm64v8\n\nTags: 7.6.1, enterprise-7.6.1\nGitCommit: 966143f937bfe6979b7c09b86684004fdd21e5b8\nDirectory: enterprise/couchbase-server/7.6.1\nArchitectures: amd64, arm64v8\n\nTags: community-7.6.1\nGitCommit: a18464c9b23efba391317fd21f898bf64dff6ec1\nDirectory: community/couchbase-server/7.6.1\nArchitectures: amd64, arm64v8\n\nTags: 7.6.0, enterprise-7.6.0\nGitCommit: 9bdcf41deedd86da4c71347ffeea350a9895d816\nDirectory: enterprise/couchbase-server/7.6.0\nArchitectures: amd64, arm64v8\n\nTags: community-7.6.0\nGitCommit: 6d669d0e34e6990b43c1b91ea74720235c96c4ac\nDirectory: community/couchbase-server/7.6.0\nArchitectures: amd64, arm64v8\n\nTags: 7.2.9, enterprise-7.2.9\nGitCommit: 3d91b428d1c1399713c5c900ab775a5cb3d82980\nDirectory: enterprise/couchbase-server/7.2.9\nArchitectures: amd64, arm64v8\n\nTags: 7.2.8, enterprise-7.2.8\nGitCommit: 5023e9104d765a15cde8e978be5266a6f1889fb0\nDirectory: enterprise/couchbase-server/7.2.8\nArchitectures: amd64, arm64v8\n\nTags: 7.2.7, enterprise-7.2.7\nGitCommit: 23887cae4fd6ce054f383d524a7975d2e3a6b72e\nDirectory: enterprise/couchbase-server/7.2.7\nArchitectures: amd64, arm64v8\n\nTags: 7.2.6, enterprise-7.2.6\nGitCommit: 181af64dcbedc1abf6e0916d9f5373cf1c18cb6e\nDirectory: enterprise/couchbase-server/7.2.6\nArchitectures: amd64, arm64v8\n\nTags: 7.2.5, enterprise-7.2.5\nGitCommit: 94d97d9eea3d4057846be28f319940927d5166cb\nDirectory: enterprise/couchbase-server/7.2.5\nArchitectures: amd64, arm64v8\n\nTags: 7.2.4, enterprise-7.2.4\nGitCommit: 15c1c3c0b4717a8b23ef7962f3fde28fe68e4311\nDirectory: enterprise/couchbase-server/7.2.4\nArchitectures: amd64, arm64v8\n\nTags: community-7.2.4\nGitCommit: 7c8453ef8584ff18f7b6c052828758693af4f72c\nDirectory: community/couchbase-server/7.2.4\nArchitectures: amd64, arm64v8\n\nTags: 7.2.3, enterprise-7.2.3\nGitCommit: b54049418018144369816d18c63d9bf76e34bc9f\nDirectory: enterprise/couchbase-server/7.2.3\nArchitectures: amd64, arm64v8\n\nTags: 7.2.2, enterprise-7.2.2\nGitCommit: 3515fb617a469a5f46d492cf6910dddff8efb825\nDirectory: enterprise/couchbase-server/7.2.2\nArchitectures: amd64, arm64v8\n\nTags: community-7.2.2\nGitCommit: c7a25ac7f38a81a465aa97f1a1d753a6c579954f\nDirectory: community/couchbase-server/7.2.2\nArchitectures: amd64, arm64v8\n\nTags: 7.2.0, enterprise-7.2.0\nGitCommit: 4e769975179dc4e5bf4138349818bc8a0e191c9f\nDirectory: enterprise/couchbase-server/7.2.0\nArchitectures: amd64, arm64v8\n\nTags: community-7.2.0\nGitCommit: 71596d088ce2bc0218418187ac40ffccb08dbc36\nDirectory: community/couchbase-server/7.2.0\nArchitectures: amd64, arm64v8\n"
  },
  {
    "path": "library/couchdb",
    "content": "# see https://couchdb.apache.org/\n# also the announce@couchdb.apache.org mailing list\n\nMaintainers: Joan Touzet <wohali@apache.org> (@wohali), Jan Lehnardt <jan@apache.org> (@janl), Nick Vatamaniuc (@nickva)\nGitRepo: https://github.com/apache/couchdb-docker\nGitFetch: refs/heads/main\nGitCommit: 4c82ee090d6299c27616f30d93c9622f769431dd\n\nTags: latest, 3.5.1, 3.5, 3\nArchitectures: amd64, arm64v8, s390x\nDirectory: 3.5.1\n\nTags: 3.5.1-nouveau, 3.5-nouveau, 3-nouveau\nArchitectures: amd64, arm64v8, s390x\nDirectory: 3.5.1-nouveau\n\nTags: 3.4.3, 3.4\nArchitectures: amd64, arm64v8, s390x\nDirectory: 3.4.3\n\nTags: 3.4.3-nouveau, 3.4-nouveau\nArchitectures: amd64, arm64v8, s390x\nDirectory: 3.4.3-nouveau\n\n# dev, dev-cluster versions must not be published officially per\n# ASF release policy, see:\n# http://www.apache.org/dev/release-distribution.html#unreleased\n# The middle two bullet points are the issue.\n"
  },
  {
    "path": "library/crate",
    "content": "Maintainers: Mathias Fußenegger <mathias@crate.io> (@mfussenegger),\n             Sebastian Utz <sebastian@crate.io> (@seut),\n             Andreas Motl <andreas.motl@crate.io> (@amotl)\nGitRepo: https://github.com/crate/docker-crate.git\n\n\nTags: 6.2.3, 6.2, latest\nArchitectures: amd64, arm64v8\nGitCommit: 17626566ab1dbf78381aecf8d5af8dafcd21995c\n\nTags: 6.1.3, 6.1\nArchitectures: amd64, arm64v8\nGitCommit: ccb0a7319da7ba24513b443602c2ffd9d925850d\n"
  },
  {
    "path": "library/dart",
    "content": "Maintainers: Alexander Thomas <athom@google.com> (@athomas), Ivan Inozemtsev <iinozemtsev@google.com> (@iinozemtsev)\nGitRepo: https://github.com/dart-lang/dart-docker.git\nGitFetch: refs/heads/main\nGitCommit: 24476333cc9023a655bfa64df802cd0c253c26bb\n\nTags: 3.11.2-sdk, 3.11-sdk, 3-sdk, stable-sdk, sdk, 3.11.2, 3.11, 3, stable, latest\nArchitectures: amd64, arm32v7, arm64v8, riscv64\nDirectory: stable/trixie\n\nTags: 3.12.0-210.1.beta-sdk, beta-sdk, 3.12.0-210.1.beta, beta\nArchitectures: amd64, arm32v7, arm64v8, riscv64\nDirectory: beta/trixie\n"
  },
  {
    "path": "library/debian",
    "content": "# tarballs built by debuerreotype\n# see https://github.com/debuerreotype/debuerreotype\n\nMaintainers: Tianon Gravi <tianon@debian.org> (@tianon),\n             Paul Tagliamonte <paultag@debian.org> (@paultag)\nGitRepo: https://github.com/debuerreotype/docker-debian-artifacts.git\nGitCommit: 7935fc7dd049cb343df42037c152f570069d274f\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-amd64\namd64-GitFetch: refs/heads/dist-amd64\namd64-GitCommit: 188606311c383852312693d370f97ecfbbc6ac35\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-arm32v5\narm32v5-GitFetch: refs/heads/dist-arm32v5\narm32v5-GitCommit: 37c51fc11ff030a3beb0b069918fe09333df1ad1\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-arm32v7\narm32v7-GitFetch: refs/heads/dist-arm32v7\narm32v7-GitCommit: 1243c66ed482ebf022662cb2348e0ca261636f42\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-arm64v8\narm64v8-GitFetch: refs/heads/dist-arm64v8\narm64v8-GitCommit: 262b12fbfe800391c45cc975b037f33cb911051d\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-i386\ni386-GitFetch: refs/heads/dist-i386\ni386-GitCommit: 0c6ead133859447ba7a3ce54fc7b85356e147c69\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-mips64le\nmips64le-GitFetch: refs/heads/dist-mips64le\nmips64le-GitCommit: 8b35e242b227d867383a90b028e299b0616e1fed\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-ppc64le\nppc64le-GitFetch: refs/heads/dist-ppc64le\nppc64le-GitCommit: a474854d39be606660f261307535414d46c88cc6\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-riscv64\nriscv64-GitFetch: refs/heads/dist-riscv64\nriscv64-GitCommit: 9f62dd60003488b3c51a193225dc54d7973c0a68\n# https://github.com/debuerreotype/docker-debian-artifacts/tree/dist-s390x\ns390x-GitFetch: refs/heads/dist-s390x\ns390x-GitCommit: 0e7baa2227cf61fdeb22dbd1d60410caaa88aad3\n\n# bookworm -- Debian 12.13 Released 10 January 2026\nTags: bookworm, bookworm-20260316, 12.13, 12\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nBuilder: oci-import\nDirectory: bookworm/oci\nFile: index.json\n\nTags: bookworm-backports\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: bookworm/backports\n\nTags: bookworm-slim, bookworm-20260316-slim, 12.13-slim, 12-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nBuilder: oci-import\nDirectory: bookworm/slim/oci\nFile: index.json\n\n# bullseye -- Debian 11.11 Released 31 August 2024\nTags: bullseye, bullseye-20260316, 11.11, 11\nArchitectures: amd64, arm32v7, arm64v8, i386\nBuilder: oci-import\nDirectory: bullseye/oci\nFile: index.json\n\nTags: bullseye-slim, bullseye-20260316-slim, 11.11-slim, 11-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nBuilder: oci-import\nDirectory: bullseye/slim/oci\nFile: index.json\n\n# experimental -- Experimental packages - not released; use at your own risk.\nTags: experimental, experimental-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: experimental\n\n# forky -- Debian x.y Testing distribution - Not Released\nTags: forky, forky-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: forky/oci\nFile: index.json\n\nTags: forky-backports\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: forky/backports\n\nTags: forky-slim, forky-20260316-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: forky/slim/oci\nFile: index.json\n\n# oldoldstable -- Debian 11.11 Released 31 August 2024\nTags: oldoldstable, oldoldstable-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386\nBuilder: oci-import\nDirectory: oldoldstable/oci\nFile: index.json\n\nTags: oldoldstable-slim, oldoldstable-20260316-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nBuilder: oci-import\nDirectory: oldoldstable/slim/oci\nFile: index.json\n\n# oldstable -- Debian 12.13 Released 10 January 2026\nTags: oldstable, oldstable-20260316\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nBuilder: oci-import\nDirectory: oldstable/oci\nFile: index.json\n\nTags: oldstable-backports\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: oldstable/backports\n\nTags: oldstable-slim, oldstable-20260316-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nBuilder: oci-import\nDirectory: oldstable/slim/oci\nFile: index.json\n\n# rc-buggy -- Experimental packages - not released; use at your own risk.\nTags: rc-buggy, rc-buggy-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: rc-buggy\n\n# sid -- Debian x.y Unstable - Not Released\nTags: sid, sid-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: sid/oci\nFile: index.json\n\nTags: sid-slim, sid-20260316-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: sid/slim/oci\nFile: index.json\n\n# stable -- Debian 13.4 Released 14 March 2026\nTags: stable, stable-20260316\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: stable/oci\nFile: index.json\n\nTags: stable-backports\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: stable/backports\n\nTags: stable-slim, stable-20260316-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: stable/slim/oci\nFile: index.json\n\n# testing -- Debian x.y Testing distribution - Not Released\nTags: testing, testing-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: testing/oci\nFile: index.json\n\nTags: testing-backports\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: testing/backports\n\nTags: testing-slim, testing-20260316-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: testing/slim/oci\nFile: index.json\n\n# trixie -- Debian 13.4 Released 14 March 2026\nTags: trixie, trixie-20260316, 13.4, 13, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: trixie/oci\nFile: index.json\n\nTags: trixie-backports\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: trixie/backports\n\nTags: trixie-slim, trixie-20260316-slim, 13.4-slim, 13-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: trixie/slim/oci\nFile: index.json\n\n# unstable -- Debian x.y Unstable - Not Released\nTags: unstable, unstable-20260316\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: unstable/oci\nFile: index.json\n\nTags: unstable-slim, unstable-20260316-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nBuilder: oci-import\nDirectory: unstable/slim/oci\nFile: index.json\n"
  },
  {
    "path": "library/docker",
    "content": "# this file is generated via https://github.com/docker-library/docker/blob/9f57f3fb1ef688e231b911e0b414da241804c511/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <tianon@dockerproject.org> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/docker.git\nBuilder: buildkit\n\nTags: 29.3.0-cli, 29.3-cli, 29-cli, cli, 29.3.0-cli-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8\nGitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a\nDirectory: 29/cli\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8\nGitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a\nDirectory: 29/dind\n\nTags: 29.3.0-dind-rootless, 29.3-dind-rootless, 29-dind-rootless, dind-rootless\nArchitectures: amd64, arm64v8\nGitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a\nDirectory: 29/dind-rootless\n\nTags: 29.3.0-windowsservercore-ltsc2025, 29.3-windowsservercore-ltsc2025, 29-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 29.3.0-windowsservercore, 29.3-windowsservercore, 29-windowsservercore, windowsservercore\nArchitectures: windows-amd64\nGitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a\nDirectory: 29/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\nBuilder: classic\n\nTags: 29.3.0-windowsservercore-ltsc2022, 29.3-windowsservercore-ltsc2022, 29-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 29.3.0-windowsservercore, 29.3-windowsservercore, 29-windowsservercore, windowsservercore\nArchitectures: windows-amd64\nGitCommit: 41fd7e84aa8931e6066b04a20e969ca07b60547a\nDirectory: 29/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\nBuilder: classic\n"
  },
  {
    "path": "library/drupal",
    "content": "# this file is generated via https://github.com/docker-library/drupal/blob/8527ca0412b456cd3719cb8719bfb83da5d530a7/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/drupal.git\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.5/apache-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.5/fpm-trixie\n\nTags: 11.3.5-php8.5-apache-bookworm, 11.3-php8.5-apache-bookworm, 11-php8.5-apache-bookworm, php8.5-apache-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.5/apache-bookworm\n\nTags: 11.3.5-php8.5-fpm-bookworm, 11.3-php8.5-fpm-bookworm, 11-php8.5-fpm-bookworm, php8.5-fpm-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.5/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.5/fpm-alpine3.23\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.5/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.4/apache-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.4/fpm-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.4/apache-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.4/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.4/fpm-alpine3.23\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3c2ac6ffad4db2ec1b201893c5a6c0ff26239360\nDirectory: 11.3/php8.4/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.4/apache-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.4/fpm-trixie\n\nTags: 11.2.10-php8.4-apache-bookworm, 11.2-php8.4-apache-bookworm, 11.2.10-apache-bookworm, 11.2-apache-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.4/apache-bookworm\n\nTags: 11.2.10-php8.4-fpm-bookworm, 11.2-php8.4-fpm-bookworm, 11.2.10-fpm-bookworm, 11.2-fpm-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.4/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.4/fpm-alpine3.23\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.4/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.3/apache-trixie\n\nTags: 11.2.10-php8.3-fpm-trixie, 11.2-php8.3-fpm-trixie, 11.2.10-php8.3-fpm, 11.2-php8.3-fpm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.3/fpm-trixie\n\nTags: 11.2.10-php8.3-apache-bookworm, 11.2-php8.3-apache-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.3/apache-bookworm\n\nTags: 11.2.10-php8.3-fpm-bookworm, 11.2-php8.3-fpm-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.3/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.3/fpm-alpine3.23\n\nTags: 11.2.10-php8.3-fpm-alpine3.22, 11.2-php8.3-fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0d9b553e28d816166cd59f3971b6c6c6b11351b\nDirectory: 11.2/php8.3/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.4/apache-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.4/fpm-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.4/apache-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.4/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.4/fpm-alpine3.23\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.4/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.3/apache-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.3/fpm-trixie\n\nTags: 10.6.5-php8.3-apache-bookworm, 10.6-php8.3-apache-bookworm, 10-php8.3-apache-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.3/apache-bookworm\n\nTags: 10.6.5-php8.3-fpm-bookworm, 10.6-php8.3-fpm-bookworm, 10-php8.3-fpm-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.3/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.3/fpm-alpine3.23\n\nTags: 10.6.5-php8.3-fpm-alpine3.22, 10.6-php8.3-fpm-alpine3.22, 10-php8.3-fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 194c0607b6d5b9197aa79f710e2b4f6bf85a846e\nDirectory: 10.6/php8.3/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.4/apache-trixie\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.4/fpm-trixie\n\nTags: 10.5.8-php8.4-apache-bookworm, 10.5-php8.4-apache-bookworm, 10.5.8-apache-bookworm, 10.5-apache-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.4/apache-bookworm\n\nTags: 10.5.8-php8.4-fpm-bookworm, 10.5-php8.4-fpm-bookworm, 10.5.8-fpm-bookworm, 10.5-fpm-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.4/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.4/fpm-alpine3.23\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.4/fpm-alpine3.22\n\nTags: 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\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.3/apache-trixie\n\nTags: 10.5.8-php8.3-fpm-trixie, 10.5-php8.3-fpm-trixie, 10.5.8-php8.3-fpm, 10.5-php8.3-fpm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.3/fpm-trixie\n\nTags: 10.5.8-php8.3-apache-bookworm, 10.5-php8.3-apache-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.3/apache-bookworm\n\nTags: 10.5.8-php8.3-fpm-bookworm, 10.5-php8.3-fpm-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.3/fpm-bookworm\n\nTags: 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\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.3/fpm-alpine3.23\n\nTags: 10.5.8-php8.3-fpm-alpine3.22, 10.5-php8.3-fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4a684115b7703293a77e383381f19a23b2212b3d\nDirectory: 10.5/php8.3/fpm-alpine3.22\n"
  },
  {
    "path": "library/eclipse-mosquitto",
    "content": "Maintainers: Roger Light <roger@atchoo.org> (@ralight)\nGitRepo: https://github.com/eclipse-mosquitto/mosquitto.git\nGitCommit: 5b74cce8a4fe2a73b57df6c703bfde2cfd535d60\nArchitectures: amd64, arm32v6, arm64v8, i386, ppc64le, s390x\n\nTags: 2.1.2-alpine, 2.1-alpine, alpine, 2, latest\nDirectory: docker/2.1-alpine\n\nTags: 2.0.22, 2.0.22-openssl, 2.0, 2.0-openssl, 2-openssl, openssl\nDirectory: docker/2.0-openssl\n\nTags: 1.6.15-openssl, 1.6-openssl\nDirectory: docker/1.6-openssl\n"
  },
  {
    "path": "library/eclipse-temurin",
    "content": "# Eclipse Temurin OpenJDK images provided by the Eclipse Foundation.\n\nMaintainers: George Adams <george.adams@microsoft.com> (@gdams),\n             Stewart Addison <sxa@redhat.com> (@sxa)\nGitRepo: https://github.com/adoptium/containers.git\nGitFetch: refs/heads/main\nBuilder: buildkit\n\n#------------------------------v8 images---------------------------------\nTags: 8u482-b08-jdk-alpine-3.20, 8-jdk-alpine-3.20, 8-alpine-3.20\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/alpine/3.20\n\nTags: 8u482-b08-jdk-alpine-3.21, 8-jdk-alpine-3.21, 8-alpine-3.21\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/alpine/3.21\n\nTags: 8u482-b08-jdk-alpine-3.22, 8-jdk-alpine-3.22, 8-alpine-3.22\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/alpine/3.22\n\nTags: 8u482-b08-jdk-alpine-3.23, 8-jdk-alpine-3.23, 8-alpine-3.23, 8u482-b08-jdk-alpine, 8-jdk-alpine, 8-alpine\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/alpine/3.23\n\nTags: 8u482-b08-jdk-jammy, 8-jdk-jammy, 8-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/ubuntu/jammy\n\nTags: 8u482-b08-jdk-noble, 8-jdk-noble, 8-noble\nSharedTags: 8u482-b08-jdk, 8-jdk, 8\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/ubuntu/noble\n\nTags: 8u482-b08-jdk-ubi10-minimal, 8-jdk-ubi10-minimal, 8-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/ubi/ubi10-minimal\n\nTags: 8u482-b08-jdk-ubi9-minimal, 8-jdk-ubi9-minimal, 8-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/ubi/ubi9-minimal\n\nTags: 8u482-b08-jdk-windowsservercore-ltsc2025, 8-jdk-windowsservercore-ltsc2025, 8-windowsservercore-ltsc2025\nSharedTags: 8u482-b08-jdk-windowsservercore, 8-jdk-windowsservercore, 8-windowsservercore, 8u482-b08-jdk, 8-jdk, 8\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 8u482-b08-jdk-nanoserver-ltsc2025, 8-jdk-nanoserver-ltsc2025, 8-nanoserver-ltsc2025\nSharedTags: 8u482-b08-jdk-nanoserver, 8-jdk-nanoserver, 8-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 8u482-b08-jdk-windowsservercore-ltsc2022, 8-jdk-windowsservercore-ltsc2022, 8-windowsservercore-ltsc2022\nSharedTags: 8u482-b08-jdk-windowsservercore, 8-jdk-windowsservercore, 8-windowsservercore, 8u482-b08-jdk, 8-jdk, 8\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 8u482-b08-jdk-nanoserver-ltsc2022, 8-jdk-nanoserver-ltsc2022, 8-nanoserver-ltsc2022\nSharedTags: 8u482-b08-jdk-nanoserver, 8-jdk-nanoserver, 8-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jdk/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 8u482-b08-jre-alpine-3.20, 8-jre-alpine-3.20\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/alpine/3.20\n\nTags: 8u482-b08-jre-alpine-3.21, 8-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/alpine/3.21\n\nTags: 8u482-b08-jre-alpine-3.22, 8-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/alpine/3.22\n\nTags: 8u482-b08-jre-alpine-3.23, 8-jre-alpine-3.23, 8u482-b08-jre-alpine, 8-jre-alpine\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/alpine/3.23\n\nTags: 8u482-b08-jre-jammy, 8-jre-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/ubuntu/jammy\n\nTags: 8u482-b08-jre-noble, 8-jre-noble\nSharedTags: 8u482-b08-jre, 8-jre\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/ubuntu/noble\n\nTags: 8u482-b08-jre-ubi10-minimal, 8-jre-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/ubi/ubi10-minimal\n\nTags: 8u482-b08-jre-ubi9-minimal, 8-jre-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/ubi/ubi9-minimal\n\nTags: 8u482-b08-jre-windowsservercore-ltsc2025, 8-jre-windowsservercore-ltsc2025\nSharedTags: 8u482-b08-jre-windowsservercore, 8-jre-windowsservercore, 8u482-b08-jre, 8-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 8u482-b08-jre-nanoserver-ltsc2025, 8-jre-nanoserver-ltsc2025\nSharedTags: 8u482-b08-jre-nanoserver, 8-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 8u482-b08-jre-windowsservercore-ltsc2022, 8-jre-windowsservercore-ltsc2022\nSharedTags: 8u482-b08-jre-windowsservercore, 8-jre-windowsservercore, 8u482-b08-jre, 8-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 8u482-b08-jre-nanoserver-ltsc2022, 8-jre-nanoserver-ltsc2022\nSharedTags: 8u482-b08-jre-nanoserver, 8-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 8/jre/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\n\n#------------------------------v11 images---------------------------------\nTags: 11.0.30_7-jdk-alpine-3.20, 11-jdk-alpine-3.20, 11-alpine-3.20\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/alpine/3.20\n\nTags: 11.0.30_7-jdk-alpine-3.21, 11-jdk-alpine-3.21, 11-alpine-3.21\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/alpine/3.21\n\nTags: 11.0.30_7-jdk-alpine-3.22, 11-jdk-alpine-3.22, 11-alpine-3.22\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/alpine/3.22\n\nTags: 11.0.30_7-jdk-alpine-3.23, 11-jdk-alpine-3.23, 11-alpine-3.23, 11.0.30_7-jdk-alpine, 11-jdk-alpine, 11-alpine\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/alpine/3.23\n\nTags: 11.0.30_7-jdk-jammy, 11-jdk-jammy, 11-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/ubuntu/jammy\n\nTags: 11.0.30_7-jdk-noble, 11-jdk-noble, 11-noble\nSharedTags: 11.0.30_7-jdk, 11-jdk, 11\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/ubuntu/noble\n\nTags: 11.0.30_7-jdk-ubi10-minimal, 11-jdk-ubi10-minimal, 11-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/ubi/ubi10-minimal\n\nTags: 11.0.30_7-jdk-ubi9-minimal, 11-jdk-ubi9-minimal, 11-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/ubi/ubi9-minimal\n\nTags: 11.0.30_7-jdk-windowsservercore-ltsc2025, 11-jdk-windowsservercore-ltsc2025, 11-windowsservercore-ltsc2025\nSharedTags: 11.0.30_7-jdk-windowsservercore, 11-jdk-windowsservercore, 11-windowsservercore, 11.0.30_7-jdk, 11-jdk, 11\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 11.0.30_7-jdk-nanoserver-ltsc2025, 11-jdk-nanoserver-ltsc2025, 11-nanoserver-ltsc2025\nSharedTags: 11.0.30_7-jdk-nanoserver, 11-jdk-nanoserver, 11-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 11.0.30_7-jdk-windowsservercore-ltsc2022, 11-jdk-windowsservercore-ltsc2022, 11-windowsservercore-ltsc2022\nSharedTags: 11.0.30_7-jdk-windowsservercore, 11-jdk-windowsservercore, 11-windowsservercore, 11.0.30_7-jdk, 11-jdk, 11\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 11.0.30_7-jdk-nanoserver-ltsc2022, 11-jdk-nanoserver-ltsc2022, 11-nanoserver-ltsc2022\nSharedTags: 11.0.30_7-jdk-nanoserver, 11-jdk-nanoserver, 11-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jdk/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 11.0.30_7-jre-alpine-3.20, 11-jre-alpine-3.20\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/alpine/3.20\n\nTags: 11.0.30_7-jre-alpine-3.21, 11-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/alpine/3.21\n\nTags: 11.0.30_7-jre-alpine-3.22, 11-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/alpine/3.22\n\nTags: 11.0.30_7-jre-alpine-3.23, 11-jre-alpine-3.23, 11.0.30_7-jre-alpine, 11-jre-alpine\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/alpine/3.23\n\nTags: 11.0.30_7-jre-jammy, 11-jre-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/ubuntu/jammy\n\nTags: 11.0.30_7-jre-noble, 11-jre-noble\nSharedTags: 11.0.30_7-jre, 11-jre\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/ubuntu/noble\n\nTags: 11.0.30_7-jre-ubi10-minimal, 11-jre-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/ubi/ubi10-minimal\n\nTags: 11.0.30_7-jre-ubi9-minimal, 11-jre-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/ubi/ubi9-minimal\n\nTags: 11.0.30_7-jre-windowsservercore-ltsc2025, 11-jre-windowsservercore-ltsc2025\nSharedTags: 11.0.30_7-jre-windowsservercore, 11-jre-windowsservercore, 11.0.30_7-jre, 11-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 11.0.30_7-jre-nanoserver-ltsc2025, 11-jre-nanoserver-ltsc2025\nSharedTags: 11.0.30_7-jre-nanoserver, 11-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 11.0.30_7-jre-windowsservercore-ltsc2022, 11-jre-windowsservercore-ltsc2022\nSharedTags: 11.0.30_7-jre-windowsservercore, 11-jre-windowsservercore, 11.0.30_7-jre, 11-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 11.0.30_7-jre-nanoserver-ltsc2022, 11-jre-nanoserver-ltsc2022\nSharedTags: 11.0.30_7-jre-nanoserver, 11-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 11/jre/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\n\n#------------------------------v17 images---------------------------------\nTags: 17.0.18_8-jdk-alpine-3.20, 17-jdk-alpine-3.20, 17-alpine-3.20\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/alpine/3.20\n\nTags: 17.0.18_8-jdk-alpine-3.21, 17-jdk-alpine-3.21, 17-alpine-3.21\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/alpine/3.21\n\nTags: 17.0.18_8-jdk-alpine-3.22, 17-jdk-alpine-3.22, 17-alpine-3.22\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/alpine/3.22\n\nTags: 17.0.18_8-jdk-alpine-3.23, 17-jdk-alpine-3.23, 17-alpine-3.23, 17.0.18_8-jdk-alpine, 17-jdk-alpine, 17-alpine\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/alpine/3.23\n\nTags: 17.0.18_8-jdk-jammy, 17-jdk-jammy, 17-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/ubuntu/jammy\n\nTags: 17.0.18_8-jdk-noble, 17-jdk-noble, 17-noble\nSharedTags: 17.0.18_8-jdk, 17-jdk, 17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/ubuntu/noble\n\nTags: 17.0.18_8-jdk-ubi10-minimal, 17-jdk-ubi10-minimal, 17-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/ubi/ubi10-minimal\n\nTags: 17.0.18_8-jdk-ubi9-minimal, 17-jdk-ubi9-minimal, 17-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/ubi/ubi9-minimal\n\nTags: 17.0.18_8-jdk-windowsservercore-ltsc2025, 17-jdk-windowsservercore-ltsc2025, 17-windowsservercore-ltsc2025\nSharedTags: 17.0.18_8-jdk-windowsservercore, 17-jdk-windowsservercore, 17-windowsservercore, 17.0.18_8-jdk, 17-jdk, 17\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 17.0.18_8-jdk-nanoserver-ltsc2025, 17-jdk-nanoserver-ltsc2025, 17-nanoserver-ltsc2025\nSharedTags: 17.0.18_8-jdk-nanoserver, 17-jdk-nanoserver, 17-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 17.0.18_8-jdk-windowsservercore-ltsc2022, 17-jdk-windowsservercore-ltsc2022, 17-windowsservercore-ltsc2022\nSharedTags: 17.0.18_8-jdk-windowsservercore, 17-jdk-windowsservercore, 17-windowsservercore, 17.0.18_8-jdk, 17-jdk, 17\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 17.0.18_8-jdk-nanoserver-ltsc2022, 17-jdk-nanoserver-ltsc2022, 17-nanoserver-ltsc2022\nSharedTags: 17.0.18_8-jdk-nanoserver, 17-jdk-nanoserver, 17-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jdk/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 17.0.18_8-jre-alpine-3.20, 17-jre-alpine-3.20\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/alpine/3.20\n\nTags: 17.0.18_8-jre-alpine-3.21, 17-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/alpine/3.21\n\nTags: 17.0.18_8-jre-alpine-3.22, 17-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/alpine/3.22\n\nTags: 17.0.18_8-jre-alpine-3.23, 17-jre-alpine-3.23, 17.0.18_8-jre-alpine, 17-jre-alpine\nArchitectures: amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/alpine/3.23\n\nTags: 17.0.18_8-jre-jammy, 17-jre-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/ubuntu/jammy\n\nTags: 17.0.18_8-jre-noble, 17-jre-noble\nSharedTags: 17.0.18_8-jre, 17-jre\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/ubuntu/noble\n\nTags: 17.0.18_8-jre-ubi10-minimal, 17-jre-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/ubi/ubi10-minimal\n\nTags: 17.0.18_8-jre-ubi9-minimal, 17-jre-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/ubi/ubi9-minimal\n\nTags: 17.0.18_8-jre-windowsservercore-ltsc2025, 17-jre-windowsservercore-ltsc2025\nSharedTags: 17.0.18_8-jre-windowsservercore, 17-jre-windowsservercore, 17.0.18_8-jre, 17-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 17.0.18_8-jre-nanoserver-ltsc2025, 17-jre-nanoserver-ltsc2025\nSharedTags: 17.0.18_8-jre-nanoserver, 17-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 17.0.18_8-jre-windowsservercore-ltsc2022, 17-jre-windowsservercore-ltsc2022\nSharedTags: 17.0.18_8-jre-windowsservercore, 17-jre-windowsservercore, 17.0.18_8-jre, 17-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 17.0.18_8-jre-nanoserver-ltsc2022, 17-jre-nanoserver-ltsc2022\nSharedTags: 17.0.18_8-jre-nanoserver, 17-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 17/jre/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\n\n#------------------------------v21 images---------------------------------\nTags: 21.0.10_7-jdk-alpine-3.20, 21-jdk-alpine-3.20, 21-alpine-3.20\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/alpine/3.20\n\nTags: 21.0.10_7-jdk-alpine-3.21, 21-jdk-alpine-3.21, 21-alpine-3.21\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/alpine/3.21\n\nTags: 21.0.10_7-jdk-alpine-3.22, 21-jdk-alpine-3.22, 21-alpine-3.22\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/alpine/3.22\n\nTags: 21.0.10_7-jdk-alpine-3.23, 21-jdk-alpine-3.23, 21-alpine-3.23, 21.0.10_7-jdk-alpine, 21-jdk-alpine, 21-alpine\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/alpine/3.23\n\nTags: 21.0.10_7-jdk-jammy, 21-jdk-jammy, 21-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/ubuntu/jammy\n\nTags: 21.0.10_7-jdk-noble, 21-jdk-noble, 21-noble\nSharedTags: 21.0.10_7-jdk, 21-jdk, 21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/ubuntu/noble\n\nTags: 21.0.10_7-jdk-ubi10-minimal, 21-jdk-ubi10-minimal, 21-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/ubi/ubi10-minimal\n\nTags: 21.0.10_7-jdk-ubi9-minimal, 21-jdk-ubi9-minimal, 21-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/ubi/ubi9-minimal\n\nTags: 21.0.10_7-jdk-windowsservercore-ltsc2025, 21-jdk-windowsservercore-ltsc2025, 21-windowsservercore-ltsc2025\nSharedTags: 21.0.10_7-jdk-windowsservercore, 21-jdk-windowsservercore, 21-windowsservercore, 21.0.10_7-jdk, 21-jdk, 21\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 21.0.10_7-jdk-nanoserver-ltsc2025, 21-jdk-nanoserver-ltsc2025, 21-nanoserver-ltsc2025\nSharedTags: 21.0.10_7-jdk-nanoserver, 21-jdk-nanoserver, 21-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 21.0.10_7-jdk-windowsservercore-ltsc2022, 21-jdk-windowsservercore-ltsc2022, 21-windowsservercore-ltsc2022\nSharedTags: 21.0.10_7-jdk-windowsservercore, 21-jdk-windowsservercore, 21-windowsservercore, 21.0.10_7-jdk, 21-jdk, 21\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 21.0.10_7-jdk-nanoserver-ltsc2022, 21-jdk-nanoserver-ltsc2022, 21-nanoserver-ltsc2022\nSharedTags: 21.0.10_7-jdk-nanoserver, 21-jdk-nanoserver, 21-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jdk/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 21.0.10_7-jre-alpine-3.20, 21-jre-alpine-3.20\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/alpine/3.20\n\nTags: 21.0.10_7-jre-alpine-3.21, 21-jre-alpine-3.21\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/alpine/3.21\n\nTags: 21.0.10_7-jre-alpine-3.22, 21-jre-alpine-3.22\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/alpine/3.22\n\nTags: 21.0.10_7-jre-alpine-3.23, 21-jre-alpine-3.23, 21.0.10_7-jre-alpine, 21-jre-alpine\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/alpine/3.23\n\nTags: 21.0.10_7-jre-jammy, 21-jre-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/ubuntu/jammy\n\nTags: 21.0.10_7-jre-noble, 21-jre-noble\nSharedTags: 21.0.10_7-jre, 21-jre\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/ubuntu/noble\n\nTags: 21.0.10_7-jre-ubi10-minimal, 21-jre-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/ubi/ubi10-minimal\n\nTags: 21.0.10_7-jre-ubi9-minimal, 21-jre-ubi9-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/ubi/ubi9-minimal\n\nTags: 21.0.10_7-jre-windowsservercore-ltsc2025, 21-jre-windowsservercore-ltsc2025\nSharedTags: 21.0.10_7-jre-windowsservercore, 21-jre-windowsservercore, 21.0.10_7-jre, 21-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 21.0.10_7-jre-nanoserver-ltsc2025, 21-jre-nanoserver-ltsc2025\nSharedTags: 21.0.10_7-jre-nanoserver, 21-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 21.0.10_7-jre-windowsservercore-ltsc2022, 21-jre-windowsservercore-ltsc2022\nSharedTags: 21.0.10_7-jre-windowsservercore, 21-jre-windowsservercore, 21.0.10_7-jre, 21-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 21.0.10_7-jre-nanoserver-ltsc2022, 21-jre-nanoserver-ltsc2022\nSharedTags: 21.0.10_7-jre-nanoserver, 21-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 21/jre/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\n\n#------------------------------v25 images---------------------------------\nTags: 25.0.2_10-jdk-alpine-3.21, 25-jdk-alpine-3.21, 25-alpine-3.21\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/alpine/3.21\n\nTags: 25.0.2_10-jdk-alpine-3.22, 25-jdk-alpine-3.22, 25-alpine-3.22\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/alpine/3.22\n\nTags: 25.0.2_10-jdk-alpine-3.23, 25-jdk-alpine-3.23, 25-alpine-3.23, 25.0.2_10-jdk-alpine, 25-jdk-alpine, 25-alpine\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/alpine/3.23\n\nTags: 25.0.2_10-jdk-jammy, 25-jdk-jammy, 25-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/ubuntu/jammy\n\nTags: 25.0.2_10-jdk-noble, 25-jdk-noble, 25-noble\nSharedTags: 25.0.2_10-jdk, 25-jdk, 25, latest\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/ubuntu/noble\n\nTags: 25.0.2_10-jdk-ubi10-minimal, 25-jdk-ubi10-minimal, 25-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/ubi/ubi10-minimal\n\nTags: 25.0.2_10-jdk-windowsservercore-ltsc2025, 25-jdk-windowsservercore-ltsc2025, 25-windowsservercore-ltsc2025\nSharedTags: 25.0.2_10-jdk-windowsservercore, 25-jdk-windowsservercore, 25-windowsservercore, 25.0.2_10-jdk, 25-jdk, 25, latest\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 25.0.2_10-jdk-nanoserver-ltsc2025, 25-jdk-nanoserver-ltsc2025, 25-nanoserver-ltsc2025\nSharedTags: 25.0.2_10-jdk-nanoserver, 25-jdk-nanoserver, 25-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 25.0.2_10-jdk-windowsservercore-ltsc2022, 25-jdk-windowsservercore-ltsc2022, 25-windowsservercore-ltsc2022\nSharedTags: 25.0.2_10-jdk-windowsservercore, 25-jdk-windowsservercore, 25-windowsservercore, 25.0.2_10-jdk, 25-jdk, 25, latest\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 25.0.2_10-jdk-nanoserver-ltsc2022, 25-jdk-nanoserver-ltsc2022, 25-nanoserver-ltsc2022\nSharedTags: 25.0.2_10-jdk-nanoserver, 25-jdk-nanoserver, 25-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jdk/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 25.0.2_10-jre-alpine-3.21, 25-jre-alpine-3.21\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/alpine/3.21\n\nTags: 25.0.2_10-jre-alpine-3.22, 25-jre-alpine-3.22\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/alpine/3.22\n\nTags: 25.0.2_10-jre-alpine-3.23, 25-jre-alpine-3.23, 25.0.2_10-jre-alpine, 25-jre-alpine\nArchitectures: amd64, arm64v8\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/alpine/3.23\n\nTags: 25.0.2_10-jre-jammy, 25-jre-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/ubuntu/jammy\n\nTags: 25.0.2_10-jre-noble, 25-jre-noble\nSharedTags: 25.0.2_10-jre, 25-jre\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/ubuntu/noble\n\nTags: 25.0.2_10-jre-ubi10-minimal, 25-jre-ubi10-minimal\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/ubi/ubi10-minimal\n\nTags: 25.0.2_10-jre-windowsservercore-ltsc2025, 25-jre-windowsservercore-ltsc2025\nSharedTags: 25.0.2_10-jre-windowsservercore, 25-jre-windowsservercore, 25.0.2_10-jre, 25-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 25.0.2_10-jre-nanoserver-ltsc2025, 25-jre-nanoserver-ltsc2025\nSharedTags: 25.0.2_10-jre-nanoserver, 25-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 25.0.2_10-jre-windowsservercore-ltsc2022, 25-jre-windowsservercore-ltsc2022\nSharedTags: 25.0.2_10-jre-windowsservercore, 25-jre-windowsservercore, 25.0.2_10-jre, 25-jre\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 25.0.2_10-jre-nanoserver-ltsc2022, 25-jre-nanoserver-ltsc2022\nSharedTags: 25.0.2_10-jre-nanoserver, 25-jre-nanoserver\nArchitectures: windows-amd64\nGitCommit: a475d69551c1fa735bb4bd1570b7c908691525b2\nDirectory: 25/jre/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/eggdrop",
    "content": "Maintainers: Geo Van O <geo@eggheads.org> (@vanosg)\nGitRepo: https://github.com/eggheads/eggdrop-docker.git\n\nTags: develop\nArchitectures: arm32v6, arm64v8, amd64\nGitCommit: 037d27fee1499a17a1062efcba0213801d82c405\nDirectory: develop\n\nTags: 1.9, 1.9.5\nArchitectures: amd64, arm32v6, arm64v8\nGitCommit: 57fb1652a1880665b12e9f51775f173ecde24285\nDirectory: 1.9\n\nTags: 1.10, 1.10.0, stable, latest\nArchitectures: amd64, arm32v6, arm64v8\nGitCommit: 2861815d67478e41667b8ed2cf9d3f13a5e755c1\nDirectory: 1.10\n\nTags: 1.10.1rc1\nArchitectures: amd64, arm32v6, arm64v8\nGitCommit: fa9fab693902545745642c75650b56379d17b16b\nDirectory: 1.10.1rc1\n"
  },
  {
    "path": "library/elasticsearch",
    "content": "Maintainers: Rene Groeschke (@breskeby)\nGitRepo: https://github.com/elastic/dockerfiles.git\nDirectory: elasticsearch\nBuilder: buildkit\n\nTags: 8.19.13\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8.19\nGitCommit: 2464ee331ec5d4430c6703417e23e5808af60826\n\nTags: 9.2.7\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/9.2\nGitCommit: 6894c1c3452a1129471711450e77cae505aa075c\n\nTags: 9.3.2\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/9.3\nGitCommit: 7792ce2b9df24ddfc41887c2530fd8b6bad9e005\n"
  },
  {
    "path": "library/elixir",
    "content": "# this file is generated via https://github.com/erlef/docker-elixir/blob/8fac2ddba9508801bf2a03bac7edbd1d7e9c135b/generate-stackbrew-library.sh\n\nMaintainers: . <c0b@users.noreply.github.com> (@c0b),\n             Tristan Sloughter <t@crashfast.com> (@tsloughter)\nGitRepo: https://github.com/erlef/docker-elixir.git\n\nTags: 1.19.5, 1.19, latest, 1.19.5-otp-28, 1.19-otp-28, otp-28\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19\n\nTags: 1.19.5-slim, 1.19-slim, slim, 1.19.5-otp-28-slim, 1.19-otp-28-slim, otp-28-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/slim\n\nTags: 1.19.5-alpine, 1.19-alpine, alpine, 1.19.5-otp-28-alpine, 1.19-otp-28-alpine, otp-28-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/alpine\n\nTags: 1.19.5-otp-26, 1.19-otp-26, otp-26\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/otp-26\n\nTags: 1.19.5-otp-26-alpine, 1.19-otp-26-alpine, otp-26-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/otp-26-alpine\n\nTags: 1.19.5-otp-26-slim, 1.19-otp-26-slim, otp-26-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/otp-26-slim\n\nTags: 1.19.5-otp-27, 1.19-otp-27, otp-27\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/otp-27\n\nTags: 1.19.5-otp-27-alpine, 1.19-otp-27-alpine, otp-27-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/otp-27-alpine\n\nTags: 1.19.5-otp-27-slim, 1.19-otp-27-slim, otp-27-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 77e28bff70ca14c08151f9850d98ae44d6204429\nDirectory: 1.19/otp-27-slim\n\nTags: 1.18.4, 1.18, 1.18.4-otp-28, 1.18-otp-28\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 1e80f1b239228598d4d086882e92a9cfe585c1b2\nDirectory: 1.18\n\nTags: 1.18.4-slim, 1.18-slim, 1.18.4-otp-28-slim, 1.18-otp-28-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 1e80f1b239228598d4d086882e92a9cfe585c1b2\nDirectory: 1.18/slim\n\nTags: 1.18.4-alpine, 1.18-alpine, 1.18.4-otp-28-alpine, 1.18-otp-28-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 1e80f1b239228598d4d086882e92a9cfe585c1b2\nDirectory: 1.18/alpine\n\nTags: 1.18.4-otp-25, 1.18-otp-25\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: d3c21f12232230e6d199446ccfc4fc34e02fc060\nDirectory: 1.18/otp-25\n\nTags: 1.18.4-otp-25-alpine, 1.18-otp-25-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: d3c21f12232230e6d199446ccfc4fc34e02fc060\nDirectory: 1.18/otp-25-alpine\n\nTags: 1.18.4-otp-25-slim, 1.18-otp-25-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: d3c21f12232230e6d199446ccfc4fc34e02fc060\nDirectory: 1.18/otp-25-slim\n\nTags: 1.18.4-otp-26, 1.18-otp-26\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: d3c21f12232230e6d199446ccfc4fc34e02fc060\nDirectory: 1.18/otp-26\n\nTags: 1.18.4-otp-26-alpine, 1.18-otp-26-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: d3c21f12232230e6d199446ccfc4fc34e02fc060\nDirectory: 1.18/otp-26-alpine\n\nTags: 1.18.4-otp-26-slim, 1.18-otp-26-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: d3c21f12232230e6d199446ccfc4fc34e02fc060\nDirectory: 1.18/otp-26-slim\n\nTags: 1.18.4-otp-27, 1.18-otp-27\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 1e80f1b239228598d4d086882e92a9cfe585c1b2\nDirectory: 1.18/otp-27\n\nTags: 1.18.4-otp-27-alpine, 1.18-otp-27-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 1e80f1b239228598d4d086882e92a9cfe585c1b2\nDirectory: 1.18/otp-27-alpine\n\nTags: 1.18.4-otp-27-slim, 1.18-otp-27-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 1e80f1b239228598d4d086882e92a9cfe585c1b2\nDirectory: 1.18/otp-27-slim\n\nTags: 1.17.3, 1.17, 1.17.3-otp-27, 1.17-otp-27\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17\n\nTags: 1.17.3-slim, 1.17-slim, 1.17.3-otp-27-slim, 1.17-otp-27-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/slim\n\nTags: 1.17.3-alpine, 1.17-alpine, 1.17.3-otp-27-alpine, 1.17-otp-27-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/alpine\n\nTags: 1.17.3-otp-25, 1.17-otp-25\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/otp-25\n\nTags: 1.17.3-otp-25-alpine, 1.17-otp-25-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/otp-25-alpine\n\nTags: 1.17.3-otp-25-slim, 1.17-otp-25-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/otp-25-slim\n\nTags: 1.17.3-otp-26, 1.17-otp-26\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/otp-26\n\nTags: 1.17.3-otp-26-alpine, 1.17-otp-26-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/otp-26-alpine\n\nTags: 1.17.3-otp-26-slim, 1.17-otp-26-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: 70cad0543fc1781daa678c2a8c44bc87a1c38767\nDirectory: 1.17/otp-26-slim\n\nTags: 1.16.3, 1.16, 1.16.3-otp-26, 1.16-otp-26\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16\n\nTags: 1.16.3-slim, 1.16-slim, 1.16.3-otp-26-slim, 1.16-otp-26-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/slim\n\nTags: 1.16.3-alpine, 1.16-alpine, 1.16.3-otp-26-alpine, 1.16-otp-26-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/alpine\n\nTags: 1.16.3-otp-24, 1.16-otp-24\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/otp-24\n\nTags: 1.16.3-otp-24-alpine, 1.16-otp-24-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/otp-24-alpine\n\nTags: 1.16.3-otp-24-slim, 1.16-otp-24-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/otp-24-slim\n\nTags: 1.16.3-otp-25, 1.16-otp-25\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/otp-25\n\nTags: 1.16.3-otp-25-alpine, 1.16-otp-25-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/otp-25-alpine\n\nTags: 1.16.3-otp-25-slim, 1.16-otp-25-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.16/otp-25-slim\n\nTags: 1.15.8, 1.15, 1.15.8-otp-26, 1.15-otp-26\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15\n\nTags: 1.15.8-slim, 1.15-slim, 1.15.8-otp-26-slim, 1.15-otp-26-slim\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/slim\n\nTags: 1.15.8-alpine, 1.15-alpine, 1.15.8-otp-26-alpine, 1.15-otp-26-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, s390x, ppc64le\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/alpine\n\nTags: 1.15.8-otp-24, 1.15-otp-24\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/otp-24\n\nTags: 1.15.8-otp-24-alpine, 1.15-otp-24-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/otp-24-alpine\n\nTags: 1.15.8-otp-24-slim, 1.15-otp-24-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/otp-24-slim\n\nTags: 1.15.8-otp-25, 1.15-otp-25\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/otp-25\n\nTags: 1.15.8-otp-25-alpine, 1.15-otp-25-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/otp-25-alpine\n\nTags: 1.15.8-otp-25-slim, 1.15-otp-25-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: f749dfb8a5b1e6945b2369e143107b9ad3b16664\nDirectory: 1.15/otp-25-slim\n"
  },
  {
    "path": "library/emqx",
    "content": "Maintainers: Rory Z <rory-z@outlook.com> (@rory-z), Ivan Dyachkov <ivan.dyachkov@emqx.io> (@id)\nGitRepo: https://github.com/emqx/emqx-docker.git\nGitFetch: refs/heads/main\n\nTags: 5.7.2, 5.7\nArchitectures: amd64, arm64v8\nGitCommit: 35e70c8e602687db5a447c9573bde8ab77335fdc\nDirectory: 5.7\nFile: Dockerfile\n\nTags: 5.8.8, 5.8, 5, latest\nArchitectures: amd64, arm64v8\nGitCommit: cddc2e939a0ec978fb381aaed4bf2cd172c625f6\nDirectory: 5.8\nFile: Dockerfile\n"
  },
  {
    "path": "library/erlang",
    "content": "# this file is generated via https://github.com/erlang/docker-erlang-otp/blob/9c7d9e72c8832cd5147afb9145f257555d841b2e/generate-stackbrew-library.sh\n\nMaintainers: Mr C0B <denc716@gmail.com> (@c0b)\nGitRepo: https://github.com/erlang/docker-erlang-otp.git\n\nTags: 29.0.0.0-rc2, 29.0.0, 29.0, 29\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: a9319116d7fc78cd5fec90cf59e921e0ac46f2ce\nDirectory: 29\n\nTags: 29.0.0.0-rc2-slim, 29.0.0-slim, 29.0-slim, 29-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 328bb8706f49eaa0815d24ba80583b654db8c58e\nDirectory: 29/slim\n\nTags: 29.0.0.0-rc2-alpine, 29.0.0-alpine, 29.0-alpine, 29-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: a9319116d7fc78cd5fec90cf59e921e0ac46f2ce\nDirectory: 29/alpine\n\nTags: 28.4.1.0, 28.4.1, 28.4, 28, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 28\n\nTags: 28.4.1.0-slim, 28.4.1-slim, 28.4-slim, 28-slim, slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 328bb8706f49eaa0815d24ba80583b654db8c58e\nDirectory: 28/slim\n\nTags: 28.4.1.0-alpine, 28.4.1-alpine, 28.4-alpine, 28-alpine, alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 28/alpine\n\nTags: 27.3.4.9, 27.3.4, 27.3, 27\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 27\n\nTags: 27.3.4.9-slim, 27.3.4-slim, 27.3-slim, 27-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 27/slim\n\nTags: 27.3.4.9-alpine, 27.3.4-alpine, 27.3-alpine, 27-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 27/alpine\n\nTags: 26.2.5.18, 26.2.5, 26.2, 26\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 26\n\nTags: 26.2.5.18-slim, 26.2.5-slim, 26.2-slim, 26-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 26/slim\n\nTags: 26.2.5.18-alpine, 26.2.5-alpine, 26.2-alpine, 26-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 49f5aa13960b10e514b314aef4082400270abbe3\nDirectory: 26/alpine\n\nTags: 25.3.2.21, 25.3.2, 25.3, 25\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: ed3c77d4426badd6646abb7aff04d38612918848\nDirectory: 25\n\nTags: 25.3.2.21-slim, 25.3.2-slim, 25.3-slim, 25-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: ed3c77d4426badd6646abb7aff04d38612918848\nDirectory: 25/slim\n\nTags: 25.3.2.21-alpine, 25.3.2-alpine, 25.3-alpine, 25-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: ed3c77d4426badd6646abb7aff04d38612918848\nDirectory: 25/alpine\n\nTags: 24.3.4.17, 24.3.4, 24.3, 24\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: c7e3d58244259ec45bd0b84df7287096d9833d19\nDirectory: 24\n\nTags: 24.3.4.17-slim, 24.3.4-slim, 24.3-slim, 24-slim\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: c7e3d58244259ec45bd0b84df7287096d9833d19\nDirectory: 24/slim\n\nTags: 24.3.4.17-alpine, 24.3.4-alpine, 24.3-alpine, 24-alpine\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 31b38022c405588392cfb37ff4ccb0cff92873ea\nDirectory: 24/alpine\n"
  },
  {
    "path": "library/fedora",
    "content": "Maintainers: Clement Verna <cverna@fedoraproject.org> (@cverna), Vipul Siddharth <siddharthvipul1@fedoraproject.org> (@siddharthvipul)\nGitRepo: https://github.com/fedora-cloud/docker-brew-fedora.git\n\nTags: 42\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/42\nGitCommit: 6b1fd3db569466aed79ef4d9c80d7bf035ba7849\namd64-Directory: x86_64/\narm64v8-Directory: aarch64/\ns390x-Directory: s390x/\nppc64le-Directory: ppc64le/\n\nTags: 43, latest\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/43\nGitCommit: 712479e6da09bdd55114541a05ffd3bc1ff0636d\namd64-Directory: x86_64/\narm64v8-Directory: aarch64/\ns390x-Directory: s390x/\nppc64le-Directory: ppc64le/\n\nTags: 44\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/44\nGitCommit: 911f6625ef7a100781938905b73ae981f8624b26\namd64-Directory: x86_64/\narm64v8-Directory: aarch64/\ns390x-Directory: s390x/\nppc64le-Directory: ppc64le/\n\nTags: 45, rawhide\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/45\nGitCommit: 3ac7a16746228f62cc54f46c67bc84f78f611ed5\namd64-Directory: x86_64/\narm64v8-Directory: aarch64/\ns390x-Directory: s390x/\nppc64le-Directory: ppc64le/\n"
  },
  {
    "path": "library/flink",
    "content": "# this file is generated via https://github.com/apache/flink-docker/blob/187238c6b444457d9b57279715fa16b37fe59e45/generate-stackbrew-library.sh\n\nMaintainers: The Apache Flink Project <dev@flink.apache.org> (@ApacheFlink)\nGitRepo: https://github.com/apache/flink-docker.git\n\nTags: 2.2.0-scala_2.12-java21, 2.2-scala_2.12-java21, scala_2.12-java21, 2.2.0-java21, 2.2-java21, java21\nArchitectures: amd64,arm64v8\nGitCommit: fbe91e0c410a77c7c894786fdf9d118b804eb2e7\nDirectory: ./2.2/scala_2.12-java21-ubuntu\n\nTags: 2.2.0-scala_2.12-java17, 2.2-scala_2.12-java17, scala_2.12-java17, 2.2.0-scala_2.12, 2.2-scala_2.12, scala_2.12, 2.2.0-java17, 2.2-java17, java17, 2.2.0, 2.2, latest\nArchitectures: amd64,arm64v8\nGitCommit: fbe91e0c410a77c7c894786fdf9d118b804eb2e7\nDirectory: ./2.2/scala_2.12-java17-ubuntu\n\nTags: 2.2.0-scala_2.12-java11, 2.2-scala_2.12-java11, scala_2.12-java11, 2.2.0-java11, 2.2-java11, java11\nArchitectures: amd64,arm64v8\nGitCommit: fbe91e0c410a77c7c894786fdf9d118b804eb2e7\nDirectory: ./2.2/scala_2.12-java11-ubuntu\n\nTags: 2.1.1-scala_2.12-java21, 2.1-scala_2.12-java21, 2.1.1-java21, 2.1-java21\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./2.1/scala_2.12-java21-ubuntu\n\nTags: 2.1.1-scala_2.12-java17, 2.1-scala_2.12-java17, 2.1.1-scala_2.12, 2.1-scala_2.12, 2.1.1-java17, 2.1-java17, 2.1.1, 2.1\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./2.1/scala_2.12-java17-ubuntu\n\nTags: 2.1.1-scala_2.12-java11, 2.1-scala_2.12-java11, 2.1.1-java11, 2.1-java11\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./2.1/scala_2.12-java11-ubuntu\n\nTags: 2.0.1-scala_2.12-java21, 2.0-scala_2.12-java21, 2.0.1-java21, 2.0-java21\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./2.0/scala_2.12-java21-ubuntu\n\nTags: 2.0.1-scala_2.12-java17, 2.0-scala_2.12-java17, 2.0.1-scala_2.12, 2.0-scala_2.12, 2.0.1-java17, 2.0-java17, 2.0.1, 2.0\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./2.0/scala_2.12-java17-ubuntu\n\nTags: 2.0.1-scala_2.12-java11, 2.0-scala_2.12-java11, 2.0.1-java11, 2.0-java11\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./2.0/scala_2.12-java11-ubuntu\n\nTags: 1.20.3-scala_2.12-java8, 1.20-scala_2.12-java8, 1.20.3-java8, 1.20-java8\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./1.20/scala_2.12-java8-ubuntu\n\nTags: 1.20.3-scala_2.12-java17, 1.20-scala_2.12-java17, 1.20.3-java17, 1.20-java17\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./1.20/scala_2.12-java17-ubuntu\n\nTags: 1.20.3-scala_2.12-java11, 1.20-scala_2.12-java11, 1.20.3-scala_2.12, 1.20-scala_2.12, 1.20.3-java11, 1.20-java11, 1.20.3, 1.20\nArchitectures: amd64,arm64v8\nGitCommit: cfeea17390958606ec56ffd7caaf24dd44263743\nDirectory: ./1.20/scala_2.12-java11-ubuntu\n"
  },
  {
    "path": "library/fluentd",
    "content": "Maintainers: Masahiro Nakagawa <repeatedly@gmail.com> (@repeatedly),\n             Fluentd developers <fluentd@googlegroups.com> (@fluent/admins)\nGitRepo: https://github.com/fluent/fluentd-docker-image.git\n\n# Debian images\nTags: v1.16.11-debian-1.0, v1.16-debian-1\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitFetch: refs/heads/v1.16\nGitCommit: f1cc6c311f673af8d4d68c7cbe97e5b0831511bc\nDirectory: v1.16/debian\n\n# Debian images\nTags: v1.19.2-debian-1.0, v1.19-debian-1, v1.19.2-1.0, v1.19-1, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 162a49598542a981bbf73470f0bba815dc4dbf0e\nDirectory: v1.19/debian\n"
  },
  {
    "path": "library/friendica",
    "content": "# This file is generated via https://github.com/friendica/docker/blob/9321c9a1e9b68461c342b85d27bab4046c4c8c38/generate-stackbrew-library.sh\n\nMaintainers: Friendica <info@friendi.ca> (@friendica), Philipp Holzer <admin@philipp.info> (@nupplaphil), S. Brusch (@ne20002)\nGitRepo: https://github.com/friendica/docker.git\nGitFetch: refs/heads/stable\n\nTags: 2024.12-apache, 2024.12\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343\nDirectory: 2024.12/apache\n\nTags: 2024.12-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343\nDirectory: 2024.12/fpm\n\nTags: 2024.12-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343\nDirectory: 2024.12/fpm-alpine\n\nTags: 2026.01-apache, apache, stable-apache, 2026.01, latest, stable\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 10607f3b885ca311dcb5c24f57c731ff1857ab14\nDirectory: 2026.01/apache\n\nTags: 2026.01-fpm, fpm, stable-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 10607f3b885ca311dcb5c24f57c731ff1857ab14\nDirectory: 2026.01/fpm\n\nTags: 2026.01-fpm-alpine, fpm-alpine, stable-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 10607f3b885ca311dcb5c24f57c731ff1857ab14\nDirectory: 2026.01/fpm-alpine\n\nTags: 2026.04-dev-apache, dev-apache, 2026.04-dev, dev\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 606b597b1d58fecdbd3387beeb1ee9274fd293b6\nDirectory: 2026.04-dev/apache\n\nTags: 2026.04-dev-fpm, dev-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 606b597b1d58fecdbd3387beeb1ee9274fd293b6\nDirectory: 2026.04-dev/fpm\n\nTags: 2026.04-dev-fpm-alpine, dev-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 606b597b1d58fecdbd3387beeb1ee9274fd293b6\nDirectory: 2026.04-dev/fpm-alpine"
  },
  {
    "path": "library/gazebo",
    "content": "Maintainers: Tully Foote <tfoote+buildfarm@osrfoundation.org> (@tfoote)\nGitRepo: https://github.com/osrf/docker_images.git\n"
  },
  {
    "path": "library/gcc",
    "content": "# this file is generated via https://github.com/docker-library/gcc/blob/58af1a21e095e94e24b02350d0dbbc3d7f0a62ba/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/gcc.git\n\n# Last Modified: 2025-08-08\nTags: 15.2.0, 15.2, 15, latest, 15.2.0-trixie, 15.2-trixie, 15-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 915af5ccbb6b09575e244f280c26925e77172039\nDirectory: 15\n# Docker EOL: 2027-02-08\n\n# Last Modified: 2025-05-23\nTags: 14.3.0, 14.3, 14, 14.3.0-trixie, 14.3-trixie, 14-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 280306a58a2ff0c21a95ed8abe882ac483d03c8b\nDirectory: 14\n# Docker EOL: 2026-11-23\n\n# Last Modified: 2025-06-05\nTags: 13.4.0, 13.4, 13, 13.4.0-bookworm, 13.4-bookworm, 13-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 118c07a8e6467baababb4634b6cfde14a67c24b0\nDirectory: 13\n# Docker EOL: 2026-12-05\n\n# Last Modified: 2025-07-11\nTags: 12.5.0, 12.5, 12, 12.5.0-bookworm, 12.5-bookworm, 12-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 7070981b23d22d3ca790f87bff26f13f3614dd4c\nDirectory: 12\n# Docker EOL: 2027-01-11\n"
  },
  {
    "path": "library/geonetwork",
    "content": "# this file is generated via https://github.com/geonetwork/docker-geonetwork/blob/69cb85ef18f6fe11ad4c9f848e47e307757199a8/generate-stackbrew-library.sh\n\nMaintainers: Joana Simoes <jo@doublebyte.net> (@doublebyte1),\n         Juan Luis Rodriguez <juanluisrp@geocat.net> (@juanluisrp),\n         Jose Garcia <jose.garcia@geocat.net> (@josegar74)\nGitRepo: https://github.com/geonetwork/docker-geonetwork.git\nGitFetch: refs/heads/main\n\nTags: 3.12.12, 3.12, 3\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 17278beab34080c90454c0b7059bd6b49701f979\nDirectory: 3.12.12\n\nTags: 3.12.12-postgres, 3.12-postgres, 3-postgres\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 17278beab34080c90454c0b7059bd6b49701f979\nDirectory: 3.12.12/postgres\n\nTags: 4.2.14, 4.2\nArchitectures: amd64, arm64v8\nGitCommit: 6848a28591a23af0e326b56cd9dde0bf34bc1fe9\nDirectory: 4.2.14\n\nTags: 4.4.9, 4.4, 4, latest\nArchitectures: amd64, arm64v8\nGitCommit: 8ad0acd56ed97a67ae07f8099b7ee255465946e4\nDirectory: 4.4.9\n"
  },
  {
    "path": "library/ghost",
    "content": "# this file is generated via https://github.com/docker-library/ghost/blob/98ead58b730477b94884db445c67f3251408cdc4/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit),\n             Austin Burdine <austin@acburdine.me> (@acburdine)\nGitRepo: https://github.com/docker-library/ghost.git\nGitCommit: c576eebcb19e49434f6d17ed4092204e73e55ac1\n\nTags: 6.22.1-bookworm, 6.22.1, 6.22-bookworm, 6.22, 6-bookworm, 6, bookworm, latest\nDirectory: 6/bookworm\nArchitectures: amd64, arm32v7, arm64v8, s390x\n\nTags: 6.22.1-alpine3.23, 6.22.1-alpine, 6.22-alpine3.23, 6.22-alpine, 6-alpine3.23, 6-alpine, alpine3.23, alpine\nDirectory: 6/alpine3.23\nArchitectures: amd64, arm64v8\n"
  },
  {
    "path": "library/golang",
    "content": "# this file is generated via https://github.com/docker-library/golang/blob/e3086cb731933f5a15c07553943a7120c82d70b8/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit),\n             Johan Euphrosine <proppy@google.com> (@proppy)\nGitRepo: https://github.com/docker-library/golang.git\nBuilder: buildkit\n\nTags: 1.26.1-trixie, 1.26-trixie, 1-trixie, trixie\nSharedTags: 1.26.1, 1.26, 1, latest\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/trixie\n\nTags: 1.26.1-bookworm, 1.26-bookworm, 1-bookworm, bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/bookworm\n\nTags: 1.26.1-alpine3.23, 1.26-alpine3.23, 1-alpine3.23, alpine3.23, 1.26.1-alpine, 1.26-alpine, 1-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/alpine3.23\n\nTags: 1.26.1-alpine3.22, 1.26-alpine3.22, 1-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/alpine3.22\n\nTags: 1.26.1-windowsservercore-ltsc2025, 1.26-windowsservercore-ltsc2025, 1-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 1.26.1-windowsservercore, 1.26-windowsservercore, 1-windowsservercore, windowsservercore, 1.26.1, 1.26, 1, latest\nArchitectures: windows-amd64\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 1.26.1-windowsservercore-ltsc2022, 1.26-windowsservercore-ltsc2022, 1-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 1.26.1-windowsservercore, 1.26-windowsservercore, 1-windowsservercore, windowsservercore, 1.26.1, 1.26, 1, latest\nArchitectures: windows-amd64\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 1.26.1-nanoserver-ltsc2025, 1.26-nanoserver-ltsc2025, 1-nanoserver-ltsc2025, nanoserver-ltsc2025\nSharedTags: 1.26.1-nanoserver, 1.26-nanoserver, 1-nanoserver, nanoserver\nArchitectures: windows-amd64\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 1.26.1-nanoserver-ltsc2022, 1.26-nanoserver-ltsc2022, 1-nanoserver-ltsc2022, nanoserver-ltsc2022\nSharedTags: 1.26.1-nanoserver, 1.26-nanoserver, 1-nanoserver, nanoserver\nArchitectures: windows-amd64\nGitCommit: c8592aafabc63c68da0ef207f1b35c0548a7114a\nDirectory: 1.26/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 1.25.8-trixie, 1.25-trixie\nSharedTags: 1.25.8, 1.25\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/trixie\n\nTags: 1.25.8-bookworm, 1.25-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/bookworm\n\nTags: 1.25.8-alpine3.23, 1.25-alpine3.23, 1.25.8-alpine, 1.25-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/alpine3.23\n\nTags: 1.25.8-alpine3.22, 1.25-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/alpine3.22\n\nTags: 1.25.8-windowsservercore-ltsc2025, 1.25-windowsservercore-ltsc2025\nSharedTags: 1.25.8-windowsservercore, 1.25-windowsservercore, 1.25.8, 1.25\nArchitectures: windows-amd64\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/windows/windowsservercore-ltsc2025\nBuilder: classic\nConstraints: windowsservercore-ltsc2025\n\nTags: 1.25.8-windowsservercore-ltsc2022, 1.25-windowsservercore-ltsc2022\nSharedTags: 1.25.8-windowsservercore, 1.25-windowsservercore, 1.25.8, 1.25\nArchitectures: windows-amd64\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/windows/windowsservercore-ltsc2022\nBuilder: classic\nConstraints: windowsservercore-ltsc2022\n\nTags: 1.25.8-nanoserver-ltsc2025, 1.25-nanoserver-ltsc2025\nSharedTags: 1.25.8-nanoserver, 1.25-nanoserver\nArchitectures: windows-amd64\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/windows/nanoserver-ltsc2025\nBuilder: classic\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 1.25.8-nanoserver-ltsc2022, 1.25-nanoserver-ltsc2022\nSharedTags: 1.25.8-nanoserver, 1.25-nanoserver\nArchitectures: windows-amd64\nGitCommit: f51096b5761d066ba6ead35d44179731a09c48e2\nDirectory: 1.25/windows/nanoserver-ltsc2022\nBuilder: classic\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: tip-20260314-trixie, tip-trixie\nSharedTags: tip-20260314, tip\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 79c4e52ec357082cd7b4e364052620d876490712\nDirectory: tip/trixie\n\nTags: tip-20260314-bookworm, tip-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 79c4e52ec357082cd7b4e364052620d876490712\nDirectory: tip/bookworm\n\nTags: tip-20260314-alpine3.23, tip-alpine3.23, tip-20260314-alpine, tip-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 79c4e52ec357082cd7b4e364052620d876490712\nDirectory: tip/alpine3.23\n\nTags: tip-20260314-alpine3.22, tip-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 79c4e52ec357082cd7b4e364052620d876490712\nDirectory: tip/alpine3.22\n"
  },
  {
    "path": "library/gradle",
    "content": "Maintainers: Louis Jacomet <louis@gradle.com> (@ljacomet),\n             Christoph Obexer <cobexer@gradle.com> (@cobexer),\n             Keegan Witt <keeganwitt@gmail.com> (@keeganwitt)\nGitRepo: https://github.com/gradle/docker-gradle.git\n\n# Gradle 9.x\n\nTags: 9.4.1-jdk25, 9.4-jdk25, 9-jdk25, jdk25, 9.4.1-jdk25-noble, 9.4-jdk25-noble, 9-jdk25-noble, jdk25-noble, latest, 9.4.1-jdk, 9.4-jdk, 9-jdk, jdk, 9.4.1, 9.4, 9, 9.4.1-jdk-noble, 9.4-jdk-noble, 9-jdk-noble, jdk-noble, 9.4.1-noble, 9.4-noble, 9-noble, noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk25-noble\n\nTags: 9.4.1-jdk25-alpine, 9.4-jdk25-alpine, 9-jdk25-alpine, jdk25-alpine, 9.4.1-jdk-alpine, 9.4-jdk-alpine, 9-jdk-alpine, jdk-alpine, 9.4.1-alpine, 9.4-alpine, 9-alpine, alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk25-alpine\n\nTags: 9.4.1-jdk25-corretto, 9.4-jdk25-corretto, 9-jdk25-corretto, jdk25-corretto, corretto, 9.4.1-jdk25-corretto-al2023, 9.4-jdk25-corretto-al2023, 9-jdk25-corretto-al2023, jdk25-corretto-al2023, corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk25-corretto\n\nTags: 9.4.1-jdk25-ubi, 9.4-jdk25-ubi, 9-jdk25-ubi, jdk25-ubi, ubi, 9.4.1-jdk25-ubi10, 9.4-jdk25-ubi10, 9-jdk25-ubi10, jdk25-ubi10, ubi10\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk25-ubi10\n\nTags: 9.4.1-jdk25-graal, 9.4-jdk25-graal, 9-jdk25-graal, jdk25-graal, 9.4.1-jdk-graal, 9.4-jdk-graal, 9-jdk-graal, jdk-graal, 9.4.1-graal, 9.4-graal, 9-graal, graal, 9.4.1-jdk25-graal-noble, 9.4-jdk25-graal-noble, 9-jdk25-graal-noble, jdk25-graal-noble, 9.4.1-jdk-graal-noble, 9.4-jdk-graal-noble, 9-jdk-graal-noble, jdk-graal-noble, 9.4.1-graal-noble, 9.4-graal-noble, 9-graal-noble, graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk25-noble-graal\n\nTags: 9.4.1-jdk21, 9.4-jdk21, 9-jdk21, jdk21, 9.4.1-jdk21-noble, 9.4-jdk21-noble, 9-jdk21-noble, jdk21-noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-noble\n\nTags: 9.4.1-jdk21-jammy, 9.4-jdk21-jammy, 9-jdk21-jammy, jdk21-jammy, 9.4.1-jdk-jammy, 9.4-jdk-jammy, 9-jdk-jammy, jdk-jammy, 9.4.1-jammy, 9.4-jammy, 9-jammy, jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-jammy\n\nTags: 9.4.1-jdk21-alpine, 9.4-jdk21-alpine, 9-jdk21-alpine, jdk21-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-alpine\n\nTags: 9.4.1-jdk21-corretto, 9.4-jdk21-corretto, 9-jdk21-corretto, jdk21-corretto, 9.4.1-jdk21-corretto-al2023, 9.4-jdk21-corretto-al2023, 9-jdk21-corretto-al2023, jdk21-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-corretto\n\nTags: 9.4.1-jdk21-ubi, 9.4-jdk21-ubi, 9-jdk21-ubi, jdk21-ubi, 9.4.1-jdk21-ubi10, 9.4-jdk21-ubi10, 9-jdk21-ubi10, jdk21-ubi10\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-ubi10\n\nTags: 9.4.1-jdk21-ubi9, 9.4-jdk21-ubi9, 9-jdk21-ubi9, jdk21-ubi9, ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-ubi9\n\nTags: 9.4.1-jdk21-graal, 9.4-jdk21-graal, 9-jdk21-graal, jdk21-graal, 9.4.1-jdk21-graal-noble, 9.4-jdk21-graal-noble, 9-jdk21-graal-noble, jdk21-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-noble-graal\n\nTags: 9.4.1-jdk21-graal-jammy, 9.4-jdk21-graal-jammy, 9-jdk21-graal-jammy, jdk21-graal-jammy, 9.4.1-jdk-graal-jammy, 9.4-jdk-graal-jammy, 9-jdk-graal-jammy, jdk-graal-jammy, 9.4.1-graal-jammy, 9.4-graal-jammy, 9-graal-jammy, graal-jammy\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk21-jammy-graal\n\nTags: 9.4.1-jdk17, 9.4-jdk17, 9-jdk17, jdk17, 9.4.1-jdk17-noble, 9.4-jdk17-noble, 9-jdk17-noble, jdk17-noble\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-noble\n\nTags: 9.4.1-jdk17-jammy, 9.4-jdk17-jammy, 9-jdk17-jammy, jdk17-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-jammy\n\nTags: 9.4.1-jdk17-alpine, 9.4-jdk17-alpine, 9-jdk17-alpine, jdk17-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-alpine\n\nTags: 9.4.1-jdk17-corretto, 9.4-jdk17-corretto, 9-jdk17-corretto, jdk17-corretto, 9.4.1-jdk17-corretto-al2023, 9.4-jdk17-corretto-al2023, 9-jdk17-corretto-al2023, jdk17-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-corretto\n\nTags: 9.4.1-jdk17-ubi, 9.4-jdk17-ubi, 9-jdk17-ubi, jdk17-ubi, 9.4.1-jdk17-ubi10, 9.4-jdk17-ubi10, 9-jdk17-ubi10, jdk17-ubi10\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-ubi10\n\nTags: 9.4.1-jdk17-ubi9, 9.4-jdk17-ubi9, 9-jdk17-ubi9, jdk17-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-ubi9\n\nTags: 9.4.1-jdk17-graal, 9.4-jdk17-graal, 9-jdk17-graal, jdk17-graal, 9.4.1-jdk17-graal-noble, 9.4-jdk17-graal-noble, 9-jdk17-graal-noble, jdk17-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-noble-graal\n\nTags: 9.4.1-jdk17-graal-jammy, 9.4-jdk17-graal-jammy, 9-jdk17-graal-jammy, jdk17-graal-jammy\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk17-jammy-graal\n\nTags: 9.4.1-jdk-lts-and-current, 9.4-jdk-lts-and-current, 9-jdk-lts-and-current, jdk-lts-and-current, 9.4.1-jdk-lts-and-current-noble, 9.4-jdk-lts-and-current-noble, 9-jdk-lts-and-current-noble, jdk-lts-and-current-noble, 9.4.1-jdk-25-and-25, 9.4-jdk-25-and-25, 9-jdk-25-and-25, jdk-25-and-25, 9.4.1-jdk-25-and-25-noble, 9.4-jdk-25-and-25-noble, 9-jdk-25-and-25-noble, jdk-25-and-25-noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk-lts-and-current\n\nTags: 9.4.1-jdk-lts-and-current-alpine, 9.4-jdk-lts-and-current-alpine, 9-jdk-lts-and-current-alpine, jdk-lts-and-current-alpine, 9.4.1-jdk-25-and-25-alpine, 9.4-jdk-25-and-25-alpine, 9-jdk-25-and-25-alpine, jdk-25-and-25-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk-lts-and-current-alpine\n\nTags: 9.4.1-jdk-lts-and-current-corretto, 9.4-jdk-lts-and-current-corretto, 9-jdk-lts-and-current-corretto, jdk-lts-and-current-corretto, 9.4.1-jdk-lts-and-current-corretto-al2023, 9.4-jdk-lts-and-current-corretto-al2023, 9-jdk-lts-and-current-corretto-al2023, jdk-lts-and-current-corretto-al2023, 9.4.1-jdk-25-and-25-corretto, 9.4-jdk-25-and-25-corretto, 9-jdk-25-and-25-corretto, jdk-25-and-25-corretto, 9.4.1-jdk-25-and-25-corretto-al2023, 9.4-jdk-25-and-25-corretto-al2023, 9-jdk-25-and-25-corretto-al2023, jdk-25-and-25-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk-lts-and-current-corretto\n\nTags: 9.4.1-jdk-lts-and-current-graal, 9.4-jdk-lts-and-current-graal, 9-jdk-lts-and-current-graal, jdk-lts-and-current-graal, 9.4.1-jdk-lts-and-current-graal-noble, 9.4-jdk-lts-and-current-graal-noble, 9-jdk-lts-and-current-graal-noble, jdk-lts-and-current-graal-noble, 9.4.1-jdk-25-and-25-graal, 9.4-jdk-25-and-25-graal, 9-jdk-25-and-25-graal, jdk-25-and-25-graal, 9.4.1-jdk-25-and-25-graal-noble, 9.4-jdk-25-and-25-graal-noble, 9-jdk-25-and-25-graal-noble, jdk-25-and-25-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f1bff53fdc0c0492140cdf4df5a5973cd86d0427\nDirectory: jdk-lts-and-current-graal\n\n# Gradle 8.x\n\nTags: 8.14.4-jdk21, 8.14-jdk21, 8-jdk21, 8.14.4-jdk21-noble, 8.14-jdk21-noble, 8-jdk21-noble, 8.14.4-jdk, 8.14-jdk, 8-jdk, 8.14.4, 8.14, 8, 8.14.4-jdk-noble, 8.14-jdk-noble, 8-jdk-noble, 8.14.4-noble, 8.14-noble, 8-noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-noble\n\nTags: 8.14.4-jdk21-jammy, 8.14-jdk21-jammy, 8-jdk21-jammy, 8.14.4-jdk-jammy, 8.14-jdk-jammy, 8-jdk-jammy, 8.14.4-jammy, 8.14-jammy, 8-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-jammy\n\nTags: 8.14.4-jdk21-alpine, 8.14-jdk21-alpine, 8-jdk21-alpine, 8.14.4-jdk-alpine, 8.14-jdk-alpine, 8-jdk-alpine, 8.14.4-alpine, 8.14-alpine, 8-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-alpine\n\nTags: 8.14.4-jdk21-corretto, 8.14-jdk21-corretto, 8-jdk21-corretto, 8.14.4-jdk21-corretto-al2023, 8.14-jdk21-corretto-al2023, 8-jdk21-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-corretto\n\nTags: 8.14.4-jdk21-ubi, 8.14-jdk21-ubi, 8-jdk21-ubi, 8.14.4-jdk21-ubi9, 8.14-jdk21-ubi9, 8-jdk21-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-ubi9\n\nTags: 8.14.4-jdk21-graal, 8.14-jdk21-graal, 8-jdk21-graal, 8.14.4-jdk-graal, 8.14-jdk-graal, 8-jdk-graal, 8.14.4-graal, 8.14-graal, 8-graal, 8.14.4-jdk21-graal-noble, 8.14-jdk21-graal-noble, 8-jdk21-graal-noble, 8.14.4-jdk-graal-noble, 8.14-jdk-graal-noble, 8-jdk-graal-noble, 8.14.4-graal-noble, 8.14-graal-noble, 8-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-noble-graal\n\nTags: 8.14.4-jdk21-graal-jammy, 8.14-jdk21-graal-jammy, 8-jdk21-graal-jammy, 8.14.4-jdk-graal-jammy, 8.14-jdk-graal-jammy, 8-jdk-graal-jammy, 8.14.4-graal-jammy, 8.14-graal-jammy, 8-graal-jammy\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk21-jammy-graal\n\nTags: 8.14.4-jdk17, 8.14-jdk17, 8-jdk17, 8.14.4-jdk17-noble, 8.14-jdk17-noble, 8-jdk17-noble\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-noble\n\nTags: 8.14.4-jdk17-jammy, 8.14-jdk17-jammy, 8-jdk17-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-jammy\n\nTags: 8.14.4-jdk17-alpine, 8.14-jdk17-alpine, 8-jdk17-alpine\nArchitectures: amd64\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-alpine\n\nTags: 8.14.4-jdk17-corretto, 8.14-jdk17-corretto, 8-jdk17-corretto, 8.14.4-jdk17-corretto-al2023, 8.14-jdk17-corretto-al2023, 8-jdk17-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-corretto\n\nTags: 8.14.4-jdk17-ubi, 8.14-jdk17-ubi, 8-jdk17-ubi, 8.14.4-jdk17-ubi9, 8.14-jdk17-ubi9, 8-jdk17-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-ubi9\n\nTags: 8.14.4-jdk17-graal, 8.14-jdk17-graal, 8-jdk17-graal, 8.14.4-jdk17-graal-noble, 8.14-jdk17-graal-noble, 8-jdk17-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-noble-graal\n\nTags: 8.14.4-jdk17-graal-jammy, 8.14-jdk17-graal-jammy, 8-jdk17-graal-jammy\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk17-jammy-graal\n\nTags: 8.14.4-jdk11, 8.14-jdk11, 8-jdk11, jdk11, 8.14.4-jdk11-jammy, 8.14-jdk11-jammy, 8-jdk11-jammy, jdk11-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk11-jammy\n\nTags: 8.14.4-jdk11-alpine, 8.14-jdk11-alpine, 8-jdk11-alpine, jdk11-alpine\nArchitectures: amd64\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk11-alpine\n\nTags: 8.14.4-jdk11-corretto, 8.14-jdk11-corretto, 8-jdk11-corretto, jdk11-corretto, 8.14.4-jdk11-corretto-al2023, 8.14-jdk11-corretto-al2023, 8-jdk11-corretto-al2023, jdk11-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk11-corretto\n\nTags: 8.14.4-jdk11-ubi, 8.14-jdk11-ubi, 8-jdk11-ubi, jdk11-ubi, 8.14.4-jdk11-ubi9, 8.14-jdk11-ubi9, 8-jdk11-ubi9, jdk11-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk11-ubi9\n\nTags: 8.14.4-jdk8, 8.14-jdk8, 8-jdk8, jdk8, 8.14.4-jdk8-jammy, 8.14-jdk8-jammy, 8-jdk8-jammy, jdk8-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk8-jammy\n\nTags: 8.14.4-jdk8-corretto, 8.14-jdk8-corretto, 8-jdk8-corretto, jdk8-corretto, 8.14.4-jdk8-corretto-al2023, 8.14-jdk8-corretto-al2023, 8-jdk8-corretto-al2023, jdk8-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk8-corretto\n\nTags: 8.14.4-jdk8-ubi, 8.14-jdk8-ubi, 8-jdk8-ubi, jdk8-ubi, 8.14.4-jdk8-ubi9, 8.14-jdk8-ubi9, 8-jdk8-ubi9, jdk8-ubi9\nArchitectures: amd64, arm64v8, ppc64le\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk8-ubi9\n\nTags: 8.14.4-jdk24-graal, 8.14-jdk24-graal, 8-jdk24-graal, jdk24-graal, 8.14.4-jdk24-graal-noble, 8.14-jdk24-graal-noble, 8-jdk24-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8\nGitCommit: e36bff5ef3272bc6ddbbe8e6dd2679a99eb8af36\nDirectory: jdk24-noble-graal\n\n# Gradle 7.x\n\nTags: 7.6.6-jdk17, 7.6-jdk17, 7-jdk17, 7.6.6-jdk17-noble, 7.6-jdk17-noble, 7-jdk17-noble, 7.6.6-jdk, 7.6-jdk, 7-jdk, 7.6.6, 7.6, 7, 7.6.6-jdk-noble, 7.6-jdk-noble, 7-jdk-noble, 7.6.6-noble, 7.6-noble, 7-noble\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-noble\n\nTags: 7.6.6-jdk17-jammy, 7.6-jdk17-jammy, 7-jdk17-jammy, 7.6.6-jdk-jammy, 7.6-jdk-jammy, 7-jdk-jammy, 7.6.6-jammy, 7.6-jammy, 7-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-jammy\n\nTags: 7.6.6-jdk17-alpine, 7.6-jdk17-alpine, 7-jdk17-alpine, 7.6.6-jdk-alpine, 7.6-jdk-alpine, 7-jdk-alpine, 7.6.6-alpine, 7.6-alpine, 7-alpine\nArchitectures: amd64\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-alpine\n\nTags: 7.6.6-jdk17-corretto, 7.6-jdk17-corretto, 7-jdk17-corretto, 7.6.6-jdk17-corretto-al2023, 7.6-jdk17-corretto-al2023, 7-jdk17-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-corretto\n\nTags: 7.6.6-jdk17-ubi, 7.6-jdk17-ubi, 7-jdk17-ubi, 7.6.6-jdk17-ubi9, 7.6-jdk17-ubi9, 7-jdk17-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-ubi9\n\nTags: 7.6.6-jdk17-graal, 7.6-jdk17-graal, 7-jdk17-graal, 7.6.6-jdk-graal, 7.6-jdk-graal, 7-jdk-graal, 7.6.6-graal, 7.6-graal, 7-graal, 7.6.6-jdk17-graal-noble, 7.6-jdk17-graal-noble, 7-jdk17-graal-noble, 7.6.6-jdk-graal-noble, 7.6-jdk-graal-noble, 7-jdk-graal-noble, 7.6.6-graal-noble, 7.6-graal-noble, 7-graal-noble\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-noble-graal\n\nTags: 7.6.6-jdk17-graal-jammy, 7.6-jdk17-graal-jammy, 7-jdk17-graal-jammy, 7.6.6-jdk-graal-jammy, 7.6-jdk-graal-jammy, 7-jdk-graal-jammy, 7.6.6-graal-jammy, 7.6-graal-jammy, 7-graal-jammy\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk17-jammy-graal\n\nTags: 7.6.6-jdk11, 7.6-jdk11, 7-jdk11, 7.6.6-jdk11-jammy, 7.6-jdk11-jammy, 7-jdk11-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk11-jammy\n\nTags: 7.6.6-jdk11-alpine, 7.6-jdk11-alpine, 7-jdk11-alpine\nArchitectures: amd64\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk11-alpine\n\nTags: 7.6.6-jdk11-corretto, 7.6-jdk11-corretto, 7-jdk11-corretto, 7.6.6-jdk11-corretto-al2023, 7.6-jdk11-corretto-al2023, 7-jdk11-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk11-corretto\n\nTags: 7.6.6-jdk11-ubi, 7.6-jdk11-ubi, 7-jdk11-ubi, 7.6.6-jdk11-ubi9, 7.6-jdk11-ubi9, 7-jdk11-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk11-ubi9\n\nTags: 7.6.6-jdk8, 7.6-jdk8, 7-jdk8, 7.6.6-jdk8-jammy, 7.6-jdk8-jammy, 7-jdk8-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk8-jammy\n\nTags: 7.6.6-jdk8-corretto, 7.6-jdk8-corretto, 7-jdk8-corretto, 7.6.6-jdk8-corretto-al2023, 7.6-jdk8-corretto-al2023, 7-jdk8-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk8-corretto\n\nTags: 7.6.6-jdk8-ubi, 7.6-jdk8-ubi, 7-jdk8-ubi, 7.6.6-jdk8-ubi9, 7.6-jdk8-ubi9, 7-jdk8-ubi9\nArchitectures: amd64, arm64v8, ppc64le\nGitFetch: refs/heads/7\nGitCommit: 692045c708bc589ff8fa26fb083bdf1b23c0f8a5\nDirectory: jdk8-ubi9\n\n# Gradle 6.x\n\nTags: 6.9.4-jdk11, 6.9-jdk11, 6-jdk11, 6.9.4-jdk11-jammy, 6.9-jdk11-jammy, 6-jdk11-jammy, 6.9.4-jdk, 6.9-jdk, 6-jdk, 6.9.4, 6.9, 6, 6.9.4-jdk-jammy, 6.9-jdk-jammy, 6-jdk-jammy, 6.9.4-jammy, 6.9-jammy, 6-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk11-jammy\n\nTags: 6.9.4-jdk11-alpine, 6.9-jdk11-alpine, 6-jdk11-alpine, 6.9.4-jdk-alpine, 6.9-jdk-alpine, 6-jdk-alpine, 6.9.4-alpine, 6.9-alpine, 6-alpine\nArchitectures: amd64\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk11-alpine\n\nTags: 6.9.4-jdk11-corretto, 6.9-jdk11-corretto, 6-jdk11-corretto, 6.9.4-jdk11-corretto-al2023, 6.9-jdk11-corretto-al2023, 6-jdk11-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk11-corretto\n\nTags: 6.9.4-jdk11-ubi, 6.9-jdk11-ubi, 6-jdk11-ubi, 6.9.4-jdk11-ubi9, 6.9-jdk11-ubi9, 6-jdk11-ubi9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk11-ubi9\n\nTags: 6.9.4-jdk8, 6.9-jdk8, 6-jdk8, 6.9.4-jdk8-jammy, 6.9-jdk8-jammy, 6-jdk8-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk8-jammy\n\nTags: 6.9.4-jdk8-corretto, 6.9-jdk8-corretto, 6-jdk8-corretto, 6.9.4-jdk8-corretto-al2023, 6.9-jdk8-corretto-al2023, 6-jdk8-corretto-al2023\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk8-corretto\n\nTags: 6.9.4-jdk8-ubi, 6.9-jdk8-ubi, 6-jdk8-ubi, 6.9.4-jdk8-ubi9, 6.9-jdk8-ubi9, 6-jdk8-ubi9\nArchitectures: amd64, arm64v8, ppc64le\nGitFetch: refs/heads/6\nGitCommit: 89adc634c8c98e9c132935942ed75ffce1d862f1\nDirectory: jdk8-ubi9\n"
  },
  {
    "path": "library/groovy",
    "content": "Maintainers: Keegan Witt <keeganwitt@gmail.com> (@keeganwitt)\nGitRepo: https://github.com/groovy/docker-groovy.git\n\nTags: 5.0.4-jdk21, 5.0-jdk21, 5-jdk21, jdk21, 5.0.4-jdk21-noble, 5.0-jdk21-noble, 5-jdk21-noble, jdk21-noble, latest, 5.0.4-jdk, 5.0-jdk, 5-jdk, jdk, 5.0.4, 5.0, 5, 5.0.4-jdk-noble, 5.0-jdk-noble, 5-jdk-noble, jdk-noble, 5.0.4-noble, 5.0-noble, 5-noble, noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: 083f73d5193ae7fff1b17d6f990000b45ab83593\nDirectory: groovy-5/jdk21\n\nTags: 5.0.4-jdk21-alpine, 5.0-jdk21-alpine, 5-jdk21-alpine, jdk21-alpine, 5.0.4-jdk-alpine, 5.0-jdk-alpine, 5-jdk-alpine, jdk-alpine, 5.0.4-alpine, 5.0-alpine, 5-alpine, alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: 083f73d5193ae7fff1b17d6f990000b45ab83593\nDirectory: groovy-5/jdk21-alpine\n\nTags: 5.0.4-jdk17, 5.0-jdk17, 5-jdk17, jdk17, 5.0.4-jdk17-noble, 5.0-jdk17-noble, 5-jdk17-noble, jdk17-noble\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: 083f73d5193ae7fff1b17d6f990000b45ab83593\nDirectory: groovy-5/jdk17\n\nTags: 5.0.4-jdk17-alpine, 5.0-jdk17-alpine, 5-jdk17-alpine, jdk17-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: 083f73d5193ae7fff1b17d6f990000b45ab83593\nDirectory: groovy-5/jdk17-alpine\n\nTags: 5.0.4-jdk11, 5.0-jdk11, 5-jdk11, jdk11, 5.0.4-jdk11-jammy, 5.0-jdk11-jammy, 5-jdk11-jammy, jdk11-jammy, 5.0.4-jdk-jammy, 5.0-jdk-jammy, 5-jdk-jammy, jdk-jammy, 5.0.4-jammy, 5.0-jammy, 5-jammy, jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: 083f73d5193ae7fff1b17d6f990000b45ab83593\nDirectory: groovy-5/jdk11\n\nTags: 5.0.4-jdk11-alpine, 5.0-jdk11-alpine, 5-jdk11-alpine, jdk11-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: 083f73d5193ae7fff1b17d6f990000b45ab83593\nDirectory: groovy-5/jdk11-alpine\n\nTags: 4.0.30-jdk21, 4.0-jdk21, 4-jdk21, 4.0.30-jdk21-noble, 4.0-jdk21-noble, 4-jdk21-noble, 4.0.30-jdk, 4.0-jdk, 4-jdk, 4.0.30, 4.0, 4, 4.0.30-jdk-noble, 4.0-jdk-noble, 4-jdk-noble, 4.0.30-noble, 4.0-noble, 4-noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk21\n\nTags: 4.0.30-jdk21-alpine, 4.0-jdk21-alpine, 4-jdk21-alpine, 4.0.30-jdk-alpine, 4.0-jdk-alpine, 4-jdk-alpine, 4.0.30-alpine, 4.0-alpine, 4-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk21-alpine\n\nTags: 4.0.30-jdk17, 4.0-jdk17, 4-jdk17, 4.0.30-jdk17-noble, 4.0-jdk17-noble, 4-jdk17-noble\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk17\n\nTags: 4.0.30-jdk17-alpine, 4.0-jdk17-alpine, 4-jdk17-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk17-alpine\n\nTags: 4.0.30-jdk11, 4.0-jdk11, 4-jdk11, 4.0.30-jdk11-jammy, 4.0-jdk11-jammy, 4-jdk11-jammy, 4.0.30-jdk-jammy, 4.0-jdk-jammy, 4-jdk-jammy, 4.0.30-jammy, 4.0-jammy, 4-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk11\n\nTags: 4.0.30-jdk11-alpine, 4.0-jdk11-alpine, 4-jdk11-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk11-alpine\n\nTags: 4.0.30-jdk8, 4.0-jdk8, 4-jdk8, jdk8, 4.0.30-jdk8-jammy, 4.0-jdk8-jammy, 4-jdk8-jammy, jdk8-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk8\n\nTags: 4.0.30-jdk8-alpine, 4.0-jdk8-alpine, 4-jdk8-alpine, jdk8-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: f388b50e37ff68b227be28b78ba855d61f1061ba\nDirectory: groovy-4/jdk8-alpine\n\nTags: 3.0.25-jdk21, 3.0-jdk21, 3-jdk21, 3.0.25-jdk21-noble, 3.0-jdk21-noble, 3-jdk21-noble, 3.0.25-jdk, 3.0-jdk, 3-jdk, 3.0.25, 3.0, 3, 3.0.25-jdk-noble, 3.0-jdk-noble, 3-jdk-noble, 3.0.25-noble, 3.0-noble, 3-noble\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk21\n\nTags: 3.0.25-jdk21-alpine, 3.0-jdk21-alpine, 3-jdk21-alpine, 3.0.25-jdk-alpine, 3.0-jdk-alpine, 3-jdk-alpine, 3.0.25-alpine, 3.0-alpine, 3-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk21-alpine\n\nTags: 3.0.25-jdk17, 3.0-jdk17, 3-jdk17, 3.0.25-jdk17-noble, 3.0-jdk17-noble, 3-jdk17-noble\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk17\n\nTags: 3.0.25-jdk17-alpine, 3.0-jdk17-alpine, 3-jdk17-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk17-alpine\n\nTags: 3.0.25-jdk11, 3.0-jdk11, 3-jdk11, 3.0.25-jdk11-jammy, 3.0-jdk11-jammy, 3-jdk11-jammy, 3.0.25-jdk-jammy, 3.0-jdk-jammy, 3-jdk-jammy, 3.0.25-jammy, 3.0-jammy, 3-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk11\n\nTags: 3.0.25-jdk11-alpine, 3.0-jdk11-alpine, 3-jdk11-alpine\nArchitectures: amd64\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk11-alpine\n\nTags: 3.0.25-jdk8, 3.0-jdk8, 3-jdk8, 3.0.25-jdk8-jammy, 3.0-jdk8-jammy, 3-jdk8-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk8\n\nTags: 3.0.25-jdk8-alpine, 3.0-jdk8-alpine, 3-jdk8-alpine\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/master\nGitCommit: 5eca48a32862bf352bae6c28683df5ac0850625b\nDirectory: groovy-3/jdk8-alpine\n"
  },
  {
    "path": "library/haproxy",
    "content": "# this file is generated via https://github.com/docker-library/haproxy/blob/875a6dd82a46bc6474b8fa10003655f6103e7c67/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/haproxy.git\n\nTags: 3.4-dev7, 3.4-dev, 3.4-dev7-trixie, 3.4-dev-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1182ee9d1257d789b5a38b38920e7b836316b549\nDirectory: 3.4\n\nTags: 3.4-dev7-alpine, 3.4-dev-alpine, 3.4-dev7-alpine3.23, 3.4-dev-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1182ee9d1257d789b5a38b38920e7b836316b549\nDirectory: 3.4/alpine\n\nTags: 3.3.6, 3.3, latest, 3.3.6-trixie, 3.3-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 873e28d796e2467fcea0f46b5904ef3380f1cc0b\nDirectory: 3.3\n\nTags: 3.3.6-alpine, 3.3-alpine, alpine, 3.3.6-alpine3.23, 3.3-alpine3.23, alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 873e28d796e2467fcea0f46b5904ef3380f1cc0b\nDirectory: 3.3/alpine\n\nTags: 3.2.15, 3.2, lts, 3.2.15-trixie, 3.2-trixie, lts-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 55b3ead0f618eb7bab5a52ac0b1d86d3fbe7ebfb\nDirectory: 3.2\n\nTags: 3.2.15-alpine, 3.2-alpine, lts-alpine, 3.2.15-alpine3.23, 3.2-alpine3.23, lts-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 55b3ead0f618eb7bab5a52ac0b1d86d3fbe7ebfb\nDirectory: 3.2/alpine\n\nTags: 3.1.17, 3.1, 3.1.17-trixie, 3.1-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 8c6a4cd92c42227f540ddc039162f4b75672f372\nDirectory: 3.1\n\nTags: 3.1.17-alpine, 3.1-alpine, 3.1.17-alpine3.23, 3.1-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 8c6a4cd92c42227f540ddc039162f4b75672f372\nDirectory: 3.1/alpine\n\nTags: 3.0.19, 3.0, 3.0.19-trixie, 3.0-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 88a6be733ab3aa1db3eb72aaf37ad92c64b51ae5\nDirectory: 3.0\n\nTags: 3.0.19-alpine, 3.0-alpine, 3.0.19-alpine3.23, 3.0-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 88a6be733ab3aa1db3eb72aaf37ad92c64b51ae5\nDirectory: 3.0/alpine\n\nTags: 2.8.20, 2.8, 2.8.20-trixie, 2.8-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b18416a08cc0589fc14004eb86f3e8696ec0731b\nDirectory: 2.8\n\nTags: 2.8.20-alpine, 2.8-alpine, 2.8.20-alpine3.23, 2.8-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b18416a08cc0589fc14004eb86f3e8696ec0731b\nDirectory: 2.8/alpine\n\nTags: 2.6.25, 2.6, 2.6.25-trixie, 2.6-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4b9e56f8a15defd4fe110a9077cd0495e8447b54\nDirectory: 2.6\n\nTags: 2.6.25-alpine, 2.6-alpine, 2.6.25-alpine3.23, 2.6-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4b9e56f8a15defd4fe110a9077cd0495e8447b54\nDirectory: 2.6/alpine\n\nTags: 2.4.31, 2.4, 2.4.31-trixie, 2.4-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fe191528008021c1b653886a0f62479632c5fddc\nDirectory: 2.4\n\nTags: 2.4.31-alpine, 2.4-alpine, 2.4.31-alpine3.23, 2.4-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fe191528008021c1b653886a0f62479632c5fddc\nDirectory: 2.4/alpine\n"
  },
  {
    "path": "library/haskell",
    "content": "Maintainers: Albert Krewinkel <albert+docker@tarleb.com> (@tarleb),\n             Andrei Dziahel <develop7@develop7.info> (@develop7)\nGitRepo: https://github.com/haskell/docker-haskell\n\nTags: 9.14.1-bookworm, 9.14-bookworm, 9-bookworm, bookworm, 9.14.1, 9.14, 9, latest\nArchitectures: amd64, arm64v8\nGitCommit: 507dcd550c1eb050a5839572f74b908e3a3e306b\nDirectory: 9.14/bookworm\n\nTags: 9.14.1-slim-bookworm, 9.14-slim-bookworm, 9-slim-bookworm, slim-bookworm, 9-slim, slim\nArchitectures: amd64, arm64v8\nGitCommit: 507dcd550c1eb050a5839572f74b908e3a3e306b\nDirectory: 9.14/slim-bookworm\n\nTags: 9.12.2-bookworm, 9.12-bookworm, 9.12.2, 9.12\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.12/bookworm\n\nTags: 9.12.2-slim-bookworm, 9.12-slim-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.12/slim-bookworm\n\nTags: 9.10.3-bookworm, 9.10-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.10/bookworm\n\nTags: 9.10.3-slim-bookworm, 9.10-slim-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.10/slim-bookworm\n\nTags: 9.10.3-bullseye, 9.10-bullseye, 9-bullseye, bullseye, 9.10.3, 9.10\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.10/bullseye\n\nTags: 9.10.3-slim-bullseye, 9.10-slim-bullseye, 9-slim-bullseye, slim-bullseye\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.10/slim-bullseye\n\nTags: 9.8.4-bullseye, 9.8-bullseye, 9.8.4, 9.8\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.8/bullseye\n\nTags: 9.8.4-slim-bullseye, 9.8-slim-bullseye, 9.8.4-slim, 9.8-slim\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.8/slim-bullseye\n\nTags: 9.6.7-bullseye, 9.6-bullseye, 9.6.7, 9.6\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.6/bullseye\n\nTags: 9.6.7-slim-bullseye, 9.6-slim-bullseye, 9.6.7-slim, 9.6-slim\nArchitectures: amd64, arm64v8\nGitCommit: d478ceb8ff33f6208db87008e48cd084fd9747a1\nDirectory: 9.6/slim-bullseye\n"
  },
  {
    "path": "library/haxe",
    "content": "Maintainers: Andy Li <andy@onthewings.net> (@andyli),\n             Rudy Ges <k@klabz.org> (@kLabz)\nGitRepo: https://github.com/HaxeFoundation/docker-library-haxe.git\n\nTags: 4.3.7-bookworm, 4.3-bookworm\nSharedTags: 4.3.7, 4.3, latest\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.3/bookworm\n\nTags: 4.3.7-bullseye, 4.3-bullseye\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.3/bullseye\n\nTags: 4.3.7-windowsservercore-ltsc2025, 4.3-windowsservercore-ltsc2025\nSharedTags: 4.3.7-windowsservercore, 4.3-windowsservercore, 4.3.7, 4.3, latest\nArchitectures: windows-amd64\nGitCommit: 4e5b49d4004e4996d1d405de45967da6d36bdd94\nDirectory: 4.3/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 4.3.7-windowsservercore-ltsc2022, 4.3-windowsservercore-ltsc2022\nSharedTags: 4.3.7-windowsservercore, 4.3-windowsservercore, 4.3.7, 4.3, latest\nArchitectures: windows-amd64\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.3/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 4.3.7-alpine3.23, 4.3-alpine3.23, 4.3.7-alpine, 4.3-alpine\nArchitectures: amd64, arm64v8\nGitCommit: b235f810bf048b25bc8fc70ef20915452a5a76f9\nDirectory: 4.3/alpine3.23\n\nTags: 4.3.7-alpine3.22, 4.3-alpine3.22\nArchitectures: amd64, arm64v8\nGitCommit: 29c1c10f60a3d5d96c92c23ed8d07f5393c962b5\nDirectory: 4.3/alpine3.22\n\nTags: 4.3.7-alpine3.21, 4.3-alpine3.21\nArchitectures: amd64, arm64v8\nGitCommit: 29c1c10f60a3d5d96c92c23ed8d07f5393c962b5\nDirectory: 4.3/alpine3.21\n\nTags: 4.3.7-alpine3.20, 4.3-alpine3.20\nArchitectures: amd64, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.3/alpine3.20\n\nTags: 5.0.0-preview.1-bookworm, 5.0.0-bookworm, 5.0-bookworm\nSharedTags: 5.0.0-preview.1, 5.0.0, 5.0\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 5.0/bookworm\n\nTags: 5.0.0-preview.1-bullseye, 5.0.0-bullseye, 5.0-bullseye\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 5.0/bullseye\n\nTags: 5.0.0-preview.1-windowsservercore-ltsc2025, 5.0.0-windowsservercore-ltsc2025, 5.0-windowsservercore-ltsc2025\nSharedTags: 5.0.0-preview.1-windowsservercore, 5.0.0-windowsservercore, 5.0-windowsservercore, 5.0.0-preview.1, 5.0.0, 5.0\nArchitectures: windows-amd64\nGitCommit: 4e5b49d4004e4996d1d405de45967da6d36bdd94\nDirectory: 5.0/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 5.0.0-preview.1-windowsservercore-ltsc2022, 5.0.0-windowsservercore-ltsc2022, 5.0-windowsservercore-ltsc2022\nSharedTags: 5.0.0-preview.1-windowsservercore, 5.0.0-windowsservercore, 5.0-windowsservercore, 5.0.0-preview.1, 5.0.0, 5.0\nArchitectures: windows-amd64\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 5.0/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 5.0.0-preview.1-alpine3.23, 5.0.0-preview.1-alpine, 5.0.0-alpine3.23, 5.0-alpine3.23, 5.0.0-alpine, 5.0-alpine\nArchitectures: amd64, arm64v8\nGitCommit: b235f810bf048b25bc8fc70ef20915452a5a76f9\nDirectory: 5.0/alpine3.23\n\nTags: 5.0.0-preview.1-alpine3.22, 5.0.0-alpine3.22, 5.0-alpine3.22\nArchitectures: amd64, arm64v8\nGitCommit: 29c1c10f60a3d5d96c92c23ed8d07f5393c962b5\nDirectory: 5.0/alpine3.22\n\nTags: 5.0.0-preview.1-alpine3.21, 5.0.0-alpine3.21, 5.0-alpine3.21\nArchitectures: amd64, arm64v8\nGitCommit: 29c1c10f60a3d5d96c92c23ed8d07f5393c962b5\nDirectory: 5.0/alpine3.21\n\nTags: 5.0.0-preview.1-alpine3.20, 5.0.0-alpine3.20, 5.0-alpine3.20\nArchitectures: amd64, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 5.0/alpine3.20\n\nTags: 4.2.5-bookworm, 4.2-bookworm\nSharedTags: 4.2.5, 4.2\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.2/bookworm\n\nTags: 4.2.5-bullseye, 4.2-bullseye\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.2/bullseye\n\nTags: 4.2.5-windowsservercore-ltsc2025, 4.2-windowsservercore-ltsc2025\nSharedTags: 4.2.5-windowsservercore, 4.2-windowsservercore, 4.2.5, 4.2\nArchitectures: windows-amd64\nGitCommit: 4e5b49d4004e4996d1d405de45967da6d36bdd94\nDirectory: 4.2/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 4.2.5-windowsservercore-ltsc2022, 4.2-windowsservercore-ltsc2022\nSharedTags: 4.2.5-windowsservercore, 4.2-windowsservercore, 4.2.5, 4.2\nArchitectures: windows-amd64\nGitCommit: c0367972017a7b87845bf33477e29b1fe64ccc4a\nDirectory: 4.2/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 4.2.5-alpine3.20, 4.2-alpine3.20, 4.2.5-alpine, 4.2-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.2/alpine3.20\n\nTags: 4.1.5-bullseye, 4.1-bullseye\nSharedTags: 4.1.5, 4.1\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.1/bullseye\n\nTags: 4.1.5-windowsservercore-ltsc2025, 4.1-windowsservercore-ltsc2025\nSharedTags: 4.1.5-windowsservercore, 4.1-windowsservercore, 4.1.5, 4.1\nArchitectures: windows-amd64\nGitCommit: 4e5b49d4004e4996d1d405de45967da6d36bdd94\nDirectory: 4.1/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 4.1.5-windowsservercore-ltsc2022, 4.1-windowsservercore-ltsc2022\nSharedTags: 4.1.5-windowsservercore, 4.1-windowsservercore, 4.1.5, 4.1\nArchitectures: windows-amd64\nGitCommit: c0367972017a7b87845bf33477e29b1fe64ccc4a\nDirectory: 4.1/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 4.1.5-alpine3.20, 4.1-alpine3.20, 4.1.5-alpine, 4.1-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.1/alpine3.20\n\nTags: 4.0.5-bullseye, 4.0-bullseye\nSharedTags: 4.0.5, 4.0\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.0/bullseye\n\nTags: 4.0.5-windowsservercore-ltsc2025, 4.0-windowsservercore-ltsc2025\nSharedTags: 4.0.5-windowsservercore, 4.0-windowsservercore, 4.0.5, 4.0\nArchitectures: windows-amd64\nGitCommit: 4e5b49d4004e4996d1d405de45967da6d36bdd94\nDirectory: 4.0/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 4.0.5-windowsservercore-ltsc2022, 4.0-windowsservercore-ltsc2022\nSharedTags: 4.0.5-windowsservercore, 4.0-windowsservercore, 4.0.5, 4.0\nArchitectures: windows-amd64\nGitCommit: c0367972017a7b87845bf33477e29b1fe64ccc4a\nDirectory: 4.0/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 4.0.5-alpine3.20, 4.0-alpine3.20, 4.0.5-alpine, 4.0-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2636eee6b67d0c99730e4ab1d0d752d66809e3fa\nDirectory: 4.0/alpine3.20\n\n"
  },
  {
    "path": "library/hello-world",
    "content": "# this file is generated via https://github.com/docker-library/hello-world/blob/d2ad81cd7a88c0114e152da6a3849aba64a68610/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/hello-world.git\nGitCommit: d2ad81cd7a88c0114e152da6a3849aba64a68610\n\nTags: linux\nSharedTags: latest\nArchitectures: amd64, arm32v5, arm32v6, arm32v7, arm64v8, i386, mips64le, ppc64le, riscv64, s390x\namd64-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\namd64-Directory: amd64/hello-world\narm32v5-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\narm32v5-Directory: arm32v5/hello-world\narm32v6-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\narm32v6-Directory: arm32v6/hello-world\narm32v7-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\narm32v7-Directory: arm32v7/hello-world\narm64v8-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\narm64v8-Directory: arm64v8/hello-world\ni386-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\ni386-Directory: i386/hello-world\nmips64le-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\nmips64le-Directory: mips64le/hello-world\nppc64le-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\nppc64le-Directory: ppc64le/hello-world\nriscv64-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\nriscv64-Directory: riscv64/hello-world\ns390x-GitCommit: 6930d60e10e81283a57be3ee3a2b5ca328a40304\ns390x-Directory: s390x/hello-world\n\nTags: nanoserver-ltsc2025\nSharedTags: nanoserver, latest\nArchitectures: windows-amd64\nwindows-amd64-GitCommit: 08987c71f648c985f54be2a80bed4223cbd0723b\nwindows-amd64-Directory: amd64/hello-world/nanoserver-ltsc2025\nConstraints: nanoserver-ltsc2025\n\nTags: nanoserver-ltsc2022\nSharedTags: nanoserver, latest\nArchitectures: windows-amd64\nwindows-amd64-GitCommit: c816763efda4774cc0c628dca3c7dbd93c099928\nwindows-amd64-Directory: amd64/hello-world/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022\n"
  },
  {
    "path": "library/hitch",
    "content": "# this file was generated using https://github.com/varnish/docker-hitch/blob/fa19f55cf3b713e5f6787315c889a3885ab270bf/populate.sh\nMaintainers: Thijs Feryn <thijs@varni.sh> (@thijsferyn),\n             Guillaume Quintard <guillaume@varni.sh> (@gquintard)\nGitRepo: https://github.com/varnish/docker-hitch.git\t\n\nTags: 1, 1.8, 1.8.0, 1.8.0-1, latest\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: fa19f55cf3b713e5f6787315c889a3885ab270bf\n"
  },
  {
    "path": "library/httpd",
    "content": "# this file is generated via https://github.com/docker-library/httpd/blob/116c9eea074b85041a217cc17e4195eab2b78845/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/httpd.git\n\nTags: 2.4.66, 2.4, 2, latest, 2.4.66-trixie, 2.4-trixie, 2-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b8bf24dec3fb94efd3d81ac495bea8247d5115d9\nDirectory: 2.4\n\nTags: 2.4.66-alpine, 2.4-alpine, 2-alpine, alpine, 2.4.66-alpine3.23, 2.4-alpine3.23, 2-alpine3.23, alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c9c8c54099b541910797a90ca9b406e76966902f\nDirectory: 2.4/alpine\n"
  },
  {
    "path": "library/hylang",
    "content": "Maintainers: Paul Tagliamonte <paultag@hylang.org> (@paultag), Hy Docker Team (@hylang/docker)\nGitRepo: https://github.com/hylang/docker-hylang.git\nGitCommit: 012f1733e2a35ff9ec22c28350f9779f22415a45\n\nTags: 1.2.0-python3.14-trixie, 1.2-python3.14-trixie, 1-python3.14-trixie, python3.14-trixie, 1.2.0-trixie, 1.2-trixie, 1-trixie, trixie\nSharedTags: 1.2.0-python3.14, 1.2-python3.14, 1-python3.14, python3.14, 1.2.0, 1.2, 1, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.14-trixie\n\nTags: 1.2.0-python3.14-bookworm, 1.2-python3.14-bookworm, 1-python3.14-bookworm, python3.14-bookworm, 1.2.0-bookworm, 1.2-bookworm, 1-bookworm, bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nDirectory: latest/python3.14-bookworm\n\nTags: 1.2.0-python3.14-alpine3.23, 1.2-python3.14-alpine3.23, 1-python3.14-alpine3.23, python3.14-alpine3.23, 1.2.0-python3.14-alpine, 1.2-python3.14-alpine, 1-python3.14-alpine, python3.14-alpine, 1.2.0-alpine3.23, 1.2-alpine3.23, 1-alpine3.23, alpine3.23, 1.2.0-alpine, 1.2-alpine, 1-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.14-alpine3.23\n\nTags: 1.2.0-python3.14-alpine3.22, 1.2-python3.14-alpine3.22, 1-python3.14-alpine3.22, python3.14-alpine3.22, 1.2.0-alpine3.22, 1.2-alpine3.22, 1-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.14-alpine3.22\n\nTags: 1.2.0-python3.14-windowsservercore-ltsc2025, 1.2-python3.14-windowsservercore-ltsc2025, 1-python3.14-windowsservercore-ltsc2025, python3.14-windowsservercore-ltsc2025, 1.2.0-windowsservercore-ltsc2025, 1.2-windowsservercore-ltsc2025, 1-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 1.2.0-python3.14-windowsservercore, 1.2-python3.14-windowsservercore, 1-python3.14-windowsservercore, python3.14-windowsservercore, 1.2.0-windowsservercore, 1.2-windowsservercore, 1-windowsservercore, windowsservercore, 1.2.0-python3.14, 1.2-python3.14, 1-python3.14, python3.14, 1.2.0, 1.2, 1, latest\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\nDirectory: latest/python3.14-windowsservercore-ltsc2025\n\nTags: 1.2.0-python3.14-windowsservercore-ltsc2022, 1.2-python3.14-windowsservercore-ltsc2022, 1-python3.14-windowsservercore-ltsc2022, python3.14-windowsservercore-ltsc2022, 1.2.0-windowsservercore-ltsc2022, 1.2-windowsservercore-ltsc2022, 1-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 1.2.0-python3.14-windowsservercore, 1.2-python3.14-windowsservercore, 1-python3.14-windowsservercore, python3.14-windowsservercore, 1.2.0-windowsservercore, 1.2-windowsservercore, 1-windowsservercore, windowsservercore, 1.2.0-python3.14, 1.2-python3.14, 1-python3.14, python3.14, 1.2.0, 1.2, 1, latest\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\nDirectory: latest/python3.14-windowsservercore-ltsc2022\n\nTags: 1.2.0-python3.13-trixie, 1.2-python3.13-trixie, 1-python3.13-trixie, python3.13-trixie\nSharedTags: 1.2.0-python3.13, 1.2-python3.13, 1-python3.13, python3.13\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.13-trixie\n\nTags: 1.2.0-python3.13-bookworm, 1.2-python3.13-bookworm, 1-python3.13-bookworm, python3.13-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nDirectory: latest/python3.13-bookworm\n\nTags: 1.2.0-python3.13-alpine3.23, 1.2-python3.13-alpine3.23, 1-python3.13-alpine3.23, python3.13-alpine3.23, 1.2.0-python3.13-alpine, 1.2-python3.13-alpine, 1-python3.13-alpine, python3.13-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.13-alpine3.23\n\nTags: 1.2.0-python3.13-alpine3.22, 1.2-python3.13-alpine3.22, 1-python3.13-alpine3.22, python3.13-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.13-alpine3.22\n\nTags: 1.2.0-python3.13-windowsservercore-ltsc2025, 1.2-python3.13-windowsservercore-ltsc2025, 1-python3.13-windowsservercore-ltsc2025, python3.13-windowsservercore-ltsc2025\nSharedTags: 1.2.0-python3.13-windowsservercore, 1.2-python3.13-windowsservercore, 1-python3.13-windowsservercore, python3.13-windowsservercore, 1.2.0-python3.13, 1.2-python3.13, 1-python3.13, python3.13\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\nDirectory: latest/python3.13-windowsservercore-ltsc2025\n\nTags: 1.2.0-python3.13-windowsservercore-ltsc2022, 1.2-python3.13-windowsservercore-ltsc2022, 1-python3.13-windowsservercore-ltsc2022, python3.13-windowsservercore-ltsc2022\nSharedTags: 1.2.0-python3.13-windowsservercore, 1.2-python3.13-windowsservercore, 1-python3.13-windowsservercore, python3.13-windowsservercore, 1.2.0-python3.13, 1.2-python3.13, 1-python3.13, python3.13\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\nDirectory: latest/python3.13-windowsservercore-ltsc2022\n\nTags: 1.2.0-python3.12-trixie, 1.2-python3.12-trixie, 1-python3.12-trixie, python3.12-trixie\nSharedTags: 1.2.0-python3.12, 1.2-python3.12, 1-python3.12, python3.12\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.12-trixie\n\nTags: 1.2.0-python3.12-bookworm, 1.2-python3.12-bookworm, 1-python3.12-bookworm, python3.12-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nDirectory: latest/python3.12-bookworm\n\nTags: 1.2.0-python3.12-alpine3.23, 1.2-python3.12-alpine3.23, 1-python3.12-alpine3.23, python3.12-alpine3.23, 1.2.0-python3.12-alpine, 1.2-python3.12-alpine, 1-python3.12-alpine, python3.12-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.12-alpine3.23\n\nTags: 1.2.0-python3.12-alpine3.22, 1.2-python3.12-alpine3.22, 1-python3.12-alpine3.22, python3.12-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.12-alpine3.22\n\nTags: 1.2.0-python3.11-trixie, 1.2-python3.11-trixie, 1-python3.11-trixie, python3.11-trixie\nSharedTags: 1.2.0-python3.11, 1.2-python3.11, 1-python3.11, python3.11\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.11-trixie\n\nTags: 1.2.0-python3.11-bookworm, 1.2-python3.11-bookworm, 1-python3.11-bookworm, python3.11-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nDirectory: latest/python3.11-bookworm\n\nTags: 1.2.0-python3.11-alpine3.23, 1.2-python3.11-alpine3.23, 1-python3.11-alpine3.23, python3.11-alpine3.23, 1.2.0-python3.11-alpine, 1.2-python3.11-alpine, 1-python3.11-alpine, python3.11-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.11-alpine3.23\n\nTags: 1.2.0-python3.11-alpine3.22, 1.2-python3.11-alpine3.22, 1-python3.11-alpine3.22, python3.11-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.11-alpine3.22\n\nTags: 1.2.0-python3.10-trixie, 1.2-python3.10-trixie, 1-python3.10-trixie, python3.10-trixie\nSharedTags: 1.2.0-python3.10, 1.2-python3.10, 1-python3.10, python3.10\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.10-trixie\n\nTags: 1.2.0-python3.10-bookworm, 1.2-python3.10-bookworm, 1-python3.10-bookworm, python3.10-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nDirectory: latest/python3.10-bookworm\n\nTags: 1.2.0-python3.10-alpine3.23, 1.2-python3.10-alpine3.23, 1-python3.10-alpine3.23, python3.10-alpine3.23, 1.2.0-python3.10-alpine, 1.2-python3.10-alpine, 1-python3.10-alpine, python3.10-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.10-alpine3.23\n\nTags: 1.2.0-python3.10-alpine3.22, 1.2-python3.10-alpine3.22, 1-python3.10-alpine3.22, python3.10-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: latest/python3.10-alpine3.22\n\nTags: 1.2.0-pypy3.11-trixie, 1.2-pypy3.11-trixie, 1-pypy3.11-trixie, pypy3.11-trixie, 1.2.0-pypy-trixie, 1.2-pypy-trixie, 1-pypy-trixie, pypy-trixie\nSharedTags: 1.2.0-pypy3.11, 1.2-pypy3.11, 1-pypy3.11, pypy3.11, 1.2.0-pypy, 1.2-pypy, 1-pypy, pypy\nArchitectures: amd64, arm64v8, i386\nDirectory: latest/pypy3.11-trixie\n\nTags: 1.2.0-pypy3.11-bookworm, 1.2-pypy3.11-bookworm, 1-pypy3.11-bookworm, pypy3.11-bookworm, 1.2.0-pypy-bookworm, 1.2-pypy-bookworm, 1-pypy-bookworm, pypy-bookworm\nArchitectures: amd64, arm64v8, i386\nDirectory: latest/pypy3.11-bookworm\n\nTags: 1.2.0-pypy3.11-windowsservercore-ltsc2025, 1.2-pypy3.11-windowsservercore-ltsc2025, 1-pypy3.11-windowsservercore-ltsc2025, pypy3.11-windowsservercore-ltsc2025, 1.2.0-pypy-windowsservercore-ltsc2025, 1.2-pypy-windowsservercore-ltsc2025, 1-pypy-windowsservercore-ltsc2025, pypy-windowsservercore-ltsc2025\nSharedTags: 1.2.0-pypy3.11-windowsservercore, 1.2-pypy3.11-windowsservercore, 1-pypy3.11-windowsservercore, pypy3.11-windowsservercore, 1.2.0-pypy3.11, 1.2-pypy3.11, 1-pypy3.11, pypy3.11, 1.2.0-pypy, 1.2-pypy, 1-pypy, pypy\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\nDirectory: latest/pypy3.11-windowsservercore-ltsc2025\n\nTags: 1.2.0-pypy3.11-windowsservercore-ltsc2022, 1.2-pypy3.11-windowsservercore-ltsc2022, 1-pypy3.11-windowsservercore-ltsc2022, pypy3.11-windowsservercore-ltsc2022, 1.2.0-pypy-windowsservercore-ltsc2022, 1.2-pypy-windowsservercore-ltsc2022, 1-pypy-windowsservercore-ltsc2022, pypy-windowsservercore-ltsc2022\nSharedTags: 1.2.0-pypy3.11-windowsservercore, 1.2-pypy3.11-windowsservercore, 1-pypy3.11-windowsservercore, pypy3.11-windowsservercore, 1.2.0-pypy3.11, 1.2-pypy3.11, 1-pypy3.11, pypy3.11, 1.2.0-pypy, 1.2-pypy, 1-pypy, pypy\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\nDirectory: latest/pypy3.11-windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/ibm-semeru-runtimes",
    "content": "# IBM Semeru Runtimes official Docker images.\n\nMaintainers: Jayashree Gopi <jayasg12@in.ibm.com> (@jayasg12)\nGitRepo: https://github.com/ibmruntimes/semeru-containers.git\nGitFetch: refs/heads/ibm\n\n#-----------------------------openj9 v8 images---------------------------------\nTags: open-8u482-b08.1-jdk-jammy, open-8-jdk-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 8/jdk/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-8u482-b08.1-jdk-noble, open-8-jdk-noble\nSharedTags: open-8u482-b08.1-jdk, open-8-jdk\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 8/jdk/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\nTags: open-8u482-b08.1-jre-jammy, open-8-jre-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 8/jre/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-8u482-b08.1-jre-noble, open-8-jre-noble\nSharedTags: open-8u482-b08.1-jre, open-8-jre\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 8/jre/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\n#-----------------------------openj9 v11 images---------------------------------\nTags: open-11.0.30_7.1-jdk-jammy, open-11-jdk-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 11/jdk/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-11.0.30_7.1-jdk-noble, open-11-jdk-noble\nSharedTags: open-11.0.30_7.1-jdk, open-11-jdk\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 11/jdk/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\nTags: open-11.0.30_7.1-jre-jammy, open-11-jre-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 11/jre/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-11.0.30_7.1-jre-noble, open-11-jre-noble\nSharedTags: open-11.0.30_7.1-jre, open-11-jre\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 11/jre/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\n#-----------------------------openj9 v17 images---------------------------------\nTags: open-17.0.18_8.1-jdk-jammy, open-17-jdk-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 17/jdk/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-17.0.18_8.1-jdk-noble, open-17-jdk-noble\nSharedTags: open-17.0.18_8.1-jdk, open-17-jdk\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 17/jdk/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\nTags: open-17.0.18_8.1-jre-jammy, open-17-jre-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 17/jre/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-17.0.18_8.1-jre-noble, open-17-jre-noble\nSharedTags: open-17.0.18_8.1-jre, open-17-jre\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 17/jre/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\n#-----------------------------openj9 v21 images---------------------------------\nTags: open-21.0.10_7.1-jdk-jammy, open-21-jdk-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 21/jdk/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-21.0.10_7.1-jdk-noble, open-21-jdk-noble\nSharedTags: open-21.0.10_7.1-jdk, open-21-jdk\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 21/jdk/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\nTags: open-21.0.10_7.1-jre-jammy, open-21-jre-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 21/jre/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-21.0.10_7.1-jre-noble, open-21-jre-noble\nSharedTags: open-21.0.10_7.1-jre, open-21-jre\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 21/jre/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\n#-----------------------------openj9 v25 images---------------------------------\nTags: open-jdk-25.0.2_10.1-jdk-jammy, open-25-jdk-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 25/jdk/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-jdk-25.0.2_10.1-jdk-noble, open-25-jdk-noble\nSharedTags: open-jdk-25.0.2_10.1-jdk, open-25-jdk\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 25/jdk/ubuntu/noble\nFile: Dockerfile.open.releases.full\n\nTags: open-jdk-25.0.2_10.1-jre-jammy, open-25-jre-jammy\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 25/jre/ubuntu/jammy\nFile: Dockerfile.open.releases.full\n\nTags: open-jdk-25.0.2_10.1-jre-noble, open-25-jre-noble\nSharedTags: open-jdk-25.0.2_10.1-jre, open-25-jre\nArchitectures: amd64, ppc64le, s390x, arm64v8\nGitCommit: 759bb9d8bc91362cb28b8ae2a7bed6cc6909b3dc\nDirectory: 25/jre/ubuntu/noble\nFile: Dockerfile.open.releases.full\n"
  },
  {
    "path": "library/ibmjava",
    "content": "#ibmjava official images\n\nMaintainers: Jayashree Gopi <jayasg12@in.ibm.com> (@jayasg12)\nGitRepo: https://github.com/ibmruntimes/ci.docker.git\nGitFetch: refs/heads/main\n\nTags: 8-jre, jre, 8, latest\nArchitectures: amd64, ppc64le, s390x\nGitCommit: 759c43cdb4579d5a1269502efe6321f5523872e6\nDirectory: ibmjava/8/jre/ubuntu\n\nTags: 8-sfj, sfj\nArchitectures: amd64, ppc64le, s390x\nGitCommit: 759c43cdb4579d5a1269502efe6321f5523872e6\nDirectory: ibmjava/8/sfj/ubuntu\n\nTags: 8-sdk, sdk\nArchitectures: amd64, ppc64le, s390x\nGitCommit: 759c43cdb4579d5a1269502efe6321f5523872e6\nDirectory: ibmjava/8/sdk/ubuntu\n\n"
  },
  {
    "path": "library/influxdb",
    "content": "Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),\n             Devan Benz <dbenz@influxdata.com> (@devanbenz),\n             Geoffrey Wossum <gwossum@influxdata.com> (@gwossum),\n             Michael Gattozzi <mgattozzi@influxdata.com> (@mgattozzi),\n             Praveenkumar Hemakumar <pkumar@influxdata.com> (@praveen-influx),\n             Trevor Hilton <thilton@influxdata.com> (@hiltontj),\n             Wayne Warren <wwarren@influxdata.com> (@waynr)\nGitRepo: https://github.com/influxdata/influxdata-docker\nGitCommit: 6a18460ea289c2a775395316713fe49bf988ca1c\n\nTags: 1.12, 1.12.3\nArchitectures: amd64, arm64v8\nDirectory: influxdb/1.12\n\nTags: 1.12-alpine, 1.12.3-alpine\nArchitectures: amd64, arm64v8\nDirectory: influxdb/1.12/alpine\n\nTags: 1.12-data, 1.12.3-data, data\nDirectory: influxdb/1.12/data\n\nTags: 1.12-data-alpine, 1.12.3-data-alpine, data-alpine\nDirectory: influxdb/1.12/data/alpine\n\nTags: 1.12-meta, 1.12.3-meta, meta\nDirectory: influxdb/1.12/meta\n\nTags: 1.12-meta-alpine, 1.12.3-meta-alpine, meta-alpine\nDirectory: influxdb/1.12/meta/alpine\n\nTags: 1.11, 1.11.8\nArchitectures: amd64, arm64v8\nDirectory: influxdb/1.11\n\nTags: 1.11-alpine, 1.11.8-alpine\nArchitectures: amd64, arm64v8\nDirectory: influxdb/1.11/alpine\n\nTags: 1.11-data, 1.11.9-data\nDirectory: influxdb/1.11/data\n\nTags: 1.11-data-alpine, 1.11.9-data-alpine\nDirectory: influxdb/1.11/data/alpine\n\nTags: 1.11-meta, 1.11.9-meta\nDirectory: influxdb/1.11/meta\n\nTags: 1.11-meta-alpine, 1.11.9-meta-alpine\nDirectory: influxdb/1.11/meta/alpine\n\nTags: 2.7, 2.7.12\nArchitectures: amd64, arm64v8\nDirectory: influxdb/2.7\n\nTags: 2.7-alpine, 2.7.12-alpine\nArchitectures: amd64, arm64v8\nDirectory: influxdb/2.7/alpine\n\nTags: 2, 2.8, 2.8.0, latest\nArchitectures: amd64, arm64v8\nDirectory: influxdb/2.8\n\nTags: 2-alpine, 2.8-alpine, 2.8.0-alpine, alpine\nArchitectures: amd64, arm64v8\nDirectory: influxdb/2.8/alpine\n\nTags: 3-core, 3.8-core, 3.8.3-core, core\nArchitectures: amd64, arm64v8\nDirectory: influxdb/3.8-core\n\nTags: 3-enterprise, 3.8-enterprise, 3.8.4-enterprise, enterprise\nArchitectures: amd64, arm64v8\nDirectory: influxdb/3.8-enterprise\n"
  },
  {
    "path": "library/irssi",
    "content": "# this file is generated via https://github.com/jessfraz/irssi/blob/0b6d8e4fba6d47b66ab7a2030d91bf2c4c3c981a/generate-stackbrew-library.sh\n\nMaintainers: Jessie Frazelle <acidburn@google.com> (@jessfraz),\n             Tianon Gravi <admwiggin@gmail.com> (@tianon)\nGitRepo: https://github.com/jessfraz/irssi.git\n\nTags: 1.4.5, 1.4, 1, latest, 1.4.5-trixie, 1.4-trixie, 1-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 071b281a8011fb7ac5c5d6b6928e13fee8ab719c\nDirectory: debian\n\nTags: 1.4.5-alpine, 1.4-alpine, 1-alpine, alpine, 1.4.5-alpine3.23, 1.4-alpine3.23, 1-alpine3.23, alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 2349930c445e117f678c4e7c0fb5c0983d11686d\nDirectory: alpine\n"
  },
  {
    "path": "library/jetty",
    "content": "Maintainers: Greg Wilkins <gregw@webtide.com> (@gregw),\n             Lachlan Roberts <lachlan@webtide.com> (@lachlan-roberts),\n             Olivier Lamy <olamy@webtide.com> (@olamy),\n             Joakim Erdfelt <joakim@webtide.com> (@joakime)\nGitRepo: https://github.com/eclipse/jetty.docker.git\n\nTags: 12.1.7-jdk25-alpine, 12.1-jdk25-alpine, 12-jdk25-alpine, 12.1.7-jdk25-alpine-eclipse-temurin, 12.1-jdk25-alpine-eclipse-temurin, 12-jdk25-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.1/jdk25-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7, 12.1, 12, 12.1.7-jdk25, 12.1-jdk25, 12-jdk25, 12.1.7-eclipse-temurin, 12.1-eclipse-temurin, 12-eclipse-temurin, 12.1.7-jdk25-eclipse-temurin, 12.1-jdk25-eclipse-temurin, 12-jdk25-eclipse-temurin, latest, jdk25\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.1/jdk25\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk21-alpine, 12.1-jdk21-alpine, 12-jdk21-alpine, 12.1.7-jdk21-alpine-eclipse-temurin, 12.1-jdk21-alpine-eclipse-temurin, 12-jdk21-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.1/jdk21-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk21, 12.1-jdk21, 12-jdk21, 12.1.7-jdk21-eclipse-temurin, 12.1-jdk21-eclipse-temurin, 12-jdk21-eclipse-temurin, jdk21\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.1/jdk21\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk17-alpine, 12.1-jdk17-alpine, 12-jdk17-alpine, 12.1.7-jdk17-alpine-eclipse-temurin, 12.1-jdk17-alpine-eclipse-temurin, 12-jdk17-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.1/jdk17-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk17, 12.1-jdk17, 12-jdk17, 12.1.7-jdk17-eclipse-temurin, 12.1-jdk17-eclipse-temurin, 12-jdk17-eclipse-temurin, jdk17\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.1/jdk17\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jre21-alpine, 12.0-jre21-alpine, 12.0.33-jre21-alpine-eclipse-temurin, 12.0-jre21-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.0/jre21-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jre21, 12.0-jre21, 12.0.33-jre21-eclipse-temurin, 12.0-jre21-eclipse-temurin\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.0/jre21\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jre17-alpine, 12.0-jre17-alpine, 12.0.33-jre17-alpine-eclipse-temurin, 12.0-jre17-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.0/jre17-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jre17, 12.0-jre17, 12.0.33-jre17-eclipse-temurin, 12.0-jre17-eclipse-temurin\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.0/jre17\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk25-alpine, 12.0-jdk25-alpine, 12.0.33-jdk25-alpine-eclipse-temurin, 12.0-jdk25-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.0/jdk25-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33, 12.0, 12.0.33-jdk25, 12.0-jdk25, 12.0.33-eclipse-temurin, 12.0-eclipse-temurin, 12.0.33-jdk25-eclipse-temurin, 12.0-jdk25-eclipse-temurin\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.0/jdk25\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk21-alpine, 12.0-jdk21-alpine, 12.0.33-jdk21-alpine-eclipse-temurin, 12.0-jdk21-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.0/jdk21-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk21, 12.0-jdk21, 12.0.33-jdk21-eclipse-temurin, 12.0-jdk21-eclipse-temurin\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.0/jdk21\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk17-alpine, 12.0-jdk17-alpine, 12.0.33-jdk17-alpine-eclipse-temurin, 12.0-jdk17-alpine-eclipse-temurin\nArchitectures: amd64\nDirectory: eclipse-temurin/12.0/jdk17-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk17, 12.0-jdk17, 12.0.33-jdk17-eclipse-temurin, 12.0-jdk17-eclipse-temurin\nArchitectures: amd64, arm64v8\nDirectory: eclipse-temurin/12.0/jdk17\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk25-alpine-amazoncorretto, 12.1-jdk25-alpine-amazoncorretto, 12-jdk25-alpine-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.1/jdk25-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-amazoncorretto, 12.1-amazoncorretto, 12-amazoncorretto, 12.1.7-jdk25-amazoncorretto, 12.1-jdk25-amazoncorretto, 12-jdk25-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.1/jdk25\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk21-alpine-amazoncorretto, 12.1-jdk21-alpine-amazoncorretto, 12-jdk21-alpine-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.1/jdk21-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk21-amazoncorretto, 12.1-jdk21-amazoncorretto, 12-jdk21-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.1/jdk21\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk17-alpine-amazoncorretto, 12.1-jdk17-alpine-amazoncorretto, 12-jdk17-alpine-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.1/jdk17-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.1.7-jdk17-amazoncorretto, 12.1-jdk17-amazoncorretto, 12-jdk17-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.1/jdk17\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk25-al2023-amazoncorretto, 12.0-jdk25-al2023-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk25-al2023\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk21-alpine-amazoncorretto, 12.0-jdk21-alpine-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk21-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk21-al2023-amazoncorretto, 12.0-jdk21-al2023-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk21-al2023\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk21-amazoncorretto, 12.0-jdk21-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk21\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk17-alpine-amazoncorretto, 12.0-jdk17-alpine-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk17-alpine\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk17-al2023-amazoncorretto, 12.0-jdk17-al2023-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk17-al2023\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n\nTags: 12.0.33-jdk17-amazoncorretto, 12.0-jdk17-amazoncorretto\nArchitectures: amd64, arm64v8\nDirectory: amazoncorretto/12.0/jdk17\nGitCommit: 129219a733371faa1dc04d2465cd9531f99f6cd4\n"
  },
  {
    "path": "library/joomla",
    "content": "# this file is generated via https://github.com/joomla-docker/docker-joomla/blob/ee137cbaebee5425cb84a113d559c4c8c26c1c0b/generate-stackbrew-library.sh\n\nMaintainers: Llewellyn van der Merwe <llewellyn.van-der-merwe@community.joomla.org> (@Llewellynvdm),\n             Harald Leithner <harald.leithner@community.joomla.org> (@HLeithner)\nGitRepo: https://github.com/joomla-docker/docker-joomla.git\n\nTags: 6.0.3-php8.3-apache, 6.0-php8.3-apache, 6-php8.3-apache, php8.3-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 6.0/php8.3/apache\n\nTags: 6.0.3-php8.3-fpm-alpine, 6.0-php8.3-fpm-alpine, 6-php8.3-fpm-alpine, php8.3-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 6.0/php8.3/fpm-alpine\n\nTags: 6.0.3-php8.3-fpm, 6.0-php8.3-fpm, 6-php8.3-fpm, php8.3-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 6.0/php8.3/fpm\n\nTags: 6.0.3, 6.0, 6, latest, 6.0.3-apache, 6.0-apache, 6-apache, apache, 6.0.3-php8.4, 6.0-php8.4, 6-php8.4, php8.4, 6.0.3-php8.4-apache, 6.0-php8.4-apache, 6-php8.4-apache, php8.4-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 6.0/php8.4/apache\n\nTags: 6.0.3-php8.4-fpm-alpine, 6.0-php8.4-fpm-alpine, 6-php8.4-fpm-alpine, php8.4-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 6.0/php8.4/fpm-alpine\n\nTags: 6.0.3-php8.4-fpm, 6.0-php8.4-fpm, 6-php8.4-fpm, php8.4-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 6.0/php8.4/fpm\n\nTags: 5.4.3-php8.2-apache, 5.4-php8.2-apache, 5-php8.2-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 5.4/php8.2/apache\n\nTags: 5.4.3-php8.2-fpm-alpine, 5.4-php8.2-fpm-alpine, 5-php8.2-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 5.4/php8.2/fpm-alpine\n\nTags: 5.4.3-php8.2-fpm, 5.4-php8.2-fpm, 5-php8.2-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 5.4/php8.2/fpm\n\nTags: 5.4.3, 5.4, 5, 5.4.3-apache, 5.4-apache, 5-apache, 5.4.3-php8.3, 5.4-php8.3, 5-php8.3, 5.4.3-php8.3-apache, 5.4-php8.3-apache, 5-php8.3-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 5.4/php8.3/apache\n\nTags: 5.4.3-php8.3-fpm-alpine, 5.4-php8.3-fpm-alpine, 5-php8.3-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 5.4/php8.3/fpm-alpine\n\nTags: 5.4.3-php8.3-fpm, 5.4-php8.3-fpm, 5-php8.3-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3f4f203e035f1175c40cfea25e0db404ba3baa6b\nDirectory: 5.4/php8.3/fpm\n"
  },
  {
    "path": "library/jruby",
    "content": "Maintainers: JRuby Admin <admin@jruby.org> (@jruby),\n             Charles Oliver Nutter <headius@headius.com> (@headius),\n             Thomas E Enebo <tom.enebo@gmail.com> (@enebo)\nGitRepo: https://github.com/jruby/docker-jruby.git\nGitFetch: refs/heads/master\nGitCommit: 19b2eb743a76f23e95173f29944c3a07f8e24f5f\n\nTags: latest, 10, 10.0, 10.0.4, 10.0-jre, 10.0-jre21, 10.0.4-jre, 10.0.4-jre21, 10.0.4.0, 10.0.4.0-jre, 10.0.4.0-jre21\nArchitectures: amd64, arm64v8\nDirectory: 10.0/jre21\n\nTags: 10-jdk, 10-jdk21, 10.0-jdk, 10.0-jdk21, 10.0.4-jdk, 10.0.4-jdk21, 10.0.4.0-jdk, 10.0.4.0-jdk21\nArchitectures: amd64, arm64v8\nDirectory: 10.0/jdk21\n\nTags: 10.0-jre25, 10.0.4-jre25, 10.0.4.0-jre25\nArchitectures: amd64, arm64v8\nDirectory: 10.0/jre25\n\nTags: 10.0-jdk25, 10.0.4-jdk25, 10.0.4.0-jdk25\nArchitectures: amd64, arm64v8\nDirectory: 10.0/jdk25\n\nTags: 9, 9.4, 9.4.14, 9.4-jre, 9.4-jre8, 9.4.14-jre, 9.4.14-jre8, 9.4.14.0, 9.4.14.0-jre, 9.4.14.0-jre8\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jre8\n\nTags: 9-jdk, 9-jdk8, 9.4-jdk, 9.4-jdk8, 9.4.14-jdk, 9.4.14-jdk8, 9.4.14.0-jdk, 9.4.14.0-jdk8\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jdk8\n\nTags: 9.4-jre11, 9.4.14-jre11, 9.4.14.0-jre11\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jre11\n\nTags: 9.4-jdk11, 9.4.14-jdk11, 9.4.14.0-jdk11\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jdk11\n\nTags: 9.4-jdk17, 9.4.14-jdk17, 9.4.14.0-jdk17\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jdk17\n\nTags: 9.4-jre17, 9.4.14-jre17, 9.4.14.0-jre17\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jre17\n\nTags: 9.4-jdk21, 9.4.14-jdk21, 9.4.14.0-jdk21\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jdk21\n\nTags: 9.4-jre21, 9.4.14-jre21, 9.4.14.0-jre21\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jre21\n\nTags: 9.4-jdk25, 9.4.14-jdk25, 9.4.14.0-jdk25\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jdk25\n\nTags: 9.4-jre25, 9.4.14-jre25, 9.4.14.0-jre25\nArchitectures: amd64, arm64v8\nDirectory: 9.4/jre25\n\nTags: 9.3, 9.3.15, 9.3-jre, 9.3-jre8, 9.3.15-jre, 9.3.15-jre8, 9.3.15.0, 9.3.15.0-jre, 9.3.15.0-jre8\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jre8\n\nTags: 9.3-jdk, 9.3-jdk8, 9.3.15-jdk, 9.3.15-jdk8, 9.3.15.0-jdk, 9.3.15.0-jdk8\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jdk8\n\nTags: 9.3-jre11, 9.3.15-jre11, 9.3.15.0-jre11\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jre11\n\nTags: 9.3-jdk11, 9.3.15-jdk11, 9.3.15.0-jdk11\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jdk11\n\nTags: 9.3-jdk17, 9.3.15-jdk17, 9.3.15.0-jdk17\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jdk17\n\nTags: 9.3-jre17, 9.3.15-jre17, 9.3.15.0-jre17\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jre17\n\nTags: 9.3-jdk21, 9.3.15-jdk21, 9.3.15.0-jdk21\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jdk21\n\nTags: 9.3-jre21, 9.3.15-jre21, 9.3.15.0-jre21\nArchitectures: amd64, arm64v8\nDirectory: 9.3/jre21\n\nTags: 10.0-dev-jre21\nArchitectures: amd64, arm64v8\nDirectory: 10.0-dev/jre21\n\nTags: 10.0-dev-jdk21\nArchitectures: amd64, arm64v8\nDirectory: 10.0-dev/jdk21\n\nTags: 10.0-dev-jre25\nArchitectures: amd64, arm64v8\nDirectory: 10.0-dev/jre25\n\nTags: 10.0-dev-jdk25\nArchitectures: amd64, arm64v8\nDirectory: 10.0-dev/jdk25\n\nTags: 10.1-dev-jre21\nArchitectures: amd64, arm64v8\nDirectory: 10.1-dev/jre21\n\nTags: 10.1-dev-jdk21\nArchitectures: amd64, arm64v8\nDirectory: 10.1-dev/jdk21\n\nTags: 10.1-dev-jre25\nArchitectures: amd64, arm64v8\nDirectory: 10.1-dev/jre25\n\nTags: 10.1-dev-jdk25\nArchitectures: amd64, arm64v8\nDirectory: 10.1-dev/jdk25\n\nTags: 9.4-dev-jre8\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jre8\n\nTags: 9.4-dev-jdk8\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jdk8\n\nTags: 9.4-dev-jre11\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jre11\n\nTags: 9.4-dev-jdk11\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jdk11\n\nTags: 9.4-dev-jdk17\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jdk17\n\nTags: 9.4-dev-jre17\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jre17\n\nTags: 9.4-dev-jdk21\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jdk21\n\nTags: 9.4-dev-jre21\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jre21\n\nTags: 9.4-dev-jdk25\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jdk25\n\nTags: 9.4-dev-jre25\nArchitectures: amd64, arm64v8\nDirectory: 9.4-dev/jre25\n\n"
  },
  {
    "path": "library/julia",
    "content": "# this file is generated via https://github.com/docker-library/julia/blob/632505b60c6b0d7158c173285717eb6e5424afdc/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/julia.git\nGitCommit: a39df0142b228b077c522c80385872cae1ca67b8\n\nTags: 1.12.5-trixie, 1.12-trixie, 1-trixie, trixie\nSharedTags: 1.12.5, 1.12, 1, latest\nDirectory: stable/trixie\nArchitectures: amd64, i386, arm64v8\n\nTags: 1.12.5-bookworm, 1.12-bookworm, 1-bookworm, bookworm\nDirectory: stable/bookworm\nArchitectures: amd64, i386, arm64v8\n\nTags: 1.12.5-windowsservercore-ltsc2025, 1.12-windowsservercore-ltsc2025, 1-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 1.12.5-windowsservercore, 1.12-windowsservercore, 1-windowsservercore, windowsservercore, 1.12.5, 1.12, 1, latest\nDirectory: stable/windows/servercore-ltsc2025\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\nTags: 1.12.5-windowsservercore-ltsc2022, 1.12-windowsservercore-ltsc2022, 1-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 1.12.5-windowsservercore, 1.12-windowsservercore, 1-windowsservercore, windowsservercore, 1.12.5, 1.12, 1, latest\nDirectory: stable/windows/servercore-ltsc2022\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n\nTags: 1.10.11-trixie, 1.10-trixie\nSharedTags: 1.10.11, 1.10\nDirectory: 1.10/trixie\nArchitectures: amd64, i386, arm64v8, ppc64le\n\nTags: 1.10.11-bookworm, 1.10-bookworm\nDirectory: 1.10/bookworm\nArchitectures: amd64, i386, arm64v8, ppc64le\n\nTags: 1.10.11-windowsservercore-ltsc2025, 1.10-windowsservercore-ltsc2025\nSharedTags: 1.10.11-windowsservercore, 1.10-windowsservercore, 1.10.11, 1.10\nDirectory: 1.10/windows/servercore-ltsc2025\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\nTags: 1.10.11-windowsservercore-ltsc2022, 1.10-windowsservercore-ltsc2022\nSharedTags: 1.10.11-windowsservercore, 1.10-windowsservercore, 1.10.11, 1.10\nDirectory: 1.10/windows/servercore-ltsc2022\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n\nTags: 1.11.9-trixie, 1.11-trixie\nSharedTags: 1.11.9, 1.11\nDirectory: 1.11/trixie\nArchitectures: amd64, i386, arm64v8, ppc64le\n\nTags: 1.11.9-bookworm, 1.11-bookworm\nDirectory: 1.11/bookworm\nArchitectures: amd64, i386, arm64v8, ppc64le\n\nTags: 1.11.9-windowsservercore-ltsc2025, 1.11-windowsservercore-ltsc2025\nSharedTags: 1.11.9-windowsservercore, 1.11-windowsservercore, 1.11.9, 1.11\nDirectory: 1.11/windows/servercore-ltsc2025\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\nTags: 1.11.9-windowsservercore-ltsc2022, 1.11-windowsservercore-ltsc2022\nSharedTags: 1.11.9-windowsservercore, 1.11-windowsservercore, 1.11.9, 1.11\nDirectory: 1.11/windows/servercore-ltsc2022\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n\nTags: 1.13.0-beta3-trixie, 1.13-rc-trixie, rc-trixie\nSharedTags: 1.13.0-beta3, 1.13-rc, rc\nDirectory: rc/trixie\nArchitectures: amd64, i386, arm64v8\n\nTags: 1.13.0-beta3-bookworm, 1.13-rc-bookworm, rc-bookworm\nDirectory: rc/bookworm\nArchitectures: amd64, i386, arm64v8\n\nTags: 1.13.0-beta3-windowsservercore-ltsc2025, 1.13-rc-windowsservercore-ltsc2025, rc-windowsservercore-ltsc2025\nSharedTags: 1.13.0-beta3-windowsservercore, 1.13-rc-windowsservercore, rc-windowsservercore, 1.13.0-beta3, 1.13-rc, rc\nDirectory: rc/windows/servercore-ltsc2025\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\nTags: 1.13.0-beta3-windowsservercore-ltsc2022, 1.13-rc-windowsservercore-ltsc2022, rc-windowsservercore-ltsc2022\nSharedTags: 1.13.0-beta3-windowsservercore, 1.13-rc-windowsservercore, rc-windowsservercore, 1.13.0-beta3, 1.13-rc, rc\nDirectory: rc/windows/servercore-ltsc2022\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/kapacitor",
    "content": "Maintainers: Brandon Pfeifer <bpfeifer@influxdata.com> (@bnpfeife),\n             Sven Rebhan <srebhan@influxdata.com> (@srebhan),\n             Maya Strandboge <mstrandboge@influxdata.com> (@mstrandboge)\nGitRepo: https://github.com/influxdata/influxdata-docker\nGitCommit: 9f5c060baeac0c23e51c06b3cf27fcf485478476\n\nTags: 1.7, 1.7.7\nArchitectures: amd64, arm64v8\nDirectory: kapacitor/1.7\n\nTags: 1.7-alpine, 1.7.7-alpine, alpine\nDirectory: kapacitor/1.7/alpine\n\nTags: 1.8, 1.8.3, latest\nArchitectures: amd64, arm64v8\nDirectory: kapacitor/1.8\n\nTags: 1.8-alpine, 1.8.3-alpine\nDirectory: kapacitor/1.8/alpine\n"
  },
  {
    "path": "library/kibana",
    "content": "Maintainers: Jon Budzenski (@jbudz)\nGitRepo: https://github.com/elastic/dockerfiles.git\nDirectory: kibana\nBuilder: buildkit\n\nTags: 8.19.13\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8.19\nGitCommit: 2464ee331ec5d4430c6703417e23e5808af60826\n\nTags: 9.2.7\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/9.2\nGitCommit: 6894c1c3452a1129471711450e77cae505aa075c\n\nTags: 9.3.2\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/9.3\nGitCommit: 7792ce2b9df24ddfc41887c2530fd8b6bad9e005\n"
  },
  {
    "path": "library/kong",
    "content": "Maintainers: Kong Docker Maintainers <team-gateway@konghq.com> (@team-gateway-bot)\nGitRepo: https://github.com/Kong/docker-kong.git\n\nTags: 3.9.1-ubuntu, 3.9-ubuntu, 3.9.1, 3.9, 3, latest, ubuntu\nGitCommit: af96ffd89b75f2e7a68cb90d0a3c4b4cd30d53fc\nGitFetch: refs/tags/3.9.1\nDirectory: ubuntu\nArchitectures: amd64, arm64v8\n\nTags: 3.8.0-ubuntu, 3.8-ubuntu, 3.8.0, 3.8\nGitCommit: 1f5199f7da45c17f4344b811397e89899a160040\nGitFetch: refs/tags/3.8.0\nDirectory: ubuntu\nArchitectures: amd64, arm64v8\n\nTags: 3.4.2-ubuntu, 3.4-ubuntu, 3.4.2, 3.4\nGitCommit: e07de903edf213445a0540172d51529ac344b448\nGitFetch: refs/tags/3.4.2\nDirectory: ubuntu\nArchitectures: amd64, arm64v8\n\nTags: 2.8.5-ubuntu, 2.8-ubuntu\nGitCommit: cdf93ae2106f998a2245a3eee6814b1ae68781af\nGitFetch: refs/tags/2.8.5\nDirectory: ubuntu\nArchitectures: amd64\n"
  },
  {
    "path": "library/krakend",
    "content": "Maintainers: Daniel Ortiz <dortiz@krakend.io> (@taik0),\n             Daniel López <dlopez@krakend.io> (@kpacha),\n             Jorge Tarrero <jorge.tarrero@krakend.io> (@thedae),\n             David Hontecillas <david.hontecillas@krakend.io> (@dhontecillas)\nGitRepo: https://github.com/krakend/docker-library.git\n\n# Alpine images\nTags: 2.13.3, 2.13, 2, latest\nArchitectures: amd64, arm64v8\nGitCommit: 46254f0398186807f235f0b5728d718a3d644227\nDirectory: 2.13.3\n"
  },
  {
    "path": "library/lightstreamer",
    "content": "Maintainers: Lightstreamer Server Development Team <support@lightstreamer.com> (@lightstreamer),\n             Dario Crivelli <dario.crivelli@lightstreamer.com> (@dario-weswit)\nGitRepo: https://github.com/Lightstreamer/Docker.git\n\nTags: 6.0.3, 6.0\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 6.0\n\nTags: 6.1.0, 6.1, 6\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 6.1\n\nTags: 7.0.3-jdk8-temurin, 7.0-jdk8-temurin, 7.0.3-jdk8, 7.0-jdk8\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.0/jdk8\n\nTags: 7.0.3-jdk11-temurin, 7.0-jdk11-temurin, 7.0.3-jdk11, 7.0-jdk11, 7.0.3, 7.0\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.0/jdk11\n\nTags: 7.1.3-jdk8-temurin, 7.1-jdk8-temurin, 7.1.3-jdk8, 7.1-jdk8\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.1/jdk8\n\nTags: 7.1.3-jdk11-temurin, 7.1-jdk11-temurin, 7.1.3-jdk11, 7.1-jdk11, 7.1.3, 7.1\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.1/jdk11\n\nTags: 7.2.2-jdk8-temurin, 7.2-jdk8-temurin, 7.2.2-jdk8, 7.2-jdk8\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.2/jdk8\n\nTags: 7.2.2-jdk11-temurin, 7.2-jdk11-temurin, 7.2.2-jdk11, 7.2-jdk11, 7.2.2, 7.2\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.2/jdk11\n\nTags: 7.3.3-jdk8-temurin, 7.3-jdk8-temurin, 7.3.3-jdk8, 7.3-jdk8\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.3/jdk8\n\nTags: 7.3.3-jdk11-temurin, 7.3-jdk11-temurin, 7.3.3-jdk11, 7.3-jdk11\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.3/jdk11\n\nTags: 7.3.3-jdk17-temurin, 7.3-jdk17-temurin, 7.3.3-jdk17, 7.3-jdk17, 7.3.3, 7.3\nArchitectures: amd64, arm64v8\nGitCommit: b6c4a87af3e78b53887f311bdf2404f4f9956796\nDirectory: 7.3/jdk17\n\nTags: 7.4.7-jdk8-temurin, 7.4-jdk8-temurin, 7-jdk8-temurin, 7.4.7-jdk8, 7.4-jdk8, 7-jdk8\nArchitectures: amd64, arm64v8\nGitCommit: abea70d53fb366cb5d5402493c37ca4f0b2ab0c1\nDirectory: 7.4/jdk8\n\nTags: 7.4.7-jdk11-temurin, 7.4-jdk11-temurin, 7-jdk11-temurin, 7.4.7-jdk11, 7.4-jdk11, 7-jdk11\nArchitectures: amd64, arm64v8\nGitCommit: abea70d53fb366cb5d5402493c37ca4f0b2ab0c1\nDirectory: 7.4/jdk11\n\nTags: 7.4.7-jdk17-temurin, 7.4-jdk17-temurin, 7-jdk17-temurin, 7.4.7-jdk17, 7.4-jdk17, 7-jdk17\nArchitectures: amd64, arm64v8\nGitCommit: abea70d53fb366cb5d5402493c37ca4f0b2ab0c1\nDirectory: 7.4/jdk17\n\nTags: 7.4.7-jdk21-temurin, 7.4-jdk21-temurin, 7-jdk21-temurin, 7.4.7-jdk21, 7.4-jdk21, 7-jdk21, 7.4.7, 7.4, 7, latest\nArchitectures: amd64, arm64v8\nGitCommit: abea70d53fb366cb5d5402493c37ca4f0b2ab0c1\nDirectory: 7.4/jdk21\n\n"
  },
  {
    "path": "library/liquibase",
    "content": "Maintainers: Jake Newton <docker@liquibase.com> (@jnewton03)\nArchitectures: arm64v8, amd64\nGitRepo: https://github.com/liquibase/docker.git\n\nTags: 5.0, 5.0.1, latest\nGitFetch: refs/heads/main\nGitCommit: c67a0359179ab8f862f202e313461452294f944f\nFile: Dockerfile\n\nTags: 5.0-alpine, 5.0.1-alpine, alpine\nGitFetch: refs/heads/main\nGitCommit: c67a0359179ab8f862f202e313461452294f944f\nFile: Dockerfile.alpine"
  },
  {
    "path": "library/logstash",
    "content": "Maintainers: João Duarte (@jsvd)\nGitRepo: https://github.com/elastic/dockerfiles.git\nDirectory: logstash\nBuilder: buildkit\n\nTags: 8.19.13\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/8.19\nGitCommit: 2464ee331ec5d4430c6703417e23e5808af60826\n\nTags: 9.2.7\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/9.2\nGitCommit: 6894c1c3452a1129471711450e77cae505aa075c\n\nTags: 9.3.2\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/9.3\nGitCommit: 7792ce2b9df24ddfc41887c2530fd8b6bad9e005\n"
  },
  {
    "path": "library/mageia",
    "content": "Maintainers: Juan Luis Baptiste <juancho@mageia.org> (@juanluisbaptiste)\nGitRepo: https://github.com/juanluisbaptiste/docker-brew-mageia.git\n\nTags: 9,latest\nGitCommit: 1c9e5e296b88e68e5ed9fdb12150d0c1227bdc9e\nGitFetch: refs/heads/dist\nArchitectures: amd64, arm32v7, arm64v8\namd64-Directory: dist/9/x86_64\narm32v7-Directory: dist/9/armv7hl\narm64v8-Directory: dist/9/aarch64\n\nTags: cauldron\nGitCommit: 1c9e5e296b88e68e5ed9fdb12150d0c1227bdc9e\nGitFetch: refs/heads/dist\nArchitectures: amd64, arm32v7, arm64v8\namd64-Directory: dist/cauldron/x86_64\narm32v7-Directory: dist/cauldron/armv7hl\narm64v8-Directory: dist/cauldron/aarch64\n"
  },
  {
    "path": "library/mariadb",
    "content": "# this file is generated via https://github.com/MariaDB/mariadb-docker/blob/65483980c6c0034361a604ca1e2a048c48da08c6/generate-stackbrew-library.sh\n\nMaintainers: Daniel Black <daniel@mariadb.org> (@grooverdan),\n             Daniel Bartholomew <dbart@mariadb.com> (@dbart),\n             Faustin Lammler <faustin@mariadb.org> (@fauust)\nGitRepo: https://github.com/MariaDB/mariadb-docker.git\nBuilder: buildkit\n\nTags: 12.3.1-ubi10-rc, 12.3-ubi10-rc, 12.3.1-ubi-rc, 12.3-ubi-rc\nArchitectures: amd64, arm64v8, s390x, ppc64le\nGitCommit: fff6ab37913bbbe25bfc6c6ea6f095e4ad7a039c\nDirectory: 12.3-ubi\n\nTags: 12.3.1-noble-rc, 12.3-noble-rc, 12.3.1-rc, 12.3-rc\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 3fbf86c7b9301bcb6b0dc0f4f478800ee458224f\nDirectory: 12.3\n\nTags: 12.2.2-ubi10, 12.2-ubi10, 12-ubi10, 12.2.2-ubi, 12.2-ubi, 12-ubi\nArchitectures: amd64, arm64v8, s390x, ppc64le\nGitCommit: fff6ab37913bbbe25bfc6c6ea6f095e4ad7a039c\nDirectory: 12.2-ubi\n\nTags: 12.2.2-noble, 12.2-noble, 12-noble, noble, 12.2.2, 12.2, 12, latest\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 3fbf86c7b9301bcb6b0dc0f4f478800ee458224f\nDirectory: 12.2\n\nTags: 11.8.6-ubi9, 11.8-ubi9, 11-ubi9, lts-ubi9, 11.8.6-ubi, 11.8-ubi, 11-ubi, lts-ubi\nArchitectures: amd64, arm64v8, s390x, ppc64le\nGitCommit: fff6ab37913bbbe25bfc6c6ea6f095e4ad7a039c\nDirectory: 11.8-ubi\n\nTags: 11.8.6-noble, 11.8-noble, 11-noble, lts-noble, 11.8.6, 11.8, 11, lts\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 66972bc2e0c6fd33dcd5d98de0653c5696a1166e\nDirectory: 11.8\n\nTags: 11.4.10-ubi9, 11.4-ubi9, 11.4.10-ubi, 11.4-ubi\nArchitectures: amd64, arm64v8, s390x, ppc64le\nGitCommit: fff6ab37913bbbe25bfc6c6ea6f095e4ad7a039c\nDirectory: 11.4-ubi\n\nTags: 11.4.10-noble, 11.4-noble, 11.4.10, 11.4\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 66972bc2e0c6fd33dcd5d98de0653c5696a1166e\nDirectory: 11.4\n\nTags: 10.11.16-ubi9, 10.11-ubi9, 10-ubi9, 10.11.16-ubi, 10.11-ubi, 10-ubi\nArchitectures: amd64, arm64v8, s390x, ppc64le\nGitCommit: fff6ab37913bbbe25bfc6c6ea6f095e4ad7a039c\nDirectory: 10.11-ubi\n\nTags: 10.11.16-jammy, 10.11-jammy, 10-jammy, 10.11.16, 10.11, 10\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 66972bc2e0c6fd33dcd5d98de0653c5696a1166e\nDirectory: 10.11\n\nTags: 10.6.25-ubi9, 10.6-ubi9, 10.6.25-ubi, 10.6-ubi\nArchitectures: amd64, arm64v8, s390x, ppc64le\nGitCommit: fff6ab37913bbbe25bfc6c6ea6f095e4ad7a039c\nDirectory: 10.6-ubi\n\nTags: 10.6.25-jammy, 10.6-jammy, 10.6.25, 10.6\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 66972bc2e0c6fd33dcd5d98de0653c5696a1166e\nDirectory: 10.6\n"
  },
  {
    "path": "library/matomo",
    "content": "# This file is generated via https://github.com/matomo-org/docker/blob/46d5da6d8958f77248588fe70242627d721dd0bb/generate-stackbrew-library.sh\nMaintainers: Matomo Community (@matomo-org)\nGitRepo: https://github.com/matomo-org/docker.git\n\nTags: 5.8.0-apache, 5.8-apache, 5-apache, apache, 5.8.0, 5.8, 5, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 7f735f13c518be2b6882e793e94a144aa8c2c9b1\nDirectory: apache\n\nTags: 5.8.0-fpm, 5.8-fpm, 5-fpm, fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 7f735f13c518be2b6882e793e94a144aa8c2c9b1\nDirectory: fpm\n\nTags: 5.8.0-fpm-alpine, 5.8-fpm-alpine, 5-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 7f735f13c518be2b6882e793e94a144aa8c2c9b1\nDirectory: fpm-alpine\n"
  },
  {
    "path": "library/maven",
    "content": "Maintainers: Carlos Sanchez <carlos@apache.org> (@carlossg)\nBuilder: buildkit\nGitRepo: https://github.com/carlossg/docker-maven.git\nGitFetch: refs/heads/main\n\nTags: 3.9.14-eclipse-temurin-11-alpine, 3.9-eclipse-temurin-11-alpine, 3-eclipse-temurin-11-alpine\nArchitectures: amd64\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-11-alpine\n\nTags: 3.9.14-eclipse-temurin-11-noble, 3.9.14-eclipse-temurin-11, 3.9-eclipse-temurin-11-noble, 3.9-eclipse-temurin-11, 3-eclipse-temurin-11-noble, 3-eclipse-temurin-11\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-11-noble\n\nTags: 3.9.14-eclipse-temurin-17-alpine, 3.9-eclipse-temurin-17-alpine, 3-eclipse-temurin-17-alpine\nArchitectures: amd64\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-17-alpine\n\nTags: 4.0.0-rc-5-eclipse-temurin-17-alpine\nArchitectures: amd64\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: eclipse-temurin-17-alpine-maven-4\n\nTags: 3.9.14-eclipse-temurin-17-noble, 3.9.14-eclipse-temurin-17, 3.9-eclipse-temurin-17-noble, 3.9-eclipse-temurin-17, 3-eclipse-temurin-17-noble, 3-eclipse-temurin-17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 91af4082f7fad5ca4d939a9a10e58008406fe25e\nDirectory: eclipse-temurin-17-noble\n\nTags: 4.0.0-rc-5-eclipse-temurin-17-noble, 4.0.0-rc-5-eclipse-temurin-17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: eclipse-temurin-17-noble-maven-4\n\nTags: 3.9.14-eclipse-temurin-21-alpine, 3.9-eclipse-temurin-21-alpine, 3-eclipse-temurin-21-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-21-alpine\n\nTags: 4.0.0-rc-5-eclipse-temurin-21-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: eclipse-temurin-21-alpine-maven-4\n\nTags: 3.9.14-eclipse-temurin-21-noble, 3.9.14-eclipse-temurin-21, 3.9-eclipse-temurin-21-noble, 3.9-eclipse-temurin-21, 3-eclipse-temurin-21-noble, 3-eclipse-temurin-21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-21-noble\n\nTags: 4.0.0-rc-5-eclipse-temurin-21-noble, 4.0.0-rc-5-eclipse-temurin-21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: eclipse-temurin-21-noble-maven-4\n\nTags: 3.9.14-eclipse-temurin-25-alpine, 3.9-eclipse-temurin-25-alpine, 3-eclipse-temurin-25-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-25-alpine\n\nTags: 4.0.0-rc-5-eclipse-temurin-25-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: eclipse-temurin-25-alpine-maven-4\n\nTags: 3.9.14-eclipse-temurin-25-noble, 3.9.14, 3.9.14-eclipse-temurin, 3.9.14-eclipse-temurin-25, 3.9-eclipse-temurin-25-noble, 3.9, 3.9-eclipse-temurin, 3.9-eclipse-temurin-25, 3-eclipse-temurin-25-noble, 3, latest, 3-eclipse-temurin, eclipse-temurin, 3-eclipse-temurin-25\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-25-noble\n\nTags: 4.0.0-rc-5-eclipse-temurin-25-noble, 4.0.0-rc-5, 4.0.0-rc-5-eclipse-temurin, 4.0.0-rc-5-eclipse-temurin-25\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: eclipse-temurin-25-noble-maven-4\n\nTags: 3.9.14-eclipse-temurin-8-alpine, 3.9-eclipse-temurin-8-alpine, 3-eclipse-temurin-8-alpine\nArchitectures: amd64\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-8-alpine\n\nTags: 3.9.14-eclipse-temurin-8-noble, 3.9.14-eclipse-temurin-8, 3.9-eclipse-temurin-8-noble, 3.9-eclipse-temurin-8, 3-eclipse-temurin-8-noble, 3-eclipse-temurin-8\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: eclipse-temurin-8-noble\n\nTags: 3.9.14-ibmjava-8, 3.9.14-ibmjava, 3.9-ibmjava-8, 3.9-ibmjava, 3-ibmjava-8, 3-ibmjava, ibmjava\nArchitectures: amd64, ppc64le, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: ibmjava-8\n\nTags: 3.9.14-ibm-semeru-11-noble, 3.9-ibm-semeru-11-noble, 3-ibm-semeru-11-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: ibm-semeru-11-noble\n\nTags: 3.9.14-ibm-semeru-17-noble, 3.9-ibm-semeru-17-noble, 3-ibm-semeru-17-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: ibm-semeru-17-noble\n\nTags: 4.0.0-rc-5-ibm-semeru-17-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: ibm-semeru-17-noble-maven-4\n\nTags: 3.9.14-ibm-semeru-21-noble, 3.9-ibm-semeru-21-noble, 3-ibm-semeru-21-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: ibm-semeru-21-noble\n\nTags: 4.0.0-rc-5-ibm-semeru-21-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: ibm-semeru-21-noble-maven-4\n\nTags: 3.9.14-ibm-semeru-25-noble, 3.9-ibm-semeru-25-noble, 3-ibm-semeru-25-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: ibm-semeru-25-noble\n\nTags: 4.0.0-rc-5-ibm-semeru-25-noble\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: ibm-semeru-25-noble-maven-4\n\nTags: 3.9.14-amazoncorretto-11, 3.9-amazoncorretto-11, 3-amazoncorretto-11\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-11\n\nTags: 3.9.14-amazoncorretto-11-al2023, 3.9-amazoncorretto-11-al2023, 3-amazoncorretto-11-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-11-al2023\n\nTags: 3.9.14-amazoncorretto-11-alpine, 3.9-amazoncorretto-11-alpine, 3-amazoncorretto-11-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-11-alpine\n\nTags: 3.9.14-amazoncorretto-11-debian, 3.9.14-amazoncorretto-11-debian-trixie, 3.9-amazoncorretto-11-debian, 3.9-amazoncorretto-11-debian-trixie, 3-amazoncorretto-11-debian, 3-amazoncorretto-11-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-11-debian\n\nTags: 3.9.14-amazoncorretto-17, 3.9-amazoncorretto-17, 3-amazoncorretto-17\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-17\n\nTags: 3.9.14-amazoncorretto-17-al2023, 3.9-amazoncorretto-17-al2023, 3-amazoncorretto-17-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-17-al2023\n\nTags: 4.0.0-rc-5-amazoncorretto-17-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: amazoncorretto-17-al2023-maven-4\n\nTags: 3.9.14-amazoncorretto-17-alpine, 3.9-amazoncorretto-17-alpine, 3-amazoncorretto-17-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-17-alpine\n\nTags: 3.9.14-amazoncorretto-17-debian, 3.9.14-amazoncorretto-17-debian-trixie, 3.9-amazoncorretto-17-debian, 3.9-amazoncorretto-17-debian-trixie, 3-amazoncorretto-17-debian, 3-amazoncorretto-17-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-17-debian\n\nTags: 4.0.0-rc-5-amazoncorretto-17-debian, 4.0.0-rc-5-amazoncorretto-17-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: b579f171639b97e8dae7b1b947b62b0b336233d4\nDirectory: amazoncorretto-17-debian-maven-4\n\nTags: 4.0.0-rc-5-amazoncorretto-17\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: amazoncorretto-17-maven-4\n\nTags: 3.9.14-amazoncorretto-21, 3.9-amazoncorretto-21, 3-amazoncorretto-21\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-21\n\nTags: 3.9.14-amazoncorretto-21-al2023, 3.9-amazoncorretto-21-al2023, 3-amazoncorretto-21-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-21-al2023\n\nTags: 4.0.0-rc-5-amazoncorretto-21-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: amazoncorretto-21-al2023-maven-4\n\nTags: 3.9.14-amazoncorretto-21-alpine, 3.9-amazoncorretto-21-alpine, 3-amazoncorretto-21-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-21-alpine\n\nTags: 3.9.14-amazoncorretto-21-debian, 3.9.14-amazoncorretto-21-debian-trixie, 3.9-amazoncorretto-21-debian, 3.9-amazoncorretto-21-debian-trixie, 3-amazoncorretto-21-debian, 3-amazoncorretto-21-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-21-debian\n\nTags: 4.0.0-rc-5-amazoncorretto-21-debian, 4.0.0-rc-5-amazoncorretto-21-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: b579f171639b97e8dae7b1b947b62b0b336233d4\nDirectory: amazoncorretto-21-debian-maven-4\n\nTags: 4.0.0-rc-5-amazoncorretto-21\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: amazoncorretto-21-maven-4\n\nTags: 3.9.14-amazoncorretto-25, 3.9.14-amazoncorretto, 3.9-amazoncorretto-25, 3.9-amazoncorretto, 3-amazoncorretto-25, 3-amazoncorretto, amazoncorretto\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-25\n\nTags: 3.9.14-amazoncorretto-25-al2023, 3.9-amazoncorretto-25-al2023, 3-amazoncorretto-25-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-25-al2023\n\nTags: 4.0.0-rc-5-amazoncorretto-25-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: amazoncorretto-25-al2023-maven-4\n\nTags: 3.9.14-amazoncorretto-25-alpine, 3.9-amazoncorretto-25-alpine, 3-amazoncorretto-25-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-25-alpine\n\nTags: 3.9.14-amazoncorretto-25-debian, 3.9.14-amazoncorretto-25-debian-trixie, 3.9-amazoncorretto-25-debian, 3.9-amazoncorretto-25-debian-trixie, 3-amazoncorretto-25-debian, 3-amazoncorretto-25-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-25-debian\n\nTags: 4.0.0-rc-5-amazoncorretto-25-debian, 4.0.0-rc-5-amazoncorretto-25-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: b579f171639b97e8dae7b1b947b62b0b336233d4\nDirectory: amazoncorretto-25-debian-maven-4\n\nTags: 4.0.0-rc-5-amazoncorretto-25, 4.0.0-rc-5-amazoncorretto\nArchitectures: amd64, arm64v8\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: amazoncorretto-25-maven-4\n\nTags: 3.9.14-amazoncorretto-8, 3.9-amazoncorretto-8, 3-amazoncorretto-8\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-8\n\nTags: 3.9.14-amazoncorretto-8-al2023, 3.9-amazoncorretto-8-al2023, 3-amazoncorretto-8-al2023\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-8-al2023\n\nTags: 3.9.14-amazoncorretto-8-alpine, 3.9-amazoncorretto-8-alpine, 3-amazoncorretto-8-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-8-alpine\n\nTags: 3.9.14-amazoncorretto-8-debian, 3.9.14-amazoncorretto-8-debian-trixie, 3.9-amazoncorretto-8-debian, 3.9-amazoncorretto-8-debian-trixie, 3-amazoncorretto-8-debian, 3-amazoncorretto-8-debian-trixie\nArchitectures: amd64, arm64v8\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: amazoncorretto-8-debian\n\nTags: 3.9.14-sapmachine-17, 3.9-sapmachine-17, 3-sapmachine-17\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: sapmachine-17\n\nTags: 4.0.0-rc-5-sapmachine-17\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: sapmachine-17-maven-4\n\nTags: 3.9.14-sapmachine-21, 3.9-sapmachine-21, 3-sapmachine-21\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: sapmachine-21\n\nTags: 4.0.0-rc-5-sapmachine-21\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: sapmachine-21-maven-4\n\nTags: 3.9.14-sapmachine-25, 3.9-sapmachine-25, 3-sapmachine-25\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 2de5f5e0b9b7a9dfab3aa5635fb533a9b269a11c\nDirectory: sapmachine-25\n\nTags: 4.0.0-rc-5-sapmachine-25\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 46922cf792151295209364a0917ab106fea60692\nDirectory: sapmachine-25-maven-4\n\nTags: 3.9.14-sapmachine-26, 3.9.14-sapmachine, 3.9-sapmachine-26, 3.9-sapmachine, 3-sapmachine-26, 3-sapmachine, sapmachine\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 94e692921d4d62c0c584191e999372c8b1b5b7b7\nDirectory: sapmachine-26\n\nTags: 4.0.0-rc-5-sapmachine-26, 4.0.0-rc-5-sapmachine\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 94e692921d4d62c0c584191e999372c8b1b5b7b7\nDirectory: sapmachine-26-maven-4\n"
  },
  {
    "path": "library/mediawiki",
    "content": "Maintainers: Kunal Mehta <legoktm@debian.org> (@legoktm),\n             addshore <addshorewiki@gmail.com> (@addshore),\n             Christian Heusel <christian@heusel.eu> (@christian-heusel)\nGitRepo: https://github.com/wikimedia/mediawiki-docker.git\nGitFetch: refs/heads/main\nGitCommit: c5d0194e8675dc98a46ad9379c0f684d527c11ca\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le\n\n# current stable version\nTags: 1.45.1, 1.45, latest, stable\nDirectory: 1.45/apache\n\nTags: 1.45.1-fpm, 1.45-fpm, stable-fpm\nDirectory: 1.45/fpm\n\nTags: 1.45.1-fpm-alpine, 1.45-fpm-alpine, stable-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le\nDirectory: 1.45/fpm-alpine\n\n# legacy stable version\nTags: 1.44.3, 1.44\nDirectory: 1.44/apache\n\nTags: 1.44.3-fpm, 1.44-fpm\nDirectory: 1.44/fpm\n\nTags: 1.44.3-fpm-alpine, 1.44-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le\nDirectory: 1.44/fpm-alpine\n\n# current lts version\nTags: 1.43.6, 1.43, lts\nDirectory: 1.43/apache\n\nTags: 1.43.6-fpm, 1.43-fpm, lts-fpm\nDirectory: 1.43/fpm\n\nTags: 1.43.6-fpm-alpine, 1.43-fpm-alpine, lts-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le\nDirectory: 1.43/fpm-alpine\n"
  },
  {
    "path": "library/memcached",
    "content": "# this file is generated via https://github.com/docker-library/memcached/blob/41e28506e64d0b5daabbafc8d6349eddc91c17c0/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/memcached.git\n\nTags: 1.6.41, 1.6, 1, latest, 1.6.41-trixie, 1.6-trixie, 1-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: cba550f257148ea0ee5a63a52404a228e0f08fe8\nDirectory: 1/debian\n\nTags: 1.6.41-alpine, 1.6-alpine, 1-alpine, alpine, 1.6.41-alpine3.23, 1.6-alpine3.23, 1-alpine3.23, alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: cba550f257148ea0ee5a63a52404a228e0f08fe8\nDirectory: 1/alpine\n"
  },
  {
    "path": "library/mongo",
    "content": "# this file is generated via https://github.com/docker-library/mongo/blob/7f63818a51a1c6904953a2a708c1aa4aab629034/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/mongo.git\n\nTags: 8.2.6-noble, 8.2-noble, 8-noble, noble\nSharedTags: 8.2.6, 8.2, 8, latest\nArchitectures: amd64, arm64v8\nGitCommit: 3db00cf3de0686771a74764ebafe935a58ac590e\nDirectory: 8.2\n\nTags: 8.2.6-windowsservercore-ltsc2025, 8.2-windowsservercore-ltsc2025, 8-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 8.2.6-windowsservercore, 8.2-windowsservercore, 8-windowsservercore, windowsservercore, 8.2.6, 8.2, 8, latest\nArchitectures: windows-amd64\nGitCommit: 3db00cf3de0686771a74764ebafe935a58ac590e\nDirectory: 8.2/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 8.2.6-windowsservercore-ltsc2022, 8.2-windowsservercore-ltsc2022, 8-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 8.2.6-windowsservercore, 8.2-windowsservercore, 8-windowsservercore, windowsservercore, 8.2.6, 8.2, 8, latest\nArchitectures: windows-amd64\nGitCommit: 3db00cf3de0686771a74764ebafe935a58ac590e\nDirectory: 8.2/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 8.2.6-nanoserver-ltsc2022, 8.2-nanoserver-ltsc2022, 8-nanoserver-ltsc2022, nanoserver-ltsc2022\nSharedTags: 8.2.6-nanoserver, 8.2-nanoserver, 8-nanoserver, nanoserver\nArchitectures: windows-amd64\nGitCommit: 3db00cf3de0686771a74764ebafe935a58ac590e\nDirectory: 8.2/windows/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 8.0.20-noble, 8.0-noble\nSharedTags: 8.0.20, 8.0\nArchitectures: amd64, arm64v8\nGitCommit: 2108dab3319c14e9862120659a0e59e384cb4c9d\nDirectory: 8.0\n\nTags: 8.0.20-windowsservercore-ltsc2025, 8.0-windowsservercore-ltsc2025\nSharedTags: 8.0.20-windowsservercore, 8.0-windowsservercore, 8.0.20, 8.0\nArchitectures: windows-amd64\nGitCommit: 2108dab3319c14e9862120659a0e59e384cb4c9d\nDirectory: 8.0/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 8.0.20-windowsservercore-ltsc2022, 8.0-windowsservercore-ltsc2022\nSharedTags: 8.0.20-windowsservercore, 8.0-windowsservercore, 8.0.20, 8.0\nArchitectures: windows-amd64\nGitCommit: 2108dab3319c14e9862120659a0e59e384cb4c9d\nDirectory: 8.0/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 8.0.20-nanoserver-ltsc2022, 8.0-nanoserver-ltsc2022\nSharedTags: 8.0.20-nanoserver, 8.0-nanoserver\nArchitectures: windows-amd64\nGitCommit: 2108dab3319c14e9862120659a0e59e384cb4c9d\nDirectory: 8.0/windows/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 7.0.31-jammy, 7.0-jammy, 7-jammy\nSharedTags: 7.0.31, 7.0, 7\nArchitectures: amd64, arm64v8\nGitCommit: b0514c4093d3b739242cb7be0def0a97cfd05193\nDirectory: 7.0\n\nTags: 7.0.31-windowsservercore-ltsc2025, 7.0-windowsservercore-ltsc2025, 7-windowsservercore-ltsc2025\nSharedTags: 7.0.31-windowsservercore, 7.0-windowsservercore, 7-windowsservercore, 7.0.31, 7.0, 7\nArchitectures: windows-amd64\nGitCommit: b0514c4093d3b739242cb7be0def0a97cfd05193\nDirectory: 7.0/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 7.0.31-windowsservercore-ltsc2022, 7.0-windowsservercore-ltsc2022, 7-windowsservercore-ltsc2022\nSharedTags: 7.0.31-windowsservercore, 7.0-windowsservercore, 7-windowsservercore, 7.0.31, 7.0, 7\nArchitectures: windows-amd64\nGitCommit: b0514c4093d3b739242cb7be0def0a97cfd05193\nDirectory: 7.0/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 7.0.31-nanoserver-ltsc2022, 7.0-nanoserver-ltsc2022, 7-nanoserver-ltsc2022\nSharedTags: 7.0.31-nanoserver, 7.0-nanoserver, 7-nanoserver\nArchitectures: windows-amd64\nGitCommit: b0514c4093d3b739242cb7be0def0a97cfd05193\nDirectory: 7.0/windows/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/mongo-express",
    "content": "# this file is generated via https://github.com/mongo-express/mongo-express-docker/blob/075234363b3c008c7c2e97de8a3639e23a75cfcd/generate-stackbrew-library.sh\n\nMaintainers: Nick Cox <nickcox1008@gmail.com> (@knickers),\n             John Steel <john@jskw.dev> (@BlackthornYugen)\nGitRepo: https://github.com/mongo-express/mongo-express-docker.git\nGitCommit: 075234363b3c008c7c2e97de8a3639e23a75cfcd\n\n#\n# Alpine 3.18 is EOL: https://github.com/docker-library/official-images/issues/19034\n# Node.js 18 is EOL: https://github.com/docker-library/official-images/pull/19118\n# Node.js no longer supports Alpine 3.19: https://github.com/docker-library/official-images/pull/18045\n#\n#Tags: 1.0.2-20-alpine3.19, 1.0-20-alpine3.19, 1-20-alpine3.19\n#Architectures: amd64, arm64v8\n#GitCommit: 403467f350d819b404f3d5150be7776217e810b7\n#Directory: 1.0/20-alpine3.19\n#\n#Tags: 1.0.2-20, 1.0-20, 1-20, 1.0.2-20-alpine3.18, 1.0-20-alpine3.18, 1-20-alpine3.18\n#Architectures: amd64, arm64v8\n#GitCommit: 403467f350d819b404f3d5150be7776217e810b7\n#Directory: 1.0/20-alpine3.18\n#\n#Tags: 1.0.2-18-alpine3.19, 1.0-18-alpine3.19, 1-18-alpine3.19\n#Architectures: amd64, arm64v8\n#GitCommit: 403467f350d819b404f3d5150be7776217e810b7\n#Directory: 1.0/18-alpine3.19\n#\n#Tags: 1.0.2, 1.0, 1, 1.0.2-18, 1.0-18, 1-18, 1.0.2-18-alpine3.18, 1.0-18-alpine3.18, 1-18-alpine3.18, latest\n#Architectures: amd64, arm64v8\n#GitCommit: 403467f350d819b404f3d5150be7776217e810b7\n#Directory: 1.0/18-alpine3.18\n"
  },
  {
    "path": "library/monica",
    "content": "# This file is generated via https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/generate-stackbrew-library.sh\nMaintainers: Alexis Saettler <alexis@saettler.org> (@asbiin)\nGitRepo: https://github.com/monicahq/docker.git\nGitFetch: refs/heads/main\n\nTags: 4.1.2-apache, 4.1-apache, 4-apache, apache, 4.1.2, 4.1, 4, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: 4/apache\nGitCommit: 7ffc74385e243e2dac4d7013a3240c0ae1229f05\n\nTags: 4.1.2-fpm-alpine, 4.1-fpm-alpine, 4-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: 4/fpm-alpine\nGitCommit: 7ffc74385e243e2dac4d7013a3240c0ae1229f05\n\nTags: 4.1.2-fpm, 4.1-fpm, 4-fpm, fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: 4/fpm\nGitCommit: 7ffc74385e243e2dac4d7013a3240c0ae1229f05\n\nTags: 5.0.0-beta.5-apache, 5.0.0-beta-apache, 5.0-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: 5/apache\nGitCommit: 7ffc74385e243e2dac4d7013a3240c0ae1229f05\n\nTags: 5.0.0-beta.5-fpm-alpine, 5.0.0-beta-fpm-alpine, 5.0-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: 5/fpm-alpine\nGitCommit: 7ffc74385e243e2dac4d7013a3240c0ae1229f05\n\nTags: 5.0.0-beta.5-fpm, 5.0.0-beta-fpm, 5.0-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: 5/fpm\nGitCommit: 7ffc74385e243e2dac4d7013a3240c0ae1229f05\n"
  },
  {
    "path": "library/mysql",
    "content": "# this file is generated via https://github.com/docker-library/mysql/blob/6faf41e2e9d9d0a2b97d83449830ca75cbee17f9/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/mysql.git\n\nTags: 9.6.0, 9.6, 9, innovation, latest, 9.6.0-oraclelinux9, 9.6-oraclelinux9, 9-oraclelinux9, innovation-oraclelinux9, oraclelinux9, 9.6.0-oracle, 9.6-oracle, 9-oracle, innovation-oracle, oracle\nArchitectures: amd64, arm64v8\nGitCommit: f8c2facfccdc3c8b8b2c9b5a6aec31db3115105b\nDirectory: innovation\nFile: Dockerfile.oracle\n\nTags: 8.4.8, 8.4, 8, lts, 8.4.8-oraclelinux9, 8.4-oraclelinux9, 8-oraclelinux9, lts-oraclelinux9, 8.4.8-oracle, 8.4-oracle, 8-oracle, lts-oracle\nArchitectures: amd64, arm64v8\nGitCommit: 9dc8e79d60e4b10f30eb040ebd2d6c0f63b737bd\nDirectory: 8.4\nFile: Dockerfile.oracle\n\nTags: 8.0.45, 8.0, 8.0.45-oraclelinux9, 8.0-oraclelinux9, 8.0.45-oracle, 8.0-oracle\nArchitectures: amd64, arm64v8\nGitCommit: 7a8f81aad11e871baf1dbc755dbff1652e13cba5\nDirectory: 8.0\nFile: Dockerfile.oracle\n\nTags: 8.0.45-bookworm, 8.0-bookworm, 8.0.45-debian, 8.0-debian\nArchitectures: amd64\nGitCommit: 7a8f81aad11e871baf1dbc755dbff1652e13cba5\nDirectory: 8.0\nFile: Dockerfile.debian\n"
  },
  {
    "path": "library/nats",
    "content": "Maintainers: Derek Collison <derek@synadia.com> (@derekcollison),\n             Waldemar Quevedo Salinas <wally@synadia.com> (@wallyqs),\n             Byron Ruth <byron@synadia.com> (@bruth),\n             Neil Twigg <neil@synadia.com> (@neilalexander),\n             Phil Pennock <pdp@synadia.com> (@philpennock)\nGitRepo: https://github.com/nats-io/nats-docker.git\nGitCommit: d2540cc8734b095c223372c5fda2ec4d069a1978\nGitFetch: refs/heads/main\n\nTags: 2.12.5-alpine3.22, 2.12-alpine3.22, 2-alpine3.22, alpine3.22, 2.12.5-alpine, 2.12-alpine, 2-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x, ppc64le\nDirectory: 2.12.x/alpine3.22\n\nTags: 2.12.5-scratch, 2.12-scratch, 2-scratch, scratch, 2.12.5-linux, 2.12-linux, 2-linux, linux\nSharedTags: 2.12.5, 2.12, 2, latest\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x, ppc64le\nDirectory: 2.12.x/scratch\n\nTags: 2.12.5-windowsservercore-ltsc2022, 2.12-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 2.12.5-windowsservercore, 2.12-windowsservercore, 2-windowsservercore, windowsservercore\nArchitectures: windows-amd64\nDirectory: 2.12.x/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 2.12.5-nanoserver-ltsc2022, 2.12-nanoserver-ltsc2022, 2-nanoserver-ltsc2022, nanoserver-ltsc2022\nSharedTags: 2.12.5-nanoserver, 2.12-nanoserver, 2-nanoserver, nanoserver, 2.12.5, 2.12, 2, latest\nArchitectures: windows-amd64\nDirectory: 2.12.x/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 2.11.14-alpine3.22, 2.11-alpine3.22, 2.11.14-alpine, 2.11-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x, ppc64le\nDirectory: 2.11.x/alpine3.22\n\nTags: 2.11.14-scratch, 2.11-scratch, 2.11.14-linux, 2.11-linux\nSharedTags: 2.11.14, 2.11\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x, ppc64le\nDirectory: 2.11.x/scratch\n\nTags: 2.11.14-windowsservercore-ltsc2022, 2.11-windowsservercore-ltsc2022\nSharedTags: 2.11.14-windowsservercore, 2.11-windowsservercore\nArchitectures: windows-amd64\nDirectory: 2.11.x/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 2.11.14-nanoserver-ltsc2022, 2.11-nanoserver-ltsc2022\nSharedTags: 2.11.14-nanoserver, 2.11-nanoserver, 2.11.14, 2.11\nArchitectures: windows-amd64\nDirectory: 2.11.x/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: 2.10.29-alpine3.22, 2.10-alpine3.22, 2.10.29-alpine, 2.10-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x, ppc64le\nDirectory: 2.10.x/alpine3.22\n\nTags: 2.10.29-scratch, 2.10-scratch, 2.10.29-linux, 2.10-linux\nSharedTags: 2.10.29, 2.10\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x, ppc64le\nDirectory: 2.10.x/scratch\n\nTags: 2.10.29-windowsservercore-ltsc2022, 2.10-windowsservercore-ltsc2022\nSharedTags: 2.10.29-windowsservercore, 2.10-windowsservercore\nArchitectures: windows-amd64\nDirectory: 2.10.x/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 2.10.29-nanoserver-ltsc2022, 2.10-nanoserver-ltsc2022\nSharedTags: 2.10.29-nanoserver, 2.10-nanoserver, 2.10.29, 2.10\nArchitectures: windows-amd64\nDirectory: 2.10.x/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/neo4j",
    "content": "Maintainers: Jenny Owen <jenny.owen@neo4j.com> (@jennyowen),\n             Eric Sporre <eric.sporre@neo4j.com> (@ericsporre),\n             Tobias Ericsson <tobias.ericsson@neo4j.com> (@neo-tobias),\n             Nedeljko Cvejic <nedeljko.cvejic@neo4j.com> (@nedeljko-cvejic)\nGitRepo: https://github.com/neo4j/docker-neo4j-publish.git\n\nTags: 2026.02.3-community-trixie, 2026.02-community-trixie, 2026-community-trixie, 2026.02.3-community, 2026.02-community, 2026-community, 2026.02.3-trixie, 2026.02-trixie, 2026-trixie, 2026.02.3, 2026.02, 2026, community-trixie, community, trixie, latest\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/trixie/community\n\nTags: 2026.02.3-enterprise-trixie, 2026.02-enterprise-trixie, 2026-enterprise-trixie, 2026.02.3-enterprise, 2026.02-enterprise, 2026-enterprise, enterprise-trixie, enterprise\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/trixie/enterprise\n\nTags: 2026.02.3-community-ubi10, 2026.02-community-ubi10, 2026-community-ubi10, 2026.02.3-ubi10, 2026.02-ubi10, 2026-ubi10, community-ubi10, ubi10\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/ubi10/community\n\nTags: 2026.02.3-enterprise-ubi10, 2026.02-enterprise-ubi10, 2026-enterprise-ubi10, enterprise-ubi10\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/ubi10/enterprise\n\nTags: 2026.02.3-community-bullseye, 2026.02-community-bullseye, 2026-community-bullseye, 2026.02.3-bullseye, 2026.02-bullseye, 2026-bullseye, community-bullseye, bullseye\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/bullseye/community\n\nTags: 2026.02.3-enterprise-bullseye, 2026.02-enterprise-bullseye, 2026-enterprise-bullseye, enterprise-bullseye\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/bullseye/enterprise\n\nTags: 2026.02.3-community-ubi9, 2026.02-community-ubi9, 2026-community-ubi9, 2026.02.3-ubi9, 2026.02-ubi9, 2026-ubi9, community-ubi9, ubi9\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/ubi9/community\n\nTags: 2026.02.3-enterprise-ubi9, 2026.02-enterprise-ubi9, 2026-enterprise-ubi9, enterprise-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: c64087f9e566357c8ea194867383849e4dd69c8d\nDirectory: 2026.02.3/ubi9/enterprise\n\n\n\nTags: 5.26.23-community-trixie, 5.26-community-trixie, 5-community-trixie, 5.26.23-community, 5.26-community, 5-community, 5.26.23-trixie, 5.26-trixie, 5-trixie, 5.26.23, 5.26, 5\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/trixie/community\n\nTags: 5.26.23-enterprise-trixie, 5.26-enterprise-trixie, 5-enterprise-trixie, 5.26.23-enterprise, 5.26-enterprise, 5-enterprise\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/trixie/enterprise\n\nTags: 5.26.23-community-bullseye, 5.26-community-bullseye, 5-community-bullseye, 5.26.23-bullseye, 5.26-bullseye, 5-bullseye\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/bullseye/community\n\nTags: 5.26.23-enterprise-bullseye, 5.26-enterprise-bullseye, 5-enterprise-bullseye\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/bullseye/enterprise\n\nTags: 5.26.23-community-ubi10, 5.26-community-ubi10, 5-community-ubi10, 5.26.23-ubi10, 5.26-ubi10, 5-ubi10\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/ubi10/community\n\nTags: 5.26.23-enterprise-ubi10, 5.26-enterprise-ubi10, 5-enterprise-ubi10\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/ubi10/enterprise\n\nTags: 5.26.23-community-ubi9, 5.26-community-ubi9, 5-community-ubi9, 5.26.23-ubi9, 5.26-ubi9, 5-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/ubi9/community\n\nTags: 5.26.23-enterprise-ubi9, 5.26-enterprise-ubi9, 5-enterprise-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: ddfb0bcce4e8094267a19074e81f5a94d80c8537\nDirectory: 5.26.23/ubi9/enterprise\n\n\n\nTags: 4.4.48, 4.4.48-community, 4.4, 4.4-community\nArchitectures: amd64, arm64v8\nGitCommit: a3f58105abfd307a24467da003f46d4bd13813f3\nDirectory: 4.4.48/bullseye/community\n\nTags: 4.4.48-enterprise, 4.4-enterprise\nArchitectures: amd64, arm64v8\nGitCommit: a3f58105abfd307a24467da003f46d4bd13813f3\nDirectory: 4.4.48/bullseye/enterprise\n"
  },
  {
    "path": "library/neurodebian",
    "content": "Maintainers: Yaroslav Halchenko <debian@onerussian.com> (@yarikoptic)\nGitRepo: https://github.com/neurodebian/dockerfiles.git\nGitCommit: 73fc2f1797f390fe12b22d663af09fb1f9a90fd0\n\nTags: jammy, nd22.04\nArchitectures: amd64, arm64v8\nDirectory: dockerfiles/jammy\n\nTags: jammy-non-free, nd22.04-non-free\nArchitectures: amd64, arm64v8\nDirectory: dockerfiles/jammy-non-free\n\nTags: noble, nd24.04\nArchitectures: amd64, arm64v8\nDirectory: dockerfiles/noble\n\nTags: noble-non-free, nd24.04-non-free\nArchitectures: amd64, arm64v8\nDirectory: dockerfiles/noble-non-free\n\nTags: bullseye, nd110\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/bullseye\n\nTags: bullseye-non-free, nd110-non-free\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/bullseye-non-free\n\nTags: bookworm, nd120\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/bookworm\n\nTags: bookworm-non-free, nd120-non-free\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/bookworm-non-free\n\nTags: trixie, nd130, latest\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/trixie\n\nTags: trixie-non-free, nd130-non-free, non-free\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/trixie-non-free\n\nTags: forky, nd140\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/forky\n\nTags: forky-non-free, nd140-non-free\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/forky-non-free\n\nTags: sid, nd\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/sid\n\nTags: sid-non-free, nd-non-free\nArchitectures: amd64, arm64v8, i386\nDirectory: dockerfiles/sid-non-free\n"
  },
  {
    "path": "library/nextcloud",
    "content": "# This file is generated via https://github.com/nextcloud/docker/blob/3787374f48c11a6b29b1d60fe12e3b9688c61774/generate-stackbrew-library.sh\n\nMaintainers: Nextcloud <docker@nextcloud.com> (@nextcloud)\nGitRepo: https://github.com/nextcloud/docker.git\n\nTags: 31.0.14-apache, 31.0-apache, 31-apache, 31.0.14, 31.0, 31\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a548962b17b1708dd84dc0561b522f47ca480e16\nDirectory: 31/apache\n\nTags: 31.0.14-fpm, 31.0-fpm, 31-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a548962b17b1708dd84dc0561b522f47ca480e16\nDirectory: 31/fpm\n\nTags: 31.0.14-fpm-alpine, 31.0-fpm-alpine, 31-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a548962b17b1708dd84dc0561b522f47ca480e16\nDirectory: 31/fpm-alpine\n\nTags: 32.0.6-apache, 32.0-apache, 32-apache, stable-apache, production-apache, 32.0.6, 32.0, 32, stable, production\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a548962b17b1708dd84dc0561b522f47ca480e16\nDirectory: 32/apache\n\nTags: 32.0.6-fpm, 32.0-fpm, 32-fpm, stable-fpm, production-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a548962b17b1708dd84dc0561b522f47ca480e16\nDirectory: 32/fpm\n\nTags: 32.0.6-fpm-alpine, 32.0-fpm-alpine, 32-fpm-alpine, stable-fpm-alpine, production-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a548962b17b1708dd84dc0561b522f47ca480e16\nDirectory: 32/fpm-alpine\n\nTags: 33.0.0-apache, 33.0-apache, 33-apache, apache, 33.0.0, 33.0, 33, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 53d81594c8050ba84ab7410860b355493f753346\nDirectory: 33/apache\n\nTags: 33.0.0-fpm, 33.0-fpm, 33-fpm, fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 53d81594c8050ba84ab7410860b355493f753346\nDirectory: 33/fpm\n\nTags: 33.0.0-fpm-alpine, 33.0-fpm-alpine, 33-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 53d81594c8050ba84ab7410860b355493f753346\nDirectory: 33/fpm-alpine\n"
  },
  {
    "path": "library/nginx",
    "content": "# this file is generated via https://github.com/nginx/docker-nginx/blob/1733df4445c59503d7855d6d8bed74cf049ac570/generate-stackbrew-library.sh\n\nMaintainers: NGINX Docker Maintainers <docker-maint@nginx.com> (@nginx)\nGitRepo: https://github.com/nginx/docker-nginx.git\n\nTags: 1.29.6, mainline, 1, 1.29, latest, 1.29.6-trixie, mainline-trixie, 1-trixie, 1.29-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/debian\n\nTags: 1.29.6-perl, mainline-perl, 1-perl, 1.29-perl, perl, 1.29.6-trixie-perl, mainline-trixie-perl, 1-trixie-perl, 1.29-trixie-perl, trixie-perl\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/debian-perl\n\nTags: 1.29.6-otel, mainline-otel, 1-otel, 1.29-otel, otel, 1.29.6-trixie-otel, mainline-trixie-otel, 1-trixie-otel, 1.29-trixie-otel, trixie-otel\nArchitectures: amd64, arm64v8\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/debian-otel\n\nTags: 1.29.6-alpine, mainline-alpine, 1-alpine, 1.29-alpine, alpine, 1.29.6-alpine3.23, mainline-alpine3.23, 1-alpine3.23, 1.29-alpine3.23, alpine3.23\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, s390x, i386, amd64, riscv64\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/alpine\n\nTags: 1.29.6-alpine-perl, mainline-alpine-perl, 1-alpine-perl, 1.29-alpine-perl, alpine-perl, 1.29.6-alpine3.23-perl, mainline-alpine3.23-perl, 1-alpine3.23-perl, 1.29-alpine3.23-perl, alpine3.23-perl\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, s390x, i386, amd64, riscv64\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/alpine-perl\n\nTags: 1.29.6-alpine-slim, mainline-alpine-slim, 1-alpine-slim, 1.29-alpine-slim, alpine-slim, 1.29.6-alpine3.23-slim, mainline-alpine3.23-slim, 1-alpine3.23-slim, 1.29-alpine3.23-slim, alpine3.23-slim\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, s390x, i386, amd64, riscv64\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/alpine-slim\n\nTags: 1.29.6-alpine-otel, mainline-alpine-otel, 1-alpine-otel, 1.29-alpine-otel, alpine-otel, 1.29.6-alpine3.23-otel, mainline-alpine3.23-otel, 1-alpine3.23-otel, 1.29-alpine3.23-otel, alpine3.23-otel\nArchitectures: amd64, arm64v8\nGitCommit: 4b41a5f5e05939905d98a540a269046e862d8d03\nDirectory: mainline/alpine-otel\n\nTags: 1.28.2, stable, 1.28, 1.28.2-trixie, stable-trixie, 1.28-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: ffe72978e08c5b0dacecd604e528f6d0741a9ae5\nDirectory: stable/debian\n\nTags: 1.28.2-perl, stable-perl, 1.28-perl, 1.28.2-trixie-perl, stable-trixie-perl, 1.28-trixie-perl\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: ffe72978e08c5b0dacecd604e528f6d0741a9ae5\nDirectory: stable/debian-perl\n\nTags: 1.28.2-otel, stable-otel, 1.28-otel, 1.28.2-trixie-otel, stable-trixie-otel, 1.28-trixie-otel\nArchitectures: amd64, arm64v8\nGitCommit: ffe72978e08c5b0dacecd604e528f6d0741a9ae5\nDirectory: stable/debian-otel\n\nTags: 1.28.2-alpine, stable-alpine, 1.28-alpine, 1.28.2-alpine3.23, stable-alpine3.23, 1.28-alpine3.23\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, s390x, i386, amd64, riscv64\nGitCommit: ffe72978e08c5b0dacecd604e528f6d0741a9ae5\nDirectory: stable/alpine\n\nTags: 1.28.2-alpine-perl, stable-alpine-perl, 1.28-alpine-perl, 1.28.2-alpine3.23-perl, stable-alpine3.23-perl, 1.28-alpine3.23-perl\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, s390x, i386, amd64, riscv64\nGitCommit: ffe72978e08c5b0dacecd604e528f6d0741a9ae5\nDirectory: stable/alpine-perl\n\nTags: 1.28.2-alpine-slim, stable-alpine-slim, 1.28-alpine-slim, 1.28.2-alpine3.23-slim, stable-alpine3.23-slim, 1.28-alpine3.23-slim\nArchitectures: arm64v8, arm32v6, arm32v7, ppc64le, s390x, i386, amd64, riscv64\nGitCommit: e2ce6fac3776b07c746ec4e0d26ab07cb45c3cec\nDirectory: stable/alpine-slim\n\nTags: 1.28.2-alpine-otel, stable-alpine-otel, 1.28-alpine-otel, 1.28.2-alpine3.23-otel, stable-alpine3.23-otel, 1.28-alpine3.23-otel\nArchitectures: amd64, arm64v8\nGitCommit: ffe72978e08c5b0dacecd604e528f6d0741a9ae5\nDirectory: stable/alpine-otel\n"
  },
  {
    "path": "library/node",
    "content": "# this file is generated via https://github.com/nodejs/docker-node/blob/913d93f2ba4cddb224b73fa9f7531cacb501815e/stackbrew.js\n\nMaintainers: The Node.js Docker Team <https://github.com/nodejs/docker-node> (@nodejs)\nGitRepo: https://github.com/nodejs/docker-node.git\nGitFetch: refs/heads/main\n\nTags: 25-alpine3.22, 25.8-alpine3.22, 25.8.1-alpine3.22, alpine3.22, current-alpine3.22\nArchitectures: amd64, arm64v8, s390x\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/alpine3.22\n\nTags: 25-alpine, 25-alpine3.23, 25.8-alpine, 25.8-alpine3.23, 25.8.1-alpine, 25.8.1-alpine3.23, alpine, alpine3.23, current-alpine, current-alpine3.23\nArchitectures: amd64, arm64v8, s390x\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/alpine3.23\n\nTags: 25, 25-bookworm, 25.8, 25.8-bookworm, 25.8.1, 25.8.1-bookworm, bookworm, current, current-bookworm, latest\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/bookworm\n\nTags: 25-bookworm-slim, 25-slim, 25.8-bookworm-slim, 25.8-slim, 25.8.1-bookworm-slim, 25.8.1-slim, bookworm-slim, current-bookworm-slim, current-slim, slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/bookworm-slim\n\nTags: 25-bullseye, 25.8-bullseye, 25.8.1-bullseye, bullseye, current-bullseye\nArchitectures: amd64, arm64v8\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/bullseye\n\nTags: 25-bullseye-slim, 25.8-bullseye-slim, 25.8.1-bullseye-slim, bullseye-slim, current-bullseye-slim\nArchitectures: amd64, arm64v8\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/bullseye-slim\n\nTags: 25-trixie, 25.8-trixie, 25.8.1-trixie, current-trixie, trixie\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/trixie\n\nTags: 25-trixie-slim, 25.8-trixie-slim, 25.8.1-trixie-slim, current-trixie-slim, trixie-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 9efd3ef7e96790bbb4ec85800d8af55fb7c17bf1\nDirectory: 25/trixie-slim\n\nTags: 24-alpine3.22, 24.14-alpine3.22, 24.14.0-alpine3.22, krypton-alpine3.22, lts-alpine3.22\nArchitectures: amd64, arm64v8, s390x\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/alpine3.22\n\nTags: 24-alpine, 24-alpine3.23, 24.14-alpine, 24.14-alpine3.23, 24.14.0-alpine, 24.14.0-alpine3.23, krypton-alpine, krypton-alpine3.23, lts-alpine, lts-alpine3.23\nArchitectures: amd64, arm64v8, s390x\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/alpine3.23\n\nTags: 24, 24-bookworm, 24.14, 24.14-bookworm, 24.14.0, 24.14.0-bookworm, krypton, krypton-bookworm, lts, lts-bookworm, lts-krypton\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/bookworm\n\nTags: 24-bookworm-slim, 24-slim, 24.14-bookworm-slim, 24.14-slim, 24.14.0-bookworm-slim, 24.14.0-slim, krypton-bookworm-slim, krypton-slim, lts-bookworm-slim, lts-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/bookworm-slim\n\nTags: 24-bullseye, 24.14-bullseye, 24.14.0-bullseye, krypton-bullseye, lts-bullseye\nArchitectures: amd64, arm64v8\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/bullseye\n\nTags: 24-bullseye-slim, 24.14-bullseye-slim, 24.14.0-bullseye-slim, krypton-bullseye-slim, lts-bullseye-slim\nArchitectures: amd64, arm64v8\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/bullseye-slim\n\nTags: 24-trixie, 24.14-trixie, 24.14.0-trixie, krypton-trixie, lts-trixie\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/trixie\n\nTags: 24-trixie-slim, 24.14-trixie-slim, 24.14.0-trixie-slim, krypton-trixie-slim, lts-trixie-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 62ab97e3a124eeaa6e12aa36815f5d71d498ce29\nDirectory: 24/trixie-slim\n\nTags: 22-alpine3.22, 22.22-alpine3.22, 22.22.1-alpine3.22, jod-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/alpine3.22\n\nTags: 22-alpine, 22-alpine3.23, 22.22-alpine, 22.22-alpine3.23, 22.22.1-alpine, 22.22.1-alpine3.23, jod-alpine, jod-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, s390x\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/alpine3.23\n\nTags: 22, 22-bookworm, 22.22, 22.22-bookworm, 22.22.1, 22.22.1-bookworm, jod, jod-bookworm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/bookworm\n\nTags: 22-bookworm-slim, 22-slim, 22.22-bookworm-slim, 22.22-slim, 22.22.1-bookworm-slim, 22.22.1-slim, jod-bookworm-slim, jod-slim\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/bookworm-slim\n\nTags: 22-bullseye, 22.22-bullseye, 22.22.1-bullseye, jod-bullseye\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/bullseye\n\nTags: 22-bullseye-slim, 22.22-bullseye-slim, 22.22.1-bullseye-slim, jod-bullseye-slim\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/bullseye-slim\n\nTags: 22-trixie, 22.22-trixie, 22.22.1-trixie, jod-trixie\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/trixie\n\nTags: 22-trixie-slim, 22.22-trixie-slim, 22.22.1-trixie-slim, jod-trixie-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 93f059c10df5489314e1aae1ccf937d54b750249\nDirectory: 22/trixie-slim\n\nTags: 20-alpine3.22, 20.20-alpine3.22, 20.20.1-alpine3.22, iron-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/alpine3.22\n\nTags: 20-alpine, 20-alpine3.23, 20.20-alpine, 20.20-alpine3.23, 20.20.1-alpine, 20.20.1-alpine3.23, iron-alpine, iron-alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/alpine3.23\n\nTags: 20, 20-bookworm, 20.20, 20.20-bookworm, 20.20.1, 20.20.1-bookworm, iron, iron-bookworm\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/bookworm\n\nTags: 20-bookworm-slim, 20-slim, 20.20-bookworm-slim, 20.20-slim, 20.20.1-bookworm-slim, 20.20.1-slim, iron-bookworm-slim, iron-slim\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/bookworm-slim\n\nTags: 20-bullseye, 20.20-bullseye, 20.20.1-bullseye, iron-bullseye\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/bullseye\n\nTags: 20-bullseye-slim, 20.20-bullseye-slim, 20.20.1-bullseye-slim, iron-bullseye-slim\nArchitectures: amd64, arm32v7, arm64v8\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/bullseye-slim\n\nTags: 20-trixie, 20.20-trixie, 20.20.1-trixie, iron-trixie\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/trixie\n\nTags: 20-trixie-slim, 20.20-trixie-slim, 20.20.1-trixie-slim, iron-trixie-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: b84742fca23d8a082c7925a52c6578186b6649c5\nDirectory: 20/trixie-slim\n\n"
  },
  {
    "path": "library/notary",
    "content": "Maintainers: TBD (@docker)\nGitRepo: https://github.com/docker/notary-official-images.git\nGitCommit: 77b9b7833f8dd6be07104b214193788795a320ff\nArchitectures: amd64, arm32v6, arm64v8, i386, ppc64le, s390x\nBuilder: buildkit\n\n#\n# based on alpine:3.16, which was EOL in May of 2024\n#\n#Tags: server-0.7.0, server\n#Directory: notary-server\n#\n#Tags: signer-0.7.0, signer\n#Directory: notary-signer\n"
  },
  {
    "path": "library/odoo",
    "content": "Maintainers: Christophe Monniez <moc@odoo.com> (@d-fence)\nGitRepo: https://github.com/odoo/docker\nGitCommit: b5ff5c6057cc03edb758a571e776914ed56def8f\n\nTags: 19.0-20260305, 19.0, 19, latest\nArchitectures: amd64, arm64v8, ppc64le\nDirectory: 19.0\n\nTags: 18.0-20260305, 18.0, 18\nArchitectures: amd64, arm64v8, ppc64le\nDirectory: 18.0\n\nTags: 17.0-20260305, 17.0, 17\nArchitectures: amd64, arm64v8\nDirectory: 17.0\n\n"
  },
  {
    "path": "library/open-liberty",
    "content": "Maintainers: Gkerta Seferi <Gkerta.Seferi@ibm.com> (@gkertasef),\n             Leo Christy Jesuraj <leojc@ca.ibm.com> (@leochr),\n             Michal Broz <mbroz@us.ibm.com> (@mbroz2),\n             Wendy Raschke <wraschke@us.ibm.com> (@wraschke)\nGitRepo: https://github.com/OpenLiberty/ci.docker.git\nGitFetch: refs/heads/main\nGitCommit: 507223e28c9b9488d6c2f80231db26ef1cf91974\nArchitectures: amd64, i386, ppc64le, s390x\n\nTags: beta\nDirectory: releases/latest/beta\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: beta-java11\nDirectory: releases/latest/beta\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: beta-java17\nDirectory: releases/latest/beta\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: kernel-slim, kernel-slim-java8-openj9\nDirectory: releases/latest/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: kernel-slim-java11-openj9\nDirectory: releases/latest/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: kernel-slim-java17-openj9\nDirectory: releases/latest/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: full, full-java8-openj9, latest\nDirectory: releases/latest/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: full-java11-openj9\nDirectory: releases/latest/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: full-java17-openj9\nDirectory: releases/latest/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.6-kernel-slim-java8-openj9\nDirectory: releases/25.0.0.6/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 25.0.0.6-kernel-slim-java11-openj9\nDirectory: releases/25.0.0.6/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.6-kernel-slim-java17-openj9\nDirectory: releases/25.0.0.6/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.6-full-java8-openj9\nDirectory: releases/25.0.0.6/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 25.0.0.6-full-java11-openj9\nDirectory: releases/25.0.0.6/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.6-full-java17-openj9\nDirectory: releases/25.0.0.6/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.9-kernel-slim-java8-openj9\nDirectory: releases/25.0.0.9/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 25.0.0.9-kernel-slim-java11-openj9\nDirectory: releases/25.0.0.9/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.9-kernel-slim-java17-openj9\nDirectory: releases/25.0.0.9/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.9-full-java8-openj9\nDirectory: releases/25.0.0.9/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 25.0.0.9-full-java11-openj9\nDirectory: releases/25.0.0.9/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.9-full-java17-openj9\nDirectory: releases/25.0.0.9/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.12-kernel-slim-java8-openj9\nDirectory: releases/25.0.0.12/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 25.0.0.12-kernel-slim-java11-openj9\nDirectory: releases/25.0.0.12/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.12-kernel-slim-java17-openj9\nDirectory: releases/25.0.0.12/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.12-full-java8-openj9\nDirectory: releases/25.0.0.12/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 25.0.0.12-full-java11-openj9\nDirectory: releases/25.0.0.12/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.12-full-java17-openj9\nDirectory: releases/25.0.0.12/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 26.0.0.2-kernel-slim-java8-openj9\nDirectory: releases/26.0.0.2/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 26.0.0.2-kernel-slim-java11-openj9\nDirectory: releases/26.0.0.2/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 26.0.0.2-kernel-slim-java17-openj9\nDirectory: releases/26.0.0.2/kernel-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 26.0.0.2-full-java8-openj9\nDirectory: releases/26.0.0.2/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk8\n\nTags: 26.0.0.2-full-java11-openj9\nDirectory: releases/26.0.0.2/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 26.0.0.2-full-java17-openj9\nDirectory: releases/26.0.0.2/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17"
  },
  {
    "path": "library/openjdk",
    "content": "# this file is generated via https://github.com/docker-library/openjdk/blob/82ebf1fc0e888b0319007852b65899fa32c58f1e/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/openjdk.git\nGitCommit: 99d12af7f7d305864426f19b42ee597a136264ad\n\nTags: 27-ea-13-jdk-oraclelinux10, 27-ea-13-oraclelinux10, 27-ea-jdk-oraclelinux10, 27-ea-oraclelinux10, 27-ea-13-jdk-oracle, 27-ea-13-oracle, 27-ea-jdk-oracle, 27-ea-oracle\nSharedTags: 27-ea-13-jdk, 27-ea-13, 27-ea-jdk, 27-ea\nDirectory: 27/oraclelinux10\nArchitectures: amd64, arm64v8\n\nTags: 27-ea-13-jdk-oraclelinux9, 27-ea-13-oraclelinux9, 27-ea-jdk-oraclelinux9, 27-ea-oraclelinux9\nDirectory: 27/oraclelinux9\nArchitectures: amd64, arm64v8\n\nTags: 27-ea-13-jdk-trixie, 27-ea-13-trixie, 27-ea-jdk-trixie, 27-ea-trixie\nDirectory: 27/trixie\nArchitectures: amd64, arm64v8\n\nTags: 27-ea-13-jdk-slim-trixie, 27-ea-13-slim-trixie, 27-ea-jdk-slim-trixie, 27-ea-slim-trixie, 27-ea-13-jdk-slim, 27-ea-13-slim, 27-ea-jdk-slim, 27-ea-slim\nDirectory: 27/slim-trixie\nArchitectures: amd64, arm64v8\n\nTags: 27-ea-13-jdk-bookworm, 27-ea-13-bookworm, 27-ea-jdk-bookworm, 27-ea-bookworm\nDirectory: 27/bookworm\nArchitectures: amd64, arm64v8\n\nTags: 27-ea-13-jdk-slim-bookworm, 27-ea-13-slim-bookworm, 27-ea-jdk-slim-bookworm, 27-ea-slim-bookworm\nDirectory: 27/slim-bookworm\nArchitectures: amd64, arm64v8\n\nTags: 27-ea-13-jdk-windowsservercore-ltsc2025, 27-ea-13-windowsservercore-ltsc2025, 27-ea-jdk-windowsservercore-ltsc2025, 27-ea-windowsservercore-ltsc2025\nSharedTags: 27-ea-13-jdk-windowsservercore, 27-ea-13-windowsservercore, 27-ea-jdk-windowsservercore, 27-ea-windowsservercore, 27-ea-13-jdk, 27-ea-13, 27-ea-jdk, 27-ea\nDirectory: 27/windows/windowsservercore-ltsc2025\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2025\n\nTags: 27-ea-13-jdk-windowsservercore-ltsc2022, 27-ea-13-windowsservercore-ltsc2022, 27-ea-jdk-windowsservercore-ltsc2022, 27-ea-windowsservercore-ltsc2022\nSharedTags: 27-ea-13-jdk-windowsservercore, 27-ea-13-windowsservercore, 27-ea-jdk-windowsservercore, 27-ea-windowsservercore, 27-ea-13-jdk, 27-ea-13, 27-ea-jdk, 27-ea\nDirectory: 27/windows/windowsservercore-ltsc2022\nArchitectures: windows-amd64\nConstraints: windowsservercore-ltsc2022\n\nTags: 27-ea-13-jdk-nanoserver-ltsc2025, 27-ea-13-nanoserver-ltsc2025, 27-ea-jdk-nanoserver-ltsc2025, 27-ea-nanoserver-ltsc2025\nSharedTags: 27-ea-13-jdk-nanoserver, 27-ea-13-nanoserver, 27-ea-jdk-nanoserver, 27-ea-nanoserver\nDirectory: 27/windows/nanoserver-ltsc2025\nArchitectures: windows-amd64\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: 27-ea-13-jdk-nanoserver-ltsc2022, 27-ea-13-nanoserver-ltsc2022, 27-ea-jdk-nanoserver-ltsc2022, 27-ea-nanoserver-ltsc2022\nSharedTags: 27-ea-13-jdk-nanoserver, 27-ea-13-nanoserver, 27-ea-jdk-nanoserver, 27-ea-nanoserver\nDirectory: 27/windows/nanoserver-ltsc2022\nArchitectures: windows-amd64\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/oraclelinux",
    "content": "Maintainers: Oracle Linux Product Team <ol-ovm-info_ww@oracle.com> (@Oracle)\nGitRepo: https://github.com/oracle/container-images.git\nGitCommit: 5c8a1c296acd6e90487cd261d16cf85fd6bcb73f\nGitFetch: refs/heads/master\n# https://github.com/oracle/container-images/tree/dist-amd64\namd64-GitFetch: refs/heads/dist-amd64\namd64-GitCommit: 18ad8c90a1a89560d2e6b0f0d2b8aca27c9ef99d\n# https://github.com/oracle/container-images/tree/dist-arm64v8\narm64v8-GitFetch: refs/heads/dist-arm64v8\narm64v8-GitCommit: ee6aeb9d11078b5de991d82f8503d51b98981855\n\nTags: 10\nArchitectures: amd64, arm64v8\nDirectory: 10\n\nTags: 10-slim\nArchitectures: amd64, arm64v8\nDirectory: 10-slim\n\nTags: 9\nArchitectures: amd64, arm64v8\nDirectory: 9\n\nTags: 9-slim\nArchitectures: amd64, arm64v8\nDirectory: 9-slim\n\nTags: 9-slim-fips\nArchitectures: amd64, arm64v8\nDirectory: 9-slim-fips\n\nTags: 8.10, 8\nArchitectures: amd64, arm64v8\nDirectory: 8\n\nTags: 8-slim\nArchitectures: amd64, arm64v8\nDirectory: 8-slim\n\nTags: 8-slim-fips\nArchitectures: amd64, arm64v8\nDirectory: 8-slim-fips\n\nTags: 7.9, 7\nArchitectures: amd64, arm64v8\nDirectory: 7\n\nTags: 7-slim\nArchitectures: amd64, arm64v8\nDirectory: 7-slim\n\nTags: 7-slim-fips\nArchitectures: amd64, arm64v8\nDirectory: 7-slim-fips\n"
  },
  {
    "path": "library/orientdb",
    "content": "\nMaintainers: Tglman <tglman@tglman.com> (@tglman)\n\nTags: 3.2.50, 3.2, latest\nArchitectures: amd64, arm32v7, arm64v8\nGitRepo: https://github.com/orientechnologies/orientdb-docker.git\nGitCommit: 17413e35a4f5f451df48f335068344b878871995\nDirectory: release/3.2.x/3.2.50\n\nTags: 3.2.50-tp3, 3.2-tp3\nArchitectures: amd64, arm32v7, arm64v8\nGitRepo: https://github.com/orientechnologies/orientdb-docker.git\nGitCommit: 17413e35a4f5f451df48f335068344b878871995\nDirectory: release/3.2.x/3.2.50-tp3\n\nTags: 3.1.20, 3.1\nGitRepo: https://github.com/orientechnologies/orientdb-docker.git\nGitCommit: a8a42acbe19dad60a051afe08ed625e66587dd37 \nDirectory: release/3.1.x/3.1.20\n\nTags: 3.1.20-tp3, 3.1-tp3\nGitRepo: https://github.com/orientechnologies/orientdb-docker.git\nGitCommit: a8a42acbe19dad60a051afe08ed625e66587dd37  \nDirectory: release/3.1.x/3.1.20-tp3\n"
  },
  {
    "path": "library/percona",
    "content": "Maintainers: Evgeniy Patlan <evgeniy.patlan@percona.com> (@EvgeniyPatlan),\n             Viacheslav Sarzhan <slava.sarzhan@percona.com> (@hors),\n             Oleksandr Miroshnychenko <alex.miroshnychenko@percona.com> (@vorsel),\n             Vadim Yalovets <vadim.yalovets@percona.com> (@adivinho),\n             Surabhi Bhat <surabhi.bhat@percona.com> (@surbhat1595)\nGitRepo: https://github.com/percona/percona-docker.git\nGitFetch: refs/heads/main\nArchitectures: amd64\n\nTags: 8.0.45-36-centos, 8.0-centos, 8-centos, 8.0.45-36, 8.0, 8, ps-8.0.45-35, ps-8.0, ps-8\nGitCommit: 808750eaacf6726a5a74b3ac1cb9096e61dfc379\nDirectory: percona-server-8.0\nFile: Dockerfile-dockerhub\n\nTags: psmdb-8.0.19, psmdb-8.0\nGitCommit: 9676d575707c3a2870f01a914c3f79de0b64dc3f\nDirectory: percona-server-mongodb-8.0\nFile: Dockerfile-dockerhub\n\nTags: psmdb-7.0.30, psmdb-7.0\nGitCommit: 5d25e28e4a086f3150c138eb1421182099d7b6e2\nDirectory: percona-server-mongodb-7.0\nFile: Dockerfile-dockerhub\n\nTags: psmdb-6.0.27, psmdb-6.0\nGitCommit: d6cf3b9675f07ec443c5059806ac4ba3ac14a6ac\nDirectory: percona-server-mongodb-6.0\nFile: Dockerfile-dockerhub\n"
  },
  {
    "path": "library/perl",
    "content": "Maintainers: Peter Martini <PeterCMartini@GMail.com> (@PeterMartini),\n             Zak B. Elep <zakame@cpan.org> (@zakame)\nGitRepo: https://github.com/perl/docker-perl.git\nGitCommit: 8b707a17ed1380a57b38d2dac8b4effdfd9b5194\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, ppc64le, riscv64, s390x\n\nTags: 5.42.1, 5.42, 5, latest, stable, 5.42.1-trixie, 5.42-trixie, 5-trixie, trixie, stable-trixie\nDirectory: 5.042.001-main-trixie\n\nTags: 5.42.1-bookworm, 5.42-bookworm, 5-bookworm, bookworm, stable-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.042.001-main-bookworm\n\nTags: 5.42.1-bullseye, 5.42-bullseye, 5-bullseye, bullseye, stable-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.042.001-main-bullseye\n\nTags: 5.42.1-slim, 5.42-slim, 5-slim, slim, stable-slim, 5.42.1-slim-trixie, 5.42-slim-trixie, 5-slim-trixie, slim-trixie, stable-slim-trixie\nDirectory: 5.042.001-slim-trixie\n\nTags: 5.42.1-slim-bookworm, 5.42-slim-bookworm, 5-slim-bookworm, slim-bookworm, stable-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.042.001-slim-bookworm\n\nTags: 5.42.1-slim-bullseye, 5.42-slim-bullseye, 5-slim-bullseye, slim-bullseye, stable-slim-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.042.001-slim-bullseye\n\nTags: 5.42.1-threaded, 5.42-threaded, 5-threaded, threaded, stable-threaded, 5.42.1-threaded-trixie, 5.42-threaded-trixie, 5-threaded-trixie, threaded-trixie, stable-threaded-trixie\nDirectory: 5.042.001-main,threaded-trixie\n\nTags: 5.42.1-threaded-bookworm, 5.42-threaded-bookworm, 5-threaded-bookworm, threaded-bookworm, stable-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.042.001-main,threaded-bookworm\n\nTags: 5.42.1-threaded-bullseye, 5.42-threaded-bullseye, 5-threaded-bullseye, threaded-bullseye, stable-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.042.001-main,threaded-bullseye\n\nTags: 5.42.1-slim-threaded, 5.42-slim-threaded, 5-slim-threaded, slim-threaded, stable-slim-threaded, 5.42.1-slim-threaded-trixie, 5.42-slim-threaded-trixie, 5-slim-threaded-trixie, slim-threaded-trixie, stable-slim-threaded-trixie\nDirectory: 5.042.001-slim,threaded-trixie\n\nTags: 5.42.1-slim-threaded-bookworm, 5.42-slim-threaded-bookworm, 5-slim-threaded-bookworm, slim-threaded-bookworm, stable-slim-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.042.001-slim,threaded-bookworm\n\nTags: 5.42.1-slim-threaded-bullseye, 5.42-slim-threaded-bullseye, 5-slim-threaded-bullseye, slim-threaded-bullseye, stable-slim-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.042.001-slim,threaded-bullseye\n\nTags: 5.40.3, 5.40, 5.40.3-trixie, 5.40-trixie\nDirectory: 5.040.003-main-trixie\n\nTags: 5.40.3-bookworm, 5.40-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.040.003-main-bookworm\n\nTags: 5.40.3-bullseye, 5.40-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.040.003-main-bullseye\n\nTags: 5.40.3-slim, 5.40-slim, 5.40.3-slim-trixie, 5.40-slim-trixie\nDirectory: 5.040.003-slim-trixie\n\nTags: 5.40.3-slim-bookworm, 5.40-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.040.003-slim-bookworm\n\nTags: 5.40.3-slim-bullseye, 5.40-slim-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.040.003-slim-bullseye\n\nTags: 5.40.3-threaded, 5.40-threaded, 5.40.3-threaded-trixie, 5.40-threaded-trixie\nDirectory: 5.040.003-main,threaded-trixie\n\nTags: 5.40.3-threaded-bookworm, 5.40-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.040.003-main,threaded-bookworm\n\nTags: 5.40.3-threaded-bullseye, 5.40-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.040.003-main,threaded-bullseye\n\nTags: 5.40.3-slim-threaded, 5.40-slim-threaded, 5.40.3-slim-threaded-trixie, 5.40-slim-threaded-trixie\nDirectory: 5.040.003-slim,threaded-trixie\n\nTags: 5.40.3-slim-threaded-bookworm, 5.40-slim-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.040.003-slim,threaded-bookworm\n\nTags: 5.40.3-slim-threaded-bullseye, 5.40-slim-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.040.003-slim,threaded-bullseye\n\nTags: 5.38.5, 5.38, 5.38.5-trixie, 5.38-trixie\nDirectory: 5.038.005-main-trixie\n\nTags: 5.38.5-bookworm, 5.38-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.038.005-main-bookworm\n\nTags: 5.38.5-bullseye, 5.38-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.038.005-main-bullseye\n\nTags: 5.38.5-slim, 5.38-slim, 5.38.5-slim-trixie, 5.38-slim-trixie\nDirectory: 5.038.005-slim-trixie\n\nTags: 5.38.5-slim-bookworm, 5.38-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.038.005-slim-bookworm\n\nTags: 5.38.5-slim-bullseye, 5.38-slim-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.038.005-slim-bullseye\n\nTags: 5.38.5-threaded, 5.38-threaded, 5.38.5-threaded-trixie, 5.38-threaded-trixie\nDirectory: 5.038.005-main,threaded-trixie\n\nTags: 5.38.5-threaded-bookworm, 5.38-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.038.005-main,threaded-bookworm\n\nTags: 5.38.5-threaded-bullseye, 5.38-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.038.005-main,threaded-bullseye\n\nTags: 5.38.5-slim-threaded, 5.38-slim-threaded, 5.38.5-slim-threaded-trixie, 5.38-slim-threaded-trixie\nDirectory: 5.038.005-slim,threaded-trixie\n\nTags: 5.38.5-slim-threaded-bookworm, 5.38-slim-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.038.005-slim,threaded-bookworm\n\nTags: 5.38.5-slim-threaded-bullseye, 5.38-slim-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.038.005-slim,threaded-bullseye\n\nTags: 5.43.8, 5.43, devel, 5.43.8-trixie, 5.43-trixie, devel-trixie\nDirectory: 5.043.008-main-trixie\n\nTags: 5.43.8-bookworm, 5.43-bookworm, devel-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.043.008-main-bookworm\n\nTags: 5.43.8-bullseye, 5.43-bullseye, devel-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.043.008-main-bullseye\n\nTags: 5.43.8-slim, 5.43-slim, devel-slim, 5.43.8-slim-trixie, 5.43-slim-trixie, devel-slim-trixie\nDirectory: 5.043.008-slim-trixie\n\nTags: 5.43.8-slim-bookworm, 5.43-slim-bookworm, devel-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.043.008-slim-bookworm\n\nTags: 5.43.8-slim-bullseye, 5.43-slim-bullseye, devel-slim-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.043.008-slim-bullseye\n\nTags: 5.43.8-threaded, 5.43-threaded, devel-threaded, 5.43.8-threaded-trixie, 5.43-threaded-trixie, devel-threaded-trixie\nDirectory: 5.043.008-main,threaded-trixie\n\nTags: 5.43.8-threaded-bookworm, 5.43-threaded-bookworm, devel-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.043.008-main,threaded-bookworm\n\nTags: 5.43.8-threaded-bullseye, 5.43-threaded-bullseye, devel-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.043.008-main,threaded-bullseye\n\nTags: 5.43.8-slim-threaded, 5.43-slim-threaded, devel-slim-threaded, 5.43.8-slim-threaded-trixie, 5.43-slim-threaded-trixie, devel-slim-threaded-trixie\nDirectory: 5.043.008-slim,threaded-trixie\n\nTags: 5.43.8-slim-threaded-bookworm, 5.43-slim-threaded-bookworm, devel-slim-threaded-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nDirectory: 5.043.008-slim,threaded-bookworm\n\nTags: 5.43.8-slim-threaded-bullseye, 5.43-slim-threaded-bullseye, devel-slim-threaded-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nDirectory: 5.043.008-slim,threaded-bullseye\n"
  },
  {
    "path": "library/photon",
    "content": "# this file is generated via https://github.com/vmware/photon-docker-image/blob/c48f588cebc54dba10db21c75d4354a03fa6ebc2/generate-stackbrew-library.sh\nMaintainers: Michelle Wang <michellew@vmware.com> (@michellew),\n             Alexey Makhalov <amakhalov@vmware.com> (@YustasSwamp)\nGitRepo: https://github.com/vmware/photon-docker-image.git\nDirectory: docker\n\n\nTags: 5.0, 5.0-20260214, latest\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/x86_64/5.0-20260214\nGitCommit: 7daa2733c6c3f04e47fb27a7e582f57918838c26\narm64v8-GitFetch: refs/heads/aarch64/5.0-20260214\narm64v8-GitCommit: d3f853a6fcd2d23251b22890d736ab044fc2b384\n\nTags: 4.0, 4.0-20260215\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/x86_64/4.0-20260215\nGitCommit: dee98791f59633825e0d754921cdec17aef0e3e0\narm64v8-GitFetch: refs/heads/aarch64/4.0-20260215\narm64v8-GitCommit: 4eb5e937e3e597033f274799a4136152807db7eb\n\nTags: 3.0, 3.0-20250316\nArchitectures: amd64, arm64v8\nGitFetch: refs/heads/x86_64/3.0-20250316\nGitCommit: f848d5df815c0afe76b42a608d49df0e87af51c2\narm64v8-GitFetch: refs/heads/aarch64/3.0-20250316\narm64v8-GitCommit: 93a0c62b9b7790fc27d1413f65073ef1a2894bab\n"
  },
  {
    "path": "library/php",
    "content": "# this file is generated via https://github.com/docker-library/php/blob/6c91a369458bf48ae137a647934585ce0480067d/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/php.git\n\nTags: 8.5.4-cli-trixie, 8.5-cli-trixie, 8-cli-trixie, cli-trixie, 8.5.4-trixie, 8.5-trixie, 8-trixie, trixie, 8.5.4-cli, 8.5-cli, 8-cli, cli, 8.5.4, 8.5, 8, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/trixie/cli\n\nTags: 8.5.4-apache-trixie, 8.5-apache-trixie, 8-apache-trixie, apache-trixie, 8.5.4-apache, 8.5-apache, 8-apache, apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/trixie/apache\n\nTags: 8.5.4-fpm-trixie, 8.5-fpm-trixie, 8-fpm-trixie, fpm-trixie, 8.5.4-fpm, 8.5-fpm, 8-fpm, fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/trixie/fpm\n\nTags: 8.5.4-zts-trixie, 8.5-zts-trixie, 8-zts-trixie, zts-trixie, 8.5.4-zts, 8.5-zts, 8-zts, zts\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/trixie/zts\n\nTags: 8.5.4-cli-bookworm, 8.5-cli-bookworm, 8-cli-bookworm, cli-bookworm, 8.5.4-bookworm, 8.5-bookworm, 8-bookworm, bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/bookworm/cli\n\nTags: 8.5.4-apache-bookworm, 8.5-apache-bookworm, 8-apache-bookworm, apache-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/bookworm/apache\n\nTags: 8.5.4-fpm-bookworm, 8.5-fpm-bookworm, 8-fpm-bookworm, fpm-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/bookworm/fpm\n\nTags: 8.5.4-zts-bookworm, 8.5-zts-bookworm, 8-zts-bookworm, zts-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/bookworm/zts\n\nTags: 8.5.4-cli-alpine3.23, 8.5-cli-alpine3.23, 8-cli-alpine3.23, cli-alpine3.23, 8.5.4-alpine3.23, 8.5-alpine3.23, 8-alpine3.23, alpine3.23, 8.5.4-cli-alpine, 8.5-cli-alpine, 8-cli-alpine, cli-alpine, 8.5.4-alpine, 8.5-alpine, 8-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/alpine3.23/cli\n\nTags: 8.5.4-fpm-alpine3.23, 8.5-fpm-alpine3.23, 8-fpm-alpine3.23, fpm-alpine3.23, 8.5.4-fpm-alpine, 8.5-fpm-alpine, 8-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/alpine3.23/fpm\n\nTags: 8.5.4-zts-alpine3.23, 8.5-zts-alpine3.23, 8-zts-alpine3.23, zts-alpine3.23, 8.5.4-zts-alpine, 8.5-zts-alpine, 8-zts-alpine, zts-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/alpine3.23/zts\n\nTags: 8.5.4-cli-alpine3.22, 8.5-cli-alpine3.22, 8-cli-alpine3.22, cli-alpine3.22, 8.5.4-alpine3.22, 8.5-alpine3.22, 8-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/alpine3.22/cli\n\nTags: 8.5.4-fpm-alpine3.22, 8.5-fpm-alpine3.22, 8-fpm-alpine3.22, fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/alpine3.22/fpm\n\nTags: 8.5.4-zts-alpine3.22, 8.5-zts-alpine3.22, 8-zts-alpine3.22, zts-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 534ba6219859135db3f0c1014b240f33928e8470\nDirectory: 8.5/alpine3.22/zts\n\nTags: 8.4.19-cli-trixie, 8.4-cli-trixie, 8.4.19-trixie, 8.4-trixie, 8.4.19-cli, 8.4-cli, 8.4.19, 8.4\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/trixie/cli\n\nTags: 8.4.19-apache-trixie, 8.4-apache-trixie, 8.4.19-apache, 8.4-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/trixie/apache\n\nTags: 8.4.19-fpm-trixie, 8.4-fpm-trixie, 8.4.19-fpm, 8.4-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/trixie/fpm\n\nTags: 8.4.19-zts-trixie, 8.4-zts-trixie, 8.4.19-zts, 8.4-zts\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/trixie/zts\n\nTags: 8.4.19-cli-bookworm, 8.4-cli-bookworm, 8.4.19-bookworm, 8.4-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/bookworm/cli\n\nTags: 8.4.19-apache-bookworm, 8.4-apache-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/bookworm/apache\n\nTags: 8.4.19-fpm-bookworm, 8.4-fpm-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/bookworm/fpm\n\nTags: 8.4.19-zts-bookworm, 8.4-zts-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/bookworm/zts\n\nTags: 8.4.19-cli-alpine3.23, 8.4-cli-alpine3.23, 8.4.19-alpine3.23, 8.4-alpine3.23, 8.4.19-cli-alpine, 8.4-cli-alpine, 8.4.19-alpine, 8.4-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/alpine3.23/cli\n\nTags: 8.4.19-fpm-alpine3.23, 8.4-fpm-alpine3.23, 8.4.19-fpm-alpine, 8.4-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/alpine3.23/fpm\n\nTags: 8.4.19-zts-alpine3.23, 8.4-zts-alpine3.23, 8.4.19-zts-alpine, 8.4-zts-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/alpine3.23/zts\n\nTags: 8.4.19-cli-alpine3.22, 8.4-cli-alpine3.22, 8.4.19-alpine3.22, 8.4-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/alpine3.22/cli\n\nTags: 8.4.19-fpm-alpine3.22, 8.4-fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/alpine3.22/fpm\n\nTags: 8.4.19-zts-alpine3.22, 8.4-zts-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fabd7ab7430b7cd7505683e92de3b437fd85073c\nDirectory: 8.4/alpine3.22/zts\n\nTags: 8.3.30-cli-trixie, 8.3-cli-trixie, 8.3.30-trixie, 8.3-trixie, 8.3.30-cli, 8.3-cli, 8.3.30, 8.3\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/trixie/cli\n\nTags: 8.3.30-apache-trixie, 8.3-apache-trixie, 8.3.30-apache, 8.3-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/trixie/apache\n\nTags: 8.3.30-fpm-trixie, 8.3-fpm-trixie, 8.3.30-fpm, 8.3-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3a74db043f304883e3553bdca969363399c87b5f\nDirectory: 8.3/trixie/fpm\n\nTags: 8.3.30-zts-trixie, 8.3-zts-trixie, 8.3.30-zts, 8.3-zts\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/trixie/zts\n\nTags: 8.3.30-cli-bookworm, 8.3-cli-bookworm, 8.3.30-bookworm, 8.3-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/bookworm/cli\n\nTags: 8.3.30-apache-bookworm, 8.3-apache-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/bookworm/apache\n\nTags: 8.3.30-fpm-bookworm, 8.3-fpm-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 3a74db043f304883e3553bdca969363399c87b5f\nDirectory: 8.3/bookworm/fpm\n\nTags: 8.3.30-zts-bookworm, 8.3-zts-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/bookworm/zts\n\nTags: 8.3.30-cli-alpine3.23, 8.3-cli-alpine3.23, 8.3.30-alpine3.23, 8.3-alpine3.23, 8.3.30-cli-alpine, 8.3-cli-alpine, 8.3.30-alpine, 8.3-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/alpine3.23/cli\n\nTags: 8.3.30-fpm-alpine3.23, 8.3-fpm-alpine3.23, 8.3.30-fpm-alpine, 8.3-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3a74db043f304883e3553bdca969363399c87b5f\nDirectory: 8.3/alpine3.23/fpm\n\nTags: 8.3.30-zts-alpine3.23, 8.3-zts-alpine3.23, 8.3.30-zts-alpine, 8.3-zts-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/alpine3.23/zts\n\nTags: 8.3.30-cli-alpine3.22, 8.3-cli-alpine3.22, 8.3.30-alpine3.22, 8.3-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/alpine3.22/cli\n\nTags: 8.3.30-fpm-alpine3.22, 8.3-fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3a74db043f304883e3553bdca969363399c87b5f\nDirectory: 8.3/alpine3.22/fpm\n\nTags: 8.3.30-zts-alpine3.22, 8.3-zts-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9bd420f925594037d42fb75ce811c9eb537e6385\nDirectory: 8.3/alpine3.22/zts\n\nTags: 8.2.30-cli-trixie, 8.2-cli-trixie, 8.2.30-trixie, 8.2-trixie, 8.2.30-cli, 8.2-cli, 8.2.30, 8.2\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/trixie/cli\n\nTags: 8.2.30-apache-trixie, 8.2-apache-trixie, 8.2.30-apache, 8.2-apache\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/trixie/apache\n\nTags: 8.2.30-fpm-trixie, 8.2-fpm-trixie, 8.2.30-fpm, 8.2-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/trixie/fpm\n\nTags: 8.2.30-zts-trixie, 8.2-zts-trixie, 8.2.30-zts, 8.2-zts\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/trixie/zts\n\nTags: 8.2.30-cli-bookworm, 8.2-cli-bookworm, 8.2.30-bookworm, 8.2-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/bookworm/cli\n\nTags: 8.2.30-apache-bookworm, 8.2-apache-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/bookworm/apache\n\nTags: 8.2.30-fpm-bookworm, 8.2-fpm-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/bookworm/fpm\n\nTags: 8.2.30-zts-bookworm, 8.2-zts-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/bookworm/zts\n\nTags: 8.2.30-cli-alpine3.23, 8.2-cli-alpine3.23, 8.2.30-alpine3.23, 8.2-alpine3.23, 8.2.30-cli-alpine, 8.2-cli-alpine, 8.2.30-alpine, 8.2-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/alpine3.23/cli\n\nTags: 8.2.30-fpm-alpine3.23, 8.2-fpm-alpine3.23, 8.2.30-fpm-alpine, 8.2-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/alpine3.23/fpm\n\nTags: 8.2.30-zts-alpine3.23, 8.2-zts-alpine3.23, 8.2.30-zts-alpine, 8.2-zts-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/alpine3.23/zts\n\nTags: 8.2.30-cli-alpine3.22, 8.2-cli-alpine3.22, 8.2.30-alpine3.22, 8.2-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/alpine3.22/cli\n\nTags: 8.2.30-fpm-alpine3.22, 8.2-fpm-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/alpine3.22/fpm\n\nTags: 8.2.30-zts-alpine3.22, 8.2-zts-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6485b53a1da0f2c4c5b564808de75ae62c023286\nDirectory: 8.2/alpine3.22/zts\n"
  },
  {
    "path": "library/php-zendserver",
    "content": "Maintainers: Heigo Sinilind <hsinilind@perforce.com> (@hsinilind),\n             Rain Viigipuu <rviigipuu@perforce.com> (@rainviigipuu)\nGitRepo: https://github.com/zendtech/php-zendserver-docker.git\nGitCommit: bcd65b82acb4f3b5b67f8c657c52f08bc52d8789\n\n# https://github.com/docker-library/docs/pull/2475\n"
  },
  {
    "path": "library/phpmyadmin",
    "content": "# This file is generated via https://github.com/phpmyadmin/docker/blob/0c64340e5d8cbae534b84c4820e0f38d28f44081/generate-stackbrew-library.sh\nMaintainers: Isaac Bennetch <bennetch@gmail.com> (@ibennetch),\n             William Desportes <williamdes@wdes.fr> (@williamdes)\nGitRepo: https://github.com/phpmyadmin/docker.git\n\nTags: 5.2.3-apache, 5.2-apache, 5-apache, apache, 5.2.3, 5.2, 5, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 452a995fe6c90b96473fc17c3d704786c33d42bc\nDirectory: apache\n\nTags: 5.2.3-fpm, 5.2-fpm, 5-fpm, fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 452a995fe6c90b96473fc17c3d704786c33d42bc\nDirectory: fpm\n\nTags: 5.2.3-fpm-alpine, 5.2-fpm-alpine, 5-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 452a995fe6c90b96473fc17c3d704786c33d42bc\nDirectory: fpm-alpine\n"
  },
  {
    "path": "library/plone",
    "content": "Maintainers: Alin Voinea <alin.voinea@gmail.com> (@avoinea),\n             Piero Nicolli <piero.nicolli@redturtle.it> (@pnicolli),\n             Sven Strack <sven@so36.net> (@svx),\n             Antonio De Marinis <Antonio.DeMarinis@eea.europa.eu> (@demarant),\n             Iulian Petchesi <iamnotacat12@gmail.com> (@Petchesi-Iulian),\n             Valentin Dumitru <valentin.dumitru@gmail.com> (@valipod)\nGitRepo: https://github.com/plone/plone.docker.git\n\n# https://github.com/docker-library/official-images/pull/17281#issuecomment-2741857680\n# https://github.com/docker-library/docs/pull/2479\n#Tags: 5.2.14-python38, 5.2-python38, 5-python38, python38, 5.2.14, 5.2, 5, latest\n#Architectures: amd64\n#GitCommit: a3a9c7e0c5ca324f488fe7354f00a997398195f7\n#Directory: 5.2/5.2.14/debian\n"
  },
  {
    "path": "library/postfixadmin",
    "content": "# This file is generated via https://github.com/postfixadmin/docker/blob/052a5f0370796309c813597e1dd73f89ae616b70/generate-stackbrew-library.sh\nMaintainers: David Goodwin <david@codepoets.co.uk> (@DavidGoodwin)\nGitRepo: https://github.com/postfixadmin/docker.git\n\nTags: 4.0.1-apache, 4.0-apache, 4-apache, apache, 4.0.1, 4.0, 4, latest\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: apache\nGitCommit: f7a67465b3b4a6b930cc98be5d04cdad2292609a\n\nTags: 4.0.1-fpm, 4.0-fpm, 4-fpm, fpm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: fpm\nGitCommit: f7a67465b3b4a6b930cc98be5d04cdad2292609a\n\nTags: 4.0.1-fpm-alpine, 4.0-fpm-alpine, 4-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nDirectory: fpm-alpine\nGitCommit: f7a67465b3b4a6b930cc98be5d04cdad2292609a\n"
  },
  {
    "path": "library/postgres",
    "content": "# this file is generated via https://github.com/docker-library/postgres/blob/304578a4b447792df66768a25a54e2247b117e74/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/postgres.git\n\nTags: 18.3, 18, latest, 18.3-trixie, 18-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6edb0a8c4def40c371514b34aef9037ec82d9110\nDirectory: 18/trixie\n\nTags: 18.3-bookworm, 18-bookworm, bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 6edb0a8c4def40c371514b34aef9037ec82d9110\nDirectory: 18/bookworm\n\nTags: 18.3-alpine3.23, 18-alpine3.23, alpine3.23, 18.3-alpine, 18-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6edb0a8c4def40c371514b34aef9037ec82d9110\nDirectory: 18/alpine3.23\n\nTags: 18.3-alpine3.22, 18-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 6edb0a8c4def40c371514b34aef9037ec82d9110\nDirectory: 18/alpine3.22\n\nTags: 17.9, 17, 17.9-trixie, 17-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9451a9a586c4c0efc0fc7c31afbe36d9d650c137\nDirectory: 17/trixie\n\nTags: 17.9-bookworm, 17-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 9451a9a586c4c0efc0fc7c31afbe36d9d650c137\nDirectory: 17/bookworm\n\nTags: 17.9-alpine3.23, 17-alpine3.23, 17.9-alpine, 17-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9451a9a586c4c0efc0fc7c31afbe36d9d650c137\nDirectory: 17/alpine3.23\n\nTags: 17.9-alpine3.22, 17-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9451a9a586c4c0efc0fc7c31afbe36d9d650c137\nDirectory: 17/alpine3.22\n\nTags: 16.13, 16, 16.13-trixie, 16-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 31041e40d9b06ce075f5edd767243e53efb5ee62\nDirectory: 16/trixie\n\nTags: 16.13-bookworm, 16-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 31041e40d9b06ce075f5edd767243e53efb5ee62\nDirectory: 16/bookworm\n\nTags: 16.13-alpine3.23, 16-alpine3.23, 16.13-alpine, 16-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 31041e40d9b06ce075f5edd767243e53efb5ee62\nDirectory: 16/alpine3.23\n\nTags: 16.13-alpine3.22, 16-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 31041e40d9b06ce075f5edd767243e53efb5ee62\nDirectory: 16/alpine3.22\n\nTags: 15.17, 15, 15.17-trixie, 15-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 21d696495924e89b0b6c43088e2783fabdef94be\nDirectory: 15/trixie\n\nTags: 15.17-bookworm, 15-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 21d696495924e89b0b6c43088e2783fabdef94be\nDirectory: 15/bookworm\n\nTags: 15.17-alpine3.23, 15-alpine3.23, 15.17-alpine, 15-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 21d696495924e89b0b6c43088e2783fabdef94be\nDirectory: 15/alpine3.23\n\nTags: 15.17-alpine3.22, 15-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 21d696495924e89b0b6c43088e2783fabdef94be\nDirectory: 15/alpine3.22\n\nTags: 14.22, 14, 14.22-trixie, 14-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0e0794dce71d160c89c04611663c69399db0d32\nDirectory: 14/trixie\n\nTags: 14.22-bookworm, 14-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: a0e0794dce71d160c89c04611663c69399db0d32\nDirectory: 14/bookworm\n\nTags: 14.22-alpine3.23, 14-alpine3.23, 14.22-alpine, 14-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0e0794dce71d160c89c04611663c69399db0d32\nDirectory: 14/alpine3.23\n\nTags: 14.22-alpine3.22, 14-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a0e0794dce71d160c89c04611663c69399db0d32\nDirectory: 14/alpine3.22\n"
  },
  {
    "path": "library/pypy",
    "content": "# this file is generated via https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/pypy.git\n\nTags: 3.11-7.3.21-trixie, 3.11-7.3-trixie, 3.11-7-trixie, 3.11-trixie, 3-7.3.21-trixie, 3-7.3-trixie, 3-7-trixie, 3-trixie, trixie\nSharedTags: 3.11-7.3.21, 3.11-7.3, 3.11-7, 3.11, 3-7.3.21, 3-7.3, 3-7, 3, latest\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 3.11/trixie\n\nTags: 3.11-7.3.21-slim, 3.11-7.3-slim, 3.11-7-slim, 3.11-slim, 3-7.3.21-slim, 3-7.3-slim, 3-7-slim, 3-slim, slim, 3.11-7.3.21-slim-trixie, 3.11-7.3-slim-trixie, 3.11-7-slim-trixie, 3.11-slim-trixie, 3-7.3.21-slim-trixie, 3-7.3-slim-trixie, 3-7-slim-trixie, 3-slim-trixie, slim-trixie\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 3.11/slim-trixie\n\nTags: 3.11-7.3.21-bookworm, 3.11-7.3-bookworm, 3.11-7-bookworm, 3.11-bookworm, 3-7.3.21-bookworm, 3-7.3-bookworm, 3-7-bookworm, 3-bookworm, bookworm\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 3.11/bookworm\n\nTags: 3.11-7.3.21-slim-bookworm, 3.11-7.3-slim-bookworm, 3.11-7-slim-bookworm, 3.11-slim-bookworm, 3-7.3.21-slim-bookworm, 3-7.3-slim-bookworm, 3-7-slim-bookworm, 3-slim-bookworm, slim-bookworm\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 3.11/slim-bookworm\n\nTags: 3.11-7.3.21-windowsservercore-ltsc2025, 3.11-7.3-windowsservercore-ltsc2025, 3.11-7-windowsservercore-ltsc2025, 3.11-windowsservercore-ltsc2025, 3-7.3.21-windowsservercore-ltsc2025, 3-7.3-windowsservercore-ltsc2025, 3-7-windowsservercore-ltsc2025, 3-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 3.11-7.3.21, 3.11-7.3, 3.11-7, 3.11, 3-7.3.21, 3-7.3, 3-7, 3, latest, 3.11-7.3.21-windowsservercore, 3.11-7.3-windowsservercore, 3.11-7-windowsservercore, 3.11-windowsservercore, 3-7.3.21-windowsservercore, 3-7.3-windowsservercore, 3-7-windowsservercore, 3-windowsservercore, windowsservercore\nArchitectures: windows-amd64\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 3.11/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 3.11-7.3.21-windowsservercore-ltsc2022, 3.11-7.3-windowsservercore-ltsc2022, 3.11-7-windowsservercore-ltsc2022, 3.11-windowsservercore-ltsc2022, 3-7.3.21-windowsservercore-ltsc2022, 3-7.3-windowsservercore-ltsc2022, 3-7-windowsservercore-ltsc2022, 3-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 3.11-7.3.21, 3.11-7.3, 3.11-7, 3.11, 3-7.3.21, 3-7.3, 3-7, 3, latest, 3.11-7.3.21-windowsservercore, 3.11-7.3-windowsservercore, 3.11-7-windowsservercore, 3.11-windowsservercore, 3-7.3.21-windowsservercore, 3-7.3-windowsservercore, 3-7-windowsservercore, 3-windowsservercore, windowsservercore\nArchitectures: windows-amd64\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 3.11/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 2.7-7.3.21-trixie, 2.7-7.3-trixie, 2.7-7-trixie, 2.7-trixie, 2-7.3.21-trixie, 2-7.3-trixie, 2-7-trixie, 2-trixie\nSharedTags: 2.7-7.3.21, 2.7-7.3, 2.7-7, 2.7, 2-7.3.21, 2-7.3, 2-7, 2\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 2.7/trixie\n\nTags: 2.7-7.3.21-slim, 2.7-7.3-slim, 2.7-7-slim, 2.7-slim, 2-7.3.21-slim, 2-7.3-slim, 2-7-slim, 2-slim, 2.7-7.3.21-slim-trixie, 2.7-7.3-slim-trixie, 2.7-7-slim-trixie, 2.7-slim-trixie, 2-7.3.21-slim-trixie, 2-7.3-slim-trixie, 2-7-slim-trixie, 2-slim-trixie\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 2.7/slim-trixie\n\nTags: 2.7-7.3.21-bookworm, 2.7-7.3-bookworm, 2.7-7-bookworm, 2.7-bookworm, 2-7.3.21-bookworm, 2-7.3-bookworm, 2-7-bookworm, 2-bookworm\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 2.7/bookworm\n\nTags: 2.7-7.3.21-slim-bookworm, 2.7-7.3-slim-bookworm, 2.7-7-slim-bookworm, 2.7-slim-bookworm, 2-7.3.21-slim-bookworm, 2-7.3-slim-bookworm, 2-7-slim-bookworm, 2-slim-bookworm\nArchitectures: amd64, arm64v8, i386\nGitCommit: c143e77415cba18f450910d83e27faa755307b8a\nDirectory: 2.7/slim-bookworm\n\nTags: 2.7-7.3.21-windowsservercore-ltsc2025, 2.7-7.3-windowsservercore-ltsc2025, 2.7-7-windowsservercore-ltsc2025, 2.7-windowsservercore-ltsc2025, 2-7.3.21-windowsservercore-ltsc2025, 2-7.3-windowsservercore-ltsc2025, 2-7-windowsservercore-ltsc2025, 2-windowsservercore-ltsc2025\nSharedTags: 2.7-7.3.21, 2.7-7.3, 2.7-7, 2.7, 2-7.3.21, 2-7.3, 2-7, 2, 2.7-7.3.21-windowsservercore, 2.7-7.3-windowsservercore, 2.7-7-windowsservercore, 2.7-windowsservercore, 2-7.3.21-windowsservercore, 2-7.3-windowsservercore, 2-7-windowsservercore, 2-windowsservercore\nArchitectures: windows-amd64\nGitCommit: 13e63d2b45ddbc8da8bafdb517e564f5385b7994\nDirectory: 2.7/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: 2.7-7.3.21-windowsservercore-ltsc2022, 2.7-7.3-windowsservercore-ltsc2022, 2.7-7-windowsservercore-ltsc2022, 2.7-windowsservercore-ltsc2022, 2-7.3.21-windowsservercore-ltsc2022, 2-7.3-windowsservercore-ltsc2022, 2-7-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022\nSharedTags: 2.7-7.3.21, 2.7-7.3, 2.7-7, 2.7, 2-7.3.21, 2-7.3, 2-7, 2, 2.7-7.3.21-windowsservercore, 2.7-7.3-windowsservercore, 2.7-7-windowsservercore, 2.7-windowsservercore, 2-7.3.21-windowsservercore, 2-7.3-windowsservercore, 2-7-windowsservercore, 2-windowsservercore\nArchitectures: windows-amd64\nGitCommit: 13e63d2b45ddbc8da8bafdb517e564f5385b7994\nDirectory: 2.7/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/python",
    "content": "# this file is generated via https://github.com/docker-library/python/blob/59e4abf1fb132d2f7be0b808bdc0b3e616519eeb/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/python.git\nBuilder: buildkit\n\nTags: 3.15.0a7-trixie, 3.15-rc-trixie\nSharedTags: 3.15.0a7, 3.15-rc\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/trixie\n\nTags: 3.15.0a7-slim-trixie, 3.15-rc-slim-trixie, 3.15.0a7-slim, 3.15-rc-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/slim-trixie\n\nTags: 3.15.0a7-bookworm, 3.15-rc-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/bookworm\n\nTags: 3.15.0a7-slim-bookworm, 3.15-rc-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/slim-bookworm\n\nTags: 3.15.0a7-alpine3.23, 3.15-rc-alpine3.23, 3.15.0a7-alpine, 3.15-rc-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/alpine3.23\n\nTags: 3.15.0a7-alpine3.22, 3.15-rc-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/alpine3.22\n\nTags: 3.15.0a7-windowsservercore-ltsc2025, 3.15-rc-windowsservercore-ltsc2025\nSharedTags: 3.15.0a7-windowsservercore, 3.15-rc-windowsservercore, 3.15.0a7, 3.15-rc\nArchitectures: windows-amd64\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\nBuilder: classic\n\nTags: 3.15.0a7-windowsservercore-ltsc2022, 3.15-rc-windowsservercore-ltsc2022\nSharedTags: 3.15.0a7-windowsservercore, 3.15-rc-windowsservercore, 3.15.0a7, 3.15-rc\nArchitectures: windows-amd64\nGitCommit: 50e3f493467278f72b4d79e0d54a69711b1d7bcf\nDirectory: 3.15-rc/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\nBuilder: classic\n\nTags: 3.14.3-trixie, 3.14-trixie, 3-trixie, trixie\nSharedTags: 3.14.3, 3.14, 3, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/trixie\n\nTags: 3.14.3-slim-trixie, 3.14-slim-trixie, 3-slim-trixie, slim-trixie, 3.14.3-slim, 3.14-slim, 3-slim, slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/slim-trixie\n\nTags: 3.14.3-bookworm, 3.14-bookworm, 3-bookworm, bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/bookworm\n\nTags: 3.14.3-slim-bookworm, 3.14-slim-bookworm, 3-slim-bookworm, slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/slim-bookworm\n\nTags: 3.14.3-alpine3.23, 3.14-alpine3.23, 3-alpine3.23, alpine3.23, 3.14.3-alpine, 3.14-alpine, 3-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/alpine3.23\n\nTags: 3.14.3-alpine3.22, 3.14-alpine3.22, 3-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/alpine3.22\n\nTags: 3.14.3-windowsservercore-ltsc2025, 3.14-windowsservercore-ltsc2025, 3-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nSharedTags: 3.14.3-windowsservercore, 3.14-windowsservercore, 3-windowsservercore, windowsservercore, 3.14.3, 3.14, 3, latest\nArchitectures: windows-amd64\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\nBuilder: classic\n\nTags: 3.14.3-windowsservercore-ltsc2022, 3.14-windowsservercore-ltsc2022, 3-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nSharedTags: 3.14.3-windowsservercore, 3.14-windowsservercore, 3-windowsservercore, windowsservercore, 3.14.3, 3.14, 3, latest\nArchitectures: windows-amd64\nGitCommit: ce782e2435387d50d3a21a29c76d0eb4115057d3\nDirectory: 3.14/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\nBuilder: classic\n\nTags: 3.13.12-trixie, 3.13-trixie\nSharedTags: 3.13.12, 3.13\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/trixie\n\nTags: 3.13.12-slim-trixie, 3.13-slim-trixie, 3.13.12-slim, 3.13-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/slim-trixie\n\nTags: 3.13.12-bookworm, 3.13-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/bookworm\n\nTags: 3.13.12-slim-bookworm, 3.13-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/slim-bookworm\n\nTags: 3.13.12-alpine3.23, 3.13-alpine3.23, 3.13.12-alpine, 3.13-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/alpine3.23\n\nTags: 3.13.12-alpine3.22, 3.13-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/alpine3.22\n\nTags: 3.13.12-windowsservercore-ltsc2025, 3.13-windowsservercore-ltsc2025\nSharedTags: 3.13.12-windowsservercore, 3.13-windowsservercore, 3.13.12, 3.13\nArchitectures: windows-amd64\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/windows/windowsservercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\nBuilder: classic\n\nTags: 3.13.12-windowsservercore-ltsc2022, 3.13-windowsservercore-ltsc2022\nSharedTags: 3.13.12-windowsservercore, 3.13-windowsservercore, 3.13.12, 3.13\nArchitectures: windows-amd64\nGitCommit: d7d46d97a9ffd58269d8d1d0218ce959362b4298\nDirectory: 3.13/windows/windowsservercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\nBuilder: classic\n\nTags: 3.12.13-trixie, 3.12-trixie\nSharedTags: 3.12.13, 3.12\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3362634339580d3232e65a66dd5a36c47ae7ff14\nDirectory: 3.12/trixie\n\nTags: 3.12.13-slim-trixie, 3.12-slim-trixie, 3.12.13-slim, 3.12-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3362634339580d3232e65a66dd5a36c47ae7ff14\nDirectory: 3.12/slim-trixie\n\nTags: 3.12.13-bookworm, 3.12-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 3362634339580d3232e65a66dd5a36c47ae7ff14\nDirectory: 3.12/bookworm\n\nTags: 3.12.13-slim-bookworm, 3.12-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 3362634339580d3232e65a66dd5a36c47ae7ff14\nDirectory: 3.12/slim-bookworm\n\nTags: 3.12.13-alpine3.23, 3.12-alpine3.23, 3.12.13-alpine, 3.12-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3362634339580d3232e65a66dd5a36c47ae7ff14\nDirectory: 3.12/alpine3.23\n\nTags: 3.12.13-alpine3.22, 3.12-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 3362634339580d3232e65a66dd5a36c47ae7ff14\nDirectory: 3.12/alpine3.22\n\nTags: 3.11.15-trixie, 3.11-trixie\nSharedTags: 3.11.15, 3.11\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c859f2b9e567f72c94e00c969f916d3f92ae52a7\nDirectory: 3.11/trixie\n\nTags: 3.11.15-slim-trixie, 3.11-slim-trixie, 3.11.15-slim, 3.11-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c859f2b9e567f72c94e00c969f916d3f92ae52a7\nDirectory: 3.11/slim-trixie\n\nTags: 3.11.15-bookworm, 3.11-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: c859f2b9e567f72c94e00c969f916d3f92ae52a7\nDirectory: 3.11/bookworm\n\nTags: 3.11.15-slim-bookworm, 3.11-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: c859f2b9e567f72c94e00c969f916d3f92ae52a7\nDirectory: 3.11/slim-bookworm\n\nTags: 3.11.15-alpine3.23, 3.11-alpine3.23, 3.11.15-alpine, 3.11-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c859f2b9e567f72c94e00c969f916d3f92ae52a7\nDirectory: 3.11/alpine3.23\n\nTags: 3.11.15-alpine3.22, 3.11-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c859f2b9e567f72c94e00c969f916d3f92ae52a7\nDirectory: 3.11/alpine3.22\n\nTags: 3.10.20-trixie, 3.10-trixie\nSharedTags: 3.10.20, 3.10\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: e4727fdefd2cd6f2713e67ddc8f18ad7027245a3\nDirectory: 3.10/trixie\n\nTags: 3.10.20-slim-trixie, 3.10-slim-trixie, 3.10.20-slim, 3.10-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: e4727fdefd2cd6f2713e67ddc8f18ad7027245a3\nDirectory: 3.10/slim-trixie\n\nTags: 3.10.20-bookworm, 3.10-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: e4727fdefd2cd6f2713e67ddc8f18ad7027245a3\nDirectory: 3.10/bookworm\n\nTags: 3.10.20-slim-bookworm, 3.10-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: e4727fdefd2cd6f2713e67ddc8f18ad7027245a3\nDirectory: 3.10/slim-bookworm\n\nTags: 3.10.20-alpine3.23, 3.10-alpine3.23, 3.10.20-alpine, 3.10-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: e4727fdefd2cd6f2713e67ddc8f18ad7027245a3\nDirectory: 3.10/alpine3.23\n\nTags: 3.10.20-alpine3.22, 3.10-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: e4727fdefd2cd6f2713e67ddc8f18ad7027245a3\nDirectory: 3.10/alpine3.22\n"
  },
  {
    "path": "library/r-base",
    "content": "Maintainers: Carl Boettiger <rocker-maintainers@eddelbuettel.com> (@cboettig),\n             Dirk Eddelbuettel <rocker-maintainers@eddelbuettel.com> (@eddelbuettel)\nGitRepo: https://github.com/rocker-org/rocker.git\n\nTags: 4.5.3, latest\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: afc9cbb503ca0b68fa8c513a8088d3b378e8bed9\nDirectory: r-base/4.5.3\n\n"
  },
  {
    "path": "library/rabbitmq",
    "content": "# this file is generated via https://github.com/docker-library/rabbitmq/blob/423cdaa94f7e3dc15462ae62487fa216e65d7c6a/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/rabbitmq.git\nBuilder: buildkit\n\nTags: 4.2.5, 4.2, 4, latest\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: fa6cb7beb484121f1fb2561eb7db576510adcf3b\nDirectory: 4.2/ubuntu\n\nTags: 4.2.5-management, 4.2-management, 4-management, management\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: fa6cb7beb484121f1fb2561eb7db576510adcf3b\nDirectory: 4.2/ubuntu/management\n\nTags: 4.2.5-alpine, 4.2-alpine, 4-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fa6cb7beb484121f1fb2561eb7db576510adcf3b\nDirectory: 4.2/alpine\n\nTags: 4.2.5-management-alpine, 4.2-management-alpine, 4-management-alpine, management-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: fa6cb7beb484121f1fb2561eb7db576510adcf3b\nDirectory: 4.2/alpine/management\n\nTags: 4.1.8, 4.1\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: e8d5b213621b9e454a6d7584c477cb5e48e6f879\nDirectory: 4.1/ubuntu\n\nTags: 4.1.8-management, 4.1-management\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: c0b2a8cb4422106392c7c15a13b0f9b074bfe3b7\nDirectory: 4.1/ubuntu/management\n\nTags: 4.1.8-alpine, 4.1-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: e8d5b213621b9e454a6d7584c477cb5e48e6f879\nDirectory: 4.1/alpine\n\nTags: 4.1.8-management-alpine, 4.1-management-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: c0b2a8cb4422106392c7c15a13b0f9b074bfe3b7\nDirectory: 4.1/alpine/management\n\nTags: 4.0.9, 4.0\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: a5bfd0f302b90e2b111ecf882f16a4399cd4569e\nDirectory: 4.0/ubuntu\n\nTags: 4.0.9-management, 4.0-management\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: d7706d74fc0ad345b9e9f52257caabdd0049596a\nDirectory: 4.0/ubuntu/management\n\nTags: 4.0.9-alpine, 4.0-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a5bfd0f302b90e2b111ecf882f16a4399cd4569e\nDirectory: 4.0/alpine\n\nTags: 4.0.9-management-alpine, 4.0-management-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7706d74fc0ad345b9e9f52257caabdd0049596a\nDirectory: 4.0/alpine/management\n"
  },
  {
    "path": "library/rakudo-star",
    "content": "Maintainers: Moritz Lenz <moritz.lenz@gmail.com> (@moritz),\n             Joelle Maslak <jmaslak@antelope.net> (@jmaslak),\n             Daniel Mita <daniel@dango.space> (@m-dango),\n             Anton Oks <anton.oks@gmx.de> (@AntonOks)\nGitRepo: https://github.com/rakudo/docker\n\nTags: trixie, 2026.01-trixie, latest\nArchitectures: amd64, arm64v8\nGitCommit: 72bbb4adec859181f130ab583c4d52e799f62346\nDirectory: 2026.01/trixie\n\nTags: bookworm, 2026.01-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: 72bbb4adec859181f130ab583c4d52e799f62346\nDirectory: 2026.01/bookworm\n\nTags: alpine, 2026.01-alpine\nArchitectures: amd64, arm64v8\nGitCommit: 72bbb4adec859181f130ab583c4d52e799f62346\nDirectory: 2026.01/alpine\n"
  },
  {
    "path": "library/redis",
    "content": "Maintainers: Adam Ben Shmuel <adam.ben-shmuel@redis.com> (@adamiBs),\n             Yossi Gottlieb <yossi@redis.com> (@yossigo),\n             Alexander Dobrzhansky <alexander.dobrzhansky@redis.com> (@adobrzhansky),\n             Max Berkman <max.berkman@redis.com> (@maxb-io),\n             Dagan Sandler <dagan.sandler@redis.com> (@dagansandler),\n             Petar Shtuchkin <petar.shtuchkin@redis.com> (@Peter-Sh)\nGitRepo: https://github.com/redis/docker-library-redis.git\n\nTags: 8.6.1, 8.6, 8, 8.6.1-trixie, 8.6-trixie, 8-trixie, latest, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64, ppc64le, s390x\nGitCommit: 772020f24a0acb30ffaa6647f3c79a7f3932225d\nGitFetch: refs/tags/v8.6.1\nDirectory: debian\n\nTags: 8.6.1-alpine, 8.6-alpine, 8-alpine, 8.6.1-alpine3.23, 8.6-alpine3.23, 8-alpine3.23, alpine, alpine3.23\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 772020f24a0acb30ffaa6647f3c79a7f3932225d\nGitFetch: refs/tags/v8.6.1\nDirectory: alpine\n\nTags: 8.4.2, 8.4, 8.4.2-trixie, 8.4-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, riscv64, ppc64le, s390x\nGitCommit: f57c53203ef603901bd75cbee76f1f5a5d56d8fa\nGitFetch: refs/tags/v8.4.2\nDirectory: debian\n\nTags: 8.4.2-alpine, 8.4-alpine, 8.4.2-alpine3.22, 8.4-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: f57c53203ef603901bd75cbee76f1f5a5d56d8fa\nGitFetch: refs/tags/v8.4.2\nDirectory: alpine\n\nTags: 8.2.5, 8.2, 8.2.5-bookworm, 8.2-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: d42260abdb8f76db20151682a71e0e154a8147f3\nGitFetch: refs/tags/v8.2.5\nDirectory: debian\n\nTags: 8.2.5-alpine, 8.2-alpine, 8.2.5-alpine3.22, 8.2-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d42260abdb8f76db20151682a71e0e154a8147f3\nGitFetch: refs/tags/v8.2.5\nDirectory: alpine\n\nTags: 8.0.6, 8.0, 8.0.6-bookworm, 8.0-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 7f2385183921bba168de2f0444cf455637c044e3\nGitFetch: refs/tags/v8.0.6\nDirectory: debian\n\nTags: 8.0.6-alpine, 8.0-alpine, 8.0.6-alpine3.21, 8.0-alpine3.21\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 7f2385183921bba168de2f0444cf455637c044e3\nGitFetch: refs/tags/v8.0.6\nDirectory: alpine\n\nTags: 7.4.8, 7.4, 7, 7.4.8-bookworm, 7.4-bookworm, 7-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 9d9b74b729d555ef784db63c1941b73d1c47a6f9\nDirectory: 7.4/debian\n\nTags: 7.4.8-alpine, 7.4-alpine, 7-alpine, 7.4.8-alpine3.21, 7.4-alpine3.21, 7-alpine3.21\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9d9b74b729d555ef784db63c1941b73d1c47a6f9\nDirectory: 7.4/alpine\n\nTags: 7.2.13, 7.2, 7.2.13-bookworm, 7.2-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 9d9b74b729d555ef784db63c1941b73d1c47a6f9\nDirectory: 7.2/debian\n\nTags: 7.2.13-alpine, 7.2-alpine, 7.2.13-alpine3.21, 7.2-alpine3.21\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 9d9b74b729d555ef784db63c1941b73d1c47a6f9\nDirectory: 7.2/alpine\n\nTags: 6.2.21, 6.2, 6, 6.2.21-bookworm, 6.2-bookworm, 6-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: d42d7aec93b1c54dd46f37a66a92f62478456039\nDirectory: 6.2/debian\n\nTags: 6.2.21-alpine, 6.2-alpine, 6-alpine, 6.2.21-alpine3.21, 6.2-alpine3.21, 6-alpine3.21\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d42d7aec93b1c54dd46f37a66a92f62478456039\nDirectory: 6.2/alpine\n"
  },
  {
    "path": "library/redmine",
    "content": "# this file is generated via https://github.com/docker-library/redmine/blob/a78ef22f57df24fe9e7d4a9b149751a45c87b755/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/redmine.git\n\nTags: 6.1.2, 6.1, 6, latest, 6.1.2-trixie, 6.1-trixie, 6-trixie, trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a7cc730bbb670118816f63a5db76f71326b97aea\nDirectory: 6.1/trixie\n\nTags: 6.1.2-bookworm, 6.1-bookworm, 6-bookworm, bookworm\nArchitectures: amd64, arm64v8\nGitCommit: a7cc730bbb670118816f63a5db76f71326b97aea\nDirectory: 6.1/bookworm\n\nTags: 6.1.2-alpine3.23, 6.1-alpine3.23, 6-alpine3.23, alpine3.23, 6.1.2-alpine, 6.1-alpine, 6-alpine, alpine\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a7cc730bbb670118816f63a5db76f71326b97aea\nDirectory: 6.1/alpine3.23\n\nTags: 6.1.2-alpine3.22, 6.1-alpine3.22, 6-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: a7cc730bbb670118816f63a5db76f71326b97aea\nDirectory: 6.1/alpine3.22\n\nTags: 6.0.9, 6.0, 6.0.9-trixie, 6.0-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7dac9b6c9892c971da4dc1b09bf4c90fad8267c\nDirectory: 6.0/trixie\n\nTags: 6.0.9-bookworm, 6.0-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: d7dac9b6c9892c971da4dc1b09bf4c90fad8267c\nDirectory: 6.0/bookworm\n\nTags: 6.0.9-alpine3.23, 6.0-alpine3.23, 6.0.9-alpine, 6.0-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7dac9b6c9892c971da4dc1b09bf4c90fad8267c\nDirectory: 6.0/alpine3.23\n\nTags: 6.0.9-alpine3.22, 6.0-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: d7dac9b6c9892c971da4dc1b09bf4c90fad8267c\nDirectory: 6.0/alpine3.22\n\nTags: 5.1.12, 5.1, 5, 5.1.12-trixie, 5.1-trixie, 5-trixie\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 78180a845eaec40157e52b5532142698ea9b3ea4\nDirectory: 5.1/trixie\n\nTags: 5.1.12-bookworm, 5.1-bookworm, 5-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 78180a845eaec40157e52b5532142698ea9b3ea4\nDirectory: 5.1/bookworm\n\nTags: 5.1.12-alpine3.23, 5.1-alpine3.23, 5-alpine3.23, 5.1.12-alpine, 5.1-alpine, 5-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 78180a845eaec40157e52b5532142698ea9b3ea4\nDirectory: 5.1/alpine3.23\n\nTags: 5.1.12-alpine3.22, 5.1-alpine3.22, 5-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 78180a845eaec40157e52b5532142698ea9b3ea4\nDirectory: 5.1/alpine3.22\n"
  },
  {
    "path": "library/registry",
    "content": "Maintainers: Milos Gajdos (@milosgajdos),\n             Sebastiaan van Stijn (@thajeztah)\nGitRepo: https://github.com/distribution/distribution-library-image.git\nGitFetch: refs/heads/master\n\nTags: 3.0.0, 3.0, 3, latest\nArchitectures: amd64, arm64v8, arm32v6, arm32v7, ppc64le, s390x, riscv64\nGitCommit: f83883590f5afda69afafbc5aaa5fde3686f47cf\n"
  },
  {
    "path": "library/rethinkdb",
    "content": "Maintainers: RethinkDB <services@rethinkdb.com> (@gabor-boros)\nGitRepo: https://github.com/rethinkdb/rethinkdb-dockerfiles.git\n\nTags: 2.4.4-bookworm-slim, 2.4-bookworm-slim, 2-bookworm-slim, bookworm-slim, 2.4.3, 2.4, 2, latest\nDirectory: bookworm/2.4.4\nGitCommit: 48876a66c3be922c6b01c436bf78d662e53bceef\nArchitectures: amd64, arm64v8, s390x\n"
  },
  {
    "path": "library/rocket.chat",
    "content": "# this file is generated via https://github.com/RocketChat/Docker.Official.Image/blob/889b82cf0d2fe18e30c8fbe32acbcceb98597544/stackbrew.js\n\nMaintainers: Rocket.Chat Image Team <buildmaster@rocket.chat> (@RocketChat)\nGitRepo: https://github.com/RocketChat/Docker.Official.Image.git\nGitFetch: refs/heads/main\n\nTags: 8.2.1, 8.2, 8, latest\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 8.2\n\nTags: 8.1.2, 8.1\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 8.1\n\nTags: 8.0.3, 8.0\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 8.0\n\nTags: 7.13.5, 7.13, 7\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 7.13\n\nTags: 7.12.6, 7.12\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 7.12\n\nTags: 7.11.6, 7.11\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 7.11\n\nTags: 7.10.9, 7.10\nGitCommit: 2f4945d910dade78b5d1ad6e5b7a351b7d6ae939\nDirectory: 7.10\n\n"
  },
  {
    "path": "library/rockylinux",
    "content": "Maintainers: The Rocky Linux Foundation <infrastructure@rockylinux.org> (@rocky-linux),\n             Neil Hanlon <neil@resf.org> (@neilhanlon)\nGitRepo: https://github.com/rocky-linux/sig-cloud-instance-images.git\n\nTags: 9.3.20231119, 9.3, 9\nGitFetch: refs/heads/Rocky-9.3.20231119-Base-x86_64\nGitCommit: 53416a9aaea6ac6ded18c2047d51e26983160faf\narm64v8-GitFetch: refs/heads/Rocky-9.3.20231119-Base-aarch64\narm64v8-GitCommit: 29d1766aa469897f6690547364d45d352cbe7ae6\ns390x-GitFetch: refs/heads/Rocky-9.3.20231119-Base-s390x\ns390x-GitCommit: 7581889c773c12e32ee0e46e627a7c66f20463bd\nppc64le-GitFetch: refs/heads/Rocky-9.3.20231119-Base-ppc64le\nppc64le-GitCommit: 20d0ef4cd07c7b5b368b846f1f154db280ea8e4c\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\nTags: 9.3.20231119-minimal, 9.3-minimal, 9-minimal\nGitFetch: refs/heads/Rocky-9.3.20231119-Minimal-x86_64\nGitCommit: e784104b999a1ff6b66cb0aeee0408fb030c840b\narm64v8-GitFetch: refs/heads/Rocky-9.3.20231119-Minimal-aarch64\narm64v8-GitCommit: 0b10d7d7a8ba867de715441b52c591880480bc94\ns390x-GitFetch: refs/heads/Rocky-9.3.20231119-Minimal-s390x\ns390x-GitCommit: af021ed5bf828c0abd26761a8df31b6d578c9498\nppc64le-GitFetch: refs/heads/Rocky-9.3.20231119-Minimal-ppc64le\nppc64le-GitCommit: 13770ec44b35cbe9af2296d0d50edc31a343e4f6\nArchitectures: amd64, arm64v8, ppc64le, s390x\n\n\nTags: 8.9.20231119, 8.9, 8\nGitFetch: refs/heads/Rocky-8.9.20231119-Base-x86_64\nGitCommit: 2085c6419637bf970a532888141569c5865ae61f\narm64v8-GitFetch: refs/heads/Rocky-8.9.20231119-Base-aarch64\narm64v8-GitCommit: 94d578e7e1eeaf0591657eff018929928e0bfdfc\ns390x-GitFetch: refs/heads/Rocky-8.9.20231119-Base-s390x\nArchitectures: amd64, arm64v8\n\nTags: 8.9.20231119-minimal, 8.9-minimal, 8-minimal\nGitFetch: refs/heads/Rocky-8.9.20231119-Minimal-x86_64\nGitCommit: 6d81e6b46e052158df83357c569c8a6773a81e78\narm64v8-GitFetch: refs/heads/Rocky-8.9.20231119-Minimal-aarch64\narm64v8-GitCommit: cc181de9168465f9e9e2fbddd5a0f8e1a89cddfc\nArchitectures: amd64, arm64v8\n"
  },
  {
    "path": "library/ros",
    "content": "Maintainers: Tully Foote <tfoote+buildfarm@osrfoundation.org> (@tfoote)\nGitRepo: https://github.com/osrf/docker_images.git\n\n################################################################################\n# Release: humble\n\n########################################\n# Distro: ubuntu:jammy\n\nTags: humble-ros-core, humble-ros-core-jammy\nArchitectures: amd64, arm64v8\nGitCommit: eb5634cf92ba079897e44fb7541d3b78aa6cf717\nDirectory: ros/humble/ubuntu/jammy/ros-core\n\nTags: humble-ros-base, humble-ros-base-jammy, humble\nArchitectures: amd64, arm64v8\nGitCommit: 20e3ba685bb353a3c00be9ba01c1b7a6823c9472\nDirectory: ros/humble/ubuntu/jammy/ros-base\n\nTags: humble-perception, humble-perception-jammy\nArchitectures: amd64, arm64v8\nGitCommit: 20d40c96b426b8956dec203e236abff2ec29b188\nDirectory: ros/humble/ubuntu/jammy/perception\n\n\n################################################################################\n# Release: jazzy\n\n########################################\n# Distro: ubuntu:noble\n\nTags: jazzy-ros-core, jazzy-ros-core-noble\nArchitectures: amd64, arm64v8\nGitCommit: eb5634cf92ba079897e44fb7541d3b78aa6cf717\nDirectory: ros/jazzy/ubuntu/noble/ros-core\n\nTags: jazzy-ros-base, jazzy-ros-base-noble, jazzy, latest\nArchitectures: amd64, arm64v8\nGitCommit: 0038f1c3a11aa0fc573d698b39ab5c204aad5a40\nDirectory: ros/jazzy/ubuntu/noble/ros-base\n\nTags: jazzy-perception, jazzy-perception-noble\nArchitectures: amd64, arm64v8\nGitCommit: 0038f1c3a11aa0fc573d698b39ab5c204aad5a40\nDirectory: ros/jazzy/ubuntu/noble/perception\n\n\n################################################################################\n# Release: kilted\n\n########################################\n# Distro: ubuntu:noble\n\nTags: kilted-ros-core, kilted-ros-core-noble\nArchitectures: amd64, arm64v8\nGitCommit: eb5634cf92ba079897e44fb7541d3b78aa6cf717\nDirectory: ros/kilted/ubuntu/noble/ros-core\n\nTags: kilted-ros-base, kilted-ros-base-noble, kilted\nArchitectures: amd64, arm64v8\nGitCommit: b835a530495c0b411a0d15db858710a2748ee0a0\nDirectory: ros/kilted/ubuntu/noble/ros-base\n\nTags: kilted-perception, kilted-perception-noble\nArchitectures: amd64, arm64v8\nGitCommit: b835a530495c0b411a0d15db858710a2748ee0a0\nDirectory: ros/kilted/ubuntu/noble/perception\n\n\n################################################################################\n# Release: rolling\n\n########################################\n# Distro: ubuntu:noble\n\nTags: rolling-ros-core, rolling-ros-core-noble\nArchitectures: amd64, arm64v8\nGitCommit: 8cf2903c0f8813aacd3042c71d4d2d56d5068ad5\nDirectory: ros/rolling/ubuntu/noble/ros-core\n\nTags: rolling-ros-base, rolling-ros-base-noble, rolling\nArchitectures: amd64, arm64v8\nGitCommit: 8cf2903c0f8813aacd3042c71d4d2d56d5068ad5\nDirectory: ros/rolling/ubuntu/noble/ros-base\n\nTags: rolling-perception, rolling-perception-noble\nArchitectures: amd64, arm64v8\nGitCommit: 8cf2903c0f8813aacd3042c71d4d2d56d5068ad5\nDirectory: ros/rolling/ubuntu/noble/perception\n\n"
  },
  {
    "path": "library/ruby",
    "content": "# this file is generated via https://github.com/docker-library/ruby/blob/2895a675d1b1690faab2105c56aa0e14f6865ff2/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/ruby.git\n\nTags: 4.0.2-trixie, 4.0-trixie, 4-trixie, trixie, 4.0.2, 4.0, 4, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: dbc0acf4dcb5f24c42dd4246d810c42e56be9163\nDirectory: 4.0/trixie\n\nTags: 4.0.2-slim-trixie, 4.0-slim-trixie, 4-slim-trixie, slim-trixie, 4.0.2-slim, 4.0-slim, 4-slim, slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: dbc0acf4dcb5f24c42dd4246d810c42e56be9163\nDirectory: 4.0/slim-trixie\n\nTags: 4.0.2-bookworm, 4.0-bookworm, 4-bookworm, bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: dbc0acf4dcb5f24c42dd4246d810c42e56be9163\nDirectory: 4.0/bookworm\n\nTags: 4.0.2-slim-bookworm, 4.0-slim-bookworm, 4-slim-bookworm, slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: dbc0acf4dcb5f24c42dd4246d810c42e56be9163\nDirectory: 4.0/slim-bookworm\n\nTags: 4.0.2-alpine3.23, 4.0-alpine3.23, 4-alpine3.23, alpine3.23, 4.0.2-alpine, 4.0-alpine, 4-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: dbc0acf4dcb5f24c42dd4246d810c42e56be9163\nDirectory: 4.0/alpine3.23\n\nTags: 4.0.2-alpine3.22, 4.0-alpine3.22, 4-alpine3.22, alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: dbc0acf4dcb5f24c42dd4246d810c42e56be9163\nDirectory: 4.0/alpine3.22\n\nTags: 3.4.9-trixie, 3.4-trixie, 3-trixie, 3.4.9, 3.4, 3\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5a670110fb6e65afa72ee9da2c65de377f589281\nDirectory: 3.4/trixie\n\nTags: 3.4.9-slim-trixie, 3.4-slim-trixie, 3-slim-trixie, 3.4.9-slim, 3.4-slim, 3-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5a670110fb6e65afa72ee9da2c65de377f589281\nDirectory: 3.4/slim-trixie\n\nTags: 3.4.9-bookworm, 3.4-bookworm, 3-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 5a670110fb6e65afa72ee9da2c65de377f589281\nDirectory: 3.4/bookworm\n\nTags: 3.4.9-slim-bookworm, 3.4-slim-bookworm, 3-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 5a670110fb6e65afa72ee9da2c65de377f589281\nDirectory: 3.4/slim-bookworm\n\nTags: 3.4.9-alpine3.23, 3.4-alpine3.23, 3-alpine3.23, 3.4.9-alpine, 3.4-alpine, 3-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5a670110fb6e65afa72ee9da2c65de377f589281\nDirectory: 3.4/alpine3.23\n\nTags: 3.4.9-alpine3.22, 3.4-alpine3.22, 3-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 5a670110fb6e65afa72ee9da2c65de377f589281\nDirectory: 3.4/alpine3.22\n\nTags: 3.3.10-trixie, 3.3-trixie, 3.3.10, 3.3\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 55e358c6dfe15e9513eb02725a983d4e9daf37d2\nDirectory: 3.3/trixie\n\nTags: 3.3.10-slim-trixie, 3.3-slim-trixie, 3.3.10-slim, 3.3-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 55e358c6dfe15e9513eb02725a983d4e9daf37d2\nDirectory: 3.3/slim-trixie\n\nTags: 3.3.10-bookworm, 3.3-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 55e358c6dfe15e9513eb02725a983d4e9daf37d2\nDirectory: 3.3/bookworm\n\nTags: 3.3.10-slim-bookworm, 3.3-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: 55e358c6dfe15e9513eb02725a983d4e9daf37d2\nDirectory: 3.3/slim-bookworm\n\nTags: 3.3.10-alpine3.23, 3.3-alpine3.23, 3.3.10-alpine, 3.3-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 55e358c6dfe15e9513eb02725a983d4e9daf37d2\nDirectory: 3.3/alpine3.23\n\nTags: 3.3.10-alpine3.22, 3.3-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 55e358c6dfe15e9513eb02725a983d4e9daf37d2\nDirectory: 3.3/alpine3.22\n\nTags: 3.2.10-trixie, 3.2-trixie, 3.2.10, 3.2\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: af204e030006b9572c140a3eb353627ae4fcb625\nDirectory: 3.2/trixie\n\nTags: 3.2.10-slim-trixie, 3.2-slim-trixie, 3.2.10-slim, 3.2-slim\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: af204e030006b9572c140a3eb353627ae4fcb625\nDirectory: 3.2/slim-trixie\n\nTags: 3.2.10-bookworm, 3.2-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: af204e030006b9572c140a3eb353627ae4fcb625\nDirectory: 3.2/bookworm\n\nTags: 3.2.10-slim-bookworm, 3.2-slim-bookworm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, mips64le, ppc64le, s390x\nGitCommit: af204e030006b9572c140a3eb353627ae4fcb625\nDirectory: 3.2/slim-bookworm\n\nTags: 3.2.10-alpine3.23, 3.2-alpine3.23, 3.2.10-alpine, 3.2-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: af204e030006b9572c140a3eb353627ae4fcb625\nDirectory: 3.2/alpine3.23\n\nTags: 3.2.10-alpine3.22, 3.2-alpine3.22\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: af204e030006b9572c140a3eb353627ae4fcb625\nDirectory: 3.2/alpine3.22\n"
  },
  {
    "path": "library/rust",
    "content": "# this file is generated via https://github.com/rust-lang/docker-rust/blob/606fc92c104f66af9e7e5f2bea1bf2f5072d84b6/x.py\n\nMaintainers: Steven Fackler <sfackler@gmail.com> (@sfackler),\n             Scott Schafer <schaferjscott@gmail.com> (@Muscraft),\n             Jakub Beránek <berykubik@gmail.com> (@kobzol)\nGitRepo: https://github.com/rust-lang/docker-rust.git\n\nTags: 1-bullseye, 1.94-bullseye, 1.94.0-bullseye, bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/bullseye\n\nTags: 1-slim-bullseye, 1.94-slim-bullseye, 1.94.0-slim-bullseye, slim-bullseye\nArchitectures: amd64, arm32v7, arm64v8, i386\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/bullseye/slim\n\nTags: 1-bookworm, 1.94-bookworm, 1.94.0-bookworm, bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/bookworm\n\nTags: 1-slim-bookworm, 1.94-slim-bookworm, 1.94.0-slim-bookworm, slim-bookworm\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/bookworm/slim\n\nTags: 1-trixie, 1.94-trixie, 1.94.0-trixie, trixie, 1, 1.94, 1.94.0, latest\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x, riscv64\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/trixie\n\nTags: 1-slim-trixie, 1.94-slim-trixie, 1.94.0-slim-trixie, slim-trixie, 1-slim, 1.94-slim, 1.94.0-slim, slim\nArchitectures: amd64, arm32v7, arm64v8, i386, ppc64le, s390x, riscv64\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/trixie/slim\n\nTags: 1-alpine3.20, 1.94-alpine3.20, 1.94.0-alpine3.20, alpine3.20\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/alpine3.20\n\nTags: 1-alpine3.21, 1.94-alpine3.21, 1.94.0-alpine3.21, alpine3.21\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/alpine3.21\n\nTags: 1-alpine3.22, 1.94-alpine3.22, 1.94.0-alpine3.22, alpine3.22\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/alpine3.22\n\nTags: 1-alpine3.23, 1.94-alpine3.23, 1.94.0-alpine3.23, alpine3.23, 1-alpine, 1.94-alpine, 1.94.0-alpine, alpine\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 4132ed1e071f80134ef880bbac42ebc430e946ea\nDirectory: stable/alpine3.23\n\n"
  },
  {
    "path": "library/sapmachine",
    "content": "Maintainers: Christoph Langer <sapmachine@sap.com> (@realclanger), Arno Zeller <sapmachine@sap.com> (@ArnoZeller)\nGitRepo: https://github.com/SAP/SapMachine-infrastructure.git\n\nTags: latest, ubuntu, jdk, jdk-ubuntu, 26, 26-ubuntu, 26-jdk, 26-jdk-ubuntu, ubuntu-noble, ubuntu-24.04, jdk-ubuntu-noble, jdk-ubuntu-24.04, 26-ubuntu-noble, 26-ubuntu-24.04, 26-jdk-ubuntu-noble, 26-jdk-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/24_04/jdk\n\nTags: jdk-headless, jdk-headless-ubuntu, 26-jdk-headless, 26-jdk-headless-ubuntu, jdk-headless-ubuntu-noble, jdk-headless-ubuntu-24.04, 26-jdk-headless-ubuntu-noble, 26-jdk-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/24_04/jdk-headless\n\nTags: jre, jre-ubuntu, 26-jre, 26-jre-ubuntu, jre-ubuntu-noble, jre-ubuntu-24.04, 26-jre-ubuntu-noble, 26-jre-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/24_04/jre\n\nTags: jre-headless, jre-headless-ubuntu, 26-jre-headless, 26-jre-headless-ubuntu, jre-headless-ubuntu-noble, jre-headless-ubuntu-24.04, 26-jre-headless-ubuntu-noble, 26-jre-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/24_04/jre-headless\n\nTags: ubuntu-jammy, ubuntu-22.04, jdk-ubuntu-jammy, jdk-ubuntu-22.04, 26-ubuntu-jammy, 26-ubuntu-22.04, 26-jdk-ubuntu-jammy, 26-jdk-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/22_04/jdk\n\nTags: jdk-headless-ubuntu-jammy, jdk-headless-ubuntu-22.04, 26-jdk-headless-ubuntu-jammy, 26-jdk-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/22_04/jdk-headless\n\nTags: jre-ubuntu-jammy, jre-ubuntu-22.04, 26-jre-ubuntu-jammy, 26-jre-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/22_04/jre\n\nTags: jre-headless-ubuntu-jammy, jre-headless-ubuntu-22.04, 26-jre-headless-ubuntu-jammy, 26-jre-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/ubuntu/22_04/jre-headless\n\nTags: alpine, jdk-alpine, 26-alpine, 26-jdk-alpine, alpine-3.23, jdk-alpine-3.23, 26-alpine-3.23, 26-jdk-alpine-3.23\nArchitectures: amd64\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/alpine/3_23/jdk\n\nTags: jre-alpine, 26-jre-alpine, jre-alpine-3.23, 26-jre-alpine-3.23\nArchitectures: amd64\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/alpine/3_23/jre\n\nTags: alpine-3.22, jdk-alpine-3.22, 26-alpine-3.22, 26-jdk-alpine-3.22\nArchitectures: amd64\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/alpine/3_22/jdk\n\nTags: jre-alpine-3.22, 26-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/alpine/3_22/jre\n\nTags: alpine-3.21, jdk-alpine-3.21, 26-alpine-3.21, 26-jdk-alpine-3.21\nArchitectures: amd64\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/alpine/3_21/jdk\n\nTags: jre-alpine-3.21, 26-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: 545bf09c44a881eebd1369138e33b79970825254\nDirectory: dockerfiles/26/alpine/3_21/jre\n\nTags: lts, lts-ubuntu, 25, 25-ubuntu, 25.0.2, 25.0.2-ubuntu, 25-jdk, 25-jdk-ubuntu, 25.0.2-jdk, 25.0.2-jdk-ubuntu, lts-jdk-ubuntu, lts-ubuntu-noble, lts-ubuntu-24.04, lts-jdk-ubuntu-noble, lts-jdk-ubuntu-24.04, 25-ubuntu-noble, 25-ubuntu-24.04, 25-jdk-ubuntu-noble, 25-jdk-ubuntu-24.04, 25.0.2-ubuntu-noble, 25.0.2-ubuntu-24.04, 25.0.2-jdk-ubuntu-noble, 25.0.2-jdk-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/24_04/jdk\n\nTags: 25-jdk-headless, 25-jdk-headless-ubuntu, 25.0.2-jdk-headless, 25.0.2-jdk-headless-ubuntu, lts-jdk-headless-ubuntu, lts-jdk-headless-ubuntu-noble, lts-jdk-headless-ubuntu-24.04, 25-jdk-headless-ubuntu-noble, 25-jdk-headless-ubuntu-24.04, 25.0.2-jdk-headless-ubuntu-noble, 25.0.2-jdk-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/24_04/jdk-headless\n\nTags: 25-jre, 25-jre-ubuntu, 25.0.2-jre, 25.0.2-jre-ubuntu, lts-jre-ubuntu, lts-jre-ubuntu-noble, lts-jre-ubuntu-24.04, 25-jre-ubuntu-noble, 25-jre-ubuntu-24.04, 25.0.2-jre-ubuntu-noble, 25.0.2-jre-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/24_04/jre\n\nTags: 25-jre-headless, 25-jre-headless-ubuntu, 25.0.2-jre-headless, 25.0.2-jre-headless-ubuntu, lts-jre-headless-ubuntu, lts-jre-headless-ubuntu-noble, lts-jre-headless-ubuntu-24.04, 25-jre-headless-ubuntu-noble, 25-jre-headless-ubuntu-24.04, 25.0.2-jre-headless-ubuntu-noble, 25.0.2-jre-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/24_04/jre-headless\n\nTags: lts-ubuntu-jammy, lts-ubuntu-22.04, lts-jdk-ubuntu-jammy, lts-jdk-ubuntu-22.04, 25-ubuntu-jammy, 25-ubuntu-22.04, 25-jdk-ubuntu-jammy, 25-jdk-ubuntu-22.04, 25.0.2-ubuntu-jammy, 25.0.2-ubuntu-22.04, 25.0.2-jdk-ubuntu-jammy, 25.0.2-jdk-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/22_04/jdk\n\nTags: lts-jdk-headless-ubuntu-jammy, lts-jdk-headless-ubuntu-22.04, 25-jdk-headless-ubuntu-jammy, 25-jdk-headless-ubuntu-22.04, 25.0.2-jdk-headless-ubuntu-jammy, 25.0.2-jdk-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/22_04/jdk-headless\n\nTags: lts-jre-ubuntu-jammy, lts-jre-ubuntu-22.04, 25-jre-ubuntu-jammy, 25-jre-ubuntu-22.04, 25.0.2-jre-ubuntu-jammy, 25.0.2-jre-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/22_04/jre\n\nTags: lts-jre-headless-ubuntu-jammy, lts-jre-headless-ubuntu-22.04, 25-jre-headless-ubuntu-jammy, 25-jre-headless-ubuntu-22.04, 25.0.2-jre-headless-ubuntu-jammy, 25.0.2-jre-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/ubuntu/22_04/jre-headless\n\nTags: lts-alpine, 25-alpine, 25.0.2-alpine, lts-jdk-alpine, 25-jdk-alpine, 25.0.2-jdk-alpine, lts-alpine-3.23, lts-jdk-alpine-3.23, 25-alpine-3.23, 25-jdk-alpine-3.23, 25.0.2-alpine-3.23, 25.0.2-jdk-alpine-3.23\nArchitectures: amd64\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/alpine/3_23/jdk\n\nTags: lts-jre-alpine, 25-jre-alpine, 25.0.2-jre-alpine, lts-jre-alpine-3.23, 25-jre-alpine-3.23, 25.0.2-jre-alpine-3.23\nArchitectures: amd64\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/alpine/3_23/jre\n\nTags: lts-alpine-3.22, lts-jdk-alpine-3.22, 25-alpine-3.22, 25-jdk-alpine-3.22, 25.0.2-alpine-3.22, 25.0.2-jdk-alpine-3.22\nArchitectures: amd64\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/alpine/3_22/jdk\n\nTags: lts-jre-alpine-3.22, 25-jre-alpine-3.22, 25.0.2-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/alpine/3_22/jre\n\nTags: lts-alpine-3.21, lts-jdk-alpine-3.21, 25-alpine-3.21, 25-jdk-alpine-3.21, 25.0.2-alpine-3.21, 25.0.2-jdk-alpine-3.21\nArchitectures: amd64\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/alpine/3_21/jdk\n\nTags: lts-jre-alpine-3.21, 25-jre-alpine-3.21, 25.0.2-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: 0616770611ff2295ec1f1a2ef2ac7c4c26c964b5\nDirectory: dockerfiles/25/alpine/3_21/jre\n\nTags: 21, 21-ubuntu, 21.0.10.0.1, 21.0.10.0.1-ubuntu, 21-jdk, 21-jdk-ubuntu, 21.0.10.0.1-jdk, 21.0.10.0.1-jdk-ubuntu, 21-ubuntu-noble, 21-ubuntu-24.04, 21-jdk-ubuntu-noble, 21-jdk-ubuntu-24.04, 21.0.10.0.1-ubuntu-noble, 21.0.10.0.1-ubuntu-24.04, 21.0.10.0.1-jdk-ubuntu-noble, 21.0.10.0.1-jdk-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/24_04/jdk\n\nTags: 21-jdk-headless, 21-jdk-headless-ubuntu, 21.0.10.0.1-jdk-headless, 21.0.10.0.1-jdk-headless-ubuntu, 21-jdk-headless-ubuntu-noble, 21-jdk-headless-ubuntu-24.04, 21.0.10.0.1-jdk-headless-ubuntu-noble, 21.0.10.0.1-jdk-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/24_04/jdk-headless\n\nTags: 21-jre, 21-jre-ubuntu, 21.0.10.0.1-jre, 21.0.10.0.1-jre-ubuntu, 21-jre-ubuntu-noble, 21-jre-ubuntu-24.04, 21.0.10.0.1-jre-ubuntu-noble, 21.0.10.0.1-jre-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/24_04/jre\n\nTags: 21-jre-headless, 21-jre-headless-ubuntu, 21.0.10.0.1-jre-headless, 21.0.10.0.1-jre-headless-ubuntu, 21-jre-headless-ubuntu-noble, 21-jre-headless-ubuntu-24.04, 21.0.10.0.1-jre-headless-ubuntu-noble, 21.0.10.0.1-jre-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/24_04/jre-headless\n\nTags: 21-ubuntu-jammy, 21-ubuntu-22.04, 21-jdk-ubuntu-jammy, 21-jdk-ubuntu-22.04, 21.0.10.0.1-ubuntu-jammy, 21.0.10.0.1-ubuntu-22.04, 21.0.10.0.1-jdk-ubuntu-jammy, 21.0.10.0.1-jdk-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/22_04/jdk\n\nTags: 21-jdk-headless-ubuntu-jammy, 21-jdk-headless-ubuntu-22.04, 21.0.10.0.1-jdk-headless-ubuntu-jammy, 21.0.10.0.1-jdk-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/22_04/jdk-headless\n\nTags: 21-jre-ubuntu-jammy, 21-jre-ubuntu-22.04, 21.0.10.0.1-jre-ubuntu-jammy, 21.0.10.0.1-jre-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/22_04/jre\n\nTags: 21-jre-headless-ubuntu-jammy, 21-jre-headless-ubuntu-22.04, 21.0.10.0.1-jre-headless-ubuntu-jammy, 21.0.10.0.1-jre-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/ubuntu/22_04/jre-headless\n\nTags: 21-alpine, 21.0.10.0.1-alpine, 21-jdk-alpine, 21.0.10.0.1-jdk-alpine, 21-alpine-3.23, 21-jdk-alpine-3.23, 21.0.10.0.1-alpine-3.23, 21.0.10.0.1-jdk-alpine-3.23\nArchitectures: amd64\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/alpine/3_23/jdk\n\nTags: 21-jre-alpine, 21.0.10.0.1-jre-alpine, 21-jre-alpine-3.23, 21.0.10.0.1-jre-alpine-3.23\nArchitectures: amd64\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/alpine/3_23/jre\n\nTags: 21-alpine-3.22, 21-jdk-alpine-3.22, 21.0.10.0.1-alpine-3.22, 21.0.10.0.1-jdk-alpine-3.22\nArchitectures: amd64\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/alpine/3_22/jdk\n\nTags: 21-jre-alpine-3.22, 21.0.10.0.1-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/alpine/3_22/jre\n\nTags: 21-alpine-3.21, 21-jdk-alpine-3.21, 21.0.10.0.1-alpine-3.21, 21.0.10.0.1-jdk-alpine-3.21\nArchitectures: amd64\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/alpine/3_21/jdk\n\nTags: 21-jre-alpine-3.21, 21.0.10.0.1-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: 31b8a284b8237cd9afea30116c07160f3c689832\nDirectory: dockerfiles/21/alpine/3_21/jre\n\nTags: 17, 17-ubuntu, 17.0.18, 17.0.18-ubuntu, 17-jdk, 17-jdk-ubuntu, 17.0.18-jdk, 17.0.18-jdk-ubuntu, 17-ubuntu-noble, 17-ubuntu-24.04, 17-jdk-ubuntu-noble, 17-jdk-ubuntu-24.04, 17.0.18-ubuntu-noble, 17.0.18-ubuntu-24.04, 17.0.18-jdk-ubuntu-noble, 17.0.18-jdk-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/24_04/jdk\n\nTags: 17-jdk-headless, 17-jdk-headless-ubuntu, 17.0.18-jdk-headless, 17.0.18-jdk-headless-ubuntu, 17-jdk-headless-ubuntu-noble, 17-jdk-headless-ubuntu-24.04, 17.0.18-jdk-headless-ubuntu-noble, 17.0.18-jdk-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/24_04/jdk-headless\n\nTags: 17-jre, 17-jre-ubuntu, 17.0.18-jre, 17.0.18-jre-ubuntu, 17-jre-ubuntu-noble, 17-jre-ubuntu-24.04, 17.0.18-jre-ubuntu-noble, 17.0.18-jre-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/24_04/jre\n\nTags: 17-jre-headless, 17-jre-headless-ubuntu, 17.0.18-jre-headless, 17.0.18-jre-headless-ubuntu, 17-jre-headless-ubuntu-noble, 17-jre-headless-ubuntu-24.04, 17.0.18-jre-headless-ubuntu-noble, 17.0.18-jre-headless-ubuntu-24.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/24_04/jre-headless\n\nTags: 17-ubuntu-jammy, 17-ubuntu-22.04, 17-jdk-ubuntu-jammy, 17-jdk-ubuntu-22.04, 17.0.18-ubuntu-jammy, 17.0.18-ubuntu-22.04, 17.0.18-jdk-ubuntu-jammy, 17.0.18-jdk-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/22_04/jdk\n\nTags: 17-jdk-headless-ubuntu-jammy, 17-jdk-headless-ubuntu-22.04, 17.0.18-jdk-headless-ubuntu-jammy, 17.0.18-jdk-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/22_04/jdk-headless\n\nTags: 17-jre-ubuntu-jammy, 17-jre-ubuntu-22.04, 17.0.18-jre-ubuntu-jammy, 17.0.18-jre-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/22_04/jre\n\nTags: 17-jre-headless-ubuntu-jammy, 17-jre-headless-ubuntu-22.04, 17.0.18-jre-headless-ubuntu-jammy, 17.0.18-jre-headless-ubuntu-22.04\nArchitectures: amd64, arm64v8, ppc64le\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/ubuntu/22_04/jre-headless\n\nTags: 17-alpine, 17.0.18-alpine, 17-jdk-alpine, 17.0.18-jdk-alpine, 17-alpine-3.23, 17-jdk-alpine-3.23, 17.0.18-alpine-3.23, 17.0.18-jdk-alpine-3.23\nArchitectures: amd64\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/alpine/3_23/jdk\n\nTags: 17-jre-alpine, 17.0.18-jre-alpine, 17-jre-alpine-3.23, 17.0.18-jre-alpine-3.23\nArchitectures: amd64\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/alpine/3_23/jre\n\nTags: 17-alpine-3.22, 17-jdk-alpine-3.22, 17.0.18-alpine-3.22, 17.0.18-jdk-alpine-3.22\nArchitectures: amd64\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/alpine/3_22/jdk\n\nTags: 17-jre-alpine-3.22, 17.0.18-jre-alpine-3.22\nArchitectures: amd64\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/alpine/3_22/jre\n\nTags: 17-alpine-3.21, 17-jdk-alpine-3.21, 17.0.18-alpine-3.21, 17.0.18-jdk-alpine-3.21\nArchitectures: amd64\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/alpine/3_21/jdk\n\nTags: 17-jre-alpine-3.21, 17.0.18-jre-alpine-3.21\nArchitectures: amd64\nGitCommit: c20ee65bae0d54c94024bef202527ca1107149e8\nDirectory: dockerfiles/17/alpine/3_21/jre\n"
  },
  {
    "path": "library/satosa",
    "content": "# This file is generated via https://github.com/IdentityPython/satosa-docker/blob/07ce67c693fbacb188e3d70c700e072e947b1564/generate-stackbrew-library.sh\n\nMaintainers: Matthew X. Economou <xenophon+idpy@irtnog.org> (@xenophonf)\nGitRepo: https://github.com/IdentityPython/satosa-docker.git\nGitFetch: refs/heads/main\n\nTags: 8.5.1-bookworm, 8.5-bookworm, 8-bookworm, bookworm\nSharedTags: 8.5.1, 8.5, 8, latest\nArchitectures: amd64, arm64v8\nGitCommit: 8420c19d43d36f132e015a981df54f30dc54980f\nDirectory: 8.5/bookworm\n\nTags: 8.5.1-alpine3.22, 8.5-alpine3.22, 8-alpine3.22, alpine3.22, 8.5.1-alpine, 8.5-alpine, 8-alpine, alpine\nArchitectures: amd64, arm64v8\nGitCommit: 8420c19d43d36f132e015a981df54f30dc54980f\nDirectory: 8.5/alpine3.22\n"
  },
  {
    "path": "library/silverpeas",
    "content": "# This file is generated via https://github.com/Silverpeas/docker-silverpeas-prod/blob/master/generate-docker-library.sh\nMaintainers: Miguel Moquillon <miguel.moquillon@silverpeas.org> (@mmoqui)\nGitRepo: https://github.com/Silverpeas/docker-silverpeas-prod.git\n\nTags: 6.4.6, latest\nGitCommit: b916cf7a89c24cac188b39cd31e1128671e67653\nGitFetch: refs/heads/6.4.x\n\nTags: 6.3.6\nGitCommit: fb25885d1cd43172693b3acf79e9fac056a9db34\nGitFetch: refs/heads/6.3.x\n"
  },
  {
    "path": "library/solr",
    "content": "# this file is generated via https://github.com/apache/solr-docker/blob/c33200c4b1c42b32c80f4e85621438df479a29b5/generate-stackbrew-library.sh\n\nMaintainers: The Apache Solr Project <dev@solr.apache.org> (@asfbot),\n David Smiley (@dsmiley),\n Jan Høydahl (@janhoy),\n Houston Putman (@houstonputman)\nGitRepo: https://github.com/apache/solr-docker.git\nGitFetch: refs/heads/main\n\nTags: 10.0.0, 10.0, 10, latest\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 884b2e6692174ea09cdb5183b8dd585760b5e9fb\nDirectory: 10.0\n\nTags: 10.0.0-slim, 10.0-slim, 10-slim, slim\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 884b2e6692174ea09cdb5183b8dd585760b5e9fb\nDirectory: 10.0-slim\n\nTags: 9.10.1, 9.10, 9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 9c4aa799df40c506a48bc487cc6b4aaed24f9149\nDirectory: 9.10\n\nTags: 9.10.1-slim, 9.10-slim, 9-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 9c4aa799df40c506a48bc487cc6b4aaed24f9149\nDirectory: 9.10-slim\n\nTags: 9.9.0, 9.9\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: aa51c522c3e74cd1b2886209ea249358a34d324a\nDirectory: 9.9\n\nTags: 9.9.0-slim, 9.9-slim\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: aa51c522c3e74cd1b2886209ea249358a34d324a\nDirectory: 9.9-slim\n"
  },
  {
    "path": "library/sonarqube",
    "content": "Maintainers: Carmine Vassallo <carmine.vassallo@sonarsource.com> (@carminevassallo),\n\tEmma Mansalier <emma.mansalier@sonarsource.com> (@emma44-m),\n\tHatem Amairi <hatem.amairi@sonarsource.com> (@hatem-amairi-sonarsource),\n\tJimil Desai <jimil.desai@sonarsource.com> (@jimil09),\n\tJulien Lancelot <julien.lancelot@sonarsource.com> (@julienlancelot),\n\tLukasz Jarocki <lukasz.jarocki@sonarsource.com> (@lukasz-jarocki-sonarsource),\n\tMatteo Mara <matteo.mara@sonarsource.com> (@matteo-mara-sonarsource)\nGitRepo: https://github.com/SonarSource/docker-sonarqube.git\nArchitectures: amd64, arm64v8\nBuilder: buildkit\n\nTags: 2026.1.0-developer, 2026.1-developer, developer, 2026-lta-developer\nDirectory: commercial-editions/developer\nGitCommit: 3536fb9581da63de5294fa8b249ec9a74c5cd0b0\nGitFetch: refs/heads/release/2026.1\n\nTags: 2026.1.0-enterprise, 2026.1-enterprise, enterprise, 2026-lta-enterprise\nDirectory: commercial-editions/enterprise\nGitCommit: 3536fb9581da63de5294fa8b249ec9a74c5cd0b0\nGitFetch: refs/heads/release/2026.1\n\nTags: 2026.1.0-datacenter-app, 2026.1-datacenter-app, datacenter-app, 2026-lta-datacenter-app\nDirectory: commercial-editions/datacenter/app\nGitCommit: 3536fb9581da63de5294fa8b249ec9a74c5cd0b0\nGitFetch: refs/heads/release/2026.1\n\nTags: 2026.1.0-datacenter-search, 2026.1-datacenter-search, datacenter-search, 2026-lta-datacenter-search\nDirectory: commercial-editions/datacenter/search\nGitCommit: 3536fb9581da63de5294fa8b249ec9a74c5cd0b0\nGitFetch: refs/heads/release/2026.1\n\nTags: 2025.4.4-developer, 2025.4-developer, 2025.4-lta-developer\nDirectory: commercial-editions/developer\nGitCommit: b366d18634f02e45e6dc4d28151db6704b0630c8\nGitFetch: refs/heads/release/2025.4\n\nTags: 2025.4.4-enterprise, 2025.4-enterprise, 2025.4-lta-enterprise\nDirectory: commercial-editions/enterprise\nGitCommit: b366d18634f02e45e6dc4d28151db6704b0630c8\nGitFetch: refs/heads/release/2025.4\n\nTags: 2025.4.4-datacenter-app, 2025.4-datacenter-app, 2025.4-lta-datacenter-app\nDirectory: commercial-editions/datacenter/app\nGitCommit: b366d18634f02e45e6dc4d28151db6704b0630c8\nGitFetch: refs/heads/release/2025.4\n\nTags: 2025.4.4-datacenter-search, 2025.4-datacenter-search, 2025.4-lta-datacenter-search\nDirectory: commercial-editions/datacenter/search\nGitCommit: b366d18634f02e45e6dc4d28151db6704b0630c8\nGitFetch: refs/heads/release/2025.4\n\nTags: 2025.1.6-developer, 2025.1-developer, 2025-lta-developer\nDirectory: commercial-editions/developer\nGitCommit: 9c38431ecd5e9b257ba08c24cff27f55cbb71d0b\nGitFetch: refs/heads/release/2025.1\n\nTags: 2025.1.6-enterprise, 2025.1-enterprise, 2025-lta-enterprise\nDirectory: commercial-editions/enterprise\nGitCommit: 9c38431ecd5e9b257ba08c24cff27f55cbb71d0b\nGitFetch: refs/heads/release/2025.1\n\nTags: 2025.1.6-datacenter-app, 2025.1-datacenter-app, 2025-lta-datacenter-app\nDirectory: commercial-editions/datacenter/app\nGitCommit: 9c38431ecd5e9b257ba08c24cff27f55cbb71d0b\nGitFetch: refs/heads/release/2025.1\n\nTags: 2025.1.6-datacenter-search, 2025.1-datacenter-search, 2025-lta-datacenter-search\nDirectory: commercial-editions/datacenter/search\nGitCommit: 9c38431ecd5e9b257ba08c24cff27f55cbb71d0b\nGitFetch: refs/heads/release/2025.1\n\nTags: 26.3.0.120487-community, community, latest\nDirectory: community-build\nGitCommit: fc8bdd43aa412568e16b205af956cde30845b53c\nGitFetch: refs/heads/master\n"
  },
  {
    "path": "library/spark",
    "content": "Maintainers: Apache Spark Developers <dev@spark.apache.org> (@ApacheSpark),\n             Hyukjin Kwon (@HyukjinKwon),\n             Jie Yang (@LuciferYang),\n             Kent Yao (@yaooqinn),\n             Wenchen Fan (@cloud-fan),\n             Yikun Jiang (@Yikun)\nGitRepo: https://github.com/apache/spark-docker.git\n\nTags: 4.0.1-scala2.13-java21-python3-ubuntu, 4.0.1-java21-python3, 4.0.1-java21, python3, latest\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java21-python3-ubuntu\n\nTags: 4.0.1-scala2.13-java21-r-ubuntu, 4.0.1-java21-r\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java21-r-ubuntu\n\nTags: 4.0.1-scala2.13-java21-ubuntu, 4.0.1-java21-scala\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java21-ubuntu\n\nTags: 4.0.1-scala2.13-java21-python3-r-ubuntu\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java21-python3-r-ubuntu\n\nTags: 4.0.1-scala2.13-java17-python3-ubuntu, 4.0.1-python3, 4.0.1, python3-java17\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java17-python3-ubuntu\n\nTags: 4.0.1-scala2.13-java17-r-ubuntu, 4.0.1-r, r\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java17-r-ubuntu\n\nTags: 4.0.1-scala2.13-java17-ubuntu, 4.0.1-scala, scala\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java17-ubuntu\n\nTags: 4.0.1-scala2.13-java17-python3-r-ubuntu\nArchitectures: amd64, arm64v8\nGitCommit: a5edefc5f796902d5cc15f7d840bb6335f283797\nDirectory: ./4.0.1/scala2.13-java17-python3-r-ubuntu\n\nTags: 3.5.7-scala2.12-java17-python3-ubuntu, 3.5.7-java17-python3, 3.5.7-java17\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java17-python3-ubuntu\n\nTags: 3.5.7-scala2.12-java17-r-ubuntu, 3.5.7-java17-r\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java17-r-ubuntu\n\nTags: 3.5.7-scala2.12-java17-ubuntu, 3.5.7-java17-scala\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java17-ubuntu\n\nTags: 3.5.7-scala2.12-java17-python3-r-ubuntu\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java17-python3-r-ubuntu\n\nTags: 3.5.7-scala2.12-java11-python3-ubuntu, 3.5.7-python3, 3.5.7\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java11-python3-ubuntu\n\nTags: 3.5.7-scala2.12-java11-r-ubuntu, 3.5.7-r\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java11-r-ubuntu\n\nTags: 3.5.7-scala2.12-java11-ubuntu, 3.5.7-scala\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java11-ubuntu\n\nTags: 3.5.7-scala2.12-java11-python3-r-ubuntu\nArchitectures: amd64, arm64v8\nGitCommit: 2ebf694ad45fee6f4beeeb4204bcdb01d73c988f\nDirectory: ./3.5.7/scala2.12-java11-python3-r-ubuntu\n"
  },
  {
    "path": "library/spiped",
    "content": "# this file is generated via https://github.com/TimWolla/docker-spiped/blob/f1f01eb79a88ece779c33acdd75ca29c879cac63/generate-stackbrew-library.sh\n\nMaintainers: Tim Düsterhus <tim@bastelstu.be> (@TimWolla)\nGitRepo: https://github.com/TimWolla/docker-spiped.git\nGitFetch: refs/heads/main\n\nTags: 1.6.4, 1.6, 1, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: f7100845a437d5e72c79d384113cd657ca6f93de\nDirectory: 1.6\n\nTags: 1.6.4-alpine, 1.6-alpine, 1-alpine, alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 2a6429d25e5ebccc2a8075cb8ec85d5dd951579e\nDirectory: 1.6/alpine\n"
  },
  {
    "path": "library/storm",
    "content": "Maintainers: The Apache Storm Project <dev@storm.apache.org> (@asfbot),\n             Julien Nioche (@jnioche),\n             Richard Zowalla (@rzo1)\nGitRepo: https://github.com/apache/storm-docker.git\nArchitectures: amd64, arm64v8\n\nTags: 2.8.4-jre17, 2.8-jre17, 2.8.4, 2.8, latest\nGitCommit: 170d10903d8e02e3d509055c126636709d40152a\nDirectory: 2.8.4\n\nTags: 2.8.4-jre21, 2.8-jre21\nGitCommit: 170d10903d8e02e3d509055c126636709d40152a\nDirectory: 2.8.4-jre21"
  },
  {
    "path": "library/swift",
    "content": "Maintainers: Ted Kremenek <kremenek@apple.com> (@tkremenek),\n             Mishal Shah <mishal_shah@apple.com> (@shahmishal),\n             Haris Amin <aminharis7@gmail.com> (@hamin),\n             Thomas Catterall <me@swizzlr.co> (@swizzlr)\nGitRepo: https://github.com/apple/swift-docker.git\nGitFetch: refs/heads/main\n\nTags: 6.2.4, 6.2, 6.2.4-noble, 6.2-noble, noble, latest\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/ubuntu/24.04\n\nTags: 6.2.4-slim, 6.2-slim, 6.2.4-noble-slim, 6.2-noble-slim, noble-slim, slim\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/ubuntu/24.04/slim\n\nTags: 6.2.4-jammy, 6.2-jammy, jammy\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/ubuntu/22.04\n\nTags: 6.2.4-jammy-slim, 6.2-jammy-slim, jammy-slim\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/ubuntu/22.04/slim\n\nTags: 6.2.4-bookworm, 6.2-bookworm, bookworm\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/debian/12\n\nTags: 6.2.4-bookworm-slim, 6.2-bookworm-slim, bookworm-slim\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/debian/12/slim\n\nTags: 6.2.4-amazonlinux2, 6.2-amazonlinux2, amazonlinux2\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/amazonlinux/2\n\nTags: 6.2.4-amazonlinux2-slim, 6.2-amazonlinux2-slim, amazonlinux2-slim\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/amazonlinux/2/slim\n\nTags: 6.2.4-rhel-ubi9, 6.2-rhel-ubi9, rhel-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/rhel-ubi/9\n\nTags: 6.2.4-rhel-ubi9-slim, 6.2-rhel-ubi9-slim, rhel-ubi9-slim\nArchitectures: amd64, arm64v8\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/rhel-ubi/9/slim\n\nTags: 6.2.4-windowsservercore-ltsc2022, 6.2-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitCommit: ef2c1e72ea88715a5b8c632b26bbf835a0c7bf4b\nDirectory: 6.2/windows/LTSC2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 6.1.3, 6.1, 6.1.3-noble, 6.1-noble\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/ubuntu/24.04\n\nTags: 6.1.3-slim, 6.1-slim, 6.1.3-noble-slim, 6.1-noble-slim\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/ubuntu/24.04/slim\n\nTags: 6.1.3-jammy, 6.1-jammy\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/ubuntu/22.04\n\nTags: 6.1.3-jammy-slim, 6.1-jammy-slim\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/ubuntu/22.04/slim\n\nTags: 6.1.3-bookworm, 6.1-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/debian/12\n\nTags: 6.1.3-amazonlinux2, 6.1-amazonlinux2\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/amazonlinux/2\n\nTags: 6.1.3-amazonlinux2-slim, 6.1-amazonlinux2-slim\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/amazonlinux/2/slim\n\nTags: 6.1.3-rhel-ubi9, 6.1-rhel-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/rhel-ubi/9\n\nTags: 6.1.3-rhel-ubi9-slim, 6.1-rhel-ubi9-slim\nArchitectures: amd64, arm64v8\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/rhel-ubi/9/slim\n\nTags: 6.1.3-windowsservercore-ltsc2022, 6.1-windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitCommit: 5750fff0ede55c8223a8cb52e4f8da105b8b3d07\nDirectory: 6.1/windows/LTSC2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 6.0.3, 6.0, 6.0.3-noble, 6.0-noble\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/ubuntu/24.04\n\nTags: 6.0.3-slim, 6.0-slim, 6.0.3-noble-slim, 6.0-noble-slim\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/ubuntu/24.04/slim\n\nTags: 6.0.3-jammy, 6.0-jammy\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/ubuntu/22.04\n\nTags: 6.0.3-jammy-slim, 6.0-jammy-slim\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/ubuntu/22.04/slim\n\nTags: 6.0.3-bookworm, 6.0-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/debian/12\n\nTags: 6.0.3-amazonlinux2, 6.0-amazonlinux2\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/amazonlinux/2\n\nTags: 6.0.3-amazonlinux2-slim, 6.0-amazonlinux2-slim\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/amazonlinux/2/slim\n\nTags: 6.0.3-rhel-ubi9, 6.0-rhel-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/rhel-ubi/9\n\nTags: 6.0.3-rhel-ubi9-slim, 6.0-rhel-ubi9-slim\nArchitectures: amd64, arm64v8\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/rhel-ubi/9/slim\n\nTags: 6.0.3-windowsservercore-ltsc2022, 6.0-windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitCommit: f44060cdf224436060d2df98a5c3f63f2600de63\nDirectory: 6.0/windows/LTSC2022\nConstraints: windowsservercore-ltsc2022\n\nTags: 5.10.1, 5.10, 5.10.1-jammy, 5.10-jammy\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/ubuntu/22.04\n\nTags: 5.10.1-slim, 5.10-slim, 5.10.1-jammy-slim, 5.10-jammy-slim\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/ubuntu/22.04/slim\n\nTags: 5.10.1-noble, 5.10-noble\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/ubuntu/24.04\n\nTags: 5.10.1-noble-slim, 5.10-noble-slim\nArchitectures: amd64, arm64v8\nGitCommit: 38e4244ebab3d6a4e702fb30449827d6c28ee1fd\nDirectory: 5.10/ubuntu/24.04/slim\n\nTags: 5.10.1-bookworm, 5.10-bookworm\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/debian/12\n\nTags: 5.10.1-amazonlinux2, 5.10-amazonlinux2\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/amazonlinux/2\n\nTags: 5.10.1-amazonlinux2-slim, 5.10-amazonlinux2-slim\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/amazonlinux/2/slim\n\nTags: 5.10.1-rhel-ubi9, 5.10-rhel-ubi9\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/rhel-ubi/9\n\nTags: 5.10.1-rhel-ubi9-slim, 5.10-rhel-ubi9-slim\nArchitectures: amd64, arm64v8\nGitCommit: 53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d\nDirectory: 5.10/rhel-ubi/9/slim\n\nTags: 5.10.1-windowsservercore-ltsc2022, 5.10-windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitCommit: 90888735fac23a3a5cd8f798d1d7de89bb5d47bb\nDirectory: 5.10/windows/LTSC2022\nConstraints: windowsservercore-ltsc2022\n"
  },
  {
    "path": "library/swipl",
    "content": "Maintainers: Jan Wielemaker <jan@swi-prolog.org> (@JanWielemaker),\n             Dave Curylo <dave@curylo.org> (@ninjarobot)\nGitRepo: https://github.com/SWI-Prolog/docker-swipl.git\nGitCommit: 85408a2856d774e9a96ae4ea29d5a44fe35198b4\nArchitectures: amd64, arm32v7, arm64v8\n\nTags: latest, 10.1.5\nDirectory: 10.1.5/bookworm\n\nTags: stable, 10.0.2\nDirectory: 10.0.2/bookworm\n"
  },
  {
    "path": "library/teamspeak",
    "content": "Maintainers: Hubert Nöbauer <hubert.noebauer@teamspeak.com> (@HuppiN),\n             Achim Klittich <achim.klittich@teamspeak.com> (@achimklittich)\nGitRepo: https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images\n\nTags: 3.13, 3.13.7, latest\nGitCommit: e17fc2b955883f6ee1334d43a05208a7276d81d2\nDirectory: alpine\n"
  },
  {
    "path": "library/telegraf",
    "content": "Maintainers: Sven Rebhan <srebhan@influxdata.com> (@srebhan),\n             Maya Strandboge <mstrandboge@influxdata.com> (@mstrandboge),\n             Sunil Kartikey <skartikey@influxdata.com> (@skartikey)\nGitRepo: https://github.com/influxdata/influxdata-docker.git\nGitCommit: b6f2742f0229e7657169d7bfc5be3c097ed3e38d\n\n\nTags: 1.36, 1.36.4\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: telegraf/1.36\n\nTags: 1.36-alpine, 1.36.4-alpine\nArchitectures: amd64, arm64v8\nDirectory: telegraf/1.36/alpine\n\nTags: 1.37, 1.37.3\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: telegraf/1.37\n\nTags: 1.37-alpine, 1.37.3-alpine\nArchitectures: amd64, arm64v8\nDirectory: telegraf/1.37/alpine\n\nTags: 1.38, 1.38.1, latest\nArchitectures: amd64, arm32v7, arm64v8\nDirectory: telegraf/1.38\n\nTags: 1.38-alpine, 1.38.1-alpine, alpine\nArchitectures: amd64, arm64v8\nDirectory: telegraf/1.38/alpine\n"
  },
  {
    "path": "library/tomcat",
    "content": "# this file is generated via https://github.com/docker-library/tomcat/blob/56c209618997c452e7d645b82fd4e4fa55147f35/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/tomcat.git\n\nTags: 11.0.20-jdk25-temurin-noble, 11.0-jdk25-temurin-noble, 11-jdk25-temurin-noble, jdk25-temurin-noble, 11.0.20-jdk25-temurin, 11.0-jdk25-temurin, 11-jdk25-temurin, jdk25-temurin, 11.0.20-jdk25, 11.0-jdk25, 11-jdk25, jdk25, 11.0.20, 11.0, 11, latest\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jdk25/temurin-noble\n\nTags: 11.0.20-jre25-temurin-noble, 11.0-jre25-temurin-noble, 11-jre25-temurin-noble, jre25-temurin-noble, 11.0.20-jre25-temurin, 11.0-jre25-temurin, 11-jre25-temurin, jre25-temurin, 11.0.20-jre25, 11.0-jre25, 11-jre25, jre25\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jre25/temurin-noble\n\nTags: 11.0.20-jdk25-temurin-jammy, 11.0-jdk25-temurin-jammy, 11-jdk25-temurin-jammy, jdk25-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jdk25/temurin-jammy\n\nTags: 11.0.20-jre25-temurin-jammy, 11.0-jre25-temurin-jammy, 11-jre25-temurin-jammy, jre25-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jre25/temurin-jammy\n\nTags: 11.0.20-jdk21-temurin-noble, 11.0-jdk21-temurin-noble, 11-jdk21-temurin-noble, jdk21-temurin-noble, 11.0.20-jdk21-temurin, 11.0-jdk21-temurin, 11-jdk21-temurin, jdk21-temurin, 11.0.20-jdk21, 11.0-jdk21, 11-jdk21, jdk21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jdk21/temurin-noble\n\nTags: 11.0.20-jre21-temurin-noble, 11.0-jre21-temurin-noble, 11-jre21-temurin-noble, jre21-temurin-noble, 11.0.20-jre21-temurin, 11.0-jre21-temurin, 11-jre21-temurin, jre21-temurin, 11.0.20-jre21, 11.0-jre21, 11-jre21, jre21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jre21/temurin-noble\n\nTags: 11.0.20-jdk21-temurin-jammy, 11.0-jdk21-temurin-jammy, 11-jdk21-temurin-jammy, jdk21-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jdk21/temurin-jammy\n\nTags: 11.0.20-jre21-temurin-jammy, 11.0-jre21-temurin-jammy, 11-jre21-temurin-jammy, jre21-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jre21/temurin-jammy\n\nTags: 11.0.20-jdk17-temurin-noble, 11.0-jdk17-temurin-noble, 11-jdk17-temurin-noble, jdk17-temurin-noble, 11.0.20-jdk17-temurin, 11.0-jdk17-temurin, 11-jdk17-temurin, jdk17-temurin, 11.0.20-jdk17, 11.0-jdk17, 11-jdk17, jdk17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jdk17/temurin-noble\n\nTags: 11.0.20-jre17-temurin-noble, 11.0-jre17-temurin-noble, 11-jre17-temurin-noble, jre17-temurin-noble, 11.0.20-jre17-temurin, 11.0-jre17-temurin, 11-jre17-temurin, jre17-temurin, 11.0.20-jre17, 11.0-jre17, 11-jre17, jre17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jre17/temurin-noble\n\nTags: 11.0.20-jdk17-temurin-jammy, 11.0-jdk17-temurin-jammy, 11-jdk17-temurin-jammy, jdk17-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jdk17/temurin-jammy\n\nTags: 11.0.20-jre17-temurin-jammy, 11.0-jre17-temurin-jammy, 11-jre17-temurin-jammy, jre17-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: b9a40de2d13de6aa5ffcc846a1606597fac46313\nDirectory: 11.0/jre17/temurin-jammy\n\nTags: 10.1.52-jdk25-temurin-noble, 10.1-jdk25-temurin-noble, 10-jdk25-temurin-noble, 10.1.52-jdk25-temurin, 10.1-jdk25-temurin, 10-jdk25-temurin, 10.1.52-jdk25, 10.1-jdk25, 10-jdk25, 10.1.52, 10.1, 10\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk25/temurin-noble\n\nTags: 10.1.52-jre25-temurin-noble, 10.1-jre25-temurin-noble, 10-jre25-temurin-noble, 10.1.52-jre25-temurin, 10.1-jre25-temurin, 10-jre25-temurin, 10.1.52-jre25, 10.1-jre25, 10-jre25\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre25/temurin-noble\n\nTags: 10.1.52-jdk25-temurin-jammy, 10.1-jdk25-temurin-jammy, 10-jdk25-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk25/temurin-jammy\n\nTags: 10.1.52-jre25-temurin-jammy, 10.1-jre25-temurin-jammy, 10-jre25-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre25/temurin-jammy\n\nTags: 10.1.52-jdk21-temurin-noble, 10.1-jdk21-temurin-noble, 10-jdk21-temurin-noble, 10.1.52-jdk21-temurin, 10.1-jdk21-temurin, 10-jdk21-temurin, 10.1.52-jdk21, 10.1-jdk21, 10-jdk21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk21/temurin-noble\n\nTags: 10.1.52-jre21-temurin-noble, 10.1-jre21-temurin-noble, 10-jre21-temurin-noble, 10.1.52-jre21-temurin, 10.1-jre21-temurin, 10-jre21-temurin, 10.1.52-jre21, 10.1-jre21, 10-jre21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre21/temurin-noble\n\nTags: 10.1.52-jdk21-temurin-jammy, 10.1-jdk21-temurin-jammy, 10-jdk21-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk21/temurin-jammy\n\nTags: 10.1.52-jre21-temurin-jammy, 10.1-jre21-temurin-jammy, 10-jre21-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre21/temurin-jammy\n\nTags: 10.1.52-jdk17-temurin-noble, 10.1-jdk17-temurin-noble, 10-jdk17-temurin-noble, 10.1.52-jdk17-temurin, 10.1-jdk17-temurin, 10-jdk17-temurin, 10.1.52-jdk17, 10.1-jdk17, 10-jdk17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk17/temurin-noble\n\nTags: 10.1.52-jre17-temurin-noble, 10.1-jre17-temurin-noble, 10-jre17-temurin-noble, 10.1.52-jre17-temurin, 10.1-jre17-temurin, 10-jre17-temurin, 10.1.52-jre17, 10.1-jre17, 10-jre17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre17/temurin-noble\n\nTags: 10.1.52-jdk17-temurin-jammy, 10.1-jdk17-temurin-jammy, 10-jdk17-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk17/temurin-jammy\n\nTags: 10.1.52-jre17-temurin-jammy, 10.1-jre17-temurin-jammy, 10-jre17-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre17/temurin-jammy\n\nTags: 10.1.52-jdk11-temurin-noble, 10.1-jdk11-temurin-noble, 10-jdk11-temurin-noble, 10.1.52-jdk11-temurin, 10.1-jdk11-temurin, 10-jdk11-temurin, 10.1.52-jdk11, 10.1-jdk11, 10-jdk11\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk11/temurin-noble\n\nTags: 10.1.52-jre11-temurin-noble, 10.1-jre11-temurin-noble, 10-jre11-temurin-noble, 10.1.52-jre11-temurin, 10.1-jre11-temurin, 10-jre11-temurin, 10.1.52-jre11, 10.1-jre11, 10-jre11\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre11/temurin-noble\n\nTags: 10.1.52-jdk11-temurin-jammy, 10.1-jdk11-temurin-jammy, 10-jdk11-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jdk11/temurin-jammy\n\nTags: 10.1.52-jre11-temurin-jammy, 10.1-jre11-temurin-jammy, 10-jre11-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 39ac9335c0ed9d44db8118862d36223f36fbc8a6\nDirectory: 10.1/jre11/temurin-jammy\n\nTags: 9.0.116-jdk25-temurin-noble, 9.0-jdk25-temurin-noble, 9-jdk25-temurin-noble, 9.0.116-jdk25-temurin, 9.0-jdk25-temurin, 9-jdk25-temurin, 9.0.116-jdk25, 9.0-jdk25, 9-jdk25, 9.0.116, 9.0, 9\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk25/temurin-noble\n\nTags: 9.0.116-jre25-temurin-noble, 9.0-jre25-temurin-noble, 9-jre25-temurin-noble, 9.0.116-jre25-temurin, 9.0-jre25-temurin, 9-jre25-temurin, 9.0.116-jre25, 9.0-jre25, 9-jre25\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre25/temurin-noble\n\nTags: 9.0.116-jdk25-temurin-jammy, 9.0-jdk25-temurin-jammy, 9-jdk25-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk25/temurin-jammy\n\nTags: 9.0.116-jre25-temurin-jammy, 9.0-jre25-temurin-jammy, 9-jre25-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre25/temurin-jammy\n\nTags: 9.0.116-jdk21-temurin-noble, 9.0-jdk21-temurin-noble, 9-jdk21-temurin-noble, 9.0.116-jdk21-temurin, 9.0-jdk21-temurin, 9-jdk21-temurin, 9.0.116-jdk21, 9.0-jdk21, 9-jdk21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk21/temurin-noble\n\nTags: 9.0.116-jre21-temurin-noble, 9.0-jre21-temurin-noble, 9-jre21-temurin-noble, 9.0.116-jre21-temurin, 9.0-jre21-temurin, 9-jre21-temurin, 9.0.116-jre21, 9.0-jre21, 9-jre21\nArchitectures: amd64, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre21/temurin-noble\n\nTags: 9.0.116-jdk21-temurin-jammy, 9.0-jdk21-temurin-jammy, 9-jdk21-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk21/temurin-jammy\n\nTags: 9.0.116-jre21-temurin-jammy, 9.0-jre21-temurin-jammy, 9-jre21-temurin-jammy\nArchitectures: amd64, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre21/temurin-jammy\n\nTags: 9.0.116-jdk21-corretto-al2, 9.0-jdk21-corretto-al2, 9-jdk21-corretto-al2, 9.0.116-jdk21-corretto, 9.0-jdk21-corretto, 9-jdk21-corretto\nArchitectures: amd64, arm64v8\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk21/corretto-al2\n\nTags: 9.0.116-jdk17-temurin-noble, 9.0-jdk17-temurin-noble, 9-jdk17-temurin-noble, 9.0.116-jdk17-temurin, 9.0-jdk17-temurin, 9-jdk17-temurin, 9.0.116-jdk17, 9.0-jdk17, 9-jdk17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk17/temurin-noble\n\nTags: 9.0.116-jre17-temurin-noble, 9.0-jre17-temurin-noble, 9-jre17-temurin-noble, 9.0.116-jre17-temurin, 9.0-jre17-temurin, 9-jre17-temurin, 9.0.116-jre17, 9.0-jre17, 9-jre17\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre17/temurin-noble\n\nTags: 9.0.116-jdk17-temurin-jammy, 9.0-jdk17-temurin-jammy, 9-jdk17-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk17/temurin-jammy\n\nTags: 9.0.116-jre17-temurin-jammy, 9.0-jre17-temurin-jammy, 9-jre17-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre17/temurin-jammy\n\nTags: 9.0.116-jdk17-corretto-al2, 9.0-jdk17-corretto-al2, 9-jdk17-corretto-al2, 9.0.116-jdk17-corretto, 9.0-jdk17-corretto, 9-jdk17-corretto\nArchitectures: amd64, arm64v8\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk17/corretto-al2\n\nTags: 9.0.116-jdk11-temurin-noble, 9.0-jdk11-temurin-noble, 9-jdk11-temurin-noble, 9.0.116-jdk11-temurin, 9.0-jdk11-temurin, 9-jdk11-temurin, 9.0.116-jdk11, 9.0-jdk11, 9-jdk11\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk11/temurin-noble\n\nTags: 9.0.116-jre11-temurin-noble, 9.0-jre11-temurin-noble, 9-jre11-temurin-noble, 9.0.116-jre11-temurin, 9.0-jre11-temurin, 9-jre11-temurin, 9.0.116-jre11, 9.0-jre11, 9-jre11\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre11/temurin-noble\n\nTags: 9.0.116-jdk11-temurin-jammy, 9.0-jdk11-temurin-jammy, 9-jdk11-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk11/temurin-jammy\n\nTags: 9.0.116-jre11-temurin-jammy, 9.0-jre11-temurin-jammy, 9-jre11-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, s390x\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre11/temurin-jammy\n\nTags: 9.0.116-jdk11-corretto-al2, 9.0-jdk11-corretto-al2, 9-jdk11-corretto-al2, 9.0.116-jdk11-corretto, 9.0-jdk11-corretto, 9-jdk11-corretto\nArchitectures: amd64, arm64v8\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk11/corretto-al2\n\nTags: 9.0.116-jdk8-temurin-noble, 9.0-jdk8-temurin-noble, 9-jdk8-temurin-noble, 9.0.116-jdk8-temurin, 9.0-jdk8-temurin, 9-jdk8-temurin, 9.0.116-jdk8, 9.0-jdk8, 9-jdk8\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk8/temurin-noble\n\nTags: 9.0.116-jre8-temurin-noble, 9.0-jre8-temurin-noble, 9-jre8-temurin-noble, 9.0.116-jre8-temurin, 9.0-jre8-temurin, 9-jre8-temurin, 9.0.116-jre8, 9.0-jre8, 9-jre8\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre8/temurin-noble\n\nTags: 9.0.116-jdk8-temurin-jammy, 9.0-jdk8-temurin-jammy, 9-jdk8-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk8/temurin-jammy\n\nTags: 9.0.116-jre8-temurin-jammy, 9.0-jre8-temurin-jammy, 9-jre8-temurin-jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jre8/temurin-jammy\n\nTags: 9.0.116-jdk8-corretto-al2, 9.0-jdk8-corretto-al2, 9-jdk8-corretto-al2, 9.0.116-jdk8-corretto, 9.0-jdk8-corretto, 9-jdk8-corretto\nArchitectures: amd64, arm64v8\nGitCommit: 84c1f64b546c6cd20f2e698e69ee54c98fe68ce1\nDirectory: 9.0/jdk8/corretto-al2\n"
  },
  {
    "path": "library/tomee",
    "content": "Maintainers: Alex Soto <asotobu@gmail.com> (@lordofthejars), Otavio Santana <otaviojava@apache.org> (@otaviojava), Jonathan Gallimore <jgallimore@apache.org> (@jgallimore), Rod Jenkins <rodj@rodandmichelle.com> (@scriptmonkey), Markus Jung <jungm@apache.org> (@jungm)\nGitRepo: https://github.com/tomitribe/docker-tomee.git\nGitCommit: 724664015cf5e7ade6122d2acb8b398c342303b5\nArchitectures: amd64, arm64v8\n\nTags: 10.1.4-jre25-Temurin-ubuntu-microprofile, 10.1.4-Temurin-ubuntu-microprofile, 10.1.4-jre25-ubuntu-microprofile, 10.1.4-ubuntu-microprofile, 10.1.4-jre25-Temurin-microprofile, 10.1.4-Temurin-microprofile, 10.1.4-jre25-microprofile, 10.1.4-microprofile, 10.1.4-jre25-Temurin-ubuntu, 10.1.4-Temurin-ubuntu, 10.1.4-jre25-ubuntu, 10.1.4-ubuntu, 10.1.4-jre25-Temurin, 10.1.4-Temurin, 10.1.4-jre25, 10.1.4, 10.1-jre25-Temurin-ubuntu-microprofile, 10.1-Temurin-ubuntu-microprofile, 10.1-jre25-ubuntu-microprofile, 10.1-ubuntu-microprofile, 10.1-jre25-Temurin-microprofile, 10.1-Temurin-microprofile, 10.1-jre25-microprofile, 10.1-microprofile, 10.1-jre25-Temurin-ubuntu, 10.1-Temurin-ubuntu, 10.1-jre25-ubuntu, 10.1-ubuntu, 10.1-jre25-Temurin, 10.1-Temurin, 10.1-jre25, 10.1, 10-jre25-Temurin-ubuntu-microprofile, 10-Temurin-ubuntu-microprofile, 10-jre25-ubuntu-microprofile, 10-ubuntu-microprofile, 10-jre25-Temurin-microprofile, 10-Temurin-microprofile, 10-jre25-microprofile, 10-microprofile, 10-jre25-Temurin-ubuntu, 10-Temurin-ubuntu, 10-jre25-ubuntu, 10-ubuntu, 10-jre25-Temurin, 10-Temurin, 10-jre25, 10, jre25-Temurin-ubuntu-microprofile, Temurin-ubuntu-microprofile, jre25-ubuntu-microprofile, ubuntu-microprofile, jre25-Temurin-microprofile, Temurin-microprofile, jre25-microprofile, microprofile, jre25-Temurin-ubuntu, Temurin-ubuntu, jre25-ubuntu, ubuntu, jre25-Temurin, Temurin, jre25, latest\nDirectory: TomEE-10.1/jre25/Temurin/ubuntu/microprofile\n\nTags: 10.1.4-jre25-Temurin-ubuntu-plume, 10.1.4-Temurin-ubuntu-plume, 10.1.4-jre25-ubuntu-plume, 10.1.4-ubuntu-plume, 10.1.4-jre25-Temurin-plume, 10.1.4-Temurin-plume, 10.1.4-jre25-plume, 10.1.4-plume, 10.1-jre25-Temurin-ubuntu-plume, 10.1-Temurin-ubuntu-plume, 10.1-jre25-ubuntu-plume, 10.1-ubuntu-plume, 10.1-jre25-Temurin-plume, 10.1-Temurin-plume, 10.1-jre25-plume, 10.1-plume, 10-jre25-Temurin-ubuntu-plume, 10-Temurin-ubuntu-plume, 10-jre25-ubuntu-plume, 10-ubuntu-plume, 10-jre25-Temurin-plume, 10-Temurin-plume, 10-jre25-plume, 10-plume, jre25-Temurin-ubuntu-plume, Temurin-ubuntu-plume, jre25-ubuntu-plume, ubuntu-plume, jre25-Temurin-plume, Temurin-plume, jre25-plume, plume\nDirectory: TomEE-10.1/jre25/Temurin/ubuntu/plume\n\nTags: 10.1.4-jre25-Temurin-ubuntu-plus, 10.1.4-Temurin-ubuntu-plus, 10.1.4-jre25-ubuntu-plus, 10.1.4-ubuntu-plus, 10.1.4-jre25-Temurin-plus, 10.1.4-Temurin-plus, 10.1.4-jre25-plus, 10.1.4-plus, 10.1-jre25-Temurin-ubuntu-plus, 10.1-Temurin-ubuntu-plus, 10.1-jre25-ubuntu-plus, 10.1-ubuntu-plus, 10.1-jre25-Temurin-plus, 10.1-Temurin-plus, 10.1-jre25-plus, 10.1-plus, 10-jre25-Temurin-ubuntu-plus, 10-Temurin-ubuntu-plus, 10-jre25-ubuntu-plus, 10-ubuntu-plus, 10-jre25-Temurin-plus, 10-Temurin-plus, 10-jre25-plus, 10-plus, jre25-Temurin-ubuntu-plus, Temurin-ubuntu-plus, jre25-ubuntu-plus, ubuntu-plus, jre25-Temurin-plus, Temurin-plus, jre25-plus, plus\nDirectory: TomEE-10.1/jre25/Temurin/ubuntu/plus\n\nTags: 10.1.4-jre25-Temurin-ubuntu-webprofile, 10.1.4-Temurin-ubuntu-webprofile, 10.1.4-jre25-ubuntu-webprofile, 10.1.4-ubuntu-webprofile, 10.1.4-jre25-Temurin-webprofile, 10.1.4-Temurin-webprofile, 10.1.4-jre25-webprofile, 10.1.4-webprofile, 10.1-jre25-Temurin-ubuntu-webprofile, 10.1-Temurin-ubuntu-webprofile, 10.1-jre25-ubuntu-webprofile, 10.1-ubuntu-webprofile, 10.1-jre25-Temurin-webprofile, 10.1-Temurin-webprofile, 10.1-jre25-webprofile, 10.1-webprofile, 10-jre25-Temurin-ubuntu-webprofile, 10-Temurin-ubuntu-webprofile, 10-jre25-ubuntu-webprofile, 10-ubuntu-webprofile, 10-jre25-Temurin-webprofile, 10-Temurin-webprofile, 10-jre25-webprofile, 10-webprofile, jre25-Temurin-ubuntu-webprofile, Temurin-ubuntu-webprofile, jre25-ubuntu-webprofile, ubuntu-webprofile, jre25-Temurin-webprofile, Temurin-webprofile, jre25-webprofile, webprofile\nDirectory: TomEE-10.1/jre25/Temurin/ubuntu/webprofile\n\nTags: 10.1.4-jre25-Temurin-alpine-microprofile, 10.1.4-Temurin-alpine-microprofile, 10.1.4-jre25-alpine-microprofile, 10.1.4-alpine-microprofile, 10.1.4-jre25-Temurin-alpine, 10.1.4-Temurin-alpine, 10.1.4-jre25-alpine, 10.1.4-alpine, 10.1-jre25-Temurin-alpine-microprofile, 10.1-Temurin-alpine-microprofile, 10.1-jre25-alpine-microprofile, 10.1-alpine-microprofile, 10.1-jre25-Temurin-alpine, 10.1-Temurin-alpine, 10.1-jre25-alpine, 10.1-alpine, 10-jre25-Temurin-alpine-microprofile, 10-Temurin-alpine-microprofile, 10-jre25-alpine-microprofile, 10-alpine-microprofile, 10-jre25-Temurin-alpine, 10-Temurin-alpine, 10-jre25-alpine, 10-alpine, jre25-Temurin-alpine-microprofile, Temurin-alpine-microprofile, jre25-alpine-microprofile, alpine-microprofile, jre25-Temurin-alpine, Temurin-alpine, jre25-alpine, alpine\nDirectory: TomEE-10.1/jre25/Temurin/alpine/microprofile\n\nTags: 10.1.4-jre25-Temurin-alpine-plume, 10.1.4-Temurin-alpine-plume, 10.1.4-jre25-alpine-plume, 10.1.4-alpine-plume, 10.1-jre25-Temurin-alpine-plume, 10.1-Temurin-alpine-plume, 10.1-jre25-alpine-plume, 10.1-alpine-plume, 10-jre25-Temurin-alpine-plume, 10-Temurin-alpine-plume, 10-jre25-alpine-plume, 10-alpine-plume, jre25-Temurin-alpine-plume, Temurin-alpine-plume, jre25-alpine-plume, alpine-plume\nDirectory: TomEE-10.1/jre25/Temurin/alpine/plume\n\nTags: 10.1.4-jre25-Temurin-alpine-plus, 10.1.4-Temurin-alpine-plus, 10.1.4-jre25-alpine-plus, 10.1.4-alpine-plus, 10.1-jre25-Temurin-alpine-plus, 10.1-Temurin-alpine-plus, 10.1-jre25-alpine-plus, 10.1-alpine-plus, 10-jre25-Temurin-alpine-plus, 10-Temurin-alpine-plus, 10-jre25-alpine-plus, 10-alpine-plus, jre25-Temurin-alpine-plus, Temurin-alpine-plus, jre25-alpine-plus, alpine-plus\nDirectory: TomEE-10.1/jre25/Temurin/alpine/plus\n\nTags: 10.1.4-jre25-Temurin-alpine-webprofile, 10.1.4-Temurin-alpine-webprofile, 10.1.4-jre25-alpine-webprofile, 10.1.4-alpine-webprofile, 10.1-jre25-Temurin-alpine-webprofile, 10.1-Temurin-alpine-webprofile, 10.1-jre25-alpine-webprofile, 10.1-alpine-webprofile, 10-jre25-Temurin-alpine-webprofile, 10-Temurin-alpine-webprofile, 10-jre25-alpine-webprofile, 10-alpine-webprofile, jre25-Temurin-alpine-webprofile, Temurin-alpine-webprofile, jre25-alpine-webprofile, alpine-webprofile\nDirectory: TomEE-10.1/jre25/Temurin/alpine/webprofile\n\nTags: 10.1.4-jre25-Semeru-ubuntu-microprofile, 10.1.4-Semeru-ubuntu-microprofile, 10.1.4-jre25-Semeru-microprofile, 10.1.4-Semeru-microprofile, 10.1.4-jre25-Semeru-ubuntu, 10.1.4-Semeru-ubuntu, 10.1.4-jre25-Semeru, 10.1.4-Semeru, 10.1-jre25-Semeru-ubuntu-microprofile, 10.1-Semeru-ubuntu-microprofile, 10.1-jre25-Semeru-microprofile, 10.1-Semeru-microprofile, 10.1-jre25-Semeru-ubuntu, 10.1-Semeru-ubuntu, 10.1-jre25-Semeru, 10.1-Semeru, 10-jre25-Semeru-ubuntu-microprofile, 10-Semeru-ubuntu-microprofile, 10-jre25-Semeru-microprofile, 10-Semeru-microprofile, 10-jre25-Semeru-ubuntu, 10-Semeru-ubuntu, 10-jre25-Semeru, 10-Semeru, jre25-Semeru-ubuntu-microprofile, Semeru-ubuntu-microprofile, jre25-Semeru-microprofile, Semeru-microprofile, jre25-Semeru-ubuntu, Semeru-ubuntu, jre25-Semeru, Semeru\nDirectory: TomEE-10.1/jre25/Semeru/ubuntu/microprofile\n\nTags: 10.1.4-jre25-Semeru-ubuntu-plume, 10.1.4-Semeru-ubuntu-plume, 10.1.4-jre25-Semeru-plume, 10.1.4-Semeru-plume, 10.1-jre25-Semeru-ubuntu-plume, 10.1-Semeru-ubuntu-plume, 10.1-jre25-Semeru-plume, 10.1-Semeru-plume, 10-jre25-Semeru-ubuntu-plume, 10-Semeru-ubuntu-plume, 10-jre25-Semeru-plume, 10-Semeru-plume, jre25-Semeru-ubuntu-plume, Semeru-ubuntu-plume, jre25-Semeru-plume, Semeru-plume\nDirectory: TomEE-10.1/jre25/Semeru/ubuntu/plume\n\nTags: 10.1.4-jre25-Semeru-ubuntu-plus, 10.1.4-Semeru-ubuntu-plus, 10.1.4-jre25-Semeru-plus, 10.1.4-Semeru-plus, 10.1-jre25-Semeru-ubuntu-plus, 10.1-Semeru-ubuntu-plus, 10.1-jre25-Semeru-plus, 10.1-Semeru-plus, 10-jre25-Semeru-ubuntu-plus, 10-Semeru-ubuntu-plus, 10-jre25-Semeru-plus, 10-Semeru-plus, jre25-Semeru-ubuntu-plus, Semeru-ubuntu-plus, jre25-Semeru-plus, Semeru-plus\nDirectory: TomEE-10.1/jre25/Semeru/ubuntu/plus\n\nTags: 10.1.4-jre25-Semeru-ubuntu-webprofile, 10.1.4-Semeru-ubuntu-webprofile, 10.1.4-jre25-Semeru-webprofile, 10.1.4-Semeru-webprofile, 10.1-jre25-Semeru-ubuntu-webprofile, 10.1-Semeru-ubuntu-webprofile, 10.1-jre25-Semeru-webprofile, 10.1-Semeru-webprofile, 10-jre25-Semeru-ubuntu-webprofile, 10-Semeru-ubuntu-webprofile, 10-jre25-Semeru-webprofile, 10-Semeru-webprofile, jre25-Semeru-ubuntu-webprofile, Semeru-ubuntu-webprofile, jre25-Semeru-webprofile, Semeru-webprofile\nDirectory: TomEE-10.1/jre25/Semeru/ubuntu/webprofile\n\nTags: 10.1.4-jre21-Temurin-ubuntu-microprofile, 10.1.4-jre21-ubuntu-microprofile, 10.1.4-jre21-Temurin-microprofile, 10.1.4-jre21-microprofile, 10.1.4-jre21-Temurin-ubuntu, 10.1.4-jre21-ubuntu, 10.1.4-jre21-Temurin, 10.1.4-jre21, 10.1-jre21-Temurin-ubuntu-microprofile, 10.1-jre21-ubuntu-microprofile, 10.1-jre21-Temurin-microprofile, 10.1-jre21-microprofile, 10.1-jre21-Temurin-ubuntu, 10.1-jre21-ubuntu, 10.1-jre21-Temurin, 10.1-jre21, 10-jre21-Temurin-ubuntu-microprofile, 10-jre21-ubuntu-microprofile, 10-jre21-Temurin-microprofile, 10-jre21-microprofile, 10-jre21-Temurin-ubuntu, 10-jre21-ubuntu, 10-jre21-Temurin, 10-jre21, jre21-Temurin-ubuntu-microprofile, jre21-ubuntu-microprofile, jre21-Temurin-microprofile, jre21-microprofile, jre21-Temurin-ubuntu, jre21-ubuntu, jre21-Temurin, jre21\nDirectory: TomEE-10.1/jre21/Temurin/ubuntu/microprofile\n\nTags: 10.1.4-jre21-Temurin-ubuntu-plume, 10.1.4-jre21-ubuntu-plume, 10.1.4-jre21-Temurin-plume, 10.1.4-jre21-plume, 10.1-jre21-Temurin-ubuntu-plume, 10.1-jre21-ubuntu-plume, 10.1-jre21-Temurin-plume, 10.1-jre21-plume, 10-jre21-Temurin-ubuntu-plume, 10-jre21-ubuntu-plume, 10-jre21-Temurin-plume, 10-jre21-plume, jre21-Temurin-ubuntu-plume, jre21-ubuntu-plume, jre21-Temurin-plume, jre21-plume\nDirectory: TomEE-10.1/jre21/Temurin/ubuntu/plume\n\nTags: 10.1.4-jre21-Temurin-ubuntu-plus, 10.1.4-jre21-ubuntu-plus, 10.1.4-jre21-Temurin-plus, 10.1.4-jre21-plus, 10.1-jre21-Temurin-ubuntu-plus, 10.1-jre21-ubuntu-plus, 10.1-jre21-Temurin-plus, 10.1-jre21-plus, 10-jre21-Temurin-ubuntu-plus, 10-jre21-ubuntu-plus, 10-jre21-Temurin-plus, 10-jre21-plus, jre21-Temurin-ubuntu-plus, jre21-ubuntu-plus, jre21-Temurin-plus, jre21-plus\nDirectory: TomEE-10.1/jre21/Temurin/ubuntu/plus\n\nTags: 10.1.4-jre21-Temurin-ubuntu-webprofile, 10.1.4-jre21-ubuntu-webprofile, 10.1.4-jre21-Temurin-webprofile, 10.1.4-jre21-webprofile, 10.1-jre21-Temurin-ubuntu-webprofile, 10.1-jre21-ubuntu-webprofile, 10.1-jre21-Temurin-webprofile, 10.1-jre21-webprofile, 10-jre21-Temurin-ubuntu-webprofile, 10-jre21-ubuntu-webprofile, 10-jre21-Temurin-webprofile, 10-jre21-webprofile, jre21-Temurin-ubuntu-webprofile, jre21-ubuntu-webprofile, jre21-Temurin-webprofile, jre21-webprofile\nDirectory: TomEE-10.1/jre21/Temurin/ubuntu/webprofile\n\nTags: 10.1.4-jre21-Temurin-alpine-microprofile, 10.1.4-jre21-alpine-microprofile, 10.1.4-jre21-Temurin-alpine, 10.1.4-jre21-alpine, 10.1-jre21-Temurin-alpine-microprofile, 10.1-jre21-alpine-microprofile, 10.1-jre21-Temurin-alpine, 10.1-jre21-alpine, 10-jre21-Temurin-alpine-microprofile, 10-jre21-alpine-microprofile, 10-jre21-Temurin-alpine, 10-jre21-alpine, jre21-Temurin-alpine-microprofile, jre21-alpine-microprofile, jre21-Temurin-alpine, jre21-alpine\nDirectory: TomEE-10.1/jre21/Temurin/alpine/microprofile\n\nTags: 10.1.4-jre21-Temurin-alpine-plume, 10.1.4-jre21-alpine-plume, 10.1-jre21-Temurin-alpine-plume, 10.1-jre21-alpine-plume, 10-jre21-Temurin-alpine-plume, 10-jre21-alpine-plume, jre21-Temurin-alpine-plume, jre21-alpine-plume\nDirectory: TomEE-10.1/jre21/Temurin/alpine/plume\n\nTags: 10.1.4-jre21-Temurin-alpine-plus, 10.1.4-jre21-alpine-plus, 10.1-jre21-Temurin-alpine-plus, 10.1-jre21-alpine-plus, 10-jre21-Temurin-alpine-plus, 10-jre21-alpine-plus, jre21-Temurin-alpine-plus, jre21-alpine-plus\nDirectory: TomEE-10.1/jre21/Temurin/alpine/plus\n\nTags: 10.1.4-jre21-Temurin-alpine-webprofile, 10.1.4-jre21-alpine-webprofile, 10.1-jre21-Temurin-alpine-webprofile, 10.1-jre21-alpine-webprofile, 10-jre21-Temurin-alpine-webprofile, 10-jre21-alpine-webprofile, jre21-Temurin-alpine-webprofile, jre21-alpine-webprofile\nDirectory: TomEE-10.1/jre21/Temurin/alpine/webprofile\n\nTags: 10.1.4-jre21-Semeru-ubuntu-microprofile, 10.1.4-jre21-Semeru-microprofile, 10.1.4-jre21-Semeru-ubuntu, 10.1.4-jre21-Semeru, 10.1-jre21-Semeru-ubuntu-microprofile, 10.1-jre21-Semeru-microprofile, 10.1-jre21-Semeru-ubuntu, 10.1-jre21-Semeru, 10-jre21-Semeru-ubuntu-microprofile, 10-jre21-Semeru-microprofile, 10-jre21-Semeru-ubuntu, 10-jre21-Semeru, jre21-Semeru-ubuntu-microprofile, jre21-Semeru-microprofile, jre21-Semeru-ubuntu, jre21-Semeru\nDirectory: TomEE-10.1/jre21/Semeru/ubuntu/microprofile\n\nTags: 10.1.4-jre21-Semeru-ubuntu-plume, 10.1.4-jre21-Semeru-plume, 10.1-jre21-Semeru-ubuntu-plume, 10.1-jre21-Semeru-plume, 10-jre21-Semeru-ubuntu-plume, 10-jre21-Semeru-plume, jre21-Semeru-ubuntu-plume, jre21-Semeru-plume\nDirectory: TomEE-10.1/jre21/Semeru/ubuntu/plume\n\nTags: 10.1.4-jre21-Semeru-ubuntu-plus, 10.1.4-jre21-Semeru-plus, 10.1-jre21-Semeru-ubuntu-plus, 10.1-jre21-Semeru-plus, 10-jre21-Semeru-ubuntu-plus, 10-jre21-Semeru-plus, jre21-Semeru-ubuntu-plus, jre21-Semeru-plus\nDirectory: TomEE-10.1/jre21/Semeru/ubuntu/plus\n\nTags: 10.1.4-jre21-Semeru-ubuntu-webprofile, 10.1.4-jre21-Semeru-webprofile, 10.1-jre21-Semeru-ubuntu-webprofile, 10.1-jre21-Semeru-webprofile, 10-jre21-Semeru-ubuntu-webprofile, 10-jre21-Semeru-webprofile, jre21-Semeru-ubuntu-webprofile, jre21-Semeru-webprofile\nDirectory: TomEE-10.1/jre21/Semeru/ubuntu/webprofile\n\nTags: 10.1.4-jre17-Temurin-ubuntu-microprofile, 10.1.4-jre17-ubuntu-microprofile, 10.1.4-jre17-Temurin-microprofile, 10.1.4-jre17-microprofile, 10.1.4-jre17-Temurin-ubuntu, 10.1.4-jre17-ubuntu, 10.1.4-jre17-Temurin, 10.1.4-jre17, 10.1-jre17-Temurin-ubuntu-microprofile, 10.1-jre17-ubuntu-microprofile, 10.1-jre17-Temurin-microprofile, 10.1-jre17-microprofile, 10.1-jre17-Temurin-ubuntu, 10.1-jre17-ubuntu, 10.1-jre17-Temurin, 10.1-jre17, 10-jre17-Temurin-ubuntu-microprofile, 10-jre17-ubuntu-microprofile, 10-jre17-Temurin-microprofile, 10-jre17-microprofile, 10-jre17-Temurin-ubuntu, 10-jre17-ubuntu, 10-jre17-Temurin, 10-jre17, jre17-Temurin-ubuntu-microprofile, jre17-ubuntu-microprofile, jre17-Temurin-microprofile, jre17-microprofile, jre17-Temurin-ubuntu, jre17-ubuntu, jre17-Temurin, jre17\nDirectory: TomEE-10.1/jre17/Temurin/ubuntu/microprofile\n\nTags: 10.1.4-jre17-Temurin-ubuntu-plume, 10.1.4-jre17-ubuntu-plume, 10.1.4-jre17-Temurin-plume, 10.1.4-jre17-plume, 10.1-jre17-Temurin-ubuntu-plume, 10.1-jre17-ubuntu-plume, 10.1-jre17-Temurin-plume, 10.1-jre17-plume, 10-jre17-Temurin-ubuntu-plume, 10-jre17-ubuntu-plume, 10-jre17-Temurin-plume, 10-jre17-plume, jre17-Temurin-ubuntu-plume, jre17-ubuntu-plume, jre17-Temurin-plume, jre17-plume\nDirectory: TomEE-10.1/jre17/Temurin/ubuntu/plume\n\nTags: 10.1.4-jre17-Temurin-ubuntu-plus, 10.1.4-jre17-ubuntu-plus, 10.1.4-jre17-Temurin-plus, 10.1.4-jre17-plus, 10.1-jre17-Temurin-ubuntu-plus, 10.1-jre17-ubuntu-plus, 10.1-jre17-Temurin-plus, 10.1-jre17-plus, 10-jre17-Temurin-ubuntu-plus, 10-jre17-ubuntu-plus, 10-jre17-Temurin-plus, 10-jre17-plus, jre17-Temurin-ubuntu-plus, jre17-ubuntu-plus, jre17-Temurin-plus, jre17-plus\nDirectory: TomEE-10.1/jre17/Temurin/ubuntu/plus\n\nTags: 10.1.4-jre17-Temurin-ubuntu-webprofile, 10.1.4-jre17-ubuntu-webprofile, 10.1.4-jre17-Temurin-webprofile, 10.1.4-jre17-webprofile, 10.1-jre17-Temurin-ubuntu-webprofile, 10.1-jre17-ubuntu-webprofile, 10.1-jre17-Temurin-webprofile, 10.1-jre17-webprofile, 10-jre17-Temurin-ubuntu-webprofile, 10-jre17-ubuntu-webprofile, 10-jre17-Temurin-webprofile, 10-jre17-webprofile, jre17-Temurin-ubuntu-webprofile, jre17-ubuntu-webprofile, jre17-Temurin-webprofile, jre17-webprofile\nDirectory: TomEE-10.1/jre17/Temurin/ubuntu/webprofile\n\nTags: 10.1.4-jre17-Temurin-alpine-microprofile, 10.1.4-jre17-alpine-microprofile, 10.1.4-jre17-Temurin-alpine, 10.1.4-jre17-alpine, 10.1-jre17-Temurin-alpine-microprofile, 10.1-jre17-alpine-microprofile, 10.1-jre17-Temurin-alpine, 10.1-jre17-alpine, 10-jre17-Temurin-alpine-microprofile, 10-jre17-alpine-microprofile, 10-jre17-Temurin-alpine, 10-jre17-alpine, jre17-Temurin-alpine-microprofile, jre17-alpine-microprofile, jre17-Temurin-alpine, jre17-alpine\nArchitectures: amd64\nDirectory: TomEE-10.1/jre17/Temurin/alpine/microprofile\n\nTags: 10.1.4-jre17-Temurin-alpine-plume, 10.1.4-jre17-alpine-plume, 10.1-jre17-Temurin-alpine-plume, 10.1-jre17-alpine-plume, 10-jre17-Temurin-alpine-plume, 10-jre17-alpine-plume, jre17-Temurin-alpine-plume, jre17-alpine-plume\nArchitectures: amd64\nDirectory: TomEE-10.1/jre17/Temurin/alpine/plume\n\nTags: 10.1.4-jre17-Temurin-alpine-plus, 10.1.4-jre17-alpine-plus, 10.1-jre17-Temurin-alpine-plus, 10.1-jre17-alpine-plus, 10-jre17-Temurin-alpine-plus, 10-jre17-alpine-plus, jre17-Temurin-alpine-plus, jre17-alpine-plus\nArchitectures: amd64\nDirectory: TomEE-10.1/jre17/Temurin/alpine/plus\n\nTags: 10.1.4-jre17-Temurin-alpine-webprofile, 10.1.4-jre17-alpine-webprofile, 10.1-jre17-Temurin-alpine-webprofile, 10.1-jre17-alpine-webprofile, 10-jre17-Temurin-alpine-webprofile, 10-jre17-alpine-webprofile, jre17-Temurin-alpine-webprofile, jre17-alpine-webprofile\nArchitectures: amd64\nDirectory: TomEE-10.1/jre17/Temurin/alpine/webprofile\n\nTags: 10.1.4-jre17-Semeru-ubuntu-microprofile, 10.1.4-jre17-Semeru-microprofile, 10.1.4-jre17-Semeru-ubuntu, 10.1.4-jre17-Semeru, 10.1-jre17-Semeru-ubuntu-microprofile, 10.1-jre17-Semeru-microprofile, 10.1-jre17-Semeru-ubuntu, 10.1-jre17-Semeru, 10-jre17-Semeru-ubuntu-microprofile, 10-jre17-Semeru-microprofile, 10-jre17-Semeru-ubuntu, 10-jre17-Semeru, jre17-Semeru-ubuntu-microprofile, jre17-Semeru-microprofile, jre17-Semeru-ubuntu, jre17-Semeru\nDirectory: TomEE-10.1/jre17/Semeru/ubuntu/microprofile\n\nTags: 10.1.4-jre17-Semeru-ubuntu-plume, 10.1.4-jre17-Semeru-plume, 10.1-jre17-Semeru-ubuntu-plume, 10.1-jre17-Semeru-plume, 10-jre17-Semeru-ubuntu-plume, 10-jre17-Semeru-plume, jre17-Semeru-ubuntu-plume, jre17-Semeru-plume\nDirectory: TomEE-10.1/jre17/Semeru/ubuntu/plume\n\nTags: 10.1.4-jre17-Semeru-ubuntu-plus, 10.1.4-jre17-Semeru-plus, 10.1-jre17-Semeru-ubuntu-plus, 10.1-jre17-Semeru-plus, 10-jre17-Semeru-ubuntu-plus, 10-jre17-Semeru-plus, jre17-Semeru-ubuntu-plus, jre17-Semeru-plus\nDirectory: TomEE-10.1/jre17/Semeru/ubuntu/plus\n\nTags: 10.1.4-jre17-Semeru-ubuntu-webprofile, 10.1.4-jre17-Semeru-webprofile, 10.1-jre17-Semeru-ubuntu-webprofile, 10.1-jre17-Semeru-webprofile, 10-jre17-Semeru-ubuntu-webprofile, 10-jre17-Semeru-webprofile, jre17-Semeru-ubuntu-webprofile, jre17-Semeru-webprofile\nDirectory: TomEE-10.1/jre17/Semeru/ubuntu/webprofile\n"
  },
  {
    "path": "library/traefik",
    "content": "Maintainers: Julien Salleyron <julien@traefik.io> (@juliens), Romain Tribotté <romain.tribotte@traefik.io> (@rtribotte), Michael Matur <michael@traefik.io> (@mmatur), Kevin Pollet <kevin.pollet@traefik.io> (@kevinpollet), Tom Moulard <tom.moulard@traefik.io> (@tommoulard)\n\nTags: v3.7.0-ea.2-windowsservercore-ltsc2025, 3.7.0-ea.2-windowsservercore-ltsc2025, langres-windowsservercore-ltsc2025\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: aaf0939d3e00b013fda3e52b191270491af90227\nDirectory: v3.7/windows/servercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: v3.7.0-ea.2-windowsservercore-ltsc2022, 3.7.0-ea.2-windowsservercore-ltsc2022, langres-windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: aaf0939d3e00b013fda3e52b191270491af90227\nDirectory: v3.7/windows/servercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: v3.7.0-ea.2-nanoserver-ltsc2025, 3.7.0-ea.2-nanoserver-ltsc2025, langres-nanoserver-ltsc2025\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: aaf0939d3e00b013fda3e52b191270491af90227\nDirectory: v3.7/windows/nanoserver-ltsc2025\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: v3.7.0-ea.2-nanoserver-ltsc2022, 3.7.0-ea.2-nanoserver-ltsc2022, langres-nanoserver-ltsc2022\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: aaf0939d3e00b013fda3e52b191270491af90227\nDirectory: v3.7/windows/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: v3.7.0-ea.2, 3.7.0-ea.2, langres\nArchitectures: amd64, arm32v6, arm64v8, ppc64le, riscv64, s390x\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: aaf0939d3e00b013fda3e52b191270491af90227\nDirectory: v3.7/alpine\n\nTags: v3.6.11-windowsservercore-ltsc2025, 3.6.11-windowsservercore-ltsc2025, v3.6-windowsservercore-ltsc2025, 3.6-windowsservercore-ltsc2025, v3-windowsservercore-ltsc2025, 3-windowsservercore-ltsc2025, ramequin-windowsservercore-ltsc2025, windowsservercore-ltsc2025\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: bbef3bce0753e0d86008d47785f707d79dddd970\nDirectory: v3.6/windows/servercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: v3.6.11-windowsservercore-ltsc2022, 3.6.11-windowsservercore-ltsc2022, v3.6-windowsservercore-ltsc2022, 3.6-windowsservercore-ltsc2022, v3-windowsservercore-ltsc2022, 3-windowsservercore-ltsc2022, ramequin-windowsservercore-ltsc2022, windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: bbef3bce0753e0d86008d47785f707d79dddd970\nDirectory: v3.6/windows/servercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: v3.6.11-nanoserver-ltsc2025, 3.6.11-nanoserver-ltsc2025, v3.6-nanoserver-ltsc2025, 3.6-nanoserver-ltsc2025, v3-nanoserver-ltsc2025, 3-nanoserver-ltsc2025, ramequin-nanoserver-ltsc2025, nanoserver-ltsc2025\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: bbef3bce0753e0d86008d47785f707d79dddd970\nDirectory: v3.6/windows/nanoserver-ltsc2025\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: v3.6.11-nanoserver-ltsc2022, 3.6.11-nanoserver-ltsc2022, v3.6-nanoserver-ltsc2022, 3.6-nanoserver-ltsc2022, v3-nanoserver-ltsc2022, 3-nanoserver-ltsc2022, ramequin-nanoserver-ltsc2022, nanoserver-ltsc2022\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: bbef3bce0753e0d86008d47785f707d79dddd970\nDirectory: v3.6/windows/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: v3.6.11, 3.6.11, v3.6, 3.6, v3, 3, ramequin, latest\nArchitectures: amd64, arm32v6, arm64v8, ppc64le, riscv64, s390x\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: bbef3bce0753e0d86008d47785f707d79dddd970\nDirectory: v3.6/alpine\n\nTags: v2.11.41-windowsservercore-ltsc2025, 2.11.41-windowsservercore-ltsc2025, v2.11-windowsservercore-ltsc2025, 2.11-windowsservercore-ltsc2025, v2-windowsservercore-ltsc2025, 2-windowsservercore-ltsc2025, mimolette-windowsservercore-ltsc2025\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: efa1d70ea03d69d6b40fb5163d55c946b166916d\nDirectory: v2.11/windows/servercore-ltsc2025\nConstraints: windowsservercore-ltsc2025\n\nTags: v2.11.41-windowsservercore-ltsc2022, 2.11.41-windowsservercore-ltsc2022, v2.11-windowsservercore-ltsc2022, 2.11-windowsservercore-ltsc2022, v2-windowsservercore-ltsc2022, 2-windowsservercore-ltsc2022, mimolette-windowsservercore-ltsc2022\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: efa1d70ea03d69d6b40fb5163d55c946b166916d\nDirectory: v2.11/windows/servercore-ltsc2022\nConstraints: windowsservercore-ltsc2022\n\nTags: v2.11.41-nanoserver-ltsc2025, 2.11.41-nanoserver-ltsc2025, v2.11-nanoserver-ltsc2025, 2.11-nanoserver-ltsc2025, v2-nanoserver-ltsc2025, 2-nanoserver-ltsc2025, mimolette-nanoserver-ltsc2025\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: efa1d70ea03d69d6b40fb5163d55c946b166916d\nDirectory: v2.11/windows/nanoserver-ltsc2025\nConstraints: nanoserver-ltsc2025, windowsservercore-ltsc2025\n\nTags: v2.11.41-nanoserver-ltsc2022, 2.11.41-nanoserver-ltsc2022, v2.11-nanoserver-ltsc2022, 2.11-nanoserver-ltsc2022, v2-nanoserver-ltsc2022, 2-nanoserver-ltsc2022, mimolette-nanoserver-ltsc2022\nArchitectures: windows-amd64\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: efa1d70ea03d69d6b40fb5163d55c946b166916d\nDirectory: v2.11/windows/nanoserver-ltsc2022\nConstraints: nanoserver-ltsc2022, windowsservercore-ltsc2022\n\nTags: v2.11.41, 2.11.41, v2.11, 2.11, v2, 2, mimolette\nArchitectures: amd64, arm32v6, arm64v8, ppc64le, riscv64, s390x\nGitRepo: https://github.com/traefik/traefik-library-image.git\nGitCommit: efa1d70ea03d69d6b40fb5163d55c946b166916d\nDirectory: v2.11/alpine\n"
  },
  {
    "path": "library/ubuntu",
    "content": "# see https://git.launchpad.net/cloud-images/+oci/ubuntu-base\n# see also https://wiki.ubuntu.com/Releases#Current\n\nMaintainers: Tomáš Virtus <tomas.virtus@canonical.com> (@woky), Cristóvão Cordeiro <cristovao.cordeiro@canonical.com> (@cjdcordeiro)\nGitRepo: https://git.launchpad.net/cloud-images/+oci/ubuntu-base\nGitCommit: fa42be9027eccb928a1f0f43d95ffd9a45d36737\nBuilder: oci-import\nFile: index.json\n\n# 20260217 (jammy)\nTags: 22.04, jammy-20260217, jammy\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nDirectory: oci\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-jammy-amd64-20260217-61285503\namd64-GitFetch: refs/tags/dist-jammy-amd64-20260217-61285503\namd64-GitCommit: 61285503d167b52e9bab9e4d0e45136ae05ae1c9\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-jammy-arm32v7-20260217-0c9f9f01\narm32v7-GitFetch: refs/tags/dist-jammy-arm32v7-20260217-0c9f9f01\narm32v7-GitCommit: 0c9f9f013e76c1ec378676aca21da5b4c9065a72\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-jammy-arm64v8-20260217-163f3354\narm64v8-GitFetch: refs/tags/dist-jammy-arm64v8-20260217-163f3354\narm64v8-GitCommit: 163f33541fc1607a83a7aa76bc17af005dda5bc4\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-jammy-ppc64le-20260217-61e2a396\nppc64le-GitFetch: refs/tags/dist-jammy-ppc64le-20260217-61e2a396\nppc64le-GitCommit: 61e2a3961c300ba76b71105d3bd59222faa17288\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-jammy-riscv64-20260217-5de25c74\nriscv64-GitFetch: refs/tags/dist-jammy-riscv64-20260217-5de25c74\nriscv64-GitCommit: 5de25c74a8e3f170e025025e840ed10a58905355\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-jammy-s390x-20260217-68c9c48a\ns390x-GitFetch: refs/tags/dist-jammy-s390x-20260217-68c9c48a\ns390x-GitCommit: 68c9c48a26b4ae22b14321f6182b45f8eda58727\n\n# 20260217 (noble)\nTags: 24.04, noble-20260217, noble, latest\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nDirectory: oci\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-noble-amd64-20260217-ccbfed8f\namd64-GitFetch: refs/tags/dist-noble-amd64-20260217-ccbfed8f\namd64-GitCommit: ccbfed8fb39874668fd747db8da268d2a03f3d50\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-noble-arm32v7-20260217-ffaff629\narm32v7-GitFetch: refs/tags/dist-noble-arm32v7-20260217-ffaff629\narm32v7-GitCommit: ffaff629c4c0348bab4209818380c580fd21523c\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-noble-arm64v8-20260217-09950811\narm64v8-GitFetch: refs/tags/dist-noble-arm64v8-20260217-09950811\narm64v8-GitCommit: 09950811f7ac9d9d3d14ce21440227503745933c\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-noble-ppc64le-20260217-5dff00f8\nppc64le-GitFetch: refs/tags/dist-noble-ppc64le-20260217-5dff00f8\nppc64le-GitCommit: 5dff00f8f8f0f1d48a24f1d4deac856509594688\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-noble-riscv64-20260217-c4bb2308\nriscv64-GitFetch: refs/tags/dist-noble-riscv64-20260217-c4bb2308\nriscv64-GitCommit: c4bb230846a518f3316bce0a3032b5d81f7f6b82\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-noble-s390x-20260217-2c4d688e\ns390x-GitFetch: refs/tags/dist-noble-s390x-20260217-2c4d688e\ns390x-GitCommit: 2c4d688ed1aba877cc61511b47dab6642a9de0bf\n\n# 20251217 (questing)\nTags: 25.10, questing-20251217, questing, rolling\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nDirectory: oci\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-questing-amd64-20251217-883bce4d\namd64-GitFetch: refs/tags/dist-questing-amd64-20251217-883bce4d\namd64-GitCommit: 883bce4d25b37c4c52e6d25bcd3f2961671ce1c7\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-questing-arm32v7-20251217-901b73b8\narm32v7-GitFetch: refs/tags/dist-questing-arm32v7-20251217-901b73b8\narm32v7-GitCommit: 901b73b813514f365fa4280269da65fd4224854a\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-questing-arm64v8-20251217-41a75589\narm64v8-GitFetch: refs/tags/dist-questing-arm64v8-20251217-41a75589\narm64v8-GitCommit: 41a75589d45706ed8b39be5fa7224bec8f3ee8c3\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-questing-ppc64le-20251217-46dbfc28\nppc64le-GitFetch: refs/tags/dist-questing-ppc64le-20251217-46dbfc28\nppc64le-GitCommit: 46dbfc28e23fb2a587c03af962388164a259c70d\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-questing-riscv64-20251217-b8e624be\nriscv64-GitFetch: refs/tags/dist-questing-riscv64-20251217-b8e624be\nriscv64-GitCommit: b8e624be1b921be8e3ec88a25bc4f3cd5f8c97ab\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-questing-s390x-20251217-6b4d506a\ns390x-GitFetch: refs/tags/dist-questing-s390x-20251217-6b4d506a\ns390x-GitCommit: 6b4d506a5d09422a94e8092c120977f38e20256d\n\n# 20260312 (resolute)\nTags: 26.04, resolute-20260312, resolute, devel\nArchitectures: amd64, arm32v7, arm64v8, ppc64le, riscv64, s390x\nDirectory: oci\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-resolute-amd64-20260312-c212211a\namd64-GitFetch: refs/tags/dist-resolute-amd64-20260312-c212211a\namd64-GitCommit: c212211acb8c2ecbdaa75e68bd65804f6f5bb953\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-resolute-arm32v7-20260312-48f15c70\narm32v7-GitFetch: refs/tags/dist-resolute-arm32v7-20260312-48f15c70\narm32v7-GitCommit: 48f15c70b9193eefb7d874b057fa7245a1b07cf9\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-resolute-arm64v8-20260312-3e3c6c8a\narm64v8-GitFetch: refs/tags/dist-resolute-arm64v8-20260312-3e3c6c8a\narm64v8-GitCommit: 3e3c6c8ac7ea97c39934b2bc415cfd0114e040d1\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-resolute-ppc64le-20260312-598c0cec\nppc64le-GitFetch: refs/tags/dist-resolute-ppc64le-20260312-598c0cec\nppc64le-GitCommit: 598c0cec5eb2ec2755b06ebdb1535b454622b8ec\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-resolute-riscv64-20260312-b39ef5e4\nriscv64-GitFetch: refs/tags/dist-resolute-riscv64-20260312-b39ef5e4\nriscv64-GitCommit: b39ef5e4232fb0a7885912881c802540e0f8a37e\n# https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/?h=dist-resolute-s390x-20260312-7042d2b5\ns390x-GitFetch: refs/tags/dist-resolute-s390x-20260312-7042d2b5\ns390x-GitCommit: 7042d2b55bf8a4b0e07f40b754333346e5a61f4a\n"
  },
  {
    "path": "library/unit",
    "content": "Maintainers: Unit Docker Maintainers <docker-maint@nginx.com> (@nginx),\n             Konstantin Pavlov (@thresheek),\n             Igor Ippolitov (@oxpa)\nGitRepo: https://github.com/nginx/unit.git\n"
  },
  {
    "path": "library/varnish",
    "content": "# this file was generated using https://github.com/varnish/docker-varnish/blob/9549601f65e81660417432a6963cdb9a41da3caf/populate.sh\nMaintainers: Guillaume Quintard <guillaume.quintard@gmail.com> (@gquintard)\nGitRepo: https://github.com/varnish/docker-varnish.git\n\nTags: fresh, 9.0.0, 9, 9.0, latest\nArchitectures: amd64, arm64v8\nDirectory: fresh/debian\nGitCommit: 9549601f65e81660417432a6963cdb9a41da3caf\nGitFetch: refs/heads/main\n"
  },
  {
    "path": "library/websphere-liberty",
    "content": "Maintainers: Gkerta Seferi <Gkerta.Seferi@ibm.com> (@gkertasef),\n             Leo Christy Jesuraj <leojc@ca.ibm.com> (@leochr),\n             Michal Broz <mbroz@us.ibm.com> (@mbroz2),\n             Wendy Raschke <wraschke@us.ibm.com> (@wraschke)\nGitRepo: https://github.com/WASdev/ci.docker.git\nGitFetch: refs/heads/main\nGitCommit: 02b09e4a968331f1083b1e1d5cb18e6aaf15c219\nArchitectures: amd64, ppc64le, s390x\n\nTags: kernel, kernel-java8-ibmjava\nDirectory: ga/latest/kernel\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: kernel-java11-openj9\nDirectory: ga/latest/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: kernel-java17-openj9\nDirectory: ga/latest/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: full, latest, full-java8-ibmjava\nDirectory: ga/latest/full\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: full-java11-openj9\nDirectory: ga/latest/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: full-java17-openj9\nDirectory: ga/latest/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.6-kernel-java8-ibmjava\nDirectory: ga/25.0.0.6/kernel\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 25.0.0.6-kernel-java11-openj9\nDirectory: ga/25.0.0.6/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.6-kernel-java17-openj9\nDirectory: ga/25.0.0.6/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.6-full-java8-ibmjava\nDirectory: ga/25.0.0.6/full\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 25.0.0.6-full-java11-openj9\nDirectory: ga/25.0.0.6/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.6-full-java17-openj9\nDirectory: ga/25.0.0.6/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.9-kernel-java8-ibmjava\nDirectory: ga/25.0.0.9/kernel\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 25.0.0.9-kernel-java11-openj9\nDirectory: ga/25.0.0.9/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.9-kernel-java17-openj9\nDirectory: ga/25.0.0.9/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.9-full-java8-ibmjava\nDirectory: ga/25.0.0.9/full\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 25.0.0.9-full-java11-openj9\nDirectory: ga/25.0.0.9/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.9-full-java17-openj9\nDirectory: ga/25.0.0.9/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.12-kernel-java8-ibmjava\nDirectory: ga/25.0.0.12/kernel\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 25.0.0.12-kernel-java11-openj9\nDirectory: ga/25.0.0.12/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.12-kernel-java17-openj9\nDirectory: ga/25.0.0.12/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 25.0.0.12-full-java8-ibmjava\nDirectory: ga/25.0.0.12/full\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 25.0.0.12-full-java11-openj9\nDirectory: ga/25.0.0.12/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 25.0.0.12-full-java17-openj9\nDirectory: ga/25.0.0.12/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 26.0.0.2-kernel-java8-ibmjava\nDirectory: ga/26.0.0.2/kernel\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 26.0.0.2-kernel-java11-openj9\nDirectory: ga/26.0.0.2/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 26.0.0.2-kernel-java17-openj9\nDirectory: ga/26.0.0.2/kernel\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n\nTags: 26.0.0.2-full-java8-ibmjava\nDirectory: ga/26.0.0.2/full\nFile: Dockerfile.ubuntu.ibmjava8\n\nTags: 26.0.0.2-full-java11-openj9\nDirectory: ga/26.0.0.2/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk11\n\nTags: 26.0.0.2-full-java17-openj9\nDirectory: ga/26.0.0.2/full\nArchitectures: amd64, arm64v8, ppc64le, s390x\nFile: Dockerfile.ubuntu.openjdk17\n"
  },
  {
    "path": "library/wordpress",
    "content": "# this file is generated via https://github.com/docker-library/wordpress/blob/c8b214cc10dae78c4a7c9e1d98ee104e0f027441/generate-stackbrew-library.sh\n\nMaintainers: Tianon Gravi <admwiggin@gmail.com> (@tianon),\n             Joseph Ferguson <yosifkit@gmail.com> (@yosifkit)\nGitRepo: https://github.com/docker-library/wordpress.git\n\nTags: 6.9.4-php8.2-apache, 6.9-php8.2-apache, 6-php8.2-apache, php8.2-apache, 6.9.4-php8.2, 6.9-php8.2, 6-php8.2, php8.2\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.2/apache\n\nTags: 6.9.4-php8.2-fpm, 6.9-php8.2-fpm, 6-php8.2-fpm, php8.2-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.2/fpm\n\nTags: 6.9.4-php8.2-fpm-alpine, 6.9-php8.2-fpm-alpine, 6-php8.2-fpm-alpine, php8.2-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.2/fpm-alpine\n\nTags: 6.9.4-apache, 6.9-apache, 6-apache, apache, 6.9.4, 6.9, 6, latest, 6.9.4-php8.3-apache, 6.9-php8.3-apache, 6-php8.3-apache, php8.3-apache, 6.9.4-php8.3, 6.9-php8.3, 6-php8.3, php8.3\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.3/apache\n\nTags: 6.9.4-fpm, 6.9-fpm, 6-fpm, fpm, 6.9.4-php8.3-fpm, 6.9-php8.3-fpm, 6-php8.3-fpm, php8.3-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.3/fpm\n\nTags: 6.9.4-fpm-alpine, 6.9-fpm-alpine, 6-fpm-alpine, fpm-alpine, 6.9.4-php8.3-fpm-alpine, 6.9-php8.3-fpm-alpine, 6-php8.3-fpm-alpine, php8.3-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.3/fpm-alpine\n\nTags: 6.9.4-php8.4-apache, 6.9-php8.4-apache, 6-php8.4-apache, php8.4-apache, 6.9.4-php8.4, 6.9-php8.4, 6-php8.4, php8.4\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.4/apache\n\nTags: 6.9.4-php8.4-fpm, 6.9-php8.4-fpm, 6-php8.4-fpm, php8.4-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.4/fpm\n\nTags: 6.9.4-php8.4-fpm-alpine, 6.9-php8.4-fpm-alpine, 6-php8.4-fpm-alpine, php8.4-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.4/fpm-alpine\n\nTags: 6.9.4-php8.5-apache, 6.9-php8.5-apache, 6-php8.5-apache, php8.5-apache, 6.9.4-php8.5, 6.9-php8.5, 6-php8.5, php8.5\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.5/apache\n\nTags: 6.9.4-php8.5-fpm, 6.9-php8.5-fpm, 6-php8.5-fpm, php8.5-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.5/fpm\n\nTags: 6.9.4-php8.5-fpm-alpine, 6.9-php8.5-fpm-alpine, 6-php8.5-fpm-alpine, php8.5-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 62130367dd6835d12c58b79295732b08ddf78cac\nDirectory: latest/php8.5/fpm-alpine\n\nTags: cli-2.12.0-php8.2, cli-2.12-php8.2, cli-2-php8.2, cli-php8.2\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b962e97ba0d6cfd8784a521fb9d05fc89aa180a9\nDirectory: cli/php8.2/alpine\n\nTags: cli-2.12.0, cli-2.12, cli-2, cli, cli-2.12.0-php8.3, cli-2.12-php8.3, cli-2-php8.3, cli-php8.3\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b962e97ba0d6cfd8784a521fb9d05fc89aa180a9\nDirectory: cli/php8.3/alpine\n\nTags: cli-2.12.0-php8.4, cli-2.12-php8.4, cli-2-php8.4, cli-php8.4\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b962e97ba0d6cfd8784a521fb9d05fc89aa180a9\nDirectory: cli/php8.4/alpine\n\nTags: cli-2.12.0-php8.5, cli-2.12-php8.5, cli-2-php8.5, cli-php8.5\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: b962e97ba0d6cfd8784a521fb9d05fc89aa180a9\nDirectory: cli/php8.5/alpine\n\nTags: beta-7.0-beta5-php8.2-apache, beta-7.0-php8.2-apache, beta-7-php8.2-apache, beta-php8.2-apache, beta-7.0-beta5-php8.2, beta-7.0-php8.2, beta-7-php8.2, beta-php8.2\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.2/apache\n\nTags: beta-7.0-beta5-php8.2-fpm, beta-7.0-php8.2-fpm, beta-7-php8.2-fpm, beta-php8.2-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.2/fpm\n\nTags: beta-7.0-beta5-php8.2-fpm-alpine, beta-7.0-php8.2-fpm-alpine, beta-7-php8.2-fpm-alpine, beta-php8.2-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.2/fpm-alpine\n\nTags: beta-7.0-beta5-apache, beta-7.0-apache, beta-7-apache, beta-apache, beta-7.0-beta5, beta-7.0, beta-7, beta, beta-7.0-beta5-php8.3-apache, beta-7.0-php8.3-apache, beta-7-php8.3-apache, beta-php8.3-apache, beta-7.0-beta5-php8.3, beta-7.0-php8.3, beta-7-php8.3, beta-php8.3\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.3/apache\n\nTags: beta-7.0-beta5-fpm, beta-7.0-fpm, beta-7-fpm, beta-fpm, beta-7.0-beta5-php8.3-fpm, beta-7.0-php8.3-fpm, beta-7-php8.3-fpm, beta-php8.3-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.3/fpm\n\nTags: beta-7.0-beta5-fpm-alpine, beta-7.0-fpm-alpine, beta-7-fpm-alpine, beta-fpm-alpine, beta-7.0-beta5-php8.3-fpm-alpine, beta-7.0-php8.3-fpm-alpine, beta-7-php8.3-fpm-alpine, beta-php8.3-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.3/fpm-alpine\n\nTags: beta-7.0-beta5-php8.4-apache, beta-7.0-php8.4-apache, beta-7-php8.4-apache, beta-php8.4-apache, beta-7.0-beta5-php8.4, beta-7.0-php8.4, beta-7-php8.4, beta-php8.4\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.4/apache\n\nTags: beta-7.0-beta5-php8.4-fpm, beta-7.0-php8.4-fpm, beta-7-php8.4-fpm, beta-php8.4-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.4/fpm\n\nTags: beta-7.0-beta5-php8.4-fpm-alpine, beta-7.0-php8.4-fpm-alpine, beta-7-php8.4-fpm-alpine, beta-php8.4-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.4/fpm-alpine\n\nTags: beta-7.0-beta5-php8.5-apache, beta-7.0-php8.5-apache, beta-7-php8.5-apache, beta-php8.5-apache, beta-7.0-beta5-php8.5, beta-7.0-php8.5, beta-7-php8.5, beta-php8.5\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.5/apache\n\nTags: beta-7.0-beta5-php8.5-fpm, beta-7.0-php8.5-fpm, beta-7-php8.5-fpm, beta-php8.5-fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.5/fpm\n\nTags: beta-7.0-beta5-php8.5-fpm-alpine, beta-7.0-php8.5-fpm-alpine, beta-7-php8.5-fpm-alpine, beta-php8.5-fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 83a34e0d8dfda58a9f499dde5618ebe98ac453ce\nDirectory: beta/php8.5/fpm-alpine\n"
  },
  {
    "path": "library/xwiki",
    "content": "Maintainers: XWiki Core Dev Team <committers@xwiki.org> (@xwiki)\nGitRepo: https://github.com/xwiki-contrib/docker-xwiki.git\n\n# Latest stable\nTags: 18, 18.1, 18.1.0, 18-mysql-tomcat, 18.1-mysql-tomcat, 18.1.0-mysql-tomcat, mysql-tomcat, stable-mysql-tomcat, stable-mysql, stable, latest\nArchitectures: amd64, arm64v8\nDirectory: 18/mysql-tomcat\nGitCommit: eda16eb7a63977aa1eb93b0a2908513973ca8e2e\n\nTags: 18-postgres-tomcat, 18.1-postgres-tomcat, 18.1.0-postgres-tomcat, postgres-tomcat, stable-postgres-tomcat, stable-postgres\nArchitectures: amd64, arm64v8\nDirectory: 18/postgres-tomcat\nGitCommit: eda16eb7a63977aa1eb93b0a2908513973ca8e2e\n\nTags: 18-mariadb-tomcat, 18.1-mariadb-tomcat, 18.1.0-mariadb-tomcat, mariadb-tomcat, stable-mariadb-tomcat, stable-mariadb\nArchitectures: amd64, arm64v8\nDirectory: 18/mariadb-tomcat\nGitCommit: eda16eb7a63977aa1eb93b0a2908513973ca8e2e\n\n# LTS\nTags: 17, 17.10, 17.10.4, 17-mysql-tomcat, 17.10-mysql-tomcat, 17.10.4-mysql-tomcat, lts-mysql-tomcat, lts-mysql, lts\nArchitectures: amd64, arm64v8\nDirectory: 17/mysql-tomcat\nGitCommit: e69dcfd5091f3ec20418cbc4a9a05edb4426145d\n\nTags: 17-postgres-tomcat, 17.10-postgres-tomcat, 17.10.4-postgres-tomcat, lts-postgres-tomcat, lts-postgres\nArchitectures: amd64, arm64v8\nDirectory: 17/postgres-tomcat\nGitCommit: e69dcfd5091f3ec20418cbc4a9a05edb4426145d\n\nTags: 17-mariadb-tomcat, 17.10-mariadb-tomcat, 17.10.4-mariadb-tomcat, lts-mariadb-tomcat, lts-mariadb\nArchitectures: amd64, arm64v8\nDirectory: 17/mariadb-tomcat\nGitCommit: e69dcfd5091f3ec20418cbc4a9a05edb4426145d\n\n# Intermediate LTS\nTags: 17.4, 17.4.10, 17.4-mysql-tomcat, 17.4.10-mysql-tomcat\nArchitectures: amd64, arm64v8\nDirectory: 17.4/mysql-tomcat\nGitCommit: e5ffa6f9ff2a3d9241053e179c976b5e098957a2\n\nTags: 17.4-postgres-tomcat, 17.4.10-postgres-tomcat\nArchitectures: amd64, arm64v8\nDirectory: 17.4/postgres-tomcat\nGitCommit: e5ffa6f9ff2a3d9241053e179c976b5e098957a2\n\nTags: 17.4-mariadb-tomcat, 17.4.10-mariadb-tomcat\nArchitectures: amd64, arm64v8\nDirectory: 17.4/mariadb-tomcat\nGitCommit: e5ffa6f9ff2a3d9241053e179c976b5e098957a2\n\n# Previous LTS\nTags: 16, 16.10, 16.10.17, 16-mysql-tomcat, 16.10-mysql-tomcat, 16.10.17-mysql-tomcat\nArchitectures: amd64, arm64v8\nDirectory: 16/mysql-tomcat\nGitCommit: 8ce19d8b799ac7b59c2c50da5f10574b0375c762\n\nTags: 16-postgres-tomcat, 16.10-postgres-tomcat, 16.10.17-postgres-tomcat\nArchitectures: amd64, arm64v8\nDirectory: 16/postgres-tomcat\nGitCommit: 8ce19d8b799ac7b59c2c50da5f10574b0375c762\n\nTags: 16-mariadb-tomcat, 16.10-mariadb-tomcat, 16.10.17-mariadb-tomcat\nArchitectures: amd64, arm64v8\nDirectory: 16/mariadb-tomcat\nGitCommit: 8ce19d8b799ac7b59c2c50da5f10574b0375c762\n"
  },
  {
    "path": "library/yourls",
    "content": "# this file is generated via https://github.com/YOURLS/containers/blob/1839562c06c847bc7931bd8b9387881b3d52841b/bin/generate-stackbrew-library.sh\n\nMaintainers: YOURLS <yourls@yourls.org> (@YOURLS),\n             Léo Colombaro <git@colombaro.fr> (@LeoColomb)\nGitRepo: https://github.com/YOURLS/containers.git\nGitFetch: refs/heads/dist\n\nTags: 1.10.3-apache, 1.10-apache, 1-apache, apache, 1.10.3, 1.10, 1, latest\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1839562c06c847bc7931bd8b9387881b3d52841b\nDirectory: apache\n\nTags: 1.10.3-fpm, 1.10-fpm, 1-fpm, fpm\nArchitectures: amd64, arm32v5, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1839562c06c847bc7931bd8b9387881b3d52841b\nDirectory: fpm\n\nTags: 1.10.3-fpm-alpine, 1.10-fpm-alpine, 1-fpm-alpine, fpm-alpine\nArchitectures: amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, riscv64, s390x\nGitCommit: 1839562c06c847bc7931bd8b9387881b3d52841b\nDirectory: fpm-alpine\n"
  },
  {
    "path": "library/znc",
    "content": "Maintainers: Alexey Sokolov <alexey+znc@asokolov.org> (@DarthGandalf)\nGitRepo: https://github.com/znc/znc-docker.git\nGitCommit: 079544b1c9bfefeed964c7b35b49222ca05cb018\nArchitectures: amd64, arm32v6, arm64v8\n\nTags: 1.10.1, 1.10, latest\nDirectory: full\n\nTags: 1.10.1-slim, 1.10-slim, slim\nDirectory: slim\n"
  },
  {
    "path": "library/zookeeper",
    "content": "Maintainers: Elisey Zanko <elisey.zanko@gmail.com> (@31z4)\nGitRepo: https://github.com/31z4/zookeeper-docker.git\nArchitectures: amd64, arm64v8, s390x, ppc64le\n\nTags: 3.8.6, 3.8, 3.8.6-jre-17, 3.8-jre-17\nGitCommit: 52a83649bc332b3324e0f0ecd96a1c88b2793022\nDirectory: 3.8.6\n\nTags: 3.9.5, 3.9, 3.9.5-jre-17, 3.9-jre-17, latest\nGitCommit: 3f6430f695fceae0858824d716654c7e2b38bad3\nDirectory: 3.9.5\n"
  },
  {
    "path": "naughty-commits.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nfileSizeThresholdMB='2'\n\nexport BASHBREW_ARCH=\n\ngitCache=\"$(bashbrew cat --format '{{ gitCache }}' <(echo 'Maintainers: empty hack (@example)'))\"\n_git() {\n\tgit -C \"$gitCache\" \"$@\"\n}\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--all'\nfi\n\nimgs=\"$(bashbrew list --repos \"$@\" | sort -u)\"\nfor img in $imgs; do\n\tbashbrew fetch \"$img\" # force `git fetch`\n\tcommits=\"$(\n\t\tbashbrew cat --format '\n\t\t\t{{- range $e := .Entries -}}\n\t\t\t\t{{- range $a := .Architectures -}}\n\t\t\t\t\t{\n\t\t\t\t\t\t{{- json \"GitRepo\" }}:{{ json ($e.ArchGitRepo $a) -}},\n\t\t\t\t\t\t{{- json \"GitFetch\" }}:{{ json ($e.ArchGitFetch $a) -}},\n\t\t\t\t\t\t{{- json \"GitCommit\" }}:{{ json ($e.ArchGitCommit $a) -}}\n\t\t\t\t\t}\n\t\t\t\t\t{{- \"\\n\" -}}\n\t\t\t\t{{- end -}}\n\t\t\t{{- end -}}\n\t\t' \"$img\" | jq -s 'unique'\n\t)\"\n\n\tdeclare -A naughtyCommits=() naughtyTopCommits=() seenCommits=()\n\tlength=\"$(jq -r 'length' <<<\"$commits\")\"\n\tfor (( i = 0; i < length; i++ )); do\n\t\ttopCommit=\"$(jq -r \".[$i].GitCommit\" <<<\"$commits\")\"\n\t\tgitRepo=\"$(jq -r \".[$i].GitRepo\" <<<\"$commits\")\"\n\t\tgitFetch=\"$(jq -r \".[$i].GitFetch\" <<<\"$commits\")\"\n\n\t\tif ! _git fetch --quiet \"$gitRepo\" \"$gitFetch:\" ; then\n\t\t\tnaughtyCommits[$topCommit]=\"unable to to fetch specified GitFetch: $gitFetch\"\n\t\t\tnaughtyTopCommits[$topCommit]=\"$topCommit\"\n\t\telif ! _git merge-base --is-ancestor \"$topCommit\" 'FETCH_HEAD'; then\n\t\t\t# check that the commit is in the GitFetch branch specified\n\t\t\tnaughtyCommits[$topCommit]=\"is not in the specified ref GitFetch: $gitFetch\"\n\t\t\tnaughtyTopCommits[$topCommit]=\"$topCommit\"\n\t\tfi\n\n\t\tIFS=$'\\n'\n\t\tpotentiallyNaughtyGlobs=( '**.tar**' )\n\t\tpotentiallyNaughtyCommits=( $(_git log --diff-filter=DMT --format='format:%H' \"$topCommit\" -- \"${potentiallyNaughtyGlobs[@]}\") )\n\t\tunset IFS\n\n\t\t# bash 4.3 sucks (https://stackoverflow.com/a/7577209/433558)\n\t\t[ \"${#potentiallyNaughtyCommits[@]}\" -gt 0 ] || continue\n\n\t\tfor commit in \"${potentiallyNaughtyCommits[@]}\"; do\n\t\t\t[ -z \"${seenCommits[$commit]:-}\" ] || break\n\t\t\tseenCommits[$commit]=1\n\n\t\t\tIFS=$'\\n'\n\t\t\tbinaryFiles=( $(\n\t\t\t\t_git diff-tree --no-commit-id -r --numstat --diff-filter=DMT \"$commit\" -- \"${potentiallyNaughtyGlobs[@]}\" \\\n\t\t\t\t\t| grep '^-' \\\n\t\t\t\t\t| cut -d$'\\t' -f3- \\\n\t\t\t\t\t|| :\n\t\t\t) )\n\t\t\tunset IFS\n\n\t\t\t# bash 4.3 sucks (https://stackoverflow.com/a/7577209/433558)\n\t\t\t[ \"${#binaryFiles[@]}\" -gt 0 ] || continue\n\n\t\t\tnaughtyReasons=()\n\t\t\tfor file in \"${binaryFiles[@]}\"; do\n\t\t\t\tfileSize=\"$(_git ls-tree -r --long \"$commit\" -- \"$file\" | awk '{ print $4 }')\"\n\t\t\t\tfileSizeMB=\"$(( fileSize / 1024 / 1024 ))\"\n\t\t\t\tif [ \"$fileSizeMB\" -gt \"$fileSizeThresholdMB\" ]; then\n\t\t\t\t\tnaughtyReasons+=( \"modified binary file (larger than ${fileSizeThresholdMB}MB): $file (${fileSizeMB}MB)\" )\n\t\t\t\tfi\n\t\t\tdone\n\n\t\t\tif [ \"${#naughtyReasons[@]}\" -gt 0 ]; then\n\t\t\t\t: \"${naughtyCommits[$commit]:=}\"\n\t\t\t\tif [ -n \"${naughtyCommits[$commit]}\" ]; then\n\t\t\t\t\tnaughtyCommits[$commit]+=$'\\n'\n\t\t\t\tfi\n\t\t\t\tIFS=$'\\n'\n\t\t\t\tnaughtyCommits[$commit]+=\"${naughtyReasons[*]}\"\n\t\t\t\tunset IFS\n\t\t\t\tnaughtyTopCommits[$commit]=\"$topCommit\"\n\t\t\tfi\n\t\tdone\n\tdone\n\n\tif [ \"${#naughtyCommits[@]}\" -gt 0 ]; then\n\t\techo \" - $img:\"\n\t\tfor naughtyCommit in \"${!naughtyCommits[@]}\"; do\n\t\t\tnaughtyReasons=\"${naughtyCommits[$naughtyCommit]}\"\n\t\t\tnaughtyTopCommit=\"${naughtyTopCommits[$naughtyCommit]}\"\n\t\t\tif [ \"$naughtyTopCommit\" != \"$naughtyCommit\" ]; then\n\t\t\t\t#commitsBetween=\"$(_git rev-list --count \"$naughtyCommit...$naughtyTopCommit\")\"\n\t\t\t\tnaughtyCommit+=\" (in history of $naughtyTopCommit)\"\n\t\t\tfi\n\t\t\techo \"   - commit $naughtyCommit:\"\n\t\t\tsed -e 's/^/     - /' <<<\"$naughtyReasons\"\n\t\tdone\n\t\techo\n\tfi\ndone\n"
  },
  {
    "path": "naughty-constraints.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nexport BASHBREW_ARCH=\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--all'\nfi\n\n_windows_constraint() {\n\tlocal from=\"$1\"; shift\n\tlocal repo=\"${from%:*}\"\n\tlocal tag=\"${from#$repo:}\"\n\n\tlocal constraint\n\tcase \"$repo\" in\n\t\tmcr.microsoft.com/windows/nanoserver | microsoft/nanoserver) constraint='nanoserver' ;;\n\t\tmcr.microsoft.com/windows/servercore | microsoft/windowsservercore) constraint='windowsservercore' ;;\n\t\t*) echo >&2 \"error: unknown Windows image: $from\"; exit 1 ;;\n\tesac\n\n\tif [ \"$tag\" != 'latest' ]; then\n\t\tconstraint+=\"-$tag\"\n\tfi\n\n\techo \"$constraint\"\n}\n\n_expected_constraints() {\n\tlocal from=\"$1\"; shift\n\n\tlocal fromConstraints\n\tif fromConstraints=\"$(bashbrew cat --format '{{ .TagEntry.Constraints | join \"\\n\" }}' \"$from\" 2>/dev/null)\" && [ -n \"$fromConstraints\" ]; then\n\t\techo \"$fromConstraints\"\n\t\treturn\n\tfi\n\n\tcase \"$from\" in\n\t\t*microsoft*) _windows_constraint \"$from\" ;;\n\tesac\n\n\treturn\n}\n\n_arches() {\n\tbashbrew cat --format '\n\t\t{{- range .TagEntries -}}\n\t\t\t{{- .Architectures | join \"\\n\" -}}\n\t\t\t{{- \"\\n\" -}}\n\t\t{{- end -}}\n\t' \"$@\" | sort -u\n}\n\n_froms() {\n\tbashbrew cat --format '\n\t\t{{- range .TagEntries -}}\n\t\t\t{{- $.DockerFroms . | join \"\\n\" -}}\n\t\t\t{{- \"\\n\" -}}\n\t\t{{- end -}}\n\t' \"$@\" | sort -u\n}\n\ndeclare -A naughtyFromsArches=(\n\t#[img:tag=from:tag]='arch arch ...'\n)\nnaughtyFroms=()\ndeclare -A allNaughty=(\n\t#[img:tag]=1\n)\n\ntags=\"$(bashbrew --namespace '' list --uniq \"$@\" | sort -u)\"\nfor img in $tags; do\n\tarches=\"$(_arches \"$img\")\"\n\tconstraints=\"$(bashbrew cat --format '{{ .TagEntry.Constraints | join \"\\n\" }}' \"$img\" | sort -u)\"\n\tdeclare -A imgMissing=()\n\tdeclare -A imgExtra=()\n\tfor BASHBREW_ARCH in $arches; do\n\t\texport BASHBREW_ARCH\n\n\t\tfroms=\"$(_froms \"$img\")\"\n\t\t[ -n \"$froms\" ] # rough sanity check\n\n\t\tallExpected=\n\t\tfor from in $froms; do\n\t\t\texpected=\"$(_expected_constraints \"$from\")\"\n\t\t\tallExpected=\"$(sort -u <<<\"$allExpected\"$'\\n'\"$expected\")\"\n\t\tdone\n\t\tmissing=\"$(comm -13 <(echo \"$constraints\") <(echo \"$allExpected\"))\"\n\t\tif [ -n \"$missing\" ]; then\n\t\t\timgMissing[$from]+=$'\\n'\"$missing\"\n\t\tfi\n\t\textra=\"$(comm -23 <(echo \"$constraints\") <(echo \"$allExpected\"))\"\n\t\tif [ -n \"$extra\" ]; then\n\t\t\timgExtra[$from]+=$'\\n'\"$extra\"\n\t\tfi\n\tdone\n\tif [ \"${#imgMissing[@]}\" -gt 0 ]; then\n\t\tfor from in $(IFS=$'\\n'; sort -u <<<\"${!imgMissing[*]}\"); do\n\t\t\tmissing=\"${imgMissing[$from]}\"\n\t\t\tmissing=\"$(sed '/^$/d' <<<\"$missing\" | sort -u)\"\n\t\t\techo \" - $img -- missing constraints (FROM $from):\"\n\t\t\tsed 's/^/   - /' <<<\"$missing\"\n\t\tdone\n\tfi\n\tif [ \"${#imgExtra[@]}\" -gt 0 ]; then\n\t\tfor from in $(IFS=$'\\n'; sort -u <<<\"${!imgExtra[*]}\"); do\n\t\t\textra=\"${imgExtra[$from]}\"\n\t\t\textra=\"$(sed '/^$/d' <<<\"$extra\" | sort -u)\"\n\t\t\techo \" - $img -- extra constraints (FROM $from):\"\n\t\t\tsed 's/^/   - /' <<<\"$extra\"\n\t\tdone\n\tfi\ndone\n"
  },
  {
    "path": "naughty-from.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nexport BASHBREW_ARCH= BASHBREW_NAMESPACE=\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--all'\nfi\n\nexternalPinsDir=\"$(dirname \"$BASH_SOURCE\")/.external-pins\"\ndeclare -A externalPinsArchesCache=(\n\t#[img:tag]='[\"arch\",\"arch\",...]' # (json array of strings)\n)\n\n# custom error message (for why Ubuntu 25.10+ does not support riscv64)\nmessage=''\n\n_is_naughty() {\n\tlocal from=\"$1\"; shift\n\n\t# DOI cannot support riscv64 on Ubuntu 25.10+ since it uses RVA23 and hardware does not exist yet\n\t# > For Ubuntu 25.10 release we plan to raise the required RISC-V ISA profile family to RVA23\n\t# https://bugs.launchpad.net/ubuntu/+source/ubuntu-release-upgrader/+bug/2111715\n\tif [ \"$BASHBREW_ARCH\" = 'riscv64' ] && [[ \"$from\" == 'ubuntu:'* ]]; then\n\t\tnormalized=\"$(bashbrew list --uniq \"$from\")\" # catch when latest changes\n\t\tcase \"$normalized\" in\n\t\t\tubuntu:22.04 | ubuntu:24.04 | ubuntu:25.04 | ubuntu:jammy* | ubuntu:noble* | ubuntu:plucky*)\n\t\t\t\t# these are fine, let the rest of the tests try them\n\t\t\t\t;;\n\t\t\t*)\n\t\t\t\t# ubuntu 25.10+, uses riscv64 with RVA23\n\t\t\t\t# unsupported in DOI until hardware is acquired\n\t\t\t\tmessage='DOI cannot support riscv64 on Ubuntu 25.10+ since it uses RVA23 and hardware does not exist yet'\n\t\t\t\treturn 0\n\t\t\t\t;;\n\t\tesac\n\tfi\n\n\tcase \"$from\" in\n\t\t# \"scratch\" isn't a real image and is always permissible (on non-Windows)\n\t\tscratch)\n\t\t\tcase \"$BASHBREW_ARCH\" in\n\t\t\t\twindows-*) return 0 ;; # can't use \"FROM scratch\" on Windows\n\t\t\t\t*)         return 1 ;; # can use \"FROM scratch\" everywhere else\n\t\t\tesac\n\t\t\t;;\n\n\t\t*/*)\n\t\t\t# must be external, let's check our pins for acceptability\n\t\t\tlocal externalPinFile=\"$externalPinsDir/${from/:/___}\" # see \".external-pins/list.sh\"\n\t\t\tif [ -s \"$externalPinFile\" ]; then\n\t\t\t\tlocal digest\n\t\t\t\tdigest=\"$(< \"$externalPinFile\")\"\n\t\t\t\tfrom+=\"@$digest\"\n\t\t\telse\n\t\t\t\t# not pinned, must not be acceptable\n\t\t\t\treturn 0\n\t\t\tfi\n\t\t\t;;\n\tesac\n\n\tcase \"$from\" in\n\t\t*/*@sha256:*)\n\t\t\tif [ -z \"${externalPinsArchesCache[\"$from\"]:-}\" ]; then\n\t\t\t\tlocal remoteArches\n\t\t\t\tif remoteArches=\"$(bashbrew remote arches --json \"$from\" | jq -c '.arches | keys')\"; then\n\t\t\t\t\texternalPinsArchesCache[\"$from\"]=\"$remoteArches\"\n\t\t\t\telse\n\t\t\t\t\techo >&2 \"warning: failed to query supported architectures of '$from'\"\n\t\t\t\t\texternalPinsArchesCache[\"$from\"]='[]'\n\t\t\t\tfi\n\t\t\tfi\n\t\t\tif jq <<<\"${externalPinsArchesCache[\"$from\"]}\" -e 'index(env.BASHBREW_ARCH)' > /dev/null; then\n\t\t\t\t# hooray, a supported architecture!\n\t\t\t\treturn 1\n\t\t\tfi\n\t\t\t;;\n\n\t\t*)\n\t\t\t# must be some other official image AND support our current architecture\n\t\t\tlocal archSupported\n\t\t\tif archSupported=\"$(bashbrew cat --format '{{ .TagEntry.HasArchitecture arch | ternary arch \"\" }}' \"$from\")\" && [ -n \"$archSupported\" ]; then\n\t\t\t\treturn 1\n\t\t\tfi\n\t\t\t;;\n\tesac\n\n\treturn 0\n}\n\n_arches() {\n\tbashbrew cat --format '\n\t\t{{- range .TagEntries -}}\n\t\t\t{{- .Architectures | join \"\\n\" -}}\n\t\t\t{{- \"\\n\" -}}\n\t\t{{- end -}}\n\t' \"$@\" | sort -u\n}\n\n_froms() {\n\tbashbrew cat --format '\n\t\t{{- range .TagEntries -}}\n\t\t\t{{- $.DockerFroms . | join \"\\n\" -}}\n\t\t\t{{- \"\\n\" -}}\n\t\t{{- end -}}\n\t' \"$@\" | sort -u\n}\n\ndeclare -A naughtyFromsArches=(\n\t#[img:tag=from:tag]='arch arch ...'\n)\nnaughtyFroms=()\ndeclare -A allNaughty=(\n\t#[img:tag]=1\n)\n\ntags=\"$(bashbrew --namespace '' list --uniq \"$@\" | sort -u)\"\nfor img in $tags; do\n\tarches=\"$(_arches \"$img\")\"\n\thasNice= # do we have _any_ arches that aren't naughty? (so we can make the message better if not)\n\tfor BASHBREW_ARCH in $arches; do\n\t\texport BASHBREW_ARCH\n\n\t\tfroms=\"$(_froms \"$img\")\"\n\t\t[ -n \"$froms\" ] # rough sanity check\n\n\t\tfor from in $froms; do\n\t\t\tif _is_naughty \"$from\"; then\n\t\t\t\tif [ -z \"${naughtyFromsArches[\"$img=$from\"]:-}\" ]; then\n\t\t\t\t\tnaughtyFroms+=( \"$img=$from\" )\n\t\t\t\telse\n\t\t\t\t\tnaughtyFromsArches[\"$img=$from\"]+=', '\n\t\t\t\tfi\n\t\t\t\tnaughtyFromsArches[\"$img=$from\"]+=\"$BASHBREW_ARCH\"\n\t\t\telse\n\t\t\t\thasNice=1\n\t\t\tfi\n\t\tdone\n\tdone\n\n\tif [ -z \"$hasNice\" ]; then\n\t\tallNaughty[\"$img\"]=1\n\tfi\ndone\n\nfor naughtyFrom in \"${naughtyFroms[@]:-}\"; do\n\t[ -n \"$naughtyFrom\" ] || continue # https://mywiki.wooledge.org/BashFAQ/112#BashFAQ.2F112.line-8 (empty array + \"set -u\" + bash 4.3 == sad day)\n\timg=\"${naughtyFrom%%=*}\"\n\tfrom=\"${naughtyFrom#$img=}\"\n\tif [ -n \"${allNaughty[\"$img\"]:-}\" ]; then\n\t\techo \" - $img (FROM $from) -- completely unsupported base!\"\n\telse\n\t\tarches=\"${naughtyFromsArches[$naughtyFrom]}\"\n\t\techo \" - $img (FROM $from) [$arches]\"\n\tfi\ndone\n\nif [ -n \"$message\" ]; then\n\techo \" - $message\"\nfi\n"
  },
  {
    "path": "naughty-sharedtags.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nif [ \"$#\" -eq 0 ]; then\n\tset -- '--all'\nfi\n\nbashbrew cat --format '\n\t{{- range $e := .Entries -}}\n\t\t{{- range $t := .SharedTags -}}\n\t\t\t{{- \"{\" -}}\n\t\t\t\t\"sharedTag\": {{ join \":\" $.RepoName $t | json }},\n\t\t\t\t\"tag\": {{ join \":\" $.RepoName ($e.Tags | first) | json }},\n\t\t\t\t\"arches\": {{ $e.Architectures | json }}\n\t\t\t{{- \"}\\n\" -}}\n\t\t{{- end -}}\n\t{{- end -}}\n' \"$@\" | jq -rn '\n\t# collect map of \"shared tag -> all architectures\" (combining shared tags back together, respecting/keeping duplicates, since that is what this is testing for)\n\treduce inputs as $in ({}; .[$in.sharedTag] |= (. // {} | .arches += $in.arches | .tags += [$in.tag]))\n\t# convert that into a map of \"shared tags -> same architecture list\" (just to shrink the problem set and make it easier to look at/think about)\n\t| reduce to_entries[] as $in ([];\n\t\t(path(first(.[] | select(.value.arches == $in.value.arches))) // [length]) as $i\n\t\t| .[$i[0]] |= (\n\t\t\t.key |= if . then \"\\(.), \\($in.key)\" else $in.key end\n\t\t\t| .value //= $in.value\n\t\t)\n\t)\n\t| map(\n\t\t# filter down to just entries with duplicates (ignoring Windows duplicates, since duplicating them is the primary use case of SharedTags in the first place)\n\t\t.value.arches |= (\n\t\t\t# TODO we *should* try to further verify that there is only one copy of each underlying Windows version here (not 2x \"ltsc2022\" for example), but that is a much more difficult query to automate\n\t\t\t. - [\"windows-amd64\"]\n\t\t\t# trim the list down to just the duplicates (so the error is more obvious)\n\t\t\t| group_by(.)\n\t\t\t| map(select(length > 1))\n\t\t\t| flatten\n\t\t)\n\t\t| select(.value.arches | length > 0)\n\t\t| \" - \\(.key): (duplicate architectures in SharedTags; \\(.value.tags | join(\", \")))\\([ \"\", .value.arches[] ] | join(\"\\n   - \"))\"\n\t)\n\t| join(\"\\n\\n\")\n'\n"
  },
  {
    "path": "pr-urls.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n#\n# usage:\n#   $ ./pr-urls.sh PR-NUMBER\n#   $ ./pr-urls.sh PR-NUMBER IMAGE1 IMAGE2:TAG1 IMAGE3:TAG2\n#\n#   $ ./pr-urls.sh 12072\n#   $ ./pr-urls.sh 12072 hello-world:linux\n#   $ ./pr-urls.sh 12072 | xargs -rt bashbrew build\n#   $ ./pr-urls.sh 12072 | xargs -rt bashbrew list --uniq\n#   $ ./pr-urls.sh 12072 | xargs -rt bashbrew list --uniq | xargs -rt ./test/run.sh\n#\n# (rough replacement for the old \"test-pr.sh\" script and its associated complexity)\n#\n\npr=\"$1\"\nshift\n\npatch=\"$(wget -qO- \"https://github.com/docker-library/official-images/pull/$pr.patch\")\"\n\ncommit=\"$(grep <<<\"$patch\" -oE '^From [0-9a-f]+ ' | tail -1 | cut -d' ' -f2)\"\n\nif [ \"$#\" -eq 0 ]; then\n\tfiles=\"$(grep <<<\"$patch\" -oE '^[+]{3} b/library/.+' | cut -d/ -f3 | sort -u)\"\n\tset -- $files\nfi\n\nfor file; do\n\techo \"https://github.com/docker-library/official-images/raw/$commit/library/$file\"\ndone\n"
  },
  {
    "path": "test/README.md",
    "content": "# Official Images Test Suite\n\n## What tests belong here?\n\nWe have a lot of historical tests that violate this line, but our goal is to *only* maintain tests in this repository which apply to more than one image - for example, we have tests for Python that apply to both `python` *and* `pypy`.\n\nIf you're using our test suite to test your image in your own CI, see [the \"Alternate config files\" section](#alternate-config-files) below for information about how to run both our tests and your own from our (admittedly naïve) test wrapper.\n\n## Running Tests\n\n```console\n$ ./run.sh\n\nusage: run.sh [-t test ...] image:tag [...]\n   ie: run.sh debian:trixie\n       run.sh -t utc python:3\n       run.sh -t utc python:3 -t python-imports\n\nThis script processes the specified Docker images to test their running\nenvironments.\n```\n\nRun all the tests that are applicable to the `debian:trixie` image:\n\n```console\n$ ./run.sh debian:trixie\ntesting debian:trixie\n\t'utc' [1/4]...passed\n\t'no-hard-coded-passwords' [2/4]...passed\n\t'override-cmd' [3/4]...passed\n\t'debian-apt-get' [4/4]...passed\n```\n\nTry to run just the `python-imports` test against the `debian:trixie` image: (which doesn't contain Python)\n\n```console\n$ ./run.sh -t python-imports debian:trixie\ntesting debian:trixie\n\timage has no tests...skipping\n```\n\nRun the `utc` and `python-imports` tests against `python:3`, `pypy:3`, and `debian:trixie`:\n\n```console\n$ ./run.sh -t utc -t python-imports python:3 pypy:3 debian:trixie\ntesting python:3\n\t'utc' [1/2]...passed\n\t'python-imports' [2/2]...passed\ntesting pypy:3\n\t'utc' [1/2]...passed\n\t'python-imports' [2/2]...passed\ntesting debian:trixie\n\t'utc' [1/1]...passed\n```\n\n## Writing Tests\n\n### `tests/<test name>/`\n\nEach test lives in a separate directory inside `tests/`, and `config.sh` determines which images each test applies to.\n\n#### `tests/<test name>/run.sh`\n\nThis is the actual \"test script\". In the script, `$1` is the name of the image we're testing. An exit code of zero indicates success/passing, and a non-zero exit code indicates failure.\n\nFor example, `tests/utc/run.sh` consists of:\n\n```bash\n#!/bin/bash\nset -e\n\ndocker run --rm --entrypoint date \"$1\" +%Z\n```\n\nWhich runs `date` inside the given image, and outputs the current timezone according to `date +%Z`, which should be `UTC`. See `tests/<test name>/expected-std-out.txt` below for the other half of this test.\n\nThere are several pre-written `run.sh` scripts to help with common tasks. See the `tests/run-*-in-container.sh` section below for more details about these.\n\n#### `tests/<test name>/expected-std-out.txt`\n\nIf this file exists, then this test's `run.sh` is expected to output exactly the contents of this file on standard output, and differences will be assumed to denote test failure.\n\nTo continue with our `utc` test example, its contents in this file are simply:\n\n\tUTC\n\nIf a test fails due to having incorrect output, the `diff` between the generated output and the expected output will be displayed:\n\n```console\n$ ./run.sh -t utc fedora:21\ntesting fedora:21\n\t'utc' [1/1]...failed; unexpected output:\n--- tests/utc/expected-std-out.txt\t2015-02-05 16:52:05.013273118 -0700\n+++ -\t2015-03-13 15:11:49.725116569 -0600\n@@ -1 +1 @@\n-UTC\n+EDT\n```\n\n(this is an example of `fedora:21` failing the `utc` test)\n\n#### `tests/run-*-in-container.sh`\n\nThese scripts are intended to be used as symlink targets for test `run.sh` scripts.\n\nFor example, if `tests/python-sometest/run.sh` is a symlink to `../run-python-in-container.sh`, then `tests/run-python-in-container.sh` will execute `python tests/python-sometest/container.py` inside the image.\n\nTo illustrate further:\n\n```console\n$ ls -l tests/hylang-sh/\ntotal 8\n-rw-rw-r-- 1 tianon tianon 167 Mar 11 13:24 container.hy\n-rw-rw-r-- 1 tianon tianon   5 Mar 11 13:24 expected-std-out.txt\nlrwxrwxrwx 1 tianon tianon  25 Mar 11 13:25 run.sh -> ../run-hy-in-container.sh\n$ ls -l tests/python-imports/\ntotal 4\n-rw-r--r-- 1 tianon tianon 1096 Aug 29 16:14 container.py\nlrwxrwxrwx 1 tianon tianon   29 Dec 15  2016 run.sh -> ../run-python-in-container.sh\n$ head -n3 tests/python-imports/container.py\nimport platform, sys\n\nisWindows = platform.system() == 'Windows'\n```\n\n## Configuring the Test Suite\n\n### `config.sh`\n\nThis file controls which tests apply (or don't apply) to each image.\n\nWhen testing an image, the list of tests to apply are calculated by doing `globalTests + imageTests[testAlias[image]] + imageTests[image]`. Any tests for which `globalExcludeTests[image_test]` is set are removed. If `-t` is specified one or more times, any tests not specified explicitly via `-t` are also removed.\n\n#### `globalTests=( test ... )`\n\nThis list of tests applies to every image minus combinations listed in `globalExcludeTests` (such as `hello-world` not getting the `utc` test, since it has no `date` binary in order for the test to work).\n\n```bash\nglobalTests+=(\n\tutc\n\tno-hard-coded-passwords\n)\n```\n\n#### `testAlias=( [image]='image' ... )`\n\nThis array defines image aliases -- for example, the `pypy` image should inherit all the standard `python` image tests, since it's a functionally equivalent implementation of Python. As noted in `globalTests`, any image+test combinations that shouldn't or can't be tested as a result of this aliasing can be excluded via `globalExcludeTests`.\n\n```bash\ntestAlias+=(\n\t[pypy]='python'\n\t[jruby]='ruby'\n\n\t[mariadb]='mysql'\n\t[percona]='mysql'\n)\n```\n\n#### `imageTests=( [image]='test ...' ... )`\n\nThis array defines the list of explicit tests for each image. For example, the `mysql` image (and aliased derivatives via `testAlias`) has a test which verifies that basic functionality works, such as starting up the image and connecting to it from a separate container.\n\n```bash\nimageTests+=(\n\t[python]='\n\t\tpython-imports\n\t\tpython-pip-requests-ssl\n\t'\n\t[mysql]='\n\t\tmysql-basics\n\t'\n)\n```\n\n#### `globalExcludeTests=( [image_test]=1 ... )`\n\nDefines image+test combinations which shouldn't ever run (usually because they won't work, like trying to run `date` in the `hello-world` image for the `utc` test, which has only one binary).\n\n```bash\nglobalExcludeTests+=(\n\t# single-binary images\n\t[hello-world_utc]=1\n)\n```\n\n### Alternate config files\n\nIf you would like to run the Official Image tests against your own images, you can use the `-c/--config` flag to specify one or more alternate config files. These config files should configure the same environment variables used by the default `config.sh` (see above).\n\n```bash\nimageTests+=(\n\t[myorg/myimage]='\n\t\tmy-custom-test\n\t'\n)\n```\n\n**Note**: If you do use your own config file, the `config.sh` included here will no longer be loaded by default. If you want to load it in addition to your own config file (for example, to run the `globalTests` against your own image), use an additional `--config` flag.\n\n```console\n$ /path/to/official-images/test/run.sh --config /path/to/official-images/test/config.sh --config ./my-config.sh myimage\n```\n"
  },
  {
    "path": "test/clean.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndocker image ls --digests --no-trunc --format '\n\t{{- if ne .Tag \"<none>\" -}}\n\t\t{{- .Repository -}} : {{- .Tag -}}\n\t{{- else if ne .Digest \"<none>\" -}}\n\t\t{{- .Repository -}} @ {{- .Digest -}}\n\t{{- else -}}\n\t\t{{- .ID -}}\n\t{{- end -}}\n' 'librarytest/*' | xargs -rt docker image rm\n"
  },
  {
    "path": "test/config.sh",
    "content": "#!/usr/bin/env bash\n\nglobalTests+=(\n\tutc\n\tno-hard-coded-passwords\n\toverride-cmd\n)\n\n# for \"explicit\" images, only run tests that are explicitly specified for that image/variant\nexplicitTests+=(\n\t[:onbuild]=1\n)\nimageTests[:onbuild]+='\n\toverride-cmd\n'\n\ntestAlias+=(\n\t[amazoncorretto]='openjdk'\n\t[adoptopenjdk]='openjdk'\n\t[eclipse-temurin]='openjdk'\n\t[sapmachine]='openjdk'\n\t[ibm-semeru-runtimes]='openjdk'\n\t[azul-zulu]='openjdk'\n\n\t[jruby]='ruby'\n\t[pypy]='python'\n\n\t[ubuntu]='debian'\n\n\t[mariadb]='mysql'\n\t[percona]='mysql'\n\t[percona:psmdb]='mongo'\n)\n\nimageTests+=(\n\t[aerospike]='\n\t'\n\t[busybox]='\n\t'\n\t[cassandra]='\n\t\tcassandra-basics\n\t'\n\t[clojure]='\n\t'\n\t[crate]='\n\t'\n\t[composer]='\n\t\tcomposer\n\t'\n\t[convertigo]='\n\t\tconvertigo-hello-world\n\t'\n\t[dart]='\n\t\tdart-hello-world\n\t'\n\t[debian]='\n\t\tdebian-apt-get\n\t'\n\t[docker:dind]='\n\t\tdocker-dind\n\t\tdocker-registry-push-pull\n\t'\n\t[eclipse-mosquitto]='\n\t\teclipse-mosquitto-basics\n\t'\n\t[elixir]='\n\t\telixir-hello-world\n\t'\n\t[erlang]='\n\t\terlang-hello-world\n\t'\n\t[gcc]='\n\t\tgcc-c-hello-world\n\t\tgcc-cpp-hello-world\n\t\tgolang-hello-world\n\t'\n\t[ghost]='\n\t\tghost-basics\n\t'\n\t[golang]='\n\t\tgolang-hello-world\n\t'\n\t[haproxy]='\n\t\thaproxy-basics\n\t'\n\t[haskell]='\n\t\thaskell-cabal\n\t\thaskell-stack\n\t\thaskell-ghci\n\t\thaskell-runhaskell\n\t'\n\t[haxe]='\n\t\thaxe-hello-world\n\t\thaxe-haxelib-install\n\t'\n\t[hylang]='\n\t\thylang-sh\n\t\thylang-hello-world\n\t'\n\t[jetty]='\n\t\tjetty-hello-web\n\t'\n\t[julia]='\n\t\tjulia-hello-world\n\t\tjulia-downloads\n\t'\n\t[logstash]='\n\t\tlogstash-basics\n\t'\n\t[matomo:apache]='\n\t\tmatomo-apache-run\n\t'\n\t[matomo:fpm]='\n\t\tmatomo-fpm-run\n\t'\n\t[memcached]='\n\t\tmemcached-basics\n\t'\n\t[mongo]='\n\t\tmongo-basics\n\t\tmongo-auth-basics\n\t\tmongo-tls-basics\n\t\tmongo-tls-auth\n\t'\n\t[monica]='\n\t\tmonica-cli\n\t\tmonica-cli-mysql8\n\t\tmonica-cli-mariadb10\n\t'\n\t[monica:apache]='\n\t\tmonica-apache-run\n\t'\n\t[monica:fpm]='\n\t\tmonica-fpm-run\n\t'\n\t[monica:fpm-alpine]='\n\t\tmonica-fpm-run\n\t'\n\t[mongo-express]='\n\t\tmongo-express-run\n\t'\n\t[mono]='\n\t'\n\t[mysql]='\n\t\tmysql-basics\n\t\tmysql-initdb\n\t\tmysql-log-bin\n\t'\n\t[nextcloud]='\n\t\tnextcloud-cli\n\t'\n\t[nextcloud:apache]='\n\t\tnextcloud-apache-run\n\t'\n\t[nextcloud:fpm]='\n\t\tnextcloud-fpm-run\n\t'\n\t[node]='\n\t\tnode-hello-world\n\t'\n\t[nuxeo]='\n\t\tnuxeo-conf\n\t\tnuxeo-basics\n\t'\n\t[openjdk]='\n\t\tjava-hello-world\n\t\tjava-uimanager-font\n\t\tjava-ca-certificates\n\t'\n\t[open-liberty]='\n\t\topen-liberty-hello-world\n\t'\n\t[percona]='\n\t\tpercona-tokudb\n\t\tpercona-rocksdb\n\t'\n\t[perl]='\n\t\tperl-hello-world\n\t\tperl-cpanm\n\t'\n\t[php]='\n\t\tphp-ext-install\n\t\tphp-hello-world\n\t\tphp-argon2\n\t'\n\t[php:apache]='\n\t\tphp-apache-hello-web\n\t'\n\t[php:fpm]='\n\t\tphp-fpm-hello-web\n\t'\n\t[plone]='\n\t\tplone-basics\n\t\tplone-addons\n\t\tplone-cors\n\t\tplone-versions\n\t\tplone-zeoclient\n\t\tplone-zeosite\n\t'\n\t[postfixadmin:apache]='\n\t\tpostfixadmin-apache-run\n\t'\n\t[postfixadmin:fpm]='\n\t\tpostfixadmin-fpm-run\n\t'\n\t[postgres]='\n\t\tpostgres-basics\n\t\tpostgres-initdb\n\t'\n\t[python]='\n\t\tpython-imports\n\t\tpython-no-pyc\n\t\tpython-pip-requests-ssl\n\t\tpython-sqlite3\n\t\tpython-stack-size\n\t'\n\t[rabbitmq]='\n\t\trabbitmq-basics\n\t\trabbitmq-tls\n\t'\n\t[r-base]='\n\t'\n\t[redis]='\n\t\tredis-basics\n\t\tredis-basics-tls\n\t\tredis-basics-config\n\t\tredis-basics-persistent\n\t'\n\t[redmine]='\n\t\tredmine-basics\n\t'\n\t[registry]='\n\t\tdocker-registry-push-pull\n\t'\n\t[rethinkdb]='\n\t'\n\t[ruby]='\n\t\truby-hello-world\n\t\truby-standard-libs\n\t\truby-gems\n\t\truby-bundler\n\t\truby-nonroot\n\t\truby-binstubs\n\t\truby-native-extension\n\t'\n\t[rust]='\n\t\trust-hello-world\n\t'\n\t[silverpeas]='\n\t\tsilverpeas-basics\n\t'\n\t[spiped]='\n\t\tspiped-basics\n\t'\n\t[swipl]='\n\t\tswipl-modules\n\t'\n\t[swift]='\n\t\tswift-hello-world\n\t'\n\t[tomcat]='\n\t\ttomcat-hello-world\n\t'\n\t[varnish]='\n\t\tvarnish\n\t'\n\t[wordpress:apache]='\n\t\twordpress-apache-run\n\t'\n\t[wordpress:fpm]='\n\t\twordpress-fpm-run\n\t'\n\t[znc]='\n\t\tznc-basics\n\t'\n\t[zookeeper]='\n\t\tzookeeper-basics\n\t'\n)\n\nglobalExcludeTests+=(\n\t# single-binary images\n\t[hello-world_no-hard-coded-passwords]=1\n\t[hello-world_utc]=1\n\t[nats-streaming_no-hard-coded-passwords]=1\n\t[nats-streaming_utc]=1\n\t[nats_no-hard-coded-passwords]=1\n\t[nats_utc]=1\n\t[traefik_no-hard-coded-passwords]=1\n\t[traefik_utc]=1\n\n\t# clearlinux has no /etc/passwd\n\t# https://github.com/docker-library/official-images/pull/1721#issuecomment-234128477\n\t[clearlinux_no-hard-coded-passwords]=1\n\n\t# alpine/slim/nanoserver openjdk images are headless and so can't do font stuff\n\t[openjdk:alpine_java-uimanager-font]=1\n\t[openjdk:slim_java-uimanager-font]=1\n\t[openjdk:nanoserver_java-uimanager-font]=1\n\n\t# the Swift slim images are not expected to be able to run the swift-hello-world test because it involves compiling Swift code. The slim images are for running an already built binary.\n\t# https://github.com/docker-library/official-images/pull/6302#issuecomment-512181863\n\t[swift:slim_swift-hello-world]=1\n\n\t# The new tag kernel-slim provides the bare minimum server image for users to build upon to create their application images.\n\t# https://github.com/docker-library/official-images/pull/8993#issuecomment-723328400\n\t[open-liberty:slim_open-liberty-hello-world]=1\n\n\t# no \"native\" dependencies\n\t[ruby:alpine_ruby-bundler]=1\n\t[ruby:alpine_ruby-gems]=1\n\t[ruby:slim_ruby-bundler]=1\n\t[ruby:slim_ruby-gems]=1\n\n\t# MySQL-assuming tests cannot be run on MongoDB-providing images\n\t[percona:psmdb_percona-tokudb]=1\n\t[percona:psmdb_percona-rocksdb]=1\n\n\t# windows!\n\t[:nanoserver_no-hard-coded-passwords]=1\n\t[:nanoserver_utc]=1\n\t[:windowsservercore_no-hard-coded-passwords]=1\n\t[:windowsservercore_utc]=1\n\n\t# https://github.com/docker-library/official-images/pull/2578#issuecomment-274889851\n\t[nats:nanoserver_override-cmd]=1\n\t[nats:windowsservercore_override-cmd]=1\n\t[nats-streaming:nanoserver_override-cmd]=1\n\t[nats-streaming:windowsservercore_override-cmd]=1\n\n\t# https://github.com/docker-library/official-images/pull/8329#issuecomment-656383836\n\t[traefik:windowsservercore_override-cmd]=1\n\t[traefik:nanoserver_override-cmd]=1\n\n\t# TODO adjust MongoDB tests to use docker networks instead of links so they can work on Windows (and consider using PowerShell to generate appropriate certificates for TLS tests instead of openssl)\n\t[mongo:nanoserver_mongo-basics]=1\n\t[mongo:nanoserver_mongo-auth-basics]=1\n\t[mongo:nanoserver_mongo-tls-basics]=1\n\t[mongo:nanoserver_mongo-tls-auth]=1\n\t[mongo:windowsservercore_mongo-basics]=1\n\t[mongo:windowsservercore_mongo-auth-basics]=1\n\t[mongo:windowsservercore_mongo-tls-basics]=1\n\t[mongo:windowsservercore_mongo-tls-auth]=1\n)\n"
  },
  {
    "path": "test/retry.sh",
    "content": "#!/bin/bash\n\nset -e\n\nopts=\"$(getopt -o 'i:c:t:s:' --long 'image:,cid:,tries:,sleep:' -- \"$@\")\"\neval set -- \"$opts\"\nwhile true; do\n\tflag=$1\n\tshift\n\tcase \"$flag\" in\n\t\t--image|-i) image=\"$1\" && shift ;;\n\t\t--cid|-c) cid=\"$1\" && shift ;;\n\t\t--tries|-t) tries=\"$1\" && shift ;;\n\t\t--sleep|-s) sleep=\"$1\" && shift ;;\n\t\t--) break;;\n\tesac\ndone\n\nif [ $# -eq 0 ]; then\n\techo >&2 'retry.sh requires a command to run'\n\tfalse\nfi\n\n: ${tries:=10}\n: ${sleep:=2}\n\nwhile ! eval \"$@\" &> /dev/null; do\n\t(( tries-- ))\n\tif [ $tries -le 0 ]; then\n\t\techo >&2 \"${image:-the container} failed to accept connections in a reasonable amount of time!\"\n\t\t[ \"$cid\" ] && ( set -x && docker logs \"$cid\" ) >&2 || true\n\t\t( set -x && eval \"$@\" ) >&2 || true # to hopefully get a useful error message\n\t\tfalse\n\tfi\n\tif [ \"$cid\" ] && [ \"$(docker inspect -f '{{.State.Running}}' \"$cid\" 2>/dev/null)\" != 'true' ]; then\n\t\techo >&2 \"${image:-the container} stopped unexpectedly!\"\n\t\t( set -x && docker logs \"$cid\" ) >&2 || true\n\t\tfalse\n\tfi\n\techo >&2 -n .\n\tsleep \"$sleep\"\ndone\n"
  },
  {
    "path": "test/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nself=\"$(basename \"$0\")\"\n\nusage() {\n\tcat <<EOUSAGE\n\nusage: $self [-t test ...] image:tag [...]\n   ie: $self debian:trixie\n       $self -t utc python:3\n       $self -t utc python:3 -t python-imports\n\nThis script processes the specified Docker images to test their running\nenvironments.\nEOUSAGE\n}\n\n# arg handling\nopts=\"$(getopt -o 'ht:c:?' --long 'dry-run,help,test:,config:,keep-namespace' -- \"$@\" || { usage >&2 && false; })\"\neval set -- \"$opts\"\n\ndeclare -A argTests=()\ndeclare -a configs=()\ndryRun=\nkeepNamespace=\nwhile true; do\n\tflag=$1\n\tshift\n\tcase \"$flag\" in\n\t\t--dry-run) dryRun=1 ;;\n\t\t--help|-h|'-?') usage && exit 0 ;;\n\t\t--test|-t) argTests[\"$1\"]=1 && shift ;;\n\t\t--config|-c) configs+=(\"$(readlink -f \"$1\")\") && shift ;;\n\t\t--keep-namespace) keepNamespace=1 ;;\n\t\t--) break ;;\n\t\t*)\n\t\t\t{\n\t\t\t\techo \"error: unknown flag: $flag\"\n\t\t\t\tusage\n\t\t\t} >&2\n\t\t\texit 1\n\t\t\t;;\n\tesac\ndone\n\nif [ \"$#\" -eq 0 ]; then\n\tusage >&2\n\texit 1\nfi\n\n# declare configuration variables\ndeclare -a globalTests=()\ndeclare -A testAlias=()\ndeclare -A imageTests=()\ndeclare -A globalExcludeTests=()\ndeclare -A explicitTests=()\n\n# if there are no user-specified configs, use the default config\nif [ \"${#configs[@]}\" -eq 0 ]; then\n\tconfigs+=( \"$dir/config.sh\" )\nfi\n\ncase \"$(uname -o)\" in\n\tMsys)\n\t\t# https://stackoverflow.com/a/34386471/433558\n\t\t# https://github.com/docker/toolbox/blob/6960f28d5b01857d69b2095a02949264f09d3e57/windows/start.sh#L104-L107\n\t\tdocker() {\n\t\t\tMSYS_NO_PATHCONV=1 command docker \"$@\"\n\t\t}\n\t\texport -f docker\n\t\t;;\nesac\n\n# load the configs\ndeclare -A testPaths=()\nfor conf in \"${configs[@]}\"; do\n\t. \"$conf\"\n\n\t# Determine the full path to any newly-declared tests\n\tconfDir=\"$(dirname \"$conf\")\"\n\n\tfor testName in ${globalTests[@]} ${imageTests[@]}; do\n\t\t[ -n \"${testPaths[$testName]:-}\" ] && continue\n\n\t\tif [ -d \"$confDir/tests/$testName\" ]; then\n\t\t\t# Test directory found relative to the conf file\n\t\t\ttestPaths[$testName]=\"$confDir/tests/$testName\"\n\t\telif [ -d \"$dir/tests/$testName\" ]; then\n\t\t\t# Test directory found in the main tests/ directory\n\t\t\ttestPaths[$testName]=\"$dir/tests/$testName\"\n\t\tfi\n\tdone\ndone\n\ndidFail=\nfor dockerImage in \"$@\"; do\n\techo \"testing $dockerImage\"\n\t\n\trepo=\"${dockerImage%:*}\"\n\ttagVar=\"${dockerImage#*:}\"\n\t#version=\"${tagVar%-*}\"\n\tvariant=\"${tagVar##*-}\"\n\t\n\tcase \"$tagVar\" in\n\t\t*onbuild*)\n\t\t\t# \"maven:onbuild-alpine\" is still onbuild\n\t\t\t# ONCE ONBUILD, ALWAYS ONBUILD\n\t\t\tvariant='onbuild'\n\t\t\t;;\n\t\t*apache-*)\n\t\t\t# lolPHP\n\t\t\tvariant='apache'\n\t\t\t;;\n\t\t*fpm-*)\n\t\t\t# lolPHP\n\t\t\tvariant='fpm'\n\t\t\t;;\n\t\t*alpine*)\n\t\t\t# \"alpine3.4\", \"alpine3.6\", \"nginx:alpine-perl\", etc are still \"alpine\" variants\n\t\t\tvariant='alpine'\n\t\t\t;;\n\t\tslim-*|*-slim-*)\n\t\t\t# \"slim-trixie\" is still \"slim\"\n\t\t\tvariant='slim'\n\t\t\t;;\n\t\tpsmdb-*)\n\t\t\t# Percona Server for MongoDB is still \"mongo\"\n\t\t\tvariant='psmdb'\n\t\t\t;;\n\t\t*nanoserver*)\n\t\t\t# all nanoserver variants are windows\n\t\t\tvariant='nanoserver'\n\t\t\t;;\n\t\t*windowsservercore*)\n\t\t\t# all servercore variants are windows\n\t\t\tvariant='windowsservercore'\n\t\t\t;;\n\tesac\n\t\n\ttestRepo=\"$repo\"\n\tif [ -z \"$keepNamespace\" ]; then\n\t\ttestRepo=\"${testRepo##*/}\"\n\tfi\n\t\n\tfor possibleAlias in \\\n\t\t\"${testAlias[$repo:$variant]:-}\" \\\n\t\t\"${testAlias[$repo]:-}\" \\\n\t\t\"${testAlias[$testRepo:$variant]:-}\" \\\n\t\t\"${testAlias[$testRepo]:-}\" \\\n\t; do\n\t\tif [ -n \"$possibleAlias\" ]; then\n\t\t\ttestRepo=\"$possibleAlias\"\n\t\t\tbreak\n\t\tfi\n\tdone\n\t\n\texplicitVariant=\n\tfor possibleExplicit in \\\n\t\t\"${explicitTests[:$variant]:-}\" \\\n\t\t\"${explicitTests[$repo:$variant]:-}\" \\\n\t\t\"${explicitTests[$repo]:-}\" \\\n\t\t\"${explicitTests[$testRepo:$variant]:-}\" \\\n\t\t\"${explicitTests[$testRepo]:-}\" \\\n\t; do\n\t\tif [ -n \"$possibleExplicit\" ]; then\n\t\t\texplicitVariant=1\n\t\t\tbreak\n\t\tfi\n\tdone\n\t\n\ttestCandidates=()\n\tif [ -z \"$explicitVariant\" ]; then\n\t\ttestCandidates+=( \"${globalTests[@]}\" )\n\tfi\n\ttestCandidates+=(\n\t\t${imageTests[:$variant]:-}\n\t)\n\tif [ -z \"$explicitVariant\" ]; then\n\t\ttestCandidates+=(\n\t\t\t${imageTests[$testRepo]:-}\n\t\t)\n\tfi\n\ttestCandidates+=(\n\t\t${imageTests[$testRepo:$variant]:-}\n\t)\n\tif [ \"$testRepo\" != \"$repo\" ]; then\n\t\tif [ -z \"$explicitVariant\" ]; then\n\t\t\ttestCandidates+=(\n\t\t\t\t${imageTests[$repo]:-}\n\t\t\t)\n\t\tfi\n\t\ttestCandidates+=(\n\t\t\t${imageTests[$repo:$variant]:-}\n\t\t)\n\tfi\n\t\n\ttests=()\n\tfor t in \"${testCandidates[@]}\"; do\n\t\tif [ \"${#argTests[@]}\" -gt 0 ] && [ -z \"${argTests[$t]:-}\" ]; then\n\t\t\t# skipping due to -t\n\t\t\tcontinue\n\t\tfi\n\t\t\n\t\tif [ \\\n\t\t\t! -z \"${globalExcludeTests[${testRepo}_$t]:-}\" \\\n\t\t\t-o ! -z \"${globalExcludeTests[${testRepo}:${variant}_$t]:-}\" \\\n\t\t\t-o ! -z \"${globalExcludeTests[:${variant}_$t]:-}\" \\\n\t\t\t-o ! -z \"${globalExcludeTests[${repo}_$t]:-}\" \\\n\t\t\t-o ! -z \"${globalExcludeTests[${repo}:${variant}_$t]:-}\" \\\n\t\t\t-o ! -z \"${globalExcludeTests[:${variant}_$t]:-}\" \\\n\t\t]; then\n\t\t\t# skipping due to exclude\n\t\t\tcontinue\n\t\tfi\n\t\t\n\t\ttests+=( \"$t\" )\n\tdone\n\t\n\t# check for zero tests before checking for existing image\n\t# this will make windows variants no longer fail\n\tif [ \"${#tests[@]}\" -eq '0' ]; then\n\t\techo $'\\timage has no tests...skipping'\n\t\tcontinue\n\tfi\n\t\n\tif ! docker inspect \"$dockerImage\" &> /dev/null; then\n\t\techo $'\\timage does not exist!'\n\t\tdidFail=1\n\t\tcontinue\n\tfi\n\t\n\tcurrentTest=0\n\ttotalTest=\"${#tests[@]}\"\n\tfor t in \"${tests[@]}\"; do\n\t\t(( currentTest+=1 ))\n\t\techo -ne \"\\t'$t' [$currentTest/$totalTest]...\"\n\t\t\n\t\t# run test against dockerImage here\n\t\t# find the script for the test\n\t\tscriptDir=\"${testPaths[$t]}\"\n\t\tif [ -d \"$scriptDir\" ]; then\n\t\t\tscript=\"$scriptDir/run.sh\"\n\t\t\tif [ -x \"$script\" ] && [ ! -d \"$script\" ]; then\n\t\t\t\t# TODO dryRun logic\n\t\t\t\tif output=\"$(\"$script\" \"$dockerImage\")\"; then\n\t\t\t\t\toutput=\"$(tr -d '\\r' <<<\"$output\")\" # Windows gives us \\r\\n ...  :D\n\t\t\t\t\tif [ -f \"$scriptDir/expected-std-out.txt\" ] && ! d=\"$(diff -u \"$scriptDir/expected-std-out.txt\" - <<<\"$output\" 2>/dev/null)\"; then\n\t\t\t\t\t\techo 'failed; unexpected output:'\n\t\t\t\t\t\techo \"$d\"\n\t\t\t\t\t\tdidFail=1\n\t\t\t\t\telse\n\t\t\t\t\t\techo 'passed'\n\t\t\t\t\tfi\n\t\t\t\telse\n\t\t\t\t\techo 'failed'\n\t\t\t\t\tdidFail=1\n\t\t\t\tfi\n\t\t\telse\n\t\t\t\techo \"skipping\"\n\t\t\t\techo >&2 \"error: $script missing, not executable or is a directory\"\n\t\t\t\tdidFail=1\n\t\t\t\tcontinue\n\t\t\tfi\n\t\telse\n\t\t\techo \"skipping\"\n\t\t\techo >&2 \"error: unable to locate test '$t'\"\n\t\t\tdidFail=1\n\t\t\tcontinue\n\t\tfi\n\tdone\ndone\n\nif [ -n \"$didFail\" ]; then\n\texit 1\nfi\n"
  },
  {
    "path": "test/tests/cassandra-basics/run.sh",
    "content": "#!/bin/bash\n\n[ \"$DEBUG\" ] && set -x\n\nset -eo pipefail -o errtrace\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use the image being tested as our client image\nclientImage=\"$image\"\n\n# Create an instance of the container-under-test\ncid=\"$(\n\tdocker run -d \\\n\t\t-e MAX_HEAP_SIZE='128m' \\\n\t\t-e HEAP_NEWSIZE='32m' \\\n\t\t-e JVM_OPTS='\n\t\t\t-Dcassandra.ring_delay_ms=0\n\t\t\t-Dcom.sun.management.jmxremote.authenticate=false\n\t\t\t-Dcom.sun.management.jmxremote.port=7199\n\t\t\t-Dcom.sun.management.jmxremote.ssl=false\n\t\t' \\\n\t\t\"$image\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\ntrap \"( set -x; docker logs --tail=20 $cid )\" ERR\n\n_status() {\n\tdocker run --rm \\\n\t\t--link \"$cid\":cassandra \\\n\t\t--entrypoint nodetool \\\n\t\t\"$clientImage\" \\\n\t\t-h cassandra status\n}\n\n# Make sure our container is up\n. \"$dir/../../retry.sh\" '_status'\n\ncqlsh() {\n\tdocker run -i --rm \\\n\t\t--link \"$cid\":cassandra \\\n\t\t--entrypoint cqlsh \\\n\t\t\"$clientImage\" \\\n\t\t-u cassandra -p cassandra \"$@\" cassandra\n}\n\n# Make sure our container is listening\n. \"$dir/../../retry.sh\" --tries 20 'cqlsh < /dev/null'\n# (cassandra takes a long time to start up, especially on GHA)\n\n# https://wiki.apache.org/cassandra/GettingStarted#Step_4:_Using_cqlsh\n\ncqlsh -e \"\nCREATE KEYSPACE mykeyspace\n\tWITH REPLICATION = {\n\t\t'class': 'SimpleStrategy',\n\t\t'replication_factor': 1\n\t}\n\"\n\ncqlsh -k mykeyspace -e \"\nCREATE TABLE users (\n\tuser_id int PRIMARY KEY,\n\tfname text,\n\tlname text\n)\n\"\n\ncqlsh -k mykeyspace -e \"\nINSERT INTO users (user_id,  fname, lname)\n\tVALUES (1745, 'john', 'smith')\n\"\ncqlsh -k mykeyspace -e \"\nINSERT INTO users (user_id,  fname, lname)\n\tVALUES (1744, 'john', 'doe')\n\"\ncqlsh -k mykeyspace -e \"\nINSERT INTO users (user_id,  fname, lname)\n\tVALUES (1746, 'john', 'smith')\n\"\n\n# TODO find some way to get cqlsh to provide machine-readable output D:\n[[ \"$(cqlsh -k mykeyspace -e \"\nSELECT * FROM users\n\")\" == *'3 rows'* ]]\n\ncqlsh -k mykeyspace -e \"\nCREATE INDEX ON users (lname)\n\"\n[[ \"$(cqlsh -k mykeyspace -e \"\nSELECT * FROM users WHERE lname = 'smith'\n\")\" == *'2 rows'* ]]\n"
  },
  {
    "path": "test/tests/cheeky-retries.sh",
    "content": "#!/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 \"real-run.sh\" a couple tries to succeed before we give up\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\n\ntries=3\nwhile [ \"$tries\" -gt 0 ]; do\n\t(( tries-- )) || :\n\tif \"$dir/real-run.sh\" \"$@\"; then\n\t\texit 0\n\tfi\n\tif [ \"$tries\" -gt 0 ]; then\n\t\techo >&2 'warning: failed, retrying'\n\tfi\ndone\n\nexit 1\n"
  },
  {
    "path": "test/tests/composer/composer.json",
    "content": "{\n    \"require\": {\n        \"composer/composer\": \"^2\"\n    }\n}\n"
  },
  {
    "path": "test/tests/composer/container.sh",
    "content": "#!/bin/sh\n\ndir=\"$(mktemp -d)\"\n\ntrap \"rm -rf '$dir'\" EXIT\n\ncp composer.json \"$dir\"\n\ncd \"$dir\"\n\ncomposer --version\ncomposer install --no-interaction --no-progress --no-ansi --profile\n"
  },
  {
    "path": "test/tests/convertigo-hello-world/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":convertigo \\\n\t\t\"$clientImage\" \\\n\t\tcurl -s \"$@\" \"http://convertigo:28080/$url\"\n}\n\n# Make sure that Tomcat is listening\n. \"$dir/../../retry.sh\" -s 5 '_request / &> /dev/null'\n\n# Check that we can request /\n[ -n \"$(_request '/')\" ]\n\n# Check that the example \"Hello World\" servlet works\nhelloWorld=\"$(_request '/convertigo/admin/services/engine.CheckAuthentication')\"\n[[ \"$helloWorld\" == *'<authenticated>'* ]]\n"
  },
  {
    "path": "test/tests/dart-hello-world/container.dart",
    "content": "void main() {\n  print('Hello World!');\n}\n"
  },
  {
    "path": "test/tests/dart-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/debian-apt-get/container.sh",
    "content": "#!/bin/bash\nset -e\n\n# We have to eat stderr here because of:\n# W: Conflicting distribution: http://http.debian.net rc-buggy InRelease (expected rc-buggy but got experimental)\n# W: Conflicting distribution: http://archive.ubuntu.com devel Release (expected devel but got vivid)\n# W: Conflicting distribution: http://archive.ubuntu.com devel-updates Release (expected devel-updates but got vivid)\n# W: Conflicting distribution: http://archive.ubuntu.com devel-security Release (expected devel-security but got vivid)\napt-get update &> /dev/null\n\n# We have to eat stderr here because of:\n# debconf: delaying package configuration, since apt-utils is not installed\napt-get install -y hello &> /dev/null\n\nexec hello\n"
  },
  {
    "path": "test/tests/debian-apt-get/expected-std-out.txt",
    "content": "Hello, world!\n"
  },
  {
    "path": "test/tests/docker-build.sh",
    "content": "#!/usr/bin/env bash\nset -e\n\n# wrapper around \"docker build\" that creates a temporary directory and copies files into it first so that arbitrary host directories can be copied into containers without bind mounts, but accepts a Dockerfile on stdin\n\n# usage: ./docker-build.sh some-host-directory some-new-image:some-tag <<EOD\n#        FROM ...\n#        COPY dir/... /.../\n#        EOD\n#    ie: ./docker-build.sh .../hylang-hello-world librarytest/hylang <<EOD\n#        FROM hylang\n#        COPY dir/container.hy /dir/\n#        CMD [\"hy\", \"/dir/container.hy\"]\n#        EOD\n\ndir=\"$1\"; shift\n[ -d \"$dir\" ]\n\nimageTag=\"$1\"; shift\n\ntmp=\"$(mktemp -d \"${TMPDIR:-/tmp}/docker-library-test-build-XXXXXXXXXX\")\"\ntrap \"rm -rf '$tmp'\" EXIT\n\ncat > \"$tmp/Dockerfile\"\n\nfrom=\"$(awk -F '[ \\t]+' 'toupper($1) == \"FROM\" { print $2; exit }' \"$tmp/Dockerfile\")\"\nif ! docker inspect \"$from\" &> /dev/null; then\n\tdocker pull \"$from\" > /dev/null\nfi\n\ncp -RL \"$dir\" \"$tmp/dir\"\n\nerror=\"$(command docker build -t \"$imageTag\" \"$tmp\" 2>&1)\" || { echo \"$error\" >&2; exit 1; }\n"
  },
  {
    "path": "test/tests/docker-dind/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ncname=\"docker-daemon-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d -it \\\n\t\t--privileged \\\n\t\t--name \"$cname\" \\\n\t\t-e DOCKER_TLS_CERTDIR=/certs -v /certs \\\n\t\t\"$image\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\ndocker_() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":docker \\\n\t\t-e DOCKER_TLS_CERTDIR=/certs --volumes-from \"$cname:ro\" \\\n\t\t--entrypoint docker-entrypoint.sh \\\n\t\t\"$image\" \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" --tries 30 'docker_ version'\n\n[ \"$(docker_ images -q | wc -l)\" = '0' ]\ndocker_ pull busybox\n[ \"$(docker_ images -q | wc -l)\" = '1' ]\n\n[ \"$(docker_ ps -aq | wc -l)\" = '0' ]\n\ndocker_ run --rm busybox true\ndocker_ run --rm busybox true\ndocker_ run --rm busybox true\n\n[ \"$(docker_ ps -aq | wc -l)\" = '0' ]\ndocker_ create -i --name test1 busybox cat\n[ \"$(docker_ ps -aq | wc -l)\" = '1' ]\n\n[ \"$(docker_ inspect -f '{{.State.Running}}' test1)\" = 'false' ]\ndocker_ start test1\n[ \"$(docker_ inspect -f '{{.State.Running}}' test1)\" = 'true' ]\ndocker_ stop test1\n[ \"$(docker_ inspect -f '{{.State.Running}}' test1)\" = 'false' ]\ndocker_ rm test1\n\n[ \"$(docker_ ps -aq | wc -l)\" = '0' ]\n"
  },
  {
    "path": "test/tests/docker-registry-push-pull/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\ncase \"${image##*/}\" in\n\tdocker:*dind*)\n\t\tdockerImage=\"$image\"\n\t\tregistryImage='registry'\n\t\tif ! docker image inspect \"$registryImage\" &> /dev/null; then\n\t\t\tdocker pull \"$registryImage\" > /dev/null\n\t\tfi\n\t\t;;\n\tregistry:*|registry)\n\t\tregistryImage=\"$image\"\n\t\tdockerImage='docker:dind'\n\t\tif ! docker image inspect \"$dockerImage\" &> /dev/null; then\n\t\t\tdocker pull \"$dockerImage\" > /dev/null\n\t\tfi\n\t\t;;\n\t*)\n\t\techo >&2 \"error: unable to determine whether '$image' is registry or docker:dind\"\n\t\texit 1\n\t\t;;\nesac\n\nrhostname='reg.example.com'\nrnamespace=\"${rhostname}:5000\"\n\nrcname=\"docker-registry-container-$RANDOM-$RANDOM\"\nrcid=\"$(\n\tdocker run -d -it \\\n\t\t--hostname \"$rhostname\" \\\n\t\t--name \"$rcname\" \\\n\t\t\"$registryImage\"\n)\"\ntrap \"docker rm -vf $rcid > /dev/null\" EXIT\n\ndcname=\"docker-daemon-container-$RANDOM-$RANDOM\"\ndcid=\"$(\n\tdocker run -d -it \\\n\t\t--privileged \\\n\t\t--link \"$rcid\":\"$rhostname\" \\\n\t\t--name \"$dcname\" \\\n\t\t-e DOCKER_TLS_CERTDIR=/certs -v /certs \\\n\t\t\"$dockerImage\" \\\n\t\t--insecure-registry \"$rnamespace\"\n)\"\ntrap \"docker rm -vf $rcid $dcid > /dev/null\" EXIT\n\ndocker_() {\n\tdocker run --rm -i \\\n\t\t--link \"$dcid\":docker \\\n\t\t-e DOCKER_TLS_CERTDIR=/certs --volumes-from \"$dcid:ro\" \\\n\t\t--entrypoint docker-entrypoint.sh \\\n\t\t\"$dockerImage\" \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" --tries 30 'docker_ version'\n\n[ \"$(docker_ images -q | wc -l)\" = '0' ]\ndocker_ pull busybox\n[ \"$(docker_ images -q | wc -l)\" = '1' ]\n\ndocker_ tag busybox \"$rnamespace/busybox\"\ndocker_ push \"$rnamespace/busybox\"\n\ndocker_ rmi busybox \"$rnamespace/busybox\"\n[ \"$(docker_ images -q | wc -l)\" = '0' ]\ndocker_ pull \"$rnamespace/busybox\"\n[ \"$(docker_ images -q | wc -l)\" = '1' ]\n\ndocker_ run --rm \"$rnamespace/busybox\" true\n"
  },
  {
    "path": "test/tests/eclipse-mosquitto-basics/mosquitto.conf",
    "content": "listener 1883\nallow_anonymous true\n"
  },
  {
    "path": "test/tests/eclipse-mosquitto-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\n# Test basic mosquitto broker and clients operation.\n#\n# 1. Run the broker. \n# 2. Use mosquitto_pub to publish a retained message with a random payload to a\n#    random topic\n# 3. Use mosquitto_sub to subscribe to the random topic, and retrieve the\n#    payload.\n# \n# mosquitto_sub times out after two seconds if the message is not delivered.\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Create an instance of the container-under-test\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/eclipse-mosquitto-basics \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/mosquitto.conf /mosquitto/config/\nEOD\n\ncname=\"eclipse-mosquitto-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d \\\n\t--name \"$cname\" \\\n\t\"$serverImage\")\"\n\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_publish() {\n\tlocal topic=\"${1}\"\n\tshift\n\n\tlocal payload=\"${1}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":eclipse-mosquitto \\\n\t\t\"$serverImage\" \\\n\t\tmosquitto_pub \\\n\t\t\t-t $topic \\\n\t\t\t-m ${payload} \\\n\t\t\t-r \\\n\t\t\t-h eclipse-mosquitto\n}\n\n_subscribe() {\n\tlocal topic=\"${1}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":eclipse-mosquitto \\\n\t\t\"$serverImage\" \\\n\t\tmosquitto_sub \\\n\t\t\t-t $topic \\\n\t\t\t-C 1 \\\n\t\t\t-W 2 \\\n\t\t\t-h eclipse-mosquitto\n}\n\ntopic=\"topic-$RANDOM\"\npayload=\"$RANDOM\"\n\n. \"$dir/../../retry.sh\" --tries 20 \"_publish $topic $payload\"\n\nresponse=\"$(_subscribe $topic)\"\n[[ \"$response\" == \"$payload\" ]]\n"
  },
  {
    "path": "test/tests/elixir-hello-world/container.exs",
    "content": "#!/usr/bin/env elixir\n\nIO.puts \"Hello World!\""
  },
  {
    "path": "test/tests/elixir-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/erlang-hello-world/container.erl",
    "content": "#!/usr/bin/env escript\n\n-module('hello-world').\n\nmain(_) ->\n  io:format(\"Hello World!~n\").\n"
  },
  {
    "path": "test/tests/erlang-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/gcc-c-hello-world/container.c",
    "content": "#include <stdio.h>\n\nint main() {\n\tprintf(\"Hello World!\\n\");\n\treturn 0;\n}\n"
  },
  {
    "path": "test/tests/gcc-c-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/gcc-cpp-hello-world/container.cpp",
    "content": "#include <iostream>\n\nint main() {\n\tstd::cout << \"Hello World!\\n\";\n\treturn 0;\n}\n"
  },
  {
    "path": "test/tests/gcc-cpp-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/ghost-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nmysqlImage='mysql:lts'\n# ensure the mysqlImage is ready and available\nif ! docker image inspect \"$mysqlImage\" &> /dev/null; then\n\tdocker pull \"$mysqlImage\" > /dev/null\nfi\nmysqlUser=\"user-$RANDOM\"\nmysqlPassword=\"password-$RANDOM\"\nmysqlDatabase=\"database-$RANDOM\"\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(\n\tdocker run -d \\\n\t\t-e MYSQL_RANDOM_ROOT_PASSWORD=1 \\\n\t\t-e MYSQL_USER=\"$mysqlUser\" \\\n\t\t-e MYSQL_PASSWORD=\"$mysqlPassword\" \\\n\t\t-e MYSQL_DATABASE=\"$mysqlDatabase\" \\\n\t\t\"$mysqlImage\"\n)\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\n\n# \"Unknown database error\" / \"ECONNREFUSED\" (and Ghost just crashing hard)\n. \"$dir/../../retry.sh\" --tries 30 'docker exec -i -e MYSQL_PWD=\"$mysqlPassword\" \"$mysqlCid\" mysql -h127.0.0.1 -u\"$mysqlUser\" --silent \"$mysqlDatabase\" <<<\"SELECT 1\"'\n\ncid=\"$(\n\tdocker run -d \\\n\t\t--link \"$mysqlCid\":dbhost \\\n\t\t-e database__client=mysql \\\n\t\t-e database__connection__host=dbhost \\\n\t\t-e database__connection__user=\"$mysqlUser\" \\\n\t\t-e database__connection__password=\"$mysqlPassword\" \\\n\t\t-e database__connection__database=\"$mysqlDatabase\" \\\n\t\t\"$serverImage\"\n)\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":ghost \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fs --max-time 15 -X\"$method\" \"$@\" \"http://ghost:2368/${url#/}\"\n}\n\n# Make sure that Ghost is listening and ready\n. \"$dir/../../retry.sh\" '_request GET / --output /dev/null'\n\n# Check that /ghost/ redirects to setup (the image is unconfigured by default)\nghostVersion=\"$(docker inspect --format '{{range .Config.Env}}{{ . }}{{\"\\n\"}}{{end}}' \"$serverImage\" | awk -F= '$1 == \"GHOST_VERSION\" { print $2 }')\"\ncase \"$ghostVersion\" in\n\t4.*) _request GET '/ghost/api/v4/admin/authentication/setup/' | grep 'status\":false' > /dev/null ;;\n\t*) _request GET '/ghost/api/admin/authentication/setup/' | grep 'status\":false' > /dev/null ;;\nesac\n"
  },
  {
    "path": "test/tests/golang-hello-world/container.go",
    "content": "package main\n\nimport \"fmt\"\n\nfunc main() {\n\tfmt.Printf(\"Hello World!\\n\")\n}\n"
  },
  {
    "path": "test/tests/golang-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/golang-hello-world/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nif [[ \"${image##*/}\" == gcc:4* ]]; then\n\techo >&2 'warning: gcc 4.x does not support Go'\n\tcat \"$dir/expected-std-out.txt\" # cheaters gunna cheat\n\texit\nfi\n\nexec \"$dir/real-run.sh\" \"$@\"\n"
  },
  {
    "path": "test/tests/haproxy-basics/haproxy.cfg",
    "content": "defaults\n\tmode tcp\n\ttimeout connect 100ms\n\ttimeout client  100ms\n\ttimeout server  100ms\n\tretry-on all-retryable-errors\n\tretries 5\n\nfrontend front\n\tbind *:80\n\tdefault_backend back\n\nbackend back\n\tserver httpd httpd\n"
  },
  {
    "path": "test/tests/haproxy-basics/run.sh",
    "content": "#!/bin/bash\n\n[ \"$DEBUG\" ] && set -x\n\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n_curl() {\n\tlocal container=\"$1\"; shift\n\tlocal url=\"$1\"; shift\n\tdocker run --rm --interactive \\\n\t\t--link \"$container\":container \\\n\t\t\"$clientImage\" \\\n\t\tcurl \\\n\t\t-fsSL \\\n\t\t--connect-to '::container:' \\\n\t\t\"http://container/${url%/}\"\n}\n\nhttpdImage='busybox'\n# ensure the httpdImage is ready and available\nif ! docker image inspect \"$httpdImage\" &> /dev/null; then\n\tdocker pull \"$httpdImage\" > /dev/null\nfi\nhttpdText=\"hello from httpd $RANDOM $RANDOM $RANDOM\"\nhttpd=\"$(docker run -d --rm --init \"$httpdImage\" sh -euxc 'echo \"$@\" > index.html && exec httpd -f' -- \"$httpdText\")\"\ntrap \"docker rm -vf $httpd > /dev/null\" EXIT\n\ntestHttpd=\"$(_curl \"$httpd\" '/')\"\n[ \"$testHttpd\" = \"$httpdText\" ]\n\n# Create an instance of the container-under-test\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/haproxy-basics \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/haproxy.cfg /usr/local/etc/haproxy/\nEOD\ncid=\"$(docker run -d --link \"$httpd\":httpd \"$serverImage\")\"\ntrap \"docker rm -vf $cid $httpd > /dev/null\" EXIT\n\n#. \"$dir/../../retry.sh\" '_curl \"$cid\" / &> /dev/null'\n\nhaproxy=\"$(_curl \"$cid\" '/')\"\n[ \"$haproxy\" = \"$httpdText\" ]\n"
  },
  {
    "path": "test/tests/haskell-cabal/container.sh",
    "content": "#!/bin/bash\nset -e\n\ncabal update\ncabal install --lib primitive\n"
  },
  {
    "path": "test/tests/haskell-ghci/container.sh",
    "content": "#!/bin/bash\nset -e\n\n# Test that the REPL exists and 'works'.\necho | ghci\n"
  },
  {
    "path": "test/tests/haskell-runhaskell/container.hs",
    "content": "main = putStrLn \"Hello, World\"\n"
  },
  {
    "path": "test/tests/haskell-runhaskell/expected-std-out.txt",
    "content": "Hello, World\n"
  },
  {
    "path": "test/tests/haskell-stack/container.sh",
    "content": "#!/bin/bash\nset -e\n\n# stack mostly sends to stderr\nif ! stackResult=\"$(stack --resolver ghc-$(ghc --print-project-version) new myproject 2>&1 > /dev/null)\"; then\n\tcase \"$stackResult\" in\n\t\t*\"Unable to load global hints for\"*)\n\t\t\techo >&2 'skipping; stack does not yet support this Haskell version'\n\t\t\texit 0\n\t\t\t;;\n\t\t*)\n\t\t\techo >&2 'error: stack failed:'\n\t\t\techo >&2 \"$stackResult\"\n\t\t\texit 1\n\t\t\t;;\n\tesac\nfi\n\ncd myproject\nstack run 2> /dev/null\n"
  },
  {
    "path": "test/tests/haxe-haxelib-install/Container.hx",
    "content": "class Container {\n    static function main():Void {\n        switch (Sys.command(\"haxelib\", [\"install\", \"jQueryExtern\"])) {\n            case 0: //pass\n            case code: Sys.exit(code);\n        }\n    }\n}\n"
  },
  {
    "path": "test/tests/haxe-hello-world/Container.hx",
    "content": "class Container {\n    static function main():Void {\n        trace(\"Hello World!\");\n    }\n}\n"
  },
  {
    "path": "test/tests/haxe-hello-world/expected-std-out.txt",
    "content": "Container.hx:3: Hello World!\n"
  },
  {
    "path": "test/tests/hylang-hello-world/container.hy",
    "content": "(print \"Hello World!\")\n"
  },
  {
    "path": "test/tests/hylang-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/hylang-sh/container.hy",
    "content": "(require hyrule [-> comment])\n\n(->\n  (+ 2 2)\n  (print))\n\n(import os subprocess sys)\n(subprocess.check_call [sys.executable \"-m\" \"pip\" \"install\" \"-q\" \"sh==1.14.2\"]\n  :stdout sys.stderr\n  :env (dict os.environ\n    :PIP_DISABLE_PIP_VERSION_CHECK \"1\"\n    :PIP_NO_PYTHON_VERSION_WARNING \"1\"\n    :PIP_ROOT_USER_ACTION \"ignore\"))\n(comment PIP_DISABLE_PIP_VERSION_CHECK: ensure pip does not complain about a new version being available)\n(comment PIP_NO_PYTHON_VERSION_WARNING: or that a new version will no longer work with this python version)\n(comment PIP_ROOT_USER_ACTION: ensure pip does not complain about running about root)\n\n(import platform)\n\n(comment Windows is not supported by sh (sad day))\n(comment https://github.com/amoffat/sh/blob/608f4c3bf5ad75ad40035d03a9c5ffcce0898f07/sh.py#L33-L36)\n(if (= (.system platform) \"Windows\")\n  (defn echo [dashn num] (return num))\n  (import sh [echo]))\n\n(->\n  (+\n    (int (echo \"-n\" 21))\n    (int (echo \"-n\" 21)))\n  (print))\n"
  },
  {
    "path": "test/tests/hylang-sh/expected-std-out.txt",
    "content": "4\n42\n"
  },
  {
    "path": "test/tests/image-name.sh",
    "content": "#!/bin/bash\nset -e\n\n# usage: ./image-name.sh librarytest/something some/image:some-tag\n# output: librarytest/something:some-image-some-tag\n\nbase=\"$1\"; shift\ntag=\"$1\"; shift\n\necho \"$base:$(echo \"$tag\" | sed 's![:/]!-!g')\"\n"
  },
  {
    "path": "test/tests/java-ca-certificates/container.java",
    "content": "import java.net.URL;\n\npublic class container {\n\tpublic static void main(String[] args) {\n\t\ttry {\n\t\t\tnew URL(\"https://google.com\").openStream(); // force a CA certificate lookup\n\t\t\tSystem.exit(0);\n\t\t}\n\t\tcatch (Exception e) {\n\t\t\te.printStackTrace();\n\t\t}\n\t\tSystem.exit(1);\n\t}\n}\n"
  },
  {
    "path": "test/tests/java-hello-world/container.java",
    "content": "public class container {\n\t/**\n\t * Simple \"hello world\" to test the java can compile and/or run\n\t */\n\tpublic static void main(String[] args) {\n\t\tSystem.out.println(\"Hello World!\");\n\t\tSystem.exit(0);\n\t}\n}\n"
  },
  {
    "path": "test/tests/java-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/java-uimanager-font/container.java",
    "content": "import javax.swing.LookAndFeel;\nimport javax.swing.UIManager;\n\npublic class container {\n\tstatic int exitVal = 0;\n\n\t/**\n\t * Tests the UIManager a bit.\tDoing this kills a lot of OpenJDK builds.\n\t *\n\t * Note these functions are used in a headless application, a web app.\n\t * The fonts are needed to create PDFs reliably.\n\t *\n\t * If this succeeds, the first line it prints to stdout is Success\n\t * and it returns a return code (exit value) of 0 (zero)\n\t *\n\t * If there's a failure, the first line consists of Failed, and the return code is 1 (one)\n\t */\n\tpublic static void main(String[] args) {\n\t\t\n\t\ttry {\n\t\t\tString family = UIManager.getFont(\"Label.font\").getFamily();\n\t\t} catch (Throwable t) {\n\t\t\tbad(\"Could not get the default font's family\", t);\n\t\t}\n\n\t\ttry {\n\t\t\tLookAndFeel look = UIManager.getLookAndFeel();\n\t\t} catch (Throwable t) {\n\t\t\tbad(\"Error getting the look and feel class name\", t);\n\t\t}\n\n\t\ttry {\n\t\t\tLookAndFeel metal = new javax.swing.plaf.metal.MetalLookAndFeel();\n\t\t\tUIManager.setLookAndFeel(metal);\n\t\t\tString family = UIManager.getFont(\"Label.font\").getFamily();\n\t\t} catch (Throwable t) {\n\t\t\tbad(\"Error making a Metal look/feel, setting it to the UIManager, or getting its font...\", t);\n\t\t}\n\n\t\tSystem.exit(exitVal);\n\t}\n\n\tprivate static void bad(String msg, Throwable t) {\n\t\texitVal = 1;\n\t\tSystem.err.println(msg);\n\t\tt.printStackTrace(System.err);\n\t}\n}\n"
  },
  {
    "path": "test/tests/jetty-hello-web/index.jsp",
    "content": "<%= request.getParameter(\"hello\") %>\n"
  },
  {
    "path": "test/tests/jetty-hello-web/run.sh",
    "content": "#!/bin/bash\n\n[ \"$DEBUG\" ] && set -x\n\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/jetty-hello-web \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/index.jsp /var/lib/jetty/webapps/ROOT/\nEOD\n\nif [[ $image == *\"12.\"* ]]; then\n\tcid=\"$(docker run -d \"$serverImage\" sh -c 'java -jar $JETTY_HOME/start.jar --add-to-start=ee10-deploy,ee10-jsp ; /docker-entrypoint.sh')\"\nelse\n\tcid=\"$(docker run -d \"$serverImage\")\"\nfi\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":jetty \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fs -X\"$method\" \"$@\" \"http://jetty:8080/$url\"\n}\n\n# Make sure that Jetty is listening on port 8080\n. \"$dir/../../retry.sh\" --tries 40 --sleep 0.25 '[ \"$(_request GET / --output /dev/null || echo $?)\" != 7 ]'\n\n# Check that we can request /index.jsp with no params\n[ \"$(_request GET \"/\" | tail -1)\" = \"null\" ]\n\n# Check that our index.jsp echoes the value of the \"hello\" param\nhello=\"world-$RANDOM-$RANDOM\"\n[ \"$(_request GET \"/?hello=$hello\" | tail -1)\" = \"$hello\" ]\n"
  },
  {
    "path": "test/tests/julia-downloads/container.jl",
    "content": "# https://github.com/docker-library/julia/pull/6\ndownload(\"https://google.com\")\n\n# https://github.com/docker-library/julia/pull/9\nif VERSION.major > 0 || (VERSION.major == 0 && VERSION.minor >= 7)\n\t# https://github.com/docker-library/julia/pull/21\n\t# https://github.com/JuliaLang/julia/tree/v0.7.0-beta2/stdlib/Pkg\n\tusing Pkg\nend\nPkg.add(\"JSON\")\n"
  },
  {
    "path": "test/tests/julia-hello-world/container.jl",
    "content": "println(\"Hello World!\")\n"
  },
  {
    "path": "test/tests/julia-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/logstash-basics/run.sh",
    "content": "#!/bin/bash\n\n[ \"$DEBUG\" ] && set -x\n\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\n# input via HTTP (default port 0.0.0.0:8080)\n# output via stdout, newline-delimited nothing-but-the-message\nconfig='\n\tinput {\n\t\thttp {\n\t\t}\n\t}\n\toutput {\n\t\tstdout {\n\t\t\tcodec => line {\n\t\t\t\tformat => \"%{message}\"\n\t\t\t}\n\t\t}\n\t}\n'\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$image\" -e \"$config\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\t# https://github.com/docker/docker/issues/14203#issuecomment-129865960 (DOCKER_FIX)\n\tdocker run --rm \\\n\t\t--link \"$cid\":logstash \\\n\t\t-e DOCKER_FIX='                                        ' \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fs \"$@\" \"http://logstash:8080\"\n}\n\n_trimmed() {\n\t_request \"$@\" | sed -r 's/^[[:space:]]+|[[:space:]]+$//g'\n}\n\n_req-comp() {\n\tlocal expected=\"$1\"; shift\n\tresponse=\"$(_trimmed \"$@\")\"\n\t[ \"$response\" = \"$expected\" ]\n}\n\n_req-exit() {\n\tlocal expectedRet=\"$1\"; shift\n\t[ \"$(_request \"$@\" --output /dev/null || echo \"$?\")\" = \"$expectedRet\" ]\n}\n\n_req-msg() {\n\tlocal msg=\"$1\"; shift\n\t_req-comp 'ok' --data \"$msg\"\n\t# use \"retry.sh\" to give logstash just a tiny bit of time to actually print the message to stdout\n\t. \"$dir/../../retry.sh\" --tries 3 --sleep 0.5 '\n\t\tlogLine=\"$(docker logs --tail=1 \"$cid\")\";\n\t\t[ \"$logLine\" = \"$msg\" ];\n\t'\n}\n\n# Make sure our container is listening\n. \"$dir/../../retry.sh\" --tries 60 '! _req-exit 7' # \"Failed to connect to host.\"\n\nfor msg in \\\n\t'hi' \\\n\t\"hello $RANDOM world\" \\\n\t\"hello $RANDOM world\" \\\n\t\"hello $RANDOM world\" \\\n\t'bye' \\\n; do\n\t_req-msg \"$msg\"\ndone\n"
  },
  {
    "path": "test/tests/matomo-apache-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\nserverImage=\"$1\"\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":apache \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsL -X\"$method\" \"$@\" \"http://apache/$url\"\n}\n\n# Make sure that Apache is listening and ready\n. \"$dir/../../retry.sh\" --tries 10 '_request GET / --output /dev/null'\n\n# Check that we can request / and that it contains the word \"installation\" somewhere\n_request GET '/' | grep -i installation > /dev/null\n"
  },
  {
    "path": "test/tests/matomo-fpm-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Build a client image with cgi-fcgi for testing\nclientImage='librarytest/matomo-fpm-run:fcgi-client'\nif ! error=\"$(docker build -t \"$clientImage\" - 2>&1 <<-'EOF'\n\tFROM debian:trixie-slim\n\n\tRUN set -x && apt-get update && apt-get install -y --no-install-recommends libfcgi-bin && apt-get dist-clean\n\n\tENTRYPOINT [\"cgi-fcgi\"]\n\tEOF\n)\"; then\n\techo \"$error\" >&2\n\texit 1\nfi\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nfcgi-request() {\n\tlocal method=\"$1\"\n\n\tlocal url=\"$2\"\n\tlocal queryString=\n\tif [[ \"$url\" == *\\?* ]]; then\n\t\tqueryString=\"${url#*\\?}\"\n\t\turl=\"${url%%\\?*}\"\n\tfi\n\n\tdocker run --rm -i --link \"$cid\":fpm \\\n\t\t-e REQUEST_METHOD=\"$method\" \\\n\t\t-e SCRIPT_NAME=\"$url\" \\\n\t\t-e SCRIPT_FILENAME=/var/www/html/\"${url#/}\" \\\n\t\t-e QUERY_STRING=\"$queryString\" \\\n\t\t-e HTTP_HOST='localhost' \\\n\t\t\"$clientImage\" \\\n\t\t-bind -connect fpm:9000\n}\n\n# Make sure that PHP-FPM is listening and ready\n. \"$dir/../../retry.sh\" --tries 10 'fcgi-request GET /index.php' > /dev/null 2>&1\n\n# check that it contains the word \"installation\" somewhere\nfcgi-request GET '/index.php' | grep -i installation > /dev/null\n"
  },
  {
    "path": "test/tests/memcached-basics/run.sh",
    "content": "#!/bin/bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# for \"nc\"\nclientImage='busybox'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\ncname=\"memcached-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n# usage: memcached-command command-line [extra-line ...]\n#    ie: memcached-command 'stats'\n#        memcached-command 'set a 0 0 2' 'hi'\nmemcached-command() {\n\t{\n\t\tfor line; do\n\t\t\techo -n \"$line\"$'\\r\\n'\n\t\tdone\n\t} \\\n\t\t| docker run --rm -i \\\n\t\t\t--link \"$cname\":memcached \\\n\t\t\t\"$clientImage\" \\\n\t\t\tnc memcached 11211 \\\n\t\t| tr -d '\\r'\n}\n\n# https://github.com/memcached/memcached/blob/d9dfbe0e2613b9c20cb3c4fdd3c55d1bf3a8c8bd/doc/protocol.txt#L129-L205\nmemcached-set() {\n\tlocal key=\"$1\"; shift\n\tlocal flags=\"$1\"; shift\n\tlocal exptime=\"$1\"; shift\n\tlocal value=\"$1\"; shift\n\n\tlocal bytes=\"$(echo -n \"$value\" | wc -c)\"\n\n\tmemcached-command \\\n\t\t\"set $key $flags $exptime $bytes\" \\\n\t\t\"$value\"\n}\n\n# https://github.com/memcached/memcached/blob/d9dfbe0e2613b9c20cb3c4fdd3c55d1bf3a8c8bd/doc/protocol.txt#L213-L247\nmemcached-get() {\n\tlocal key=\"$1\"; shift\n\n\tmemcached-command \\\n\t\t\"get $key\"\n}\n\nmemcached-conn-test() {\n\tmemcached-command 'stats' > /dev/null\n}\n\n. \"$dir/../../retry.sh\" 'memcached-conn-test'\n\nvalue='somevalue'\nres=\"$(memcached-set mykey 0 0 \"$value\")\"\nexp='STORED'\n[ \"$res\" = \"$exp\" ]\n\nvalLen=\"$(echo -n \"$value\" | wc -c)\"\nres=\"$(memcached-get mykey)\"\nexp='VALUE mykey 0 '\"$valLen\"$'\\n'\"$value\"$'\\n''END'\n[ \"$res\" = \"$exp\" ]\n"
  },
  {
    "path": "test/tests/mongo-basics/run.sh",
    "content": "#!/bin/bash\nset -e\n\nimage=\"$1\"\n\ncname=\"mongo-container-$RANDOM-$RANDOM\"\nmongodRunArgs=( -d --name \"$cname\" --cap-add SYS_NICE ) # SYS_NICE is for NUMA (needed for MongoDB 3.6 on NUMA-enabled hosts)\nmongodCmdArgs=()\n\nmongo='mongo'\nmongoArgs=( --host mongo )\ncountFunc='function count(coll) { return coll.count() }' # count(db.test)\nupsertFunc='function upsert(coll, doc) { return coll.save(doc) }' # upsert(db.test, { _id: 'foo', bar: 'baz' })\nif docker run --rm --entrypoint sh \"$image\" -c 'command -v mongosh > /dev/null'; then\n\tmongo='mongosh'\n\t# https://www.mongodb.com/docs/mongodb-shell/reference/compatibility/#std-label-compatibility\n\tcountFunc='function count(coll) { return coll.countDocuments() }' # https://www.mongodb.com/docs/manual/reference/method/db.collection.countDocuments/\n\tupsertFunc='function upsert(coll, doc) { return coll.initializeUnorderedBulkOp().find({ _id: doc._id }).upsert().replaceOne(doc).execute() }' # https://www.mongodb.com/docs/manual/reference/method/Bulk.find.upsert/#insert-for-bulk.find.replaceone--\nfi\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\ntestName=\"$(basename \"$testDir\")\" # \"mongo-basics\" or \"mongo-auth-basics\" or \"mongo-tls-auth\"\nif [[ \"$testName\" == *auth* ]]; then\n\trootUser=\"root-$RANDOM\"\n\trootPass=\"root-$RANDOM-$RANDOM-password\"\n\tmongodRunArgs+=(\n\t\t-e MONGO_INITDB_ROOT_USERNAME=\"$rootUser\"\n\t\t-e MONGO_INITDB_ROOT_PASSWORD=\"$rootPass\"\n\t)\n\tmongoArgs+=(\n\t\t--username=\"$rootUser\"\n\t\t--password=\"$rootPass\"\n\t\t--authenticationDatabase='admin'\n\t)\nfi\nif [[ \"$testName\" == *tls* ]]; then\n\ttlsImage=\"$(\"$testDir/../image-name.sh\" librarytest/mongo-tls \"$image\")\"\n\t\"$testDir/../docker-build.sh\" \"$testDir\" \"$tlsImage\" <<-EOD\n\t\tFROM alpine:3.22 AS certs\n\t\tRUN apk add --no-cache openssl\n\t\tRUN set -eux; \\\n\t\t\tmkdir /certs; \\\n\t\t\topenssl genrsa -out /certs/ca-private.key 8192; \\\n\t\t\topenssl req -new -x509 \\\n\t\t\t\t-key /certs/ca-private.key \\\n\t\t\t\t-out /certs/ca.crt \\\n\t\t\t\t-days $(( 365 * 30 )) \\\n\t\t\t\t-subj '/CN=lolca'; \\\n\t\t\topenssl genrsa -out /certs/private.key 4096; \\\n\t\t\topenssl req -new -key /certs/private.key \\\n\t\t\t\t-out /certs/cert.csr -subj '/CN=mongo'; \\\n\t\t\topenssl x509 -req -in /certs/cert.csr \\\n\t\t\t\t-CA /certs/ca.crt -CAkey /certs/ca-private.key -CAcreateserial \\\n\t\t\t\t-out /certs/cert.crt -days $(( 365 * 30 )); \\\n\t\t\topenssl verify -CAfile /certs/ca.crt /certs/cert.crt\n\n\t\tFROM $image\n\t\t# gotta be :0 because percona's mongo doesn't have a mongodb group and estesp slayed tianon with https://github.com/moby/moby/commit/a1183dda578f531ef65766611f9e16a0636e3a17#diff-2d1cd0cbc407f38960e628655d0f29f3bf49219da7be0d1f60d2ba42a8b10bfcR170-R171\n\t\tCOPY --from=certs --chown=mongodb:0 /certs /certs\n\t\tRUN cat /certs/cert.crt /certs/private.key > /certs/both.pem # yeah, what\n\tEOD\n\timage=\"$tlsImage\"\n\tmongodRunArgs+=(\n\t\t--hostname mongo\n\t)\n\tmongodCmdArgs+=(\n\t\t--tlsMode requireTLS\n\t\t--tlsCAFile /certs/ca.crt # https://jira.mongodb.org/browse/SERVER-72839\n\t\t--tlsCertificateKeyFile /certs/both.pem\n\t\t--tlsAllowConnectionsWithoutCertificates # likely unintended consequence of https://jira.mongodb.org/browse/SERVER-72839 is that we now have to set *either* --tlsCAFile or \"tlsUseSystemCA\" but the catch is that the latter can *only* be set via the config file and setting the former changes the default behavior to require mutual TLS 🙃\n\t)\n\tmongoArgs+=(\n\t\t--tls\n\t\t--tlsCAFile /certs/ca.crt\n\t)\nfi\n\ncid=\"$(docker run \"${mongodRunArgs[@]}\" \"$image\" \"${mongodCmdArgs[@]}\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nmongo() {\n\tdocker run --rm -i --cap-add SYS_NICE \\\n\t\t--link \"$cname\":mongo \\\n\t\t--entrypoint \"$mongo\" \\\n\t\t\"$image\" \\\n\t\t\"${mongoArgs[@]}\" \"$@\"\n}\n\nmongo_eval() {\n\tlocal eval=\"$1\"; shift\n\tmongo --quiet --eval \"$countFunc; $upsertFunc; $eval\" \"$@\"\n}\nmongo_eval_67788() {\n\t# workaround for https://jira.mongodb.org/browse/SERVER-67788\n\tlocal -\n\tshopt -s extglob\n\tlocal out\n\tout=\"$(mongo_eval \"$@\")\"\n\techo \"${out##+([^0-9]*$'\\n')}\"\n}\n\n. \"$testDir/../../retry.sh\" \"mongo_eval 'quit(db.stats().ok ? 0 : 1);'\"\n\nif false; then\ntries=10\nwhile ! mongo_eval 'quit(db.stats().ok ? 0 : 1);' &> /dev/null; do\n\t(( tries-- ))\n\tif [ $tries -le 0 ]; then\n\t\techo >&2 'mongod failed to accept connections in a reasonable amount of time!'\n\t\t( set -x && docker logs \"$cid\" ) >&2 || true\n\t\tmongo --eval 'db.stats();' # to hopefully get a useful error message\n\t\tfalse\n\tfi\n\techo >&2 -n .\n\tsleep 2\ndone\nfi\n\n[ \"$(mongo_eval_67788 'count(db.test);')\" = 0 ]\nmongo_eval 'upsert(db.test, { _id: 1, a: 2, b: 3, c: \"hello\" });' > /dev/null\n[ \"$(mongo_eval_67788 'count(db.test);')\" = 1 ]\nmongo_eval 'upsert(db.test, { _id: 1, a: 3, b: 4, c: \"hello\" });' > /dev/null\n[ \"$(mongo_eval_67788 'count(db.test);')\" = 1 ]\n[ \"$(mongo_eval_67788 'db.test.findOne().a;')\" = 3 ]\n\n[ \"$(mongo_eval_67788 'count(db.test2);')\" = 0 ]\nmongo_eval 'upsert(db.test2, { _id: \"abc\" });' > /dev/null\n[ \"$(mongo_eval_67788 'count(db.test2);')\" = 1 ]\n[ \"$(mongo_eval_67788 'count(db.test);')\" = 1 ]\nmongo_eval 'db.test2.drop();' > /dev/null\n[ \"$(mongo_eval_67788 'count(db.test2);')\" = 0 ]\n[ \"$(mongo_eval_67788 'count(db.test);')\" = 1 ]\n[ \"$(mongo_eval_67788 'count(db.test);' database-that-does-not-exist)\" = 0 ]\n\nmongo_eval 'db.dropDatabase();' > /dev/null\n[ \"$(mongo_eval_67788 'count(db.test);')\" = 0 ]\n"
  },
  {
    "path": "test/tests/mongo-express-run/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nmongoImage='mongo:8'\n# ensure the mongoImage is ready and available\nif ! docker image inspect \"$mongoImage\" &> /dev/null; then\n\tdocker pull \"$mongoImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmongoCid=\"$(docker run -d \"$mongoImage\")\"\ntrap \"docker rm -vf $mongoCid > /dev/null\" EXIT\ncid=\"$(docker run \\\n\t--detach \\\n\t--link \"$mongoCid\":mongo \\\n\t--env ME_CONFIG_BASICAUTH_USERNAME=\"test-user\" \\\n\t--env ME_CONFIG_BASICAUTH_PASSWORD=\"test-password\" \\\n\t\"$serverImage\"\n)\"\ntrap \"docker rm -vf $cid $mongoCid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm --link \"$cid\":me \"$clientImage\" \\\n\t\tcurl -fsL -X\"$method\" \"$@\" \"http://me:8081/$url\"\n}\n\n# make sure that mongo-express is listening and ready\n. \"$dir/../../retry.sh\" '_request GET / --output /dev/null --user test-user:test-password'\n\n# if we evetually got a \"200 OK\" response from mongo-express, it should be ~working fine!\n# (since it fails to even start if it can't connect to MongoDB, etc)\n"
  },
  {
    "path": "test/tests/monica-apache-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ndbImage='mysql:lts'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d \\\n\t-e MYSQL_RANDOM_ROOT_PASSWORD=true \\\n\t-e MYSQL_DATABASE=monica \\\n\t-e MYSQL_USER=monica \\\n\t-e MYSQL_PASSWORD=secret \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\n\ncid=\"$(docker run -d \\\n\t--link \"$mysqlCid\":mysql \\\n\t-e DB_HOST=mysql \\\n\t-e DB_CONNECTION=mysql \\\n\t-e DB_DATABASE=monica \\\n\t-e DB_USERNAME=monica \\\n\t-e DB_PASSWORD=secret \\\n\t\"$image\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm --link \"$cid\":apache \"$image\" \\\n\t\tcurl -fsL -X\"$method\" \"$@\" \"http://apache/$url\"\n}\n\n# Make sure that Apache is listening and ready\n. \"$dir/../../retry.sh\" --tries 30 '_request GET / --output /dev/null'\n\n# Check that we can request / and that it contains the pattern \"Monica\" somewhere\n_request GET '/' | grep -i \"Monica\" > /dev/null\n"
  },
  {
    "path": "test/tests/monica-cli/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ndbImage='mysql:lts'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d \\\n\t-e MYSQL_RANDOM_ROOT_PASSWORD=true \\\n\t-e MYSQL_DATABASE=monica \\\n\t-e MYSQL_USER=monica \\\n\t-e MYSQL_PASSWORD=secret \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\n\ncid=\"$(docker run -d \\\n\t--link \"$mysqlCid\":mysql \\\n\t-e DB_HOST=mysql \\\n\t-e DB_CONNECTION=mysql \\\n\t-e DB_DATABASE=monica \\\n\t-e DB_USERNAME=monica \\\n\t-e DB_PASSWORD=secret \\\n\t\"$image\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\n_artisan() {\n\tdocker exec \"$cid\" php artisan \"$@\"\n}\n\n# returns success when all database migrations are finished\n_migrate_done() {\n\tlocal status\n\tstatus=\"$(_artisan migrate:status)\"\n\tif grep -q ' Ran' <<<\"$status\" && ! grep -q ' Pending' <<<\"$status\"; then\n\t\treturn 0\n\tfi\n\treturn 1\n}\n\n# check artisan command for specific output; print and error when not found\n_artisan_test() {\n\tlocal match=\"$1\"; shift\n\toutput=\"$(_artisan \"$@\")\"\n\tif ! grep -iq \"$match\" <<<\"$output\"; then\n\t\techo \"Match: '$match' not found in: $output\"\n\t\treturn 1\n\tfi\n}\n\n# Give some time to install\n. \"$dir/../../retry.sh\" --tries 30 '_migrate_done'\n\n# Check if installation is complete\n_artisan monica:getversion > /dev/null\n. \"$dir/../../retry.sh\" --tries 5 -- _artisan_test 'No scheduled commands are ready to run.' schedule:run\n"
  },
  {
    "path": "test/tests/monica-cli-mariadb10/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ndbImage='mariadb:10'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d \\\n\t-e MYSQL_RANDOM_ROOT_PASSWORD=true \\\n\t-e MYSQL_DATABASE=monica \\\n\t-e MYSQL_USER=monica \\\n\t-e MYSQL_PASSWORD=secret \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\n\ncid=\"$(docker run -d \\\n\t--link \"$mysqlCid\":mysql \\\n\t-e DB_HOST=mysql \\\n\t-e DB_CONNECTION=mysql \\\n\t-e DB_DATABASE=monica \\\n\t-e DB_USERNAME=monica \\\n\t-e DB_PASSWORD=secret \\\n\t\"$image\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\n_artisan() {\n\tdocker exec \"$cid\" php artisan \"$@\"\n}\n\n# returns success when all database migrations are finished\n_migrate_done() {\n\tlocal status\n\tstatus=\"$(_artisan migrate:status)\"\n\tif grep -q ' Ran' <<<\"$status\" && ! grep -q ' Pending' <<<\"$status\"; then\n\t\treturn 0\n\tfi\n\treturn 1\n}\n\n# check artisan command for specific output; print and error when not found\n_artisan_test() {\n\tlocal match=\"$1\"; shift\n\toutput=\"$(_artisan \"$@\")\"\n\tif ! grep -iq \"$match\" <<<\"$output\"; then\n\t\techo \"Match: '$match' not found in: $output\"\n\t\treturn 1\n\tfi\n}\n\n# Give some time to install\n. \"$dir/../../retry.sh\" --tries 30 '_migrate_done'\n\n# Check if installation is complete\n_artisan monica:getversion > /dev/null\n. \"$dir/../../retry.sh\" --tries 5 -- _artisan_test 'No scheduled commands are ready to run.' schedule:run\n"
  },
  {
    "path": "test/tests/monica-cli-mysql8/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ndbImage='mysql:8'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d \\\n\t-e MYSQL_RANDOM_ROOT_PASSWORD=true \\\n\t-e MYSQL_DATABASE=monica \\\n\t-e MYSQL_USER=monica \\\n\t-e MYSQL_PASSWORD=secret \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\n\ncid=\"$(docker run -d \\\n\t--link \"$mysqlCid\":mysql \\\n\t-e DB_HOST=mysql \\\n\t-e DB_CONNECTION=mysql \\\n\t-e DB_DATABASE=monica \\\n\t-e DB_USERNAME=monica \\\n\t-e DB_PASSWORD=secret \\\n\t\"$image\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\n_artisan() {\n\tdocker exec \"$cid\" php artisan \"$@\"\n}\n\n# returns success when all database migrations are finished\n_migrate_done() {\n\tlocal status\n\tstatus=\"$(_artisan migrate:status)\"\n\tif grep -q ' Ran' <<<\"$status\" && ! grep -q ' Pending' <<<\"$status\"; then\n\t\treturn 0\n\tfi\n\treturn 1\n}\n\n# check artisan command for specific output; print and error when not found\n_artisan_test() {\n\tlocal match=\"$1\"; shift\n\toutput=\"$(_artisan \"$@\")\"\n\tif ! grep -iq \"$match\" <<<\"$output\"; then\n\t\techo \"Match: '$match' not found in: $output\"\n\t\treturn 1\n\tfi\n}\n\n# Give some time to install\n. \"$dir/../../retry.sh\" --tries 30 '_migrate_done'\n\n# Check if installation is complete\n_artisan monica:getversion > /dev/null\n. \"$dir/../../retry.sh\" --tries 5 -- _artisan_test 'No scheduled commands are ready to run.' schedule:run\n"
  },
  {
    "path": "test/tests/monica-fpm-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Build a client image with cgi-fcgi for testing\nclientImage='librarytest/monica-fpm-run:fcgi-client'\nif ! error=\"$(docker build -t \"$clientImage\" - 2>&1 <<-'EOF'\n\tFROM debian:trixie-slim\n\n\tRUN set -x && apt-get update && apt-get install -y --no-install-recommends libfcgi-bin && apt-get dist-clean\n\n\tENTRYPOINT [\"cgi-fcgi\"]\n\tEOF\n)\"; then\n\techo \"$error\" >&2\n\texit 1\nfi\n\ndbImage='mysql:lts'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d \\\n\t-e MYSQL_RANDOM_ROOT_PASSWORD=true \\\n\t-e MYSQL_DATABASE=monica \\\n\t-e MYSQL_USER=monica \\\n\t-e MYSQL_PASSWORD=secret \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\n\ncid=\"$(docker run -d \\\n\t--link \"$mysqlCid\":mysql \\\n\t-e DB_HOST=mysql \\\n\t-e DB_CONNECTION=mysql \\\n\t-e DB_DATABASE=monica \\\n\t-e DB_USERNAME=monica \\\n\t-e DB_PASSWORD=secret \\\n\t\"$image\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\nfcgi-request() {\n\tlocal method=\"$1\"\n\n\tlocal url=\"$2\"\n\tlocal requestUri=\"$3\"\n\tlocal queryString=\n\tif [[ \"$url\" == *\\?* ]]; then\n\t\tqueryString=\"${url#*\\?}\"\n\t\turl=\"${url%%\\?*}\"\n\tfi\n\n\tdocker run --rm -i --link \"$cid\":fpm \\\n\t\t-e REQUEST_METHOD=\"$method\" \\\n\t\t-e SCRIPT_NAME=\"$url\" \\\n\t\t-e SCRIPT_FILENAME=/var/www/html/public/\"${url#/}\" \\\n\t\t-e QUERY_STRING=\"$queryString\" \\\n\t\t-e REQUEST_URI=\"$requestUri\" \\\n\t\t\"$clientImage\" \\\n\t\t-bind -connect fpm:9000\n}\n\n# Make sure that PHP-FPM is listening and ready\n. \"$dir/../../retry.sh\" --tries 30 'fcgi-request GET /index.php' > /dev/null 2>&1\n\n# Check that we can request /register and that it contains the pattern \"Monica\" somewhere\nfcgi-request GET '/index.php' register | grep -i \"Monica\" > /dev/null\n"
  },
  {
    "path": "test/tests/mysql-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nexport MYSQL_ROOT_PASSWORD='this is an example test password'\nexport MYSQL_USER='0123456789012345' # \"ERROR: 1470  String 'my cool mysql user' is too long for user name (should be no longer than 16)\"\nexport MYSQL_PASSWORD='my cool mysql password'\nexport MYSQL_DATABASE='my cool mysql database'\n\ncname=\"mysql-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-e MYSQL_ROOT_PASSWORD \\\n\t\t-e MYSQL_USER \\\n\t\t-e MYSQL_PASSWORD \\\n\t\t-e MYSQL_DATABASE \\\n\t\t--name \"$cname\" \\\n\t\t\"$image\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nmysql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":mysql \\\n\t\t--entrypoint sh \\\n\t\t-e MYSQL_PWD=\"$MYSQL_PASSWORD\" \\\n\t\t\"$image\" \\\n\t\t-euc 'if command -v mariadb > /dev/null; then exec mariadb \"$@\"; else exec mysql \"$@\"; fi' -- \\\n\t\t-hmysql \\\n\t\t-u\"$MYSQL_USER\" \\\n\t\t--silent \\\n\t\t\"$@\" \\\n\t\t\"$MYSQL_DATABASE\"\n}\n\n. \"$dir/../../retry.sh\" --tries 30 \"mysql -e 'SELECT 1'\"\n\necho 'CREATE TABLE test (a INT, b INT, c VARCHAR(255))' | mysql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 0 ]\necho 'INSERT INTO test VALUES (1, 2, \"hello\")' | mysql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 1 ]\necho 'INSERT INTO test VALUES (2, 3, \"goodbye!\")' | mysql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 2 ]\necho 'DELETE FROM test WHERE a = 1' | mysql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 1 ]\n[ \"$(echo 'SELECT c FROM test' | mysql)\" = 'goodbye!' ]\necho 'DROP TABLE test' | mysql\n"
  },
  {
    "path": "test/tests/mysql-initdb/initdb.sql",
    "content": "CREATE TABLE test (a INT, b INT, c VARCHAR(255));\nINSERT INTO test VALUES (1, 2, 'hello');\nINSERT INTO test VALUES (2, 3, 'goodbye!');\nDELETE FROM test WHERE a = 1;\n"
  },
  {
    "path": "test/tests/mysql-initdb/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/mysql-initdb \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/initdb.sql /docker-entrypoint-initdb.d/\nEOD\n\nexport MYSQL_ROOT_PASSWORD='this is an example test password'\nexport MYSQL_USER='0123456789012345' # \"ERROR: 1470  String 'my cool mysql user' is too long for user name (should be no longer than 16)\"\nexport MYSQL_PASSWORD='my cool mysql password'\nexport MYSQL_DATABASE='my cool mysql database'\n\ncname=\"mysql-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-e MYSQL_ROOT_PASSWORD \\\n\t\t-e MYSQL_USER \\\n\t\t-e MYSQL_PASSWORD \\\n\t\t-e MYSQL_DATABASE \\\n\t\t--name \"$cname\" \\\n\t\t\"$serverImage\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nmysql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":mysql \\\n\t\t--entrypoint sh \\\n\t\t-e MYSQL_PWD=\"$MYSQL_PASSWORD\" \\\n\t\t\"$image\" \\\n\t\t-euc 'if command -v mariadb > /dev/null; then exec mariadb \"$@\"; else exec mysql \"$@\"; fi' -- \\\n\t\t-hmysql \\\n\t\t-u\"$MYSQL_USER\" \\\n\t\t--silent \\\n\t\t\"$@\" \\\n\t\t\"$MYSQL_DATABASE\"\n}\n\n. \"$dir/../../retry.sh\" --tries 30 \"echo 'SELECT 1' | mysql\"\n\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 1 ]\n[ \"$(echo 'SELECT c FROM test' | mysql)\" = 'goodbye!' ]\n"
  },
  {
    "path": "test/tests/mysql-log-bin/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ncname=\"mysql-container-$RANDOM-$RANDOM\"\nrootpass=\"secret$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-e MYSQL_ROOT_PASSWORD=\"$rootpass\" \\\n\t\t--name \"$cname\" \\\n\t\t\"$image\" \\\n\t\t--log-bin=\"foo-$RANDOM\" \\\n\t\t--server-id=\"$RANDOM\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nmysql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":mysql \\\n\t\t--entrypoint sh \\\n\t\t\"$image\" \\\n\t\t-euc 'if command -v mariadb > /dev/null; then exec mariadb \"$@\"; else exec mysql \"$@\"; fi' -- \\\n\t\t-uroot \\\n\t\t-p\"$rootpass\" \\\n\t\t-hmysql \\\n\t\t--silent \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" --tries 30 \"echo 'SELECT 1' | mysql\"\n\n# yay, must be OK\n"
  },
  {
    "path": "test/tests/nextcloud-apache-run/real-run.sh",
    "content": "#!/bin/bash\nset -Eeo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n#trap \"docker logs $cid\" ERR\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":apache \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsL -X\"$method\" \"$@\" \"http://apache/$url\"\n}\n\n# Make sure that Apache is listening and ready\n. \"$dir/../../retry.sh\" --tries 10 --sleep 5 '_request GET / --output /dev/null'\n\n# Check that we can request / and that it contains the pattern \"Install\" somewhere\n# <input type=\"submit\" class=\"primary\" value=\"Install\" data-finishing=\"Installing …\">\n_request GET '/' | grep -i -F -- 'a safe home for all your data' > /dev/null\n# (https://github.com/nextcloud/server/blob/68b2463107774bed28ee9e77b44e7395d49dacee/core/templates/installation.php#L164)\n"
  },
  {
    "path": "test/tests/nextcloud-cli/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# the nextcloud tests are very flaky, so the intent of this test is to make sure at least *one* of them is succeeding\n\ndir=\"$(dirname \"$BASH_SOURCE\")\"\ntests=\"$(dirname \"$dir\")\"\n\nret=1\nfor t in \\\n\tnextcloud-cli-mysql \\\n\tnextcloud-cli-postgres \\\n\tnextcloud-cli-sqlite \\\n; do\n\tif \"$tests/$t/run.sh\" \"$@\"; then\n\t\tret=0\n\telse\n\t\techo >&2 \"note: '$t' failed (only fatal if all three do)\"\n\tfi\ndone\n\nexit \"$ret\"\n"
  },
  {
    "path": "test/tests/nextcloud-cli-mysql/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\ndbImage='mariadb:11'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\nserverImage=\"$1\"\ndbPass=\"test-$RANDOM-password-$RANDOM-$$\"\ndbName=\"test-$RANDOM-db\"\ndbUsr=\"test-$RANDOM-db\"\n\n# Create an instance of the container-under-test\ndbCid=\"$(docker run -d \\\n\t-e MYSQL_RANDOM_ROOT_PASSWORD=yes \\\n\t-e MYSQL_USER=\"$dbUsr\" \\\n\t-e MYSQL_PASSWORD=\"$dbPass\" \\\n\t-e MYSQL_DATABASE=\"$dbName\" \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $dbCid > /dev/null\" EXIT\ncid=\"$(docker run -d \\\n\t--link \"$dbCid\":db \\\n\t-e MYSQL_HOST=\"db\" \\\n\t-e MYSQL_USER=\"$dbUsr\" \\\n\t-e MYSQL_PASSWORD=\"$dbPass\" \\\n\t-e MYSQL_DATABASE=\"$dbName\" \\\n\t-e NEXTCLOUD_ADMIN_USER=\"test-$RANDOM-user\" \\\n\t-e NEXTCLOUD_ADMIN_PASSWORD=\"test-$RANDOM-password\" \\\n\t\"$serverImage\")\"\ntrap \"docker rm -vf $cid $dbCid > /dev/null\" EXIT\n\n_occ() {\n\tdocker exec -u www-data \"$cid\" php occ \"$@\"\n}\n\n# Give some time to install\n. \"$dir/../../retry.sh\" --tries 10 --sleep 5 '_occ app:list' > /dev/null\n\n# Check if NextCloud is installed\n_occ status | grep -iq 'installed: true'\n_occ check\n"
  },
  {
    "path": "test/tests/nextcloud-cli-postgres/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\ndbImage='postgres:18-alpine'\n# ensure the dbImage is ready and available\nif ! docker image inspect \"$dbImage\" &> /dev/null; then\n\tdocker pull \"$dbImage\" > /dev/null\nfi\nserverImage=\"$1\"\ndbPass=\"test-$RANDOM-password-$RANDOM-$$\"\ndbName=\"test_${RANDOM}_db\" # dbName has to be set to something that does not require escaping: https://github.com/docker-library/official-images/pull/6252#issuecomment-520095703\ndbUsr=\"test-$RANDOM-db\"\n\n# Create an instance of the container-under-test\n# not setting POSTGRES_DB due to https://github.com/nextcloud/docker/issues/345\ndbCid=\"$(docker run -d \\\n\t-e POSTGRES_USER=\"$dbUsr\" \\\n\t-e POSTGRES_PASSWORD=\"$dbPass\" \\\n\t-e POSTGRES_DB=\"$dbName\" \\\n\t\"$dbImage\")\"\ntrap \"docker rm -vf $dbCid > /dev/null\" EXIT\n# NEXTCLOUD_ADMIN_USER has to be set to something that does not require escaping: https://github.com/docker-library/official-images/pull/6252#issuecomment-520095703\ncid=\"$(docker run -d \\\n\t--link \"$dbCid\":db \\\n\t-e POSTGRES_HOST='db' \\\n\t-e POSTGRES_USER=\"$dbUsr\" \\\n\t-e POSTGRES_PASSWORD=\"$dbPass\" \\\n\t-e POSTGRES_DB=\"$dbName\" \\\n\t-e NEXTCLOUD_ADMIN_USER=\"test_$RANDOM\" \\\n\t-e NEXTCLOUD_ADMIN_PASSWORD=\"test-$RANDOM-password\" \\\n\t\"$serverImage\")\"\ntrap \"docker rm -vf $cid $dbCid > /dev/null\" EXIT\n\n_occ() {\n\tdocker exec -u www-data \"$cid\" php occ \"$@\"\n}\n\n# Give some time to install\n. \"$dir/../../retry.sh\" --tries 10 --sleep 5 '_occ app:list' > /dev/null\n\n# Check if NextCloud is installed\n_occ status | grep -iq 'installed: true'\n_occ check\n"
  },
  {
    "path": "test/tests/nextcloud-cli-sqlite/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\ndbName=\"test-$RANDOM-db\"\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \\\n\t-e SQLITE_DATABASE=\"$dbName\" \\\n\t-e NEXTCLOUD_ADMIN_USER=\"test-$RANDOM-user\" \\\n\t-e NEXTCLOUD_ADMIN_PASSWORD=\"test-$RANDOM-password\" \\\n\t\"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_occ() {\n\tdocker exec -u www-data \"$cid\" php occ \"$@\"\n}\n\n# Give some time to install\n. \"$dir/../../retry.sh\" --tries 10 --sleep 5 '_occ app:list' > /dev/null\n\n# Check if NextCloud is installed\n_occ status | grep -iq 'installed: true'\n_occ check\n"
  },
  {
    "path": "test/tests/nextcloud-fpm-run/real-run.sh",
    "content": "#!/bin/bash\nset -Eeo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Build a client image with cgi-fcgi for testing\nclientImage='librarytest/nextcloud-fpm-run:fcgi-client'\nif ! error=\"$(docker build -t \"$clientImage\" - 2>&1 <<-'EOF'\n\tFROM debian:trixie-slim\n\n\tRUN set -x && apt-get update && apt-get install -y --no-install-recommends libfcgi-bin && apt-get dist-clean\n\n\tENTRYPOINT [\"cgi-fcgi\"]\n\tEOF\n)\"; then\n\techo \"$error\" >&2\n\texit 1\nfi\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n#trap \"docker logs $cid\" ERR\n\nfcgi-request() {\n\tlocal method=\"$1\"\n\n\tlocal url=\"$2\"\n\tlocal queryString=\n\tif [[ \"$url\" == *\\?* ]]; then\n\t\tqueryString=\"${url#*\\?}\"\n\t\turl=\"${url%%\\?*}\"\n\tfi\n\n\tdocker run --rm -i \\\n\t\t--link \"$cid\":fpm \\\n\t\t-e REQUEST_METHOD=\"$method\" \\\n\t\t-e SCRIPT_NAME=\"$url\" \\\n\t\t-e SCRIPT_FILENAME=/var/www/html/\"${url#/}\" \\\n\t\t-e QUERY_STRING=\"$queryString\" \\\n\t\t\"$clientImage\" \\\n\t\t-bind -connect fpm:9000\n}\n\n# Make sure that PHP-FPM is listening and ready\n. \"$dir/../../retry.sh\" --tries 10 --sleep 5 'fcgi-request GET /index.php' > /dev/null 2>&1\n\n# Check that we can request / and that it contains the pattern \"Install\" somewhere\n# <input type=\"submit\" class=\"primary\" value=\"Install\" data-finishing=\"Installing …\">\nfcgi-request GET '/index.php' | grep -i -F -- 'a safe home for all your data' > /dev/null\n# (https://github.com/nextcloud/server/blob/68b2463107774bed28ee9e77b44e7395d49dacee/core/templates/installation.php#L164)\n"
  },
  {
    "path": "test/tests/no-hard-coded-passwords/run.sh",
    "content": "#!/usr/bin/env bash\nset -e\n\nIFS=$'\\n'\nuserPasswds=( $(docker run --rm --user 0:0 --entrypoint cut \"$1\" -d: -f1-2 /etc/passwd) )\nuserShadows=()\nif grep -qE ':x$' <<<\"${userPasswds[*]}\"; then\n\tuserShadows=( $(docker run --rm --user 0:0 --entrypoint cut \"$1\" -d: -f1-2 /etc/shadow || true) )\nfi\nunset IFS\n\ndeclare -A passwds=()\nfor userPasswd in \"${userPasswds[@]}\"; do\n\tuser=\"${userPasswd%%:*}\"\n\tpass=\"${userPasswd#*:}\"\n\tpasswds[$user]=\"$pass\"\ndone\nfor userShadow in \"${userShadows[@]}\"; do\n\tuser=\"${userShadow%%:*}\"\n\tif [ \"${passwds[$user]}\" = 'x' ]; then\n\t\tpass=\"${userShadow#*:}\"\n\t\tpasswds[$user]=\"$pass\"\n\tfi\ndone\n\nret=0\nfor user in \"${!passwds[@]}\"; do\n\tpass=\"${passwds[$user]}\"\n\n\tif [ -z \"$pass\" ]; then\n\t\t# for root this is a security vulnerability (see CVE-2019-5021, for example)\n\t\tif [ \"$user\" = 'root' ]; then\n\t\t\techo >&2 \"error: empty password detected for '$user'\"\n\t\t\tret=1\n\t\telse\n\t\t\techo >&2 \"warning: empty password detected for '$user'\"\n\t\tfi\n\t\tcontinue\n\tfi\n\n\tif [ \"$pass\" = '*' ]; then\n\t\t# \"If the password field contains some string that is not a valid result of crypt(3), for instance ! or *, the user will not be able to use a unix password to log in (but the user may log in the system by other means).\"\n\t\t# (Debian uses this for having default-provided accounts without a password but also without being explicitly locked, for example)\n\t\tcontinue\n\tfi\n\n\tif [ \"${pass:0:1}\" = '!' ]; then\n\t\t# '!anything' means \"locked\" password\n\t\t#echo >&2 \"warning: locked password detected for '$user': '$pass'\"\n\t\tcontinue\n\tfi\n\n\tif [ \"${pass:0:1}\" = '$' ]; then\n\t\t# gotta be crypt ($id$salt$encrypted), must be a fail\n\t\tif [[ \"$1\" == cirros* ]] && [ \"$user\" = 'cirros' ]; then\n\t\t\t# cirros is \"supposed\" to have a password for the cirros user\n\t\t\t# https://github.com/cirros-dev/cirros/tree/68771c7620ec100db4afb75dc4c145f4e49fe7fc#readme\n\t\t\techo >&2 \"warning: CirrOS has a password for the 'cirros' user (as intended)\"\n\t\t\tcontinue\n\t\tfi\n\t\techo >&2 \"error: crypt password detected for '$user': '$pass'\"\n\t\tret=1\n\t\tcontinue\n\tfi\n\n\techo >&2 \"warning: garbage password detected for '$user': '$pass'\"\ndone\n\nexit \"$ret\"\n"
  },
  {
    "path": "test/tests/node-hello-world/container.js",
    "content": "console.log(\"Hello World!\");\n"
  },
  {
    "path": "test/tests/node-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/nuxeo-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nNUXEO_TEST_SLEEP=5\nNUXEO_TEST_TRIES=10\n\ncname=\"nuxeo-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nget() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":nuxeo \\\n\t\t--entrypoint curl \\\n\t\t\"$image\" \\\n\t\t-fs \\\n\t\t\t-H \"Content-Type:application/json\" \\\n\t\t\t-u Administrator:Administrator \\\n\t\t\t\"http://nuxeo:8080/nuxeo/api/v1/$1\"\n}\n\npython() {\n\tdocker run --rm -i \\\n\t\t--entrypoint python \\\n\t\t\"$image\" \\\n\t\t\"$@\"\n}\n\nPATH1='default-domain/workspaces'\n\n. \"$dir/../../retry.sh\" \\\n\t--tries \"$NUXEO_TEST_TRIES\" \\\n\t--sleep \"$NUXEO_TEST_SLEEP\" \\\n\t\"get 'path/$PATH1'\"\n\n# First get a document by its path to get its id\nDUID=\"$(get \"path/$PATH1\" | python -c 'import json, sys; obj = json.load(sys.stdin); print(obj[\"uid\"]);')\"\n\n# Then get the same document by its id\nPATH2=\"$(get \"id/$DUID\" | python -c 'import json, sys; obj = json.load(sys.stdin); print(obj[\"path\"]);')\"\n\n# Compare both path\n[ \"/$PATH1\" = \"$PATH2\" ]\n"
  },
  {
    "path": "test/tests/nuxeo-conf/expected-std-out.txt",
    "content": "org.nuxeo.automation.trace=true\norg.nuxeo.dev=true\n"
  },
  {
    "path": "test/tests/nuxeo-conf/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\nimage=\"$1\"\n\nexport NUXEO_DEV_MODE='true'\nexport NUXEO_AUTOMATION_TRACE='true'\n\n# not using '--entrypoint nuxeoctl', since regular entrypoint does setup for nuxeoctl\ndocker run --rm -i \\\n\t-e NUXEO_DEV_MODE \\\n\t-e NUXEO_AUTOMATION_TRACE \\\n\t\"$image\" \\\n\tnuxeoctl showconf | grep \"^org.nuxeo.[automation|dev]\" | sort\n"
  },
  {
    "path": "test/tests/open-liberty-hello-world/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nserverImage=\"$1\"\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":open-liberty \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsSL \"$@\" \"http://open-liberty:9080/$url\"\n}\n\n# Make sure that Open Liberty is listening\n. \"$dir/../../retry.sh\" '_request / &> /dev/null'\n\n# Check that we can request /\n[ -n \"$(_request '/')\" ]\n\n# Check that the version.js file can be retrieved.\nhelloWorld=\"$(_request '/version.js')\"\n[[ \"$helloWorld\" == *'var current'* ]]\n"
  },
  {
    "path": "test/tests/override-cmd/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nimage=\"$1\"\n\n# test that we can override the CMD with echo\n# https://github.com/docker-library/official-images/blob/d28cb89e79417cac50c2a8ae163a9b3b79167f79/README.md#consistency\n\nhello=\"world-$RANDOM-$RANDOM\"\n\ncmd=( echo \"Hello $hello\" )\ncase \"$image\" in\n\t*windowsservercore* | *nanoserver*)\n\t\tcmd=( cmd /Q /S /C \"${cmd[*]}\" )\n\t\t;;\nesac\n\n# test first with --entrypoint to verify that we even have echo (tests for single-binary images FROM scratch, essentially)\nif ! testOutput=\"$(docker run --rm --entrypoint \"${cmd[0]}\" \"$image\" \"${cmd[@]:1}\" 2>/dev/null)\"; then\n\techo >&2 'image does not appear to contain \"echo\" -- assuming single-binary image'\n\texit\nfi\ntestOutput=\"$(tr -d '\\r' <<<\"$testOutput\")\" # Windows gives us \\r\\n ...  :D\n[ \"$testOutput\" = \"Hello $hello\" ]\n\n# now test with normal command to verify the default entrypoint is OK\noutput=\"$(docker run --rm \"$image\" \"${cmd[@]}\")\"\noutput=\"$(tr -d '\\r' <<<\"$output\")\" # Windows gives us \\r\\n ...  :D\n[ \"$output\" = \"Hello $hello\" ]\n"
  },
  {
    "path": "test/tests/percona-rocksdb/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nexport MYSQL_ROOT_PASSWORD='this is an example test password'\nexport MYSQL_USER='0123456789012345' # \"ERROR: 1470  String 'my cool mysql user' is too long for user name (should be no longer than 16)\"\nexport MYSQL_PASSWORD='my cool mysql password'\nexport MYSQL_DATABASE='my cool mysql database'\nVERSION=$(docker run --rm \"$image\" --version | awk '{print$3}')\n\nif [[ $VERSION =~ ^5.[56] ]]; then\n\techo [skipped] no RocksDB support in 5.5, 5.6\n\texit 0\nfi\n\ncname=\"mysql-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-e INIT_ROCKSDB=1 \\\n\t\t-e MYSQL_ROOT_PASSWORD \\\n\t\t-e MYSQL_USER \\\n\t\t-e MYSQL_PASSWORD \\\n\t\t-e MYSQL_DATABASE \\\n\t\t--name \"$cname\" \\\n\t\t\"$image\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nmysql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":mysql \\\n\t\t--entrypoint mysql \\\n\t\t-e MYSQL_PWD=\"$MYSQL_PASSWORD\" \\\n\t\t\"$image\" \\\n\t\t-hmysql \\\n\t\t-u\"$MYSQL_USER\" \\\n\t\t--silent \\\n\t\t\"$@\" \\\n\t\t\"$MYSQL_DATABASE\"\n}\n\n. \"$dir/../../retry.sh\" --tries 20 \"echo 'SELECT 1' | mysql\"\n\necho 'CREATE TABLE test (a INT, b INT, c VARCHAR(255)) ENGINE=RocksDB' | mysql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 0 ]\n"
  },
  {
    "path": "test/tests/percona-tokudb/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nexport MYSQL_ROOT_PASSWORD='this is an example test password'\nexport MYSQL_USER='0123456789012345' # \"ERROR: 1470  String 'my cool mysql user' is too long for user name (should be no longer than 16)\"\nexport MYSQL_PASSWORD='my cool mysql password'\nexport MYSQL_DATABASE='my cool mysql database'\n\n# TokuDB can be checked only if transparent_hugepage is disabled\nif [ -f /sys/kernel/mm/transparent_hugepage/defrag ]; then\n\tDEFRAG_OLDSTATE=$(cat /sys/kernel/mm/transparent_hugepage/defrag | sed -e 's/.*\\[//; s/].*//')\n\tif [ \"${DEFRAG_OLDSTATE}\" != \"never\" -a ! -w /sys/kernel/mm/transparent_hugepage/defrag ]; then\n\t\techo [skipped] due to enabled transparent_hugepage\n\t\texit 0\n\tfi\nfi\n\n# TokuDB can be checked only if transparent_hugepage is disabled\nif [ -f /sys/kernel/mm/transparent_hugepage/enabled ]; then\n\tHUGEPAGE_OLDSTATE=$(cat /sys/kernel/mm/transparent_hugepage/enabled | sed -e 's/.*\\[//; s/].*//')\n\tif [ \"$HUGEPAGE_OLDSTATE\" != \"never\" -a ! -w /sys/kernel/mm/transparent_hugepage/enabled ]; then\n\t\techo [skipped] due to enabled transparent_hugepage\n\t\texit 0\n\tfi\nfi\n\ncname=\"mysql-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-e INIT_TOKUDB=1 \\\n\t\t-e MYSQL_ROOT_PASSWORD \\\n\t\t-e MYSQL_USER \\\n\t\t-e MYSQL_PASSWORD \\\n\t\t-e MYSQL_DATABASE \\\n\t\t--name \"$cname\" \\\n\t\t\"$image\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nmysql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":mysql \\\n\t\t--entrypoint mysql \\\n\t\t-e MYSQL_PWD=\"$MYSQL_PASSWORD\" \\\n\t\t\"$image\" \\\n\t\t-hmysql \\\n\t\t-u\"$MYSQL_USER\" \\\n\t\t--silent \\\n\t\t\"$@\" \\\n\t\t\"$MYSQL_DATABASE\"\n}\n\n. \"$dir/../../retry.sh\" --tries 20 \"echo 'SELECT 1' | mysql\"\n\necho 'CREATE TABLE test (a INT, b INT, c VARCHAR(255), PRIMARY KEY index_a (a), CLUSTERING KEY index_b (b)) ENGINE=TokuDB' | mysql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | mysql)\" = 0 ]\n"
  },
  {
    "path": "test/tests/perl-cpanm/container.sh",
    "content": "#!/bin/sh\nset -eux\n\ncpanm --notest Mojolicious\n"
  },
  {
    "path": "test/tests/perl-hello-world/container.pl",
    "content": "#!/usr/bin/perl\nprint \"Hello World!\\n\";\n"
  },
  {
    "path": "test/tests/perl-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/php-apache-hello-web/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/php-apache-hello-web \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/index.php /var/www/html/\nEOD\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":apache \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fs -X\"$method\" \"$@\" \"http://apache/$url\"\n}\n\n# Make sure that Apache is listening\n. \"$dir/../../retry.sh\" '[ \"$(_request GET / --output /dev/null || echo $?)\" != 7 ]'\n\n# Check that we can request /index.php with no params\n[ -n \"$(_request GET \"/index.php\")\" ]\n\n# Check that our index.php echoes the value of the \"hello\" param\nhello=\"world-$RANDOM-$RANDOM\"\n[ \"$(_request GET \"/index.php?hello=$hello\" | tail -1)\" = \"$hello\" ]\n"
  },
  {
    "path": "test/tests/php-argon2/container.php",
    "content": "<?php\nif (!defined('PASSWORD_ARGON2I')) {\n\techo \"FAIL: Constant PASSWORD_ARGON2I is not defined.\\n\";\n\texit(1);\n}\n\n// Test vector generated using:\n// var_dump(password_hash('password', PASSWORD_ARGON2I, ['memory_cost' => 1<<3, 'time_cost' => 1, 'threads' => 1]));\nif (!password_verify('password', '$argon2i$v=19$m=8,t=1,p=1$RWxaRlZ0d1FTa3RSY1c1OQ$c7a/rJlPgvH9ItPi74UGuh0tdCBhpdDF7b/nA3QweX8')) {\n\techo \"FAIL: Failed to check test vector.\\n\";\n\texit(1);\n}\nexit(0);\n"
  },
  {
    "path": "test/tests/php-ext-install/container.sh",
    "content": "#!/bin/sh\nset -e\n\ndocker-php-ext-install pdo_mysql 2>&1\nphp -d display_errors=stderr -r 'exit(extension_loaded(\"pdo_mysql\") ? 0 : 1);'\ngrep -q '^extension=' /usr/local/etc/php/conf.d/*pdo_mysql*.ini\n\n# TODO now that opcache is built-in (8.5+), we could use a new zend_extension to test that they're loaded correctly too 🙈\n"
  },
  {
    "path": "test/tests/php-fpm-hello-web/index.php",
    "content": "<?php echo isset($_REQUEST['hello']) ? $_REQUEST['hello'] : 'Hello!';\n"
  },
  {
    "path": "test/tests/php-fpm-hello-web/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Build a client image with cgi-fcgi for testing\nclientImage='librarytest/php-fpm-hello-web:fcgi-client'\nif ! error=\"$(docker build -t \"$clientImage\" - 2>&1 <<-'EOF'\n\tFROM debian:trixie-slim\n\n\tRUN set -x && apt-get update && apt-get install -y --no-install-recommends libfcgi-bin && apt-get dist-clean\n\n\tENTRYPOINT [\"cgi-fcgi\"]\n\tEOF\n)\"; then\n\techo \"$error\" >&2\n\texit 1\nfi\n\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/php-fpm-hello-web \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/index.php /var/www/html/\nEOD\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nfcgi-request() {\n\tlocal method=\"$1\"\n\n\tlocal url=\"$2\"\n\tlocal queryString=\n\tif [[ \"$url\" == *\\?* ]]; then\n\t\tqueryString=\"${url#*\\?}\"\n\t\turl=\"${url%%\\?*}\"\n\tfi\n\n\tdocker run --rm -i --link \"$cid\":fpm \\\n\t\t-e REQUEST_METHOD=\"$method\" \\\n\t\t-e SCRIPT_NAME=\"$url\" \\\n\t\t-e SCRIPT_FILENAME=/var/www/html/\"${url#/}\" \\\n\t\t-e QUERY_STRING=\"$queryString\" \\\n\t\t\"$clientImage\" \\\n\t\t-bind -connect fpm:9000\n}\n\n# wait until ready\n. \"$dir/../../retry.sh\" --tries 30 'fcgi-request GET /index.php' > /dev/null 2>&1\n\n# Check that we can request /index.php with no params\n[ -n \"$(fcgi-request GET \"/index.php\")\" ]\n\n# Check that our index.php echoes the value of the \"hello\" param\nhello=\"world-$RANDOM-$RANDOM\"\n[ \"$(fcgi-request GET \"/index.php?hello=$hello\" | tail -1)\" = \"$hello\" ]\n"
  },
  {
    "path": "test/tests/php-hello-world/container.php",
    "content": "<?php echo 'Hello World!' . \"\\n\";\n"
  },
  {
    "path": "test/tests/php-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/plone-addons/expected-std-out.txt",
    "content": "\n[buildout]\nextends = develop.cfg\nfind-links += \ndevelop += src/eea.facetednavigation\neggs += eea.facetednavigation\nzcml += eea.facetednavigation-meta\n\n[plonesite]\nenabled = False\nsite-id = Plone\nprofiles += eea.facetednavigation:default\n\n[versions]\n"
  },
  {
    "path": "test/tests/plone-addons/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\n# not using '--entrypoint', since regular entrypoint sets up config\ndocker run -i --rm \\\n\t-e PLONE_DEVELOP=src/eea.facetednavigation \\\n\t-e PLONE_ADDONS=eea.facetednavigation \\\n\t-e PLONE_ZCML=eea.facetednavigation-meta \\\n\t-v /plone/instance/bin/develop \\\n\t\"$1\" cat custom.cfg\n"
  },
  {
    "path": "test/tests/plone-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nPLONE_TEST_SLEEP=3\nPLONE_TEST_TRIES=5\n\ncname=\"plone-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nget() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":plone \\\n\t\t--entrypoint /plone/instance/bin/zopepy \\\n\t\t\"$image\" \\\n\t\t-c \"from six.moves.urllib.request import urlopen; con = urlopen('$1'); print(con.read())\"\n}\n\nget_auth() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":plone \\\n\t\t--entrypoint /plone/instance/bin/zopepy \\\n\t\t\"$image\" \\\n\t\t-c \"from six.moves.urllib.request import urlopen, Request; request = Request('$1'); request.add_header('Authorization', 'Basic $2'); print(urlopen(request).read())\"\n}\n\n\n. \"$dir/../../retry.sh\" --tries \"$PLONE_TEST_TRIES\" --sleep \"$PLONE_TEST_SLEEP\" get \"http://plone:8080\"\n\n# Plone is up and running\n[[ \"$(get 'http://plone:8080')\" == *\"Plone is up and running\"* ]]\n\n# Create a Plone site\n[[ \"$(get_auth 'http://plone:8080/@@plone-addsite' \"$(echo -n 'admin:admin' | base64)\")\" == *\"Create a Plone site\"* ]]"
  },
  {
    "path": "test/tests/plone-cors/expected-std-out.txt",
    "content": "<configure\n  xmlns=\"http://namespaces.zope.org/zope\">\n  <configure\n    xmlns=\"http://namespaces.zope.org/zope\"\n    xmlns:plone=\"http://namespaces.plone.org/plone\">\n    <plone:CORSPolicy\n      allow_origin=\"http://example.com:4300,http://example.com:5300\"\n      allow_methods=\"DELETE,PUT\"\n      allow_credentials=\"false\"\n      expose_headers=\"X-Example-Header\"\n      allow_headers=\"X-Example-Header,X-Z-Header\"\n      max_age=\"600\"\n     />\n  </configure>\n</configure>\n"
  },
  {
    "path": "test/tests/plone-cors/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\n# not using '--entrypoint', since regular entrypoint sets up config\ndocker run -i --rm \\\n\t-e CORS_ALLOW_ORIGIN=\"http://example.com:4300,http://example.com:5300\" \\\n\t-e CORS_ALLOW_METHODS=\"DELETE,PUT\" \\\n\t-e CORS_ALLOW_CREDENTIALS=false \\\n\t-e CORS_EXPOSE_HEADERS=\"X-Example-Header\" \\\n\t-e CORS_ALLOW_HEADERS=\"X-Example-Header,X-Z-Header\" \\\n\t-e CORS_MAX_AGE=600 \\\n\t-v /plone/instance/bin/develop \\\n\t\"$1\" cat parts/instance/etc/package-includes/999-additional-overrides.zcml\n"
  },
  {
    "path": "test/tests/plone-versions/expected-std-out.txt",
    "content": "\n[buildout]\nextends = develop.cfg\nfind-links += \ndevelop += src/eea.facetednavigation\neggs += eea.facetednavigation\nzcml += eea.facetednavigation-meta\n\n[plonesite]\nenabled = True\nsite-id = plone\nprofiles += eea.facetednavigation:universal\n\n[versions]\neea.facetednavigation=13.3\nplone.restapi=5.0.0\n"
  },
  {
    "path": "test/tests/plone-versions/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\n# not using '--entrypoint', since regular entrypoint sets up config\ndocker run -i --rm \\\n\t-e PLONE_DEVELOP=src/eea.facetednavigation \\\n\t-e PLONE_ADDONS=eea.facetednavigation \\\n\t-e PLONE_ZCML=eea.facetednavigation-meta \\\n\t-e PLONE_VERSIONS=\"eea.facetednavigation=13.3 plone.restapi=5.0.0\" \\\n\t-e PLONE_SITE=\"plone\" \\\n\t-e PLONE_PROFILES=\"eea.facetednavigation:universal\" \\\n\t-v /plone/instance/bin/develop \\\n\t\"$1\" cat custom.cfg\n"
  },
  {
    "path": "test/tests/plone-zeoclient/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nPLONE_TEST_SLEEP=3\nPLONE_TEST_TRIES=5\n\n# Start ZEO server\nzname=\"zeo-container-$RANDOM-$RANDOM\"\nzid=\"$(docker run -d --name \"$zname\" \"$image\" zeo)\"\n\n# Start Plone as ZEO Client\npname=\"plone-container-$RANDOM-$RANDOM\"\npid=\"$(docker run -d --name \"$pname\" --link=$zname:zeo -e ZEO_ADDRESS=zeo:8080 \"$image\")\"\n\n# Tear down\ntrap \"docker rm -vf $pid $zid > /dev/null\" EXIT\n\nget() {\n\tdocker run --rm -i \\\n\t\t--link \"$pname\":plone \\\n\t\t--entrypoint /plone/instance/bin/zopepy \\\n\t\t\"$image\" \\\n\t\t-c \"from six.moves.urllib.request import urlopen; con = urlopen('$1'); print(con.read())\"\n}\n\nget_auth() {\n\tdocker run --rm -i \\\n\t\t--link \"$pname\":plone \\\n\t\t--entrypoint /plone/instance/bin/zopepy \\\n\t\t\"$image\" \\\n\t\t-c \"from six.moves.urllib.request import urlopen, Request; request = Request('$1'); request.add_header('Authorization', 'Basic $2'); print(urlopen(request).read())\"\n}\n\n. \"$dir/../../retry.sh\" --tries \"$PLONE_TEST_TRIES\" --sleep \"$PLONE_TEST_SLEEP\" get \"http://plone:8080\"\n\n# Plone is up and running\n[[ \"$(get 'http://plone:8080')\" == *\"Plone is up and running\"* ]]\n\n# Create a Plone site\n[[ \"$(get_auth 'http://plone:8080/@@plone-addsite' \"$(echo -n 'admin:admin' | base64)\")\" == *\"Create a Plone site\"* ]]\n"
  },
  {
    "path": "test/tests/plone-zeosite/expected-std-out.txt",
    "content": "\n[buildout]\nextends = develop.cfg\nfind-links += \ndevelop += src/eea.facetednavigation\neggs += eea.facetednavigation\nzcml += eea.facetednavigation-meta\n\n[plonesite]\nenabled = True\nsite-id = plone\nprofiles += eea.facetednavigation:universal\n\n[versions]\neea.facetednavigation=13.7\nplone.restapi=6.13.0\n\n\n[instance]\nzeo-client = true\nzeo-address = zeo:8080\nshared-blob = off\nhttp-fast-listen = off\n"
  },
  {
    "path": "test/tests/plone-zeosite/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\n# not using '--entrypoint', since regular entrypoint sets up config\ndocker run -i --rm \\\n    -e PLONE_DEVELOP=src/eea.facetednavigation \\\n\t-e PLONE_ADDONS=eea.facetednavigation \\\n\t-e PLONE_ZCML=eea.facetednavigation-meta \\\n\t-e PLONE_VERSIONS=\"eea.facetednavigation=13.7 plone.restapi=6.13.0\" \\\n\t-e PLONE_SITE=\"plone\" \\\n\t-e PLONE_PROFILES=\"eea.facetednavigation:universal\" \\\n\t-e ZEO_ADDRESS=\"zeo:8080\" \\\n\t-v /plone/instance/bin/develop \\\n\t\"$1\" cat custom.cfg\n"
  },
  {
    "path": "test/tests/postfixadmin-apache-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nserverImage=\"$1\"\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":apache \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsL -X\"$method\" \"$@\" \"http://apache/$url\"\n}\n\n# Make sure that Apache is listening and ready\n. \"$dir/../../retry.sh\" --tries 10 '_request GET / --output /dev/null'\n\n# Check that we can request / and that it contains the word \"login\" somewhere\n_request GET '/' | grep -i login > /dev/null\n"
  },
  {
    "path": "test/tests/postfixadmin-fpm-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Build a client image with cgi-fcgi for testing\nclientImage='librarytest/posfixadmin-fpm-run:fcgi-client'\nif ! error=\"$(docker build -t \"$clientImage\" - 2>&1 <<-'EOF'\n\tFROM debian:trixie-slim\n\n\tRUN set -x && apt-get update && apt-get install -y --no-install-recommends libfcgi-bin && apt-get dist-clean\n\n\tENTRYPOINT [\"cgi-fcgi\"]\n\tEOF\n)\"; then\n\techo \"$error\" >&2\n\texit 1\nfi\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nfcgi-request() {\n\tlocal method=\"$1\"\n\n\tlocal url=\"$2\"\n\tlocal queryString=\n\tif [[ \"$url\" == *\\?* ]]; then\n\t\tqueryString=\"${url#*\\?}\"\n\t\turl=\"${url%%\\?*}\"\n\tfi\n\n\tdocker run --rm -i --link \"$cid\":fpm \\\n\t\t-e REQUEST_METHOD=\"$method\" \\\n\t\t-e SCRIPT_NAME=\"$url\" \\\n\t\t-e SCRIPT_FILENAME=/var/www/html/public/\"${url#/}\" \\\n\t\t-e QUERY_STRING=\"$queryString\" \\\n\t\t-e HTTP_HOST='localhost' \\\n\t\t\"$clientImage\" \\\n\t\t-bind -connect fpm:9000\n}\n\n# Make sure that PHP-FPM is listening and ready\n. \"$dir/../../retry.sh\" --tries 10 'fcgi-request GET /index.php' > /dev/null 2>&1\n\n# index.php redirects to login.php, check that it contains the word \"login\" somewhere\nfcgi-request GET '/login.php' | grep -i login > /dev/null\n"
  },
  {
    "path": "test/tests/postgres-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nexport POSTGRES_USER='my cool postgres user'\nexport POSTGRES_PASSWORD='my cool postgres password'\nexport POSTGRES_DB='my cool postgres database'\n\ncname=\"postgres-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d -e POSTGRES_USER -e POSTGRES_PASSWORD -e POSTGRES_DB --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\npsql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":postgres \\\n\t\t--entrypoint psql \\\n\t\t-e PGPASSWORD=\"$POSTGRES_PASSWORD\" \\\n\t\t\"$image\" \\\n\t\t--host postgres \\\n\t\t--username \"$POSTGRES_USER\" \\\n\t\t--dbname \"$POSTGRES_DB\" \\\n\t\t--quiet --no-align --tuples-only \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" --tries \"$POSTGRES_TEST_TRIES\" --sleep \"$POSTGRES_TEST_SLEEP\" \"echo 'SELECT 1' | psql\"\n\necho 'CREATE TABLE test (a INT, b INT, c VARCHAR(255))' | psql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | psql)\" = 0 ]\npsql <<'EOSQL'\n\tINSERT INTO test VALUES (1, 2, 'hello')\nEOSQL\n[ \"$(echo 'SELECT COUNT(*) FROM test' | psql)\" = 1 ]\npsql <<'EOSQL'\n\tINSERT INTO test VALUES (2, 3, 'goodbye!')\nEOSQL\n[ \"$(echo 'SELECT COUNT(*) FROM test' | psql)\" = 2 ]\necho 'DELETE FROM test WHERE a = 1' | psql\n[ \"$(echo 'SELECT COUNT(*) FROM test' | psql)\" = 1 ]\n[ \"$(echo 'SELECT c FROM test' | psql)\" = 'goodbye!' ]\necho 'DROP TABLE test' | psql\n\n# test jit support to ensure llvm lib is correct\n# SET jit = on; is required for postgres 11; on 12+ it is on by default\n[ \"$(echo 'SET jit = on; SELECT pg_jit_available();' | psql)\" = 't' ]\n"
  },
  {
    "path": "test/tests/postgres-initdb/initdb.sql",
    "content": "CREATE TABLE test (a INT, b INT, c VARCHAR(255));\nINSERT INTO test VALUES (1, 2, 'hello');\nINSERT INTO test VALUES (2, 3, 'goodbye!');\nDELETE FROM test WHERE a = 1;\n"
  },
  {
    "path": "test/tests/postgres-initdb/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/postgres-initdb \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/initdb.sql /docker-entrypoint-initdb.d/\nEOD\n\nexport POSTGRES_USER='my cool postgres user'\nexport POSTGRES_PASSWORD='my cool postgres password'\nexport POSTGRES_DB='my cool postgres database'\n\ncname=\"postgres-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-e POSTGRES_USER \\\n\t\t-e POSTGRES_PASSWORD \\\n\t\t-e POSTGRES_DB \\\n\t\t--name \"$cname\" \\\n\t\t\"$serverImage\"\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\npsql() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":postgres \\\n\t\t--entrypoint psql \\\n\t\t-e PGPASSWORD=\"$POSTGRES_PASSWORD\" \\\n\t\t\"$image\" \\\n\t\t--host postgres \\\n\t\t--username \"$POSTGRES_USER\" \\\n\t\t--dbname \"$POSTGRES_DB\" \\\n\t\t--quiet --no-align --tuples-only \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" --tries \"$POSTGRES_TEST_TRIES\" --sleep \"$POSTGRES_TEST_SLEEP\" \"echo 'SELECT 1' | psql\"\n\n[ \"$(echo 'SELECT COUNT(*) FROM test' | psql)\" = 1 ]\n[ \"$(echo 'SELECT c FROM test' | psql)\" = 'goodbye!' ]\n"
  },
  {
    "path": "test/tests/python-imports/container.py",
    "content": "import platform, sys\n\nisWindows = platform.system() == 'Windows'\nisNotPypy = platform.python_implementation() != 'PyPy'\nisCaveman = sys.version_info[0] == 2\n\nif not isWindows:\n    import curses\n    import readline\n\n    if isCaveman:\n        import gdbm\n    else:\n        import dbm.gnu\n        import dbm.ndbm\n\nimport bz2\nassert(bz2.decompress(bz2.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS')\n\nimport zlib\nassert(zlib.decompress(zlib.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS')\n\nif not isCaveman:\n    import lzma\n    assert(lzma.decompress(lzma.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS')\n\n    if sys.version_info[1] >= 14:\n        # https://docs.python.org/3.14/library/compression.zstd.html\n        from compression import zstd\n        assert(zstd.decompress(zstd.compress(b'IT WORKS IT WORKS IT WORKS')) == b'IT WORKS IT WORKS IT WORKS')\n\n    # https://github.com/docker-library/python/pull/954\n    shouldHaveSetuptoolsAndWheel = sys.version_info[0] == 3 and sys.version_info[1] < 12\n    import importlib.util\n    hasSetuptools = importlib.util.find_spec('setuptools') is not None\n    hasWheel = importlib.util.find_spec('wheel') is not None\n    assert(hasSetuptools == shouldHaveSetuptoolsAndWheel)\n    assert(hasWheel == shouldHaveSetuptoolsAndWheel)\n"
  },
  {
    "path": "test/tests/python-no-pyc/container.cmd",
    "content": "rem N/A: Windows-based Python images may or may not contain \".pyc\" and/or \".pyo\" files because they are not a significant contributor to the overall image size\n"
  },
  {
    "path": "test/tests/python-no-pyc/container.sh",
    "content": "#!/bin/sh\nset -eu\n\nfind /usr/local /opt '(' -name '*.pyc' -o -name '*.pyo' ')' -print -exec false '{}' +\n"
  },
  {
    "path": "test/tests/python-pip-requests-ssl/container.py",
    "content": "import subprocess, sys\nsubprocess.check_call([sys.executable, '-m', 'pip', 'install', 'requests'])\n\nimport requests\nr = requests.get('https://google.com')\nassert(r.status_code == 200)\n"
  },
  {
    "path": "test/tests/python-sqlite3/container.py",
    "content": "import sqlite3\n\nver = sqlite3.sqlite_version\n\ncon = sqlite3.connect(':memory:', timeout=1, detect_types=sqlite3.PARSE_DECLTYPES, isolation_level=None)\ncur = con.cursor()\ncur.execute('CREATE TABLE test (id INT, txt TEXT)')\ncur.execute('INSERT INTO test VALUES (?, ?)', (42, 'wut'))\ncur.execute('SELECT * FROM test')\nassert(cur.fetchall() == [(42, 'wut')])\ncur.execute('DROP TABLE test')\ncon.close()\n"
  },
  {
    "path": "test/tests/python-stack-size/container.py",
    "content": "import threading\nimport sys\n\n\ndef fun(i):\n    try:\n        fun(i+1)\n    except:\n        sys.exit(0)\n\n\nt = threading.Thread(target=fun, args=[1])\nt.start()\n"
  },
  {
    "path": "test/tests/rabbitmq-basics/receive.py",
    "content": "#!/usr/bin/env python3\nimport pika\n\n# https://www.rabbitmq.com/tutorials/tutorial-one-python.html\n\nconnection = pika.BlockingConnection(pika.ConnectionParameters('rabbitmq'))\nchannel = connection.channel()\n\nchannel.queue_declare(queue='hello')\n\ndef callback(ch, method, properties, body):\n    print(body.decode('utf-8'))\n    connection.close()\n\nchannel.basic_consume(queue='hello',\n                      auto_ack=True,\n                      on_message_callback=callback)\n\nchannel.start_consuming()\n"
  },
  {
    "path": "test/tests/rabbitmq-basics/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# https://www.rabbitmq.com/tutorials/tutorial-one-python.html\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\nclientImage=\"$(\"$dir/../image-name.sh\" librarytest/rabbitmq-basics \"$serverImage\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$clientImage\" <<EOD\nFROM python:3.14-alpine\n# ensure pip does not complain about a new version being available\nENV PIP_DISABLE_PIP_VERSION_CHECK=1\nRUN pip install pika==1.3.2\nCOPY dir/*.py /usr/local/bin/\nEOD\n\ncname=\"rabbitmq-container-$RANDOM-$RANDOM\"\n# use sh to create a minimal config so that we don't get this error on 3.9+:\n# PLAIN login refused: user 'guest' can only connect via localhost\ncid=\"$(\n\tdocker run -d \\\n\t\t--name \"$cname\" \\\n\t\t--user rabbitmq \\\n\t\t--entrypoint sh \\\n\t\t\"$serverImage\" \\\n\t\t-c 'echo \"loopback_users.guest = false\" >> /etc/rabbitmq/rabbitmq.conf && exec rabbitmq-server'\n)\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nclient() {\n\tdocker run -i --rm \\\n\t\t--link \"$cname\":rabbitmq \\\n\t\t\"$clientImage\" \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" 'client testconn.py'\n\ntest-send-recv() {\n\tlocal payload=\"$1\"; shift\n\tclient send.py \"$payload\"\n\tresponse=\"$(client receive.py)\"\n\tif [ \"$payload\" != \"$response\" ]; then\n\t\techo >&2 \"error: expected '$payload' but got '$response' instead\"\n\t\treturn 1\n\tfi\n}\n\ntest-send-recv 'hello'\ntest-send-recv \"$RANDOM\"\ntest-send-recv $'a\\nb\\nc\\td'\n"
  },
  {
    "path": "test/tests/rabbitmq-basics/send.py",
    "content": "#!/usr/bin/env python3\nimport pika, sys\n\n# https://www.rabbitmq.com/tutorials/tutorial-one-python.html\n\nconnection = pika.BlockingConnection(pika.ConnectionParameters('rabbitmq'))\nchannel = connection.channel()\n\nchannel.queue_declare(queue='hello')\n\nchannel.basic_publish(exchange='',\n                      routing_key='hello',\n                      body=sys.argv[1])\n\nconnection.close()\n"
  },
  {
    "path": "test/tests/rabbitmq-basics/testconn.py",
    "content": "#!/usr/bin/env python3\nimport pika\n\n# https://www.rabbitmq.com/tutorials/tutorial-one-python.html\n\nconnection = pika.BlockingConnection(pika.ConnectionParameters('rabbitmq'))\nchannel = connection.channel()\n\nchannel.queue_declare(queue='hello')\n\nconnection.close()\n"
  },
  {
    "path": "test/tests/rabbitmq-tls/inet-dist-tls.config",
    "content": "[\n    {server, [\n        {cacertfile,\"/certs/ca.crt\"},\n        {certfile, \"/certs/cert.crt\"},\n        {keyfile, \"/certs/private.key\"},\n        {secure_renegotiate, true},\n        {verify, verify_peer},\n        {fail_if_no_peer_cert, true}\n    ]},\n    {client, [\n        {cacertfile,\"/certs/ca.crt\"},\n        {certfile, \"/certs/cert.crt\"},\n        {keyfile, \"/certs/private.key\"},\n        {secure_renegotiate, true},\n        {verify, verify_peer}\n    ]}\n].\n"
  },
  {
    "path": "test/tests/rabbitmq-tls/rabbitmq-env.conf",
    "content": "#!/bin/sh\n\n# https://www.rabbitmq.com/clustering-ssl.html\nERL_SSL_PATH=\"$(erl -eval 'io:format(\"~p\", [code:lib_dir(ssl, ebin)]),halt().' -noshell)\"\n\nsslErlArgs=\"-pa $ERL_SSL_PATH -proto_dist inet_tls -ssl_dist_optfile /etc/rabbitmq/inet-dist-tls.config\"\n\nSERVER_ADDITIONAL_ERL_ARGS=\"$sslErlArgs\"\nCTL_ERL_ARGS=\"$sslErlArgs\"\n\nif [ -n \"$ERLANG_COOKIE\" ]; then\n\tSERVER_ADDITIONAL_ERL_ARGS=\"$SERVER_ADDITIONAL_ERL_ARGS -setcookie $ERLANG_COOKIE\"\n\tCTL_ERL_ARGS=\"$CTL_ERL_ARGS -setcookie $ERLANG_COOKIE\"\nfi\n"
  },
  {
    "path": "test/tests/rabbitmq-tls/rabbitmq.conf",
    "content": "loopback_users.guest = false\nlisteners.ssl.default = 5671\nssl_options.cacertfile = /certs/ca.crt\nssl_options.certfile = /certs/cert.crt\nssl_options.fail_if_no_peer_cert = true\nssl_options.keyfile = /certs/private.key\nssl_options.verify = verify_peer\n"
  },
  {
    "path": "test/tests/rabbitmq-tls/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ncname=\"rabbitmq-container-$RANDOM-$RANDOM\"\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/rabbitmq-tls-server \"$1\")\"\n\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $1\nRUN set -eux; \\\n\tmkdir /certs; \\\n\topenssl genrsa -out /certs/ca-private.key 8192; \\\n\topenssl req -new -x509 \\\n\t\t-key /certs/ca-private.key \\\n\t\t-out /certs/ca.crt \\\n\t\t-days $(( 365 * 30 )) \\\n\t\t-subj '/CN=$cname-CA'; \\\n\topenssl genrsa -out /certs/private.key 4096; \\\n\topenssl req -new -key /certs/private.key \\\n\t\t-out /certs/cert.csr -subj '/CN=$cname'; \\\n\topenssl x509 -req -in /certs/cert.csr \\\n\t\t-CA /certs/ca.crt -CAkey /certs/ca-private.key -CAcreateserial \\\n\t\t-out /certs/cert.crt -days $(( 365 * 30 )); \\\n\topenssl verify -CAfile /certs/ca.crt /certs/cert.crt; \\\n\tcat /certs/cert.crt /certs/private.key > /certs/combined.pem; \\\n\tchmod 0400 /certs/combined.pem; \\\n\tchown -R rabbitmq:rabbitmq /certs\n\nCOPY --chown=rabbitmq:rabbitmq dir/*.conf* /etc/rabbitmq/\nEOD\n\ntestImage=\"$(\"$dir/../image-name.sh\" librarytest/rabbitmq-tls-test \"$1\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$testImage\" <<'EOD'\nFROM alpine:3.22\nRUN apk add --no-cache bash coreutils drill openssl procps\n# https://github.com/drwetter/testssl.sh/releases\nENV TESTSSL_VERSION 3.0.10\nRUN set -eux; \\\n\twget -O testssl.tgz \"https://github.com/drwetter/testssl.sh/archive/v${TESTSSL_VERSION}.tar.gz\"; \\\n\ttar -xvf testssl.tgz -C /opt; \\\n\trm testssl.tgz; \\\n\tln -sv \"/opt/testssl.sh-$TESTSSL_VERSION/testssl.sh\" /usr/local/bin/; \\\n\ttestssl.sh --version\nEOD\n\nexport ERLANG_COOKIE=\"rabbitmq-erlang-cookie-$RANDOM-$RANDOM\"\n\ncid=\"$(docker run -d --name \"$cname\" --hostname \"$cname\" -e ERLANG_COOKIE \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\ntestssl() {\n\tdocker run -i --rm \\\n\t\t--link \"$cname\" \\\n\t\t\"$testImage\" \\\n\t\ttestssl.sh --quiet --color 0 \"$@\" \"$cname:5671\"\n}\nrabbitmqctl() {\n\t# not using '--entrypoint', since regular entrypoint does needed env setup\n\tdocker run -i --rm \\\n\t\t--link \"$cname\" \\\n\t\t-e ERLANG_COOKIE \\\n\t\t\"$serverImage\" \\\n\t\trabbitmqctl --node \"rabbit@$cname\" \"$@\"\n}\nrabbitmq-diagnostics() {\n\t# not using '--entrypoint', since regular entrypoint does needed env setup\n\tdocker run -i --rm \\\n\t\t--link \"$cname\" \\\n\t\t-e ERLANG_COOKIE \\\n\t\t\"$serverImage\" \\\n\t\trabbitmq-diagnostics --node \"rabbit@$cname\" \"$@\"\n}\n\n. \"$dir/../../retry.sh\" 'rabbitmq-diagnostics check_port_connectivity'\n\nrabbitmqctl status\ntestssl --each-cipher\ntestssl --standard\n#testssl --protocols # RabbitMQ still supports TLS 1.0/1.1 which are \"deprecated\" in testssl.sh 3.0+ (and thus fail this test)\n"
  },
  {
    "path": "test/tests/redis-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ncliFlags=( -h redis )\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\ntestName=\"$(basename \"$testDir\")\"\nif [[ \"$testName\" == *tls* ]]; then\n\tredisCliHelp=\"$(docker run --rm --entrypoint redis-cli \"$image\" --help 2>&1 || :)\"\n\tif ! grep -q -- '--tls' <<<\"$redisCliHelp\"; then\n\t\techo >&2 \"skipping; not built with TLS support (possibly version < 6.0 or 32bit variant)\"\n\t\texit 0\n\tfi\n\n\ttlsImage=\"$(\"$testDir/../image-name.sh\" librarytest/redis-tls \"$image\")\"\n\t\"$testDir/../docker-build.sh\" \"$testDir\" \"$tlsImage\" <<-EOD\n\t\tFROM alpine:3.22 AS certs\n\t\tRUN apk add --no-cache openssl\n\t\tRUN set -eux; \\\n\t\t\tmkdir /certs; \\\n\t\t\topenssl genrsa -out /certs/ca-private.key 8192; \\\n\t\t\topenssl req -new -x509 \\\n\t\t\t\t-key /certs/ca-private.key \\\n\t\t\t\t-out /certs/ca.crt \\\n\t\t\t\t-days $(( 365 * 30 )) \\\n\t\t\t\t-subj '/CN=lolca'; \\\n\t\t\topenssl genrsa -out /certs/private.key 4096; \\\n\t\t\topenssl req -new -key /certs/private.key \\\n\t\t\t\t-out /certs/cert.csr -subj '/CN=redis'; \\\n\t\t\topenssl x509 -req -in /certs/cert.csr \\\n\t\t\t\t-CA /certs/ca.crt -CAkey /certs/ca-private.key -CAcreateserial \\\n\t\t\t\t-out /certs/cert.crt -days $(( 365 * 30 )); \\\n\t\t\topenssl verify -CAfile /certs/ca.crt /certs/cert.crt\n\n\t\tFROM $image\n\t\tCOPY --from=certs --chown=redis:redis /certs /certs\n\t\tCMD [ \\\n\t\t\t\"--tls-port\", \"6379\", \"--port\", \"0\", \\\n\t\t\t\"--tls-cert-file\", \"/certs/cert.crt\", \\\n\t\t\t\"--tls-key-file\", \"/certs/private.key\", \\\n\t\t\t\"--tls-ca-cert-file\", \"/certs/ca.crt\" \\\n\t\t]\n\tEOD\n\timage=\"$tlsImage\"\n\n\tcliFlags+=(\n\t\t--tls\n\t\t--cert /certs/cert.crt\n\t\t--key /certs/private.key\n\t\t--cacert /certs/ca.crt\n\t)\nfi\n\ncname=\"redis-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nredis-cli() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":redis \\\n\t\t--entrypoint redis-cli \\\n\t\t\"$image\" \\\n\t\t\"${cliFlags[@]}\" \\\n\t\t\"$@\"\n}\n\n# http://redis.io/topics/quickstart#check-if-redis-is-working\n. \"$dir/../../retry.sh\" --tries 20 '[ \"$(redis-cli ping)\" = \"PONG\" ]'\n\n[ \"$(redis-cli set mykey somevalue)\" = 'OK' ]\n[ \"$(redis-cli get mykey)\" = 'somevalue' ]\n"
  },
  {
    "path": "test/tests/redis-basics-config/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nnewImage=\"$(\"$dir/../image-name.sh\" librarytest/redis-basics-persistent \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$newImage\" <<EOD\nFROM $image\nRUN echo 'save 60 1000' > ../test.conf\nCMD [\"../test.conf\", \"--appendonly\", \"yes\"]\nEOD\n\nexec \"$dir/real-run.sh\" \"$newImage\"\n"
  },
  {
    "path": "test/tests/redis-basics-persistent/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ncname=\"redis-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nredis-cli() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":redis \\\n\t\t--entrypoint redis-cli \\\n\t\t\"$image\" \\\n\t\t-h redis \\\n\t\t\"$@\"\n}\n\n# http://redis.io/topics/quickstart#check-if-redis-is-working\n\n. \"$dir/../../retry.sh\" --tries 20 '[ \"$(redis-cli ping)\" = \"PONG\" ]'\n\n[ \"$(redis-cli set mykey somevalue)\" = 'OK' ]\n[ \"$(redis-cli get mykey)\" = 'somevalue' ]\n\ndocker stop \"$cname\"\ndocker start \"$cname\"\n\n. \"$dir/../../retry.sh\" --tries 20 '[ \"$(redis-cli ping)\" = \"PONG\" ]'\n\n[ \"$(redis-cli get mykey)\" = 'somevalue' ]\n"
  },
  {
    "path": "test/tests/redmine-basics/run.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nserverImage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":redmine \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fs -X\"$method\" \"$@\" \"http://redmine:3000/$url\"\n}\n\n# Make sure that Redmine is listening and ready\n# (give it plenty of time, since it needs to do a lot of database migrations)\n. \"$dir/../../retry.sh\" --tries 40 '_request GET / --output /dev/null'\n\n# Check that / include the text \"Redmine\" somewhere\n_request GET '/' | grep Redmine > /dev/null\n\n# Check that /account/register include the text \"Password\" somewhere\n_request GET '/account/register' | grep Password > /dev/null\n"
  },
  {
    "path": "test/tests/ruby-binstubs/Gemfile",
    "content": "source 'https://rubygems.org'\n\nif Gem::Version.create(RUBY_VERSION) >= Gem::Version.create('3.2')\n\tgem 'bundler-compose', '0.0.2'\nelse\n\t# TODO when jruby:9 is EOL, we can remove this conditional (and the matching conditional in \"container.sh\")\n\t# (it's only necessary because jruby:9 is Ruby 3.1 and bundler-compose needs 3.2+)\n\tgem 'bundler-audit', '0.9.1'\nend\n\ngem 'brakeman', '5.4.1'\n"
  },
  {
    "path": "test/tests/ruby-binstubs/container.sh",
    "content": "#!/usr/bin/env sh\nset -eu\n\ndir=\"$(mktemp -d)\"\ntrap \"rm -rf '$dir'\" EXIT\n\ncp Gemfile \"$dir\"\n\ncd \"$dir\"\n\nbundle install\n\nif bundle info bundler-compose; then\n\tbundle compose help > /dev/null\nelse\n\tbundle info bundler-audit\n\tbundle audit version\nfi\n\nbundle info brakeman\nbrakeman --version\n"
  },
  {
    "path": "test/tests/ruby-bundler/Gemfile",
    "content": "source 'https://rubygems.org'\ngem 'nokogiri'\ngem 'rack', '~>1.1'\ngem 'rspec', :require => 'spec'\n"
  },
  {
    "path": "test/tests/ruby-bundler/container.sh",
    "content": "#!/bin/sh\nset -e\n\ndir=\"$(mktemp -d)\"\ntrap \"rm -rf '$dir'\" EXIT\n\ncp Gemfile \"$dir\"\n\n# make sure that running \"bundle\" twice doesn't change Gemfile.lock the second time\ncd \"$dir\"\nBUNDLE_FROZEN=0 bundle install\ncp Gemfile.lock Gemfile.lock.orig\nBUNDLE_FROZEN=1 bundle install\ndiff -u Gemfile.lock.orig Gemfile.lock >&2\n\nBUNDLE_DEPLOYMENT=1 bundle install\ndiff -u Gemfile.lock.orig Gemfile.lock >&2\n"
  },
  {
    "path": "test/tests/ruby-gems/container.sh",
    "content": "#!/bin/sh\nset -e\n\ngems=\"$(ruby -e '\n\t# list taken from https://rubygems.org/stats\n\tgems = %w{\n\t\tbundler\n\t\taws-sdk-core\n\t\ti18n\n\t\track\n\t\trake\n\t\tconcurrent-ruby\n\t\tjson\n\t\ttzinfo\n\t\tnokogiri\n\t\tdiff-lcs\n\t\tfaraday\n\t}\n\t# last updated 2026-01-12\n\t# to try to get a wider coverage of common gems, this list skips the direct deps of aws-sdk-core\n\t# (aws-eventstream, aws-partitions, aws-sigv4, jmespath)\n\t# skip minitest, it has native deps (needs a compiler for c code, which will not work in jruby images)\n\t# skip activesupport because it depends on minitest ^\n\n\trequire \"json\"\n\trequire \"open-uri\"\n\n\t# only install gems where the current ruby version is new enough for the gem\n\tfor gem in gems\n\t\t# grabbing the first item might be checking ruby_version against a pre-release version of the gem\n\t\t# TODO also save version of the gem for the gem install? `gem install [GEM] -v [VERSION]`\n\t\t# TODO or skip pre-releases?\n\t\tgemRubyVersion = JSON.load(URI.open(\"https://rubygems.org/api/v1/versions/#{ gem }.json\"))[0][\"ruby_version\"]\n\n\t\t# https://github.com/rubygems/rubygems.org/blob/d05f69e8e800acf1dd21bb6f8e5f174410f81a33/app/models/version.rb#L304\n\t\t# https://github.com/ruby/rubygems/blob/e7cb04353fc8fe85d359d34d9d467d17d33bdbd3/lib/rubygems/specification.rb#L148\n\t\t# https://github.com/ruby/rubygems/blob/e7cb04353fc8fe85d359d34d9d467d17d33bdbd3/lib/rubygems/requirement.rb#L259-L261\n\t\tgemRubyVersion = gemRubyVersion.split(\", \")\n\n\t\tif Gem::Dependency.new(\"\", gemRubyVersion).match?(\"\", RUBY_VERSION)\n\t\t\tputs gem\n\t\telse\n\t\t\tSTDERR.puts \"skipping #{ gem } due to required Ruby version: #{ gemRubyVersion } (vs #{ RUBY_VERSION })\"\n\t\tend\n\tend\n')\"\n\nfor gem in $gems; do\n\techo \"$ gem install $gem\"\n\tgem install \"$gem\"\ndone\n"
  },
  {
    "path": "test/tests/ruby-hello-world/container.rb",
    "content": "print 'Hello World!'\n"
  },
  {
    "path": "test/tests/ruby-hello-world/expected-std-out.txt",
    "content": "Hello World!\n"
  },
  {
    "path": "test/tests/ruby-native-extension/expected-std-out.txt",
    "content": "it works\n"
  },
  {
    "path": "test/tests/ruby-native-extension/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nbuildDepsImage=\"$image\"\nif ! docker run --rm --entrypoint sh \"$image\" -c 'command -v gcc' > /dev/null; then\n\tbuildDepsImage=\"$(\"$dir/../image-name.sh\" librarytest/ruby-native-extension \"$image\")\"\n\n\tos=\"$(docker run --rm --entrypoint sh \"$image\" -c '. /etc/os-release && echo \"$ID\"')\"\n\tcase \"$os\" in\n\t\talpine)\n\t\t\t\"$dir/../docker-build.sh\" \"$dir\" \"$buildDepsImage\" <<-EOD\n\t\t\t\tFROM $image\n\t\t\t\tRUN apk add --no-cache gcc make musl-dev\n\t\t\tEOD\n\t\t\t;;\n\n\t\t*) # must be Debian slim variants (no gcc but not Alpine)\n\t\t\t\"$dir/../docker-build.sh\" \"$dir\" \"$buildDepsImage\" <<-EOD\n\t\t\t\tFROM $image\n\t\t\t\tRUN set -eux; \\\n\t\t\t\t\tapt-get update; \\\n\t\t\t\t\tapt-get install -y --no-install-recommends gcc make libc6-dev; \\\n\t\t\t\t\trm -rf /var/lib/apt/lists/*\n\t\t\tEOD\n\t\t\t;;\n\tesac\nfi\n\ndocker run --interactive --rm --entrypoint sh \"$buildDepsImage\" -eu <<-'EOSH'\n\tif command -v jruby > /dev/null; then\n\t\tplatform='jruby'\n\telse\n\t\tplatform='ruby'\n\tfi\n\tgem install bcrypt \\\n\t\t--version 3.1.20 \\\n\t\t--platform \"$platform\" \\\n\t\t--silent\n\truby -e 'require \"bcrypt\"; print \"it works\\n\"'\nEOSH\n"
  },
  {
    "path": "test/tests/ruby-nonroot/Gemfile",
    "content": "source 'https://rubygems.org'\ngem 'advanced_math'\n"
  },
  {
    "path": "test/tests/ruby-nonroot/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nnewImage=\"$(\"$dir/../image-name.sh\" librarytest/ruby-nonroot \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$newImage\" <<EOD\nFROM $image\nUSER nobody\nRUN mkdir /tmp/fake-home\nENV HOME /tmp/fake-home\nEOD\n\ndocker run --rm \"$newImage\" gem install advanced_math\n\nexec \"$dir/real-run.sh\" \"$newImage\"\n"
  },
  {
    "path": "test/tests/ruby-standard-libs/container.rb",
    "content": "# https://stdgems.org/ (https://github.com/janlelis/stdgems)\nstdlib = [\n\t'abbrev',\n\t'base64',\n\t'benchmark',\n\t'bigdecimal',\n\t'cgi',\n\t'cmath',\n\t'coverage',\n\t'csv',\n\t'date',\n\t'dbm',\n\t'delegate',\n\t'digest',\n\t'drb',\n\t'e2mmap',\n\t'erb',\n\t'etc',\n\t'expect',\n\t'fcntl',\n\t'fiddle',\n\t'fileutils',\n\t'find',\n\t'forwardable',\n\t'gdbm',\n\t'getoptlong',\n\t'io/console',\n\t'io/nonblock',\n\t'io/wait',\n\t'ipaddr',\n\t'irb',\n\t'json',\n\t'logger',\n\t'mathn',\n\t'matrix',\n\t'mkmf',\n\t'monitor',\n\t'mutex_m',\n\t'net/ftp',\n\t'net/http',\n\t'net/imap',\n\t'net/pop',\n\t'net/smtp',\n\t'net/telnet',\n\t'nkf',\n\t'objspace',\n\t'observer',\n\t'open-uri',\n\t'open3',\n\t'openssl',\n\t'optparse',\n\t'ostruct',\n\t'pathname',\n\t'pp',\n\t'prettyprint',\n\t'prime',\n\t#'profile', # prints all sorts of info to stderr, not easy to test right now\n\t'profiler',\n\t'pstore',\n\t'psych',\n\t'pty',\n\t'rake',\n\t'rdoc',\n\t'readline',\n\t'resolv',\n\t'resolv-replace',\n\t'ripper',\n\t'rss',\n\t'rubygems',\n\t'scanf',\n\t'sdbm',\n\t'securerandom',\n\t'set',\n\t'shell',\n\t'shellwords',\n\t'singleton',\n\t'socket',\n\t'stringio',\n\t'strscan',\n\t'sync',\n\t'syslog',\n\t'tempfile',\n\t'thread',\n\t'thwait',\n\t'time',\n\t'timeout',\n\t'tmpdir',\n\t'tracer',\n\t'tsort',\n\t'un',\n\t'uri',\n\t'weakref',\n\t'webrick',\n\t'xmlrpc/client',\n\t'xmlrpc/server',\n\t'yaml',\n\t'zlib',\n]\n\nif defined?(RUBY_ENGINE) && RUBY_ENGINE == 'jruby'\n\t# these libraries don't work or don't exist on JRuby ATM\n\tstdlib.delete('dbm')\n\tstdlib.delete('gdbm')\n\tstdlib.delete('mkmf')\n\tstdlib.delete('objspace')\n\tstdlib.delete('sdbm')\nend\n\nrequire 'rubygems/version'\nrubyVersion = Gem::Version.create(RUBY_VERSION)\nif rubyVersion >= Gem::Version.create('2.5')\n\t# https://bugs.ruby-lang.org/issues/13335\n\tstdlib.delete('mathn')\nend\nif rubyVersion >= Gem::Version.create('2.7')\n\t# https://bugs.ruby-lang.org/issues/15652\n\t# \"Removed from standard library. No one maintains it\"\n\tstdlib.delete('profiler')\n\t# https://bugs.ruby-lang.org/issues/16170\n\t# \"removing some of the unmaintained libraries\"\n\tstdlib.delete('cmath')\n\tstdlib.delete('e2mmap')\n\tstdlib.delete('scanf')\n\tstdlib.delete('shell')\n\tstdlib.delete('sync')\n\tstdlib.delete('thwait')\n\tstdlib.delete('tracer')\nend\nif rubyVersion >= Gem::Version.create('3.0')\n\t# https://www.ruby-lang.org/en/news/2020/09/25/ruby-3-0-0-preview1-released/\n\t# Removed libraries no longer part of stdlib.\n\tstdlib.delete('English')\n\tstdlib.delete('abbrev')\n\tstdlib.delete('base64')\n\tstdlib.delete('erb')\n\tstdlib.delete('find')\n\tstdlib.delete('io/nonblock')\n\tstdlib.delete('io/wait')\n\tstdlib.delete('net/ftp')\n\tstdlib.delete('net/http')\n\tstdlib.delete('net/imap')\n\tstdlib.delete('net/protocol')\n\tstdlib.delete('net/telnet')\n\tstdlib.delete('nkf')\n\tstdlib.delete('open-uri')\n\tstdlib.delete('optparse')\n\tstdlib.delete('resolv')\n\tstdlib.delete('resolv-replace')\n\tstdlib.delete('rexml')\n\tstdlib.delete('rinda')\n\tstdlib.delete('rss')\n\tstdlib.delete('securerandom')\n\tstdlib.delete('set')\n\tstdlib.delete('shellwords')\n\tstdlib.delete('tempfile')\n\tstdlib.delete('time')\n\tstdlib.delete('tmpdir')\n\tstdlib.delete('tsort')\n\tstdlib.delete('weakref')\n\tstdlib.delete('xmlrpc/client')\n\tstdlib.delete('xmlrpc/server')\n\t# https://github.com/ruby/ruby/blob/v3_0_0_preview1/NEWS.md#stdlib-compatibility-issues\n\t# https://bugs.ruby-lang.org/issues/8446\n\tstdlib.delete('sdbm')\n\t# https://github.com/ruby/ruby/blob/v3_0_0_rc1/NEWS.md#stdlib-compatibility-issues\n\t# https://bugs.ruby-lang.org/issues/17303\n\tstdlib.delete('webrick')\nend\nif rubyVersion >= Gem::Version.create('3.1')\n\t# https://github.com/ruby/ruby/pull/4525\n\tstdlib.delete('dbm')\n\t# https://github.com/ruby/ruby/pull/4526\n\tstdlib.delete('gdbm')\nend\n\nresult = 'ok'\nstdlib.each do |lib|\n\t#puts \"Testing #{lib}\"\n\tbegin\n\t\trequire lib\n\trescue Exception => e\n\t\tresult = 'failure'\n\t\tSTDERR.puts \"\\n\\nrequire '#{lib}' failed: #{e.message}\\n\"\n\t\tSTDERR.puts e.backtrace.join(\"\\n\")\n\t\tSTDERR.puts \"\\n\"\n\tend\nend\n\nexit(1) unless result == 'ok'\n\nputs result\n"
  },
  {
    "path": "test/tests/ruby-standard-libs/expected-std-out.txt",
    "content": "ok\n"
  },
  {
    "path": "test/tests/run-bash-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" bash ./container.sh\n"
  },
  {
    "path": "test/tests/run-dart-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" dart ./container.dart\n"
  },
  {
    "path": "test/tests/run-elixir-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" elixir ./container.exs\n"
  },
  {
    "path": "test/tests/run-erlang-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" escript ./container.erl\n"
  },
  {
    "path": "test/tests/run-g++-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" sh -c 'g++ -o /container ./container.cpp && exec /container'\n"
  },
  {
    "path": "test/tests/run-gcc-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" sh -c 'gcc -o /container ./container.c && exec /container'\n"
  },
  {
    "path": "test/tests/run-go-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" go run ./container.go\n"
  },
  {
    "path": "test/tests/run-haskell-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" runhaskell ./container.hs\n"
  },
  {
    "path": "test/tests/run-haxe-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" haxe -main Container --interp\n"
  },
  {
    "path": "test/tests/run-hy-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" hy ./container.hy\n"
  },
  {
    "path": "test/tests/run-in-container.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\n# NOT INTENDED TO BE USED AS A TEST \"run.sh\" DIRECTLY\n# SEE OTHER \"run-*-in-container.sh\" SCRIPTS FOR USAGE\n\n# arguments to docker\nargs=( --rm )\nopts=\"$(getopt -o '+' --long 'docker-arg:' -- \"$@\")\"\neval set -- \"$opts\"\n\nwhile true; do\n\tflag=\"$1\"\n\tshift\n\tcase \"$flag\" in\n\t\t--docker-arg) args+=( \"$1\" ) && shift ;;\n\t\t--) break ;;\n\t\t*)\n\t\t\t{\n\t\t\t\techo \"error: unknown flag: $flag\"\n\t\t\t\t#usage\n\t\t\t} >&2\n\t\t\texit 1\n\t\t\t;;\n\tesac\ndone\n\ntestDir=\"$1\"\nshift\n\nimage=\"$1\"\nshift\nentrypoint=\"$1\"\nshift\n\n# do some fancy footwork so that if testDir is /a/b/c, we mount /a/b and use c as the working directory (so relative symlinks work one level up)\nthisDir=\"$(readlink -f \"$BASH_SOURCE\")\"\nthisDir=\"$(dirname \"$thisDir\")\"\ntestDir=\"$(readlink -f \"$testDir\")\"\ntestBase=\"$(basename \"$testDir\")\"\nhostMount=\"$(dirname \"$testDir\")\"\ncontainerMount=\"/tmp/test-dir\"\nworkdir=\"$containerMount/$testBase\"\n# TODO should we be doing something fancy with $BASH_SOURCE instead so we can be arbitrarily deep and mount the top level always?\n\nnewImage=\"$(\"$thisDir/image-name.sh\" librarytest/run-in-container \"$image--$testBase\")\"\n\"$thisDir/docker-build.sh\" \"$hostMount\" \"$newImage\" <<EOD\nFROM $image\nCOPY dir $containerMount\nWORKDIR $workdir\nEOD\n\n# there is strong potential for nokogiri+overlayfs failure\n# see https://github.com/docker-library/ruby/issues/55\ngemHome=\"$(docker image inspect --format '{{- range .Config.Env -}}{{- println . -}}{{- end -}}' \"$newImage\" | awk -F '=' '$1 == \"GEM_HOME\" { print $2; exit }')\"\nif [ -n \"$gemHome\" ]; then\n\t# must be a Ruby image\n\tdriver=\"$(docker info --format '{{ .Driver }}' 2>/dev/null)\"\n\tif [ \"$driver\" = 'overlay' ]; then\n\t\t# let's add a volume (_not_ a bind mount) on GEM_HOME to work around nokogiri+overlayfs issues\n\t\targs+=( -v \"$gemHome\" )\n\tfi\nfi\n\nargs+=( --entrypoint \"$entrypoint\" )\n\n# we can't use \"exec\" here because Windows needs to override \"docker\" with a function that sets \"MSYS_NO_PATHCONV\" (see \"test/run.sh\" for where that's defined)\nif ! docker run \"${args[@]}\" \"$newImage\" \"$@\"; then\n\texit 1\nfi\nexit 0\n"
  },
  {
    "path": "test/tests/run-java-in-container.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# do a little extra work to try and find a suitable JDK image (when \"xyzjava:1.2.3-jre\" first builds, \"xyzjava:1.2.3-jdk\" isn't published yet :D)\ntryJdks=(\n\t# ideally, we'd just swap the current JRE image to JDK, but that might not exist yet (see above)\n\t\"${image/jre/jdk}\"\n\n\t# try progressively less specific versions to try and find something that can compile an appropriate \".class\" object for use in $image (working our way out from \"Java 8\" because that's going to be the most compatible)\n\t\"${image%%:*}:8-jdk-slim\"\n\t\"${image%%:*}:8-jdk\"\n\t\"${image%%:*}:8\"\n\t\"${image%%:*}:11-jdk-slim\"\n\t\"${image%%:*}:11-jdk\"\n\t\"${image%%:*}:11\"\n\t\"${image%%:*}:jdk-slim\"\n\t\"${image%%:*}:jdk\"\n\t\"${image%%:*}:latest\"\n\t'eclipse-temurin:8-jdk'\n\t'eclipse-temurin:11-jdk'\n)\njdk=\nfor potentialJdk in \"${tryJdks[@]}\"; do\n\tif docker run --rm --pull=missing \"$potentialJdk\" javac -help &> /dev/null; then\n\t\tjdk=\"$potentialJdk\"\n\t\tbreak\n\tfi\ndone\nif [ -z \"$jdk\" ]; then\n\techo >&2 \"error: failed to find a suitable JDK image for '$image'!\"\n\texit 1\nfi\nif [ \"$jdk\" != \"${tryJdks[0]}\" ]; then\n\techo >&2 \"warning: using '$jdk' instead of '${tryJdks[0]}' (results may vary!)\"\nfi\n\n# if possible, use \"--release\" in case $jdk and $image have mismatching Java versions\njavac='javac'\nif docker run --rm \"$jdk\" javac --help 2>&1 | grep -q -- '--release'; then\n\tjavac='javac --release 8'\nfi\n\nnewImage=\"$(\"$runDir/image-name.sh\" librarytest/java-hello-world \"$image\")\"\n\"$runDir/docker-build.sh\" \"$testDir\" \"$newImage\" <<EOD\nFROM $jdk AS jdk\nWORKDIR /container\nCOPY dir/container.java ./\nRUN $javac ./container.java\nFROM $image\nCOPY --from=jdk /container /container\nWORKDIR /container\nEOD\n\ndocker run --rm \"$newImage\" java -cp . container\n"
  },
  {
    "path": "test/tests/run-julia-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" julia ./container.jl\n"
  },
  {
    "path": "test/tests/run-node-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" node ./container.js\n"
  },
  {
    "path": "test/tests/run-perl-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" perl ./container.pl\n"
  },
  {
    "path": "test/tests/run-php-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" php -d display_errors=stderr ./container.php\n"
  },
  {
    "path": "test/tests/run-python-in-container.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ntestDir=\"$(dirname \"$BASH_SOURCE\")\"\ntestDir=\"$(readlink -f \"$testDir\")\"\nrunDir=\"$(readlink -f \"$BASH_SOURCE\")\"\nrunDir=\"$(dirname \"$runDir\")\"\n\ncase \"$1\" in\n\t*windowsservercore* | *nanoserver*)\n\t\t# https://stackoverflow.com/q/34491463/433558 -- cmd doesn't process past the first newline in the string passed on the command line, even though CreateProcess supports passing newlines??\n\t\t# https://stackoverflow.com/a/52003129/433558 -- no goto / labels in cmd argument either??  what's even the point??\n\t\t# -- \"And, in any case, remember that the longest command line you can write is 8191 characters long.\"  ...\n\t\t# cmd /C 'for %x in ( foo bar baz ) do ( echo %x ) & echo hi' runs '( echo %x ) & echo hi' every iteration.........\n\t\t# so we'll just run twice and use the bash we're in to do the \"difficult\" work of a fallback when python can't be found... (even though every container has a higher cost on Windows ;.;)\n\t\tpython=\"$(docker run --rm --entrypoint cmd \"$1\" /Q /S /C 'for %p in ( pypy3 pypy python3 python ) do ( %p --version >nul 2>&1 && echo %p && exit 0 )' | tr -d '\\r')\"\n\t\tpython=\"${python% }\" # \"echo %p && ...\" will print the trailing space because cmd...\n\t\tif [ -z \"$python\" ]; then\n\t\t\techo >&2 'error: unable to determine how to run python'\n\t\t\texit 1\n\t\tfi\n\n\t\t# ensure pip does not complain about a new version being available\n\t\t# or that a new version will no longer work with this python version\n\t\tsource \"$runDir/run-in-container.sh\" \\\n\t\t\t--docker-arg --env=PIP_DISABLE_PIP_VERSION_CHECK=1 \\\n\t\t\t--docker-arg --env=PIP_NO_PYTHON_VERSION_WARNING=1 \\\n\t\t\t--docker-arg --env=PIP_ROOT_USER_ACTION=ignore \\\n\t\t\t\"$testDir\" \"$1\" \"$python\" container.py\n\t\t;;\n\n\t*)\n\t\t# ensure pip does not complain about a new version being available\n\t\t# or that a new version will no longer work with this python version\n\t\tsource \"$runDir/run-in-container.sh\" \\\n\t\t\t--docker-arg --env=PIP_DISABLE_PIP_VERSION_CHECK=1 \\\n\t\t\t--docker-arg --env=PIP_NO_PYTHON_VERSION_WARNING=1 \\\n\t\t\t--docker-arg --env=PIP_ROOT_USER_ACTION=ignore \\\n\t\t\t\"$testDir\" \"$1\" sh -ec '\n\t\t\t\tfor c in pypy3 pypy python3 python; do\n\t\t\t\t\tif [ -x \"/usr/local/bin/$c\" ]; then\n\t\t\t\t\t\texec \"/usr/local/bin/$c\" \"$@\"\n\t\t\t\t\tfi\n\t\t\t\tdone\n\t\t\t\techo >&2 \"error: unable to determine how to run python\"\n\t\t\t\texit 1\n\t\t\t'  -- ./container.py\n\t\t;;\nesac\n"
  },
  {
    "path": "test/tests/run-ruby-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" ruby ./container.rb\n"
  },
  {
    "path": "test/tests/run-rust-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" cargo run -q --manifest-path=container/Cargo.toml\n\n"
  },
  {
    "path": "test/tests/run-sh-in-container.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\ntestDir=\"$(dirname \"$BASH_SOURCE\")\"\ntestDir=\"$(readlink -f \"$testDir\")\"\nrunDir=\"$(readlink -f \"$BASH_SOURCE\")\"\nrunDir=\"$(dirname \"$runDir\")\"\n\ncase \"$1\" in\n\t*windowsservercore* | *nanoserver*)\n\t\t[ -f \"$testDir/container.cmd\" ]\n\t\tsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" cmd /Q /S /C '.\\container.cmd'\n\t\t;;\n\n\t*)\n\t\t[ -f \"$testDir/container.sh\" ]\n\t\tsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" sh ./container.sh\n\t\t;;\nesac\n"
  },
  {
    "path": "test/tests/run-swift-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\ntestName=\"$(basename \"$testDir\")\"\nnewImage=\"$(\"$runDir/image-name.sh\" \"librarytest/$testName\" \"$image\")\"\n\"$runDir/docker-build.sh\" \"$testDir\" \"$newImage\" <<EOD\nFROM $image\nCOPY dir/container.swift /\nRUN swiftc /container.swift -o container\nCMD [ \"/container\" ]\nEOD\n\ndocker run --rm \"$newImage\"\n"
  },
  {
    "path": "test/tests/run-swipl-in-container.sh",
    "content": "#!/bin/bash\nset -e\n\ntestDir=\"$(readlink -f \"$(dirname \"$BASH_SOURCE\")\")\"\nrunDir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nsource \"$runDir/run-in-container.sh\" \"$testDir\" \"$1\" swipl -f none --on-error=status ./container.pl\n"
  },
  {
    "path": "test/tests/rust-hello-world/container/Cargo.toml",
    "content": "[package]\nname = \"container\"\nversion = \"0.1.0\"\nauthors = [\"Steven Fackler <sfackler@gmail.com>\"]\n\n[dependencies]\nlibc = \"0.2\" # just make sure we can pull dependencies\n"
  },
  {
    "path": "test/tests/rust-hello-world/container/src/main.rs",
    "content": "fn main() {\n    println!(\"Hello, world!\");\n}\n"
  },
  {
    "path": "test/tests/rust-hello-world/expected-std-out.txt",
    "content": "Hello, world!\n"
  },
  {
    "path": "test/tests/silverpeas-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\npgImage='postgres:18'\nif ! docker image inspect \"$pgImage\" &> /dev/null; then\n\tdocker pull \"$pgImage\" > /dev/null\nfi\n\ndbuser='postgres'\ndbpass=\"silver-$RANDOM-$RANDOM\"\ndbdatabase='silverpeas'\n\n# run a PostgreSQL container\ndbname=\"postgresql-container-$RANDOM-$RANDOM\"\ndocker run -d \\\n\t--name \"$dbname\" \\\n\t-e POSTGRES_PASSWORD=$dbpass \\\n\t-e POSTGRES_DB=$dbdatabase \\\n\t\"$pgImage\"\ntrap \"docker rm -vf $dbname > /dev/null\" EXIT\n\ncheck_db_running() {\n\tdocker run \\\n\t\t--rm \\\n\t\t--link \"$dbname\":pg \\\n\t\t-e PGPASSWORD=\"$dbpass\" \\\n\t\t\"$pgImage\" \\\n\t\tpsql \\\n\t\t--host pg \\\n\t\t--username \"$dbuser\" \\\n\t\t--dbname \"$dbdatabase\" \\\n\t\t-c 'SELECT 1'\n}\n\n# wait for PostgreSQL to be ready outside of container localhost\n. \"$dir/../../retry.sh\" --tries 20 --sleep 5 'check_db_running'\n\n# when running the first time, a silverpeas process is spawn before starting Silverpeas\n# (this configuration process can take some time)\ncname=\"silverpeas-container-$RANDOM-$RANDOM\"\ndocker run -d \\\n\t--name \"$cname\" \\\n\t--link \"$dbname\":pg \\\n\t-e DB_SERVER=pg \\\n\t-e DB_SERVERTYPE=POSTGRESQL \\\n\t-e DB_NAME=\"$dbdatabase\" \\\n\t-e DB_USER=\"$dbuser\" \\\n\t-e DB_PASSWORD=\"$dbpass\" \\\n\t\"$image\"\ntrap \"docker rm -vf $cname $dbname > /dev/null\" EXIT\n\ncheck_running() {\n\tdocker run --rm \\\n\t\t--link \"$cname\":silverpeas \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fs http://silverpeas:8000/silverpeas > /dev/null\n}\n\n# wait for the Silverpeas starting to be completed\n. \"$dir/../../retry.sh\" --tries 20 --sleep 10 'check_running'\n\nexpected='Configured: [OK] Running:    [OK] Active:     [OK]  INFO: JBoss is running '\n[ \"$(docker exec \"$cname\" /opt/silverpeas/bin/silverpeas status | tr '\\n' ' ')\" = \"$expected\" ]\n"
  },
  {
    "path": "test/tests/spiped-basics/run.sh",
    "content": "#!/bin/bash\n\n[ \"$DEBUG\" ] && set -x\n\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\n# The keygen below is a bit ugly, because spiped-generate-key.sh expects /spiped/key to be a directory (you can't bind mount a non-existing file),\n# but the entrypoint expects /spiped/key to be the actual keyfile.\n# So we first symlink /spiped/key to some directory, then generate the keyfile and then replace the symlink by the generated keyfile.\ncid_keygen=\"$(docker run -d \"$image\" sh -c 'ln -s /tmp /spiped/key && spiped-generate-key.sh && rm /spiped/key && mv /tmp/spiped-keyfile /spiped/key')\"\ntrap \"docker rm -vf $cid_keygen > /dev/null\" EXIT\ncid_d=\"$(docker run --volumes-from=\"$cid_keygen\" -d \"$image\" -d -s '[0.0.0.0]:8080' -t 'example.com:80')\"\ntrap \"docker rm -vf $cid_keygen $cid_d > /dev/null\" EXIT\ncid_e=\"$(docker run --volumes-from=\"$cid_keygen\" --link \"$cid_d\":spiped_d -d \"$image\" -e -s '[0.0.0.0]:80' -t 'spiped_d:8080')\"\ntrap \"docker rm -vf $cid_keygen $cid_d $cid_e > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal proto=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tif [ \"$(docker inspect -f '{{.State.Running}}' \"$cid_d\" 2>/dev/null)\" != 'true' ]; then\n\t\techo >&2 \"$image stopped unexpectedly!\"\n\t\t( set -x && docker logs \"$cid_d\" ) >&2 || true\n\t\tfalse\n\tfi\n\t\n\tif [ \"$(docker inspect -f '{{.State.Running}}' \"$cid_e\" 2>/dev/null)\" != 'true' ]; then\n\t\techo >&2 \"$image stopped unexpectedly!\"\n\t\t( set -x && docker logs \"$cid_e\" ) >&2 || true\n\t\tfalse\n\tfi\n\n\tdocker run --rm \\\n\t\t--link \"$cid_e\":spiped \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsSL -X\"$method\" --connect-to '::spiped:' \"$@\" \"$proto://example.com/$url\"\n}\n\n. \"$dir/../../retry.sh\" '[ \"$(_request GET / --output /dev/null || echo $?)\" != 7 ]'\n\n# Check that we can request / (which is proxying example.com)\n_request GET http '/' | grep '<h1>Example Domain</h1>' > /dev/null\n"
  },
  {
    "path": "test/tests/swift-hello-world/container.swift",
    "content": "print(\"Hello, world!\")\n"
  },
  {
    "path": "test/tests/swift-hello-world/expected-std-out.txt",
    "content": "Hello, world!\n"
  },
  {
    "path": "test/tests/swipl-modules/container.pl",
    "content": "% Test elementary functionality.\n\n:- initialization(test, main).\n\n:- if((current_prolog_flag(version, V), V>=90121)).\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nNew version. This finds all foreign resources in the libraries and loads\nthem while resolving all symbols immediately.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\n:- use_module(library(filesex)).\n:- use_module(library(lists)).\n:- use_module(library(occurs)).\n:- use_module(library(prolog_source)).\n:- use_module(library(solution_sequences)).\n\ntest :-\n    forall(library_file(_File, Foreign),\n           load_foreign(Foreign)),\n    writeln(\"Loaded modules successfully.\").\n\nload_foreign(Spec) :-\n    catch(load_foreign_(Spec), Ex,\n          print_message(error, Ex)).\n\nload_foreign_(Spec) :-\n    absolute_file_name(Spec, File,\n                       [ file_type(executable),\n                         access(read)\n                       ]),\n    open_shared_object(File, _Handle, [resolve(now)]).\n\nlibrary_file(File, Foreign) :-\n    absolute_file_name(library(.), Dir,\n                       [ file_type(directory),\n                         solutions(all)\n                       ]),\n    directory_member(Dir, File, [ extensions([pl]) ]),\n    file_base_name(File, Base),\n    \\+ skip_file(Base),\n    loads_foreign(File, Foreign).\n\nloads_foreign(File, Foreign) :-\n    (   current_prolog_flag(xref, Old)\n    ->  true\n    ;   Old = false\n    ),\n    setup_call_cleanup(\n        set_prolog_flag(xref, true),\n        limit(100, term_in_file(File, Term)),\n        set_prolog_flag(xref, Old)),\n    sub_term(Sub, Term),\n    foreign(Sub, Foreign),\n    !.\n\nforeign(use_foreign_library(Lib), Foreign) =>\n    strip_module(Lib, _, Foreign).\nforeign(use_foreign_library(Lib, _), Foreign) =>\n    strip_module(Lib, _, Foreign).\nforeign(_, _) => fail.\n\nterm_in_file(File, Term) :-\n    setup_call_cleanup(\n        prolog_open_source(File, In),\n        (   repeat,\n            prolog_read_source_term(In, Read, Expanded, [])\n        ),\n        prolog_close_source(In)),\n    (   Read == end_of_file\n    ->  !\n    ;   is_list(Expanded)\n    ->  member(Term, Expanded)\n    ;   Term = Expanded\n    ).\n\nskip_file('check_installation.pl'). % refers to all foreign files\nskip_file('sty_xpce.pl').           % does not import operators, causing syntax errors\n\n:- else.\n\n/* - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -\nOld version. This checks only the extensions.   Note that we only try to\nload the extensions that are  in  the   library.  If  the package is not\ndownloaded at all, this is on purpose.\n- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - */\n\nlib(space/space).\nlib(prosqlite).\nlib(r/r_call).\nlib(rocksdb).\nlib(hdt).\n\ntest :-\n    forall(lib(Lib), check_lib(library(Lib))),\n    writeln(\"Loaded modules successfully.\").\n\ncheck_lib(Lib) :-\n    exists_source(Lib),\n    !,\n    use_module(Lib, []).\ncheck_lib(_).\n\n:- endif.\n"
  },
  {
    "path": "test/tests/swipl-modules/expected-std-out.txt",
    "content": "Loaded modules successfully.\n"
  },
  {
    "path": "test/tests/tomcat-hello-world/index.jsp",
    "content": "<html>\n\t<head>\n\t\t<title>Sample JSP Page</title>\n\t</head>\n\t<body>\n\t\t<%= new String(\"Hello\") %> <%= new String(\"Docker\") %> <%= new String(\"World!\") %>\n\t</body>\n</html>\n"
  },
  {
    "path": "test/tests/tomcat-hello-world/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nserverImage=\"$(\"$dir/../image-name.sh\" librarytest/tomcat-hello-world \"$image\")\"\n\"$dir/../docker-build.sh\" \"$dir\" \"$serverImage\" <<EOD\nFROM $image\nCOPY dir/index.jsp \\$CATALINA_HOME/webapps/ROOT/\nEOD\n\n# Create an instance of the container-under-test\ncid=\"$(docker run -d \"$serverImage\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\n_request() {\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":tomcat \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsSL \"$@\" \"http://tomcat:8080/$url\"\n}\n\n# Make sure that Tomcat is listening\n. \"$dir/../../retry.sh\" '_request / &> /dev/null'\n\n# Check that our simple servlet works\nhelloWorld=\"$(_request '/')\"\n[[ \"$helloWorld\" == *'Hello Docker World!'* ]]\n"
  },
  {
    "path": "test/tests/utc/expected-std-out.txt",
    "content": "UTC\n"
  },
  {
    "path": "test/tests/utc/run.sh",
    "content": "#!/bin/bash\nset -e\n\ndocker run --rm --entrypoint date \"$1\" +%Z\n"
  },
  {
    "path": "test/tests/varnish/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nvname=\"varnish-volume-$RANDOM-$RANDOM\"\ntrap \"docker volume rm $vname > /dev/null\" EXIT\ndocker volume create --driver local \\\n\t--opt type=tmpfs \\\n\t--opt device=tmpfs \\\n\t--opt o=size=100m \\\n\t$vname\n\n\ncname=\"varnish-container-$RANDOM-$RANDOM\"\ncid=\"$(\n\tdocker run -d \\\n\t\t-v $vname:/var/lib/varnish \\\n\t\t--name \"$cname\" \\\n\t\t\"$image\" \\\n\t\tvarnishd -F -a 0:0 -f /etc/varnish/default.vcl\n)\"\ntrap \"docker rm -vf $cid > /dev/null; docker volume rm $vname > /dev/null\" EXIT\n\nsidecar() {\n\tdocker run --rm -i \\\n\t\t--network container:\"$cid\" \\\n\t\t-v $vname:/var/lib/varnish \\\n\t\t\"$image\" \\\n\t\t\"$@\" > /dev/null\n}\n\nset -x\nsidecar varnishlog -d\nsidecar varnishncsa -d\nsidecar varnishstat -1\nsidecar varnishreload\nsidecar varnishadm ping\n"
  },
  {
    "path": "test/tests/wordpress-apache-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\n# Use a client image with curl for testing\nclientImage='buildpack-deps:trixie-curl'\n# ensure the clientImage is ready and available\nif ! docker image inspect \"$clientImage\" &> /dev/null; then\n\tdocker pull \"$clientImage\" > /dev/null\nfi\n\nmysqlImage='mysql:lts'\n# ensure the mysqlImage is ready and available\nif ! docker image inspect \"$mysqlImage\" &> /dev/null; then\n\tdocker pull \"$mysqlImage\" > /dev/null\nfi\nserverImage=\"$1\"\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d -e MYSQL_ROOT_PASSWORD=\"test-$RANDOM-password-$RANDOM-$$\" \"$mysqlImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\ncid=\"$(docker run -d --link \"$mysqlCid\":mysql \"$serverImage\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\n_request() {\n\tlocal method=\"$1\"\n\tshift\n\n\tlocal url=\"${1#/}\"\n\tshift\n\n\tdocker run --rm \\\n\t\t--link \"$cid\":apache \\\n\t\t\"$clientImage\" \\\n\t\tcurl -fsL -X\"$method\" \"$@\" \"http://apache/$url\"\n}\n\n# Make sure that Apache is listening and ready\n. \"$dir/../../retry.sh\" --tries 30 '_request GET / --output /dev/null'\n# (give it a bit long since it won't start until MySQL is started and ready)\n\n# Check that we can request / and that it contains the word \"setup\" somewhere\n# <form id=\"setup\" method=\"post\" action=\"?step=1\"><label class='screen-reader-text' for='language'>Select a default language</label>\n_request GET '/' | grep -i setup > /dev/null\n"
  },
  {
    "path": "test/tests/wordpress-fpm-run/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\n# Build a client image with cgi-fcgi for testing\nclientImage='librarytest/wordpress-fpm-run:fcgi-client'\nif ! error=\"$(docker build -t \"$clientImage\" - 2>&1 <<-'EOF'\n\tFROM debian:trixie-slim\n\n\tRUN set -x && apt-get update && apt-get install -y --no-install-recommends libfcgi-bin && apt-get dist-clean\n\n\tENTRYPOINT [\"cgi-fcgi\"]\n\tEOF\n)\"; then\n\techo \"$error\" >&2\n\texit 1\nfi\n\nmysqlImage='mysql:lts'\n# ensure the mysqlImage is ready and available\nif ! docker image inspect \"$mysqlImage\" &> /dev/null; then\n\tdocker pull \"$mysqlImage\" > /dev/null\nfi\n\n# Create an instance of the container-under-test\nmysqlCid=\"$(docker run -d -e MYSQL_ROOT_PASSWORD=\"test-$RANDOM-password-$RANDOM-$$\" \"$mysqlImage\")\"\ntrap \"docker rm -vf $mysqlCid > /dev/null\" EXIT\ncid=\"$(docker run -d --link \"$mysqlCid\":mysql \"$image\")\"\ntrap \"docker rm -vf $cid $mysqlCid > /dev/null\" EXIT\n\nfcgi-request() {\n\tlocal method=\"$1\"\n\n\tlocal url=\"$2\"\n\tlocal queryString=\n\tif [[ \"$url\" == *\\?* ]]; then\n\t\tqueryString=\"${url#*\\?}\"\n\t\turl=\"${url%%\\?*}\"\n\tfi\n\n\tdocker run --rm -i --link \"$cid\":fpm \\\n\t\t-e REQUEST_METHOD=\"$method\" \\\n\t\t-e SCRIPT_NAME=\"$url\" \\\n\t\t-e SCRIPT_FILENAME=/var/www/html/\"${url#/}\" \\\n\t\t-e QUERY_STRING=\"$queryString\" \\\n\t\t-e HTTP_HOST='localhost' \\\n\t\t\"$clientImage\" \\\n\t\t-bind -connect fpm:9000\n}\n\n# Make sure that PHP-FPM is listening and ready\n. \"$dir/../../retry.sh\" --tries 30 'fcgi-request GET /index.php' > /dev/null 2>&1\n# (give it a bit long since it won't start until MySQL is started and ready)\n\n# index.php redirects to wp-admin/install.php, check that it contains the word \"setup\" somewhere\n# <form id=\"setup\" method=\"post\" action=\"?step=1\"><label class='screen-reader-text' for='language'>Select a default language</label>\nfcgi-request GET '/wp-admin/install.php' | grep -i setup > /dev/null\n"
  },
  {
    "path": "test/tests/znc-basics/run.sh",
    "content": "#!/bin/bash\nset -e\n\nvolume=\"$(docker volume create)\"\ntrap \"docker volume rm '$volume' &> /dev/null\" EXIT\n\ndocker run --rm --volume=\"$volume:/znc-data\" \"$1\" --makepem\ndocker run --rm --volume=\"$volume:/znc-data\" --entrypoint=grep \"$1\" 'BEGIN RSA PRIVATE KEY' /znc-data/znc.pem\n"
  },
  {
    "path": "test/tests/zookeeper-basics/run.sh",
    "content": "#!/bin/bash\nset -eo pipefail\n\ndir=\"$(dirname \"$(readlink -f \"$BASH_SOURCE\")\")\"\n\nimage=\"$1\"\n\nZOOKEEPER_TEST_SLEEP=3\nZOOKEEPER_TEST_TRIES=5\n\ncname=\"zookeeper-container-$RANDOM-$RANDOM\"\ncid=\"$(docker run -d --name \"$cname\" \"$image\")\"\ntrap \"docker rm -vf $cid > /dev/null\" EXIT\n\nzkCli() {\n\tdocker run --rm -i \\\n\t\t--link \"$cname\":zookeeper \\\n\t\t\"$image\" \\\n\t\tzkCli.sh \\\n\t\t-server zookeeper \\\n\t\t\"$@\"\n}\n\n. \"$dir/../../retry.sh\" --tries \"$ZOOKEEPER_TEST_TRIES\" --sleep \"$ZOOKEEPER_TEST_SLEEP\" zkCli ls /\n\n# List and check Zookeeper root\nzkCli ls / | grep '^\\[zookeeper\\]$' > /dev/null\n"
  },
  {
    "path": "toc.sh",
    "content": "#!/usr/bin/env bash\nset -Eeuo pipefail\n\nself=\"$(basename \"$0\")\"\nusage() {\n\tcat <<-EOU\n\t\tusage: $self path/to/markdown.md\n\t\t   eg: $self README.md\n\n\t\tWARNING: this will *always* clobber any path/to/markdown.md.{toc,bak} while processing; use with caution!\n\tEOU\n}\n\nmarkdown=\"${1:-}\"\nif ! shift || [ ! -s \"$markdown\" ]; then usage >&2; exit 1; fi\n\n# see https://gist.github.com/tianon/75e267d9137b1c2978031b66b3a98987 for an insane test case for this (with several rough edges)\n\njq --raw-input --null-input --raw-output '\n\treduce inputs as $line ({ toc: \"\" };\n\t\tif $line | test(\"^```\") then\n\t\t\t.ignore |= not\n\t\telse . end\n\t\t| if .ignore then . else\n\t\t\t(\n\t\t\t\t$line\n\t\t\t\t| capture(\"^(?<hash>#+)[[:space:]]*(?<heading>.*?)[[:space:]]*$\")\n\t\t\t\t// null\n\t\t\t) as $cap\n\t\t\t| if $cap then\n\t\t\t\t($cap.hash | length) as $level\n\t\t\t\t| .levels[$level] += 1\n\t\t\t\t| .levels |= (.[range($level+1; length)] = 0)\n\t\t\t\t| (\n\t\t\t\t\t$cap.heading\n\t\t\t\t\t| ascii_downcase\n\t\t\t\t\t# https://github.com/thlorenz/anchor-markdown-header/blob/6b9bc1c902e48942666859fb6f795d91cbfd48e7/anchor-markdown-header.js#L33-L48\n\t\t\t\t\t| gsub(\" \"; \"-\")\n\t\t\t\t\t# escape codes (commented out because this is not something GitHub strips, although it *does* strip % which is not included below, so that is added here)\n\t\t\t\t\t#| gsub(\"%[abcdef0-9]{2}\"; \"\"; \"i\")\n\t\t\t\t\t| gsub(\"%\"; \"\")\n\t\t\t\t\t# single chars that are removed\n\t\t\t\t\t| gsub(\"[\\\\\\\\/?!:\\\\[\\\\]`.,()*\\\"'\"'\"';{}+=<>~$|#@&–—]\"; \"\")\n\t\t\t\t\t# CJK punctuations that are removed\n\t\t\t\t\t| gsub(\"[。？！，、；：“”【】（）〔〕［］﹃﹄“ ”‘’﹁﹂—…－～《》〈〉「」]\"; \"\")\n\t\t\t\t\t# Strip emojis (*technically* this is way too aggressive and will strip out *all* UTF-8, but 🤷)\n\t\t\t\t\t| (split(\"\") | map(select(utf8bytelength == 1)) | join(\"\"))\n\t\t\t\t\t# TODO Strip embedded markdown formatting\n\t\t\t\t) as $anchor\n\t\t\t\t# handle repetition (same end anchor)\n\t\t\t\t| (\n\t\t\t\t\t(.seen // []) as $seen\n\t\t\t\t\t| first(\n\t\t\t\t\t\t# this 1000 limits how many repeated headings we can have, but 1000 of the exact same header text seems pretty generous 🙊\n\t\t\t\t\t\t$anchor + (range(1000) | if . > 0 then \"-\\(.)\" else \"\" end)\n\t\t\t\t\t\t| select(IN($seen[]) | not)\n\t\t\t\t\t)\n\t\t\t\t\t// error(\"repetition level too deep on #\\($anchor) (\\($line)) at line \\(input_line_number)\")\n\t\t\t\t) as $finalAnchor\n\t\t\t\t| .toc += \"\\(\"\\t\" * ($level-1) // \"\")\\(.levels[$level]).\\t[\\($cap.heading)](#\\($finalAnchor))\\n\"\n\t\t\t\t| .seen += [ $finalAnchor ]\n\t\t\telse . end\n\t\tend\n\t)\n\t| .toc\n' \"$markdown\" > \"$markdown.toc\"\n\ngawk -v tocFile=\"$markdown.toc\" '\n\t/^<!-- AUTOGENERATED TOC -->$/ {\n\t\tinToc = !inToc\n\t\tseenToc = 1\n\t\tif (inToc) {\n\t\t\tprint\n\t\t\tprint \"\"\n\t\t\tsystem(\"cat \" tocFile)\n\t\t\t# no need for another newline because tocFile should already end with one\n\t\t\tprint\n\t\t}\n\t\tnext\n\t}\n\t!inToc { print }\n' \"$markdown\" > \"$markdown.bak\"\n\nmv -f \"$markdown.bak\" \"$markdown\"\nrm -f \"$markdown.toc\"\n"
  }
]