diff --git a/.ci/check-metadata.sh b/.ci/check-metadata.sh new file mode 100755 index 000000000000..23ba1754cd83 --- /dev/null +++ b/.ci/check-metadata.sh @@ -0,0 +1,9 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." + +# metadata.sh takes directories with a 'metadata.json' in them +# metadata.json is expected in every repo +# "." so that the canonical source metadata.json is checked too +./metadata.sh */ . diff --git a/.ci/check-ymlfmt.sh b/.ci/check-ymlfmt.sh index 5315948d9a0b..161f4f54caae 100755 --- a/.ci/check-ymlfmt.sh +++ b/.ci/check-ymlfmt.sh @@ -3,7 +3,7 @@ set -Eeuo pipefail cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." -files="$(find -name '*.yml' -not -path './.github/*')" +files="$(find '(' -name '*.yml' -o -name '*.yaml' ')' -not -path './.github/*')" need=() needdiff= for f in $files; do diff --git a/.gitattributes b/.gitattributes new file mode 100644 index 000000000000..6313b56c5784 --- /dev/null +++ b/.gitattributes @@ -0,0 +1 @@ +* text=auto eol=lf diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 130d1c4e7cdc..1d61341dfce3 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -19,30 +19,35 @@ jobs: markdownfmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: docker pull tianon/markdownfmt - run: .ci/check-markdownfmt.sh ymlfmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: docker pull tianon/ymlfmt - run: .ci/check-ymlfmt.sh short: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: .ci/check-short.sh required-files: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 - run: .ci/check-required-files.sh no-readme: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v3 + - uses: actions/checkout@v4 with: fetch-depth: 0 - run: .ci/check-pr-no-readme.sh if: ${{ github.event_name == 'pull_request' }} + metadata: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v4 + - run: .ci/check-metadata.sh diff --git a/.template-helpers/compose.md b/.template-helpers/compose.md index 901a1af15216..ef16614cd709 100644 --- a/.template-helpers/compose.md +++ b/.template-helpers/compose.md @@ -1,5 +1,5 @@ -... via [`docker-compose`](https://github.com/docker/compose) +... via [`docker compose`](https://github.com/docker/compose) -Example `docker-compose.yml` for `%%REPO%%`: +Example `compose.yaml` for `%%REPO%%`: -%%COMPOSE-YML%% +%%COMPOSE-YAML%% diff --git a/.template-helpers/generate-dockerfile-links-partial.sh b/.template-helpers/generate-dockerfile-links-partial.sh index 3f0a1c91a734..126fcbea3920 100755 --- a/.template-helpers/generate-dockerfile-links-partial.sh +++ b/.template-helpers/generate-dockerfile-links-partial.sh @@ -13,7 +13,7 @@ if [ -z "${BASHBREW_LIBRARY:-}" ]; then repo="https://github.com/docker-library/official-images/raw/master/library/$repo" fi -if [ -n "$ARCH_SPECIFIC_DOCS" ] && archTags="$(bashbrew cat --format '{{ range .Entries }}{{ if .HasArchitecture arch }}{{ .Tags | first }}{{ "\n" }}{{ end }}{{ end }}' "$repo")" && [ -z "$archTags" ]; then +if [ -n "$ARCH_SPECIFIC_DOCS" ] && archTags="$(bashbrew list --uniq --arch-filter "$repo")" && [ -z "$archTags" ]; then echo "**WARNING:** THIS IMAGE *IS NOT SUPPORTED* ON THE \`$BASHBREW_ARCH\` ARCHITECTURE" exit fi diff --git a/.template-helpers/generate-dockerfile-links-partial.tmpl b/.template-helpers/generate-dockerfile-links-partial.tmpl index 2889640fb4ce..64472167decb 100644 --- a/.template-helpers/generate-dockerfile-links-partial.tmpl +++ b/.template-helpers/generate-dockerfile-links-partial.tmpl @@ -33,16 +33,13 @@ This template defines the "Supported tags and Dockerfile links" portion of an im {{- $url = $url | ternary $url (hasPrefix "https://git.launchpad.net/" $repoUrlBase | ternary (print $repoUrlBase "/tree/" $dockerfilePath "?h=" ($e.ArchGitFetch $arch) "&id=" $gitCommit) "") -}} {{- /* TODO decide what to do (if anything) about other non-GitHub repos with respect to URL */ -}} - {{- if $i -}} - {{- "\n" -}} - {{- end -}} - - {{- "\t" -}} {{- if $url -}} [ {{- end -}} ` {{- $e.Tags | join "`, `" -}} ` {{- if $url -}} ]( {{- $url -}} ) {{- end -}} + + {{- "\n\n" -}} {{- end -}} -{{- "\n\n" -}} {{- if (len $sharedTagGroups) -}} {{- "## Shared Tags\n\n" -}} @@ -53,7 +50,7 @@ This template defines the "Supported tags and Dockerfile links" portion of an im {{- if (len $entries) -}} {{- "-\t`" -}} {{ .SharedTags | join "`, `" }} - {{- "`:\n" -}} + {{- "`:\n\n" -}} {{- range $i, $e := $entries -}} {{- $arch := $archSpecific | ternary arch ($e.HasArchitecture arch | ternary arch ($e.Architectures | first)) -}} @@ -81,6 +78,7 @@ This template defines the "Supported tags and Dockerfile links" portion of an im {{- "\n" -}} {{- end -}} + {{- "\n" -}} {{- end -}} {{- end -}} {{- "\n" -}} diff --git a/.template-helpers/issues.md b/.template-helpers/issues.md index d2dbb7fccc4a..95588e2904a5 100644 --- a/.template-helpers/issues.md +++ b/.template-helpers/issues.md @@ -1 +1 @@ -[%%GITHUB-REPO%%/issues](%%GITHUB-REPO%%/issues) +[%%GITHUB-REPO%%/issues](%%GITHUB-REPO%%/issues?q=) diff --git a/.template-helpers/stack.md b/.template-helpers/stack.md deleted file mode 100644 index f1b03ca87f5d..000000000000 --- a/.template-helpers/stack.md +++ /dev/null @@ -1,7 +0,0 @@ -... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) - -Example `stack.yml` for `%%REPO%%`: - -%%STACK-YML%% - -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=%%STACK-URL%%) diff --git a/.template-helpers/variant-windowsservercore.md b/.template-helpers/variant-windowsservercore.md index 229eff77dacd..fa5e3498238b 100644 --- a/.template-helpers/variant-windowsservercore.md +++ b/.template-helpers/variant-windowsservercore.md @@ -1,8 +1,7 @@ ## `%%IMAGE%%:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) diff --git a/Dockerfile b/Dockerfile index b849af2edf39..66365c00b774 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,4 +1,4 @@ -FROM perl:5.30-buster +FROM perl:5.39-bookworm RUN set -eux; \ apt-get update; \ diff --git a/README.md b/README.md index fd46f6562c67..9b6a68746611 100644 --- a/README.md +++ b/README.md @@ -33,8 +33,9 @@ All Markdown files here are run through [tianon's fork of `markdownfmt`](https:/ 6. [`license.md`](#licensemd) 7. [`logo.png`](#logopng) 8. [`maintainer.md`](#maintainermd) - 9. [`README-short.txt`](#readme-shorttxt) - 10. [`stack.yml`](#stackyml) + 9. [`metadata.json`](#metadatajson) + 10. [`README-short.txt`](#readme-shorttxt) + 11. [`compose.yaml`](#composeyaml) 5. [Files for main Docs repo](#files-for-main-docs-repo) 1. [`update.sh`](#updatesh) 2. [`markdownfmt.sh` and `ymlfmt.sh`](#markdownfmtsh-and-ymlfmtsh) @@ -61,6 +62,7 @@ After opening your Pull Request the changes will be checked by an automated `mar - Create a `license.md` (required) - Create a `maintainer.md` (required) - Create a `github-repo` (required) +- Create a `metadata.json` (required) - Add a `logo.png` (recommended) Optionally: @@ -128,17 +130,29 @@ The image is automatically scaled to a 120 pixel square for the top of the Docke This file should contain a link to the maintainers of the Dockerfile. +## `metadata.json` + +This file contains data about the repo for Docker Hub. The minimum file is defined below. `./metadata.sh [repo-name]` must be used to correctly format it (use `-w` to apply its suggested format changes). Only three sorted unique Docker Hub categories are allowed. `metadata.json` in the root contains the list of categories to choose from. See descriptions for the categories on the [Docker docs site](https://docs.docker.com/docker-hub/repos/categories/). + +```json +{ + "hub": { + "categories": [] + } +} +``` + ## `README-short.txt` This is the short description for the Docker Hub, limited to 100 characters in a single line. > Go (golang) is a general purpose, higher-level, imperative programming language. -## `stack.yml` +## `compose.yaml` -This optional file contains a small, working [Compose file for Docker Swarm](https://docs.docker.com/compose/compose-file/compose-file-v3/) showing off how to use the image. To use the `stack.yml`, add `%%STACK%%` to the `content.md` and this will embed the YAML along with a link to directly try it in [Play with Docker](https://labs.play-with-docker.com/). +This optional file contains a small, working [Compose file](https://docs.docker.com/reference/compose-file/) showing off how to use the image. To use the `compose.yaml`, add `%%COMPOSE%%` to the `content.md` and this will embed the YAML. -The file must work via `docker stack deploy` since that is how Play with Docker will launch it, but it is helpful for users to try locally if it works for `docker-compose` as well. Other official images may be referenced within the YAML to demonstrate the functionality of the image, but no images external to the Docker Official Images program may be referenced. +Other official images may be referenced within the YAML to demonstrate the functionality of the image, but no images external to the Docker Official Images program may be referenced. # Files for main Docs repo @@ -146,7 +160,7 @@ The file must work via `docker stack deploy` since that is how Play with Docker This is the main script used to generate the `README.md` files for each image. The generated file is committed along with the files used to generate it. Accepted arguments are which image(s) you want to update or no arguments to update all of them. -This script assumes [`bashbrew`](https://github.com/docker-library/official-images/tree/81e90ca8dcec892ade7eb348cba5a4a5d6851e17/bashbrew) is in your `PATH` (for scraping relevant tag information from the library manifest file for each repository). +This script assumes [`bashbrew`](https://github.com/docker-library/bashbrew/releases) is in your `PATH` (for scraping relevant tag information from the library manifest file for each repository). ## `markdownfmt.sh` and `ymlfmt.sh` diff --git a/adminer/README.md b/adminer/README.md index 030a6cd24f0e..88ac9ea02b08 100644 --- a/adminer/README.md +++ b/adminer/README.md @@ -24,16 +24,21 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`4.8.1-standalone`, `4-standalone`, `standalone`, `4.8.1`, `4`, `latest`](https://github.com/TimWolla/docker-adminer/blob/c9c54b18f79a66409a3153a94f629ea68f08647c/4/Dockerfile) -- [`4.8.1-fastcgi`, `4-fastcgi`, `fastcgi`](https://github.com/TimWolla/docker-adminer/blob/c9c54b18f79a66409a3153a94f629ea68f08647c/4/fastcgi/Dockerfile) +- [`5.4.1`, `5`, `latest`, `5.4.1-standalone`, `5-standalone`, `standalone`](https://github.com/TimWolla/docker-adminer/blob/bf3ab5cb29e2c46cb5ecabe89b650c72af431b57/5/Dockerfile) + +- [`5.4.1-fastcgi`, `5-fastcgi`, `fastcgi`](https://github.com/TimWolla/docker-adminer/blob/bf3ab5cb29e2c46cb5ecabe89b650c72af431b57/5/fastcgi/Dockerfile) + +- [`4.17.1`, `4`, `4.17.1-standalone`, `4-standalone`](https://github.com/TimWolla/docker-adminer/blob/0c0fd187e8646ad61fe592a80d66abec2c1dc951/4/Dockerfile) + +- [`4.17.1-fastcgi`, `4-fastcgi`](https://github.com/TimWolla/docker-adminer/blob/0c0fd187e8646ad61fe592a80d66abec2c1dc951/4/fastcgi/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/TimWolla/docker-adminer/issues](https://github.com/TimWolla/docker-adminer/issues) + [https://github.com/TimWolla/docker-adminer/issues](https://github.com/TimWolla/docker-adminer/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/adminer/), [`arm32v5`](https://hub.docker.com/r/arm32v5/adminer/), [`arm32v7`](https://hub.docker.com/r/arm32v7/adminer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/adminer/), [`i386`](https://hub.docker.com/r/i386/adminer/), [`mips64le`](https://hub.docker.com/r/mips64le/adminer/), [`ppc64le`](https://hub.docker.com/r/ppc64le/adminer/), [`s390x`](https://hub.docker.com/r/s390x/adminer/) + [`amd64`](https://hub.docker.com/r/amd64/adminer/), [`arm32v6`](https://hub.docker.com/r/arm32v6/adminer/), [`arm32v7`](https://hub.docker.com/r/arm32v7/adminer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/adminer/), [`i386`](https://hub.docker.com/r/i386/adminer/), [`ppc64le`](https://hub.docker.com/r/ppc64le/adminer/), [`riscv64`](https://hub.docker.com/r/riscv64/adminer/), [`s390x`](https://hub.docker.com/r/s390x/adminer/) - **Published image artifact details**: [repo-info repo's `repos/adminer/` directory](https://github.com/docker-library/repo-info/blob/master/repos/adminer) ([history](https://github.com/docker-library/repo-info/commits/master/repos/adminer)) @@ -78,15 +83,13 @@ Then point your web server to port 9000 of the container. Note: This exposes the FastCGI socket to the Internet. Make sure to add proper firewall rules or use a private Docker network instead to prevent a direct access. -### ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +### ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `adminer`: +Example `compose.yaml` for `adminer`: ```yaml # Use root/example as user/password credentials -version: '3.1' - services: adminer: @@ -102,9 +105,7 @@ services: MYSQL_ROOT_PASSWORD: example ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/adminer/stack.yml) - -Run `docker stack deploy -c stack.yml adminer` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ### Loading plugins @@ -177,7 +178,7 @@ To add support for the other drivers you will need to install the following PHP # License -View [license information](https://github.com/vrana/adminer/blob/master/readme.txt) for the software contained in this image. +View [license information](https://github.com/vrana/adminer/blob/master/LICENSE) for the software contained in this image. As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/adminer/stack.yml b/adminer/compose.yaml similarity index 93% rename from adminer/stack.yml rename to adminer/compose.yaml index 56aa33b59f26..8cff90103332 100644 --- a/adminer/stack.yml +++ b/adminer/compose.yaml @@ -1,7 +1,5 @@ # Use root/example as user/password credentials -version: '3.1' - services: adminer: diff --git a/adminer/content.md b/adminer/content.md index 8ff1691833a8..d38e5286a24a 100644 --- a/adminer/content.md +++ b/adminer/content.md @@ -30,9 +30,9 @@ Then point your web server to port 9000 of the container. Note: This exposes the FastCGI socket to the Internet. Make sure to add proper firewall rules or use a private Docker network instead to prevent a direct access. -### %%STACK%% +### %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ### Loading plugins diff --git a/adminer/license.md b/adminer/license.md index 120e86ad3c0c..010ac01fa2f0 100644 --- a/adminer/license.md +++ b/adminer/license.md @@ -1 +1 @@ -View [license information](https://github.com/vrana/adminer/blob/master/readme.txt) for the software contained in this image. +View [license information](https://github.com/vrana/adminer/blob/master/LICENSE) for the software contained in this image. diff --git a/adminer/metadata.json b/adminer/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/adminer/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/aerospike/README.md b/aerospike/README.md index 1412be72a97b..1f3a41c759b0 100644 --- a/aerospike/README.md +++ b/aerospike/README.md @@ -17,20 +17,21 @@ WARNING: # Quick reference - **Maintained by**: - [Aerospike, Inc.](https://github.com/aerospike/aerospike-server-enterprise.docker) + [Aerospike, Inc.](https://github.com/aerospike/aerospike-server.docker) - **Where to get help**: [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`ee-6.2.0.2`](https://github.com/aerospike/aerospike-server.docker/blob/26089140713466195470d5d246fdd2bda5b82180/enterprise/debian11/Dockerfile) -- [`ce-6.2.0.2`](https://github.com/aerospike/aerospike-server.docker/blob/26089140713466195470d5d246fdd2bda5b82180/community/debian11/Dockerfile) +- [`ee-8.1.0.1`, `ee-8.1.0.1_1`](https://github.com/aerospike/aerospike-server.docker/blob/aca2fba6072cf602c24fb500e9f0d71ff404b135/enterprise/ubuntu24.04/Dockerfile) + +- [`ce-8.1.0.1`, `ce-8.1.0.1_1`](https://github.com/aerospike/aerospike-server.docker/blob/aca2fba6072cf602c24fb500e9f0d71ff404b135/community/ubuntu24.04/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [the Aerospike Forums](https://discuss.aerospike.com) or [GitHub](https://github.com/aerospike/aerospike-server-enterprise.docker/issues) + [the Aerospike Forums](https://discuss.aerospike.com) or [GitHub](https://github.com/aerospike/aerospike-server.docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/aerospike/), [`arm64v8`](https://hub.docker.com/r/arm64v8/aerospike/) @@ -52,7 +53,7 @@ WARNING: [Aerospike](http://aerospike.com) is a distributed NoSQL database purposefully designed for high performance web scale applications. Aerospike supports key-value and document data models, and has multiple data types including List, Map, HyperLogLog, GeoJSON, and Blob. Aerospike's patented hybrid memory architecture delivers predictable high performance at scale and high data density per node. -![logo](https://raw.githubusercontent.com/docker-library/docs/9944063c59872460e15f6ecb19c1419c8124752f/aerospike/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/42ae663b4b922326e5c55c7c513c8d04a11f9aaf/aerospike/logo.png) ## Getting Started @@ -70,7 +71,7 @@ docker run -d -v DIR:/opt/aerospike/etc/ -e "FEATURE_KEY_FILE=/opt/aerospike/etc Above, *DIR* is a directory on your machine where you drop your feature key file. Make sure Docker Desktop has file sharing permission to bind mount it into Docker containers. -### Running an Aerospike EE node with a feature key file in a mapped directory +### Running a node with a feature key file in an environment variable ```console FEATKEY=$(base64 ~/Desktop/evaluation-features.conf) @@ -131,7 +132,7 @@ You should first `-v` map a local directory, which Docker will bind mount. Next, For example: ```console -docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike-p 3000-3002:3000-3002 aerospike:ee-[version] --config-file /opt/aerospike/etc/aerospike.conf +docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 aerospike:ee-[version] --config-file /opt/aerospike/etc/aerospike.conf ``` ### Persistent Data Directory @@ -217,7 +218,7 @@ For more, see [How do I get a 2 nodes Aerospike cluster running quickly in Docke ## Image Versions -These images are based on [debian:strech-slim](https://hub.docker.com/_/debian). +These images are based on [ubuntu:24.04](https://hub.docker.com/_/ubuntu). ### ee-[version] diff --git a/aerospike/content.md b/aerospike/content.md index 35650ff23744..22636b99fe26 100644 --- a/aerospike/content.md +++ b/aerospike/content.md @@ -22,7 +22,7 @@ docker run -d -v DIR:/opt/aerospike/etc/ -e "FEATURE_KEY_FILE=/opt/aerospike/etc Above, *DIR* is a directory on your machine where you drop your feature key file. Make sure Docker Desktop has file sharing permission to bind mount it into Docker containers. -### Running an Aerospike EE node with a feature key file in a mapped directory +### Running a node with a feature key file in an environment variable ```console FEATKEY=$(base64 ~/Desktop/evaluation-features.conf) @@ -83,7 +83,7 @@ You should first `-v` map a local directory, which Docker will bind mount. Next, For example: ```console -docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike-p 3000-3002:3000-3002 %%IMAGE%%:ee-[version] --config-file /opt/aerospike/etc/aerospike.conf +docker run -d -v /opt/aerospike/etc/:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 %%IMAGE%%:ee-[version] --config-file /opt/aerospike/etc/aerospike.conf ``` ### Persistent Data Directory @@ -169,7 +169,7 @@ For more, see [How do I get a 2 nodes Aerospike cluster running quickly in Docke ## Image Versions -These images are based on [debian:strech-slim](https://hub.docker.com/_/debian). +These images are based on [ubuntu:24.04](https://hub.docker.com/_/ubuntu). ### ee-[version] diff --git a/aerospike/github-repo b/aerospike/github-repo index bfe29fcaf8f4..91cf2ac3e131 100644 --- a/aerospike/github-repo +++ b/aerospike/github-repo @@ -1 +1 @@ -https://github.com/aerospike/aerospike-server-enterprise.docker +https://github.com/aerospike/aerospike-server.docker diff --git a/aerospike/logo.png b/aerospike/logo.png index 5b16337ca923..d2f508ec62cf 100644 Binary files a/aerospike/logo.png and b/aerospike/logo.png differ diff --git a/aerospike/metadata.json b/aerospike/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/aerospike/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/almalinux/README.md b/almalinux/README.md index a71a0facc5d1..44a290a14cde 100644 --- a/almalinux/README.md +++ b/almalinux/README.md @@ -24,10 +24,21 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`, `8`, `8.7`, `8.7-20221201`](https://github.com/AlmaLinux/docker-images/blob/c23f18dbac3cb8bdba691019de42ebc25933c676/Dockerfile-x86_64-default) -- [`minimal`, `8-minimal`, `8.7-minimal`, `8.7-minimal-20221201`](https://github.com/AlmaLinux/docker-images/blob/c23f18dbac3cb8bdba691019de42ebc25933c676/Dockerfile-x86_64-minimal) -- [`9`, `9.1`, `9.1-20221201`](https://github.com/AlmaLinux/docker-images/blob/dd9e3fb5f2f6f68169a4286b32d0509f295d2fed/Dockerfile-x86_64-default) -- [`9-minimal`, `9.1-minimal`, `9.1-minimal-20221201`](https://github.com/AlmaLinux/docker-images/blob/dd9e3fb5f2f6f68169a4286b32d0509f295d2fed/Dockerfile-x86_64-minimal) +- [`10-kitten`, `10-kitten-20250909`](https://github.com/AlmaLinux/container-images/blob/571a3caca09a9dd0f8c81c7834af79b8f9ad8ab2/default/amd64/Dockerfile) + +- [`10-kitten-minimal`, `10-kitten-minimal-20250909`](https://github.com/AlmaLinux/container-images/blob/571a3caca09a9dd0f8c81c7834af79b8f9ad8ab2/minimal/amd64/Dockerfile) + +- [`10`, `10.0`, `10.0-20250909`](https://github.com/AlmaLinux/container-images/blob/2f239bc800a366ea4dc42378905c237ae6e4e03a/default/amd64/Dockerfile) + +- [`10-minimal`, `10.0-minimal`, `10.0-minimal-20250909`](https://github.com/AlmaLinux/container-images/blob/2f239bc800a366ea4dc42378905c237ae6e4e03a/minimal/amd64/Dockerfile) + +- [`8`, `8.10`, `8.10-20250909`](https://github.com/AlmaLinux/container-images/blob/1bee999abd112c603a3044f96282a2c1b66cb57f/default/amd64/Dockerfile) + +- [`8-minimal`, `8.10-minimal`, `8.10-minimal-20250909`](https://github.com/AlmaLinux/container-images/blob/1bee999abd112c603a3044f96282a2c1b66cb57f/minimal/amd64/Dockerfile) + +- [`latest`, `9`, `9.6`, `9.6-20250909`](https://github.com/AlmaLinux/container-images/blob/17f5f89c183962069c90892cd92c8b83598b8807/default/amd64/Dockerfile) + +- [`minimal`, `9-minimal`, `9.6-minimal`, `9.6-minimal-20250909`](https://github.com/AlmaLinux/container-images/blob/17f5f89c183962069c90892cd92c8b83598b8807/minimal/amd64/Dockerfile) # Quick reference (cont.) @@ -50,7 +61,7 @@ WARNING: # AlmaLinux OS -[AlmaLinux OS](https://almalinux.org/) is an Open Source and forever-free enterprise Linux distribution, governed and driven by the community, focused on long-term stability and a robust production-grade platform. AlmaLinux OS is 1:1 binary compatible with RHEL® 8 and it was founded by the team behind the well-established [CloudLinux OS](https://www.cloudlinux.com/all-products/product-overview/cloudlinuxos). +[AlmaLinux OS](https://almalinux.org/) is an Open Source and forever-free enterprise Linux distribution, governed and driven by the community, focused on long-term stability and a robust production-grade platform. AlmaLinux OS is binary compatible with RHEL®, and it was founded by the team behind the well-established [CloudLinux OS](https://www.cloudlinux.com/all-products/product-overview/cloudlinuxos). Today, the AlmaLinux OS Foundation, run by a community-elected board of directors, owns and manages the operating system. ![logo](https://raw.githubusercontent.com/docker-library/docs/23547f3e976bc000d1a01a47241000f72aec9a40/almalinux/logo.png) diff --git a/almalinux/content.md b/almalinux/content.md index 15219c47fa42..53b1f6873e2d 100644 --- a/almalinux/content.md +++ b/almalinux/content.md @@ -1,6 +1,6 @@ # AlmaLinux OS -[AlmaLinux OS](https://almalinux.org/) is an Open Source and forever-free enterprise Linux distribution, governed and driven by the community, focused on long-term stability and a robust production-grade platform. AlmaLinux OS is 1:1 binary compatible with RHEL® 8 and it was founded by the team behind the well-established [CloudLinux OS](https://www.cloudlinux.com/all-products/product-overview/cloudlinuxos). +[AlmaLinux OS](https://almalinux.org/) is an Open Source and forever-free enterprise Linux distribution, governed and driven by the community, focused on long-term stability and a robust production-grade platform. AlmaLinux OS is binary compatible with RHEL®, and it was founded by the team behind the well-established [CloudLinux OS](https://www.cloudlinux.com/all-products/product-overview/cloudlinuxos). Today, the AlmaLinux OS Foundation, run by a community-elected board of directors, owns and manages the operating system. %%LOGO%% diff --git a/almalinux/metadata.json b/almalinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/almalinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/alpine/README.md b/alpine/README.md index 1cd2334d9e64..060652d57ea3 100644 --- a/alpine/README.md +++ b/alpine/README.md @@ -24,16 +24,20 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`20221110`, `edge`](https://github.com/alpinelinux/docker-alpine/blob/7161d59eb68a7a2e71df7b4137c1c9403107d8a6/x86_64/Dockerfile) -- [`3.17.1`, `3.17`, `3`, `latest`](https://github.com/alpinelinux/docker-alpine/blob/e889a60a47c564eeb5e36e87afc9d156ea7d7034/x86_64/Dockerfile) -- [`3.16.3`, `3.16`](https://github.com/alpinelinux/docker-alpine/blob/00e486941da9720adfdc82ac0144af73818ae732/x86_64/Dockerfile) -- [`3.15.6`, `3.15`](https://github.com/alpinelinux/docker-alpine/blob/a9e802051a3a2ae7d6fdd32ff6f5b39e62240089/x86_64/Dockerfile) -- [`3.14.8`, `3.14`](https://github.com/alpinelinux/docker-alpine/blob/a6c74aa475f4bc471e72f527db6256d8c3a52434/x86_64/Dockerfile) +- [`20250108`, `edge`](https://github.com/alpinelinux/docker-alpine/blob/c1f1de232c970df2285c03050ab3747b8563164f/x86_64/Dockerfile) + +- [`3.22.2`, `3.22`, `3`, `latest`](https://github.com/alpinelinux/docker-alpine/blob/4dc13cbc7caffe03c98aa99f28e27c2fb6f7e74d/x86_64/Dockerfile) + +- [`3.21.5`, `3.21`](https://github.com/alpinelinux/docker-alpine/blob/2c30d5daeebb5090b1b6363a9e97dd88bf08a642/x86_64/Dockerfile) + +- [`3.20.8`, `3.20`](https://github.com/alpinelinux/docker-alpine/blob/f5ce8f036ef8a57481ae6f3f1cf7f2300cff8d29/x86_64/Dockerfile) + +- [`3.19.9`, `3.19`](https://github.com/alpinelinux/docker-alpine/blob/ee939d52345248420cf62d4606ccc7152bc5a107/x86_64/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/alpinelinux/docker-alpine/issues](https://github.com/alpinelinux/docker-alpine/issues) + [https://github.com/alpinelinux/docker-alpine/issues](https://github.com/alpinelinux/docker-alpine/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/alpine/), [`arm32v6`](https://hub.docker.com/r/arm32v6/alpine/), [`arm32v7`](https://hub.docker.com/r/arm32v7/alpine/), [`arm64v8`](https://hub.docker.com/r/arm64v8/alpine/), [`i386`](https://hub.docker.com/r/i386/alpine/), [`ppc64le`](https://hub.docker.com/r/ppc64le/alpine/), [`riscv64`](https://hub.docker.com/r/riscv64/alpine/), [`s390x`](https://hub.docker.com/r/s390x/alpine/) diff --git a/alpine/metadata.json b/alpine/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/alpine/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/alt/README.md b/alt/README.md index 5007fdd6c37a..d422eda05d8c 100644 --- a/alt/README.md +++ b/alt/README.md @@ -24,9 +24,11 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`p10`, `latest`](https://github.com/alt-cloud/docker-brew-alt/blob/b231d221f40d951338c30902735044a36bb1895f/x86_64/Dockerfile) -- [`p9`](https://github.com/alt-cloud/docker-brew-alt/blob/fa873ac1d6ad83275982565b82b67b009969fd6a/x86_64/Dockerfile) -- [`sisyphus`](https://github.com/alt-cloud/docker-brew-alt/blob/a7155b68c43e43d50c162e355946303abf76f7d8/x86_64/Dockerfile) +- [`p10`](https://github.com/alt-cloud/docker-brew-alt/blob/ef522411b7245d758aa8c8a24a0575c742fac1a2/x86_64/Dockerfile) + +- [`sisyphus`](https://github.com/alt-cloud/docker-brew-alt/blob/f6fcb549885ee57d7bbb53a22484ee16cb9413b0/x86_64/Dockerfile) + +- [`p11`, `latest`](https://github.com/alt-cloud/docker-brew-alt/blob/068702e0e800b291f7853380450a5557e56900c3/x86_64/Dockerfile) # Quick reference (cont.) @@ -36,7 +38,7 @@ WARNING: For create new bug, please use [ALT's bugzilla page](https://bugzilla.altlinux.org/enter_bug.cgi?product=Docker) (choose `Official image` as component and include details about image problems in the description) or [GitHub](https://github.com/alt-cloud/docker-brew-alt/issues). - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/alt/), [`arm32v7`](https://hub.docker.com/r/arm32v7/alt/), [`arm64v8`](https://hub.docker.com/r/arm64v8/alt/), [`i386`](https://hub.docker.com/r/i386/alt/), [`ppc64le`](https://hub.docker.com/r/ppc64le/alt/) + [`amd64`](https://hub.docker.com/r/amd64/alt/), [`arm64v8`](https://hub.docker.com/r/arm64v8/alt/), [`i386`](https://hub.docker.com/r/i386/alt/), [`riscv64`](https://hub.docker.com/r/riscv64/alt/) - **Published image artifact details**: [repo-info repo's `repos/alt/` directory](https://github.com/docker-library/repo-info/blob/master/repos/alt) ([history](https://github.com/docker-library/repo-info/commits/master/repos/alt)) diff --git a/alt/metadata.json b/alt/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/alt/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/amazoncorretto/README.md b/amazoncorretto/README.md index 7ec2862c3d75..3b1c448737a4 100644 --- a/amazoncorretto/README.md +++ b/amazoncorretto/README.md @@ -24,42 +24,94 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8`, `8u352`, `8u352-al2`, `8-al2-full`, `8-al2-jdk`, `latest`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jdk/al2/Dockerfile) -- [`8-al2022-RC`, `8u352-al2022-RC`, `8-al2022-jdk`, `8-al2022-RC-jre`, `8u352-al2022-RC-jre`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jdk/al2022/Dockerfile) -- [`8-alpine3.13`, `8u352-alpine3.13`, `8-alpine3.13-full`, `8-alpine3.13-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jdk/alpine/3.13/Dockerfile) -- [`8-alpine3.13-jre`, `8u352-alpine3.13-jre`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jre/alpine/3.13/Dockerfile) -- [`8-alpine3.14`, `8u352-alpine3.14`, `8-alpine3.14-full`, `8-alpine3.14-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jdk/alpine/3.14/Dockerfile) -- [`8-alpine3.14-jre`, `8u352-alpine3.14-jre`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jre/alpine/3.14/Dockerfile) -- [`8-alpine3.15`, `8u352-alpine3.15`, `8-alpine3.15-full`, `8-alpine3.15-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jdk/alpine/3.15/Dockerfile) -- [`8-alpine3.15-jre`, `8u352-alpine3.15-jre`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jre/alpine/3.15/Dockerfile) -- [`8-alpine3.16`, `8u352-alpine3.16`, `8-alpine3.16-full`, `8-alpine3.16-jdk`, `8-alpine`, `8u352-alpine`, `8-alpine-full`, `8-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jdk/alpine/3.16/Dockerfile) -- [`8-alpine3.16-jre`, `8u352-alpine3.16-jre`, `8-alpine-jre`, `8u352-alpine-jre`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/8/jre/alpine/3.16/Dockerfile) -- [`11`, `11.0.17`, `11.0.17-al2`, `11-al2-full`, `11-al2-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/jdk/al2/Dockerfile) -- [`11-al2022-RC`, `11.0.17-al2022-RC`, `11-al2022-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/jdk/al2022/Dockerfile) -- [`11-al2022-RC-headless`, `11.0.17-al2022-RC-headless`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/headless/al2022/Dockerfile) -- [`11-al2022-RC-headful`, `11.0.17-al2022-RC-headful`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/headful/al2022/Dockerfile) -- [`11-alpine3.13`, `11.0.17-alpine3.13`, `11-alpine3.13-full`, `11-alpine3.13-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/jdk/alpine/3.13/Dockerfile) -- [`11-alpine3.14`, `11.0.17-alpine3.14`, `11-alpine3.14-full`, `11-alpine3.14-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/jdk/alpine/3.14/Dockerfile) -- [`11-alpine3.15`, `11.0.17-alpine3.15`, `11-alpine3.15-full`, `11-alpine3.15-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/jdk/alpine/3.15/Dockerfile) -- [`11-alpine3.16`, `11.0.17-alpine3.16`, `11-alpine3.16-full`, `11-alpine3.16-jdk`, `11-alpine`, `11.0.17-alpine`, `11-alpine-full`, `11-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/11/jdk/alpine/3.16/Dockerfile) -- [`17`, `17.0.5`, `17.0.5-al2`, `17-al2-full`, `17-al2-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/jdk/al2/Dockerfile) -- [`17-al2022-RC`, `17.0.5-al2022-RC`, `17-al2022-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/jdk/al2022/Dockerfile) -- [`17-al2022-RC-headless`, `17.0.5-al2022-RC-headless`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/headless/al2022/Dockerfile) -- [`17-al2022-RC-headful`, `17.0.5-al2022-RC-headful`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/headful/al2022/Dockerfile) -- [`17-alpine3.13`, `17.0.5-alpine3.13`, `17-alpine3.13-full`, `17-alpine3.13-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/jdk/alpine/3.13/Dockerfile) -- [`17-alpine3.14`, `17.0.5-alpine3.14`, `17-alpine3.14-full`, `17-alpine3.14-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/jdk/alpine/3.14/Dockerfile) -- [`17-alpine3.15`, `17.0.5-alpine3.15`, `17-alpine3.15-full`, `17-alpine3.15-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/jdk/alpine/3.15/Dockerfile) -- [`17-alpine3.16`, `17.0.5-alpine3.16`, `17-alpine3.16-full`, `17-alpine3.16-jdk`, `17-alpine`, `17.0.5-alpine`, `17-alpine-full`, `17-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/17/jdk/alpine/3.16/Dockerfile) -- [`19`, `19.0.1`, `19.0.1-al2`, `19-al2-full`, `19-al2-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/19/jdk/al2/Dockerfile) -- [`19-alpine3.13`, `19.0.1-alpine3.13`, `19-alpine3.13-full`, `19-alpine3.13-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/19/jdk/alpine/3.13/Dockerfile) -- [`19-alpine3.14`, `19.0.1-alpine3.14`, `19-alpine3.14-full`, `19-alpine3.14-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/19/jdk/alpine/3.14/Dockerfile) -- [`19-alpine3.15`, `19.0.1-alpine3.15`, `19-alpine3.15-full`, `19-alpine3.15-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/19/jdk/alpine/3.15/Dockerfile) -- [`19-alpine3.16`, `19.0.1-alpine3.16`, `19-alpine3.16-full`, `19-alpine3.16-jdk`, `19-alpine`, `19.0.1-alpine`, `19-alpine-full`, `19-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/7996710c56ef95dba20bb0d5784b0e941dfdaa5b/19/jdk/alpine/3.16/Dockerfile) +- [`8`, `8u472`, `8u472-al2`, `8-al2-full`, `8-al2-jdk`, `8-al2-generic`, `8u472-al2-generic`, `8-al2-generic-jdk`, `latest`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jdk/al2-generic/Dockerfile) + +- [`8-al2023`, `8u472-al2023`, `8-al2023-jdk`, `8-al2023-jre`, `8u472-al2023-jre`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jdk/al2023/Dockerfile) + +- [`8-al2-native-jre`, `8u472-al2-native-jre`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jre/al2/Dockerfile) + +- [`8-al2-native-jdk`, `8u472-al2-native-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jdk/al2/Dockerfile) + +- [`8-alpine3.20`, `8u472-alpine3.20`, `8-alpine3.20-full`, `8-alpine3.20-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jdk/alpine/3.20/Dockerfile) + +- [`8-alpine3.20-jre`, `8u472-alpine3.20-jre`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jre/alpine/3.20/Dockerfile) + +- [`8-alpine3.21`, `8u472-alpine3.21`, `8-alpine3.21-full`, `8-alpine3.21-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jdk/alpine/3.21/Dockerfile) + +- [`8-alpine3.21-jre`, `8u472-alpine3.21-jre`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jre/alpine/3.21/Dockerfile) + +- [`8-alpine3.22`, `8u472-alpine3.22`, `8-alpine3.22-full`, `8-alpine3.22-jdk`, `8-alpine`, `8u472-alpine`, `8-alpine-full`, `8-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jdk/alpine/3.22/Dockerfile) + +- [`8-alpine3.22-jre`, `8u472-alpine3.22-jre`, `8-alpine-jre`, `8u472-alpine-jre`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/8/jre/alpine/3.22/Dockerfile) + +- [`11`, `11.0.29`, `11.0.29-al2`, `11-al2-full`, `11-al2-jdk`, `11-al2-generic`, `11.0.29-al2-generic`, `11-al2-generic-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/jdk/al2-generic/Dockerfile) + +- [`11-al2023`, `11.0.29-al2023`, `11-al2023-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/jdk/al2023/Dockerfile) + +- [`11-al2023-headless`, `11.0.29-al2023-headless`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/headless/al2023/Dockerfile) + +- [`11-al2023-headful`, `11.0.29-al2023-headful`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/headful/al2023/Dockerfile) + +- [`11-al2-native-headless`, `11.0.29-al2-native-headless`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/headless/al2/Dockerfile) + +- [`11-al2-native-jdk`, `11.0.29-al2-native-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/jdk/al2/Dockerfile) + +- [`11-alpine3.20`, `11.0.29-alpine3.20`, `11-alpine3.20-full`, `11-alpine3.20-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/jdk/alpine/3.20/Dockerfile) + +- [`11-alpine3.21`, `11.0.29-alpine3.21`, `11-alpine3.21-full`, `11-alpine3.21-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/jdk/alpine/3.21/Dockerfile) + +- [`11-alpine3.22`, `11.0.29-alpine3.22`, `11-alpine3.22-full`, `11-alpine3.22-jdk`, `11-alpine`, `11.0.29-alpine`, `11-alpine-full`, `11-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/11/jdk/alpine/3.22/Dockerfile) + +- [`17`, `17.0.17`, `17.0.17-al2`, `17-al2-full`, `17-al2-jdk`, `17-al2-generic`, `17.0.17-al2-generic`, `17-al2-generic-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/jdk/al2-generic/Dockerfile) + +- [`17-al2023`, `17.0.17-al2023`, `17-al2023-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/jdk/al2023/Dockerfile) + +- [`17-al2023-headless`, `17.0.17-al2023-headless`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/headless/al2023/Dockerfile) + +- [`17-al2023-headful`, `17.0.17-al2023-headful`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/headful/al2023/Dockerfile) + +- [`17-al2-native-headless`, `17.0.17-al2-native-headless`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/headless/al2/Dockerfile) + +- [`17-al2-native-headful`, `17.0.17-al2-native-headful`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/headful/al2/Dockerfile) + +- [`17-al2-native-jdk`, `17.0.17-al2-native-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/jdk/al2/Dockerfile) + +- [`17-alpine3.20`, `17.0.17-alpine3.20`, `17-alpine3.20-full`, `17-alpine3.20-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/jdk/alpine/3.20/Dockerfile) + +- [`17-alpine3.21`, `17.0.17-alpine3.21`, `17-alpine3.21-full`, `17-alpine3.21-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/jdk/alpine/3.21/Dockerfile) + +- [`17-alpine3.22`, `17.0.17-alpine3.22`, `17-alpine3.22-full`, `17-alpine3.22-jdk`, `17-alpine`, `17.0.17-alpine`, `17-alpine-full`, `17-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/17/jdk/alpine/3.22/Dockerfile) + +- [`21`, `21.0.9`, `21.0.9-al2`, `21-al2-full`, `21-al2-jdk`, `21-al2-generic`, `21.0.9-al2-generic`, `21-al2-generic-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/jdk/al2-generic/Dockerfile) + +- [`21-al2023`, `21.0.9-al2023`, `21-al2023-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/jdk/al2023/Dockerfile) + +- [`21-al2023-headless`, `21.0.9-al2023-headless`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/headless/al2023/Dockerfile) + +- [`21-al2023-headful`, `21.0.9-al2023-headful`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/headful/al2023/Dockerfile) + +- [`21-alpine3.20`, `21.0.9-alpine3.20`, `21-alpine3.20-full`, `21-alpine3.20-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/jdk/alpine/3.20/Dockerfile) + +- [`21-alpine3.21`, `21.0.9-alpine3.21`, `21-alpine3.21-full`, `21-alpine3.21-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/jdk/alpine/3.21/Dockerfile) + +- [`21-alpine3.22`, `21.0.9-alpine3.22`, `21-alpine3.22-full`, `21-alpine3.22-jdk`, `21-alpine`, `21.0.9-alpine`, `21-alpine-full`, `21-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/21/jdk/alpine/3.22/Dockerfile) + +- [`25-al2023`, `25.0.1-al2023`, `25-al2023-jdk`, `25`, `25-jdk`, `25.0.1`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/25/jdk/al2023/Dockerfile) + +- [`25-al2023-headless`, `25.0.1-al2023-headless`, `25-headless`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/25/headless/al2023/Dockerfile) + +- [`25-al2023-headful`, `25.0.1-al2023-headful`, `25-headful`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/25/headful/al2023/Dockerfile) + +- [`25-alpine3.20`, `25.0.1-alpine3.20`, `25-alpine3.20-full`, `25-alpine3.20-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/25/jdk/alpine/3.20/Dockerfile) + +- [`25-alpine3.21`, `25.0.1-alpine3.21`, `25-alpine3.21-full`, `25-alpine3.21-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/25/jdk/alpine/3.21/Dockerfile) + +- [`25-alpine3.22`, `25.0.1-alpine3.22`, `25-alpine3.22-full`, `25-alpine3.22-jdk`, `25-alpine`, `25.0.1-alpine`, `25-alpine-full`, `25-alpine-jdk`](https://github.com/corretto/corretto-docker/blob/5cf76cde46d4c2293a5d709e1e8630a334cb61c5/25/jdk/alpine/3.22/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/corretto/corretto-docker/issues](https://github.com/corretto/corretto-docker/issues) + [https://github.com/corretto/corretto-docker/issues](https://github.com/corretto/corretto-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/amazoncorretto/), [`arm64v8`](https://hub.docker.com/r/arm64v8/amazoncorretto/) diff --git a/amazoncorretto/metadata.json b/amazoncorretto/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/amazoncorretto/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/amazonlinux/README.md b/amazonlinux/README.md index 22e03c32da20..48dde8a8f362 100644 --- a/amazonlinux/README.md +++ b/amazonlinux/README.md @@ -24,17 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.0.20221210.0`, `2`, `latest`](https://github.com/amazonlinux/container-images/blob/9025e0ce9166d150ef8c28dd0d88465a250cf79d/Dockerfile) -- [`2.0.20221210.0-with-sources`, `2-with-sources`, `with-sources`](https://github.com/amazonlinux/container-images/blob/2040b2eb2433e45f0f20ab4d8475bf122580a6f5/Dockerfile) -- [`2018.03.0.20221209.1`, `2018.03`, `1`](https://github.com/amazonlinux/container-images/blob/a55f337ad62fc1e1a0c06843ecd0b8f5b10347bb/Dockerfile) -- [`2018.03.0.20221209.1-with-sources`, `2018.03-with-sources`, `1-with-sources`](https://github.com/amazonlinux/container-images/blob/6bb52a2cc2d7899405098cff4373bfa397b6c4a8/Dockerfile) -- [`2022.0.20221207.4`, `2022`, `devel`](https://github.com/amazonlinux/container-images/blob/423528b1be8f280af50b6fe8c2cfa296b05e995f/Dockerfile) -- [`2022.0.20221207.4-with-sources`, `2022-with-sources`, `devel-with-sources`](https://github.com/amazonlinux/container-images/blob/8b3c53739a3853a701caa4ff99732c3b8325c5b4/Dockerfile) +- [`2023`, `latest`, `2023.9.20251110.1`](https://github.com/amazonlinux/container-images/blob/3ad57ac25b349535f5290924b6a2125110be7412/Dockerfile) + +- [`2`, `2.0.20251110.1`](https://github.com/amazonlinux/container-images/blob/21640b88ffdb2768599539081529c4e8859b7b6d/Dockerfile) + +- [`1`, `2018.03`, `2018.03.0.20231218.0`](https://github.com/amazonlinux/container-images/blob/cfb41ad1c7624786ea10f60c15ce9c117c4da3b6/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [the Amazon Linux forums](https://forums.aws.amazon.com/forum.jspa?forumID=228) + - [amazonlinux/container-images/issues](https://github.com/amazonlinux/container-images/issues) + - [the Amazon Linux forums](https://forums.aws.amazon.com/forum.jspa?forumID=228) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/amazonlinux/), [`arm64v8`](https://hub.docker.com/r/arm64v8/amazonlinux/) @@ -56,51 +56,37 @@ Amazon Linux is provided by Amazon Web Services (AWS). It is designed to provide The Amazon Linux container image contains a minimal set of packages. To install additional packages, [use `yum`](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-software.html). -AWS provides two versions of Amazon Linux: [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) and [Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/). - -**Please note, that Amazon Linux 2022 is currently in the Preview mode and is not recommended for production workloads. Review the Amazon Linux 2022 [documentation](https://docs.aws.amazon.com/linux/al2022/ug/what-is-amazon-linux.html) to learn more.** +AWS provides three versions of Amazon Linux: -For information on security updates for Amazon Linux, please refer to [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) and [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/). Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities. +- [Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) (recommended, latest) +- [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) +- [Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/) -![logo](https://raw.githubusercontent.com/docker-library/docs/9ca9202567ccc25ce110f98bbeb6c929844e05d0/amazonlinux/logo.png) +For information on security updates for Amazon Linux, please refer to: -## Where can I run Amazon Linux container images? +- [Amazon Linux 2023 Security Advisories](https://alas.aws.amazon.com/alas2023.html) +- [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) +- [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/) -You can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in AWS EC2 instances, and ECS clusters. +Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities. -## How is Amazon Linux 2 different from Amazon Linux AMI? +![logo](https://raw.githubusercontent.com/docker-library/docs/9ca9202567ccc25ce110f98bbeb6c929844e05d0/amazonlinux/logo.png) -There are three major differences in Amazon Linux 2 from its predecessors: +## What is Amazon Linux 2023? -1. it is available as a VM image for on-premises development and testing -2. it includes systemd service and systems manager as opposed to System V init system and also includes new version of compiler and build tools -3. it gives you the ability to install additional software packages through Extras mechanism without impacting the underlying LTS stability +- Amazon Linux 2023: https://aws.amazon.com/linux/amazon-linux-2023/ +- 2023 Release Notes: https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html +- FAQs: https://aws.amazon.com/linux/amazon-linux-2023/faqs/ +- What's New: https://aws.amazon.com/about-aws/whats-new/2023/03/amazon-linux-2023/ +- User Guide: https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html -## Is Amazon Linux 2 build an official LTS build? +## Where can I run Amazon Linux container images? -Yes. Amazon Linux 2 is supported by AWS for five years after release (June 2018). +You can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in AWS EC2 instances, and ECS clusters. ## What packages are available in the Amazon Linux containers? -Amazon Linux Docker container images contain a subset of the packages in the images for use on EC2 and as VMs in on-premises scenarios. The container images can be configured to use any of the full set of packages in images for EC2 and on-premises use. The Amazon Linux 2 container images comes with Extras included. - -## What is an Amazon Linux 2 Extra? - -Extras is a new mechanism introduced in Amazon Linux 2 to enable the consumption of the newest versions of application software in a fully supported manner on a stable Amazon Linux 2 base. Extras help alleviate the compromise between stability of the OS and freshness of available software. For example, now you can install newer versions of Python being rest assured that the underlying operating system is stable. Examples of Extras include nginx, PostgreSQL, MariaDB, Go, and Rust. - -## How do Amazon Linux 2 Extras work? - -Extras introduces the notion of topics to select software bundles. Each topic contains all the dependencies required for the software to install and function on Amazon Linux 2. For example, Rust is an Extras topic in the curated list provide by Amazon. It provides the toolchain and runtimes for Rust, the systems programming language. This topic includes the cmake build system for Rust, cargo - the rust package manager, and the LLVM based compiler toolchain for Rust. The packages associated with each topic are consumed via the well-known yum installation process. - -## How are Amazon Linux 2 Extras topics different from the packages available in yum repositories? - -`yum` is a utility for package management of RPM packages. The base image of Amazon Linux 2 (LTS) includes access to repositories that already contain stable versions of popular packages that can be installed with `yum`. These packages are part of the long term support for Amazon Linux 2. - -However, if you need a new software package or a newer version of an existing software package that is not included in the base Amazon Linux 2 image, Extras provide a way to install those packages in a supported manner. Extras is essentially a simplified mechanism to point yum to AWS curated sets of packages for a selected topic. - -## How do I install a software package from Extras repository in Amazon Linux 2? - -Available packages can be listed with the `amazon-linux-extras` command. Packages can be installed with the `amazon-linux-extras install ` command. Example: `amazon-linux-extras install rust1` +Amazon Linux Docker container images contain a subset of the packages in the images for use on EC2 and as VMs in on-premises scenarios. The container images can be configured to use any of the full set of packages in images for EC2 and on-premises use. ## Will updates be available for Amazon Linux containers? @@ -108,21 +94,28 @@ Similar to the Amazon Linux images for AWS EC2 and on-premises use, Amazon Linux ## What support is available for Amazon Linux outside AWS? +- GitHub Issues: https://github.com/amazonlinux/container-images/issues - Documentation: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html - Amazon Linux Forums: https://forums.aws.amazon.com/forum.jspa?forumID=228 - Paid Support from AWS: https://aws.amazon.com/premiumsupport/ -## With the availability of Amazon Linux 2, are there any changes to the existing version of Amazon Linux AMI? +## Will AWS support the current versions of Amazon Linux going forward? + +Yes; in order to avoid any disruption to your existing applications and to facilitate migration to Amazon Linux 2023, AWS will provide regular security updates for Amazon Linux 2 and Amazon Linux 2018.03. Please refer to their FAQs for more information. You can also use all your existing support channels such as AWS Premium Support and Amazon Linux Discussion Forum to continue to submit support requests. + +## FAQs + +### Amazon Linux 2023 -With the availability of Amazon Linux 2, we are announcing that 2018.03 release of Amazon Linux AMI container image will be the last release for the current generation of Amazon Linux. Going forward, AWS will provide newer versions only for Amazon Linux 2. +- FAQs: https://aws.amazon.com/linux/amazon-linux-2023/faqs/ -## Will AWS support the current version of Amazon Linux going forward? +### Amazon Linux 2 -Yes; in order to avoid any disruption to your existing applications and to facilitate migration to Amazon Linux 2, AWS will provide regular security updates for Amazon Linux 2018.03 AMI and container image for 2 years after the final LTS build is announced. You can also use all your existing support channels such as AWS Premium Support and Amazon Linux Discussion Forum to continue to submit support requests. +- FAQs: https://aws.amazon.com/amazon-linux-2/faqs/ -## Is Amazon Linux 2 backward compatible with Amazon Linux AMI? +### Amazon Linux 1 -Due to the inclusion of new components in Amazon Linux 2 such as systemd, your applications running on the current version of Amazon Linux may require additional changes to run on Amazon Linux 2. +- FAQs: https://aws.amazon.com/amazon-linux-ami/faqs/ # License diff --git a/amazonlinux/content.md b/amazonlinux/content.md index e71ac1c4486f..15b308c6242d 100644 --- a/amazonlinux/content.md +++ b/amazonlinux/content.md @@ -4,51 +4,37 @@ Amazon Linux is provided by Amazon Web Services (AWS). It is designed to provide The Amazon Linux container image contains a minimal set of packages. To install additional packages, [use `yum`](https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/managing-software.html). -AWS provides two versions of Amazon Linux: [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) and [Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/). +AWS provides three versions of Amazon Linux: -**Please note, that Amazon Linux 2022 is currently in the Preview mode and is not recommended for production workloads. Review the Amazon Linux 2022 [documentation](https://docs.aws.amazon.com/linux/al2022/ug/what-is-amazon-linux.html) to learn more.** +- [Amazon Linux 2023](https://aws.amazon.com/linux/amazon-linux-2023/) (recommended, latest) +- [Amazon Linux 2](https://aws.amazon.com/amazon-linux-2/) +- [Amazon Linux AMI](https://aws.amazon.com/amazon-linux-ami/) -For information on security updates for Amazon Linux, please refer to [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) and [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/). Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities. +For information on security updates for Amazon Linux, please refer to: -%%LOGO%% +- [Amazon Linux 2023 Security Advisories](https://alas.aws.amazon.com/alas2023.html) +- [Amazon Linux 2 Security Advisories](https://alas.aws.amazon.com/alas2.html) +- [Amazon Linux AMI Security Advisories](https://alas.aws.amazon.com/) -## Where can I run Amazon Linux container images? +Note that Docker Hub's vulnerability scanning for Amazon Linux is currently based on RPM versions, which does not reflect the state of backported patches for vulnerabilities. -You can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in AWS EC2 instances, and ECS clusters. - -## How is Amazon Linux 2 different from Amazon Linux AMI? +%%LOGO%% -There are three major differences in Amazon Linux 2 from its predecessors: +## What is Amazon Linux 2023? -1. it is available as a VM image for on-premises development and testing -2. it includes systemd service and systems manager as opposed to System V init system and also includes new version of compiler and build tools -3. it gives you the ability to install additional software packages through Extras mechanism without impacting the underlying LTS stability +- Amazon Linux 2023: https://aws.amazon.com/linux/amazon-linux-2023/ +- 2023 Release Notes: https://docs.aws.amazon.com/linux/al2023/release-notes/relnotes.html +- FAQs: https://aws.amazon.com/linux/amazon-linux-2023/faqs/ +- What's New: https://aws.amazon.com/about-aws/whats-new/2023/03/amazon-linux-2023/ +- User Guide: https://docs.aws.amazon.com/linux/al2023/ug/what-is-amazon-linux.html -## Is Amazon Linux 2 build an official LTS build? +## Where can I run Amazon Linux container images? -Yes. Amazon Linux 2 is supported by AWS for five years after release (June 2018). +You can run Amazon Linux container images in any Docker based environment. Examples include, your laptop, in AWS EC2 instances, and ECS clusters. ## What packages are available in the Amazon Linux containers? -Amazon Linux Docker container images contain a subset of the packages in the images for use on EC2 and as VMs in on-premises scenarios. The container images can be configured to use any of the full set of packages in images for EC2 and on-premises use. The Amazon Linux 2 container images comes with Extras included. - -## What is an Amazon Linux 2 Extra? - -Extras is a new mechanism introduced in Amazon Linux 2 to enable the consumption of the newest versions of application software in a fully supported manner on a stable Amazon Linux 2 base. Extras help alleviate the compromise between stability of the OS and freshness of available software. For example, now you can install newer versions of Python being rest assured that the underlying operating system is stable. Examples of Extras include nginx, PostgreSQL, MariaDB, Go, and Rust. - -## How do Amazon Linux 2 Extras work? - -Extras introduces the notion of topics to select software bundles. Each topic contains all the dependencies required for the software to install and function on Amazon Linux 2. For example, Rust is an Extras topic in the curated list provide by Amazon. It provides the toolchain and runtimes for Rust, the systems programming language. This topic includes the cmake build system for Rust, cargo - the rust package manager, and the LLVM based compiler toolchain for Rust. The packages associated with each topic are consumed via the well-known yum installation process. - -## How are Amazon Linux 2 Extras topics different from the packages available in yum repositories? - -`yum` is a utility for package management of RPM packages. The base image of Amazon Linux 2 (LTS) includes access to repositories that already contain stable versions of popular packages that can be installed with `yum`. These packages are part of the long term support for Amazon Linux 2. - -However, if you need a new software package or a newer version of an existing software package that is not included in the base Amazon Linux 2 image, Extras provide a way to install those packages in a supported manner. Extras is essentially a simplified mechanism to point yum to AWS curated sets of packages for a selected topic. - -## How do I install a software package from Extras repository in Amazon Linux 2? - -Available packages can be listed with the `amazon-linux-extras` command. Packages can be installed with the `amazon-linux-extras install ` command. Example: `amazon-linux-extras install rust1` +Amazon Linux Docker container images contain a subset of the packages in the images for use on EC2 and as VMs in on-premises scenarios. The container images can be configured to use any of the full set of packages in images for EC2 and on-premises use. ## Will updates be available for Amazon Linux containers? @@ -56,18 +42,25 @@ Similar to the Amazon Linux images for AWS EC2 and on-premises use, Amazon Linux ## What support is available for Amazon Linux outside AWS? +- GitHub Issues: https://github.com/amazonlinux/container-images/issues - Documentation: http://docs.aws.amazon.com/AWSEC2/latest/UserGuide/amazon-linux-ami-basics.html - Amazon Linux Forums: https://forums.aws.amazon.com/forum.jspa?forumID=228 - Paid Support from AWS: https://aws.amazon.com/premiumsupport/ -## With the availability of Amazon Linux 2, are there any changes to the existing version of Amazon Linux AMI? +## Will AWS support the current versions of Amazon Linux going forward? + +Yes; in order to avoid any disruption to your existing applications and to facilitate migration to Amazon Linux 2023, AWS will provide regular security updates for Amazon Linux 2 and Amazon Linux 2018.03. Please refer to their FAQs for more information. You can also use all your existing support channels such as AWS Premium Support and Amazon Linux Discussion Forum to continue to submit support requests. + +## FAQs + +### Amazon Linux 2023 -With the availability of Amazon Linux 2, we are announcing that 2018.03 release of Amazon Linux AMI container image will be the last release for the current generation of Amazon Linux. Going forward, AWS will provide newer versions only for Amazon Linux 2. +- FAQs: https://aws.amazon.com/linux/amazon-linux-2023/faqs/ -## Will AWS support the current version of Amazon Linux going forward? +### Amazon Linux 2 -Yes; in order to avoid any disruption to your existing applications and to facilitate migration to Amazon Linux 2, AWS will provide regular security updates for Amazon Linux 2018.03 AMI and container image for 2 years after the final LTS build is announced. You can also use all your existing support channels such as AWS Premium Support and Amazon Linux Discussion Forum to continue to submit support requests. +- FAQs: https://aws.amazon.com/amazon-linux-2/faqs/ -## Is Amazon Linux 2 backward compatible with Amazon Linux AMI? +### Amazon Linux 1 -Due to the inclusion of new components in Amazon Linux 2 such as systemd, your applications running on the current version of Amazon Linux may require additional changes to run on Amazon Linux 2. +- FAQs: https://aws.amazon.com/amazon-linux-ami/faqs/ diff --git a/amazonlinux/issues.md b/amazonlinux/issues.md index 553e07ae53f2..ef7bf19b9e22 100644 --- a/amazonlinux/issues.md +++ b/amazonlinux/issues.md @@ -1 +1,2 @@ -[the Amazon Linux forums](https://forums.aws.amazon.com/forum.jspa?forumID=228) +- [amazonlinux/container-images/issues](https://github.com/amazonlinux/container-images/issues) + - [the Amazon Linux forums](https://forums.aws.amazon.com/forum.jspa?forumID=228) diff --git a/amazonlinux/metadata.json b/amazonlinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/amazonlinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/api-firewall/README.md b/api-firewall/README.md index 431889b086cc..3deed51199b1 100644 --- a/api-firewall/README.md +++ b/api-firewall/README.md @@ -24,12 +24,12 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`0.6.9`, `latest`](https://github.com/wallarm/api-firewall-docker/blob/c2b622e7f59546d9fb338c81fa82d405a8767485/0.6.10/Dockerfile) +- [`0.9.3`, `latest`](https://github.com/wallarm/api-firewall-docker/blob/fa9dcae65a51f3649b60a970add65a6553274f36/0.9.3/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/wallarm/api-firewall/issues](https://github.com/wallarm/api-firewall/issues) + [https://github.com/wallarm/api-firewall/issues](https://github.com/wallarm/api-firewall/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/api-firewall/), [`arm64v8`](https://hub.docker.com/r/arm64v8/api-firewall/), [`i386`](https://hub.docker.com/r/i386/api-firewall/) diff --git a/api-firewall/metadata.json b/api-firewall/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/api-firewall/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/arangodb/README-short.txt b/arangodb/README-short.txt index 181d22d45f85..7ad1401b89d5 100644 --- a/arangodb/README-short.txt +++ b/arangodb/README-short.txt @@ -1 +1 @@ -ArangoDB - a distributed database with a flexible data model for documents, graphs, and key-values. +ArangoDB - a scalable graph database system to drive value from connected data, faster. diff --git a/arangodb/README.md b/arangodb/README.md index 64b51426e61b..c44581fdb97a 100644 --- a/arangodb/README.md +++ b/arangodb/README.md @@ -24,14 +24,12 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.8`, `3.8.8`](https://github.com/arangodb/arangodb-docker/blob/6e5a02cd7f5106076a1faf24360218c3e2ca3003/alpine/3.8.8/Dockerfile) -- [`3.9`, `3.9.7`](https://github.com/arangodb/arangodb-docker/blob/7e84f26b857856a5350c5c636f6bedc43ee95ab0/alpine/3.9.7/Dockerfile) -- [`3.10`, `3.10.2`, `latest`](https://github.com/arangodb/arangodb-docker/blob/71fda53ef666d8c85fbd70748a26e7c86bcf3fbf/alpine/3.10.2/Dockerfile) +- [`3.12`, `3.12.6.1`, `latest`](https://github.com/arangodb/arangodb-docker/blob/f27c35fb66fe7040ea0cad2dce4688dd06e07dba/alpine/3.12.6.1/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/arangodb/arangodb-docker/issues](https://github.com/arangodb/arangodb-docker/issues) + [https://github.com/arangodb/arangodb-docker/issues](https://github.com/arangodb/arangodb-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/arangodb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/arangodb/) @@ -49,32 +47,26 @@ WARNING: # What is ArangoDB? -ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. +ArangoDB is a scalable graph database system to drive value from connected data, faster. Native graphs, an integrated search engine, and JSON support, via a single query language. -ArangoDB runs everywhere: On-prem, in the cloud and also on [ArangoDB's Cloud Service Oasis](https://cloud.arangodb.com/home). - -The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for your data. +ArangoDB runs everywhere: On-prem, in the cloud, and as a managed cloud service: [ArangoGraph Insights Platform](https://cloud.arangodb.com/home). > [arangodb.com](https://arangodb.com) -![logo](https://raw.githubusercontent.com/docker-library/docs/788ad3d196c4f69bd73801812abcab7707f70101/arangodb/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/f528ddab3310590b87273e2dbb75b96e081cadbe/arangodb/logo.png) ## Key Features in ArangoDB -**Multi-Model** Documents, graphs and key-value pairs — model your data as you see fit for your application. - -**Joins** Conveniently join what belongs together for flexible ad-hoc querying, less data redundancy. - -**Transactions** Easy application development keeping your data consistent and safe. No hassle in your client. +**Native Graph** Store both data and relationships, for faster queries even with multiple levels of joins and deeper insights that simply aren't possible with traditional relational and document database systems. -Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won't want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice. +**Document Store** Every node in your graph is a JSON document: flexible, extensible, and easily imported from your existing document database. -Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www.arangodb.com/why-arangodb/foxx) to build your own Rest API with a few lines of code. +**ArangoSearch** Natively integrated cross-platform indexing, text-search and ranking engine for information retrieval, optimized for speed and memory. #### ArangoDB Documentation -- [ArangoDB Documentation](https://www.arangodb.com/documentation) -- [ArangoDB Tutorials](https://www.arangodb.com/tutorials) +- [Learn ArangoDB](https://arangodb.com/learn/) +- [Documentation](https://docs.arangodb.com/) ## How to use this image @@ -83,26 +75,42 @@ Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www. In order to start an ArangoDB instance, run: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -d --name arangodb-instance arangodb +docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance arangodb +``` + +Docker chooses the processor architecture for the image that matches your host CPU by default. If this is not the case, for example, because you have the `DOCKER_DEFAULT_PLATFORM` environment variable set to a different architecture, you can pass the `--platform` flag to the `docker run` command to specify the appropriate operating system and architecture for the container. For x86-64, use `linux/amd64`. On ARM, especially Apple silicon with no emulation for the required AVX instruction set extension, use `linux/arm64/v8`: + +```console +docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance --platform linux/arm64/v8 arangodb ``` -Will create and launch the arangodb docker instance as background process. The Identifier of the process is printed. By default ArangoDB listen on port 8529 for request and the image includes `EXPOSE 8529`. If you link an application container it is automatically available in the linked container. See the following examples. +This creates and launches the arangodb Docker instance as a background process. The Identifier of the process is printed. By default, ArangoDB listens on port `8529` for requests. -In order to get the IP arango listens on, run: +In order to get the IP ArangoDB listens on, run: ```console -unix> docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance +docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance ``` +### Initialize the server language + +When using Docker, you need to specify the language you want to initialize the server to on the first run in one of the following ways: + +- Set the environment variable `LANG` to a locale in the `docker run` command, e.g. `-e LANG=sv` for a Swedish locale. + +- Use an `arangod.conf` configuration file that sets a language and mount it into the container. For example, create a configuration file on your host system in which you set `icu-language = sv` at the top (before any `[section]`) and then mount the file over the default configuration file like `docker run -v /your-host-path/arangod.conf:/etc/arangodb3/arangod.conf ...`. + +If you don't specify a language explicitly, the default is `en_US` up to ArangoDB v3.11 and `en_US_POSIX` from ArangoDB v3.12 onward. + ### Using the instance -In order to use the running instance from an application, link the container: +To use the running instance from an application, link the container: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link arangodb +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link arangodb ``` -This will use the instance with the name `arangodb-instance` and link it into the application container. The application container will contain environment variables +This uses the instance named `arangodb-instance` and links it into the application container. The application container contains environment variables, which can be used to access the database. DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529 DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17 @@ -110,14 +118,12 @@ This will use the instance with the name `arangodb-instance` and link it into th DB_LINK_PORT_8529_TCP_PROTO=tcp DB_LINK_NAME=/naughty_ardinghelli/db-link -These can be used to access the database. - ### Exposing the port to the outside world If you want to expose the port to the outside world, run: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d arangodb +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d arangodb ``` ArangoDB listen on port 8529 for request and the image includes `EXPOSE @@ -148,7 +154,7 @@ Note: this way of specifying logins only applies to single server installations. You can pass arguments to the ArangoDB server by appending them to the end of the Docker command: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 arangodb --help +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 arangodb --help ``` The entrypoint script starts the `arangod` binary by default and forwards your arguments. @@ -156,13 +162,18 @@ The entrypoint script starts the `arangod` binary by default and forwards your a You may also start other binaries, such as the ArangoShell: ```console -unix> docker run -it arangodb arangosh --server.database myDB ... +docker run -it arangodb arangosh --server.database myDB ... ``` Note that you need to set up networking for containers if `arangod` runs in one container and you want to access it with `arangosh` running in another container. It is easier to execute it in the same container instead. Use `docker ps` to find out the container ID / name of a running container: ```console -unix> docker ps +docker ps +``` + +It prints something similar to the following: + +```console CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1234567890ab arangodb "/entrypoint.sh aran…" 2 hours ago Up 2 hours 0.0.0.0:8529->8529/tcp jolly_joker ``` @@ -170,10 +181,10 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS Then use `docker exec` and the ID / name to run something inside of the existing container: ```console -unix> docker exec -it jolly_joker arangosh +docker exec -it jolly_joker arangosh ``` -See more information about [Configuration](https://www.arangodb.com/docs/stable/administration-configuration.html) +For more information, see the ArangoDB documentation about [Configuration](https://docs.arangodb.com/stable/operations/administration/configuration/). ### Limiting resource utilization @@ -204,7 +215,7 @@ ArangoDB supports two different storage engines from version 3.2 to 3.6. You can ArangoDB uses the volume `/var/lib/arangodb3` as database directory to store the collection data and the volume `/var/lib/arangodb3-apps` as apps directory to store any extensions. These directories are marked as docker volumes. -See `docker inspect --format "{{ .Config.Volumes}}" arangodb` for all volumes. +See `docker inspect --format "{{ .Config.Volumes }}" arangodb` for all volumes. A good explanation about persistence and docker container can be found here: [Docker In-depth: Volumes](http://container42.com/2014/11/03/docker-indepth-volumes/), [Why Docker Data Containers are Good](https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e) @@ -215,8 +226,8 @@ You can map the container's volumes to a directory on the host, so that the data ```console unix> mkdir /tmp/arangodb unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d \ - -v /tmp/arangodb:/var/lib/arangodb3 \ - arangodb + -v /tmp/arangodb:/var/lib/arangodb3 \ + arangodb ``` This will use the `/tmp/arangodb` directory of the host as database directory for ArangoDB inside the container. @@ -226,34 +237,40 @@ This will use the `/tmp/arangodb` directory of the host as database directory fo Alternatively you can create a container holding the data. ```console -unix> docker create --name arangodb-persist arangodb true +docker create --name arangodb-persist arangodb true ``` And use this data container in your ArangoDB container. ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 arangodb +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 arangodb ``` If want to save a few bytes you can alternatively use [busybox](https://hub.docker.com/_/busybox) or [alpine](https://hub.docker.com/_/alpine) for creating the volume only containers. Please note that you need to provide the used volumes in this case. For example ```console -unix> docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true +docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true ``` -### Using as a base image +### Usage as a base image -If you are using the image as a base image please make sure to wrap any CMD in the [exec](https://docs.docker.com/engine/reference/builder/#cmd) form. Otherwise the default entrypoint will not do its bootstrapping work. +If you are using the image as a base image please make sure to wrap any CMD in the [exec](https://docs.docker.com/reference/dockerfile/#cmd) form. Otherwise the default entrypoint will not do its bootstrapping work. When deriving the image, you can control the instantiation via putting files into `/docker-entrypoint-initdb.d/`. - `*.sh` - files ending with .sh will be run as a bash shellscript. - `*.js` - files will be executed with arangosh. You can specify additional arangosh arguments via the `ARANGOSH_ARGS` environment variable. -- `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://www.arangodb.com/docs/stable/programs-arangodump.html). They can be restored using [arangorestore](https://www.arangodb.com/docs/stable/programs-arangorestore.html). +- `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://docs.arangodb.com/stable/components/tools/arangodump/). They can be restored using [arangorestore](https://docs.arangodb.com/stable/components/tools/arangorestore/). # License -[ArangoDB itself is licensed under the Apache License](https://github.com/arangodb/arangodb/blob/devel/LICENSE), but it contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md). +The official Docker images of the ArangoDB Community Edition are governed by the [ArangoDB Community License](https://arangodb.com/community-license/). It limits deployments to a 100 GB on dataset size in production and you cannot use it for any commercial purposes, only internal business purposes. It does not include the right to distribute, embed within other products, or combine with ArangoDB's Enterprise Edition of the software. + +The source code of the Community Edition is available under the [Business Source License 1.1 (BUSL-1.1)](https://github.com/arangodb/arangodb/blob/devel/LICENSE). Copying, modification, redistribution, non-commercial use, and commercial use in a non-production context are always allowed. Additionally, you can deploy BUSL-licensed ArangoDB source code for any purpose (including production) as long as you are not creating a commercial derivative work or offering, or are including it in a commercial product, application, or service. On the fourth anniversary of the first publicly available distribution of a specific version, the license changes to the permissive Apache 2.0 open-source license. + +Up to ArangoDB version 3.11, ArangoDB is licensed under the [Apache 2.0 License](https://github.com/arangodb/arangodb/blob/3.11/LICENSE). + +ArangoDB contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md). As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/arangodb/content.md b/arangodb/content.md index 935d90487510..12eb65693c19 100644 --- a/arangodb/content.md +++ b/arangodb/content.md @@ -1,10 +1,8 @@ # What is ArangoDB? -ArangoDB is a multi-model, open-source database with flexible data models for documents, graphs, and key-values. Build high performance applications using a convenient SQL-like query language or JavaScript extensions. Use ACID transactions if you require them. Scale horizontally and vertically with a few mouse clicks. +ArangoDB is a scalable graph database system to drive value from connected data, faster. Native graphs, an integrated search engine, and JSON support, via a single query language. -ArangoDB runs everywhere: On-prem, in the cloud and also on [ArangoDB's Cloud Service Oasis](https://cloud.arangodb.com/home). - -The supported data models can be mixed in queries and allow ArangoDB to be the aggregation point for your data. +ArangoDB runs everywhere: On-prem, in the cloud, and as a managed cloud service: [ArangoGraph Insights Platform](https://cloud.arangodb.com/home). > [arangodb.com](https://arangodb.com) @@ -12,20 +10,16 @@ The supported data models can be mixed in queries and allow ArangoDB to be the a ## Key Features in ArangoDB -**Multi-Model** Documents, graphs and key-value pairs — model your data as you see fit for your application. - -**Joins** Conveniently join what belongs together for flexible ad-hoc querying, less data redundancy. - -**Transactions** Easy application development keeping your data consistent and safe. No hassle in your client. +**Native Graph** Store both data and relationships, for faster queries even with multiple levels of joins and deeper insights that simply aren't possible with traditional relational and document database systems. -Joins and Transactions are key features for flexible, secure data designs, widely used in RDBMSs that you won't want to miss in NoSQL products. You decide how and when to use Joins and strong consistency guarantees, keeping all the power for scaling and performance as choice. +**Document Store** Every node in your graph is a JSON document: flexible, extensible, and easily imported from your existing document database. -Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www.arangodb.com/why-arangodb/foxx) to build your own Rest API with a few lines of code. +**ArangoSearch** Natively integrated cross-platform indexing, text-search and ranking engine for information retrieval, optimized for speed and memory. #### ArangoDB Documentation -- [ArangoDB Documentation](https://www.arangodb.com/documentation) -- [ArangoDB Tutorials](https://www.arangodb.com/tutorials) +- [Learn ArangoDB](https://arangodb.com/learn/) +- [Documentation](https://docs.arangodb.com/) ## How to use this image @@ -34,26 +28,42 @@ Furthermore, ArangoDB offers a microservice framework called [Foxx](https://www. In order to start an ArangoDB instance, run: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -d --name arangodb-instance %%IMAGE%% +docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance %%IMAGE%% ``` -Will create and launch the %%IMAGE%% docker instance as background process. The Identifier of the process is printed. By default ArangoDB listen on port 8529 for request and the image includes `EXPOSE 8529`. If you link an application container it is automatically available in the linked container. See the following examples. +Docker chooses the processor architecture for the image that matches your host CPU by default. If this is not the case, for example, because you have the `DOCKER_DEFAULT_PLATFORM` environment variable set to a different architecture, you can pass the `--platform` flag to the `docker run` command to specify the appropriate operating system and architecture for the container. For x86-64, use `linux/amd64`. On ARM, especially Apple silicon with no emulation for the required AVX instruction set extension, use `linux/arm64/v8`: -In order to get the IP arango listens on, run: +```console +docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance --platform linux/arm64/v8 %%IMAGE%% +``` + +This creates and launches the %%IMAGE%% Docker instance as a background process. The Identifier of the process is printed. By default, ArangoDB listens on port `8529` for requests. + +In order to get the IP ArangoDB listens on, run: ```console -unix> docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance +docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance ``` +### Initialize the server language + +When using Docker, you need to specify the language you want to initialize the server to on the first run in one of the following ways: + +- Set the environment variable `LANG` to a locale in the `docker run` command, e.g. `-e LANG=sv` for a Swedish locale. + +- Use an `arangod.conf` configuration file that sets a language and mount it into the container. For example, create a configuration file on your host system in which you set `icu-language = sv` at the top (before any `[section]`) and then mount the file over the default configuration file like `docker run -v /your-host-path/arangod.conf:/etc/arangodb3/arangod.conf ...`. + +If you don't specify a language explicitly, the default is `en_US` up to ArangoDB v3.11 and `en_US_POSIX` from ArangoDB v3.12 onward. + ### Using the instance -In order to use the running instance from an application, link the container: +To use the running instance from an application, link the container: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link %%IMAGE%% +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link %%IMAGE%% ``` -This will use the instance with the name `arangodb-instance` and link it into the application container. The application container will contain environment variables +This uses the instance named `arangodb-instance` and links it into the application container. The application container contains environment variables, which can be used to access the database. DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529 DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17 @@ -61,14 +71,12 @@ This will use the instance with the name `arangodb-instance` and link it into th DB_LINK_PORT_8529_TCP_PROTO=tcp DB_LINK_NAME=/naughty_ardinghelli/db-link -These can be used to access the database. - ### Exposing the port to the outside world If you want to expose the port to the outside world, run: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d %%IMAGE%% +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d %%IMAGE%% ``` ArangoDB listen on port 8529 for request and the image includes `EXPOSE @@ -99,7 +107,7 @@ Note: this way of specifying logins only applies to single server installations. You can pass arguments to the ArangoDB server by appending them to the end of the Docker command: ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 %%IMAGE%% --help +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 %%IMAGE%% --help ``` The entrypoint script starts the `arangod` binary by default and forwards your arguments. @@ -107,13 +115,18 @@ The entrypoint script starts the `arangod` binary by default and forwards your a You may also start other binaries, such as the ArangoShell: ```console -unix> docker run -it %%IMAGE%% arangosh --server.database myDB ... +docker run -it %%IMAGE%% arangosh --server.database myDB ... ``` Note that you need to set up networking for containers if `arangod` runs in one container and you want to access it with `arangosh` running in another container. It is easier to execute it in the same container instead. Use `docker ps` to find out the container ID / name of a running container: ```console -unix> docker ps +docker ps +``` + +It prints something similar to the following: + +```console CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1234567890ab arangodb "/entrypoint.sh aran…" 2 hours ago Up 2 hours 0.0.0.0:8529->8529/tcp jolly_joker ``` @@ -121,10 +134,10 @@ CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS Then use `docker exec` and the ID / name to run something inside of the existing container: ```console -unix> docker exec -it jolly_joker arangosh +docker exec -it jolly_joker arangosh ``` -See more information about [Configuration](https://www.arangodb.com/docs/stable/administration-configuration.html) +For more information, see the ArangoDB documentation about [Configuration](https://docs.arangodb.com/stable/operations/administration/configuration/). ### Limiting resource utilization @@ -155,7 +168,7 @@ ArangoDB supports two different storage engines from version 3.2 to 3.6. You can ArangoDB uses the volume `/var/lib/arangodb3` as database directory to store the collection data and the volume `/var/lib/arangodb3-apps` as apps directory to store any extensions. These directories are marked as docker volumes. -See `docker inspect --format "{{ .Config.Volumes}}" arangodb` for all volumes. +See `docker inspect --format "{{ .Config.Volumes }}" %%IMAGE%%` for all volumes. A good explanation about persistence and docker container can be found here: [Docker In-depth: Volumes](http://container42.com/2014/11/03/docker-indepth-volumes/), [Why Docker Data Containers are Good](https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e) @@ -166,8 +179,8 @@ You can map the container's volumes to a directory on the host, so that the data ```console unix> mkdir /tmp/arangodb unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d \ - -v /tmp/arangodb:/var/lib/arangodb3 \ - %%IMAGE%% + -v /tmp/arangodb:/var/lib/arangodb3 \ + %%IMAGE%% ``` This will use the `/tmp/arangodb` directory of the host as database directory for ArangoDB inside the container. @@ -177,27 +190,27 @@ This will use the `/tmp/arangodb` directory of the host as database directory fo Alternatively you can create a container holding the data. ```console -unix> docker create --name arangodb-persist %%IMAGE%% true +docker create --name arangodb-persist %%IMAGE%% true ``` And use this data container in your ArangoDB container. ```console -unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 %%IMAGE%% +docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 %%IMAGE%% ``` If want to save a few bytes you can alternatively use [busybox](https://hub.docker.com/_/busybox) or [alpine](https://hub.docker.com/_/alpine) for creating the volume only containers. Please note that you need to provide the used volumes in this case. For example ```console -unix> docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true +docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true ``` -### Using as a base image +### Usage as a base image -If you are using the image as a base image please make sure to wrap any CMD in the [exec](https://docs.docker.com/engine/reference/builder/#cmd) form. Otherwise the default entrypoint will not do its bootstrapping work. +If you are using the image as a base image please make sure to wrap any CMD in the [exec](https://docs.docker.com/reference/dockerfile/#cmd) form. Otherwise the default entrypoint will not do its bootstrapping work. When deriving the image, you can control the instantiation via putting files into `/docker-entrypoint-initdb.d/`. - `*.sh` - files ending with .sh will be run as a bash shellscript. - `*.js` - files will be executed with arangosh. You can specify additional arangosh arguments via the `ARANGOSH_ARGS` environment variable. -- `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://www.arangodb.com/docs/stable/programs-arangodump.html). They can be restored using [arangorestore](https://www.arangodb.com/docs/stable/programs-arangorestore.html). +- `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://docs.arangodb.com/stable/components/tools/arangodump/). They can be restored using [arangorestore](https://docs.arangodb.com/stable/components/tools/arangorestore/). diff --git a/arangodb/license.md b/arangodb/license.md index 50e704672fa9..8e8b5b9a6a41 100644 --- a/arangodb/license.md +++ b/arangodb/license.md @@ -1 +1,7 @@ -[ArangoDB itself is licensed under the Apache License](https://github.com/arangodb/arangodb/blob/devel/LICENSE), but it contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md). +The official Docker images of the ArangoDB Community Edition are governed by the [ArangoDB Community License](https://arangodb.com/community-license/). It limits deployments to a 100 GB on dataset size in production and you cannot use it for any commercial purposes, only internal business purposes. It does not include the right to distribute, embed within other products, or combine with ArangoDB's Enterprise Edition of the software. + +The source code of the Community Edition is available under the [Business Source License 1.1 (BUSL-1.1)](https://github.com/arangodb/arangodb/blob/devel/LICENSE). Copying, modification, redistribution, non-commercial use, and commercial use in a non-production context are always allowed. Additionally, you can deploy BUSL-licensed ArangoDB source code for any purpose (including production) as long as you are not creating a commercial derivative work or offering, or are including it in a commercial product, application, or service. On the fourth anniversary of the first publicly available distribution of a specific version, the license changes to the permissive Apache 2.0 open-source license. + +Up to ArangoDB version 3.11, ArangoDB is licensed under the [Apache 2.0 License](https://github.com/arangodb/arangodb/blob/3.11/LICENSE). + +ArangoDB contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md). diff --git a/arangodb/logo.png b/arangodb/logo.png index e821e334ce9b..778ee4a38d73 100644 Binary files a/arangodb/logo.png and b/arangodb/logo.png differ diff --git a/arangodb/metadata.json b/arangodb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/arangodb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/archlinux/README.md b/archlinux/README.md index 571f17fc0cc2..5502cf7ffb63 100644 --- a/archlinux/README.md +++ b/archlinux/README.md @@ -24,8 +24,11 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`, `base`, `base-20230108.0.116909`](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/blob/9df32909737706d518425cc08d092074a4223314/Dockerfile.base) -- [`base-devel`, `base-devel-20230108.0.116909`](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/blob/9df32909737706d518425cc08d092074a4223314/Dockerfile.base-devel) +- [`latest`, `base`, `base-20251019.0.436919`](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/blob/3d3996ec400b3b9ef1c04fa5b4b6b81725a8eaac/Dockerfile.base) + +- [`base-devel`, `base-devel-20251019.0.436919`](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/blob/3d3996ec400b3b9ef1c04fa5b4b6b81725a8eaac/Dockerfile.base-devel) + +- [`multilib-devel`, `multilib-devel-20251019.0.436919`](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/blob/3d3996ec400b3b9ef1c04fa5b4b6b81725a8eaac/Dockerfile.multilib-devel) # Quick reference (cont.) @@ -58,18 +61,18 @@ Our strong community is diverse and helpful, and we pride ourselves on the range # About this image -The root filesystem tarball for this image is auto-generated weekly at 00:00 UTC on Sunday in Arch Linux infrastructure. Given the rolling-release nature of Arch Linux, images are tagged with the included package group / meta package and the timestamp of the date they were generated. For example, `archlinux:base-20201101.0.7893` was generated the First of November 2020 in [CI job #7893](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/jobs/7893). The `latest` tag will always match the latest `base` tag. +The root filesystem tarball for this image is auto-generated weekly at 00:00 UTC on Sunday in Arch Linux infrastructure. Given the rolling-release nature of Arch Linux, images are tagged with the included meta package and the timestamp of the date they were generated. For example, `archlinux:base-20201101.0.7893` was generated the First of November 2020 in [CI job #7893](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/jobs/7893). The `latest` tag will always match the latest `base` tag. -Besides `base` we also provide images for the `base-devel` package group. +Besides `base` we also provide images for the `base-devel` and `multilib-devel` meta packages. This image is intended to serve the following goals: - Provide the Arch experience in a Docker Image -- Provide simplest but complete image to base every other upon +- Provide simplest but complete image to `base`, `base-devel` and `multilib-devel` on a regular basis - `pacman` needs to work out of the box - All installed packages have to be kept unmodified -> ⚠️⚠️⚠️ NOTE: For Security Reasons, these images strip the pacman lsign key. This is because the same key would be spread to all containers of the same image, allowing for malicious actors to inject packages (via, for example, a man-in-the-middle). In order to create an lsign-key run `pacman-key --init` on the first execution, but be careful to not redistribute that key. ⚠️⚠️⚠️ +> ⚠️⚠️⚠️ NOTE: For Security Reasons, these images strip the pacman lsign key. This is because the same key would be spread to all containers of the same image, allowing for malicious actors to inject packages (via, for example, a man-in-the-middle). In order to create a lsign-key run `pacman-key --init` on the first execution, but be careful to not redistribute that key. ⚠️⚠️⚠️ ## Availability diff --git a/archlinux/content.md b/archlinux/content.md index 0e66b1fea0f4..edac8163de00 100644 --- a/archlinux/content.md +++ b/archlinux/content.md @@ -10,18 +10,18 @@ Our strong community is diverse and helpful, and we pride ourselves on the range # About this image -The root filesystem tarball for this image is auto-generated weekly at 00:00 UTC on Sunday in Arch Linux infrastructure. Given the rolling-release nature of Arch Linux, images are tagged with the included package group / meta package and the timestamp of the date they were generated. For example, `%%IMAGE%%:base-20201101.0.7893` was generated the First of November 2020 in [CI job #7893](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/jobs/7893). The `latest` tag will always match the latest `base` tag. +The root filesystem tarball for this image is auto-generated weekly at 00:00 UTC on Sunday in Arch Linux infrastructure. Given the rolling-release nature of Arch Linux, images are tagged with the included meta package and the timestamp of the date they were generated. For example, `%%IMAGE%%:base-20201101.0.7893` was generated the First of November 2020 in [CI job #7893](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/jobs/7893). The `latest` tag will always match the latest `base` tag. -Besides `base` we also provide images for the `base-devel` package group. +Besides `base` we also provide images for the `base-devel` and `multilib-devel` meta packages. This image is intended to serve the following goals: - Provide the Arch experience in a Docker Image -- Provide simplest but complete image to base every other upon +- Provide simplest but complete image to `base`, `base-devel` and `multilib-devel` on a regular basis - `pacman` needs to work out of the box - All installed packages have to be kept unmodified -> ⚠️⚠️⚠️ NOTE: For Security Reasons, these images strip the pacman lsign key. This is because the same key would be spread to all containers of the same image, allowing for malicious actors to inject packages (via, for example, a man-in-the-middle). In order to create an lsign-key run `pacman-key --init` on the first execution, but be careful to not redistribute that key. ⚠️⚠️⚠️ +> ⚠️⚠️⚠️ NOTE: For Security Reasons, these images strip the pacman lsign key. This is because the same key would be spread to all containers of the same image, allowing for malicious actors to inject packages (via, for example, a man-in-the-middle). In order to create a lsign-key run `pacman-key --init` on the first execution, but be careful to not redistribute that key. ⚠️⚠️⚠️ ## Availability diff --git a/archlinux/metadata.json b/archlinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/archlinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/backdrop/README.md b/backdrop/README.md index a7b1892d8b0d..c66f756ccb9d 100644 --- a/backdrop/README.md +++ b/backdrop/README.md @@ -24,13 +24,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.23.1`, `1.23`, `1`, `1.23.1-apache`, `1.23-apache`, `1-apache`, `apache`, `latest`](https://github.com/backdrop-ops/backdrop-docker/blob/8012e0b47794605356eddc14dc56b1eda4b36f0c/1/apache/Dockerfile) -- [`1.23.1-fpm`, `1.23-fpm`, `1-fpm`, `fpm`](https://github.com/backdrop-ops/backdrop-docker/blob/8012e0b47794605356eddc14dc56b1eda4b36f0c/1/fpm/Dockerfile) +- [`1.32.1`, `1.32`, `1`, `1.32.1-apache`, `1.32-apache`, `1-apache`, `apache`, `latest`](https://github.com/backdrop-ops/backdrop-docker/blob/b9eadec6b29d93b6db5c08136ac98411831b3610/1/apache/Dockerfile) + +- [`1.32.1-fpm`, `1.32-fpm`, `1-fpm`, `fpm`](https://github.com/backdrop-ops/backdrop-docker/blob/b9eadec6b29d93b6db5c08136ac98411831b3610/1/fpm/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/backdrop-ops/backdrop-docker/issues](https://github.com/backdrop-ops/backdrop-docker/issues) + [https://github.com/backdrop-ops/backdrop-docker/issues](https://github.com/backdrop-ops/backdrop-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/backdrop/), [`arm64v8`](https://hub.docker.com/r/arm64v8/backdrop/) @@ -92,28 +93,29 @@ $ docker run --name some-backdrop \ -d backdrop ``` -## ... via [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `docker-compose.yml` for `backdrop`: +Example `compose.yaml` for `backdrop`: ```yaml -backdrop: - image: backdrop - links: - - db:mysql - ports: - - 8080:80 - -db: - image: mysql - environment: - MYSQL_USER: backdrop - MYSQL_PASSWORD: backdrop - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - MYSQL_DATABASE: backdrop +services: + backdrop: + image: backdrop + links: + - db:mysql + ports: + - 8080:80 + + db: + image: mysql + environment: + MYSQL_USER: backdrop + MYSQL_PASSWORD: backdrop + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + MYSQL_DATABASE: backdrop ``` -Run `docker-compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080`. +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080`. ## Adding additional libraries / extensions diff --git a/backdrop/compose.yaml b/backdrop/compose.yaml new file mode 100644 index 000000000000..38ef8693cafe --- /dev/null +++ b/backdrop/compose.yaml @@ -0,0 +1,15 @@ +services: + backdrop: + image: backdrop + links: + - db:mysql + ports: + - 8080:80 + + db: + image: mysql + environment: + MYSQL_USER: backdrop + MYSQL_PASSWORD: backdrop + MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' + MYSQL_DATABASE: backdrop diff --git a/backdrop/content.md b/backdrop/content.md index 9de55cd372fb..68cf928fa8a1 100644 --- a/backdrop/content.md +++ b/backdrop/content.md @@ -44,28 +44,9 @@ $ docker run --name some-%%REPO%% \ -d %%REPO%% ``` -## ... via [`docker-compose`](https://github.com/docker/compose) - -Example `docker-compose.yml` for `%%REPO%%`: - -```yaml -%%REPO%%: - image: %%REPO%% - links: - - db:mysql - ports: - - 8080:80 - -db: - image: mysql - environment: - MYSQL_USER: %%REPO%% - MYSQL_PASSWORD: %%REPO%% - MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' - MYSQL_DATABASE: %%REPO%% -``` +## %%COMPOSE%% -Run `docker-compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080`. +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080`. ## Adding additional libraries / extensions diff --git a/backdrop/metadata.json b/backdrop/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/backdrop/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/bash/README.md b/bash/README.md index 517e650943dd..196072afc782 100644 --- a/bash/README.md +++ b/bash/README.md @@ -24,26 +24,39 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`devel-20230107`, `devel`, `devel-20230107-alpine3.16`, `devel-alpine3.16`](https://github.com/tianon/docker-bash/blob/b4511227e84d5a41ae8134422418e208bc9fb3b5/devel/Dockerfile) -- [`5.2.15`, `5.2`, `5`, `latest`, `5.2.15-alpine3.16`, `5.2-alpine3.16`, `5-alpine3.16`, `alpine3.16`](https://github.com/tianon/docker-bash/blob/cb26ef95b253f1bd736824c8e88d86e9dcadfa5e/5.2/Dockerfile) -- [`5.1.16`, `5.1`, `5.1.16-alpine3.16`, `5.1-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/5.1/Dockerfile) -- [`5.0.18`, `5.0`, `5.0.18-alpine3.16`, `5.0-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/5.0/Dockerfile) -- [`4.4.23`, `4.4`, `4`, `4.4.23-alpine3.16`, `4.4-alpine3.16`, `4-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/4.4/Dockerfile) -- [`4.3.48`, `4.3`, `4.3.48-alpine3.16`, `4.3-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/4.3/Dockerfile) -- [`4.2.53`, `4.2`, `4.2.53-alpine3.16`, `4.2-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/4.2/Dockerfile) -- [`4.1.17`, `4.1`, `4.1.17-alpine3.16`, `4.1-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/4.1/Dockerfile) -- [`4.0.44`, `4.0`, `4.0.44-alpine3.16`, `4.0-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/4.0/Dockerfile) -- [`3.2.57`, `3.2`, `3`, `3.2.57-alpine3.16`, `3.2-alpine3.16`, `3-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/3.2/Dockerfile) -- [`3.1.23`, `3.1`, `3.1.23-alpine3.16`, `3.1-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/3.1/Dockerfile) -- [`3.0.22`, `3.0`, `3.0.22-alpine3.16`, `3.0-alpine3.16`](https://github.com/tianon/docker-bash/blob/ab48980aaa9b26f074375b19fe430e4bf5970573/3.0/Dockerfile) +- [`devel-20251027`, `devel`, `devel-20251027-alpine3.22`, `devel-alpine3.22`](https://github.com/tianon/docker-bash/blob/811e57fc3ad50ed25c2194e00ea69042310f125a/devel/Dockerfile) + +- [`5.3.3`, `5.3`, `5`, `latest`, `5.3.3-alpine3.22`, `5.3-alpine3.22`, `5-alpine3.22`, `alpine3.22`](https://github.com/tianon/docker-bash/blob/3b56c1c4a4e381f8b53decf0917fddd2cd15c8d4/5.3/Dockerfile) + +- [`5.2.37`, `5.2`, `5.2.37-alpine3.22`, `5.2-alpine3.22`](https://github.com/tianon/docker-bash/blob/9fc164bd1a8e4bfe16c517623ce935dc821bbb08/5.2/Dockerfile) + +- [`5.1.16`, `5.1`, `5.1.16-alpine3.22`, `5.1-alpine3.22`](https://github.com/tianon/docker-bash/blob/8ba8423bc0d3339722d4ba2d1af1f53fd179f506/5.1/Dockerfile) + +- [`5.0.18`, `5.0`, `5.0.18-alpine3.22`, `5.0-alpine3.22`](https://github.com/tianon/docker-bash/blob/5f58d08f8ee4a558b8302ef22352af99d4beedfd/5.0/Dockerfile) + +- [`4.4.23`, `4.4`, `4`, `4.4.23-alpine3.22`, `4.4-alpine3.22`, `4-alpine3.22`](https://github.com/tianon/docker-bash/blob/099d6114cbdb9b016fb8c4beb653187df002f66f/4.4/Dockerfile) + +- [`4.3.48`, `4.3`, `4.3.48-alpine3.22`, `4.3-alpine3.22`](https://github.com/tianon/docker-bash/blob/099d6114cbdb9b016fb8c4beb653187df002f66f/4.3/Dockerfile) + +- [`4.2.53`, `4.2`, `4.2.53-alpine3.22`, `4.2-alpine3.22`](https://github.com/tianon/docker-bash/blob/8556e37dc74a044cfd6e8255acfd116a5bdb8588/4.2/Dockerfile) + +- [`4.1.17`, `4.1`, `4.1.17-alpine3.22`, `4.1-alpine3.22`](https://github.com/tianon/docker-bash/blob/099d6114cbdb9b016fb8c4beb653187df002f66f/4.1/Dockerfile) + +- [`4.0.44`, `4.0`, `4.0.44-alpine3.22`, `4.0-alpine3.22`](https://github.com/tianon/docker-bash/blob/099d6114cbdb9b016fb8c4beb653187df002f66f/4.0/Dockerfile) + +- [`3.2.57`, `3.2`, `3`, `3.2.57-alpine3.22`, `3.2-alpine3.22`, `3-alpine3.22`](https://github.com/tianon/docker-bash/blob/099d6114cbdb9b016fb8c4beb653187df002f66f/3.2/Dockerfile) + +- [`3.1.23`, `3.1`, `3.1.23-alpine3.22`, `3.1-alpine3.22`](https://github.com/tianon/docker-bash/blob/099d6114cbdb9b016fb8c4beb653187df002f66f/3.1/Dockerfile) + +- [`3.0.22`, `3.0`, `3.0.22-alpine3.22`, `3.0-alpine3.22`](https://github.com/tianon/docker-bash/blob/5ffa8349006e790fe3534d0a6c3100fd6d725407/3.0/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/tianon/docker-bash/issues](https://github.com/tianon/docker-bash/issues) + [https://github.com/tianon/docker-bash/issues](https://github.com/tianon/docker-bash/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/bash/), [`arm32v6`](https://hub.docker.com/r/arm32v6/bash/), [`arm32v7`](https://hub.docker.com/r/arm32v7/bash/), [`arm64v8`](https://hub.docker.com/r/arm64v8/bash/), [`i386`](https://hub.docker.com/r/i386/bash/), [`ppc64le`](https://hub.docker.com/r/ppc64le/bash/), [`s390x`](https://hub.docker.com/r/s390x/bash/) + [`amd64`](https://hub.docker.com/r/amd64/bash/), [`arm32v6`](https://hub.docker.com/r/arm32v6/bash/), [`arm32v7`](https://hub.docker.com/r/arm32v7/bash/), [`arm64v8`](https://hub.docker.com/r/arm64v8/bash/), [`i386`](https://hub.docker.com/r/i386/bash/), [`ppc64le`](https://hub.docker.com/r/ppc64le/bash/), [`riscv64`](https://hub.docker.com/r/riscv64/bash/), [`s390x`](https://hub.docker.com/r/s390x/bash/) - **Published image artifact details**: [repo-info repo's `repos/bash/` directory](https://github.com/docker-library/repo-info/blob/master/repos/bash) ([history](https://github.com/docker-library/repo-info/commits/master/repos/bash)) diff --git a/bash/metadata.json b/bash/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/bash/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/bonita/README.md b/bonita/README.md index fc3e2a7ae36e..20be242b7c2a 100644 --- a/bonita/README.md +++ b/bonita/README.md @@ -24,10 +24,7 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2021.1`, `7.12.1`, `7.12`](https://github.com/bonitasoft/bonita-distrib/blob/bfdd527629063b73f053320e50e1f6bfcd135d0a/docker/Dockerfile) -- [`2021.2-u0`, `2021.2`, `7.13.0`, `7.13`](https://github.com/bonitasoft/bonita-distrib/blob/a1d9ee5e31d38958aa553cc7f9d465f1151d902f/docker/Dockerfile) -- [`2022.1-u0`, `2022.1`, `7.14.0`, `7.14`](https://github.com/bonitasoft/bonita-distrib/blob/694bf79347add872f8c6a4c0a7f5c3ef12c31dc8/docker/Dockerfile) -- [`2022.2-u0`, `2022.2`, `7.15.0`, `7.15`, `latest`](https://github.com/bonitasoft/bonita-distrib/blob/21c0e51634e836feaf910e8e3d6e95de200e1814/docker/Dockerfile) +- [`2025.1-u0`, `2025.1`, `10.3.0`, `10.3`, `latest`](https://github.com/bonitasoft/bonita-distrib/blob/adca7d9251091cd02f3cde7c0a9cee0e1538c7a1/docker/Dockerfile) # Quick reference (cont.) @@ -35,7 +32,7 @@ WARNING: [Jira](https://bonita.atlassian.net/jira/software/c/projects/BBPMC/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/bonita/), [`arm64v8`](https://hub.docker.com/r/arm64v8/bonita/), [`ppc64le`](https://hub.docker.com/r/ppc64le/bonita/) + [`amd64`](https://hub.docker.com/r/amd64/bonita/) - **Published image artifact details**: [repo-info repo's `repos/bonita/` directory](https://github.com/docker-library/repo-info/blob/master/repos/bonita) ([history](https://github.com/docker-library/repo-info/commits/master/repos/bonita)) @@ -78,32 +75,29 @@ As PostgreSQL is the recommended database for qualification and production envir From Bonita 2022.1 onwards, the Bonita docker image does not include configuration scripts to automatically create databases and users anymore. -Therefore the PostgreSQL container needs to be configured to work with Bonita before starting the Bonita container. The configuration of a PostgreSQL database to work with Bonita is described in details in the [database configuration page](https://documentation.bonitasoft.com/bonita/latest/runtime/database-configuration#postgres_setup). + Alternatively, Bonita provides a preconfigured [PostgreSQL image](https://hub.docker.com/r/bonitasoft/bonita-postgres) on docker-hub. + You can run the image with the following command: +Therefore, the PostgreSQL container needs to be configured to work with Bonita before starting the Bonita container. The configuration of a PostgreSQL database to work with Bonita is described in details in the [database configuration page](https://documentation.bonitasoft.com/bonita/latest/runtime/database-configuration#postgres_setup). + Alternatively, Bonita provides a preconfigured [PostgreSQL image](https://hub.docker.com/r/bonitasoft/bonita-postgres) on docker-hub. + You can run the image with the following command: ```bash -docker run --name mydbpostgres -h -d bonitasoft/bonita-postgres:12.6 +docker run --name mydbpostgres -h -d bonitasoft/bonita-postgres:16.4 ``` -This image is built from the following [GitHub repository](https://github.com/Bonitasoft-Community/bonita-database-docker/tree/main/postgres/12), which can be further adapted/customized to suit your needs. +This image is built from the following [GitHub repository](https://github.com/Bonitasoft-Community/bonita-database-docker/tree/main/postgres/16), which can be further adapted/customized to suit your needs. -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `bonita`: +Example `compose.yaml` for `bonita`: ```yaml -version: '3' - services: db: - image: bonitasoft/bonita-postgres:12.6 + image: bonitasoft/bonita-postgres:16.4 + ports: + - 5432:5432 environment: POSTGRES_PASSWORD: example restart: always - command: - - -c - - max_prepared_transactions=100 bonita: - image: bonita:7.14.0 + image: bonita:2024.3 hostname: custom-hostname.example.com ports: - 8080:8080 @@ -117,34 +111,17 @@ services: - BIZ_DB_NAME=business_data - BIZ_DB_USER=business_data - BIZ_DB_PASS=bpm - - TENANT_LOGIN=tech_user - - TENANT_PASSWORD=secret + - BONITA_RUNTIME_ADMIN_USERNAME=tech_user + - BONITA_RUNTIME_ADMIN_PASSWORD=secret - PLATFORM_LOGIN=pfadmin - PLATFORM_PASSWORD=pfsecret restart: on-failure:2 depends_on: - - db - entrypoint: - - bash - - -c - - | - set -e - echo 'Waiting for PostgreSQL to be available' - maxTries=10 - while [ "$$maxTries" -gt 0 ] && [ $$(echo 'QUIT' | nc -w 1 "$$DB_HOST" 5432; echo "$$?") -gt 0 ]; do - sleep 1 - let maxTries-- - done - if [ "$$maxTries" -le 0 ]; then - echo >&2 'error: unable to contact Postgres after 10 tries' - exit 1 - fi - exec /opt/files/startup.sh /opt/bonita/server/bin/catalina.sh run + db: + condition: service_healthy ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/d14f7b96a6cdcb815f50ba4244bf799f6127770f/bonita/stack.yml) - -Run `docker stack deploy -c stack.yml bonita` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). - Replace `` with the one used in the licence generation command - leave double `$$` untouched @@ -172,7 +149,7 @@ docker run --name=bonita -h --env-file=env.txt -d -p 8080:8080 bonita ## Start Bonita with custom security credentials ```bash -docker run --name=bonita -h -e "TENANT_LOGIN=tech_user" -e "TENANT_PASSWORD=secret" -e "PLATFORM_LOGIN=pfadmin" -e "PLATFORM_PASSWORD=pfsecret" -d -p 8080:8080 bonita +docker run --name=bonita -h -e "BONITA_RUNTIME_ADMIN_USERNAME=tech_user" -e "BONITA_RUNTIME_ADMIN_PASSWORD=secret" -e "PLATFORM_LOGIN=pfadmin" -e "PLATFORM_PASSWORD=pfsecret" -d -p 8080:8080 bonita ``` Now you can access the Bonita Runtime on localhost:8080/bonita and login using: tech_user / secret @@ -198,11 +175,11 @@ This optional environment variable is used in conjunction with PLATFORM_PASSWORD This environment variable is recommended for you to use the Bonita image. It sets the platform administrator password for Bonita. If it is not specified, the default password `platform` will be used. -### TENANT_LOGIN +### BONITA_RUNTIME_ADMIN_USERNAME -This optional environment variable is used in conjunction with TENANT_PASSWORD to define the username for the tenant administrator. If it is not specified, the default username `install` will be used. +This optional environment variable is used in conjunction with BONITA_RUNTIME_ADMIN_PASSWORD to define the username for the tenant administrator. If it is not specified, the default username `install` will be used. -### TENANT_PASSWORD +### BONITA_RUNTIME_ADMIN_PASSWORD This environment variable is recommended for you to use the Bonita image. It sets the tenant administrator password for Bonita. If it is not specified, the default password `install` will be used. @@ -296,7 +273,7 @@ These variables are used in conjunction to define how Bonita should access the [ The logger can be configured by mounting a volume on folder `/opt/bonita/conf/logs` containing the configuration files. -the volume must contain the 2 files [log4j2-loggers.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/7.14.0/tomcat-resources/tomcat-distrib-for-bonita/src/main/resources/tomcat/server/conf/log4j2-loggers.xml) and [log4j2-appenders.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/7.14.0/docker/files/log4j2/log4j2-appenders.xml) +the volume must contain the 2 files [log4j2-loggers.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/10.3.0/tomcat-resources/tomcat-distrib-for-bonita/src/main/resources/tomcat/server/conf/log4j2-loggers.xml) and [log4j2-appenders.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/10.3.0/docker/files/log4j2/log4j2-appenders.xml) Any change made to one of this 2 files is automatically hot-reloaded and taken into account immediately. @@ -318,7 +295,7 @@ $ docker run -e HTTP_API=true -e HTTP_API_PASSWORD="My-Cust0m_S3cR3T" --name bo ## Update from an earlier version of Bonita -For updating from a version before 7.10.0, please refer to the [documentation](https://documentation.bonitasoft.com/bonita/latest/version-update/migrate-from-an-earlier-version-of-bonita) +For updating from a version before 7.10.0, please refer to the [documentation](https://documentation.bonitasoft.com/bonita/latest/version-update/update-with-migration-tool) - Stop the container to perform a database backup @@ -352,17 +329,16 @@ For updating from a version before 7.10.0, please refer to the [documentation](h $ cat /tmp/bonitadb.sql | psql -U newbonitauser -h 172.17.0.26 newbonitadb ``` -- Retrieve the last update tool +- Retrieve the last update tool archive from https://www.bonitasoft.com/downloads ```console - wget https://github.com/bonitasoft/bonita-platform-releases/releases/download/2022.2-u0/bonita-update-tool-3.1.0.zip - unzip bonita-update-tool-3.0.0.zip + unzip bonita-update-tool-3.7.0.zip ``` - Configure the update tool ```console - $ cd bonita-update-tool-3.0.0 + $ cd bonita-update-tool-3.7.0 ``` edit the update tool configuration file `Config.properties` to point towards the database. @@ -391,7 +367,7 @@ For updating from a version before 7.10.0, please refer to the [documentation](h - Launch the new container pointing towards the copy of the database. ```console - $ docker run --name=bonita --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -d -p 8081:8080 bonita:2022.2-u0 + $ docker run --name=bonita --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -d -p 8081:8080 bonita:2025.1-u0 ``` For more details regarding Bonita update and for version before 7.10.0, see the [documentation](https://documentation.bonitasoft.com/bonita/latest/version-update/migrate-from-an-earlier-version-of-bonita). diff --git a/bonita/compose.yaml b/bonita/compose.yaml new file mode 100644 index 000000000000..80eab9893445 --- /dev/null +++ b/bonita/compose.yaml @@ -0,0 +1,31 @@ +services: + db: + image: bonitasoft/bonita-postgres:16.4 + ports: + - 5432:5432 + environment: + POSTGRES_PASSWORD: example + restart: always + bonita: + image: bonita:2024.3 + hostname: custom-hostname.example.com + ports: + - 8080:8080 + environment: + - DB_VENDOR=postgres + - DB_HOST=db + - DB_PORT=5432 + - DB_NAME=bonita + - DB_USER=bonita + - DB_PASS=bpm + - BIZ_DB_NAME=business_data + - BIZ_DB_USER=business_data + - BIZ_DB_PASS=bpm + - BONITA_RUNTIME_ADMIN_USERNAME=tech_user + - BONITA_RUNTIME_ADMIN_PASSWORD=secret + - PLATFORM_LOGIN=pfadmin + - PLATFORM_PASSWORD=pfsecret + restart: on-failure:2 + depends_on: + db: + condition: service_healthy diff --git a/bonita/content.md b/bonita/content.md index 2c5302ab259c..05f57eb1e53b 100644 --- a/bonita/content.md +++ b/bonita/content.md @@ -28,17 +28,17 @@ As PostgreSQL is the recommended database for qualification and production envir From Bonita 2022.1 onwards, the Bonita docker image does not include configuration scripts to automatically create databases and users anymore. -Therefore the PostgreSQL container needs to be configured to work with Bonita before starting the Bonita container. The configuration of a PostgreSQL database to work with Bonita is described in details in the [database configuration page](https://documentation.bonitasoft.com/bonita/latest/runtime/database-configuration#postgres_setup). + Alternatively, Bonita provides a preconfigured [PostgreSQL image](https://hub.docker.com/r/bonitasoft/bonita-postgres) on docker-hub. + You can run the image with the following command: +Therefore, the PostgreSQL container needs to be configured to work with Bonita before starting the Bonita container. The configuration of a PostgreSQL database to work with Bonita is described in details in the [database configuration page](https://documentation.bonitasoft.com/bonita/latest/runtime/database-configuration#postgres_setup). + Alternatively, Bonita provides a preconfigured [PostgreSQL image](https://hub.docker.com/r/bonitasoft/bonita-postgres) on docker-hub. + You can run the image with the following command: ```bash -docker run --name mydbpostgres -h -d bonitasoft/bonita-postgres:12.6 +docker run --name mydbpostgres -h -d bonitasoft/bonita-postgres:16.4 ``` -This image is built from the following [GitHub repository](https://github.com/Bonitasoft-Community/bonita-database-docker/tree/main/postgres/12), which can be further adapted/customized to suit your needs. +This image is built from the following [GitHub repository](https://github.com/Bonitasoft-Community/bonita-database-docker/tree/main/postgres/16), which can be further adapted/customized to suit your needs. -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). - Replace `` with the one used in the licence generation command - leave double `$$` untouched @@ -66,7 +66,7 @@ docker run --name=bonita -h --env-file=env.txt -d -p 8080:8080 %%IMAG ## Start Bonita with custom security credentials ```bash -docker run --name=bonita -h -e "TENANT_LOGIN=tech_user" -e "TENANT_PASSWORD=secret" -e "PLATFORM_LOGIN=pfadmin" -e "PLATFORM_PASSWORD=pfsecret" -d -p 8080:8080 %%IMAGE%% +docker run --name=bonita -h -e "BONITA_RUNTIME_ADMIN_USERNAME=tech_user" -e "BONITA_RUNTIME_ADMIN_PASSWORD=secret" -e "PLATFORM_LOGIN=pfadmin" -e "PLATFORM_PASSWORD=pfsecret" -d -p 8080:8080 %%IMAGE%% ``` Now you can access the Bonita Runtime on localhost:8080/bonita and login using: tech_user / secret @@ -92,11 +92,11 @@ This optional environment variable is used in conjunction with PLATFORM_PASSWORD This environment variable is recommended for you to use the Bonita image. It sets the platform administrator password for Bonita. If it is not specified, the default password `platform` will be used. -### TENANT_LOGIN +### BONITA_RUNTIME_ADMIN_USERNAME -This optional environment variable is used in conjunction with TENANT_PASSWORD to define the username for the tenant administrator. If it is not specified, the default username `install` will be used. +This optional environment variable is used in conjunction with BONITA_RUNTIME_ADMIN_PASSWORD to define the username for the tenant administrator. If it is not specified, the default username `install` will be used. -### TENANT_PASSWORD +### BONITA_RUNTIME_ADMIN_PASSWORD This environment variable is recommended for you to use the Bonita image. It sets the tenant administrator password for Bonita. If it is not specified, the default password `install` will be used. @@ -190,7 +190,7 @@ These variables are used in conjunction to define how Bonita should access the [ The logger can be configured by mounting a volume on folder `/opt/bonita/conf/logs` containing the configuration files. -the volume must contain the 2 files [log4j2-loggers.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/7.14.0/tomcat-resources/tomcat-distrib-for-bonita/src/main/resources/tomcat/server/conf/log4j2-loggers.xml) and [log4j2-appenders.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/7.14.0/docker/files/log4j2/log4j2-appenders.xml) +the volume must contain the 2 files [log4j2-loggers.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/10.3.0/tomcat-resources/tomcat-distrib-for-bonita/src/main/resources/tomcat/server/conf/log4j2-loggers.xml) and [log4j2-appenders.xml](https://raw.githubusercontent.com/bonitasoft/bonita-distrib/10.3.0/docker/files/log4j2/log4j2-appenders.xml) Any change made to one of this 2 files is automatically hot-reloaded and taken into account immediately. @@ -212,7 +212,7 @@ $ docker run -e HTTP_API=true -e HTTP_API_PASSWORD="My-Cust0m_S3cR3T" --name bo ## Update from an earlier version of Bonita -For updating from a version before 7.10.0, please refer to the [documentation](https://documentation.bonitasoft.com/bonita/latest/version-update/migrate-from-an-earlier-version-of-bonita) +For updating from a version before 7.10.0, please refer to the [documentation](https://documentation.bonitasoft.com/bonita/latest/version-update/update-with-migration-tool) - Stop the container to perform a database backup @@ -246,17 +246,16 @@ For updating from a version before 7.10.0, please refer to the [documentation](h $ cat /tmp/bonitadb.sql | psql -U newbonitauser -h 172.17.0.26 newbonitadb ``` -- Retrieve the last update tool +- Retrieve the last update tool archive from https://www.bonitasoft.com/downloads ```console - wget https://github.com/bonitasoft/bonita-platform-releases/releases/download/2022.2-u0/bonita-update-tool-3.1.0.zip - unzip bonita-update-tool-3.0.0.zip + unzip bonita-update-tool-3.7.0.zip ``` - Configure the update tool ```console - $ cd bonita-update-tool-3.0.0 + $ cd bonita-update-tool-3.7.0 ``` edit the update tool configuration file `Config.properties` to point towards the database. @@ -285,7 +284,7 @@ For updating from a version before 7.10.0, please refer to the [documentation](h - Launch the new container pointing towards the copy of the database. ```console - $ docker run --name=bonita --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -d -p 8081:8080 %%IMAGE%%:2022.2-u0 + $ docker run --name=bonita --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -d -p 8081:8080 %%IMAGE%%:2025.1-u0 ``` For more details regarding Bonita update and for version before 7.10.0, see the [documentation](https://documentation.bonitasoft.com/bonita/latest/version-update/migrate-from-an-earlier-version-of-bonita). diff --git a/bonita/metadata.json b/bonita/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/bonita/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/bonita/stack.yml b/bonita/stack.yml deleted file mode 100644 index 97994e559a26..000000000000 --- a/bonita/stack.yml +++ /dev/null @@ -1,49 +0,0 @@ -version: '3' - -services: - db: - image: bonitasoft/bonita-postgres:12.6 - environment: - POSTGRES_PASSWORD: example - restart: always - command: - - -c - - max_prepared_transactions=100 - bonita: - image: bonita:7.14.0 - hostname: custom-hostname.example.com - ports: - - 8080:8080 - environment: - - DB_VENDOR=postgres - - DB_HOST=db - - DB_PORT=5432 - - DB_NAME=bonita - - DB_USER=bonita - - DB_PASS=bpm - - BIZ_DB_NAME=business_data - - BIZ_DB_USER=business_data - - BIZ_DB_PASS=bpm - - TENANT_LOGIN=tech_user - - TENANT_PASSWORD=secret - - PLATFORM_LOGIN=pfadmin - - PLATFORM_PASSWORD=pfsecret - restart: on-failure:2 - depends_on: - - db - entrypoint: - - bash - - -c - - | - set -e - echo 'Waiting for PostgreSQL to be available' - maxTries=10 - while [ "$$maxTries" -gt 0 ] && [ $$(echo 'QUIT' | nc -w 1 "$$DB_HOST" 5432; echo "$$?") -gt 0 ]; do - sleep 1 - let maxTries-- - done - if [ "$$maxTries" -le 0 ]; then - echo >&2 'error: unable to contact Postgres after 10 tries' - exit 1 - fi - exec /opt/files/startup.sh /opt/bonita/server/bin/catalina.sh run diff --git a/buildpack-deps/README.md b/buildpack-deps/README.md index 1a3300509b49..191da4342e70 100644 --- a/buildpack-deps/README.md +++ b/buildpack-deps/README.md @@ -24,41 +24,70 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`bookworm-curl`, `testing-curl`](https://github.com/docker-library/buildpack-deps/blob/84e7e46026131a108a6480e5ed2969e8acf2d4e2/debian/bookworm/curl/Dockerfile) -- [`bookworm-scm`, `testing-scm`](https://github.com/docker-library/buildpack-deps/blob/84e7e46026131a108a6480e5ed2969e8acf2d4e2/debian/bookworm/scm/Dockerfile) -- [`bookworm`, `testing`](https://github.com/docker-library/buildpack-deps/blob/84e7e46026131a108a6480e5ed2969e8acf2d4e2/debian/bookworm/Dockerfile) -- [`bullseye-curl`, `stable-curl`, `curl`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/debian/bullseye/curl/Dockerfile) -- [`bullseye-scm`, `stable-scm`, `scm`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/debian/bullseye/scm/Dockerfile) -- [`bullseye`, `stable`, `latest`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/debian/bullseye/Dockerfile) -- [`buster-curl`, `oldstable-curl`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/debian/buster/curl/Dockerfile) -- [`buster-scm`, `oldstable-scm`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/debian/buster/scm/Dockerfile) -- [`buster`, `oldstable`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/debian/buster/Dockerfile) -- [`sid-curl`, `unstable-curl`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/debian/sid/curl/Dockerfile) -- [`sid-scm`, `unstable-scm`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/debian/sid/scm/Dockerfile) -- [`sid`, `unstable`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/debian/sid/Dockerfile) -- [`bionic-curl`, `18.04-curl`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/ubuntu/bionic/curl/Dockerfile) -- [`bionic-scm`, `18.04-scm`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/ubuntu/bionic/scm/Dockerfile) -- [`bionic`, `18.04`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/ubuntu/bionic/Dockerfile) -- [`focal-curl`, `20.04-curl`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/ubuntu/focal/curl/Dockerfile) -- [`focal-scm`, `20.04-scm`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/ubuntu/focal/scm/Dockerfile) -- [`focal`, `20.04`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/ubuntu/focal/Dockerfile) -- [`jammy-curl`, `22.04-curl`](https://github.com/docker-library/buildpack-deps/blob/e2fc735283ba4e96efc3e4acf2b74bc3eccbf327/ubuntu/jammy/curl/Dockerfile) -- [`jammy-scm`, `22.04-scm`](https://github.com/docker-library/buildpack-deps/blob/e2fc735283ba4e96efc3e4acf2b74bc3eccbf327/ubuntu/jammy/scm/Dockerfile) -- [`jammy`, `22.04`](https://github.com/docker-library/buildpack-deps/blob/e2fc735283ba4e96efc3e4acf2b74bc3eccbf327/ubuntu/jammy/Dockerfile) -- [`kinetic-curl`, `22.10-curl`](https://github.com/docker-library/buildpack-deps/blob/c96f4f3e1d5bc19fba5c652f57af0a35bb929718/ubuntu/kinetic/curl/Dockerfile) -- [`kinetic-scm`, `22.10-scm`](https://github.com/docker-library/buildpack-deps/blob/c96f4f3e1d5bc19fba5c652f57af0a35bb929718/ubuntu/kinetic/scm/Dockerfile) -- [`kinetic`, `22.10`](https://github.com/docker-library/buildpack-deps/blob/c96f4f3e1d5bc19fba5c652f57af0a35bb929718/ubuntu/kinetic/Dockerfile) -- [`lunar-curl`, `23.04-curl`](https://github.com/docker-library/buildpack-deps/blob/31e15bc4a2352c20998e5da6bd8aaa727fd19d06/ubuntu/lunar/curl/Dockerfile) -- [`lunar-scm`, `23.04-scm`](https://github.com/docker-library/buildpack-deps/blob/31e15bc4a2352c20998e5da6bd8aaa727fd19d06/ubuntu/lunar/scm/Dockerfile) -- [`lunar`, `23.04`](https://github.com/docker-library/buildpack-deps/blob/31e15bc4a2352c20998e5da6bd8aaa727fd19d06/ubuntu/lunar/Dockerfile) -- [`xenial-curl`, `16.04-curl`](https://github.com/docker-library/buildpack-deps/blob/93d2a6f64abe6787b7dd25c7d5322af1fa2e3f55/ubuntu/xenial/curl/Dockerfile) -- [`xenial-scm`, `16.04-scm`](https://github.com/docker-library/buildpack-deps/blob/65d69325ad741cea6dee20781c1faaab2e003d87/ubuntu/xenial/scm/Dockerfile) -- [`xenial`, `16.04`](https://github.com/docker-library/buildpack-deps/blob/98a5ab81d47a106c458cdf90733df0ee8beea06c/ubuntu/xenial/Dockerfile) +- [`bookworm-curl`, `oldstable-curl`](https://github.com/docker-library/buildpack-deps/blob/3e18c3af1f5dce6a48abf036857f9097b6bd79cc/debian/bookworm/curl/Dockerfile) + +- [`bookworm-scm`, `oldstable-scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bookworm/scm/Dockerfile) + +- [`bookworm`, `oldstable`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bookworm/Dockerfile) + +- [`bullseye-curl`, `oldoldstable-curl`](https://github.com/docker-library/buildpack-deps/blob/93d6db0797f91ab674535553b7e0e762941a02d0/debian/bullseye/curl/Dockerfile) + +- [`bullseye-scm`, `oldoldstable-scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bullseye/scm/Dockerfile) + +- [`bullseye`, `oldoldstable`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bullseye/Dockerfile) + +- [`forky-curl`, `testing-curl`](https://github.com/docker-library/buildpack-deps/blob/6fbd1fd6aa17031b10f11a97c31b9da1ac09db76/debian/forky/curl/Dockerfile) + +- [`forky-scm`, `testing-scm`](https://github.com/docker-library/buildpack-deps/blob/6fbd1fd6aa17031b10f11a97c31b9da1ac09db76/debian/forky/scm/Dockerfile) + +- [`forky`, `testing`](https://github.com/docker-library/buildpack-deps/blob/6fbd1fd6aa17031b10f11a97c31b9da1ac09db76/debian/forky/Dockerfile) + +- [`sid-curl`, `unstable-curl`](https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/curl/Dockerfile) + +- [`sid-scm`, `unstable-scm`](https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/scm/Dockerfile) + +- [`sid`, `unstable`](https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/Dockerfile) + +- [`trixie-curl`, `stable-curl`, `curl`](https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5/debian/trixie/curl/Dockerfile) + +- [`trixie-scm`, `stable-scm`, `scm`](https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5/debian/trixie/scm/Dockerfile) + +- [`trixie`, `stable`, `latest`](https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5/debian/trixie/Dockerfile) + +- [`jammy-curl`, `22.04-curl`](https://github.com/docker-library/buildpack-deps/blob/93d6db0797f91ab674535553b7e0e762941a02d0/ubuntu/jammy/curl/Dockerfile) + +- [`jammy-scm`, `22.04-scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/jammy/scm/Dockerfile) + +- [`jammy`, `22.04`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/jammy/Dockerfile) + +- [`noble-curl`, `24.04-curl`](https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/curl/Dockerfile) + +- [`noble-scm`, `24.04-scm`](https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/scm/Dockerfile) + +- [`noble`, `24.04`](https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/Dockerfile) + +- [`plucky-curl`, `25.04-curl`](https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/curl/Dockerfile) + +- [`plucky-scm`, `25.04-scm`](https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/scm/Dockerfile) + +- [`plucky`, `25.04`](https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/Dockerfile) + +- [`questing-curl`, `25.10-curl`](https://github.com/docker-library/buildpack-deps/blob/99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb/ubuntu/questing/curl/Dockerfile) + +- [`questing-scm`, `25.10-scm`](https://github.com/docker-library/buildpack-deps/blob/99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb/ubuntu/questing/scm/Dockerfile) + +- [`questing`, `25.10`](https://github.com/docker-library/buildpack-deps/blob/99e7dc24c50c0a7be371ea9e6aed6134ce4cbfeb/ubuntu/questing/Dockerfile) + +- [`resolute-curl`, `26.04-curl`](https://github.com/docker-library/buildpack-deps/blob/8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2/ubuntu/resolute/curl/Dockerfile) + +- [`resolute-scm`, `26.04-scm`](https://github.com/docker-library/buildpack-deps/blob/8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2/ubuntu/resolute/scm/Dockerfile) + +- [`resolute`, `26.04`](https://github.com/docker-library/buildpack-deps/blob/8330ca1d2319b779c8b7a8aa64bb40dbe568e1e2/ubuntu/resolute/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/buildpack-deps/issues](https://github.com/docker-library/buildpack-deps/issues) + [https://github.com/docker-library/buildpack-deps/issues](https://github.com/docker-library/buildpack-deps/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/buildpack-deps/), [`arm32v5`](https://hub.docker.com/r/arm32v5/buildpack-deps/), [`arm32v7`](https://hub.docker.com/r/arm32v7/buildpack-deps/), [`arm64v8`](https://hub.docker.com/r/arm64v8/buildpack-deps/), [`i386`](https://hub.docker.com/r/i386/buildpack-deps/), [`mips64le`](https://hub.docker.com/r/mips64le/buildpack-deps/), [`ppc64le`](https://hub.docker.com/r/ppc64le/buildpack-deps/), [`riscv64`](https://hub.docker.com/r/riscv64/buildpack-deps/), [`s390x`](https://hub.docker.com/r/s390x/buildpack-deps/) diff --git a/buildpack-deps/metadata.json b/buildpack-deps/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/buildpack-deps/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/busybox/README.md b/busybox/README.md index 3a282dc5f504..0f2de87a97e9 100644 --- a/busybox/README.md +++ b/busybox/README.md @@ -24,22 +24,29 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.36.0-glibc`, `1.36-glibc`, `1-glibc`, `unstable-glibc`, `glibc`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest/glibc/Dockerfile) -- [`1.36.0-uclibc`, `1.36-uclibc`, `1-uclibc`, `unstable-uclibc`, `uclibc`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest/uclibc/Dockerfile) -- [`1.36.0-musl`, `1.36-musl`, `1-musl`, `unstable-musl`, `musl`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest/musl/Dockerfile) -- [`1.36.0`, `1.36`, `1`, `unstable`, `latest`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest/glibc/Dockerfile) -- [`1.35.0-glibc`, `1.35-glibc`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest-1/glibc/Dockerfile) -- [`1.35.0-uclibc`, `1.35-uclibc`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest-1/uclibc/Dockerfile) -- [`1.35.0-musl`, `1.35-musl`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest-1/musl/Dockerfile) -- [`1.35.0`, `1.35`](https://github.com/docker-library/busybox/blob/035784654e7c42ce45e84617eeec327191fa84fd/latest-1/glibc/Dockerfile) +- [`1.37.0-glibc`, `1.37-glibc`, `1-glibc`, `unstable-glibc`, `glibc`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest/glibc/amd64/index.json) + +- [`1.37.0-uclibc`, `1.37-uclibc`, `1-uclibc`, `unstable-uclibc`, `uclibc`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest/uclibc/amd64/index.json) + +- [`1.37.0-musl`, `1.37-musl`, `1-musl`, `unstable-musl`, `musl`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest/musl/amd64/index.json) + +- [`1.37.0`, `1.37`, `1`, `unstable`, `latest`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest/glibc/amd64/index.json) + +- [`1.36.1-glibc`, `1.36-glibc`, `stable-glibc`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest-1/glibc/amd64/index.json) + +- [`1.36.1-uclibc`, `1.36-uclibc`, `stable-uclibc`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest-1/uclibc/amd64/index.json) + +- [`1.36.1-musl`, `1.36-musl`, `stable-musl`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest-1/musl/amd64/index.json) + +- [`1.36.1`, `1.36`, `stable`](https://github.com/docker-library/busybox/blob/3c91bcd92b2cd6c113a87c39bcada57fbccf00b0/latest-1/glibc/amd64/index.json) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/busybox/issues](https://github.com/docker-library/busybox/issues) + [https://github.com/docker-library/busybox/issues](https://github.com/docker-library/busybox/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/busybox/), [`arm32v5`](https://hub.docker.com/r/arm32v5/busybox/), [`arm32v6`](https://hub.docker.com/r/arm32v6/busybox/), [`arm32v7`](https://hub.docker.com/r/arm32v7/busybox/), [`arm64v8`](https://hub.docker.com/r/arm64v8/busybox/), [`i386`](https://hub.docker.com/r/i386/busybox/), [`mips64le`](https://hub.docker.com/r/mips64le/busybox/), [`ppc64le`](https://hub.docker.com/r/ppc64le/busybox/), [`riscv64`](https://hub.docker.com/r/riscv64/busybox/), [`s390x`](https://hub.docker.com/r/s390x/busybox/) + [`amd64`](https://hub.docker.com/r/amd64/busybox/), [`arm32v5`](https://hub.docker.com/r/arm32v5/busybox/), [`arm32v6`](https://hub.docker.com/r/arm32v6/busybox/), [`arm32v7`](https://hub.docker.com/r/arm32v7/busybox/), [`arm64v8`](https://hub.docker.com/r/arm64v8/busybox/), [`i386`](https://hub.docker.com/r/i386/busybox/), [`ppc64le`](https://hub.docker.com/r/ppc64le/busybox/), [`riscv64`](https://hub.docker.com/r/riscv64/busybox/), [`s390x`](https://hub.docker.com/r/s390x/busybox/) - **Published image artifact details**: [repo-info repo's `repos/busybox/` directory](https://github.com/docker-library/repo-info/blob/master/repos/busybox) ([history](https://github.com/docker-library/repo-info/commits/master/repos/busybox)) diff --git a/busybox/metadata.json b/busybox/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/busybox/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/caddy/README.md b/caddy/README.md index 65b8c9ddb182..5e8276ca166f 100644 --- a/caddy/README.md +++ b/caddy/README.md @@ -28,34 +28,44 @@ WARNING: ## Simple Tags -- [`2.6.2-alpine`, `2.6-alpine`, `2-alpine`, `alpine`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/alpine/Dockerfile) -- [`2.6.2-builder-alpine`, `2.6-builder-alpine`, `2-builder-alpine`, `builder-alpine`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/builder/Dockerfile) -- [`2.6.2-windowsservercore-1809`, `2.6-windowsservercore-1809`, `2-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows/1809/Dockerfile) -- [`2.6.2-windowsservercore-ltsc2022`, `2.6-windowsservercore-ltsc2022`, `2-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows/ltsc2022/Dockerfile) -- [`2.6.2-builder-windowsservercore-1809`, `2.6-builder-windowsservercore-1809`, `2-builder-windowsservercore-1809`, `builder-windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows-builder/1809/Dockerfile) -- [`2.6.2-builder-windowsservercore-ltsc2022`, `2.6-builder-windowsservercore-ltsc2022`, `2-builder-windowsservercore-ltsc2022`, `builder-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows-builder/ltsc2022/Dockerfile) +- [`2.10.2-alpine`, `2.10-alpine`, `2-alpine`, `alpine`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/alpine/Dockerfile) + +- [`2.10.2-builder-alpine`, `2.10-builder-alpine`, `2-builder-alpine`, `builder-alpine`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/builder/Dockerfile) + +- [`2.10.2-windowsservercore-ltsc2022`, `2.10-windowsservercore-ltsc2022`, `2-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows/ltsc2022/Dockerfile) + +- [`2.10.2-windowsservercore-ltsc2025`, `2.10-windowsservercore-ltsc2025`, `2-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows/ltsc2025/Dockerfile) + +- [`2.10.2-builder-windowsservercore-ltsc2022`, `2.10-builder-windowsservercore-ltsc2022`, `2-builder-windowsservercore-ltsc2022`, `builder-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows-builder/ltsc2022/Dockerfile) + +- [`2.10.2-builder-windowsservercore-ltsc2025`, `2.10-builder-windowsservercore-ltsc2025`, `2-builder-windowsservercore-ltsc2025`, `builder-windowsservercore-ltsc2025`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows-builder/ltsc2025/Dockerfile) ## Shared Tags -- `2.6.2`, `2.6`, `2`, `latest`: - - [`2.6.2-alpine`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/alpine/Dockerfile) - - [`2.6.2-windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows/1809/Dockerfile) - - [`2.6.2-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows/ltsc2022/Dockerfile) -- `2.6.2-builder`, `2.6-builder`, `2-builder`, `builder`: - - [`2.6.2-builder-alpine`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/builder/Dockerfile) - - [`2.6.2-builder-windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows-builder/1809/Dockerfile) - - [`2.6.2-builder-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows-builder/ltsc2022/Dockerfile) -- `2.6.2-windowsservercore`, `2.6-windowsservercore`, `2-windowsservercore`, `windowsservercore`: - - [`2.6.2-windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows/1809/Dockerfile) - - [`2.6.2-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/9c857d39bef831f27612106ddd00a4df307e8975/2.6/windows/ltsc2022/Dockerfile) +- `2.10.2`, `2.10`, `2`, `latest`: + + - [`2.10.2-alpine`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/alpine/Dockerfile) + - [`2.10.2-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows/ltsc2022/Dockerfile) + - [`2.10.2-windowsservercore-ltsc2025`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows/ltsc2025/Dockerfile) + +- `2.10.2-builder`, `2.10-builder`, `2-builder`, `builder`: + + - [`2.10.2-builder-alpine`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/builder/Dockerfile) + - [`2.10.2-builder-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows-builder/ltsc2022/Dockerfile) + - [`2.10.2-builder-windowsservercore-ltsc2025`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows-builder/ltsc2025/Dockerfile) + +- `2.10.2-windowsservercore`, `2.10-windowsservercore`, `2-windowsservercore`, `windowsservercore`: + + - [`2.10.2-windowsservercore-ltsc2022`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows/ltsc2022/Dockerfile) + - [`2.10.2-windowsservercore-ltsc2025`](https://github.com/caddyserver/caddy-docker/blob/5572371a83e48fd0368a4917d0fc48e44ef30582/2.10/windows/ltsc2025/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/caddyserver/caddy-docker/issues](https://github.com/caddyserver/caddy-docker/issues) + [https://github.com/caddyserver/caddy-docker/issues](https://github.com/caddyserver/caddy-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/caddy/), [`arm32v6`](https://hub.docker.com/r/arm32v6/caddy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/caddy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/caddy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/caddy/), [`s390x`](https://hub.docker.com/r/s390x/caddy/), [`windows-amd64`](https://hub.docker.com/r/winamd64/caddy/) + [`amd64`](https://hub.docker.com/r/amd64/caddy/), [`arm32v6`](https://hub.docker.com/r/arm32v6/caddy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/caddy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/caddy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/caddy/), [`riscv64`](https://hub.docker.com/r/riscv64/caddy/), [`s390x`](https://hub.docker.com/r/s390x/caddy/), [`windows-amd64`](https://hub.docker.com/r/winamd64/caddy/) - **Published image artifact details**: [repo-info repo's `repos/caddy/` directory](https://github.com/docker-library/repo-info/blob/master/repos/caddy) ([history](https://github.com/docker-library/repo-info/commits/master/repos/caddy)) @@ -68,7 +78,7 @@ WARNING: - **Source of this description**: [docs repo's `caddy/` directory](https://github.com/docker-library/docs/tree/master/caddy) ([history](https://github.com/docker-library/docs/commits/master/caddy)) -![logo](https://raw.githubusercontent.com/docker-library/docs/175a99d9d009afb887a921e35bfa892a01d7be77/caddy/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/7f3881a28c29ed29bb1a38681b95bd785a8a6da5/caddy/logo.png) # What is Caddy? @@ -105,21 +115,25 @@ $ curl http://localhost/ hello world ``` -To override the default [`Caddyfile`](https://github.com/caddyserver/dist/blob/master/config/Caddyfile), you can mount a new one at `/etc/caddy/Caddyfile`: +To override the default [`Caddyfile`](https://github.com/caddyserver/dist/blob/master/config/Caddyfile), you can create one in the subfolder `conf` at `$PWD/conf/Caddyfile` and mount this folder at `/etc/caddy`: ```console $ docker run -d -p 80:80 \ - -v $PWD/Caddyfile:/etc/caddy/Caddyfile \ + -v $PWD/conf:/etc/caddy \ -v caddy_data:/data \ caddy ``` +#### ⚠️ Do not mount the Caddyfile directly at `/etc/caddy/Caddyfile` + +If vim or another editor is used that changes the inode of the edited file, the changes will only be applied within the container when the container is recreated, which is explained in detail in this [Medium article](https://medium.com/@jonsbun/why-need-to-be-careful-when-mounting-single-files-into-a-docker-container-4f929340834). When using such an editor, Caddy's graceful reload functionality might not work as expected, as described in [this issue](https://github.com/caddyserver/caddy/issues/5735#issuecomment-1675896585). + ### Automatic TLS with the Caddy image The default `Caddyfile` only listens to port `80`, and does not set up automatic TLS. However, if you have a domain name for your site, and its A/AAAA DNS records are properly pointed to this machine's public IP, then you can use this command to simply serve a site over HTTPS: ```console -$ docker run -d -p 80:80 -p 443:443 -p 443:443/udp \ +$ docker run -d --cap-add=NET_ADMIN -p 80:80 -p 443:443 -p 443:443/udp \ -v /site:/srv \ -v caddy_data:/data \ -v caddy_config:/config \ @@ -160,7 +174,7 @@ FROM caddy: COPY --from=builder /usr/bin/caddy /usr/bin/caddy ``` -Note the second `FROM` instruction - this produces a much smaller image by simply overlaying the newly-built binary on top of the the regular `caddy` image. +Note the second `FROM` instruction - this produces a much smaller image by simply overlaying the newly-built binary on top of the regular `caddy` image. The [`xcaddy`](https://caddyserver.com/docs/build#xcaddy) tool is used to [build a new Caddy entrypoint](https://github.com/caddyserver/caddy/blob/4217217badf220d7d2c25f43f955fdc8454f2c64/cmd/caddy/main.go#L15..L25), with the provided modules. You can specify just a module name, or a name with a version (separated by `@`). You can also specify a specific version (can be a version tag or commit hash) of Caddy to build from. Read more about [`xcaddy` usage](https://github.com/caddyserver/xcaddy#command-usage). @@ -179,34 +193,41 @@ $ caddy_container_id=$(docker ps | grep caddy | awk '{print $1;}') $ docker exec -w /etc/caddy $caddy_container_id caddy reload ``` +### Linux capabilities + +Caddy ships with HTTP/3 support enabled by default. To improve the performance of this UDP based protocol, the underlying quic-go library tries to increase the buffer sizes for its socket. The `NET_ADMIN` capability allows it to override the low default limits of the operating system without having to change kernel parameters via sysctl. + +Giving the container this capability is optional and has potential, though unlikely, to have [security implications](https://unix.stackexchange.com/a/508816). + +See https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes for more details. + ### Docker Compose example -If you prefer to use `docker-compoose` to run your stack, here's a sample service definition. +If you prefer to use `docker compose` to run your stack, here's a sample service definition which goes in a file named `compose.yaml`. The configuration assumes you put a custom Caddyfile into `$PWD/conf` as described [above](#basic-usage). ```yaml -version: "3.7" - services: caddy: image: caddy: restart: unless-stopped + cap_add: + - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - - $PWD/Caddyfile:/etc/caddy/Caddyfile + - $PWD/conf:/etc/caddy - $PWD/site:/srv - caddy_data:/data - caddy_config:/config volumes: caddy_data: - external: true caddy_config: ``` -Defining the data volume as [`external`](https://docs.docker.com/compose/compose-file/compose-file-v3/#external) makes sure `docker-compose down` does not delete the volume. You may need to create it manually using `docker volume create [project-name]_caddy_data`. +Graceful reloads can then be conducted via `docker compose exec -w /etc/caddy caddy caddy reload`. # Image Variants @@ -226,12 +247,11 @@ To minimize image size, it's uncommon for additional related tools (such as `git ## `caddy:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/caddy/content.md b/caddy/content.md index 9762a34459c7..e38e50c87b7f 100644 --- a/caddy/content.md +++ b/caddy/content.md @@ -35,21 +35,25 @@ $ curl http://localhost/ hello world ``` -To override the default [`Caddyfile`](https://github.com/caddyserver/dist/blob/master/config/Caddyfile), you can mount a new one at `/etc/caddy/Caddyfile`: +To override the default [`Caddyfile`](https://github.com/caddyserver/dist/blob/master/config/Caddyfile), you can create one in the subfolder `conf` at `$PWD/conf/Caddyfile` and mount this folder at `/etc/caddy`: ```console $ docker run -d -p 80:80 \ - -v $PWD/Caddyfile:/etc/caddy/Caddyfile \ + -v $PWD/conf:/etc/caddy \ -v caddy_data:/data \ %%IMAGE%% ``` +#### ⚠️ Do not mount the Caddyfile directly at `/etc/caddy/Caddyfile` + +If vim or another editor is used that changes the inode of the edited file, the changes will only be applied within the container when the container is recreated, which is explained in detail in this [Medium article](https://medium.com/@jonsbun/why-need-to-be-careful-when-mounting-single-files-into-a-docker-container-4f929340834). When using such an editor, Caddy's graceful reload functionality might not work as expected, as described in [this issue](https://github.com/caddyserver/caddy/issues/5735#issuecomment-1675896585). + ### Automatic TLS with the Caddy image The default `Caddyfile` only listens to port `80`, and does not set up automatic TLS. However, if you have a domain name for your site, and its A/AAAA DNS records are properly pointed to this machine's public IP, then you can use this command to simply serve a site over HTTPS: ```console -$ docker run -d -p 80:80 -p 443:443 -p 443:443/udp \ +$ docker run -d --cap-add=NET_ADMIN -p 80:80 -p 443:443 -p 443:443/udp \ -v /site:/srv \ -v caddy_data:/data \ -v caddy_config:/config \ @@ -90,7 +94,7 @@ FROM %%IMAGE%%: COPY --from=builder /usr/bin/caddy /usr/bin/caddy ``` -Note the second `FROM` instruction - this produces a much smaller image by simply overlaying the newly-built binary on top of the the regular `%%IMAGE%%` image. +Note the second `FROM` instruction - this produces a much smaller image by simply overlaying the newly-built binary on top of the regular `%%IMAGE%%` image. The [`xcaddy`](https://caddyserver.com/docs/build#xcaddy) tool is used to [build a new Caddy entrypoint](https://github.com/caddyserver/caddy/blob/4217217badf220d7d2c25f43f955fdc8454f2c64/cmd/caddy/main.go#L15..L25), with the provided modules. You can specify just a module name, or a name with a version (separated by `@`). You can also specify a specific version (can be a version tag or commit hash) of Caddy to build from. Read more about [`xcaddy` usage](https://github.com/caddyserver/xcaddy#command-usage). @@ -109,31 +113,38 @@ $ caddy_container_id=$(docker ps | grep caddy | awk '{print $1;}') $ docker exec -w /etc/caddy $caddy_container_id caddy reload ``` +### Linux capabilities + +Caddy ships with HTTP/3 support enabled by default. To improve the performance of this UDP based protocol, the underlying quic-go library tries to increase the buffer sizes for its socket. The `NET_ADMIN` capability allows it to override the low default limits of the operating system without having to change kernel parameters via sysctl. + +Giving the container this capability is optional and has potential, though unlikely, to have [security implications](https://unix.stackexchange.com/a/508816). + +See https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes for more details. + ### Docker Compose example -If you prefer to use `docker-compoose` to run your stack, here's a sample service definition. +If you prefer to use `docker compose` to run your stack, here's a sample service definition which goes in a file named `compose.yaml`. The configuration assumes you put a custom Caddyfile into `$PWD/conf` as described [above](#basic-usage). ```yaml -version: "3.7" - services: caddy: image: %%IMAGE%%: restart: unless-stopped + cap_add: + - NET_ADMIN ports: - "80:80" - "443:443" - "443:443/udp" volumes: - - $PWD/Caddyfile:/etc/caddy/Caddyfile + - $PWD/conf:/etc/caddy - $PWD/site:/srv - caddy_data:/data - caddy_config:/config volumes: caddy_data: - external: true caddy_config: ``` -Defining the data volume as [`external`](https://docs.docker.com/compose/compose-file/compose-file-v3/#external) makes sure `docker-compose down` does not delete the volume. You may need to create it manually using `docker volume create [project-name]_caddy_data`. +Graceful reloads can then be conducted via `docker compose exec -w /etc/caddy caddy caddy reload`. diff --git a/caddy/logo-120.png b/caddy/logo-120.png index 65b52e47ad07..1969168868a6 100644 Binary files a/caddy/logo-120.png and b/caddy/logo-120.png differ diff --git a/caddy/logo.png b/caddy/logo.png index ddbf493ce77e..946e28992c91 100644 Binary files a/caddy/logo.png and b/caddy/logo.png differ diff --git a/caddy/metadata.json b/caddy/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/caddy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/cassandra/README.md b/cassandra/README.md index 61211ed6d1bd..ec60e43f9bf3 100644 --- a/cassandra/README.md +++ b/cassandra/README.md @@ -24,15 +24,20 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`4.1.0`, `4.1`, `4`, `latest`](https://github.com/docker-library/cassandra/blob/835052698f299c06e09ed49c972d6ab7bd2ef223/4.1/Dockerfile) -- [`4.0.7`, `4.0`](https://github.com/docker-library/cassandra/blob/08fa5553ad2dde684ca5337c7fedd173cbc41f39/4.0/Dockerfile) -- [`3.11.14`, `3.11`, `3`](https://github.com/docker-library/cassandra/blob/13e3d6ca1ff1b6c9d780e5f018887c1d28318d50/3.11/Dockerfile) -- [`3.0.28`, `3.0`](https://github.com/docker-library/cassandra/blob/e92196fdba778656678a9bc9bcb724b8a3584149/3.0/Dockerfile) +- [`5.0.6`, `5.0`, `5`, `latest`, `5.0.6-jammy`, `5.0-jammy`, `5-jammy`, `jammy`](https://github.com/docker-library/cassandra/blob/6d75217eb8c69b8d9dd94766b781d829a56fbd2d/5.0/Dockerfile) + +- [`4.1.10`, `4.1`, `4`, `4.1.10-jammy`, `4.1-jammy`, `4-jammy`](https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/4.1/Dockerfile) + +- [`4.0.19`, `4.0`, `4.0.19-jammy`, `4.0-jammy`](https://github.com/docker-library/cassandra/blob/23531063a5aefaa47cbd5166c7d02ae75c44c262/4.0/Dockerfile) + +- [`3.11.19`, `3.11`, `3`, `3.11.19-jammy`, `3.11-jammy`, `3-jammy`](https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/3.11/Dockerfile) + +- [`3.0.32`, `3.0`, `3.0.32-jammy`, `3.0-jammy`](https://github.com/docker-library/cassandra/blob/793ea6b2a8097d629252fe77585775443b53e4c3/3.0/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/cassandra/issues](https://github.com/docker-library/cassandra/issues) + [https://github.com/docker-library/cassandra/issues](https://github.com/docker-library/cassandra/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/cassandra/), [`arm32v7`](https://hub.docker.com/r/arm32v7/cassandra/), [`arm64v8`](https://hub.docker.com/r/arm64v8/cassandra/), [`ppc64le`](https://hub.docker.com/r/ppc64le/cassandra/), [`s390x`](https://hub.docker.com/r/s390x/cassandra/) @@ -130,7 +135,7 @@ There are a small number of environment variables supported by the image which w - `CASSANDRA_START_RPC`: This variable is for controlling if the thrift rpc server is started. It will set the [`start_rpc`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__start_rpc) option in `cassandra.yaml`. -- `CASSANDRA_SEEDS`: This variable is the comma-separated list of IP addresses used by gossip for bootstrapping new nodes joining a cluster. It will set the `seeds` value of the [`seed_provider`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__seed_provider) option in `cassandra.yaml`. The `CASSANDRA_BROADCAST_ADDRESS` will be added the the seeds passed in so that the server will talk to itself as well. +- `CASSANDRA_SEEDS`: This variable is the comma-separated list of IP addresses used by gossip for bootstrapping new nodes joining a cluster. It will set the `seeds` value of the [`seed_provider`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__seed_provider) option in `cassandra.yaml`. The `CASSANDRA_BROADCAST_ADDRESS` will be added the seeds passed in so that the server will talk to itself as well. - `CASSANDRA_CLUSTER_NAME`: This variable sets the name of the cluster and must be the same for all nodes in the cluster. It will set the [`cluster_name`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__cluster_name) option of `cassandra.yaml`. @@ -148,8 +153,8 @@ There are a small number of environment variables supported by the image which w Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `cassandra` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -164,7 +169,7 @@ The `-v /my/own/datadir:/var/lib/cassandra` part of the command mounts the `/my/ ## No connections until Cassandra init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as Docker Compose, which start several containers simultaneously. # License diff --git a/cassandra/content.md b/cassandra/content.md index cab3d2bcd26c..b2988a75012d 100644 --- a/cassandra/content.md +++ b/cassandra/content.md @@ -80,7 +80,7 @@ There are a small number of environment variables supported by the image which w - `CASSANDRA_START_RPC`: This variable is for controlling if the thrift rpc server is started. It will set the [`start_rpc`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__start_rpc) option in `cassandra.yaml`. -- `CASSANDRA_SEEDS`: This variable is the comma-separated list of IP addresses used by gossip for bootstrapping new nodes joining a cluster. It will set the `seeds` value of the [`seed_provider`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__seed_provider) option in `cassandra.yaml`. The `CASSANDRA_BROADCAST_ADDRESS` will be added the the seeds passed in so that the server will talk to itself as well. +- `CASSANDRA_SEEDS`: This variable is the comma-separated list of IP addresses used by gossip for bootstrapping new nodes joining a cluster. It will set the `seeds` value of the [`seed_provider`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__seed_provider) option in `cassandra.yaml`. The `CASSANDRA_BROADCAST_ADDRESS` will be added the seeds passed in so that the server will talk to itself as well. - `CASSANDRA_CLUSTER_NAME`: This variable sets the name of the cluster and must be the same for all nodes in the cluster. It will set the [`cluster_name`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__cluster_name) option of `cassandra.yaml`. @@ -98,8 +98,8 @@ There are a small number of environment variables supported by the image which w Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -114,4 +114,4 @@ The `-v /my/own/datadir:/var/lib/cassandra` part of the command mounts the `/my/ ## No connections until Cassandra init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as Docker Compose, which start several containers simultaneously. diff --git a/cassandra/metadata.json b/cassandra/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/cassandra/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/centos/README-short.txt b/centos/README-short.txt deleted file mode 100644 index 8783972e1d40..000000000000 --- a/centos/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -DEPRECATED; The official build of CentOS. diff --git a/centos/README.md b/centos/README.md deleted file mode 100644 index 495133cefec6..000000000000 --- a/centos/README.md +++ /dev/null @@ -1,169 +0,0 @@ - - -# **DEPRECATION NOTICE** - -This image is no longer supported/maintained (non-EOL tags last updated November 16, 2020, [docker-library/official-images#9102](https://github.com/docker-library/official-images/pull/9102); see also https://www.centos.org/centos-linux-eol/ and [docker-library/docs#2205](https://github.com/docker-library/docs/pull/2205)). Please adjust your usage accordingly. - -# Quick reference - -- **Maintained by**: - [The CentOS Project](https://github.com/CentOS/sig-cloud-instance-images) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -- [`centos7`, `7`, `centos7.9.2009`, `7.9.2009`](https://github.com/CentOS/sig-cloud-instance-images/blob/b2d195220e1c5b181427c3172829c23ab9cd27eb/docker/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://bugs.centos.org](https://bugs.centos.org) or [GitHub](https://github.com/CentOS/sig-cloud-instance-images/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/centos/), [`arm32v7`](https://hub.docker.com/r/arm32v7/centos/), [`arm64v8`](https://hub.docker.com/r/arm64v8/centos/), [`i386`](https://hub.docker.com/r/i386/centos/), [`ppc64le`](https://hub.docker.com/r/ppc64le/centos/) - -- **Published image artifact details**: - [repo-info repo's `repos/centos/` directory](https://github.com/docker-library/repo-info/blob/master/repos/centos) ([history](https://github.com/docker-library/repo-info/commits/master/repos/centos)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/centos` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcentos) - [official-images repo's `library/centos` file](https://github.com/docker-library/official-images/blob/master/library/centos) ([history](https://github.com/docker-library/official-images/commits/master/library/centos)) - -- **Source of this description**: - [docs repo's `centos/` directory](https://github.com/docker-library/docs/tree/master/centos) ([history](https://github.com/docker-library/docs/commits/master/centos)) - -# CentOS - -CentOS Linux is a community-supported distribution derived from sources freely provided to the public by [Red Hat](ftp://ftp.redhat.com/pub/redhat/linux/enterprise/) for Red Hat Enterprise Linux (RHEL). As such, CentOS Linux aims to be functionally compatible with RHEL. The CentOS Project mainly changes packages to remove upstream vendor branding and artwork. CentOS Linux is no-cost and free to redistribute. Each CentOS Linux version is maintained for up to 10 years (by means of security updates -- the duration of the support interval by Red Hat has varied over time with respect to Sources released). A new CentOS Linux version is released approximately every 2 years and each CentOS Linux version is periodically updated (roughly every 6 months) to support newer hardware. This results in a secure, low-maintenance, reliable, predictable, and reproducible Linux environment. - -> [wiki.centos.org](https://wiki.centos.org/FrontPage) - -![logo](https://raw.githubusercontent.com/docker-library/docs/c4df0024e2cad985326dc38f6b6ce39abeab59c5/centos/logo.png) - -# CentOS image documentation - -The `centos:latest` tag is always the most recent version currently available. - -## Rolling builds - -The CentOS Project offers regularly updated images for all active releases. These images will be updated monthly or as needed for emergency fixes. These rolling updates are tagged with the major version number only. For example: `docker pull centos:6` or `docker pull centos:7` - -## Minor tags - -Additionally, images with minor version tags that correspond to install media are also offered. **These images DO NOT receive updates** as they are intended to match installation iso contents. If you choose to use these images it is highly recommended that you include `RUN yum -y update && yum clean all` in your Dockerfile, or otherwise address any potential security concerns. To use these images, please specify the minor version tag: - -For example: `docker pull centos:5.11` or `docker pull centos:6.6` - -## Overlayfs and yum - -Recent Docker versions support the [overlayfs](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/) backend, which is enabled by default on most distros supporting it from Docker 1.13 onwards. On Centos 6 and 7, **that backend requires yum-plugin-ovl to be installed and enabled**; while it is installed by default in recent centos images, make it sure you retain the `plugins=1` option in `/etc/yum.conf` if you update that file; otherwise, you may encounter errors related to rpmdb checksum failure - see [Docker ticket 10180](https://github.com/docker/docker/issues/10180) for more details. - -# Package documentation - -By default, the CentOS containers are built using yum's `nodocs` option, which helps reduce the size of the image. If you install a package and discover files missing, please comment out the line `tsflags=nodocs` in `/etc/yum.conf` and reinstall your package. - -# Systemd integration - -Systemd is now included in both the centos:7 and centos:latest base containers, but it is not active by default. In order to use systemd, you will need to include text similar to the example Dockerfile below: - -## Dockerfile for systemd base image - -```dockerfile -FROM centos:7 -ENV container docker -RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ -systemd-tmpfiles-setup.service ] || rm -f $i; done); \ -rm -f /lib/systemd/system/multi-user.target.wants/*;\ -rm -f /etc/systemd/system/*.wants/*;\ -rm -f /lib/systemd/system/local-fs.target.wants/*; \ -rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ -rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ -rm -f /lib/systemd/system/basic.target.wants/*;\ -rm -f /lib/systemd/system/anaconda.target.wants/*; -VOLUME [ "/sys/fs/cgroup" ] -CMD ["/usr/sbin/init"] -``` - -This Dockerfile deletes a number of unit files which might cause issues. From here, you are ready to build your base image. - -```console -$ docker build --rm -t local/c7-systemd . -``` - -## Example systemd enabled app container - -In order to use the systemd enabled base container created above, you will need to create your `Dockerfile` similar to the one below. - -```dockerfile -FROM local/c7-systemd -RUN yum -y install httpd; yum clean all; systemctl enable httpd.service -EXPOSE 80 -CMD ["/usr/sbin/init"] -``` - -Build this image: - -```console -$ docker build --rm -t local/c7-systemd-httpd . -``` - -## Running a systemd enabled app container - -In order to run a container with systemd, you will need to mount the cgroups volumes from the host. Below is an example command that will run the systemd enabled httpd container created earlier. - -```console -$ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd -``` - -This container is running with systemd in a limited context, with the cgroups filesystem mounted. There have been reports that if you're using an Ubuntu host, you will need to add `-v /tmp/$(mktemp -d):/run` in addition to the cgroups mount. - -## A note about vsyscall - -CentOS 6 binaries and/or libraries are built to expect some system calls to be accessed via `vsyscall` mappings. Some linux distributions have opted to disable `vsyscall` entirely (opting exclusively for more secure `vdso` mappings), causing segmentation faults. - -If running `docker run --rm -it centos:centos6.7 bash` immediately exits with status code `139`, check to see if your system has disabled vsyscall: - -```console -$ cat /proc/self/maps | egrep 'vdso|vsyscall' -7fffccfcc000-7fffccfce000 r-xp 00000000 00:00 0 [vdso] -$ -``` - -vs - -```console -$ cat /proc/self/maps | egrep 'vdso|vsyscall' -7fffe03fe000-7fffe0400000 r-xp 00000000 00:00 0 [vdso] -ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] -``` - -If you do not see a `vsyscall` mapping, and you need to run a CentOS 6 container, try adding `vsyscall=emulated` to the kernel options in your bootloader - -Further reading : [lwn.net](https://lwn.net/Articles/446528/) - -# License - -View [license information](https://www.centos.org/legal/) for the software contained in this image. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `centos/` directory](https://github.com/docker-library/repo-info/tree/master/repos/centos). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/centos/content.md b/centos/content.md deleted file mode 100644 index 2ad2c140ca54..000000000000 --- a/centos/content.md +++ /dev/null @@ -1,108 +0,0 @@ -# CentOS - -CentOS Linux is a community-supported distribution derived from sources freely provided to the public by [Red Hat](ftp://ftp.redhat.com/pub/redhat/linux/enterprise/) for Red Hat Enterprise Linux (RHEL). As such, CentOS Linux aims to be functionally compatible with RHEL. The CentOS Project mainly changes packages to remove upstream vendor branding and artwork. CentOS Linux is no-cost and free to redistribute. Each CentOS Linux version is maintained for up to 10 years (by means of security updates -- the duration of the support interval by Red Hat has varied over time with respect to Sources released). A new CentOS Linux version is released approximately every 2 years and each CentOS Linux version is periodically updated (roughly every 6 months) to support newer hardware. This results in a secure, low-maintenance, reliable, predictable, and reproducible Linux environment. - -> [wiki.centos.org](https://wiki.centos.org/FrontPage) - -%%LOGO%% - -# CentOS image documentation - -The `%%IMAGE%%:latest` tag is always the most recent version currently available. - -## Rolling builds - -The CentOS Project offers regularly updated images for all active releases. These images will be updated monthly or as needed for emergency fixes. These rolling updates are tagged with the major version number only. For example: `docker pull %%IMAGE%%:6` or `docker pull %%IMAGE%%:7` - -## Minor tags - -Additionally, images with minor version tags that correspond to install media are also offered. **These images DO NOT receive updates** as they are intended to match installation iso contents. If you choose to use these images it is highly recommended that you include `RUN yum -y update && yum clean all` in your Dockerfile, or otherwise address any potential security concerns. To use these images, please specify the minor version tag: - -For example: `docker pull %%IMAGE%%:5.11` or `docker pull %%IMAGE%%:6.6` - -## Overlayfs and yum - -Recent Docker versions support the [overlayfs](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/) backend, which is enabled by default on most distros supporting it from Docker 1.13 onwards. On Centos 6 and 7, **that backend requires yum-plugin-ovl to be installed and enabled**; while it is installed by default in recent %%IMAGE%% images, make it sure you retain the `plugins=1` option in `/etc/yum.conf` if you update that file; otherwise, you may encounter errors related to rpmdb checksum failure - see [Docker ticket 10180](https://github.com/docker/docker/issues/10180) for more details. - -# Package documentation - -By default, the CentOS containers are built using yum's `nodocs` option, which helps reduce the size of the image. If you install a package and discover files missing, please comment out the line `tsflags=nodocs` in `/etc/yum.conf` and reinstall your package. - -# Systemd integration - -Systemd is now included in both the %%IMAGE%%:7 and %%IMAGE%%:latest base containers, but it is not active by default. In order to use systemd, you will need to include text similar to the example Dockerfile below: - -## Dockerfile for systemd base image - -```dockerfile -FROM %%IMAGE%%:7 -ENV container docker -RUN (cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == \ -systemd-tmpfiles-setup.service ] || rm -f $i; done); \ -rm -f /lib/systemd/system/multi-user.target.wants/*;\ -rm -f /etc/systemd/system/*.wants/*;\ -rm -f /lib/systemd/system/local-fs.target.wants/*; \ -rm -f /lib/systemd/system/sockets.target.wants/*udev*; \ -rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \ -rm -f /lib/systemd/system/basic.target.wants/*;\ -rm -f /lib/systemd/system/anaconda.target.wants/*; -VOLUME [ "/sys/fs/cgroup" ] -CMD ["/usr/sbin/init"] -``` - -This Dockerfile deletes a number of unit files which might cause issues. From here, you are ready to build your base image. - -```console -$ docker build --rm -t local/c7-systemd . -``` - -## Example systemd enabled app container - -In order to use the systemd enabled base container created above, you will need to create your `Dockerfile` similar to the one below. - -```dockerfile -FROM local/c7-systemd -RUN yum -y install httpd; yum clean all; systemctl enable httpd.service -EXPOSE 80 -CMD ["/usr/sbin/init"] -``` - -Build this image: - -```console -$ docker build --rm -t local/c7-systemd-httpd . -``` - -## Running a systemd enabled app container - -In order to run a container with systemd, you will need to mount the cgroups volumes from the host. Below is an example command that will run the systemd enabled httpd container created earlier. - -```console -$ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/c7-systemd-httpd -``` - -This container is running with systemd in a limited context, with the cgroups filesystem mounted. There have been reports that if you're using an Ubuntu host, you will need to add `-v /tmp/$(mktemp -d):/run` in addition to the cgroups mount. - -## A note about vsyscall - -CentOS 6 binaries and/or libraries are built to expect some system calls to be accessed via `vsyscall` mappings. Some linux distributions have opted to disable `vsyscall` entirely (opting exclusively for more secure `vdso` mappings), causing segmentation faults. - -If running `docker run --rm -it centos:centos6.7 bash` immediately exits with status code `139`, check to see if your system has disabled vsyscall: - -```console -$ cat /proc/self/maps | egrep 'vdso|vsyscall' -7fffccfcc000-7fffccfce000 r-xp 00000000 00:00 0 [vdso] -$ -``` - -vs - -```console -$ cat /proc/self/maps | egrep 'vdso|vsyscall' -7fffe03fe000-7fffe0400000 r-xp 00000000 00:00 0 [vdso] -ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0 [vsyscall] -``` - -If you do not see a `vsyscall` mapping, and you need to run a CentOS 6 container, try adding `vsyscall=emulated` to the kernel options in your bootloader - -Further reading : [lwn.net](https://lwn.net/Articles/446528/) diff --git a/centos/deprecated.md b/centos/deprecated.md deleted file mode 100644 index 0d421de8a845..000000000000 --- a/centos/deprecated.md +++ /dev/null @@ -1 +0,0 @@ -This image is no longer supported/maintained (non-EOL tags last updated November 16, 2020, [docker-library/official-images#9102](https://github.com/docker-library/official-images/pull/9102); see also https://www.centos.org/centos-linux-eol/ and [docker-library/docs#2205](https://github.com/docker-library/docs/pull/2205)). Please adjust your usage accordingly. diff --git a/centos/github-repo b/centos/github-repo deleted file mode 100644 index 6fdc93e0b6d6..000000000000 --- a/centos/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/CentOS/sig-cloud-instance-images diff --git a/centos/issues.md b/centos/issues.md deleted file mode 100644 index e1323c7c9c1a..000000000000 --- a/centos/issues.md +++ /dev/null @@ -1 +0,0 @@ -[https://bugs.centos.org](https://bugs.centos.org) or [GitHub](%%GITHUB-REPO%%/issues) diff --git a/centos/license.md b/centos/license.md deleted file mode 100644 index 6ae999d589b7..000000000000 --- a/centos/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://www.centos.org/legal/) for the software contained in this image. diff --git a/centos/logo.png b/centos/logo.png deleted file mode 100644 index c74856787c3e..000000000000 Binary files a/centos/logo.png and /dev/null differ diff --git a/centos/maintainer.md b/centos/maintainer.md deleted file mode 100644 index 06be7cefd089..000000000000 --- a/centos/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[The CentOS Project](%%GITHUB-REPO%%) diff --git a/chronograf/README.md b/chronograf/README.md index 3aa0f2958b9e..188e0e3ce17f 100644 --- a/chronograf/README.md +++ b/chronograf/README.md @@ -24,19 +24,26 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.7`, `1.7.17`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.7/Dockerfile) -- [`1.7-alpine`, `1.7.17-alpine`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.7/alpine/Dockerfile) -- [`1.8`, `1.8.10`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.8/Dockerfile) -- [`1.8-alpine`, `1.8.10-alpine`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.8/alpine/Dockerfile) -- [`1.9`, `1.9.4`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.9/Dockerfile) -- [`1.9-alpine`, `1.9.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.9/alpine/Dockerfile) -- [`1.10`, `1.10.0`, `latest`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.10/Dockerfile) -- [`1.10-alpine`, `1.10.0-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/b827ab25d730659b98439d1c0cbfb17baf60b468/chronograf/1.10/alpine/Dockerfile) +- [`1.7`, `1.7.17`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.7/Dockerfile) + +- [`1.7-alpine`, `1.7.17-alpine`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.7/alpine/Dockerfile) + +- [`1.8`, `1.8.10`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.8/Dockerfile) + +- [`1.8-alpine`, `1.8.10-alpine`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.8/alpine/Dockerfile) + +- [`1.9`, `1.9.4`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.9/Dockerfile) + +- [`1.9-alpine`, `1.9.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.9/alpine/Dockerfile) + +- [`1.10`, `1.10.8`, `latest`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.10/Dockerfile) + +- [`1.10-alpine`, `1.10.8-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/1bf4846c3b7df2b7fc4369af5989442ec3d5b899/chronograf/1.10/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues) + [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/chronograf/), [`arm32v7`](https://hub.docker.com/r/arm32v7/chronograf/), [`arm64v8`](https://hub.docker.com/r/arm64v8/chronograf/) @@ -54,7 +61,7 @@ WARNING: # Chronograf -Chronograf is InfluxData’s open source web application. Use Chronograf with the other components of the [TICK](https://www.influxdata.com/products/) stack for infrastructure monitoring, alert management, data visualization, and database management. +Chronograf is InfluxData's open source web application. Use Chronograf with the other components of the [TICK](https://www.influxdata.com/products/) stack for infrastructure monitoring, alert management, data visualization, and database management. ![logo](https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/chronograf/logo.png) @@ -114,6 +121,10 @@ $ docker run -p 8888:8888 \ Try combining this with Telegraf to get dashboards for your infrastructure within minutes! +#### Running as root + +Starting in v1.10.5, Chronograf no longer run as the root user by default. If a user wants to revert this change they can set `CHRONOGRAF_AS_ROOT=true` as an environment variable. + ## Official Documentation See the [official docs](https://docs.influxdata.com/chronograf/latest/) for information on creating visualizations. diff --git a/chronograf/content.md b/chronograf/content.md index 765e2397d62c..76f74ec063be 100644 --- a/chronograf/content.md +++ b/chronograf/content.md @@ -1,6 +1,6 @@ # Chronograf -Chronograf is InfluxData’s open source web application. Use Chronograf with the other components of the [TICK](https://www.influxdata.com/products/) stack for infrastructure monitoring, alert management, data visualization, and database management. +Chronograf is InfluxData's open source web application. Use Chronograf with the other components of the [TICK](https://www.influxdata.com/products/) stack for infrastructure monitoring, alert management, data visualization, and database management. %%LOGO%% @@ -60,6 +60,10 @@ $ docker run -p 8888:8888 \ Try combining this with Telegraf to get dashboards for your infrastructure within minutes! +#### Running as root + +Starting in v1.10.5, Chronograf no longer run as the root user by default. If a user wants to revert this change they can set `CHRONOGRAF_AS_ROOT=true` as an environment variable. + ## Official Documentation See the [official docs](https://docs.influxdata.com/chronograf/latest/) for information on creating visualizations. diff --git a/chronograf/metadata.json b/chronograf/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/chronograf/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/cirros/README.md b/cirros/README.md index 45fc1814604d..d76fa882bfef 100644 --- a/cirros/README.md +++ b/cirros/README.md @@ -24,15 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`0.6.1`, `0.6`, `0`, `latest`](https://github.com/tianon/docker-brew-cirros/blob/84bfc9d0e4cc631d043410d602bf5f8876ed6575/arches/amd64/Dockerfile) +- [`0.6.3`, `0.6`, `0`, `latest`](https://github.com/tianon/docker-brew-cirros/blob/1821a0ca9eaf82280a2e953df56e88ab50178628/arches/amd64/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/tianon/docker-brew-cirros/issues](https://github.com/tianon/docker-brew-cirros/issues) + [https://github.com/tianon/docker-brew-cirros/issues](https://github.com/tianon/docker-brew-cirros/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/cirros/), [`arm32v5`](https://hub.docker.com/r/arm32v5/cirros/), [`arm64v8`](https://hub.docker.com/r/arm64v8/cirros/), [`ppc64le`](https://hub.docker.com/r/ppc64le/cirros/) + [`amd64`](https://hub.docker.com/r/amd64/cirros/), [`arm32v7`](https://hub.docker.com/r/arm32v7/cirros/), [`arm64v8`](https://hub.docker.com/r/arm64v8/cirros/), [`ppc64le`](https://hub.docker.com/r/ppc64le/cirros/) - **Published image artifact details**: [repo-info repo's `repos/cirros/` directory](https://github.com/docker-library/repo-info/blob/master/repos/cirros) ([history](https://github.com/docker-library/repo-info/commits/master/repos/cirros)) diff --git a/cirros/metadata.json b/cirros/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/cirros/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/clearlinux/README-short.txt b/clearlinux/README-short.txt index 763108325200..5e3f43002615 100644 --- a/clearlinux/README-short.txt +++ b/clearlinux/README-short.txt @@ -1 +1 @@ -Official docker build of Clear Linux OS for Intel Architecture +DEPRECATED; Official docker build of Clear Linux OS for Intel Architecture diff --git a/clearlinux/README.md b/clearlinux/README.md index 8c6e97fb3f8d..fdd5b863d195 100644 --- a/clearlinux/README.md +++ b/clearlinux/README.md @@ -14,6 +14,12 @@ WARNING: --> +# **DEPRECATION NOTICE** + +https://community.clearlinux.org/t/all-good-things-come-to-an-end-shutting-down-clear-linux-os/10716 + +> Effective immediately [2025-07-18], Intel will no longer provide security patches, updates, or maintenance for Clear Linux OS, and the Clear Linux OS GitHub repository will be archived in read-only mode. So, if you’re currently using Clear Linux OS, we strongly recommend planning your migration to another actively maintained Linux distribution as soon as possible to ensure ongoing security and stability. + # Quick reference - **Maintained by**: @@ -24,12 +30,12 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`, `base`](https://github.com/clearlinux/docker-brew-clearlinux/blob/cf0b677798f83a0d241f6c3c32e8a6e96e008049/Dockerfile) +- [`latest`, `base`](https://github.com/clearlinux/docker-brew-clearlinux/blob/03e2dcd390233733b398e72ce2382e54b5ef48a4/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/clearlinux/docker-brew-clearlinux/issues](https://github.com/clearlinux/docker-brew-clearlinux/issues) + [https://github.com/clearlinux/docker-brew-clearlinux/issues](https://github.com/clearlinux/docker-brew-clearlinux/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/clearlinux/) diff --git a/clearlinux/deprecated.md b/clearlinux/deprecated.md new file mode 100644 index 000000000000..ffc509c4ebec --- /dev/null +++ b/clearlinux/deprecated.md @@ -0,0 +1,3 @@ +https://community.clearlinux.org/t/all-good-things-come-to-an-end-shutting-down-clear-linux-os/10716 + +> Effective immediately [2025-07-18], Intel will no longer provide security patches, updates, or maintenance for Clear Linux OS, and the Clear Linux OS GitHub repository will be archived in read-only mode. So, if you’re currently using Clear Linux OS, we strongly recommend planning your migration to another actively maintained Linux distribution as soon as possible to ensure ongoing security and stability. diff --git a/clearlinux/metadata.json b/clearlinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/clearlinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/clefos/README-short.txt b/clefos/README-short.txt index 373b8d583546..0442de3b60ac 100644 --- a/clefos/README-short.txt +++ b/clefos/README-short.txt @@ -1 +1 @@ -The official build of ClefOS. +DEPRECATED; The official build of ClefOS. diff --git a/clefos/README.md b/clefos/README.md index de51147b6539..234ff01d241b 100644 --- a/clefos/README.md +++ b/clefos/README.md @@ -14,6 +14,10 @@ WARNING: --> +# **DEPRECATION NOTICE** + +With [the EOL of CentOS 7 (June 30, 2024)](https://www.redhat.com/en/topics/linux/centos-linux-eol), this image/project is [officially deprecated](https://github.com/docker-library/official-images/pull/7964#issuecomment-2253636315). Please adjust your usage accordingly. + # Quick reference - **Maintained by**: @@ -24,7 +28,7 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7`, `7.7.1908`, `latest`](https://github.com/nealef/clefos/blob/1aa7d3771b2ced8b8b5cdc9a1a1752d93c56a60e/Dockerfile) +**No supported tags** # Quick reference (cont.) @@ -32,7 +36,7 @@ WARNING: [GitHub](https://github.com/nealef/clefos/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`s390x`](https://hub.docker.com/r/s390x/clefos/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/clefos/` directory](https://github.com/docker-library/repo-info/blob/master/repos/clefos) ([history](https://github.com/docker-library/repo-info/commits/master/repos/clefos)) diff --git a/clefos/deprecated.md b/clefos/deprecated.md new file mode 100644 index 000000000000..c9f50b6b1c82 --- /dev/null +++ b/clefos/deprecated.md @@ -0,0 +1 @@ +With [the EOL of CentOS 7 (June 30, 2024)](https://www.redhat.com/en/topics/linux/centos-linux-eol), this image/project is [officially deprecated](https://github.com/docker-library/official-images/pull/7964#issuecomment-2253636315). Please adjust your usage accordingly. diff --git a/clefos/metadata.json b/clefos/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/clefos/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/clickhouse/README-short.txt b/clickhouse/README-short.txt new file mode 100644 index 000000000000..d4728984ee6e --- /dev/null +++ b/clickhouse/README-short.txt @@ -0,0 +1 @@ +ClickHouse is the fastest and most resource efficient OSS database for real-time apps and analytics. diff --git a/clickhouse/README.md b/clickhouse/README.md new file mode 100644 index 000000000000..accc660186b6 --- /dev/null +++ b/clickhouse/README.md @@ -0,0 +1,243 @@ + + +# Quick reference + +- **Maintained by**: + [ClickHouse Inc.](https://github.com/ClickHouse/ClickHouse) + +- **Where to get help**: + [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) + +# Supported tags and respective `Dockerfile` links + +- [`latest`, `jammy`, `25.10`, `25.10-jammy`, `25.10.2`, `25.10.2-jammy`, `25.10.2.65`, `25.10.2.65-jammy`](https://github.com/ClickHouse/docker-library/blob/2dbcfdb9cc31c10427dacd9a41484fda9dbc2426/server/25.10.2.65/Dockerfile.ubuntu) + +- [`25.9`, `25.9-jammy`, `25.9.5`, `25.9.5-jammy`, `25.9.5.21`, `25.9.5.21-jammy`](https://github.com/ClickHouse/docker-library/blob/2dbcfdb9cc31c10427dacd9a41484fda9dbc2426/server/25.9.5.21/Dockerfile.ubuntu) + +- [`lts`, `lts-jammy`, `25.8`, `25.8-jammy`, `25.8.11`, `25.8.11-jammy`, `25.8.11.66`, `25.8.11.66-jammy`](https://github.com/ClickHouse/docker-library/blob/2dbcfdb9cc31c10427dacd9a41484fda9dbc2426/server/25.8.11.66/Dockerfile.ubuntu) + +- [`25.3`, `25.3-jammy`, `25.3.8`, `25.3.8-jammy`, `25.3.8.23`, `25.3.8.23-jammy`](https://github.com/ClickHouse/docker-library/blob/2dbcfdb9cc31c10427dacd9a41484fda9dbc2426/server/25.3.8.23/Dockerfile.ubuntu) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/ClickHouse/ClickHouse/issues](https://github.com/ClickHouse/ClickHouse/issues?q=) + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/clickhouse/), [`arm64v8`](https://hub.docker.com/r/arm64v8/clickhouse/) + +- **Published image artifact details**: + [repo-info repo's `repos/clickhouse/` directory](https://github.com/docker-library/repo-info/blob/master/repos/clickhouse) ([history](https://github.com/docker-library/repo-info/commits/master/repos/clickhouse)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/clickhouse` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fclickhouse) + [official-images repo's `library/clickhouse` file](https://github.com/docker-library/official-images/blob/master/library/clickhouse) ([history](https://github.com/docker-library/official-images/commits/master/library/clickhouse)) + +- **Source of this description**: + [docs repo's `clickhouse/` directory](https://github.com/docker-library/docs/tree/master/clickhouse) ([history](https://github.com/docker-library/docs/commits/master/clickhouse)) + +# ClickHouse Server Docker Image + +## What is ClickHouse? + +![logo](https://raw.githubusercontent.com/docker-library/docs/007e3209490145a9855f4825218a9a08753d425b/clickhouse/logo.svg?sanitize=true) + +ClickHouse is an open-source column-oriented DBMS (columnar database management system) for online analytical processing (OLAP) that allows users to generate analytical reports using SQL queries in real-time. + +ClickHouse works 100-1000x faster than traditional database management systems, and processes hundreds of millions to over a billion rows and tens of gigabytes of data per server per second. With a widespread user base around the globe, the technology has received praise for its reliability, ease of use, and fault tolerance. + +For more information and documentation see https://clickhouse.com/. + +## Versions + +- The `latest` tag points to the latest release of the latest stable branch. +- Branch tags like `22.2` point to the latest release of the corresponding branch. +- Full version tags like `22.2.3` and `22.2.3.5` point to the corresponding release. + +### Compatibility + +- The amd64 image requires support for [SSE3 instructions](https://en.wikipedia.org/wiki/SSE3). Virtually all x86 CPUs after 2005 support SSE3. +- The arm64 image requires support for the [ARMv8.2-A architecture](https://en.wikipedia.org/wiki/AArch64#ARMv8.2-A) and additionally the Load-Acquire RCpc register. The register is optional in version ARMv8.2-A and mandatory in [ARMv8.3-A](https://en.wikipedia.org/wiki/AArch64#ARMv8.3-A). Supported in Graviton >=2, Azure and GCP instances. Examples for unsupported devices are Raspberry Pi 4 (ARMv8.0-A) and Jetson AGX Xavier/Orin (ARMv8.2-A). +- Since the Clickhouse 24.11 Ubuntu images started using `ubuntu:22.04` as its base image. It requires docker version >= `20.10.10` containing [patch](https://github.com/moby/moby/commit/977283509f75303bc6612665a04abf76ff1d2468). As a workaround you could use `docker run --security-opt seccomp=unconfined` instead, however that has security implications. + +## How to use this image + +### start server instance + +```bash +docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse +``` + +By default, ClickHouse will be accessible only via the Docker network. See the **networking** section below. + +By default, starting above server instance will be run as the `default` user without password. + +### connect to it from a native client + +```bash +docker run -it --rm --network=container:some-clickhouse-server --entrypoint clickhouse-client clickhouse +# OR +docker exec -it some-clickhouse-server clickhouse-client +``` + +More information about the [ClickHouse client](https://clickhouse.com/docs/interfaces/cli/). + +### connect to it using curl + +```bash +echo "SELECT 'Hello, ClickHouse!'" | docker run -i --rm --network=container:some-clickhouse-server buildpack-deps:curl curl 'http://localhost:8123/?query=' -s --data-binary @- +``` + +More information about the [ClickHouse HTTP Interface](https://clickhouse.com/docs/interfaces/http/). + +### stopping / removing the container + +```bash +docker stop some-clickhouse-server +docker rm some-clickhouse-server +``` + +### networking + +> ⚠️ Note: the predefined user `default` does not have the network access unless the password is set, see "How to create default database and user on starting" and "Managing `default` user" below + +You can expose your ClickHouse running in docker by [mapping a particular port](https://docs.docker.com/config/containers/container-networking/) from inside the container using host ports: + +```bash +docker run -d -p 18123:8123 -p19000:9000 -e CLICKHOUSE_PASSWORD=changeme --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse +echo 'SELECT version()' | curl 'http://localhost:18123/?password=changeme' --data-binary @- +``` + +`22.6.3.35` + +Or by allowing the container to use [host ports directly](https://docs.docker.com/network/host/) using `--network=host` (also allows achieving better network performance): + +```bash +docker run -d --network=host --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse +echo 'SELECT version()' | curl 'http://localhost:8123/' --data-binary @- +``` + +`22.6.3.35` + +> ⚠️ Note: the user `default` in the example above is available only for the localhost requests + +### Volumes + +Typically you may want to mount the following folders inside your container to achieve persistency: + +- `/var/lib/clickhouse/` - main folder where ClickHouse stores the data +- `/var/log/clickhouse-server/` - logs + +```bash +docker run -d \ + -v "$PWD/ch_data:/var/lib/clickhouse/" \ + -v "$PWD/ch_logs:/var/log/clickhouse-server/" \ + --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse +``` + +You may also want to mount: + +- `/etc/clickhouse-server/config.d/*.xml` - files with server configuration adjustments +- `/etc/clickhouse-server/users.d/*.xml` - files with user settings adjustments +- `/docker-entrypoint-initdb.d/` - folder with database initialization scripts (see below). + +### Linux capabilities + +ClickHouse has some advanced functionality, which requires enabling several [Linux capabilities](https://man7.org/linux/man-pages/man7/capabilities.7.html). + +They are optional and can be enabled using the following [docker command-line arguments](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities): + +```bash +docker run -d \ + --cap-add=SYS_NICE --cap-add=NET_ADMIN --cap-add=IPC_LOCK \ + --name some-clickhouse-server --ulimit nofile=262144:262144 clickhouse +``` + +Read more in [knowledge base](https://clickhouse.com/docs/knowledgebase/configure_cap_ipc_lock_and_cap_sys_nice_in_docker). + +## Configuration + +The container exposes port 8123 for the [HTTP interface](https://clickhouse.com/docs/interfaces/http_interface/) and port 9000 for the [native client](https://clickhouse.com/docs/interfaces/tcp/). + +ClickHouse configuration is represented with a file "config.xml" ([documentation](https://clickhouse.com/docs/operations/configuration_files/)) + +### Start server instance with custom configuration + +```bash +docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -v /path/to/your/config.xml:/etc/clickhouse-server/config.xml clickhouse +``` + +### Start server as custom user + +```bash +# $PWD/data/clickhouse should exist and be owned by current user +docker run --rm --user "${UID}:${GID}" --name some-clickhouse-server --ulimit nofile=262144:262144 -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" clickhouse +``` + +When you use the image with local directories mounted, you probably want to specify the user to maintain the proper file ownership. Use the `--user` argument and mount `/var/lib/clickhouse` and `/var/log/clickhouse-server` inside the container. Otherwise, the image will complain and not start. + +### Start server from root (useful in case of enabled user namespace) + +```bash +docker run --rm -e CLICKHOUSE_RUN_AS_ROOT=1 --name clickhouse-server-userns -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" clickhouse +``` + +### How to create default database and user on starting + +Sometimes you may want to create a user (user named `default` is used by default) and database on a container start. You can do it using environment variables `CLICKHOUSE_DB`, `CLICKHOUSE_USER`, `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` and `CLICKHOUSE_PASSWORD`: + +```bash +docker run --rm -e CLICKHOUSE_DB=my_database -e CLICKHOUSE_USER=username -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=password -p 9000:9000/tcp clickhouse +``` + +#### Managing `default` user + +The user `default` has disabled network access by default in the case none of `CLICKHOUSE_USER`, `CLICKHOUSE_PASSWORD`, or `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` are set. + +There's a way to make `default` user insecurely available by setting environment variable `CLICKHOUSE_SKIP_USER_SETUP` to 1: + +```bash +docker run --rm -e CLICKHOUSE_SKIP_USER_SETUP=1 -p 9000:9000/tcp clickhouse +``` + +## How to extend this image + +To perform additional initialization in an image derived from this one, add one or more `*.sql`, `*.sql.gz`, or `*.sh` scripts under `/docker-entrypoint-initdb.d`. After the entrypoint calls `initdb`, it will run any `*.sql` files, run any executable `*.sh` scripts, and source any non-executable `*.sh` scripts found in that directory to do further initialization before starting the service. +Also, you can provide environment variables `CLICKHOUSE_USER` & `CLICKHOUSE_PASSWORD` that will be used for clickhouse-client during initialization. + +For example, to add an additional user and database, add the following to `/docker-entrypoint-initdb.d/init-db.sh`: + +```bash +#!/bin/bash +set -e + +clickhouse client -n <<-EOSQL + CREATE DATABASE docker; + CREATE TABLE docker.docker (x Int32) ENGINE = Log; +EOSQL +``` + +# License + +View [license information](https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE) for the software contained in this image. + +As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). + +Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `clickhouse/` directory](https://github.com/docker-library/repo-info/tree/master/repos/clickhouse). + +As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/clickhouse/content.md b/clickhouse/content.md new file mode 100644 index 000000000000..10fb767c0dbb --- /dev/null +++ b/clickhouse/content.md @@ -0,0 +1,180 @@ +# ClickHouse Server Docker Image + +## What is ClickHouse? + +%%LOGO%% + +ClickHouse is an open-source column-oriented DBMS (columnar database management system) for online analytical processing (OLAP) that allows users to generate analytical reports using SQL queries in real-time. + +ClickHouse works 100-1000x faster than traditional database management systems, and processes hundreds of millions to over a billion rows and tens of gigabytes of data per server per second. With a widespread user base around the globe, the technology has received praise for its reliability, ease of use, and fault tolerance. + +For more information and documentation see https://clickhouse.com/. + +## Versions + +- The `latest` tag points to the latest release of the latest stable branch. +- Branch tags like `22.2` point to the latest release of the corresponding branch. +- Full version tags like `22.2.3` and `22.2.3.5` point to the corresponding release. + +### Compatibility + +- The amd64 image requires support for [SSE3 instructions](https://en.wikipedia.org/wiki/SSE3). Virtually all x86 CPUs after 2005 support SSE3. +- The arm64 image requires support for the [ARMv8.2-A architecture](https://en.wikipedia.org/wiki/AArch64#ARMv8.2-A) and additionally the Load-Acquire RCpc register. The register is optional in version ARMv8.2-A and mandatory in [ARMv8.3-A](https://en.wikipedia.org/wiki/AArch64#ARMv8.3-A). Supported in Graviton >=2, Azure and GCP instances. Examples for unsupported devices are Raspberry Pi 4 (ARMv8.0-A) and Jetson AGX Xavier/Orin (ARMv8.2-A). +- Since the Clickhouse 24.11 Ubuntu images started using `ubuntu:22.04` as its base image. It requires docker version >= `20.10.10` containing [patch](https://github.com/moby/moby/commit/977283509f75303bc6612665a04abf76ff1d2468). As a workaround you could use `docker run --security-opt seccomp=unconfined` instead, however that has security implications. + +## How to use this image + +### start server instance + +```bash +docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%% +``` + +By default, ClickHouse will be accessible only via the Docker network. See the **networking** section below. + +By default, starting above server instance will be run as the `default` user without password. + +### connect to it from a native client + +```bash +docker run -it --rm --network=container:some-clickhouse-server --entrypoint clickhouse-client %%IMAGE%% +# OR +docker exec -it some-clickhouse-server clickhouse-client +``` + +More information about the [ClickHouse client](https://clickhouse.com/docs/interfaces/cli/). + +### connect to it using curl + +```bash +echo "SELECT 'Hello, ClickHouse!'" | docker run -i --rm --network=container:some-clickhouse-server buildpack-deps:curl curl 'http://localhost:8123/?query=' -s --data-binary @- +``` + +More information about the [ClickHouse HTTP Interface](https://clickhouse.com/docs/interfaces/http/). + +### stopping / removing the container + +```bash +docker stop some-clickhouse-server +docker rm some-clickhouse-server +``` + +### networking + +> ⚠️ Note: the predefined user `default` does not have the network access unless the password is set, see "How to create default database and user on starting" and "Managing `default` user" below + +You can expose your ClickHouse running in docker by [mapping a particular port](https://docs.docker.com/config/containers/container-networking/) from inside the container using host ports: + +```bash +docker run -d -p 18123:8123 -p19000:9000 -e CLICKHOUSE_PASSWORD=changeme --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%% +echo 'SELECT version()' | curl 'http://localhost:18123/?password=changeme' --data-binary @- +``` + +`22.6.3.35` + +Or by allowing the container to use [host ports directly](https://docs.docker.com/network/host/) using `--network=host` (also allows achieving better network performance): + +```bash +docker run -d --network=host --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%% +echo 'SELECT version()' | curl 'http://localhost:8123/' --data-binary @- +``` + +`22.6.3.35` + +> ⚠️ Note: the user `default` in the example above is available only for the localhost requests + +### Volumes + +Typically you may want to mount the following folders inside your container to achieve persistency: + +- `/var/lib/clickhouse/` - main folder where ClickHouse stores the data +- `/var/log/clickhouse-server/` - logs + +```bash +docker run -d \ + -v "$PWD/ch_data:/var/lib/clickhouse/" \ + -v "$PWD/ch_logs:/var/log/clickhouse-server/" \ + --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%% +``` + +You may also want to mount: + +- `/etc/clickhouse-server/config.d/*.xml` - files with server configuration adjustments +- `/etc/clickhouse-server/users.d/*.xml` - files with user settings adjustments +- `/docker-entrypoint-initdb.d/` - folder with database initialization scripts (see below). + +### Linux capabilities + +ClickHouse has some advanced functionality, which requires enabling several [Linux capabilities](https://man7.org/linux/man-pages/man7/capabilities.7.html). + +They are optional and can be enabled using the following [docker command-line arguments](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities): + +```bash +docker run -d \ + --cap-add=SYS_NICE --cap-add=NET_ADMIN --cap-add=IPC_LOCK \ + --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%% +``` + +Read more in [knowledge base](https://clickhouse.com/docs/knowledgebase/configure_cap_ipc_lock_and_cap_sys_nice_in_docker). + +## Configuration + +The container exposes port 8123 for the [HTTP interface](https://clickhouse.com/docs/interfaces/http_interface/) and port 9000 for the [native client](https://clickhouse.com/docs/interfaces/tcp/). + +ClickHouse configuration is represented with a file "config.xml" ([documentation](https://clickhouse.com/docs/operations/configuration_files/)) + +### Start server instance with custom configuration + +```bash +docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -v /path/to/your/config.xml:/etc/clickhouse-server/config.xml %%IMAGE%% +``` + +### Start server as custom user + +```bash +# $PWD/data/clickhouse should exist and be owned by current user +docker run --rm --user "${UID}:${GID}" --name some-clickhouse-server --ulimit nofile=262144:262144 -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" %%IMAGE%% +``` + +When you use the image with local directories mounted, you probably want to specify the user to maintain the proper file ownership. Use the `--user` argument and mount `/var/lib/clickhouse` and `/var/log/clickhouse-server` inside the container. Otherwise, the image will complain and not start. + +### Start server from root (useful in case of enabled user namespace) + +```bash +docker run --rm -e CLICKHOUSE_RUN_AS_ROOT=1 --name clickhouse-server-userns -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" %%IMAGE%% +``` + +### How to create default database and user on starting + +Sometimes you may want to create a user (user named `default` is used by default) and database on a container start. You can do it using environment variables `CLICKHOUSE_DB`, `CLICKHOUSE_USER`, `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` and `CLICKHOUSE_PASSWORD`: + +```bash +docker run --rm -e CLICKHOUSE_DB=my_database -e CLICKHOUSE_USER=username -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=password -p 9000:9000/tcp %%IMAGE%% +``` + +#### Managing `default` user + +The user `default` has disabled network access by default in the case none of `CLICKHOUSE_USER`, `CLICKHOUSE_PASSWORD`, or `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` are set. + +There's a way to make `default` user insecurely available by setting environment variable `CLICKHOUSE_SKIP_USER_SETUP` to 1: + +```bash +docker run --rm -e CLICKHOUSE_SKIP_USER_SETUP=1 -p 9000:9000/tcp %%IMAGE%% +``` + +## How to extend this image + +To perform additional initialization in an image derived from this one, add one or more `*.sql`, `*.sql.gz`, or `*.sh` scripts under `/docker-entrypoint-initdb.d`. After the entrypoint calls `initdb`, it will run any `*.sql` files, run any executable `*.sh` scripts, and source any non-executable `*.sh` scripts found in that directory to do further initialization before starting the service. +Also, you can provide environment variables `CLICKHOUSE_USER` & `CLICKHOUSE_PASSWORD` that will be used for clickhouse-client during initialization. + +For example, to add an additional user and database, add the following to `/docker-entrypoint-initdb.d/init-db.sh`: + +```bash +#!/bin/bash +set -e + +clickhouse client -n <<-EOSQL + CREATE DATABASE docker; + CREATE TABLE docker.docker (x Int32) ENGINE = Log; +EOSQL +``` diff --git a/clickhouse/github-repo b/clickhouse/github-repo new file mode 100644 index 000000000000..70a009ec9588 --- /dev/null +++ b/clickhouse/github-repo @@ -0,0 +1 @@ +https://github.com/ClickHouse/ClickHouse diff --git a/clickhouse/license.md b/clickhouse/license.md new file mode 100644 index 000000000000..6be024edcdec --- /dev/null +++ b/clickhouse/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/ClickHouse/ClickHouse/blob/master/LICENSE) for the software contained in this image. diff --git a/clickhouse/logo.svg b/clickhouse/logo.svg new file mode 100644 index 000000000000..a50dd81a1645 --- /dev/null +++ b/clickhouse/logo.svg @@ -0,0 +1,43 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/clickhouse/maintainer.md b/clickhouse/maintainer.md new file mode 100644 index 000000000000..26c7db1a2934 --- /dev/null +++ b/clickhouse/maintainer.md @@ -0,0 +1 @@ +[ClickHouse Inc.](%%GITHUB-REPO%%) diff --git a/clickhouse/metadata.json b/clickhouse/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/clickhouse/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/clojure/README.md b/clojure/README.md index f3db7c17b4d8..1ed86e3302ce 100644 --- a/clojure/README.md +++ b/clojure/README.md @@ -24,74 +24,191 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-jammy/latest/Dockerfile) -- [`temurin-8-boot-2.8.3-bullseye`, `temurin-8-boot-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-8/boot/Dockerfile) -- [`temurin-8-boot-2.8.3-bullseye-slim`, `temurin-8-boot-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-8/boot/Dockerfile) -- [`temurin-8-boot-2.8.3-focal`, `temurin-8-boot-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-focal/boot/Dockerfile) -- [`temurin-8-boot`, `temurin-8-boot-2.8.3`, `temurin-8-boot-2.8.3-jammy`, `temurin-8-boot-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-jammy/boot/Dockerfile) -- [`temurin-8-lein-2.10.0-alpine`, `temurin-8-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-alpine/lein/Dockerfile) -- [`temurin-8-lein-2.10.0-bullseye`, `temurin-8-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-8/lein/Dockerfile) -- [`temurin-8-lein-2.10.0-bullseye-slim`, `temurin-8-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-8/lein/Dockerfile) -- [`temurin-8-lein-2.10.0-focal`, `temurin-8-lein-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-focal/lein/Dockerfile) -- [`temurin-8-lein`, `temurin-8-lein-2.10.0`, `temurin-8-lein-2.10.0-jammy`, `temurin-8-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-jammy/lein/Dockerfile) -- [`temurin-8-alpine`, `temurin-8-tools-deps-1.11.1.1208-alpine`, `temurin-8-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-alpine/tools-deps/Dockerfile) -- [`temurin-8-bullseye`, `temurin-8-tools-deps-1.11.1.1208-bullseye`, `temurin-8-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-8/tools-deps/Dockerfile) -- [`temurin-8-bullseye-slim`, `temurin-8-tools-deps-1.11.1.1208-bullseye-slim`, `temurin-8-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-8/tools-deps/Dockerfile) -- [`temurin-8-focal`, `temurin-8-tools-deps-1.11.1.1208-focal`, `temurin-8-tools-deps-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-focal/tools-deps/Dockerfile) -- [`temurin-8-jammy`, `temurin-8-tools-deps`, `temurin-8-tools-deps-1.11.1.1208`, `temurin-8-tools-deps-1.11.1.1208-jammy`, `temurin-8-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-8-jdk-jammy/tools-deps/Dockerfile) -- [`temurin-11-boot-2.8.3-alpine`, `temurin-11-boot-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-alpine/boot/Dockerfile) -- [`temurin-11-boot-2.8.3-bullseye`, `temurin-11-boot-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-11/boot/Dockerfile) -- [`temurin-11-boot-2.8.3-bullseye-slim`, `temurin-11-boot-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-11/boot/Dockerfile) -- [`temurin-11-boot-2.8.3-focal`, `temurin-11-boot-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-focal/boot/Dockerfile) -- [`temurin-11-boot`, `temurin-11-boot-2.8.3`, `temurin-11-boot-2.8.3-jammy`, `temurin-11-boot-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-jammy/boot/Dockerfile) -- [`temurin-11-lein-2.10.0-alpine`, `temurin-11-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-alpine/lein/Dockerfile) -- [`temurin-11-lein-2.10.0-bullseye`, `temurin-11-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-11/lein/Dockerfile) -- [`temurin-11-lein-2.10.0-bullseye-slim`, `temurin-11-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-11/lein/Dockerfile) -- [`temurin-11-lein-2.10.0-focal`, `temurin-11-lein-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-focal/lein/Dockerfile) -- [`temurin-11-lein`, `temurin-11-lein-2.10.0`, `temurin-11-lein-2.10.0-jammy`, `temurin-11-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-jammy/lein/Dockerfile) -- [`temurin-11-alpine`, `temurin-11-tools-deps-1.11.1.1208-alpine`, `temurin-11-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-alpine/tools-deps/Dockerfile) -- [`temurin-11-bullseye`, `temurin-11-tools-deps-1.11.1.1208-bullseye`, `temurin-11-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-11/tools-deps/Dockerfile) -- [`temurin-11-bullseye-slim`, `temurin-11-tools-deps-1.11.1.1208-bullseye-slim`, `temurin-11-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-11/tools-deps/Dockerfile) -- [`temurin-11-focal`, `temurin-11-tools-deps-1.11.1.1208-focal`, `temurin-11-tools-deps-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-focal/tools-deps/Dockerfile) -- [`temurin-11-jammy`, `temurin-11-tools-deps`, `temurin-11-tools-deps-1.11.1.1208`, `temurin-11-tools-deps-1.11.1.1208-jammy`, `temurin-11-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-11-jdk-jammy/tools-deps/Dockerfile) -- [`boot-2.8.3-alpine`, `boot-alpine`, `temurin-17-boot-2.8.3-alpine`, `temurin-17-boot-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-alpine/boot/Dockerfile) -- [`temurin-17-boot-2.8.3-bullseye`, `temurin-17-boot-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-17/boot/Dockerfile) -- [`temurin-17-boot-2.8.3-bullseye-slim`, `temurin-17-boot-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-17/boot/Dockerfile) -- [`boot-2.8.3-focal`, `boot-focal`, `temurin-17-boot-2.8.3-focal`, `temurin-17-boot-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-focal/boot/Dockerfile) -- [`boot`, `boot-2.8.3`, `boot-2.8.3-jammy`, `boot-jammy`, `temurin-17-boot`, `temurin-17-boot-2.8.3`, `temurin-17-boot-2.8.3-jammy`, `temurin-17-boot-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-jammy/boot/Dockerfile) -- [`lein-2.10.0-alpine`, `lein-alpine`, `temurin-17-lein-2.10.0-alpine`, `temurin-17-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-alpine/lein/Dockerfile) -- [`temurin-17-lein-2.10.0-bullseye`, `temurin-17-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-17/lein/Dockerfile) -- [`temurin-17-lein-2.10.0-bullseye-slim`, `temurin-17-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-17/lein/Dockerfile) -- [`lein-2.10.0-focal`, `lein-focal`, `temurin-17-lein-2.10.0-focal`, `temurin-17-lein-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-focal/lein/Dockerfile) -- [`lein`, `lein-2.10.0`, `lein-2.10.0-jammy`, `lein-jammy`, `temurin-17-lein`, `temurin-17-lein-2.10.0`, `temurin-17-lein-2.10.0-jammy`, `temurin-17-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-jammy/lein/Dockerfile) -- [`temurin-17-alpine`, `temurin-17-tools-deps-1.11.1.1208-alpine`, `temurin-17-tools-deps-alpine`, `tools-deps-1.11.1.1208-alpine`, `tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-alpine/tools-deps/Dockerfile) -- [`temurin-17-bullseye`, `temurin-17-tools-deps-1.11.1.1208-bullseye`, `temurin-17-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-17/tools-deps/Dockerfile) -- [`temurin-17-bullseye-slim`, `temurin-17-tools-deps-1.11.1.1208-bullseye-slim`, `temurin-17-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-17/tools-deps/Dockerfile) -- [`temurin-17-focal`, `temurin-17-tools-deps-1.11.1.1208-focal`, `temurin-17-tools-deps-focal`, `tools-deps-1.11.1.1208-focal`, `tools-deps-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-focal/tools-deps/Dockerfile) -- [`temurin-17-jammy`, `temurin-17-tools-deps`, `temurin-17-tools-deps-1.11.1.1208`, `temurin-17-tools-deps-1.11.1.1208-jammy`, `temurin-17-tools-deps-jammy`, `tools-deps`, `tools-deps-1.11.1.1208`, `tools-deps-1.11.1.1208-jammy`, `tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-17-jdk-jammy/tools-deps/Dockerfile) -- [`temurin-19-boot-2.8.3-alpine`, `temurin-19-boot-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-alpine/boot/Dockerfile) -- [`temurin-19-boot-2.8.3-bullseye`, `temurin-19-boot-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-19/boot/Dockerfile) -- [`temurin-19-boot-2.8.3-bullseye-slim`, `temurin-19-boot-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-19/boot/Dockerfile) -- [`temurin-19-boot-2.8.3-focal`, `temurin-19-boot-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-focal/boot/Dockerfile) -- [`temurin-19-boot`, `temurin-19-boot-2.8.3`, `temurin-19-boot-2.8.3-jammy`, `temurin-19-boot-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-jammy/boot/Dockerfile) -- [`temurin-19-lein-2.10.0-alpine`, `temurin-19-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-alpine/lein/Dockerfile) -- [`temurin-19-lein-2.10.0-bullseye`, `temurin-19-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-19/lein/Dockerfile) -- [`temurin-19-lein-2.10.0-bullseye-slim`, `temurin-19-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-19/lein/Dockerfile) -- [`temurin-19-lein-2.10.0-focal`, `temurin-19-lein-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-focal/lein/Dockerfile) -- [`temurin-19-lein`, `temurin-19-lein-2.10.0`, `temurin-19-lein-2.10.0-jammy`, `temurin-19-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-jammy/lein/Dockerfile) -- [`temurin-19-alpine`, `temurin-19-tools-deps-1.11.1.1208-alpine`, `temurin-19-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-alpine/tools-deps/Dockerfile) -- [`temurin-19-bullseye`, `temurin-19-tools-deps-1.11.1.1208-bullseye`, `temurin-19-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-19/tools-deps/Dockerfile) -- [`temurin-19-bullseye-slim`, `temurin-19-tools-deps-1.11.1.1208-bullseye-slim`, `temurin-19-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/debian-bullseye-slim-19/tools-deps/Dockerfile) -- [`temurin-19-focal`, `temurin-19-tools-deps-1.11.1.1208-focal`, `temurin-19-tools-deps-focal`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-focal/tools-deps/Dockerfile) -- [`temurin-19-jammy`, `temurin-19-tools-deps`, `temurin-19-tools-deps-1.11.1.1208`, `temurin-19-tools-deps-1.11.1.1208-jammy`, `temurin-19-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/08479c1b00c308743a360a79a82338fa04e59a9a/target/eclipse-temurin-19-jdk-jammy/tools-deps/Dockerfile) +- [`latest`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-25/latest/Dockerfile) + +- [`temurin-8-lein-2.12.0-alpine`, `temurin-8-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-8-jdk-alpine/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-bookworm`, `temurin-8-lein-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-8/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-bookworm-slim`, `temurin-8-lein-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-8/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-bullseye`, `temurin-8-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-8/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-bullseye-slim`, `temurin-8-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-8/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-jammy`, `temurin-8-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-8-jdk-jammy/lein/Dockerfile) + +- [`temurin-8-lein`, `temurin-8-lein-2.12.0`, `temurin-8-lein-2.12.0-noble`, `temurin-8-lein-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-8-jdk-noble/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-trixie`, `temurin-8-lein-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-8/lein/Dockerfile) + +- [`temurin-8-lein-2.12.0-trixie-slim`, `temurin-8-lein-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-8/lein/Dockerfile) + +- [`temurin-8-alpine`, `temurin-8-tools-deps-1.12.3.1577-alpine`, `temurin-8-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-8-jdk-alpine/tools-deps/Dockerfile) + +- [`temurin-8-bookworm`, `temurin-8-tools-deps-1.12.3.1577-bookworm`, `temurin-8-tools-deps-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-8/tools-deps/Dockerfile) + +- [`temurin-8-bookworm-slim`, `temurin-8-tools-deps-1.12.3.1577-bookworm-slim`, `temurin-8-tools-deps-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-8/tools-deps/Dockerfile) + +- [`temurin-8-bullseye`, `temurin-8-tools-deps-1.12.3.1577-bullseye`, `temurin-8-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-8/tools-deps/Dockerfile) + +- [`temurin-8-bullseye-slim`, `temurin-8-tools-deps-1.12.3.1577-bullseye-slim`, `temurin-8-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-8/tools-deps/Dockerfile) + +- [`temurin-8-jammy`, `temurin-8-tools-deps-1.12.3.1577-jammy`, `temurin-8-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-8-jdk-jammy/tools-deps/Dockerfile) + +- [`temurin-8-noble`, `temurin-8-tools-deps`, `temurin-8-tools-deps-1.12.3.1577`, `temurin-8-tools-deps-1.12.3.1577-noble`, `temurin-8-tools-deps-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-8-jdk-noble/tools-deps/Dockerfile) + +- [`temurin-8-tools-deps-1.12.3.1577-trixie`, `temurin-8-tools-deps-trixie`, `temurin-8-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-8/tools-deps/Dockerfile) + +- [`temurin-8-tools-deps-1.12.3.1577-trixie-slim`, `temurin-8-tools-deps-trixie-slim`, `temurin-8-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-8/tools-deps/Dockerfile) + +- [`temurin-11-lein-2.12.0-alpine`, `temurin-11-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-11-jdk-alpine/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-bookworm`, `temurin-11-lein-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-11/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-bookworm-slim`, `temurin-11-lein-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-11/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-bullseye`, `temurin-11-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-11/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-bullseye-slim`, `temurin-11-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-11/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-jammy`, `temurin-11-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-11-jdk-jammy/lein/Dockerfile) + +- [`temurin-11-lein`, `temurin-11-lein-2.12.0`, `temurin-11-lein-2.12.0-noble`, `temurin-11-lein-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-11-jdk-noble/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-trixie`, `temurin-11-lein-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-11/lein/Dockerfile) + +- [`temurin-11-lein-2.12.0-trixie-slim`, `temurin-11-lein-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-11/lein/Dockerfile) + +- [`temurin-11-alpine`, `temurin-11-tools-deps-1.12.3.1577-alpine`, `temurin-11-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-11-jdk-alpine/tools-deps/Dockerfile) + +- [`temurin-11-bookworm`, `temurin-11-tools-deps-1.12.3.1577-bookworm`, `temurin-11-tools-deps-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-11/tools-deps/Dockerfile) + +- [`temurin-11-bookworm-slim`, `temurin-11-tools-deps-1.12.3.1577-bookworm-slim`, `temurin-11-tools-deps-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-11/tools-deps/Dockerfile) + +- [`temurin-11-bullseye`, `temurin-11-tools-deps-1.12.3.1577-bullseye`, `temurin-11-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-11/tools-deps/Dockerfile) + +- [`temurin-11-bullseye-slim`, `temurin-11-tools-deps-1.12.3.1577-bullseye-slim`, `temurin-11-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-11/tools-deps/Dockerfile) + +- [`temurin-11-jammy`, `temurin-11-tools-deps-1.12.3.1577-jammy`, `temurin-11-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-11-jdk-jammy/tools-deps/Dockerfile) + +- [`temurin-11-noble`, `temurin-11-tools-deps`, `temurin-11-tools-deps-1.12.3.1577`, `temurin-11-tools-deps-1.12.3.1577-noble`, `temurin-11-tools-deps-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-11-jdk-noble/tools-deps/Dockerfile) + +- [`temurin-11-tools-deps-1.12.3.1577-trixie`, `temurin-11-tools-deps-trixie`, `temurin-11-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-11/tools-deps/Dockerfile) + +- [`temurin-11-tools-deps-1.12.3.1577-trixie-slim`, `temurin-11-tools-deps-trixie-slim`, `temurin-11-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-11/tools-deps/Dockerfile) + +- [`temurin-17-lein-2.12.0-alpine`, `temurin-17-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-17-jdk-alpine/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-bookworm`, `temurin-17-lein-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-17/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-bookworm-slim`, `temurin-17-lein-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-17/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-bullseye`, `temurin-17-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-17/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-bullseye-slim`, `temurin-17-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-17/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-jammy`, `temurin-17-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-17-jdk-jammy/lein/Dockerfile) + +- [`temurin-17-lein`, `temurin-17-lein-2.12.0`, `temurin-17-lein-2.12.0-noble`, `temurin-17-lein-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-17-jdk-noble/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-trixie`, `temurin-17-lein-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-17/lein/Dockerfile) + +- [`temurin-17-lein-2.12.0-trixie-slim`, `temurin-17-lein-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-17/lein/Dockerfile) + +- [`temurin-17-alpine`, `temurin-17-tools-deps-1.12.3.1577-alpine`, `temurin-17-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-17-jdk-alpine/tools-deps/Dockerfile) + +- [`temurin-17-bookworm`, `temurin-17-tools-deps-1.12.3.1577-bookworm`, `temurin-17-tools-deps-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-17/tools-deps/Dockerfile) + +- [`temurin-17-bookworm-slim`, `temurin-17-tools-deps-1.12.3.1577-bookworm-slim`, `temurin-17-tools-deps-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-17/tools-deps/Dockerfile) + +- [`temurin-17-bullseye`, `temurin-17-tools-deps-1.12.3.1577-bullseye`, `temurin-17-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-17/tools-deps/Dockerfile) + +- [`temurin-17-bullseye-slim`, `temurin-17-tools-deps-1.12.3.1577-bullseye-slim`, `temurin-17-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-17/tools-deps/Dockerfile) + +- [`temurin-17-jammy`, `temurin-17-tools-deps-1.12.3.1577-jammy`, `temurin-17-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-17-jdk-jammy/tools-deps/Dockerfile) + +- [`temurin-17-noble`, `temurin-17-tools-deps`, `temurin-17-tools-deps-1.12.3.1577`, `temurin-17-tools-deps-1.12.3.1577-noble`, `temurin-17-tools-deps-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-17-jdk-noble/tools-deps/Dockerfile) + +- [`temurin-17-tools-deps-1.12.3.1577-trixie`, `temurin-17-tools-deps-trixie`, `temurin-17-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-17/tools-deps/Dockerfile) + +- [`temurin-17-tools-deps-1.12.3.1577-trixie-slim`, `temurin-17-tools-deps-trixie-slim`, `temurin-17-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-17/tools-deps/Dockerfile) + +- [`temurin-21-lein-2.12.0-alpine`, `temurin-21-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-21-jdk-alpine/lein/Dockerfile) + +- [`temurin-21-lein`, `temurin-21-lein-2.12.0`, `temurin-21-lein-2.12.0-bookworm`, `temurin-21-lein-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-21/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-bookworm-slim`, `temurin-21-lein-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-21/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-bullseye`, `temurin-21-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-21/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-bullseye-slim`, `temurin-21-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-21/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-jammy`, `temurin-21-lein-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-21-jdk-jammy/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-noble`, `temurin-21-lein-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-21-jdk-noble/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-trixie`, `temurin-21-lein-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-21/lein/Dockerfile) + +- [`temurin-21-lein-2.12.0-trixie-slim`, `temurin-21-lein-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-21/lein/Dockerfile) + +- [`temurin-21-alpine`, `temurin-21-tools-deps-1.12.3.1577-alpine`, `temurin-21-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-21-jdk-alpine/tools-deps/Dockerfile) + +- [`temurin-21-bookworm`, `temurin-21-tools-deps`, `temurin-21-tools-deps-1.12.3.1577`, `temurin-21-tools-deps-1.12.3.1577-bookworm`, `temurin-21-tools-deps-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-21/tools-deps/Dockerfile) + +- [`temurin-21-bookworm-slim`, `temurin-21-tools-deps-1.12.3.1577-bookworm-slim`, `temurin-21-tools-deps-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-21/tools-deps/Dockerfile) + +- [`temurin-21-bullseye`, `temurin-21-tools-deps-1.12.3.1577-bullseye`, `temurin-21-tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-21/tools-deps/Dockerfile) + +- [`temurin-21-bullseye-slim`, `temurin-21-tools-deps-1.12.3.1577-bullseye-slim`, `temurin-21-tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-21/tools-deps/Dockerfile) + +- [`temurin-21-jammy`, `temurin-21-tools-deps-1.12.3.1577-jammy`, `temurin-21-tools-deps-jammy`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-21-jdk-jammy/tools-deps/Dockerfile) + +- [`temurin-21-noble`, `temurin-21-tools-deps-1.12.3.1577-noble`, `temurin-21-tools-deps-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-21-jdk-noble/tools-deps/Dockerfile) + +- [`temurin-21-tools-deps-1.12.3.1577-trixie`, `temurin-21-tools-deps-trixie`, `temurin-21-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-21/tools-deps/Dockerfile) + +- [`temurin-21-tools-deps-1.12.3.1577-trixie-slim`, `temurin-21-tools-deps-trixie-slim`, `temurin-21-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-21/tools-deps/Dockerfile) + +- [`temurin-25-lein-2.12.0-alpine`, `temurin-25-lein-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-25-jdk-alpine/lein/Dockerfile) + +- [`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`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-25/lein/Dockerfile) + +- [`lein-2.12.0-bookworm-slim`, `lein-bookworm-slim`, `temurin-25-lein-2.12.0-bookworm-slim`, `temurin-25-lein-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-25/lein/Dockerfile) + +- [`lein-2.12.0-bullseye`, `lein-bullseye`, `temurin-25-lein-2.12.0-bullseye`, `temurin-25-lein-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-25/lein/Dockerfile) + +- [`lein-2.12.0-bullseye-slim`, `lein-bullseye-slim`, `temurin-25-lein-2.12.0-bullseye-slim`, `temurin-25-lein-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-25/lein/Dockerfile) + +- [`temurin-25-lein-2.12.0-noble`, `temurin-25-lein-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-25-jdk-noble/lein/Dockerfile) + +- [`lein-2.12.0-trixie`, `lein-trixie`, `temurin-25-lein-2.12.0-trixie`, `temurin-25-lein-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-25/lein/Dockerfile) + +- [`lein-2.12.0-trixie-slim`, `lein-trixie-slim`, `temurin-25-lein-2.12.0-trixie-slim`, `temurin-25-lein-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-25/lein/Dockerfile) + +- [`temurin-25-alpine`, `temurin-25-tools-deps-1.12.3.1577-alpine`, `temurin-25-tools-deps-alpine`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-25-jdk-alpine/tools-deps/Dockerfile) + +- [`temurin-25-bookworm`, `temurin-25-tools-deps`, `temurin-25-tools-deps-1.12.3.1577`, `temurin-25-tools-deps-1.12.3.1577-bookworm`, `temurin-25-tools-deps-bookworm`, `tools-deps`, `tools-deps-1.12.3.1577`, `tools-deps-1.12.3.1577-bookworm`, `tools-deps-bookworm`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-25/tools-deps/Dockerfile) + +- [`temurin-25-bookworm-slim`, `temurin-25-tools-deps-1.12.3.1577-bookworm-slim`, `temurin-25-tools-deps-bookworm-slim`, `tools-deps-1.12.3.1577-bookworm-slim`, `tools-deps-bookworm-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bookworm-slim-25/tools-deps/Dockerfile) + +- [`temurin-25-bullseye`, `temurin-25-tools-deps-1.12.3.1577-bullseye`, `temurin-25-tools-deps-bullseye`, `tools-deps-1.12.3.1577-bullseye`, `tools-deps-bullseye`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-25/tools-deps/Dockerfile) + +- [`temurin-25-bullseye-slim`, `temurin-25-tools-deps-1.12.3.1577-bullseye-slim`, `temurin-25-tools-deps-bullseye-slim`, `tools-deps-1.12.3.1577-bullseye-slim`, `tools-deps-bullseye-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-bullseye-slim-25/tools-deps/Dockerfile) + +- [`temurin-25-noble`, `temurin-25-tools-deps-1.12.3.1577-noble`, `temurin-25-tools-deps-noble`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/eclipse-temurin-25-jdk-noble/tools-deps/Dockerfile) + +- [`temurin-25-tools-deps-1.12.3.1577-trixie`, `temurin-25-tools-deps-trixie`, `temurin-25-trixie`, `tools-deps-1.12.3.1577-trixie`, `tools-deps-trixie`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-25/tools-deps/Dockerfile) + +- [`temurin-25-tools-deps-1.12.3.1577-trixie-slim`, `temurin-25-tools-deps-trixie-slim`, `temurin-25-trixie-slim`, `tools-deps-1.12.3.1577-trixie-slim`, `tools-deps-trixie-slim`](https://github.com/Quantisan/docker-clojure/blob/6938e39125e2607ccc427065e6dfd11adf6e7527/target/debian-trixie-slim-25/tools-deps/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/Quantisan/docker-clojure/issues](https://github.com/Quantisan/docker-clojure/issues) + [https://github.com/Quantisan/docker-clojure/issues](https://github.com/Quantisan/docker-clojure/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/clojure/), [`arm64v8`](https://hub.docker.com/r/arm64v8/clojure/) + [`amd64`](https://hub.docker.com/r/amd64/clojure/), [`arm64v8`](https://hub.docker.com/r/arm64v8/clojure/), [`ppc64le`](https://hub.docker.com/r/ppc64le/clojure/), [`riscv64`](https://hub.docker.com/r/riscv64/clojure/), [`s390x`](https://hub.docker.com/r/s390x/clojure/) - **Published image artifact details**: [repo-info repo's `repos/clojure/` directory](https://github.com/docker-library/repo-info/blob/master/repos/clojure) ([history](https://github.com/docker-library/repo-info/commits/master/repos/clojure)) @@ -190,13 +307,9 @@ The `clojure` images come in many flavors, each designed for a specific use case This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. - -Some of these tags may have names like focal or jammy in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. - -## `clojure:-slim` +Some of these tags may have names like bookworm, bullseye, or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `clojure`. Unless you are working in an environment where *only* the `clojure` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `clojure:-alpine` @@ -206,6 +319,10 @@ This variant is useful when final image size being as small as possible is your To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). +## `clojure:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `clojure`. Unless you are working in an environment where *only* the `clojure` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + # License View [license information](http://clojure.org/license) for the software contained in this image. diff --git a/clojure/metadata.json b/clojure/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/clojure/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/composer/README.md b/composer/README.md index 784ffabddb36..3bfc566e8ec0 100644 --- a/composer/README.md +++ b/composer/README.md @@ -24,19 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.5.1`, `2.5`, `2`, `latest`](https://github.com/composer/docker/blob/4753480775709ab437330892f5c7fcf03f0d4344/2.5/Dockerfile) -- [`2.4.4`, `2.4`](https://github.com/composer/docker/blob/88e63fbab43e2151b0743a4c6d18a9c59aa9db0c/2.4/Dockerfile) -- [`2.3.10`, `2.3`](https://github.com/composer/docker/blob/88e63fbab43e2151b0743a4c6d18a9c59aa9db0c/2.3/Dockerfile) -- [`2.2.18`, `2.2`, `lts`](https://github.com/composer/docker/blob/88e63fbab43e2151b0743a4c6d18a9c59aa9db0c/2.2/Dockerfile) -- [`1.10.26`, `1.10`, `1`](https://github.com/composer/docker/blob/88e63fbab43e2151b0743a4c6d18a9c59aa9db0c/1.10/Dockerfile) +- [`2.9.1`, `2.9`, `2`, `latest`](https://github.com/composer/docker/blob/10a4df1f5b85ba7e8f6dcb0f3d2d6d0d907a0305/latest/Dockerfile) + +- [`2.2.25`, `2.2`](https://github.com/composer/docker/blob/a037fe423a4fef8030b2a8c3131da0934a6295dd/2.2/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/composer/docker/issues](https://github.com/composer/docker/issues) + [https://github.com/composer/docker/issues](https://github.com/composer/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/composer/), [`arm32v6`](https://hub.docker.com/r/arm32v6/composer/), [`arm32v7`](https://hub.docker.com/r/arm32v7/composer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/composer/), [`i386`](https://hub.docker.com/r/i386/composer/), [`ppc64le`](https://hub.docker.com/r/ppc64le/composer/), [`s390x`](https://hub.docker.com/r/s390x/composer/) + [`amd64`](https://hub.docker.com/r/amd64/composer/), [`arm32v6`](https://hub.docker.com/r/arm32v6/composer/), [`arm32v7`](https://hub.docker.com/r/arm32v7/composer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/composer/), [`i386`](https://hub.docker.com/r/i386/composer/), [`ppc64le`](https://hub.docker.com/r/ppc64le/composer/), [`riscv64`](https://hub.docker.com/r/riscv64/composer/), [`s390x`](https://hub.docker.com/r/s390x/composer/) - **Published image artifact details**: [repo-info repo's `repos/composer/` directory](https://github.com/docker-library/repo-info/blob/master/repos/composer) ([history](https://github.com/docker-library/repo-info/commits/master/repos/composer)) diff --git a/composer/metadata.json b/composer/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/composer/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/consul/README-short.txt b/consul/README-short.txt deleted file mode 100644 index 71c626fc5884..000000000000 --- a/consul/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Consul is a datacenter runtime that provides service discovery, configuration, and orchestration. diff --git a/consul/README.md b/consul/README.md deleted file mode 100644 index 75b9089706bf..000000000000 --- a/consul/README.md +++ /dev/null @@ -1,256 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [HashiCorp](https://github.com/hashicorp/docker-consul) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -- [`1.14.3`, `1.14`, `latest`](https://github.com/hashicorp/docker-consul/blob/8dd04b12354ab019a6e96b5f7597bb326659507f/0.X/Dockerfile) -- [`1.13.5`, `1.13`](https://github.com/hashicorp/docker-consul/blob/795461990fe29f494ec0c06bb27088bbd8ca40f4/0.X/Dockerfile) -- [`1.12.8`, `1.12`](https://github.com/hashicorp/docker-consul/blob/a91ee4fadf7500dfdfe1f6abd405b31442cd1745/0.X/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/hashicorp/docker-consul/issues](https://github.com/hashicorp/docker-consul/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/consul/), [`arm32v6`](https://hub.docker.com/r/arm32v6/consul/), [`arm64v8`](https://hub.docker.com/r/arm64v8/consul/), [`i386`](https://hub.docker.com/r/i386/consul/) - -- **Published image artifact details**: - [repo-info repo's `repos/consul/` directory](https://github.com/docker-library/repo-info/blob/master/repos/consul) ([history](https://github.com/docker-library/repo-info/commits/master/repos/consul)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/consul` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fconsul) - [official-images repo's `library/consul` file](https://github.com/docker-library/official-images/blob/master/library/consul) ([history](https://github.com/docker-library/official-images/commits/master/library/consul)) - -- **Source of this description**: - [docs repo's `consul/` directory](https://github.com/docker-library/docs/tree/master/consul) ([history](https://github.com/docker-library/docs/commits/master/consul)) - -# Consul - -Consul is a distributed, highly-available, and multi-datacenter aware tool for service discovery, configuration, and orchestration. Consul enables rapid deployment, configuration, and maintenance of service-oriented architectures at massive scale. For more information, please see: - -- [Consul documentation](https://www.consul.io/) -- [Consul on GitHub](https://github.com/hashicorp/consul) - -![logo](https://raw.githubusercontent.com/docker-library/docs/8adb88e1e328c244711742f65319ed4064cff9a2/consul/logo.svg?sanitize=true) - -# Consul and Docker - -Consul has several moving parts so we'll start with a brief introduction to Consul's architecture and then detail how Consul interacts with Docker. Please see the [Consul Architecture](https://www.consul.io/docs/architecture) guide for more detail on all these concepts. - -Each host in a Consul cluster runs the Consul agent, a long running daemon that can be started in client or server mode. Each cluster has at least 1 agent in server mode, and usually 3 or 5 for high availability. The server agents participate in a [consensus protocol](https://www.consul.io/docs/internals/consensus.html), maintain a centralized view of the cluster's state, and respond to queries from other agents in the cluster. The rest of the agents in client mode participate in a [gossip protocol](https://www.consul.io/docs/internals/gossip.html) to discover other agents and check them for failures, and they forward queries about the cluster to the server agents. - -Applications running on a given host communicate only with their local Consul agent, using its HTTP APIs or DNS interface. Services on the host are also registered with the local Consul agent, which syncs the information with the Consul servers. Doing the most basic DNS-based service discovery using Consul, an application queries for `foo.service.consul` and gets a randomly shuffled subset of all the hosts providing service "foo". This allows applications to locate services and balance the load without any intermediate proxies. Several HTTP APIs are also available for applications doing a deeper integration with Consul's service discovery capabilities, as well as its other features such as the key/value store. - -These concepts also apply when running Consul in Docker. Typically, you'll run a single Consul agent container on each host, running alongside the Docker daemon. You'll also need to configure some of the agents as servers (at least 3 for a basic HA setup). Consul should always be run with `--net=host` in Docker because Consul's consensus and gossip protocols are sensitive to delays and packet loss, so the extra layers involved with other networking types are usually undesirable and unnecessary. We will talk more about this below. - -We don't cover Consul's multi-datacenter capability here, but as long as `--net=host` is used, there should be no special considerations for Docker. - -# Using the Container - -We chose Alpine as a lightweight base with a reasonably small surface area for security concerns, but with enough functionality for development, interactive debugging, and useful health, watch, and exec scripts running under Consul in the container. As of Consul 0.7, the image also includes `curl` since it is so commonly used for health checks. - -Consul always runs under [dumb-init](https://github.com/Yelp/dumb-init), which handles reaping zombie processes and forwards signals on to all processes running in the container. We also use [gosu](https://github.com/tianon/gosu) to run Consul as a non-root "consul" user for better security. These binaries are all built by HashiCorp and signed with our [GPG key](https://www.hashicorp.com/security.html), so you can verify the signed package used to build a given base image. - -Running the Consul container with no arguments will give you a Consul server in [development mode](https://www.consul.io/docs/agent/options.html#_dev). The provided entry point script will also look for Consul subcommands and run `consul` as the correct user and with that subcommand. For example, you can execute `docker run consul members` and it will run the `consul members` command inside the container. The entry point also adds some special configuration options as detailed in the sections below when running the `agent` subcommand. Any other command gets `exec`-ed inside the container under `dumb-init`. - -The container exposes `VOLUME /consul/data`, which is a path where Consul will place its persisted state. This isn't used in any way when running in development mode. For client agents, this stores some information about the cluster and the client's health checks in case the container is restarted. For server agents, this stores the client information plus snapshots and data related to the consensus algorithm and other state like Consul's key/value store and catalog. For servers it is highly desirable to keep this volume's data around when restarting containers to recover from outage scenarios. If this is bind mounted then ownership will be changed to the consul user when the container starts. - -The container has a Consul configuration directory set up at `/consul/config` and the agent will load any configuration files placed here by binding a volume or by composing a new image and adding files. Alternatively, configuration can be added by passing the configuration JSON via environment variable `CONSUL_LOCAL_CONFIG`. If this is bind mounted then ownership will be changed to the consul user when the container starts. - -Since Consul is almost always run with `--net=host` in Docker, some care is required when configuring Consul's IP addresses. Consul has the concept of its cluster address as well as its client address. The cluster address is the address at which other Consul agents may contact a given agent. The client address is the address where other processes on the host contact Consul in order to make HTTP or DNS requests. You will typically need to tell Consul what its cluster address is when starting so that it binds to the correct interface and advertises a workable interface to the rest of the Consul agents. You'll see this in the examples below as the `-bind=` argument to Consul. - -The entry point also includes a small utility to look up a client or bind address by interface name. To use this, set the `CONSUL_CLIENT_INTERFACE` and/or `CONSUL_BIND_INTERFACE` environment variables to the name of the interface you'd like Consul to use and a `-client=` and/or `-bind=` argument will be computed and passed to Consul at startup. - -## Running Consul for Development - -```console -$ docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 consul -``` - -This runs a completely in-memory Consul server agent with default bridge networking and no services exposed on the host, which is useful for development but should not be used in production. For example, if that server is running at internal address 172.17.0.2, you can run a three node cluster for development by starting up two more instances and telling them to join the first node. - -```console -$ docker run -d -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -join=172.17.0.2 -... server 2 starts -$ docker run -d -e CONSUL_BIND_INTERFACE=eth0 consul agent -dev -join=172.17.0.2 -... server 3 starts -``` - -Then we can query for all the members in the cluster by running a Consul CLI command in the first container: - -```console -$ docker exec -t dev-consul consul members -Node Address Status Type Build Protocol DC -579db72c1ae1 172.17.0.3:8301 alive server 0.6.3 2 dc1 -93fe2309ef19 172.17.0.4:8301 alive server 0.6.3 2 dc1 -c9caabfd4c2a 172.17.0.2:8301 alive server 0.6.3 2 dc1 -``` - -Remember that Consul doesn't use the data volume in this mode - once the container stops all of your state will be wiped out, so please don't use this mode for production. Running completely on the bridge network with the development server is useful for testing multiple instances of Consul on a single machine, which is normally difficult to do because of port conflicts. - -Development mode also starts a version of Consul's web UI on port 8500. This can be added to the other Consul configurations by supplying the `-ui` option to Consul on the command line. The web assets are bundled inside the Consul binary in the container. - -## Running Consul Agent in Client Mode - -```console -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' consul agent -bind= -retry-join= -==> Starting Consul agent... -==> Starting Consul agent RPC... -==> Consul agent running! - Node name: 'linode' - Datacenter: 'dc1' - Server: false (bootstrap: false) - Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) - Cluster Addr: (LAN: 8301, WAN: 8302) - Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false - Atlas: -... -``` - -This runs a Consul client agent sharing the host's network and advertising the external IP address to the rest of the cluster. Note that the agent defaults to binding its client interfaces to 127.0.0.1, which is the host's loopback interface. This would be a good configuration to use if other containers on the host also use `--net=host`, and it also exposes the agent to processes running directly on the host outside a container, such as HashiCorp's Nomad. - -The `-retry-join` parameter specifies the external IP of one other agent in the cluster to use to join at startup. There are several ways to control how an agent joins the cluster, see the [agent configuration](https://www.consul.io/docs/agent/options.html) guide for more details on the `-join`, `-retry-join`, and `-atlas-join` options. - -Note also we've set [`leave_on_terminate`](https://www.consul.io/docs/agent/options.html#leave_on_terminate) using the `CONSUL_LOCAL_CONFIG` environment variable. This is recommended for clients to and will be defaulted to `true` in Consul 0.7 and later, so this will no longer be necessary. - -At startup, the agent will read config JSON files from `/consul/config`. Data will be persisted in the `/consul/data` volume. - -Here are some example queries on a host with an external IP of 66.175.220.234: - -```console -$ curl http://localhost:8500/v1/health/service/consul?pretty -[ - { - "Node": { - "Node": "linode", - "Address": "66.175.220.234", -... -``` - -```console -$ dig @localhost -p 8600 consul.service.consul -; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> @localhost -p 8600 consul.service.consul -; (2 servers found) -;; global options: +cmd -;; Got answer: -;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61616 -;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 -;; WARNING: recursion requested but not available - -;; QUESTION SECTION: -;consul.service.consul. IN A - -;; ANSWER SECTION: -consul.service.consul. 0 IN A 66.175.220.234 -... -``` - -If you want to expose the Consul interfaces to other containers via a different network, such as the bridge network, use the `-client` option for Consul: - -```console -docker run -d --net=host consul agent -bind= -client= -retry-join= -==> Starting Consul agent... -==> Starting Consul agent RPC... -==> Consul agent running! - Node name: 'linode' - Datacenter: 'dc1' - Server: false (bootstrap: false) - Client Addr: (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) - Cluster Addr: (LAN: 8301, WAN: 8302) - Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false - Atlas: -... -``` - -With this configuration, Consul's client interfaces will be bound to the bridge IP and available to other containers on that network, but not on the host network. Note that we still keep the cluster address out on the host network for performance. Consul will also accept the `-client=0.0.0.0` option to bind to all interfaces. - -## Running Consul Agent in Server Mode - -```console -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' consul agent -server -bind= -retry-join= -bootstrap-expect= -``` - -This runs a Consul server agent sharing the host's network. All of the network considerations and behavior we covered above for the client agent also apply to the server agent. A single server on its own won't be able to form a quorum and will be waiting for other servers to join. - -Just like the client agent, the `-retry-join` parameter specifies the external IP of one other agent in the cluster to use to join at startup. There are several ways to control how an agent joins the cluster, see the [agent configuration](https://www.consul.io/docs/agent/options.html) guide for more details on the `-join`, `-retry-join`, and `-atlas-join` options. The server agent also consumes a `-bootstrap-expect` option that specifies how many server agents to watch for before bootstrapping the cluster for the first time. This provides an easy way to get an orderly startup with a new cluster. See the [agent configuration](https://www.consul.io/docs/agent/options.html) guide for more details on the `-bootstrap` and `-bootstrap-expect` options. - -Note also we've set [`skip_leave_on_interrupt`](https://www.consul.io/docs/agent/options.html#skip_leave_on_interrupt) using the `CONSUL_LOCAL_CONFIG` environment variable. This is recommended for servers and will be defaulted to `true` in Consul 0.7 and later, so this will no longer be necessary. - -At startup, the agent will read config JSON files from `/consul/config`. Data will be persisted in the `/consul/data` volume. - -Once the cluster is bootstrapped and quorum is achieved, you must use care to keep the minimum number of servers operating in order to avoid an outage state for the cluster. The deployment table in the [consensus](https://www.consul.io/docs/internals/consensus.html) guide outlines the number of servers required for different configurations. There's also an [adding/removing servers](https://www.consul.io/docs/guides/servers.html) guide that describes that process, which is relevant to Docker configurations as well. The [outage recovery](https://www.consul.io/docs/guides/outage.html) guide has steps to perform if servers are permanently lost. In general it's best to restart or replace servers one at a time, making sure servers are healthy before proceeding to the next server. - -## Exposing Consul's DNS Server on Port 53 - -By default, Consul's DNS server is exposed on port 8600. Because this is cumbersome to configure with facilities like `resolv.conf`, you may want to expose DNS on port 53. Consul 0.7 and later supports this by setting an environment variable that runs `setcap` on the Consul binary, allowing it to bind to privileged ports. Note that not all Docker storage backends support this feature (notably AUFS). - -Here's an example: - -```console -$ docker run -d --net=host -e 'CONSUL_ALLOW_PRIVILEGED_PORTS=' consul -dns-port=53 -recursor=8.8.8.8 -``` - -This example also includes a recursor configuration that uses Google's DNS servers for non-Consul lookups. You may want to adjust this based on your particular DNS configuration. If you are binding Consul's client interfaces to the host's loopback address, then you should be able to configure your host's `resolv.conf` to route DNS requests to Consul by including "127.0.0.1" as the primary DNS server. This would expose Consul's DNS to all applications running on the host, but due to Docker's built-in DNS server, you can't point to this directly from inside your containers; Docker will issue an error message if you attempt to do this. You must configure Consul to listen on a non-localhost address that is reachable from within other containers. - -Once you bind Consul's client interfaces to the bridge or other network, you can use the `--dns` option in your *other containers* in order for them to use Consul's DNS server, mapped to port 53. Here's an example: - -```console -$ docker run -d --net=host -e 'CONSUL_ALLOW_PRIVILEGED_PORTS=' consul agent -dns-port=53 -recursor=8.8.8.8 -bind= -``` - -Now start another container and point it at Consul's DNS, using the bridge address of the host: - -```console -$ docker run -i --dns= -t ubuntu sh -c "apt-get update && apt-get install -y dnsutils && dig consul.service.consul" -... -;; ANSWER SECTION: -consul.service.consul. 0 IN A 66.175.220.234 -... -``` - -In the example above, adding the bridge address to the host's `/etc/resolv.conf` file should expose it to all containers without running with the `--dns` option. - -## Service Discovery with Containers - -There are several approaches you can use to register services running in containers with Consul. For manual configuration, your containers can use the local agent's APIs to register and deregister themselves, see the [Agent API](https://www.consul.io/docs/agent/http/agent.html) for more details. Another strategy is to create a derived Consul container for each host type which includes JSON config files for Consul to parse at startup, see [Services](https://www.consul.io/docs/agent/services.html) for more information. Both of these approaches are fairly cumbersome, and the configured services may fall out of sync if containers die or additional containers are started. - -If you run your containers under [HashiCorp's Nomad](https://www.nomadproject.io/) scheduler, it has [first class support for Consul](https://www.nomadproject.io/docs/jobspec/servicediscovery.html). The Nomad agent runs on each host alongside the Consul agent. When jobs are scheduled on a given host, the Nomad agent automatically takes care of syncing the Consul agent with the service information. This is very easy to manage, and even services on hosts running outside of Docker containers can be managed by Nomad and registered with Consul. You can find out more about running Docker under Nomad in the [Docker Driver](https://www.nomadproject.io/docs/drivers/docker.html) guide. - -Other open source options include [Registrator](http://gliderlabs.com/registrator/latest/) from Glider Labs and [ContainerPilot](https://www.joyent.com/containerpilot) from Joyent. Registrator works by running a Registrator instance on each host, alongside the Consul agent. Registrator monitors the Docker daemon for container stop and start events, and handles service registration with Consul using the container names and exposed ports as the service information. ContainerPilot manages service registration using tooling running inside the container to register services with Consul on start, manage a Consul TTL health check while running, and deregister services when the container stops. - -## Running Health Checks in Docker Containers - -Consul has the ability to execute health checks inside containers. If the Docker daemon is exposed to the Consul agent and the `DOCKER_HOST` environment variable is set, then checks can be configured with the Docker container ID to execute in. See the [health checks](https://www.consul.io/docs/agent/checks.html) guide for more details. - -# License - -View [license information](https://raw.githubusercontent.com/hashicorp/consul/master/LICENSE) for the software contained in this image. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `consul/` directory](https://github.com/docker-library/repo-info/tree/master/repos/consul). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/consul/content.md b/consul/content.md deleted file mode 100644 index 5535d7a67745..000000000000 --- a/consul/content.md +++ /dev/null @@ -1,197 +0,0 @@ -# Consul - -Consul is a distributed, highly-available, and multi-datacenter aware tool for service discovery, configuration, and orchestration. Consul enables rapid deployment, configuration, and maintenance of service-oriented architectures at massive scale. For more information, please see: - -- [Consul documentation](https://www.consul.io/) -- [Consul on GitHub](https://github.com/hashicorp/consul) - -%%LOGO%% - -# Consul and Docker - -Consul has several moving parts so we'll start with a brief introduction to Consul's architecture and then detail how Consul interacts with Docker. Please see the [Consul Architecture](https://www.consul.io/docs/architecture) guide for more detail on all these concepts. - -Each host in a Consul cluster runs the Consul agent, a long running daemon that can be started in client or server mode. Each cluster has at least 1 agent in server mode, and usually 3 or 5 for high availability. The server agents participate in a [consensus protocol](https://www.consul.io/docs/internals/consensus.html), maintain a centralized view of the cluster's state, and respond to queries from other agents in the cluster. The rest of the agents in client mode participate in a [gossip protocol](https://www.consul.io/docs/internals/gossip.html) to discover other agents and check them for failures, and they forward queries about the cluster to the server agents. - -Applications running on a given host communicate only with their local Consul agent, using its HTTP APIs or DNS interface. Services on the host are also registered with the local Consul agent, which syncs the information with the Consul servers. Doing the most basic DNS-based service discovery using Consul, an application queries for `foo.service.consul` and gets a randomly shuffled subset of all the hosts providing service "foo". This allows applications to locate services and balance the load without any intermediate proxies. Several HTTP APIs are also available for applications doing a deeper integration with Consul's service discovery capabilities, as well as its other features such as the key/value store. - -These concepts also apply when running Consul in Docker. Typically, you'll run a single Consul agent container on each host, running alongside the Docker daemon. You'll also need to configure some of the agents as servers (at least 3 for a basic HA setup). Consul should always be run with `--net=host` in Docker because Consul's consensus and gossip protocols are sensitive to delays and packet loss, so the extra layers involved with other networking types are usually undesirable and unnecessary. We will talk more about this below. - -We don't cover Consul's multi-datacenter capability here, but as long as `--net=host` is used, there should be no special considerations for Docker. - -# Using the Container - -We chose Alpine as a lightweight base with a reasonably small surface area for security concerns, but with enough functionality for development, interactive debugging, and useful health, watch, and exec scripts running under Consul in the container. As of Consul 0.7, the image also includes `curl` since it is so commonly used for health checks. - -Consul always runs under [dumb-init](https://github.com/Yelp/dumb-init), which handles reaping zombie processes and forwards signals on to all processes running in the container. We also use [gosu](https://github.com/tianon/gosu) to run Consul as a non-root "consul" user for better security. These binaries are all built by HashiCorp and signed with our [GPG key](https://www.hashicorp.com/security.html), so you can verify the signed package used to build a given base image. - -Running the Consul container with no arguments will give you a Consul server in [development mode](https://www.consul.io/docs/agent/options.html#_dev). The provided entry point script will also look for Consul subcommands and run `consul` as the correct user and with that subcommand. For example, you can execute `docker run %%IMAGE%% members` and it will run the `consul members` command inside the container. The entry point also adds some special configuration options as detailed in the sections below when running the `agent` subcommand. Any other command gets `exec`-ed inside the container under `dumb-init`. - -The container exposes `VOLUME /consul/data`, which is a path where Consul will place its persisted state. This isn't used in any way when running in development mode. For client agents, this stores some information about the cluster and the client's health checks in case the container is restarted. For server agents, this stores the client information plus snapshots and data related to the consensus algorithm and other state like Consul's key/value store and catalog. For servers it is highly desirable to keep this volume's data around when restarting containers to recover from outage scenarios. If this is bind mounted then ownership will be changed to the consul user when the container starts. - -The container has a Consul configuration directory set up at `/consul/config` and the agent will load any configuration files placed here by binding a volume or by composing a new image and adding files. Alternatively, configuration can be added by passing the configuration JSON via environment variable `CONSUL_LOCAL_CONFIG`. If this is bind mounted then ownership will be changed to the consul user when the container starts. - -Since Consul is almost always run with `--net=host` in Docker, some care is required when configuring Consul's IP addresses. Consul has the concept of its cluster address as well as its client address. The cluster address is the address at which other Consul agents may contact a given agent. The client address is the address where other processes on the host contact Consul in order to make HTTP or DNS requests. You will typically need to tell Consul what its cluster address is when starting so that it binds to the correct interface and advertises a workable interface to the rest of the Consul agents. You'll see this in the examples below as the `-bind=` argument to Consul. - -The entry point also includes a small utility to look up a client or bind address by interface name. To use this, set the `CONSUL_CLIENT_INTERFACE` and/or `CONSUL_BIND_INTERFACE` environment variables to the name of the interface you'd like Consul to use and a `-client=` and/or `-bind=` argument will be computed and passed to Consul at startup. - -## Running Consul for Development - -```console -$ docker run -d --name=dev-consul -e CONSUL_BIND_INTERFACE=eth0 %%IMAGE%% -``` - -This runs a completely in-memory Consul server agent with default bridge networking and no services exposed on the host, which is useful for development but should not be used in production. For example, if that server is running at internal address 172.17.0.2, you can run a three node cluster for development by starting up two more instances and telling them to join the first node. - -```console -$ docker run -d -e CONSUL_BIND_INTERFACE=eth0 %%IMAGE%% agent -dev -join=172.17.0.2 -... server 2 starts -$ docker run -d -e CONSUL_BIND_INTERFACE=eth0 %%IMAGE%% agent -dev -join=172.17.0.2 -... server 3 starts -``` - -Then we can query for all the members in the cluster by running a Consul CLI command in the first container: - -```console -$ docker exec -t dev-consul %%IMAGE%% members -Node Address Status Type Build Protocol DC -579db72c1ae1 172.17.0.3:8301 alive server 0.6.3 2 dc1 -93fe2309ef19 172.17.0.4:8301 alive server 0.6.3 2 dc1 -c9caabfd4c2a 172.17.0.2:8301 alive server 0.6.3 2 dc1 -``` - -Remember that Consul doesn't use the data volume in this mode - once the container stops all of your state will be wiped out, so please don't use this mode for production. Running completely on the bridge network with the development server is useful for testing multiple instances of Consul on a single machine, which is normally difficult to do because of port conflicts. - -Development mode also starts a version of Consul's web UI on port 8500. This can be added to the other Consul configurations by supplying the `-ui` option to Consul on the command line. The web assets are bundled inside the Consul binary in the container. - -## Running Consul Agent in Client Mode - -```console -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"leave_on_terminate": true}' %%IMAGE%% agent -bind= -retry-join= -==> Starting Consul agent... -==> Starting Consul agent RPC... -==> Consul agent running! - Node name: 'linode' - Datacenter: 'dc1' - Server: false (bootstrap: false) - Client Addr: 127.0.0.1 (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) - Cluster Addr: (LAN: 8301, WAN: 8302) - Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false - Atlas: -... -``` - -This runs a Consul client agent sharing the host's network and advertising the external IP address to the rest of the cluster. Note that the agent defaults to binding its client interfaces to 127.0.0.1, which is the host's loopback interface. This would be a good configuration to use if other containers on the host also use `--net=host`, and it also exposes the agent to processes running directly on the host outside a container, such as HashiCorp's Nomad. - -The `-retry-join` parameter specifies the external IP of one other agent in the cluster to use to join at startup. There are several ways to control how an agent joins the cluster, see the [agent configuration](https://www.consul.io/docs/agent/options.html) guide for more details on the `-join`, `-retry-join`, and `-atlas-join` options. - -Note also we've set [`leave_on_terminate`](https://www.consul.io/docs/agent/options.html#leave_on_terminate) using the `CONSUL_LOCAL_CONFIG` environment variable. This is recommended for clients to and will be defaulted to `true` in Consul 0.7 and later, so this will no longer be necessary. - -At startup, the agent will read config JSON files from `/consul/config`. Data will be persisted in the `/consul/data` volume. - -Here are some example queries on a host with an external IP of 66.175.220.234: - -```console -$ curl http://localhost:8500/v1/health/service/consul?pretty -[ - { - "Node": { - "Node": "linode", - "Address": "66.175.220.234", -... -``` - -```console -$ dig @localhost -p 8600 consul.service.consul -; <<>> DiG 9.9.5-3ubuntu0.7-Ubuntu <<>> @localhost -p 8600 consul.service.consul -; (2 servers found) -;; global options: +cmd -;; Got answer: -;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 61616 -;; flags: qr aa rd; QUERY: 1, ANSWER: 1, AUTHORITY: 0, ADDITIONAL: 0 -;; WARNING: recursion requested but not available - -;; QUESTION SECTION: -;consul.service.consul. IN A - -;; ANSWER SECTION: -consul.service.consul. 0 IN A 66.175.220.234 -... -``` - -If you want to expose the Consul interfaces to other containers via a different network, such as the bridge network, use the `-client` option for Consul: - -```console -docker run -d --net=host %%IMAGE%% agent -bind= -client= -retry-join= -==> Starting Consul agent... -==> Starting Consul agent RPC... -==> Consul agent running! - Node name: 'linode' - Datacenter: 'dc1' - Server: false (bootstrap: false) - Client Addr: (HTTP: 8500, HTTPS: -1, DNS: 8600, RPC: 8400) - Cluster Addr: (LAN: 8301, WAN: 8302) - Gossip encrypt: false, RPC-TLS: false, TLS-Incoming: false - Atlas: -... -``` - -With this configuration, Consul's client interfaces will be bound to the bridge IP and available to other containers on that network, but not on the host network. Note that we still keep the cluster address out on the host network for performance. Consul will also accept the `-client=0.0.0.0` option to bind to all interfaces. - -## Running Consul Agent in Server Mode - -```console -$ docker run -d --net=host -e 'CONSUL_LOCAL_CONFIG={"skip_leave_on_interrupt": true}' %%IMAGE%% agent -server -bind= -retry-join= -bootstrap-expect= -``` - -This runs a Consul server agent sharing the host's network. All of the network considerations and behavior we covered above for the client agent also apply to the server agent. A single server on its own won't be able to form a quorum and will be waiting for other servers to join. - -Just like the client agent, the `-retry-join` parameter specifies the external IP of one other agent in the cluster to use to join at startup. There are several ways to control how an agent joins the cluster, see the [agent configuration](https://www.consul.io/docs/agent/options.html) guide for more details on the `-join`, `-retry-join`, and `-atlas-join` options. The server agent also consumes a `-bootstrap-expect` option that specifies how many server agents to watch for before bootstrapping the cluster for the first time. This provides an easy way to get an orderly startup with a new cluster. See the [agent configuration](https://www.consul.io/docs/agent/options.html) guide for more details on the `-bootstrap` and `-bootstrap-expect` options. - -Note also we've set [`skip_leave_on_interrupt`](https://www.consul.io/docs/agent/options.html#skip_leave_on_interrupt) using the `CONSUL_LOCAL_CONFIG` environment variable. This is recommended for servers and will be defaulted to `true` in Consul 0.7 and later, so this will no longer be necessary. - -At startup, the agent will read config JSON files from `/consul/config`. Data will be persisted in the `/consul/data` volume. - -Once the cluster is bootstrapped and quorum is achieved, you must use care to keep the minimum number of servers operating in order to avoid an outage state for the cluster. The deployment table in the [consensus](https://www.consul.io/docs/internals/consensus.html) guide outlines the number of servers required for different configurations. There's also an [adding/removing servers](https://www.consul.io/docs/guides/servers.html) guide that describes that process, which is relevant to Docker configurations as well. The [outage recovery](https://www.consul.io/docs/guides/outage.html) guide has steps to perform if servers are permanently lost. In general it's best to restart or replace servers one at a time, making sure servers are healthy before proceeding to the next server. - -## Exposing Consul's DNS Server on Port 53 - -By default, Consul's DNS server is exposed on port 8600. Because this is cumbersome to configure with facilities like `resolv.conf`, you may want to expose DNS on port 53. Consul 0.7 and later supports this by setting an environment variable that runs `setcap` on the Consul binary, allowing it to bind to privileged ports. Note that not all Docker storage backends support this feature (notably AUFS). - -Here's an example: - -```console -$ docker run -d --net=host -e 'CONSUL_ALLOW_PRIVILEGED_PORTS=' %%IMAGE%% -dns-port=53 -recursor=8.8.8.8 -``` - -This example also includes a recursor configuration that uses Google's DNS servers for non-Consul lookups. You may want to adjust this based on your particular DNS configuration. If you are binding Consul's client interfaces to the host's loopback address, then you should be able to configure your host's `resolv.conf` to route DNS requests to Consul by including "127.0.0.1" as the primary DNS server. This would expose Consul's DNS to all applications running on the host, but due to Docker's built-in DNS server, you can't point to this directly from inside your containers; Docker will issue an error message if you attempt to do this. You must configure Consul to listen on a non-localhost address that is reachable from within other containers. - -Once you bind Consul's client interfaces to the bridge or other network, you can use the `--dns` option in your *other containers* in order for them to use Consul's DNS server, mapped to port 53. Here's an example: - -```console -$ docker run -d --net=host -e 'CONSUL_ALLOW_PRIVILEGED_PORTS=' %%IMAGE%% agent -dns-port=53 -recursor=8.8.8.8 -bind= -``` - -Now start another container and point it at Consul's DNS, using the bridge address of the host: - -```console -$ docker run -i --dns= -t ubuntu sh -c "apt-get update && apt-get install -y dnsutils && dig consul.service.consul" -... -;; ANSWER SECTION: -consul.service.consul. 0 IN A 66.175.220.234 -... -``` - -In the example above, adding the bridge address to the host's `/etc/resolv.conf` file should expose it to all containers without running with the `--dns` option. - -## Service Discovery with Containers - -There are several approaches you can use to register services running in containers with Consul. For manual configuration, your containers can use the local agent's APIs to register and deregister themselves, see the [Agent API](https://www.consul.io/docs/agent/http/agent.html) for more details. Another strategy is to create a derived Consul container for each host type which includes JSON config files for Consul to parse at startup, see [Services](https://www.consul.io/docs/agent/services.html) for more information. Both of these approaches are fairly cumbersome, and the configured services may fall out of sync if containers die or additional containers are started. - -If you run your containers under [HashiCorp's Nomad](https://www.nomadproject.io/) scheduler, it has [first class support for Consul](https://www.nomadproject.io/docs/jobspec/servicediscovery.html). The Nomad agent runs on each host alongside the Consul agent. When jobs are scheduled on a given host, the Nomad agent automatically takes care of syncing the Consul agent with the service information. This is very easy to manage, and even services on hosts running outside of Docker containers can be managed by Nomad and registered with Consul. You can find out more about running Docker under Nomad in the [Docker Driver](https://www.nomadproject.io/docs/drivers/docker.html) guide. - -Other open source options include [Registrator](http://gliderlabs.com/registrator/latest/) from Glider Labs and [ContainerPilot](https://www.joyent.com/containerpilot) from Joyent. Registrator works by running a Registrator instance on each host, alongside the Consul agent. Registrator monitors the Docker daemon for container stop and start events, and handles service registration with Consul using the container names and exposed ports as the service information. ContainerPilot manages service registration using tooling running inside the container to register services with Consul on start, manage a Consul TTL health check while running, and deregister services when the container stops. - -## Running Health Checks in Docker Containers - -Consul has the ability to execute health checks inside containers. If the Docker daemon is exposed to the Consul agent and the `DOCKER_HOST` environment variable is set, then checks can be configured with the Docker container ID to execute in. See the [health checks](https://www.consul.io/docs/agent/checks.html) guide for more details. diff --git a/consul/github-repo b/consul/github-repo deleted file mode 100644 index d3aa632b633f..000000000000 --- a/consul/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/hashicorp/docker-consul diff --git a/consul/license.md b/consul/license.md deleted file mode 100644 index d565b3812251..000000000000 --- a/consul/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://raw.githubusercontent.com/hashicorp/consul/master/LICENSE) for the software contained in this image. diff --git a/consul/logo.svg b/consul/logo.svg deleted file mode 100644 index 94c38977d8d9..000000000000 --- a/consul/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/consul/maintainer.md b/consul/maintainer.md deleted file mode 120000 index ef4100e019a3..000000000000 --- a/consul/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-hashicorp.md \ No newline at end of file diff --git a/convertigo/README-short.txt b/convertigo/README-short.txt index 3d2df5140a57..c61df8fe4bb8 100644 --- a/convertigo/README-short.txt +++ b/convertigo/README-short.txt @@ -1 +1 @@ -Open source Low Code & No Code Application Platform featuring MXDP/MBaaS for full-stack development. \ No newline at end of file +Enterprise grade full-stack Open source Low Code & No Code Platform for web & mobile application \ No newline at end of file diff --git a/convertigo/README.md b/convertigo/README.md index 218bfcf3d880..8b66af13c99c 100644 --- a/convertigo/README.md +++ b/convertigo/README.md @@ -24,15 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.1.0`, `8.1`, `latest`](https://github.com/convertigo/convertigo/blob/070f8a67e61a7a9bc701ddadae0a0a0fba9470a3/docker/default/Dockerfile) +- [`8.3.10`, `8.3`, `latest`](https://github.com/convertigo/convertigo/blob/627b70f12e7af2b84bbdb9004c7e338802ee6567/docker/default/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/convertigo/docker/issues](https://github.com/convertigo/docker/issues) + [https://github.com/convertigo/docker/issues](https://github.com/convertigo/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/convertigo/) + [`amd64`](https://hub.docker.com/r/amd64/convertigo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/convertigo/) - **Published image artifact details**: [repo-info repo's `repos/convertigo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/convertigo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/convertigo)) @@ -50,9 +50,8 @@ WARNING: Convertigo is an open source fullstack Low Code & No Code platform. The platform is used to build Enterprise Web & Mobile apps in a few days. Convertigo platform is composed of several components: 1. **Convertigo Server**: The back-end server part. Handles back-end connectors, micro-services execution, offline data device synchronization and serves Web & Mobile Web apps. Runs as a Docker container with the `convertigo` image -2. **Convertigo Studio**: Runs on a Windows or a MacOS workstation, Eclipse based IDE, used to program Back-end micro-services workflows and use the "Mobile Builder" edition to build Mobile & Web apps UIs in a MXDP (Multi eXperience Development Platform) Low code mode. Can be directly downloaded from [Sourceforge.net](https://sourceforge.net/projects/convertigo/files/latest/download) -3. **Convertigo SDKs**: Can be used with third party Client Web & Mobile development tools such as Xcode (iOS) Android Studio (Android) Angualr, Vue.js or plain js . SDKS are available on each platform standard repository (Bintray for Android, Cocoapods for iOS and Nuget for .NET) -4. **Convertigo Forms**: The No Code App Builder to build form based apps as PWAs or Web applications with a Web Based NoCode studio intented for non technical developpers (Citizen Developpers) +2. **Convertigo Studio**: Runs on a Windows or a MacOS workstation, Eclipse based IDE, used to program Back-end micro-services workflows and use the "Mobile Builder" edition to build Mobile & Web apps UIs in a MXDP (Multi eXperience Development Platform) Low code mode. Can be directly downloaded from [Convertigo](https://www.convertigo.com/get-started-page) +3. **Convertigo NoCode Studio**: The No Code App Builder to build form based apps as PWAs or Web applications with a Web Based NoCode studio intented for non technical developpers (Citizen Developpers) Convertigo Community edition brought to you by Convertigo SA (Paris & San Francisco). The platform is currently used by more than 100K developers worldwide, building enterprise class mobile apps. @@ -117,7 +116,7 @@ convertigo ## Where is Convertigo Low Code server storing deployed projects -Projects are deployed in the Convertigo workspace, a simple file system directory. You can map the docker container **/workspace** to your physical system by using : +Projects are deployed in the Convertigo workspace, a simple file system directory. You can map the docker container **/workspace** to your physical system by using: ```console $ docker run --name C8O -v $(pwd):/workspace -d -p 28080:28080 convertigo @@ -239,6 +238,16 @@ $ docker run -d --name C8O -e JAVA_OPTS="-DjvmRoute=server1" -p 28080:28080 conv [Here the list of convertigo specific properties](https://www.convertigo.com/documentation/latest/operating-guide/appendixes/#list-of-convertigo-java-system-properties) (don't forget the `-Dconvertigo.engine.` prefix). +## `LOG_STDOUT` and `LOG_FILE` Environment variables + +Convertigo generates many logs in a **engine.log** file that can be consulted via the Convertigo Administration Console. In some environments, it's easiest to read logs from the container's standard output. Set this property `true` to enable console output. The default value is `false`. + +Log file still exists until you add the `LOG_FILE=false` environment variable : + +```console + docker run -d --name C8O -e LOG_STDOUT=true -e LOG_FILE=false -p 28080:28080 convertigo +``` + ## `JXMX` Environment variable Convertigo tries to allocate this amount of memory in the container and will automatically reduce it until the value is compatible for the Docker memory constraints. Once the best value found, it is used as `-Xmx=${JXMX}m` parameter for the JVM. @@ -295,7 +304,7 @@ $ docker run -d --name C8O -e SESSION_TIMEOUT=5 -p 28080:28080 convertigo ## `DISABLE_SUDO` Environment variable -The image include **sudo** command line, configured to allow the **convertigo** user to use it without password and to perform some **root** action inside the container. This variable allows to disable this permission. +The image includes **sudo** command line, configured to allow the **convertigo** user to use it without password and to perform some **root** action inside the container. This variable allows to disable this permission. The default `DISABLE_SUDO` value is **empty** and can be defined this way: @@ -303,15 +312,25 @@ The default `DISABLE_SUDO` value is **empty** and can be defined this way: $ docker run -d --name C8O -e DISABLE_SUDO=true -p 28080:28080 convertigo ``` -## Pre configurated Docker compose stack +## `ENABLE_JDWP_DEBUG` Environment variable + +Convertigo operates using the JVM (Java Virtual Machine). To enable remote debugging of the JVM, it's necessary to start it with specific options. By default, this configuration is not enabled. However, if you wish to automatically activate remote debugging over the JDWP port 8000, set the `ENABLE_JDWP_DEBUG` value to **true**. + +The default `ENABLE_JDWP_DEBUG` value is **false** and can be defined this way: + +```console +$ docker run -d –name C8O -e ENABLE_JDWP_DEBUG=true -p 28080:28080 convertigo +``` + +## Pre-configurated Docker Compose file -You can use this [stack](https://github.com/convertigo/docker/blob/master/compose/mbaas/docker-compose.yml) to run a complete Convertigo Low Code server with FullSync repository and MySQL analytics in a few command lines. +You can use [this Docker Compose file](https://github.com/convertigo/docker/blob/master/compose/mbaas/docker-compose.yml) to run a complete Convertigo Low Code server with FullSync repository and MySQL analytics in a few command lines. ```console $ mkdir c8oMBaaS $ cd c8oMBaaS $ wget https://raw.githubusercontent.com/convertigo/docker/master/compose/mbaas/docker-compose.yml -$ docker-compose up -d +$ docker compose up -d ``` # License diff --git a/convertigo/content.md b/convertigo/content.md index dbcff92d7603..4e0df74a3371 100644 --- a/convertigo/content.md +++ b/convertigo/content.md @@ -3,9 +3,8 @@ Convertigo is an open source fullstack Low Code & No Code platform. The platform is used to build Enterprise Web & Mobile apps in a few days. Convertigo platform is composed of several components: 1. **Convertigo Server**: The back-end server part. Handles back-end connectors, micro-services execution, offline data device synchronization and serves Web & Mobile Web apps. Runs as a Docker container with the `convertigo` image -2. **Convertigo Studio**: Runs on a Windows or a MacOS workstation, Eclipse based IDE, used to program Back-end micro-services workflows and use the "Mobile Builder" edition to build Mobile & Web apps UIs in a MXDP (Multi eXperience Development Platform) Low code mode. Can be directly downloaded from [Sourceforge.net](https://sourceforge.net/projects/convertigo/files/latest/download) -3. **Convertigo SDKs**: Can be used with third party Client Web & Mobile development tools such as Xcode (iOS) Android Studio (Android) Angualr, Vue.js or plain js . SDKS are available on each platform standard repository (Bintray for Android, Cocoapods for iOS and Nuget for .NET) -4. **Convertigo Forms**: The No Code App Builder to build form based apps as PWAs or Web applications with a Web Based NoCode studio intented for non technical developpers (Citizen Developpers) +2. **Convertigo Studio**: Runs on a Windows or a MacOS workstation, Eclipse based IDE, used to program Back-end micro-services workflows and use the "Mobile Builder" edition to build Mobile & Web apps UIs in a MXDP (Multi eXperience Development Platform) Low code mode. Can be directly downloaded from [Convertigo](https://www.convertigo.com/get-started-page) +3. **Convertigo NoCode Studio**: The No Code App Builder to build form based apps as PWAs or Web applications with a Web Based NoCode studio intented for non technical developpers (Citizen Developpers) Convertigo Community edition brought to you by Convertigo SA (Paris & San Francisco). The platform is currently used by more than 100K developers worldwide, building enterprise class mobile apps. @@ -70,7 +69,7 @@ $ docker run -d --name C8O --link [mysql-container]:mysql -p 28080:28080 ## Where is Convertigo Low Code server storing deployed projects -Projects are deployed in the Convertigo workspace, a simple file system directory. You can map the docker container **/workspace** to your physical system by using : +Projects are deployed in the Convertigo workspace, a simple file system directory. You can map the docker container **/workspace** to your physical system by using: ```console $ docker run --name C8O -v $(pwd):/workspace -d -p 28080:28080 %%IMAGE%% @@ -192,6 +191,16 @@ $ docker run -d --name C8O -e JAVA_OPTS="-DjvmRoute=server1" -p 28080:28080 %%IM [Here the list of convertigo specific properties](https://www.convertigo.com/documentation/latest/operating-guide/appendixes/#list-of-convertigo-java-system-properties) (don't forget the `-Dconvertigo.engine.` prefix). +## `LOG_STDOUT` and `LOG_FILE` Environment variables + +Convertigo generates many logs in a **engine.log** file that can be consulted via the Convertigo Administration Console. In some environments, it's easiest to read logs from the container's standard output. Set this property `true` to enable console output. The default value is `false`. + +Log file still exists until you add the `LOG_FILE=false` environment variable : + +```console + docker run -d --name C8O -e LOG_STDOUT=true -e LOG_FILE=false -p 28080:28080 convertigo +``` + ## `JXMX` Environment variable Convertigo tries to allocate this amount of memory in the container and will automatically reduce it until the value is compatible for the Docker memory constraints. Once the best value found, it is used as `-Xmx=${JXMX}m` parameter for the JVM. @@ -248,7 +257,7 @@ $ docker run -d --name C8O -e SESSION_TIMEOUT=5 -p 28080:28080 %%IMAGE%% ## `DISABLE_SUDO` Environment variable -The image include **sudo** command line, configured to allow the **convertigo** user to use it without password and to perform some **root** action inside the container. This variable allows to disable this permission. +The image includes **sudo** command line, configured to allow the **convertigo** user to use it without password and to perform some **root** action inside the container. This variable allows to disable this permission. The default `DISABLE_SUDO` value is **empty** and can be defined this way: @@ -256,13 +265,23 @@ The default `DISABLE_SUDO` value is **empty** and can be defined this way: $ docker run -d --name C8O -e DISABLE_SUDO=true -p 28080:28080 %%IMAGE%% ``` -## Pre configurated Docker compose stack +## `ENABLE_JDWP_DEBUG` Environment variable + +Convertigo operates using the JVM (Java Virtual Machine). To enable remote debugging of the JVM, it's necessary to start it with specific options. By default, this configuration is not enabled. However, if you wish to automatically activate remote debugging over the JDWP port 8000, set the `ENABLE_JDWP_DEBUG` value to **true**. + +The default `ENABLE_JDWP_DEBUG` value is **false** and can be defined this way: + +```console +$ docker run -d –name C8O -e ENABLE_JDWP_DEBUG=true -p 28080:28080 %%IMAGE%% +``` + +## Pre-configurated Docker Compose file -You can use this [stack](https://github.com/convertigo/docker/blob/master/compose/mbaas/docker-compose.yml) to run a complete Convertigo Low Code server with FullSync repository and MySQL analytics in a few command lines. +You can use [this Docker Compose file](https://github.com/convertigo/docker/blob/master/compose/mbaas/docker-compose.yml) to run a complete Convertigo Low Code server with FullSync repository and MySQL analytics in a few command lines. ```console $ mkdir c8oMBaaS $ cd c8oMBaaS $ wget https://raw.githubusercontent.com/convertigo/docker/master/compose/mbaas/docker-compose.yml -$ docker-compose up -d +$ docker compose up -d ``` diff --git a/convertigo/metadata.json b/convertigo/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/convertigo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/couchbase/README.md b/couchbase/README.md index 9a11223011b2..1cfc787c014b 100644 --- a/couchbase/README.md +++ b/couchbase/README.md @@ -24,17 +24,60 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7.1.3`, `enterprise-7.1.3`, `enterprise`, `latest`](https://github.com/couchbase/docker/blob/ae715392f6a8bff71ce2e5e99d62492d19c85dd2/enterprise/couchbase-server/7.1.3/Dockerfile) -- [`community-7.1.1`, `community`](https://github.com/couchbase/docker/blob/bfbb82c084ca3ada6252afbbcb3ca94bb65f1e58/community/couchbase-server/7.1.1/Dockerfile) -- [`7.0.5`, `enterprise-7.0.5`](https://github.com/couchbase/docker/blob/ca816b6ffa5c36007bd4b3386ec24df081a00ea0/enterprise/couchbase-server/7.0.5/Dockerfile) -- [`community-7.0.2`](https://github.com/couchbase/docker/blob/aec4494ab5280caf567997d72714f57572a6315b/community/couchbase-server/7.0.2/Dockerfile) -- [`6.6.5`, `enterprise-6.6.5`](https://github.com/couchbase/docker/blob/aad4aa9714578906c0c993121654eaeba0bd907c/enterprise/couchbase-server/6.6.5/Dockerfile) -- [`community-6.6.0`](https://github.com/couchbase/docker/blob/aad4aa9714578906c0c993121654eaeba0bd907c/community/couchbase-server/6.6.0/Dockerfile) +- [`8.0.0`, `enterprise`, `enterprise-8.0.0`, `latest`](https://github.com/couchbase/docker/blob/c11b8eac06fe26a16b2e2b17020a965d45d7f329/enterprise/couchbase-server/8.0.0/Dockerfile) + +- [`community`, `community-8.0.0`](https://github.com/couchbase/docker/blob/e2600d59a2b84984adeccbe1c0f8b5d926d4b529/community/couchbase-server/8.0.0/Dockerfile) + +- [`7.6.8`, `enterprise-7.6.8`](https://github.com/couchbase/docker/blob/79e990af7621fa397c0dc12fd08bad6db4f49476/enterprise/couchbase-server/7.6.8/Dockerfile) + +- [`7.6.7`, `enterprise-7.6.7`](https://github.com/couchbase/docker/blob/a322cc7110124b2581339f52d88bab80fb50016d/enterprise/couchbase-server/7.6.7/Dockerfile) + +- [`7.6.6`, `enterprise-7.6.6`](https://github.com/couchbase/docker/blob/9ce3cbc835dd4e072943ac7878aa7f87d6b95178/enterprise/couchbase-server/7.6.6/Dockerfile) + +- [`7.6.5`, `enterprise-7.6.5`](https://github.com/couchbase/docker/blob/ec16abff6f0551ced6c771bd5606a4392379dd31/enterprise/couchbase-server/7.6.5/Dockerfile) + +- [`7.6.4`, `enterprise-7.6.4`](https://github.com/couchbase/docker/blob/9990e2cfabc94b37607e5666d9ef1eab69a397a6/enterprise/couchbase-server/7.6.4/Dockerfile) + +- [`7.6.3`, `enterprise-7.6.3`](https://github.com/couchbase/docker/blob/553d1baa4aa90fe506e1d7bcdf4daec387a110fe/enterprise/couchbase-server/7.6.3/Dockerfile) + +- [`7.6.2`, `enterprise-7.6.2`](https://github.com/couchbase/docker/blob/ce13f602d2c95f76835c67a8855d5e73480973a6/enterprise/couchbase-server/7.6.2/Dockerfile) + +- [`community-7.6.2`](https://github.com/couchbase/docker/blob/3f81af158b7f307e42f8c42ceaf7657b2690bfca/community/couchbase-server/7.6.2/Dockerfile) + +- [`7.6.1`, `enterprise-7.6.1`](https://github.com/couchbase/docker/blob/966143f937bfe6979b7c09b86684004fdd21e5b8/enterprise/couchbase-server/7.6.1/Dockerfile) + +- [`community-7.6.1`](https://github.com/couchbase/docker/blob/a18464c9b23efba391317fd21f898bf64dff6ec1/community/couchbase-server/7.6.1/Dockerfile) + +- [`7.6.0`, `enterprise-7.6.0`](https://github.com/couchbase/docker/blob/9bdcf41deedd86da4c71347ffeea350a9895d816/enterprise/couchbase-server/7.6.0/Dockerfile) + +- [`community-7.6.0`](https://github.com/couchbase/docker/blob/6d669d0e34e6990b43c1b91ea74720235c96c4ac/community/couchbase-server/7.6.0/Dockerfile) + +- [`7.2.8`, `enterprise-7.2.8`](https://github.com/couchbase/docker/blob/5023e9104d765a15cde8e978be5266a6f1889fb0/enterprise/couchbase-server/7.2.8/Dockerfile) + +- [`7.2.7`, `enterprise-7.2.7`](https://github.com/couchbase/docker/blob/23887cae4fd6ce054f383d524a7975d2e3a6b72e/enterprise/couchbase-server/7.2.7/Dockerfile) + +- [`7.2.6`, `enterprise-7.2.6`](https://github.com/couchbase/docker/blob/181af64dcbedc1abf6e0916d9f5373cf1c18cb6e/enterprise/couchbase-server/7.2.6/Dockerfile) + +- [`7.2.5`, `enterprise-7.2.5`](https://github.com/couchbase/docker/blob/94d97d9eea3d4057846be28f319940927d5166cb/enterprise/couchbase-server/7.2.5/Dockerfile) + +- [`7.2.4`, `enterprise-7.2.4`](https://github.com/couchbase/docker/blob/15c1c3c0b4717a8b23ef7962f3fde28fe68e4311/enterprise/couchbase-server/7.2.4/Dockerfile) + +- [`community-7.2.4`](https://github.com/couchbase/docker/blob/7c8453ef8584ff18f7b6c052828758693af4f72c/community/couchbase-server/7.2.4/Dockerfile) + +- [`7.2.3`, `enterprise-7.2.3`](https://github.com/couchbase/docker/blob/b54049418018144369816d18c63d9bf76e34bc9f/enterprise/couchbase-server/7.2.3/Dockerfile) + +- [`7.2.2`, `enterprise-7.2.2`](https://github.com/couchbase/docker/blob/3515fb617a469a5f46d492cf6910dddff8efb825/enterprise/couchbase-server/7.2.2/Dockerfile) + +- [`community-7.2.2`](https://github.com/couchbase/docker/blob/c7a25ac7f38a81a465aa97f1a1d753a6c579954f/community/couchbase-server/7.2.2/Dockerfile) + +- [`7.2.0`, `enterprise-7.2.0`](https://github.com/couchbase/docker/blob/4e769975179dc4e5bf4138349818bc8a0e191c9f/enterprise/couchbase-server/7.2.0/Dockerfile) + +- [`community-7.2.0`](https://github.com/couchbase/docker/blob/71596d088ce2bc0218418187ac40ffccb08dbc36/community/couchbase-server/7.2.0/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/couchbase/docker/issues](https://github.com/couchbase/docker/issues) + [https://github.com/couchbase/docker/issues](https://github.com/couchbase/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/couchbase/), [`arm64v8`](https://hub.docker.com/r/arm64v8/couchbase/) @@ -216,7 +259,7 @@ Start Free Trial - https://cloud.couchbase.com/sign-up Couchbase Server comes in two editions: Enterprise Edition and Community Edition. You can find details on the differences between the two and licensing information on the [Couchbase Server Editions](https://docs.couchbase.com/server/current/introduction/editions.html) page. -- **Enterprise Edition** -- The Enterprise Edition license provides for free for development and testing for Couchbase Enterprise Edition. A paid subscription for production deployment is required. Please refer to the [pricing](https://www.couchbase.com/pricing) page for details on Couchbase’s Enterprise Edition. +- **Enterprise Edition** -- The Enterprise Edition license provides for free for development and testing for Couchbase Enterprise Edition. A paid subscription for production deployment is required. Please refer to the [pricing](https://www.couchbase.com/pricing) page for details on Couchbase's Enterprise Edition. - **Community Edition** -- The Community Edition license provides for free deployment of Couchbase Community Edition for departmental-scale deployments of up to five node clusters. It has recently been changed to disallow use of XDCR, which is now an exclusive Enterprise Edition feature. diff --git a/couchbase/license.md b/couchbase/license.md index f7dfed031255..617fca49366a 100644 --- a/couchbase/license.md +++ b/couchbase/license.md @@ -1,5 +1,5 @@ Couchbase Server comes in two editions: Enterprise Edition and Community Edition. You can find details on the differences between the two and licensing information on the [Couchbase Server Editions](https://docs.couchbase.com/server/current/introduction/editions.html) page. -- **Enterprise Edition** -- The Enterprise Edition license provides for free for development and testing for Couchbase Enterprise Edition. A paid subscription for production deployment is required. Please refer to the [pricing](https://www.couchbase.com/pricing) page for details on Couchbase’s Enterprise Edition. +- **Enterprise Edition** -- The Enterprise Edition license provides for free for development and testing for Couchbase Enterprise Edition. A paid subscription for production deployment is required. Please refer to the [pricing](https://www.couchbase.com/pricing) page for details on Couchbase's Enterprise Edition. - **Community Edition** -- The Community Edition license provides for free deployment of Couchbase Community Edition for departmental-scale deployments of up to five node clusters. It has recently been changed to disallow use of XDCR, which is now an exclusive Enterprise Edition feature. diff --git a/couchbase/metadata.json b/couchbase/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/couchbase/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/couchdb/README.md b/couchdb/README.md index 59525d3690b3..a5adb3835e09 100644 --- a/couchdb/README.md +++ b/couchdb/README.md @@ -24,18 +24,21 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`, `3.3.1`, `3.3`, `3`](https://github.com/apache/couchdb-docker/blob/41b7e8df5ad77c628cc6edb8419d4ade96ccba55/3.3.1/Dockerfile) -- [`3.2.2`, `3.2`](https://github.com/apache/couchdb-docker/blob/41b7e8df5ad77c628cc6edb8419d4ade96ccba55/3.2.2/Dockerfile) -- [`3.1.2`, `3.1`](https://github.com/apache/couchdb-docker/blob/41b7e8df5ad77c628cc6edb8419d4ade96ccba55/3.1.2/Dockerfile) -- [`2.3.1`, `2.3`, `2`](https://github.com/apache/couchdb-docker/blob/41b7e8df5ad77c628cc6edb8419d4ade96ccba55/2.3.1/Dockerfile) +- [`latest`, `3.5.1`, `3.5`, `3`](https://github.com/apache/couchdb-docker/blob/4c82ee090d6299c27616f30d93c9622f769431dd/3.5.1/Dockerfile) + +- [`3.5.1-nouveau`, `3.5-nouveau`, `3-nouveau`](https://github.com/apache/couchdb-docker/blob/4c82ee090d6299c27616f30d93c9622f769431dd/3.5.1-nouveau/Dockerfile) + +- [`3.4.3`, `3.4`](https://github.com/apache/couchdb-docker/blob/4c82ee090d6299c27616f30d93c9622f769431dd/3.4.3/Dockerfile) + +- [`3.4.3-nouveau`, `3.4-nouveau`](https://github.com/apache/couchdb-docker/blob/4c82ee090d6299c27616f30d93c9622f769431dd/3.4.3-nouveau/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/apache/couchdb-docker/issues](https://github.com/apache/couchdb-docker/issues) + [https://github.com/apache/couchdb-docker/issues](https://github.com/apache/couchdb-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/couchdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/couchdb/), [`ppc64le`](https://hub.docker.com/r/ppc64le/couchdb/) + [`amd64`](https://hub.docker.com/r/amd64/couchdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/couchdb/), [`s390x`](https://hub.docker.com/r/s390x/couchdb/) - **Published image artifact details**: [repo-info repo's `repos/couchdb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/couchdb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/couchdb)) @@ -62,7 +65,7 @@ Store your data safely, on your own servers, or with any leading cloud provider. ## Start a CouchDB instance -Starting a CouchDB instantce is simple: +Starting a CouchDB instance is simple: ```console $ docker run -d --name my-couchdb couchdb:tag @@ -139,8 +142,8 @@ In addition, a few environment variables are provided to set very common paramet Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `couchdb` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: diff --git a/couchdb/content.md b/couchdb/content.md index f5aa10a703fb..cc717d66136d 100644 --- a/couchdb/content.md +++ b/couchdb/content.md @@ -12,7 +12,7 @@ Store your data safely, on your own servers, or with any leading cloud provider. ## Start a CouchDB instance -Starting a CouchDB instantce is simple: +Starting a CouchDB instance is simple: ```console $ docker run -d --name my-couchdb %%IMAGE%%:tag @@ -89,8 +89,8 @@ In addition, a few environment variables are provided to set very common paramet Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: diff --git a/couchdb/metadata.json b/couchdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/couchdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/crate/README.md b/crate/README.md index 3b3d78d4c7f0..6236ba8d9099 100644 --- a/crate/README.md +++ b/crate/README.md @@ -24,14 +24,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.1.2`, `5.1`, `latest`](https://github.com/crate/docker-crate/blob/88e4f9a14bef02c996c5b657633ef78e05274418/Dockerfile) -- [`5.0.3`, `5.0`](https://github.com/crate/docker-crate/blob/0b872eae2e0300879907405a8177be4418fe2a15/Dockerfile) -- [`4.8.4`, `4.8`](https://github.com/crate/docker-crate/blob/1389b454dc1478efcbde8f9846bdd8ac6f7f0f8a/Dockerfile) +- [`6.0.3`, `6.0`, `latest`](https://github.com/crate/docker-crate/blob/3b12723f798d4a57003c05ab50c938ca40b25f40/Dockerfile) + +- [`5.10.14`, `5.10`](https://github.com/crate/docker-crate/blob/b48f566bfa1ad79918bd396900f9768b9430a846/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/crate/docker-crate/issues](https://github.com/crate/docker-crate/issues) + [https://github.com/crate/docker-crate/issues](https://github.com/crate/docker-crate/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/crate/), [`arm64v8`](https://hub.docker.com/r/arm64v8/crate/) diff --git a/crate/metadata.json b/crate/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/crate/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/dart/README.md b/dart/README.md index 2c8c729cdcbd..440269a5f699 100644 --- a/dart/README.md +++ b/dart/README.md @@ -24,16 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.18.7-sdk`, `2.18-sdk`, `2-sdk`, `stable-sdk`, `sdk`, `2.18.7`, `2.18`, `2`, `stable`, `latest`](https://github.com/dart-lang/dart-docker/blob/fec666b5fef77a0419f2f3cb730f76a58679eec4/stable/bullseye/Dockerfile) -- [`2.19.0-444.4.beta-sdk`, `beta-sdk`, `2.19.0-444.4.beta`, `beta`](https://github.com/dart-lang/dart-docker/blob/fec666b5fef77a0419f2f3cb730f76a58679eec4/beta/bullseye/Dockerfile) +- [`3.10.0-sdk`, `3.10-sdk`, `3-sdk`, `stable-sdk`, `sdk`, `3.10.0`, `3.10`, `3`, `stable`, `latest`](https://github.com/dart-lang/dart-docker/blob/e451e91e93dfdece12812118a9977796ebce1870/stable/trixie/Dockerfile) + +- [`3.11.0-93.2.beta-sdk`, `beta-sdk`, `3.11.0-93.2.beta`, `beta`](https://github.com/dart-lang/dart-docker/blob/e451e91e93dfdece12812118a9977796ebce1870/beta/trixie/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/dart-lang/dart-docker/issues](https://github.com/dart-lang/dart-docker/issues) + [https://github.com/dart-lang/dart-docker/issues](https://github.com/dart-lang/dart-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/dart/), [`arm32v7`](https://hub.docker.com/r/arm32v7/dart/), [`arm64v8`](https://hub.docker.com/r/arm64v8/dart/) + [`amd64`](https://hub.docker.com/r/amd64/dart/), [`arm32v7`](https://hub.docker.com/r/arm32v7/dart/), [`arm64v8`](https://hub.docker.com/r/arm64v8/dart/), [`riscv64`](https://hub.docker.com/r/riscv64/dart/) - **Published image artifact details**: [repo-info repo's `repos/dart/` directory](https://github.com/docker-library/repo-info/blob/master/repos/dart) ([history](https://github.com/docker-library/repo-info/commits/master/repos/dart)) diff --git a/dart/metadata.json b/dart/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/dart/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/debian/README.md b/debian/README.md index 1ba424887637..39e15a7f60b9 100644 --- a/debian/README.md +++ b/debian/README.md @@ -24,35 +24,66 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`bookworm`, `bookworm-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/bookworm/Dockerfile) -- [`bookworm-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/bookworm/backports/Dockerfile) -- [`bookworm-slim`, `bookworm-20230109-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/bookworm/slim/Dockerfile) -- [`bullseye`, `bullseye-20230109`, `11.6`, `11`, `latest`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/bullseye/Dockerfile) -- [`bullseye-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/bullseye/backports/Dockerfile) -- [`bullseye-slim`, `bullseye-20230109-slim`, `11.6-slim`, `11-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/bullseye/slim/Dockerfile) -- [`buster`, `buster-20230109`, `10.13`, `10`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/buster/Dockerfile) -- [`buster-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/buster/backports/Dockerfile) -- [`buster-slim`, `buster-20230109-slim`, `10.13-slim`, `10-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/buster/slim/Dockerfile) -- [`experimental`, `experimental-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/experimental/Dockerfile) -- [`oldstable`, `oldstable-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/oldstable/Dockerfile) -- [`oldstable-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/oldstable/backports/Dockerfile) -- [`oldstable-slim`, `oldstable-20230109-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/oldstable/slim/Dockerfile) -- [`rc-buggy`, `rc-buggy-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/rc-buggy/Dockerfile) -- [`sid`, `sid-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/sid/Dockerfile) -- [`sid-slim`, `sid-20230109-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/sid/slim/Dockerfile) -- [`stable`, `stable-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/stable/Dockerfile) -- [`stable-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/stable/backports/Dockerfile) -- [`stable-slim`, `stable-20230109-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/stable/slim/Dockerfile) -- [`testing`, `testing-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/testing/Dockerfile) -- [`testing-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/testing/backports/Dockerfile) -- [`testing-slim`, `testing-20230109-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/testing/slim/Dockerfile) -- [`unstable`, `unstable-20230109`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/unstable/Dockerfile) -- [`unstable-slim`, `unstable-20230109-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/64b13cf5860ac15c1d909abd7239516db9748fea/unstable/slim/Dockerfile) +- [`bookworm`, `bookworm-20251103`, `12.12`, `12`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/bookworm/oci/index.json) + +- [`bookworm-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/bookworm/backports/Dockerfile) + +- [`bookworm-slim`, `bookworm-20251103-slim`, `12.12-slim`, `12-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/bookworm/slim/oci/index.json) + +- [`bullseye`, `bullseye-20251103`, `11.11`, `11`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/bullseye/oci/index.json) + +- [`bullseye-slim`, `bullseye-20251103-slim`, `11.11-slim`, `11-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/bullseye/slim/oci/index.json) + +- [`experimental`, `experimental-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/experimental/Dockerfile) + +- [`forky`, `forky-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/forky/oci/index.json) + +- [`forky-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/forky/backports/Dockerfile) + +- [`forky-slim`, `forky-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/forky/slim/oci/index.json) + +- [`oldoldstable`, `oldoldstable-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/oldoldstable/oci/index.json) + +- [`oldoldstable-slim`, `oldoldstable-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/oldoldstable/slim/oci/index.json) + +- [`oldstable`, `oldstable-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/oldstable/oci/index.json) + +- [`oldstable-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/oldstable/backports/Dockerfile) + +- [`oldstable-slim`, `oldstable-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/oldstable/slim/oci/index.json) + +- [`rc-buggy`, `rc-buggy-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/rc-buggy/Dockerfile) + +- [`sid`, `sid-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/sid/oci/index.json) + +- [`sid-slim`, `sid-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/sid/slim/oci/index.json) + +- [`stable`, `stable-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/stable/oci/index.json) + +- [`stable-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/stable/backports/Dockerfile) + +- [`stable-slim`, `stable-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/stable/slim/oci/index.json) + +- [`testing`, `testing-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/testing/oci/index.json) + +- [`testing-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/testing/backports/Dockerfile) + +- [`testing-slim`, `testing-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/testing/slim/oci/index.json) + +- [`trixie`, `trixie-20251103`, `13.1`, `13`, `latest`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/trixie/oci/index.json) + +- [`trixie-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/trixie/backports/Dockerfile) + +- [`trixie-slim`, `trixie-20251103-slim`, `13.1-slim`, `13-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/trixie/slim/oci/index.json) + +- [`unstable`, `unstable-20251103`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/unstable/oci/index.json) + +- [`unstable-slim`, `unstable-20251103-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/06a7b511b90f4cc6c8b41d2f01a57702556fe63e/unstable/slim/oci/index.json) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/debuerreotype/docker-debian-artifacts/issues](https://github.com/debuerreotype/docker-debian-artifacts/issues) + [https://github.com/debuerreotype/docker-debian-artifacts/issues](https://github.com/debuerreotype/docker-debian-artifacts/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/debian/), [`arm32v5`](https://hub.docker.com/r/arm32v5/debian/), [`arm32v7`](https://hub.docker.com/r/arm32v7/debian/), [`arm64v8`](https://hub.docker.com/r/arm64v8/debian/), [`i386`](https://hub.docker.com/r/i386/debian/), [`mips64le`](https://hub.docker.com/r/mips64le/debian/), [`ppc64le`](https://hub.docker.com/r/ppc64le/debian/), [`riscv64`](https://hub.docker.com/r/riscv64/debian/), [`s390x`](https://hub.docker.com/r/s390x/debian/) @@ -78,6 +109,8 @@ Debian is an operating system which is composed primarily of free and open-sourc # About this image +The images in this repository are intended to be as minimal as possible (because of the immutable/layered nature of containers, it's much easier to add than it is to remove). More specifically, they're built from [the "minbase" variant](https://manpages.debian.org/stable/debootstrap/debootstrap.8.en.html#variant=minbase_buildd_fakechroot), which only installs "required" packages, and thus creates the smallest possible footprint that is still "Debian" (as defined/managed by [the Release and FTP teams](https://www.debian.org/intro/organization#distribution) within the project). + The `debian:latest` tag will always point the latest stable release. Stable releases are also tagged with their version (ie, `debian:11` is an alias for `debian:bullseye`, `debian:10` is an alias for `debian:buster`, etc). The rolling tags (`debian:stable`, `debian:testing`, etc) use the rolling suite names in their `/etc/apt/sources.list` file (ie, `deb http://deb.debian.org/debian testing main`). diff --git a/debian/content.md b/debian/content.md index 014b13a84315..cc3cebdf6eac 100644 --- a/debian/content.md +++ b/debian/content.md @@ -8,6 +8,8 @@ Debian is an operating system which is composed primarily of free and open-sourc # About this image +The images in this repository are intended to be as minimal as possible (because of the immutable/layered nature of containers, it's much easier to add than it is to remove). More specifically, they're built from [the "minbase" variant](https://manpages.debian.org/stable/debootstrap/debootstrap.8.en.html#variant=minbase_buildd_fakechroot), which only installs "required" packages, and thus creates the smallest possible footprint that is still "Debian" (as defined/managed by [the Release and FTP teams](https://www.debian.org/intro/organization#distribution) within the project). + The `%%IMAGE%%:latest` tag will always point the latest stable release. Stable releases are also tagged with their version (ie, `%%IMAGE%%:11` is an alias for `%%IMAGE%%:bullseye`, `%%IMAGE%%:10` is an alias for `%%IMAGE%%:buster`, etc). The rolling tags (`%%IMAGE%%:stable`, `%%IMAGE%%:testing`, etc) use the rolling suite names in their `/etc/apt/sources.list` file (ie, `deb http://deb.debian.org/debian testing main`). diff --git a/debian/metadata.json b/debian/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/debian/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/docker/README-short.txt b/docker/README-short.txt index 0276c1dc275b..88557ec5a782 100644 --- a/docker/README-short.txt +++ b/docker/README-short.txt @@ -1 +1 @@ -Docker in Docker! +Docker in Docker! (commonly known as "dind") diff --git a/docker/README.md b/docker/README.md index 8db5904ef2dd..a453c4b4f96a 100644 --- a/docker/README.md +++ b/docker/README.md @@ -28,35 +28,30 @@ WARNING: ## Simple Tags -- [`23.0.0-rc.1-cli`, `23.0-rc-cli`, `rc-cli`, `23.0.0-rc.1-cli-alpine3.17`](https://github.com/docker-library/docker/blob/0997ca7ad1d7892324d84951d55192d5ef629bcc/23.0-rc/cli/Dockerfile) -- [`23.0.0-rc.1-dind`, `23.0-rc-dind`, `rc-dind`, `23.0.0-rc.1-dind-alpine3.17`, `23.0.0-rc.1`, `23.0-rc`, `rc`, `23.0.0-rc.1-alpine3.17`](https://github.com/docker-library/docker/blob/023a45d6e2a9009fdf01da87499c6f9ca6e27bef/23.0-rc/dind/Dockerfile) -- [`23.0.0-rc.1-dind-rootless`, `23.0-rc-dind-rootless`, `rc-dind-rootless`](https://github.com/docker-library/docker/blob/023a45d6e2a9009fdf01da87499c6f9ca6e27bef/23.0-rc/dind-rootless/Dockerfile) -- [`23.0.0-rc.1-git`, `23.0-rc-git`, `rc-git`](https://github.com/docker-library/docker/blob/c608944bf9422f7cd70951b9519866495b81e76d/23.0-rc/git/Dockerfile) -- [`23.0.0-rc.1-windowsservercore-ltsc2022`, `23.0-rc-windowsservercore-ltsc2022`, `rc-windowsservercore-ltsc2022`](https://github.com/docker-library/docker/blob/023a45d6e2a9009fdf01da87499c6f9ca6e27bef/23.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) -- [`23.0.0-rc.1-windowsservercore-1809`, `23.0-rc-windowsservercore-1809`, `rc-windowsservercore-1809`](https://github.com/docker-library/docker/blob/023a45d6e2a9009fdf01da87499c6f9ca6e27bef/23.0-rc/windows/windowsservercore-1809/Dockerfile) -- [`20.10.22-cli`, `20.10-cli`, `20-cli`, `cli`, `20.10.22-cli-alpine3.17`, `20.10.22`, `20.10`, `20`, `latest`, `20.10.22-alpine3.17`](https://github.com/docker-library/docker/blob/95414fb25c65f77412e44dac9949c12e73dc58dc/20.10/cli/Dockerfile) -- [`20.10.22-dind`, `20.10-dind`, `20-dind`, `dind`, `20.10.22-dind-alpine3.17`](https://github.com/docker-library/docker/blob/32a92d275e8aa2edd2a99ad55e56a106e48601d6/20.10/dind/Dockerfile) -- [`20.10.22-dind-rootless`, `20.10-dind-rootless`, `20-dind-rootless`, `dind-rootless`](https://github.com/docker-library/docker/blob/32a92d275e8aa2edd2a99ad55e56a106e48601d6/20.10/dind-rootless/Dockerfile) -- [`20.10.22-git`, `20.10-git`, `20-git`, `git`](https://github.com/docker-library/docker/blob/f23a2bea97f6d7ec563bc316302fb8edf620ec5b/20.10/git/Dockerfile) -- [`20.10.22-windowsservercore-ltsc2022`, `20.10-windowsservercore-ltsc2022`, `20-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/docker/blob/32a92d275e8aa2edd2a99ad55e56a106e48601d6/20.10/windows/windowsservercore-ltsc2022/Dockerfile) -- [`20.10.22-windowsservercore-1809`, `20.10-windowsservercore-1809`, `20-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/docker/blob/32a92d275e8aa2edd2a99ad55e56a106e48601d6/20.10/windows/windowsservercore-1809/Dockerfile) +- [`29.0.1-cli`, `29.0-cli`, `29-cli`, `cli`, `29.0.1-cli-alpine3.22`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/cli/Dockerfile) + +- [`29.0.1-dind`, `29.0-dind`, `29-dind`, `dind`, `29.0.1-dind-alpine3.22`, `29.0.1`, `29.0`, `29`, `latest`, `29.0.1-alpine3.22`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/dind/Dockerfile) + +- [`29.0.1-dind-rootless`, `29.0-dind-rootless`, `29-dind-rootless`, `dind-rootless`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/dind-rootless/Dockerfile) + +- [`29.0.1-windowsservercore-ltsc2025`, `29.0-windowsservercore-ltsc2025`, `29-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`29.0.1-windowsservercore-ltsc2022`, `29.0-windowsservercore-ltsc2022`, `29-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/windows/windowsservercore-ltsc2022/Dockerfile) ## Shared Tags -- `23.0.0-rc.1-windowsservercore`, `23.0-rc-windowsservercore`, `rc-windowsservercore`: - - [`23.0.0-rc.1-windowsservercore-ltsc2022`](https://github.com/docker-library/docker/blob/023a45d6e2a9009fdf01da87499c6f9ca6e27bef/23.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`23.0.0-rc.1-windowsservercore-1809`](https://github.com/docker-library/docker/blob/023a45d6e2a9009fdf01da87499c6f9ca6e27bef/23.0-rc/windows/windowsservercore-1809/Dockerfile) -- `20.10.22-windowsservercore`, `20.10-windowsservercore`, `20-windowsservercore`, `windowsservercore`: - - [`20.10.22-windowsservercore-ltsc2022`](https://github.com/docker-library/docker/blob/32a92d275e8aa2edd2a99ad55e56a106e48601d6/20.10/windows/windowsservercore-ltsc2022/Dockerfile) - - [`20.10.22-windowsservercore-1809`](https://github.com/docker-library/docker/blob/32a92d275e8aa2edd2a99ad55e56a106e48601d6/20.10/windows/windowsservercore-1809/Dockerfile) +- `29.0.1-windowsservercore`, `29.0-windowsservercore`, `29-windowsservercore`, `windowsservercore`: + + - [`29.0.1-windowsservercore-ltsc2025`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/windows/windowsservercore-ltsc2025/Dockerfile) + - [`29.0.1-windowsservercore-ltsc2022`](https://github.com/docker-library/docker/blob/7de4047a624d72cb5b9042cb4be6faefd94267da/29/windows/windowsservercore-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/docker/issues](https://github.com/docker-library/docker/issues) + [https://github.com/docker-library/docker/issues](https://github.com/docker-library/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/docker/), [`arm64v8`](https://hub.docker.com/r/arm64v8/docker/), [`windows-amd64`](https://hub.docker.com/r/winamd64/docker/) + [`amd64`](https://hub.docker.com/r/amd64/docker/), [`arm32v6`](https://hub.docker.com/r/arm32v6/docker/), [`arm32v7`](https://hub.docker.com/r/arm32v7/docker/), [`arm64v8`](https://hub.docker.com/r/arm64v8/docker/), [`windows-amd64`](https://hub.docker.com/r/winamd64/docker/) - **Published image artifact details**: [repo-info repo's `repos/docker/` directory](https://github.com/docker-library/repo-info/blob/master/repos/docker) ([history](https://github.com/docker-library/repo-info/commits/master/repos/docker)) @@ -276,31 +271,12 @@ $ docker run --privileged --name some-docker -d \ Some of these will not be supported based on the settings on the host's `dockerd`, such as `--ulimit nofile=-1`, giving errors that look like `error setting rlimit type 7: operation not permitted`, and some may inherit sane values from the host `dockerd` instance or may not apply for your usage of Docker-in-Docker (for example, you likely want to set `--oom-score-adj` to a value that's higher than `dockerd` on the host so that your Docker-in-Docker instance is killed before the host Docker instance is). -## Rootless - -For more information about using the experimental "rootless" image variants, see [docker-library/docker#174](https://github.com/docker-library/docker/pull/174). - -**Note:** just like the regular `dind` images, `--privileged` is required for Docker-in-Docker to function properly ([docker-library/docker#151](https://github.com/docker-library/docker/issues/151#issuecomment-483185972) & [docker-library/docker#281](https://github.com/docker-library/docker/issues/281#issuecomment-744766015)). For `19.03.x` rootless images, an argument of `--experimental` is required for `dockerd` ([docker/docker#40759](https://github.com/docker/docker/pull/40759)). - -Basic example usage: - -```console -$ docker run -d --name some-docker --privileged docker:dind-rootless -$ docker logs --tail=3 some-docker # to verify the daemon has finished generating TLS certificates and is listening successfully -time="xxx" level=info msg="Daemon has completed initialization" -time="xxx" level=info msg="API listen on /run/user/1000/docker.sock" -time="xxx" level=info msg="API listen on [::]:2376" -$ docker exec -it some-docker docker-entrypoint.sh sh # using "docker-entrypoint.sh" which auto-sets "DOCKER_HOST" appropriately -/ $ docker info --format '{{ json .SecurityOptions }}' -["name=seccomp,profile=default","name=rootless"] -``` - ## Where to Store Data Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `docker` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your data [by writing to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your data [by writing to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -321,6 +297,37 @@ The `docker` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. +## `docker:-rootless` + +For more information about using the experimental "rootless" image variants, see [docker-library/docker#174](https://github.com/docker-library/docker/pull/174). + +**Note:** just like the regular `dind` images, `--privileged` is required for Docker-in-Docker to function properly ([docker-library/docker#151](https://github.com/docker-library/docker/issues/151#issuecomment-483185972) & [docker-library/docker#281](https://github.com/docker-library/docker/issues/281#issuecomment-744766015)), which is a security issue that needs to be treated appropriately. + +Basic example usage: + +```console +$ docker run -d --name some-docker --privileged docker:dind-rootless +$ docker logs --tail=3 some-docker # to verify the daemon has finished generating TLS certificates and is listening successfully +time="xxx" level=info msg="Daemon has completed initialization" +time="xxx" level=info msg="API listen on /run/user/1000/docker.sock" +time="xxx" level=info msg="API listen on [::]:2376" +$ docker exec -it some-docker docker-entrypoint.sh sh # using "docker-entrypoint.sh" which auto-sets "DOCKER_HOST" appropriately +/ $ docker info --format '{{ json .SecurityOptions }}' +["name=seccomp,profile=default","name=rootless"] +``` + +To run with a different UID/GID than the one baked into the image, modify `/etc/passwd`, `/etc/group`, and filesystem permissions (especially for the `rootless` user's home directory) as appropriate; for example: + +```dockerfile +FROM docker:dind-rootless +USER root +RUN set -eux; \ + sed -i -e 's/^rootless:x:1000:1000:/rootless:x:1234:5678:/' /etc/passwd; \ + sed -i -e 's/^rootless:x:1000:/rootless:x:5678:/' /etc/group; \ + chown -R rootless ~rootless +USER rootless +``` + ## `docker:-windowsservercore` Unfortunately, Windows does not support nested containers, so this image variant only contains the client (intended for use against an existing Docker engine, ala `-v //./pipe/docker_engine://./pipe/docker_engine`). diff --git a/docker/content.md b/docker/content.md index 8236370bc637..c8ac355a8afe 100644 --- a/docker/content.md +++ b/docker/content.md @@ -32,7 +32,7 @@ Inside the directory specified by `DOCKER_TLS_CERTDIR`, the entrypoint scripts w In order to make use of this functionality from a "client" container, at least the `client` subdirectory of the `$DOCKER_TLS_CERTDIR` directory needs to be shared (as illustrated in the following examples). -To disable this image behavior, simply override the container command or entrypoint to run `dockerd` directly (`... docker:dind dockerd ...` or `... --entrypoint dockerd docker:dind ...`). +To disable this image behavior, simply override the container command or entrypoint to run `dockerd` directly (`... %%IMAGE%%:dind dockerd ...` or `... --entrypoint dockerd %%IMAGE%%:dind ...`). ## Start a daemon instance @@ -205,31 +205,12 @@ $ docker run --privileged --name some-docker -d \ Some of these will not be supported based on the settings on the host's `dockerd`, such as `--ulimit nofile=-1`, giving errors that look like `error setting rlimit type 7: operation not permitted`, and some may inherit sane values from the host `dockerd` instance or may not apply for your usage of Docker-in-Docker (for example, you likely want to set `--oom-score-adj` to a value that's higher than `dockerd` on the host so that your Docker-in-Docker instance is killed before the host Docker instance is). -## Rootless - -For more information about using the experimental "rootless" image variants, see [docker-library/docker#174](https://github.com/docker-library/docker/pull/174). - -**Note:** just like the regular `dind` images, `--privileged` is required for Docker-in-Docker to function properly ([docker-library/docker#151](https://github.com/docker-library/docker/issues/151#issuecomment-483185972) & [docker-library/docker#281](https://github.com/docker-library/docker/issues/281#issuecomment-744766015)). For `19.03.x` rootless images, an argument of `--experimental` is required for `dockerd` ([docker/docker#40759](https://github.com/docker/docker/pull/40759)). - -Basic example usage: - -```console -$ docker run -d --name some-docker --privileged docker:dind-rootless -$ docker logs --tail=3 some-docker # to verify the daemon has finished generating TLS certificates and is listening successfully -time="xxx" level=info msg="Daemon has completed initialization" -time="xxx" level=info msg="API listen on /run/user/1000/docker.sock" -time="xxx" level=info msg="API listen on [::]:2376" -$ docker exec -it some-docker docker-entrypoint.sh sh # using "docker-entrypoint.sh" which auto-sets "DOCKER_HOST" appropriately -/ $ docker info --format '{{ json .SecurityOptions }}' -["name=seccomp,profile=default","name=rootless"] -``` - ## Where to Store Data Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your data [by writing to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your data [by writing to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: diff --git a/docker/metadata.json b/docker/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/docker/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/docker/variant-rootless.md b/docker/variant-rootless.md new file mode 100644 index 000000000000..8aedf7864809 --- /dev/null +++ b/docker/variant-rootless.md @@ -0,0 +1,30 @@ +## `%%IMAGE%%:-rootless` + +For more information about using the experimental "rootless" image variants, see [docker-library/docker#174](https://github.com/docker-library/docker/pull/174). + +**Note:** just like the regular `dind` images, `--privileged` is required for Docker-in-Docker to function properly ([docker-library/docker#151](https://github.com/docker-library/docker/issues/151#issuecomment-483185972) & [docker-library/docker#281](https://github.com/docker-library/docker/issues/281#issuecomment-744766015)), which is a security issue that needs to be treated appropriately. + +Basic example usage: + +```console +$ docker run -d --name some-docker --privileged %%IMAGE%%:dind-rootless +$ docker logs --tail=3 some-docker # to verify the daemon has finished generating TLS certificates and is listening successfully +time="xxx" level=info msg="Daemon has completed initialization" +time="xxx" level=info msg="API listen on /run/user/1000/docker.sock" +time="xxx" level=info msg="API listen on [::]:2376" +$ docker exec -it some-docker docker-entrypoint.sh sh # using "docker-entrypoint.sh" which auto-sets "DOCKER_HOST" appropriately +/ $ docker info --format '{{ json .SecurityOptions }}' +["name=seccomp,profile=default","name=rootless"] +``` + +To run with a different UID/GID than the one baked into the image, modify `/etc/passwd`, `/etc/group`, and filesystem permissions (especially for the `rootless` user's home directory) as appropriate; for example: + +```dockerfile +FROM %%IMAGE%%:dind-rootless +USER root +RUN set -eux; \ + sed -i -e 's/^rootless:x:1000:1000:/rootless:x:1234:5678:/' /etc/passwd; \ + sed -i -e 's/^rootless:x:1000:/rootless:x:5678:/' /etc/group; \ + chown -R rootless ~rootless +USER rootless +``` diff --git a/drupal/README.md b/drupal/README.md index 949c0f62533d..637124e59142 100644 --- a/drupal/README.md +++ b/drupal/README.md @@ -24,53 +24,133 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`10.0.1-php8.2-apache-bullseye`, `10.0-php8.2-apache-bullseye`, `10-php8.2-apache-bullseye`, `php8.2-apache-bullseye`, `10.0.1-php8.2-apache`, `10.0-php8.2-apache`, `10-php8.2-apache`, `php8.2-apache`, `10.0.1-php8.2`, `10.0-php8.2`, `10-php8.2`, `php8.2`, `10.0.1-apache-bullseye`, `10.0-apache-bullseye`, `10-apache-bullseye`, `apache-bullseye`, `10.0.1-apache`, `10.0-apache`, `10-apache`, `apache`, `10.0.1`, `10.0`, `10`, `latest`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.2/apache-bullseye/Dockerfile) -- [`10.0.1-php8.2-fpm-bullseye`, `10.0-php8.2-fpm-bullseye`, `10-php8.2-fpm-bullseye`, `php8.2-fpm-bullseye`, `10.0.1-php8.2-fpm`, `10.0-php8.2-fpm`, `10-php8.2-fpm`, `php8.2-fpm`, `10.0.1-fpm-bullseye`, `10.0-fpm-bullseye`, `10-fpm-bullseye`, `fpm-bullseye`, `10.0.1-fpm`, `10.0-fpm`, `10-fpm`, `fpm`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.2/fpm-bullseye/Dockerfile) -- [`10.0.1-php8.2-apache-buster`, `10.0-php8.2-apache-buster`, `10-php8.2-apache-buster`, `php8.2-apache-buster`, `10.0.1-apache-buster`, `10.0-apache-buster`, `10-apache-buster`, `apache-buster`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.2/apache-buster/Dockerfile) -- [`10.0.1-php8.2-fpm-buster`, `10.0-php8.2-fpm-buster`, `10-php8.2-fpm-buster`, `php8.2-fpm-buster`, `10.0.1-fpm-buster`, `10.0-fpm-buster`, `10-fpm-buster`, `fpm-buster`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.2/fpm-buster/Dockerfile) -- [`10.0.1-php8.2-fpm-alpine3.17`, `10.0-php8.2-fpm-alpine3.17`, `10-php8.2-fpm-alpine3.17`, `php8.2-fpm-alpine3.17`, `10.0.1-php8.2-fpm-alpine`, `10.0-php8.2-fpm-alpine`, `10-php8.2-fpm-alpine`, `php8.2-fpm-alpine`, `10.0.1-fpm-alpine3.17`, `10.0-fpm-alpine3.17`, `10-fpm-alpine3.17`, `fpm-alpine3.17`, `10.0.1-fpm-alpine`, `10.0-fpm-alpine`, `10-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.2/fpm-alpine3.17/Dockerfile) -- [`10.0.1-php8.2-fpm-alpine3.16`, `10.0-php8.2-fpm-alpine3.16`, `10-php8.2-fpm-alpine3.16`, `php8.2-fpm-alpine3.16`, `10.0.1-fpm-alpine3.16`, `10.0-fpm-alpine3.16`, `10-fpm-alpine3.16`, `fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.2/fpm-alpine3.16/Dockerfile) -- [`10.0.1-php8.1-apache-bullseye`, `10.0-php8.1-apache-bullseye`, `10-php8.1-apache-bullseye`, `php8.1-apache-bullseye`, `10.0.1-php8.1-apache`, `10.0-php8.1-apache`, `10-php8.1-apache`, `php8.1-apache`, `10.0.1-php8.1`, `10.0-php8.1`, `10-php8.1`, `php8.1`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.1/apache-bullseye/Dockerfile) -- [`10.0.1-php8.1-fpm-bullseye`, `10.0-php8.1-fpm-bullseye`, `10-php8.1-fpm-bullseye`, `php8.1-fpm-bullseye`, `10.0.1-php8.1-fpm`, `10.0-php8.1-fpm`, `10-php8.1-fpm`, `php8.1-fpm`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.1/fpm-bullseye/Dockerfile) -- [`10.0.1-php8.1-apache-buster`, `10.0-php8.1-apache-buster`, `10-php8.1-apache-buster`, `php8.1-apache-buster`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.1/apache-buster/Dockerfile) -- [`10.0.1-php8.1-fpm-buster`, `10.0-php8.1-fpm-buster`, `10-php8.1-fpm-buster`, `php8.1-fpm-buster`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.1/fpm-buster/Dockerfile) -- [`10.0.1-php8.1-fpm-alpine3.17`, `10.0-php8.1-fpm-alpine3.17`, `10-php8.1-fpm-alpine3.17`, `php8.1-fpm-alpine3.17`, `10.0.1-php8.1-fpm-alpine`, `10.0-php8.1-fpm-alpine`, `10-php8.1-fpm-alpine`, `php8.1-fpm-alpine`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.1/fpm-alpine3.17/Dockerfile) -- [`10.0.1-php8.1-fpm-alpine3.16`, `10.0-php8.1-fpm-alpine3.16`, `10-php8.1-fpm-alpine3.16`, `php8.1-fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/b3f06944e851a3fb63773b230c103c3966ce7414/10.0/php8.1/fpm-alpine3.16/Dockerfile) -- [`9.5.1-php8.1-apache-bullseye`, `9.5-php8.1-apache-bullseye`, `9-php8.1-apache-bullseye`, `9.5.1-php8.1-apache`, `9.5-php8.1-apache`, `9-php8.1-apache`, `9.5.1-php8.1`, `9.5-php8.1`, `9-php8.1`, `9.5.1-apache-bullseye`, `9.5-apache-bullseye`, `9-apache-bullseye`, `9.5.1-apache`, `9.5-apache`, `9-apache`, `9.5.1`, `9.5`, `9`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.1/apache-bullseye/Dockerfile) -- [`9.5.1-php8.1-fpm-bullseye`, `9.5-php8.1-fpm-bullseye`, `9-php8.1-fpm-bullseye`, `9.5.1-php8.1-fpm`, `9.5-php8.1-fpm`, `9-php8.1-fpm`, `9.5.1-fpm-bullseye`, `9.5-fpm-bullseye`, `9-fpm-bullseye`, `9.5.1-fpm`, `9.5-fpm`, `9-fpm`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.1/fpm-bullseye/Dockerfile) -- [`9.5.1-php8.1-apache-buster`, `9.5-php8.1-apache-buster`, `9-php8.1-apache-buster`, `9.5.1-apache-buster`, `9.5-apache-buster`, `9-apache-buster`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.1/apache-buster/Dockerfile) -- [`9.5.1-php8.1-fpm-buster`, `9.5-php8.1-fpm-buster`, `9-php8.1-fpm-buster`, `9.5.1-fpm-buster`, `9.5-fpm-buster`, `9-fpm-buster`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.1/fpm-buster/Dockerfile) -- [`9.5.1-php8.1-fpm-alpine3.17`, `9.5-php8.1-fpm-alpine3.17`, `9-php8.1-fpm-alpine3.17`, `9.5.1-php8.1-fpm-alpine`, `9.5-php8.1-fpm-alpine`, `9-php8.1-fpm-alpine`, `9.5.1-fpm-alpine3.17`, `9.5-fpm-alpine3.17`, `9-fpm-alpine3.17`, `9.5.1-fpm-alpine`, `9.5-fpm-alpine`, `9-fpm-alpine`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.1/fpm-alpine3.17/Dockerfile) -- [`9.5.1-php8.1-fpm-alpine3.16`, `9.5-php8.1-fpm-alpine3.16`, `9-php8.1-fpm-alpine3.16`, `9.5.1-fpm-alpine3.16`, `9.5-fpm-alpine3.16`, `9-fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.1/fpm-alpine3.16/Dockerfile) -- [`9.5.1-php8.0-apache-bullseye`, `9.5-php8.0-apache-bullseye`, `9-php8.0-apache-bullseye`, `9.5.1-php8.0-apache`, `9.5-php8.0-apache`, `9-php8.0-apache`, `9.5.1-php8.0`, `9.5-php8.0`, `9-php8.0`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.0/apache-bullseye/Dockerfile) -- [`9.5.1-php8.0-fpm-bullseye`, `9.5-php8.0-fpm-bullseye`, `9-php8.0-fpm-bullseye`, `9.5.1-php8.0-fpm`, `9.5-php8.0-fpm`, `9-php8.0-fpm`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.0/fpm-bullseye/Dockerfile) -- [`9.5.1-php8.0-apache-buster`, `9.5-php8.0-apache-buster`, `9-php8.0-apache-buster`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.0/apache-buster/Dockerfile) -- [`9.5.1-php8.0-fpm-buster`, `9.5-php8.0-fpm-buster`, `9-php8.0-fpm-buster`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.0/fpm-buster/Dockerfile) -- [`9.5.1-php8.0-fpm-alpine3.16`, `9.5-php8.0-fpm-alpine3.16`, `9-php8.0-fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/31babf9557e7073927d12e8c80b834a9a3aba7e3/9.5/php8.0/fpm-alpine3.16/Dockerfile) -- [`9.4.9-php8.1-apache-bullseye`, `9.4-php8.1-apache-bullseye`, `9.4.9-php8.1-apache`, `9.4-php8.1-apache`, `9.4.9-php8.1`, `9.4-php8.1`, `9.4.9-apache-bullseye`, `9.4-apache-bullseye`, `9.4.9-apache`, `9.4-apache`, `9.4.9`, `9.4`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.1/apache-bullseye/Dockerfile) -- [`9.4.9-php8.1-fpm-bullseye`, `9.4-php8.1-fpm-bullseye`, `9.4.9-php8.1-fpm`, `9.4-php8.1-fpm`, `9.4.9-fpm-bullseye`, `9.4-fpm-bullseye`, `9.4.9-fpm`, `9.4-fpm`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.1/fpm-bullseye/Dockerfile) -- [`9.4.9-php8.1-apache-buster`, `9.4-php8.1-apache-buster`, `9.4.9-apache-buster`, `9.4-apache-buster`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.1/apache-buster/Dockerfile) -- [`9.4.9-php8.1-fpm-buster`, `9.4-php8.1-fpm-buster`, `9.4.9-fpm-buster`, `9.4-fpm-buster`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.1/fpm-buster/Dockerfile) -- [`9.4.9-php8.1-fpm-alpine3.17`, `9.4-php8.1-fpm-alpine3.17`, `9.4.9-php8.1-fpm-alpine`, `9.4-php8.1-fpm-alpine`, `9.4.9-fpm-alpine3.17`, `9.4-fpm-alpine3.17`, `9.4.9-fpm-alpine`, `9.4-fpm-alpine`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.1/fpm-alpine3.17/Dockerfile) -- [`9.4.9-php8.1-fpm-alpine3.16`, `9.4-php8.1-fpm-alpine3.16`, `9.4.9-fpm-alpine3.16`, `9.4-fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.1/fpm-alpine3.16/Dockerfile) -- [`9.4.9-php8.0-apache-bullseye`, `9.4-php8.0-apache-bullseye`, `9.4.9-php8.0-apache`, `9.4-php8.0-apache`, `9.4.9-php8.0`, `9.4-php8.0`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.0/apache-bullseye/Dockerfile) -- [`9.4.9-php8.0-fpm-bullseye`, `9.4-php8.0-fpm-bullseye`, `9.4.9-php8.0-fpm`, `9.4-php8.0-fpm`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.0/fpm-bullseye/Dockerfile) -- [`9.4.9-php8.0-apache-buster`, `9.4-php8.0-apache-buster`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.0/apache-buster/Dockerfile) -- [`9.4.9-php8.0-fpm-buster`, `9.4-php8.0-fpm-buster`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.0/fpm-buster/Dockerfile) -- [`9.4.9-php8.0-fpm-alpine3.16`, `9.4-php8.0-fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/ad07ccc7b65f7139dce3f1ad77a5c27d6bbe1cd0/9.4/php8.0/fpm-alpine3.16/Dockerfile) -- [`7.94-php8.0-apache-bullseye`, `7-php8.0-apache-bullseye`, `7.94-php8.0-apache`, `7-php8.0-apache`, `7.94-php8.0`, `7-php8.0`, `7.94-apache-bullseye`, `7-apache-bullseye`, `7.94-apache`, `7-apache`, `7.94`, `7`](https://github.com/docker-library/drupal/blob/4047dd908101831960003f5671b9b51592f3f789/7/php8.0/apache-bullseye/Dockerfile) -- [`7.94-php8.0-fpm-bullseye`, `7-php8.0-fpm-bullseye`, `7.94-php8.0-fpm`, `7-php8.0-fpm`, `7.94-fpm-bullseye`, `7-fpm-bullseye`, `7.94-fpm`, `7-fpm`](https://github.com/docker-library/drupal/blob/4047dd908101831960003f5671b9b51592f3f789/7/php8.0/fpm-bullseye/Dockerfile) -- [`7.94-php8.0-apache-buster`, `7-php8.0-apache-buster`, `7.94-apache-buster`, `7-apache-buster`](https://github.com/docker-library/drupal/blob/4047dd908101831960003f5671b9b51592f3f789/7/php8.0/apache-buster/Dockerfile) -- [`7.94-php8.0-fpm-buster`, `7-php8.0-fpm-buster`, `7.94-fpm-buster`, `7-fpm-buster`](https://github.com/docker-library/drupal/blob/4047dd908101831960003f5671b9b51592f3f789/7/php8.0/fpm-buster/Dockerfile) -- [`7.94-php8.0-fpm-alpine3.16`, `7-php8.0-fpm-alpine3.16`, `7.94-fpm-alpine3.16`, `7-fpm-alpine3.16`](https://github.com/docker-library/drupal/blob/4047dd908101831960003f5671b9b51592f3f789/7/php8.0/fpm-alpine3.16/Dockerfile) +- [`11.3.0-alpha1-php8.4-apache-trixie`, `11.3-rc-php8.4-apache-trixie`, `11.3.0-alpha1-php8.4-apache`, `11.3-rc-php8.4-apache`, `11.3.0-alpha1-php8.4`, `11.3-rc-php8.4`, `11.3.0-alpha1-apache-trixie`, `11.3-rc-apache-trixie`, `11.3.0-alpha1-apache`, `11.3-rc-apache`, `11.3.0-alpha1`, `11.3-rc`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.4/apache-trixie/Dockerfile) + +- [`11.3.0-alpha1-php8.4-fpm-trixie`, `11.3-rc-php8.4-fpm-trixie`, `11.3.0-alpha1-php8.4-fpm`, `11.3-rc-php8.4-fpm`, `11.3.0-alpha1-fpm-trixie`, `11.3-rc-fpm-trixie`, `11.3.0-alpha1-fpm`, `11.3-rc-fpm`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.4/fpm-trixie/Dockerfile) + +- [`11.3.0-alpha1-php8.4-apache-bookworm`, `11.3-rc-php8.4-apache-bookworm`, `11.3.0-alpha1-apache-bookworm`, `11.3-rc-apache-bookworm`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.4/apache-bookworm/Dockerfile) + +- [`11.3.0-alpha1-php8.4-fpm-bookworm`, `11.3-rc-php8.4-fpm-bookworm`, `11.3.0-alpha1-fpm-bookworm`, `11.3-rc-fpm-bookworm`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.4/fpm-bookworm/Dockerfile) + +- [`11.3.0-alpha1-php8.4-fpm-alpine3.22`, `11.3-rc-php8.4-fpm-alpine3.22`, `11.3.0-alpha1-php8.4-fpm-alpine`, `11.3-rc-php8.4-fpm-alpine`, `11.3.0-alpha1-fpm-alpine3.22`, `11.3-rc-fpm-alpine3.22`, `11.3.0-alpha1-fpm-alpine`, `11.3-rc-fpm-alpine`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.4/fpm-alpine3.22/Dockerfile) + +- [`11.3.0-alpha1-php8.4-fpm-alpine3.21`, `11.3-rc-php8.4-fpm-alpine3.21`, `11.3.0-alpha1-fpm-alpine3.21`, `11.3-rc-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.4/fpm-alpine3.21/Dockerfile) + +- [`11.3.0-alpha1-php8.3-apache-trixie`, `11.3-rc-php8.3-apache-trixie`, `11.3.0-alpha1-php8.3-apache`, `11.3-rc-php8.3-apache`, `11.3.0-alpha1-php8.3`, `11.3-rc-php8.3`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.3/apache-trixie/Dockerfile) + +- [`11.3.0-alpha1-php8.3-fpm-trixie`, `11.3-rc-php8.3-fpm-trixie`, `11.3.0-alpha1-php8.3-fpm`, `11.3-rc-php8.3-fpm`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.3/fpm-trixie/Dockerfile) + +- [`11.3.0-alpha1-php8.3-apache-bookworm`, `11.3-rc-php8.3-apache-bookworm`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.3/apache-bookworm/Dockerfile) + +- [`11.3.0-alpha1-php8.3-fpm-bookworm`, `11.3-rc-php8.3-fpm-bookworm`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.3/fpm-bookworm/Dockerfile) + +- [`11.3.0-alpha1-php8.3-fpm-alpine3.22`, `11.3-rc-php8.3-fpm-alpine3.22`, `11.3.0-alpha1-php8.3-fpm-alpine`, `11.3-rc-php8.3-fpm-alpine`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.3/fpm-alpine3.22/Dockerfile) + +- [`11.3.0-alpha1-php8.3-fpm-alpine3.21`, `11.3-rc-php8.3-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/971780db5272f996fa221cd7641d162390b759a5/11.3-rc/php8.3/fpm-alpine3.21/Dockerfile) + +- [`11.2.8-php8.4-apache-trixie`, `11.2-php8.4-apache-trixie`, `11-php8.4-apache-trixie`, `php8.4-apache-trixie`, `11.2.8-php8.4-apache`, `11.2-php8.4-apache`, `11-php8.4-apache`, `php8.4-apache`, `11.2.8-php8.4`, `11.2-php8.4`, `11-php8.4`, `php8.4`, `11.2.8-apache-trixie`, `11.2-apache-trixie`, `11-apache-trixie`, `apache-trixie`, `11.2.8-apache`, `11.2-apache`, `11-apache`, `apache`, `11.2.8`, `11.2`, `11`, `latest`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.4/apache-trixie/Dockerfile) + +- [`11.2.8-php8.4-fpm-trixie`, `11.2-php8.4-fpm-trixie`, `11-php8.4-fpm-trixie`, `php8.4-fpm-trixie`, `11.2.8-php8.4-fpm`, `11.2-php8.4-fpm`, `11-php8.4-fpm`, `php8.4-fpm`, `11.2.8-fpm-trixie`, `11.2-fpm-trixie`, `11-fpm-trixie`, `fpm-trixie`, `11.2.8-fpm`, `11.2-fpm`, `11-fpm`, `fpm`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.4/fpm-trixie/Dockerfile) + +- [`11.2.8-php8.4-apache-bookworm`, `11.2-php8.4-apache-bookworm`, `11-php8.4-apache-bookworm`, `php8.4-apache-bookworm`, `11.2.8-apache-bookworm`, `11.2-apache-bookworm`, `11-apache-bookworm`, `apache-bookworm`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.4/apache-bookworm/Dockerfile) + +- [`11.2.8-php8.4-fpm-bookworm`, `11.2-php8.4-fpm-bookworm`, `11-php8.4-fpm-bookworm`, `php8.4-fpm-bookworm`, `11.2.8-fpm-bookworm`, `11.2-fpm-bookworm`, `11-fpm-bookworm`, `fpm-bookworm`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.4/fpm-bookworm/Dockerfile) + +- [`11.2.8-php8.4-fpm-alpine3.22`, `11.2-php8.4-fpm-alpine3.22`, `11-php8.4-fpm-alpine3.22`, `php8.4-fpm-alpine3.22`, `11.2.8-php8.4-fpm-alpine`, `11.2-php8.4-fpm-alpine`, `11-php8.4-fpm-alpine`, `php8.4-fpm-alpine`, `11.2.8-fpm-alpine3.22`, `11.2-fpm-alpine3.22`, `11-fpm-alpine3.22`, `fpm-alpine3.22`, `11.2.8-fpm-alpine`, `11.2-fpm-alpine`, `11-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.4/fpm-alpine3.22/Dockerfile) + +- [`11.2.8-php8.4-fpm-alpine3.21`, `11.2-php8.4-fpm-alpine3.21`, `11-php8.4-fpm-alpine3.21`, `php8.4-fpm-alpine3.21`, `11.2.8-fpm-alpine3.21`, `11.2-fpm-alpine3.21`, `11-fpm-alpine3.21`, `fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.4/fpm-alpine3.21/Dockerfile) + +- [`11.2.8-php8.3-apache-trixie`, `11.2-php8.3-apache-trixie`, `11-php8.3-apache-trixie`, `php8.3-apache-trixie`, `11.2.8-php8.3-apache`, `11.2-php8.3-apache`, `11-php8.3-apache`, `php8.3-apache`, `11.2.8-php8.3`, `11.2-php8.3`, `11-php8.3`, `php8.3`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.3/apache-trixie/Dockerfile) + +- [`11.2.8-php8.3-fpm-trixie`, `11.2-php8.3-fpm-trixie`, `11-php8.3-fpm-trixie`, `php8.3-fpm-trixie`, `11.2.8-php8.3-fpm`, `11.2-php8.3-fpm`, `11-php8.3-fpm`, `php8.3-fpm`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.3/fpm-trixie/Dockerfile) + +- [`11.2.8-php8.3-apache-bookworm`, `11.2-php8.3-apache-bookworm`, `11-php8.3-apache-bookworm`, `php8.3-apache-bookworm`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.3/apache-bookworm/Dockerfile) + +- [`11.2.8-php8.3-fpm-bookworm`, `11.2-php8.3-fpm-bookworm`, `11-php8.3-fpm-bookworm`, `php8.3-fpm-bookworm`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.3/fpm-bookworm/Dockerfile) + +- [`11.2.8-php8.3-fpm-alpine3.22`, `11.2-php8.3-fpm-alpine3.22`, `11-php8.3-fpm-alpine3.22`, `php8.3-fpm-alpine3.22`, `11.2.8-php8.3-fpm-alpine`, `11.2-php8.3-fpm-alpine`, `11-php8.3-fpm-alpine`, `php8.3-fpm-alpine`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.3/fpm-alpine3.22/Dockerfile) + +- [`11.2.8-php8.3-fpm-alpine3.21`, `11.2-php8.3-fpm-alpine3.21`, `11-php8.3-fpm-alpine3.21`, `php8.3-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/78da22e43ab4907f2d823071c6fa6297782e6bb7/11.2/php8.3/fpm-alpine3.21/Dockerfile) + +- [`11.1.9-php8.4-apache-trixie`, `11.1-php8.4-apache-trixie`, `11.1.9-php8.4-apache`, `11.1-php8.4-apache`, `11.1.9-php8.4`, `11.1-php8.4`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.4/apache-trixie/Dockerfile) + +- [`11.1.9-php8.4-fpm-trixie`, `11.1-php8.4-fpm-trixie`, `11.1.9-php8.4-fpm`, `11.1-php8.4-fpm`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.4/fpm-trixie/Dockerfile) + +- [`11.1.9-php8.4-apache-bookworm`, `11.1-php8.4-apache-bookworm`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.4/apache-bookworm/Dockerfile) + +- [`11.1.9-php8.4-fpm-bookworm`, `11.1-php8.4-fpm-bookworm`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.4/fpm-bookworm/Dockerfile) + +- [`11.1.9-php8.4-fpm-alpine3.22`, `11.1-php8.4-fpm-alpine3.22`, `11.1.9-php8.4-fpm-alpine`, `11.1-php8.4-fpm-alpine`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.4/fpm-alpine3.22/Dockerfile) + +- [`11.1.9-php8.4-fpm-alpine3.21`, `11.1-php8.4-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.4/fpm-alpine3.21/Dockerfile) + +- [`11.1.9-php8.3-apache-trixie`, `11.1-php8.3-apache-trixie`, `11.1.9-php8.3-apache`, `11.1-php8.3-apache`, `11.1.9-php8.3`, `11.1-php8.3`, `11.1.9-apache-trixie`, `11.1-apache-trixie`, `11.1.9-apache`, `11.1-apache`, `11.1.9`, `11.1`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.3/apache-trixie/Dockerfile) + +- [`11.1.9-php8.3-fpm-trixie`, `11.1-php8.3-fpm-trixie`, `11.1.9-php8.3-fpm`, `11.1-php8.3-fpm`, `11.1.9-fpm-trixie`, `11.1-fpm-trixie`, `11.1.9-fpm`, `11.1-fpm`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.3/fpm-trixie/Dockerfile) + +- [`11.1.9-php8.3-apache-bookworm`, `11.1-php8.3-apache-bookworm`, `11.1.9-apache-bookworm`, `11.1-apache-bookworm`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.3/apache-bookworm/Dockerfile) + +- [`11.1.9-php8.3-fpm-bookworm`, `11.1-php8.3-fpm-bookworm`, `11.1.9-fpm-bookworm`, `11.1-fpm-bookworm`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.3/fpm-bookworm/Dockerfile) + +- [`11.1.9-php8.3-fpm-alpine3.22`, `11.1-php8.3-fpm-alpine3.22`, `11.1.9-php8.3-fpm-alpine`, `11.1-php8.3-fpm-alpine`, `11.1.9-fpm-alpine3.22`, `11.1-fpm-alpine3.22`, `11.1.9-fpm-alpine`, `11.1-fpm-alpine`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.3/fpm-alpine3.22/Dockerfile) + +- [`11.1.9-php8.3-fpm-alpine3.21`, `11.1-php8.3-fpm-alpine3.21`, `11.1.9-fpm-alpine3.21`, `11.1-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/9d065cf35a311e9fdb256df9981fe4b0a9d897d8/11.1/php8.3/fpm-alpine3.21/Dockerfile) + +- [`10.5.6-php8.4-apache-trixie`, `10.5-php8.4-apache-trixie`, `10-php8.4-apache-trixie`, `10.5.6-php8.4-apache`, `10.5-php8.4-apache`, `10-php8.4-apache`, `10.5.6-php8.4`, `10.5-php8.4`, `10-php8.4`, `10.5.6-apache-trixie`, `10.5-apache-trixie`, `10-apache-trixie`, `10.5.6-apache`, `10.5-apache`, `10-apache`, `10.5.6`, `10.5`, `10`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.4/apache-trixie/Dockerfile) + +- [`10.5.6-php8.4-fpm-trixie`, `10.5-php8.4-fpm-trixie`, `10-php8.4-fpm-trixie`, `10.5.6-php8.4-fpm`, `10.5-php8.4-fpm`, `10-php8.4-fpm`, `10.5.6-fpm-trixie`, `10.5-fpm-trixie`, `10-fpm-trixie`, `10.5.6-fpm`, `10.5-fpm`, `10-fpm`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.4/fpm-trixie/Dockerfile) + +- [`10.5.6-php8.4-apache-bookworm`, `10.5-php8.4-apache-bookworm`, `10-php8.4-apache-bookworm`, `10.5.6-apache-bookworm`, `10.5-apache-bookworm`, `10-apache-bookworm`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.4/apache-bookworm/Dockerfile) + +- [`10.5.6-php8.4-fpm-bookworm`, `10.5-php8.4-fpm-bookworm`, `10-php8.4-fpm-bookworm`, `10.5.6-fpm-bookworm`, `10.5-fpm-bookworm`, `10-fpm-bookworm`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.4/fpm-bookworm/Dockerfile) + +- [`10.5.6-php8.4-fpm-alpine3.22`, `10.5-php8.4-fpm-alpine3.22`, `10-php8.4-fpm-alpine3.22`, `10.5.6-php8.4-fpm-alpine`, `10.5-php8.4-fpm-alpine`, `10-php8.4-fpm-alpine`, `10.5.6-fpm-alpine3.22`, `10.5-fpm-alpine3.22`, `10-fpm-alpine3.22`, `10.5.6-fpm-alpine`, `10.5-fpm-alpine`, `10-fpm-alpine`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.4/fpm-alpine3.22/Dockerfile) + +- [`10.5.6-php8.4-fpm-alpine3.21`, `10.5-php8.4-fpm-alpine3.21`, `10-php8.4-fpm-alpine3.21`, `10.5.6-fpm-alpine3.21`, `10.5-fpm-alpine3.21`, `10-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.4/fpm-alpine3.21/Dockerfile) + +- [`10.5.6-php8.3-apache-trixie`, `10.5-php8.3-apache-trixie`, `10-php8.3-apache-trixie`, `10.5.6-php8.3-apache`, `10.5-php8.3-apache`, `10-php8.3-apache`, `10.5.6-php8.3`, `10.5-php8.3`, `10-php8.3`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.3/apache-trixie/Dockerfile) + +- [`10.5.6-php8.3-fpm-trixie`, `10.5-php8.3-fpm-trixie`, `10-php8.3-fpm-trixie`, `10.5.6-php8.3-fpm`, `10.5-php8.3-fpm`, `10-php8.3-fpm`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.3/fpm-trixie/Dockerfile) + +- [`10.5.6-php8.3-apache-bookworm`, `10.5-php8.3-apache-bookworm`, `10-php8.3-apache-bookworm`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.3/apache-bookworm/Dockerfile) + +- [`10.5.6-php8.3-fpm-bookworm`, `10.5-php8.3-fpm-bookworm`, `10-php8.3-fpm-bookworm`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.3/fpm-bookworm/Dockerfile) + +- [`10.5.6-php8.3-fpm-alpine3.22`, `10.5-php8.3-fpm-alpine3.22`, `10-php8.3-fpm-alpine3.22`, `10.5.6-php8.3-fpm-alpine`, `10.5-php8.3-fpm-alpine`, `10-php8.3-fpm-alpine`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.3/fpm-alpine3.22/Dockerfile) + +- [`10.5.6-php8.3-fpm-alpine3.21`, `10.5-php8.3-fpm-alpine3.21`, `10-php8.3-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/1b3bd42b78d2202e95587cc9a7c69f7bd08731c8/10.5/php8.3/fpm-alpine3.21/Dockerfile) + +- [`10.4.9-php8.4-apache-trixie`, `10.4-php8.4-apache-trixie`, `10.4.9-php8.4-apache`, `10.4-php8.4-apache`, `10.4.9-php8.4`, `10.4-php8.4`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.4/apache-trixie/Dockerfile) + +- [`10.4.9-php8.4-fpm-trixie`, `10.4-php8.4-fpm-trixie`, `10.4.9-php8.4-fpm`, `10.4-php8.4-fpm`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.4/fpm-trixie/Dockerfile) + +- [`10.4.9-php8.4-apache-bookworm`, `10.4-php8.4-apache-bookworm`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.4/apache-bookworm/Dockerfile) + +- [`10.4.9-php8.4-fpm-bookworm`, `10.4-php8.4-fpm-bookworm`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.4/fpm-bookworm/Dockerfile) + +- [`10.4.9-php8.4-fpm-alpine3.22`, `10.4-php8.4-fpm-alpine3.22`, `10.4.9-php8.4-fpm-alpine`, `10.4-php8.4-fpm-alpine`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.4/fpm-alpine3.22/Dockerfile) + +- [`10.4.9-php8.4-fpm-alpine3.21`, `10.4-php8.4-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.4/fpm-alpine3.21/Dockerfile) + +- [`10.4.9-php8.3-apache-trixie`, `10.4-php8.3-apache-trixie`, `10.4.9-php8.3-apache`, `10.4-php8.3-apache`, `10.4.9-php8.3`, `10.4-php8.3`, `10.4.9-apache-trixie`, `10.4-apache-trixie`, `10.4.9-apache`, `10.4-apache`, `10.4.9`, `10.4`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.3/apache-trixie/Dockerfile) + +- [`10.4.9-php8.3-fpm-trixie`, `10.4-php8.3-fpm-trixie`, `10.4.9-php8.3-fpm`, `10.4-php8.3-fpm`, `10.4.9-fpm-trixie`, `10.4-fpm-trixie`, `10.4.9-fpm`, `10.4-fpm`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.3/fpm-trixie/Dockerfile) + +- [`10.4.9-php8.3-apache-bookworm`, `10.4-php8.3-apache-bookworm`, `10.4.9-apache-bookworm`, `10.4-apache-bookworm`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.3/apache-bookworm/Dockerfile) + +- [`10.4.9-php8.3-fpm-bookworm`, `10.4-php8.3-fpm-bookworm`, `10.4.9-fpm-bookworm`, `10.4-fpm-bookworm`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.3/fpm-bookworm/Dockerfile) + +- [`10.4.9-php8.3-fpm-alpine3.22`, `10.4-php8.3-fpm-alpine3.22`, `10.4.9-php8.3-fpm-alpine`, `10.4-php8.3-fpm-alpine`, `10.4.9-fpm-alpine3.22`, `10.4-fpm-alpine3.22`, `10.4.9-fpm-alpine`, `10.4-fpm-alpine`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.3/fpm-alpine3.22/Dockerfile) + +- [`10.4.9-php8.3-fpm-alpine3.21`, `10.4-php8.3-fpm-alpine3.21`, `10.4.9-fpm-alpine3.21`, `10.4-fpm-alpine3.21`](https://github.com/docker-library/drupal/blob/76bdf0e0f1001e91d4ba689476066b2028a4a760/10.4/php8.3/fpm-alpine3.21/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/drupal/issues](https://github.com/docker-library/drupal/issues) + [https://github.com/docker-library/drupal/issues](https://github.com/docker-library/drupal/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/drupal/), [`arm32v5`](https://hub.docker.com/r/arm32v5/drupal/), [`arm32v6`](https://hub.docker.com/r/arm32v6/drupal/), [`arm32v7`](https://hub.docker.com/r/arm32v7/drupal/), [`arm64v8`](https://hub.docker.com/r/arm64v8/drupal/), [`i386`](https://hub.docker.com/r/i386/drupal/), [`mips64le`](https://hub.docker.com/r/mips64le/drupal/), [`ppc64le`](https://hub.docker.com/r/ppc64le/drupal/), [`s390x`](https://hub.docker.com/r/s390x/drupal/) + [`amd64`](https://hub.docker.com/r/amd64/drupal/), [`arm32v6`](https://hub.docker.com/r/arm32v6/drupal/), [`arm32v7`](https://hub.docker.com/r/arm32v7/drupal/), [`arm64v8`](https://hub.docker.com/r/arm64v8/drupal/), [`i386`](https://hub.docker.com/r/i386/drupal/), [`ppc64le`](https://hub.docker.com/r/ppc64le/drupal/), [`riscv64`](https://hub.docker.com/r/riscv64/drupal/), [`s390x`](https://hub.docker.com/r/s390x/drupal/) - **Published image artifact details**: [repo-info repo's `repos/drupal/` directory](https://github.com/docker-library/repo-info/blob/master/repos/drupal) ([history](https://github.com/docker-library/repo-info/commits/master/repos/drupal)) @@ -183,15 +263,14 @@ $ docker run --name some-drupal --network some-network -d \ drupal ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `drupal`: +Example `compose.yaml` for `drupal`: ```yaml # Drupal with PostgreSQL # # Access via "http://localhost:8080" -# (or "http://$(docker-machine ip):8080" if using docker-machine) # # During initial Drupal setup, # Database type: PostgreSQL @@ -200,12 +279,10 @@ Example `stack.yml` for `drupal`: # Database password: example # ADVANCED OPTIONS; Database host: postgres -version: '3.1' - services: drupal: - image: drupal:8-apache + image: drupal:10-apache ports: - 8080:80 volumes: @@ -219,15 +296,13 @@ services: restart: always postgres: - image: postgres:10 + image: postgres:16 environment: POSTGRES_PASSWORD: example restart: always ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/f81077b92e4522999836b8c5d098a103f568a431/drupal/stack.yml) - -Run `docker stack deploy -c stack.yml drupal` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). When installing select `postgres` as database with the following parameters: `dbname=postgres` `user=postgres` `pass=example` `hostname=postgres` +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). When installing select `postgres` as database with the following parameters: `dbname=postgres` `user=postgres` `pass=example` `hostname=postgres` ## Adding additional libraries / extensions @@ -251,19 +326,19 @@ The `drupal` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `drupal:-fpm` -This variant contains PHP-FPM, which is a FastCGI implementation for PHP. See [the PHP-FPM website](https://php-fpm.org/) for more information about PHP-FPM. +This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP. In order to use this image variant, some kind of reverse proxy (such as NGINX, Apache, or other tool which speaks the FastCGI protocol) will be required. Some potentially helpful resources: -- [PHP-FPM.org](https://php-fpm.org/) -- [simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) -- [very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) +- [FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php) +- [Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) +- [Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) diff --git a/drupal/stack.yml b/drupal/compose.yaml similarity index 84% rename from drupal/stack.yml rename to drupal/compose.yaml index 4823d863d8b3..ef31c50aeced 100644 --- a/drupal/stack.yml +++ b/drupal/compose.yaml @@ -1,7 +1,6 @@ # Drupal with PostgreSQL # # Access via "http://localhost:8080" -# (or "http://$(docker-machine ip):8080" if using docker-machine) # # During initial Drupal setup, # Database type: PostgreSQL @@ -10,12 +9,10 @@ # Database password: example # ADVANCED OPTIONS; Database host: postgres -version: '3.1' - services: drupal: - image: drupal:8-apache + image: drupal:10-apache ports: - 8080:80 volumes: @@ -29,7 +26,7 @@ services: restart: always postgres: - image: postgres:10 + image: postgres:16 environment: POSTGRES_PASSWORD: example restart: always diff --git a/drupal/content.md b/drupal/content.md index f42a91fedcba..bb0b00b51fd4 100644 --- a/drupal/content.md +++ b/drupal/content.md @@ -98,9 +98,9 @@ $ docker run --name some-%%REPO%% --network some-network -d \ %%IMAGE%% ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). When installing select `postgres` as database with the following parameters: `dbname=postgres` `user=postgres` `pass=example` `hostname=postgres` +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). When installing select `postgres` as database with the following parameters: `dbname=postgres` `user=postgres` `pass=example` `hostname=postgres` ## Adding additional libraries / extensions diff --git a/drupal/metadata.json b/drupal/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/drupal/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/eclipse-mosquitto/README.md b/eclipse-mosquitto/README.md index b4cee487cd8c..333b51c5227f 100644 --- a/eclipse-mosquitto/README.md +++ b/eclipse-mosquitto/README.md @@ -24,16 +24,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.0.15`, `2.0`, `2`, `latest`](https://github.com/eclipse/mosquitto/blob/a8448a9c7b14bdaee6ec80419d43fd6544e789b6/docker/2.0/Dockerfile) -- [`2.0.15-openssl`, `2.0-openssl`, `2-openssl`, `openssl`](https://github.com/eclipse/mosquitto/blob/a8448a9c7b14bdaee6ec80419d43fd6544e789b6/docker/2.0-openssl/Dockerfile) -- [`1.6.15`, `1.6`](https://github.com/eclipse/mosquitto/blob/a8448a9c7b14bdaee6ec80419d43fd6544e789b6/docker/1.6/Dockerfile) -- [`1.6.15-openssl`, `1.6-openssl`](https://github.com/eclipse/mosquitto/blob/a8448a9c7b14bdaee6ec80419d43fd6544e789b6/docker/1.6-openssl/Dockerfile) -- [`1.5.11`, `1.5`](https://github.com/eclipse/mosquitto/blob/a8448a9c7b14bdaee6ec80419d43fd6544e789b6/docker/1.5/Dockerfile) +- [`2.0.22`, `2.0.22-openssl`, `2.0`, `2.0-openssl`, `2`, `2-openssl`, `openssl`, `latest`](https://github.com/eclipse/mosquitto/blob/ff1187fd9c74ae3a7ba0097e7933828bdcdbce71/docker/2.0-openssl/Dockerfile) + +- [`1.6.15-openssl`, `1.6-openssl`](https://github.com/eclipse/mosquitto/blob/ff1187fd9c74ae3a7ba0097e7933828bdcdbce71/docker/1.6-openssl/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/eclipse/mosquitto/issues](https://github.com/eclipse/mosquitto/issues) + [https://github.com/eclipse/mosquitto/issues](https://github.com/eclipse/mosquitto/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/eclipse-mosquitto/), [`arm32v6`](https://hub.docker.com/r/arm32v6/eclipse-mosquitto/), [`arm64v8`](https://hub.docker.com/r/arm64v8/eclipse-mosquitto/), [`i386`](https://hub.docker.com/r/i386/eclipse-mosquitto/), [`ppc64le`](https://hub.docker.com/r/ppc64le/eclipse-mosquitto/), [`s390x`](https://hub.docker.com/r/s390x/eclipse-mosquitto/) @@ -51,10 +49,14 @@ WARNING: # What is Eclipse Mosquitto? -Eclipse Mosquitto is an open source implementation of a server for versions 5, 3.1.1, and 3.1 of the MQTT protocol. Main homepages: http://mosquitto.org/ +Eclipse Mosquitto is an open source implementation of a server for versions 5, 3.1.1, and 3.1 of the MQTT protocol. Main homepage: http://mosquitto.org/ ![logo](https://raw.githubusercontent.com/docker-library/docs/757578e3a44e5460a8a11d32a81776f8b74231a9/eclipse-mosquitto/logo.png) +# Eclipse Mosquitto and Cedalo + +[Cedalo](https://cedalo.com/?utm_source=docker-mosquitto&utm_medium=text&utm_campaign=cedalo-name) provides commercial support, enterprise MQTT products, professional services and training for Eclipse Mosquitto. + # How to use this image ## Directories @@ -65,12 +67,14 @@ Three directories have been created in the image to be used for configuration, p /mosquitto/data /mosquitto/log +It is suggested to mirror this structure for your local configuration. + ## Configuration -When running the image, the default configuration values are used. To use a custom configuration file, mount a **local** configuration file to `/mosquitto/config/mosquitto.conf` +When running the image, the default configuration values are used. To use a custom configuration file, create your mosquitto.conf in `$PWD/mosquitto/config/mosquitto.conf`, then mount the config directory to `/mosquitto/config`. ```console -$ docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf eclipse-mosquitto +$ docker run -it -p 1883:1883 -v "$PWD/mosquitto/config:/mosquitto/config" eclipse-mosquitto ``` Configuration can be changed to: @@ -91,14 +95,26 @@ i.e. add the following to `mosquitto.conf`: Run a container using the new image: ```console -$ docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/data -v /mosquitto/log eclipse-mosquitto +$ docker run -it -p 1883:1883 -v "$PWD/mosquitto/config:/mosquitto/config" -v /mosquitto/data -v /mosquitto/log eclipse-mosquitto +``` + +or: + +```console +$ docker run -it -p 1883:1883 -v "$PWD/mosquitto/config:/mosquitto/config" -v "$PWD/mosquitto/data:/mosquitto/data" -v "$PWD/mosquitto/log:/mosquitto/log" eclipse-mosquitto ``` **Note**: if the mosquitto configuration (mosquitto.conf) was modified to use non-default ports, the docker run command will need to be updated to expose the ports that have been configured. +For example, if you use port 1883 and port 8080: + +```console +$ docker run -it -p 1883:1883 -p 8080:8080 -v "$PWD/mosquitto/config:/mosquitto/config" eclipse-mosquitto +``` + # License -Eclipse Mosquitto is released under the [EPL](https://www.eclipse.org/legal/epl-v10.html)/[EDL](https://eclipse.org/org/documents/edl-v10.php) +Eclipse Mosquitto is released under the [EPL](https://www.eclipse.org/legal/epl-v20.html)/[EDL](https://eclipse.org/org/documents/edl-v10.php) As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/eclipse-mosquitto/content.md b/eclipse-mosquitto/content.md index 98b62e76b11d..0a6adf717d93 100644 --- a/eclipse-mosquitto/content.md +++ b/eclipse-mosquitto/content.md @@ -1,9 +1,13 @@ # What is Eclipse Mosquitto? -Eclipse Mosquitto is an open source implementation of a server for versions 5, 3.1.1, and 3.1 of the MQTT protocol. Main homepages: http://mosquitto.org/ +Eclipse Mosquitto is an open source implementation of a server for versions 5, 3.1.1, and 3.1 of the MQTT protocol. Main homepage: http://mosquitto.org/ %%LOGO%% +# Eclipse Mosquitto and Cedalo + +[Cedalo](https://cedalo.com/?utm_source=docker-mosquitto&utm_medium=text&utm_campaign=cedalo-name) provides commercial support, enterprise MQTT products, professional services and training for Eclipse Mosquitto. + # How to use this image ## Directories @@ -14,12 +18,14 @@ Three directories have been created in the image to be used for configuration, p /mosquitto/data /mosquitto/log +It is suggested to mirror this structure for your local configuration. + ## Configuration -When running the image, the default configuration values are used. To use a custom configuration file, mount a **local** configuration file to `/mosquitto/config/mosquitto.conf` +When running the image, the default configuration values are used. To use a custom configuration file, create your mosquitto.conf in `$PWD/mosquitto/config/mosquitto.conf`, then mount the config directory to `/mosquitto/config`. ```console -$ docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf %%IMAGE%% +$ docker run -it -p 1883:1883 -v "$PWD/mosquitto/config:/mosquitto/config" %%IMAGE%% ``` Configuration can be changed to: @@ -40,7 +46,19 @@ i.e. add the following to `mosquitto.conf`: Run a container using the new image: ```console -$ docker run -it -p 1883:1883 -p 9001:9001 -v mosquitto.conf:/mosquitto/config/mosquitto.conf -v /mosquitto/data -v /mosquitto/log %%IMAGE%% +$ docker run -it -p 1883:1883 -v "$PWD/mosquitto/config:/mosquitto/config" -v /mosquitto/data -v /mosquitto/log %%IMAGE%% +``` + +or: + +```console +$ docker run -it -p 1883:1883 -v "$PWD/mosquitto/config:/mosquitto/config" -v "$PWD/mosquitto/data:/mosquitto/data" -v "$PWD/mosquitto/log:/mosquitto/log" %%IMAGE%% ``` **Note**: if the mosquitto configuration (mosquitto.conf) was modified to use non-default ports, the docker run command will need to be updated to expose the ports that have been configured. + +For example, if you use port 1883 and port 8080: + +```console +$ docker run -it -p 1883:1883 -p 8080:8080 -v "$PWD/mosquitto/config:/mosquitto/config" %%IMAGE%% +``` diff --git a/eclipse-mosquitto/license.md b/eclipse-mosquitto/license.md index 87d41d6b9caf..069f3ad5c8de 100644 --- a/eclipse-mosquitto/license.md +++ b/eclipse-mosquitto/license.md @@ -1 +1 @@ -Eclipse Mosquitto is released under the [EPL](https://www.eclipse.org/legal/epl-v10.html)/[EDL](https://eclipse.org/org/documents/edl-v10.php) +Eclipse Mosquitto is released under the [EPL](https://www.eclipse.org/legal/epl-v20.html)/[EDL](https://eclipse.org/org/documents/edl-v10.php) diff --git a/eclipse-mosquitto/metadata.json b/eclipse-mosquitto/metadata.json new file mode 100644 index 000000000000..adaed340122a --- /dev/null +++ b/eclipse-mosquitto/metadata.json @@ -0,0 +1,8 @@ +{ + "hub": { + "categories": [ + "internet-of-things", + "message-queues" + ] + } +} diff --git a/eclipse-temurin/README.md b/eclipse-temurin/README.md index 78f64aabf6f5..58efa65b05e5 100644 --- a/eclipse-temurin/README.md +++ b/eclipse-temurin/README.md @@ -28,161 +28,379 @@ WARNING: ## Simple Tags -- [`8u352-b08-jdk-alpine`, `8-jdk-alpine`, `8-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/8/jdk/alpine/Dockerfile.releases.full) -- [`8u352-b08-jdk-focal`, `8-jdk-focal`, `8-focal`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/ubuntu/focal/Dockerfile.releases.full) -- [`8u352-b08-jdk-jammy`, `8-jdk-jammy`, `8-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/ubuntu/jammy/Dockerfile.releases.full) -- [`8u352-b08-jdk-centos7`, `8-jdk-centos7`, `8-centos7`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/centos/Dockerfile.releases.full) -- [`8u352-b08-jdk-ubi9-minimal`, `8-jdk-ubi9-minimal`, `8-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/8/jdk/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`8u352-b08-jdk-windowsservercore-ltsc2022`, `8-jdk-windowsservercore-ltsc2022`, `8-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`8u352-b08-jdk-nanoserver-ltsc2022`, `8-jdk-nanoserver-ltsc2022`, `8-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`8u352-b08-jdk-windowsservercore-1809`, `8-jdk-windowsservercore-1809`, `8-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`8u352-b08-jdk-nanoserver-1809`, `8-jdk-nanoserver-1809`, `8-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- [`8u352-b08-jre-alpine`, `8-jre-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/8/jre/alpine/Dockerfile.releases.full) -- [`8u352-b08-jre-focal`, `8-jre-focal`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/ubuntu/focal/Dockerfile.releases.full) -- [`8u352-b08-jre-jammy`, `8-jre-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/ubuntu/jammy/Dockerfile.releases.full) -- [`8u352-b08-jre-centos7`, `8-jre-centos7`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/centos/Dockerfile.releases.full) -- [`8u352-b08-jre-ubi9-minimal`, `8-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/8/jre/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`8u352-b08-jre-windowsservercore-ltsc2022`, `8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`8u352-b08-jre-nanoserver-ltsc2022`, `8-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`8u352-b08-jre-windowsservercore-1809`, `8-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`8u352-b08-jre-nanoserver-1809`, `8-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/nanoserver-1809/Dockerfile.releases.full) -- [`11.0.17_8-jdk-alpine`, `11-jdk-alpine`, `11-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/11/jdk/alpine/Dockerfile.releases.full) -- [`11.0.17_8-jdk-focal`, `11-jdk-focal`, `11-focal`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/ubuntu/focal/Dockerfile.releases.full) -- [`11.0.17_8-jdk-jammy`, `11-jdk-jammy`, `11-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/ubuntu/jammy/Dockerfile.releases.full) -- [`11.0.17_8-jdk-centos7`, `11-jdk-centos7`, `11-centos7`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/centos/Dockerfile.releases.full) -- [`11.0.17_8-jdk-ubi9-minimal`, `11-jdk-ubi9-minimal`, `11-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/11/jdk/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`11.0.17_8-jdk-windowsservercore-ltsc2022`, `11-jdk-windowsservercore-ltsc2022`, `11-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`11.0.17_8-jdk-nanoserver-ltsc2022`, `11-jdk-nanoserver-ltsc2022`, `11-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`11.0.17_8-jdk-windowsservercore-1809`, `11-jdk-windowsservercore-1809`, `11-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`11.0.17_8-jdk-nanoserver-1809`, `11-jdk-nanoserver-1809`, `11-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- [`11.0.17_8-jre-alpine`, `11-jre-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/11/jre/alpine/Dockerfile.releases.full) -- [`11.0.17_8-jre-focal`, `11-jre-focal`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/ubuntu/focal/Dockerfile.releases.full) -- [`11.0.17_8-jre-jammy`, `11-jre-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/ubuntu/jammy/Dockerfile.releases.full) -- [`11.0.17_8-jre-centos7`, `11-jre-centos7`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/centos/Dockerfile.releases.full) -- [`11.0.17_8-jre-ubi9-minimal`, `11-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/11/jre/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`11.0.17_8-jre-windowsservercore-ltsc2022`, `11-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`11.0.17_8-jre-nanoserver-ltsc2022`, `11-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`11.0.17_8-jre-windowsservercore-1809`, `11-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`11.0.17_8-jre-nanoserver-1809`, `11-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/nanoserver-1809/Dockerfile.releases.full) -- [`17.0.5_8-jdk-alpine`, `17-jdk-alpine`, `17-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/17/jdk/alpine/Dockerfile.releases.full) -- [`17.0.5_8-jdk-focal`, `17-jdk-focal`, `17-focal`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/ubuntu/focal/Dockerfile.releases.full) -- [`17.0.5_8-jdk-jammy`, `17-jdk-jammy`, `17-jammy`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/ubuntu/jammy/Dockerfile.releases.full) -- [`17.0.5_8-jdk-centos7`, `17-jdk-centos7`, `17-centos7`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/centos/Dockerfile.releases.full) -- [`17.0.5_8-jdk-ubi9-minimal`, `17-jdk-ubi9-minimal`, `17-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/17/jdk/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`17.0.5_8-jdk-windowsservercore-ltsc2022`, `17-jdk-windowsservercore-ltsc2022`, `17-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`17.0.5_8-jdk-nanoserver-ltsc2022`, `17-jdk-nanoserver-ltsc2022`, `17-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`17.0.5_8-jdk-windowsservercore-1809`, `17-jdk-windowsservercore-1809`, `17-windowsservercore-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`17.0.5_8-jdk-nanoserver-1809`, `17-jdk-nanoserver-1809`, `17-nanoserver-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- [`17.0.5_8-jre-alpine`, `17-jre-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/17/jre/alpine/Dockerfile.releases.full) -- [`17.0.5_8-jre-focal`, `17-jre-focal`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/ubuntu/focal/Dockerfile.releases.full) -- [`17.0.5_8-jre-jammy`, `17-jre-jammy`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/ubuntu/jammy/Dockerfile.releases.full) -- [`17.0.5_8-jre-centos7`, `17-jre-centos7`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/centos/Dockerfile.releases.full) -- [`17.0.5_8-jre-ubi9-minimal`, `17-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/17/jre/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`17.0.5_8-jre-windowsservercore-ltsc2022`, `17-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`17.0.5_8-jre-nanoserver-ltsc2022`, `17-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`17.0.5_8-jre-windowsservercore-1809`, `17-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`17.0.5_8-jre-nanoserver-1809`, `17-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/nanoserver-1809/Dockerfile.releases.full) -- [`19.0.1_10-jdk-alpine`, `19-jdk-alpine`, `19-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/19/jdk/alpine/Dockerfile.releases.full) -- [`19.0.1_10-jdk-focal`, `19-jdk-focal`, `19-focal`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/ubuntu/focal/Dockerfile.releases.full) -- [`19.0.1_10-jdk-jammy`, `19-jdk-jammy`, `19-jammy`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/ubuntu/jammy/Dockerfile.releases.full) -- [`19.0.1_10-jdk-centos7`, `19-jdk-centos7`, `19-centos7`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/centos/Dockerfile.releases.full) -- [`19.0.1_10-jdk-ubi9-minimal`, `19-jdk-ubi9-minimal`, `19-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/19/jdk/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`19.0.1_10-jdk-windowsservercore-ltsc2022`, `19-jdk-windowsservercore-ltsc2022`, `19-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`19.0.1_10-jdk-nanoserver-ltsc2022`, `19-jdk-nanoserver-ltsc2022`, `19-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`19.0.1_10-jdk-windowsservercore-1809`, `19-jdk-windowsservercore-1809`, `19-windowsservercore-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`19.0.1_10-jdk-nanoserver-1809`, `19-jdk-nanoserver-1809`, `19-nanoserver-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- [`19.0.1_10-jre-alpine`, `19-jre-alpine`](https://github.com/adoptium/containers/blob/3bab86587b3f3af5f67f9a6e5d33c50fdaecd4db/19/jre/alpine/Dockerfile.releases.full) -- [`19.0.1_10-jre-focal`, `19-jre-focal`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/ubuntu/focal/Dockerfile.releases.full) -- [`19.0.1_10-jre-jammy`, `19-jre-jammy`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/ubuntu/jammy/Dockerfile.releases.full) -- [`19.0.1_10-jre-centos7`, `19-jre-centos7`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/centos/Dockerfile.releases.full) -- [`19.0.1_10-jre-ubi9-minimal`, `19-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/910222e9f290871048016f4e0afd0c203d4a80d5/19/jre/ubi/ubi9-minimal/Dockerfile.releases.full) -- [`19.0.1_10-jre-windowsservercore-ltsc2022`, `19-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) -- [`19.0.1_10-jre-nanoserver-ltsc2022`, `19-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) -- [`19.0.1_10-jre-windowsservercore-1809`, `19-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- [`19.0.1_10-jre-nanoserver-1809`, `19-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/nanoserver-1809/Dockerfile.releases.full) +- [`8u472-b08-jdk-alpine-3.20`, `8-jdk-alpine-3.20`, `8-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/alpine/3.20/Dockerfile) + +- [`8u472-b08-jdk-alpine-3.21`, `8-jdk-alpine-3.21`, `8-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/alpine/3.21/Dockerfile) + +- [`8u472-b08-jdk-alpine-3.22`, `8-jdk-alpine-3.22`, `8-alpine-3.22`, `8u472-b08-jdk-alpine`, `8-jdk-alpine`, `8-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/alpine/3.22/Dockerfile) + +- [`8u472-b08-jdk-jammy`, `8-jdk-jammy`, `8-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/ubuntu/jammy/Dockerfile) + +- [`8u472-b08-jdk-noble`, `8-jdk-noble`, `8-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/ubuntu/noble/Dockerfile) + +- [`8u472-b08-jdk-ubi10-minimal`, `8-jdk-ubi10-minimal`, `8-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/ubi/ubi10-minimal/Dockerfile) + +- [`8u472-b08-jdk-ubi9-minimal`, `8-jdk-ubi9-minimal`, `8-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/ubi/ubi9-minimal/Dockerfile) + +- [`8u472-b08-jdk-windowsservercore-ltsc2025`, `8-jdk-windowsservercore-ltsc2025`, `8-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`8u472-b08-jdk-nanoserver-ltsc2025`, `8-jdk-nanoserver-ltsc2025`, `8-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/nanoserver-ltsc2025/Dockerfile) + +- [`8u472-b08-jdk-windowsservercore-ltsc2022`, `8-jdk-windowsservercore-ltsc2022`, `8-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`8u472-b08-jdk-nanoserver-ltsc2022`, `8-jdk-nanoserver-ltsc2022`, `8-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- [`8u472-b08-jre-alpine-3.20`, `8-jre-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/alpine/3.20/Dockerfile) + +- [`8u472-b08-jre-alpine-3.21`, `8-jre-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/alpine/3.21/Dockerfile) + +- [`8u472-b08-jre-alpine-3.22`, `8-jre-alpine-3.22`, `8u472-b08-jre-alpine`, `8-jre-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/alpine/3.22/Dockerfile) + +- [`8u472-b08-jre-jammy`, `8-jre-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/ubuntu/jammy/Dockerfile) + +- [`8u472-b08-jre-noble`, `8-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/ubuntu/noble/Dockerfile) + +- [`8u472-b08-jre-ubi10-minimal`, `8-jre-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/ubi/ubi10-minimal/Dockerfile) + +- [`8u472-b08-jre-ubi9-minimal`, `8-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/ubi/ubi9-minimal/Dockerfile) + +- [`8u472-b08-jre-windowsservercore-ltsc2025`, `8-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`8u472-b08-jre-nanoserver-ltsc2025`, `8-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/nanoserver-ltsc2025/Dockerfile) + +- [`8u472-b08-jre-windowsservercore-ltsc2022`, `8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`8u472-b08-jre-nanoserver-ltsc2022`, `8-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- [`11.0.29_7-jdk-alpine-3.20`, `11-jdk-alpine-3.20`, `11-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/alpine/3.20/Dockerfile) + +- [`11.0.29_7-jdk-alpine-3.21`, `11-jdk-alpine-3.21`, `11-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/alpine/3.21/Dockerfile) + +- [`11.0.29_7-jdk-alpine-3.22`, `11-jdk-alpine-3.22`, `11-alpine-3.22`, `11.0.29_7-jdk-alpine`, `11-jdk-alpine`, `11-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/alpine/3.22/Dockerfile) + +- [`11.0.29_7-jdk-jammy`, `11-jdk-jammy`, `11-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/ubuntu/jammy/Dockerfile) + +- [`11.0.29_7-jdk-noble`, `11-jdk-noble`, `11-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/ubuntu/noble/Dockerfile) + +- [`11.0.29_7-jdk-ubi10-minimal`, `11-jdk-ubi10-minimal`, `11-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/ubi/ubi10-minimal/Dockerfile) + +- [`11.0.29_7-jdk-ubi9-minimal`, `11-jdk-ubi9-minimal`, `11-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/ubi/ubi9-minimal/Dockerfile) + +- [`11.0.29_7-jdk-windowsservercore-ltsc2025`, `11-jdk-windowsservercore-ltsc2025`, `11-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`11.0.29_7-jdk-nanoserver-ltsc2025`, `11-jdk-nanoserver-ltsc2025`, `11-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/nanoserver-ltsc2025/Dockerfile) + +- [`11.0.29_7-jdk-windowsservercore-ltsc2022`, `11-jdk-windowsservercore-ltsc2022`, `11-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`11.0.29_7-jdk-nanoserver-ltsc2022`, `11-jdk-nanoserver-ltsc2022`, `11-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- [`11.0.29_7-jre-alpine-3.20`, `11-jre-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/alpine/3.20/Dockerfile) + +- [`11.0.29_7-jre-alpine-3.21`, `11-jre-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/alpine/3.21/Dockerfile) + +- [`11.0.29_7-jre-alpine-3.22`, `11-jre-alpine-3.22`, `11.0.29_7-jre-alpine`, `11-jre-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/alpine/3.22/Dockerfile) + +- [`11.0.29_7-jre-jammy`, `11-jre-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/ubuntu/jammy/Dockerfile) + +- [`11.0.29_7-jre-noble`, `11-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/ubuntu/noble/Dockerfile) + +- [`11.0.29_7-jre-ubi10-minimal`, `11-jre-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/ubi/ubi10-minimal/Dockerfile) + +- [`11.0.29_7-jre-ubi9-minimal`, `11-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/ubi/ubi9-minimal/Dockerfile) + +- [`11.0.29_7-jre-windowsservercore-ltsc2025`, `11-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`11.0.29_7-jre-nanoserver-ltsc2025`, `11-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/nanoserver-ltsc2025/Dockerfile) + +- [`11.0.29_7-jre-windowsservercore-ltsc2022`, `11-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`11.0.29_7-jre-nanoserver-ltsc2022`, `11-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- [`17.0.17_10-jdk-alpine-3.20`, `17-jdk-alpine-3.20`, `17-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/alpine/3.20/Dockerfile) + +- [`17.0.17_10-jdk-alpine-3.21`, `17-jdk-alpine-3.21`, `17-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/alpine/3.21/Dockerfile) + +- [`17.0.17_10-jdk-alpine-3.22`, `17-jdk-alpine-3.22`, `17-alpine-3.22`, `17.0.17_10-jdk-alpine`, `17-jdk-alpine`, `17-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/alpine/3.22/Dockerfile) + +- [`17.0.17_10-jdk-jammy`, `17-jdk-jammy`, `17-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/ubuntu/jammy/Dockerfile) + +- [`17.0.17_10-jdk-noble`, `17-jdk-noble`, `17-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/ubuntu/noble/Dockerfile) + +- [`17.0.17_10-jdk-ubi10-minimal`, `17-jdk-ubi10-minimal`, `17-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/ubi/ubi10-minimal/Dockerfile) + +- [`17.0.17_10-jdk-ubi9-minimal`, `17-jdk-ubi9-minimal`, `17-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/ubi/ubi9-minimal/Dockerfile) + +- [`17.0.17_10-jdk-windowsservercore-ltsc2025`, `17-jdk-windowsservercore-ltsc2025`, `17-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`17.0.17_10-jdk-nanoserver-ltsc2025`, `17-jdk-nanoserver-ltsc2025`, `17-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/nanoserver-ltsc2025/Dockerfile) + +- [`17.0.17_10-jdk-windowsservercore-ltsc2022`, `17-jdk-windowsservercore-ltsc2022`, `17-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`17.0.17_10-jdk-nanoserver-ltsc2022`, `17-jdk-nanoserver-ltsc2022`, `17-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- [`17.0.17_10-jre-alpine-3.20`, `17-jre-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/alpine/3.20/Dockerfile) + +- [`17.0.17_10-jre-alpine-3.21`, `17-jre-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/alpine/3.21/Dockerfile) + +- [`17.0.17_10-jre-alpine-3.22`, `17-jre-alpine-3.22`, `17.0.17_10-jre-alpine`, `17-jre-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/alpine/3.22/Dockerfile) + +- [`17.0.17_10-jre-jammy`, `17-jre-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/ubuntu/jammy/Dockerfile) + +- [`17.0.17_10-jre-noble`, `17-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/ubuntu/noble/Dockerfile) + +- [`17.0.17_10-jre-ubi10-minimal`, `17-jre-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/ubi/ubi10-minimal/Dockerfile) + +- [`17.0.17_10-jre-ubi9-minimal`, `17-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/ubi/ubi9-minimal/Dockerfile) + +- [`17.0.17_10-jre-windowsservercore-ltsc2025`, `17-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`17.0.17_10-jre-nanoserver-ltsc2025`, `17-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/nanoserver-ltsc2025/Dockerfile) + +- [`17.0.17_10-jre-windowsservercore-ltsc2022`, `17-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`17.0.17_10-jre-nanoserver-ltsc2022`, `17-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- [`21.0.9_10-jdk-alpine-3.20`, `21-jdk-alpine-3.20`, `21-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/alpine/3.20/Dockerfile) + +- [`21.0.9_10-jdk-alpine-3.21`, `21-jdk-alpine-3.21`, `21-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/alpine/3.21/Dockerfile) + +- [`21.0.9_10-jdk-alpine-3.22`, `21-jdk-alpine-3.22`, `21-alpine-3.22`, `21.0.9_10-jdk-alpine`, `21-jdk-alpine`, `21-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/alpine/3.22/Dockerfile) + +- [`21.0.9_10-jdk-jammy`, `21-jdk-jammy`, `21-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/ubuntu/jammy/Dockerfile) + +- [`21.0.9_10-jdk-noble`, `21-jdk-noble`, `21-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/ubuntu/noble/Dockerfile) + +- [`21.0.9_10-jdk-ubi10-minimal`, `21-jdk-ubi10-minimal`, `21-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/ubi/ubi10-minimal/Dockerfile) + +- [`21.0.9_10-jdk-ubi9-minimal`, `21-jdk-ubi9-minimal`, `21-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/ubi/ubi9-minimal/Dockerfile) + +- [`21.0.9_10-jdk-windowsservercore-ltsc2025`, `21-jdk-windowsservercore-ltsc2025`, `21-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`21.0.9_10-jdk-nanoserver-ltsc2025`, `21-jdk-nanoserver-ltsc2025`, `21-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/nanoserver-ltsc2025/Dockerfile) + +- [`21.0.9_10-jdk-windowsservercore-ltsc2022`, `21-jdk-windowsservercore-ltsc2022`, `21-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`21.0.9_10-jdk-nanoserver-ltsc2022`, `21-jdk-nanoserver-ltsc2022`, `21-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- [`21.0.9_10-jre-alpine-3.20`, `21-jre-alpine-3.20`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/alpine/3.20/Dockerfile) + +- [`21.0.9_10-jre-alpine-3.21`, `21-jre-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/alpine/3.21/Dockerfile) + +- [`21.0.9_10-jre-alpine-3.22`, `21-jre-alpine-3.22`, `21.0.9_10-jre-alpine`, `21-jre-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/alpine/3.22/Dockerfile) + +- [`21.0.9_10-jre-jammy`, `21-jre-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/ubuntu/jammy/Dockerfile) + +- [`21.0.9_10-jre-noble`, `21-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/ubuntu/noble/Dockerfile) + +- [`21.0.9_10-jre-ubi10-minimal`, `21-jre-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/ubi/ubi10-minimal/Dockerfile) + +- [`21.0.9_10-jre-ubi9-minimal`, `21-jre-ubi9-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/ubi/ubi9-minimal/Dockerfile) + +- [`21.0.9_10-jre-windowsservercore-ltsc2025`, `21-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`21.0.9_10-jre-nanoserver-ltsc2025`, `21-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/nanoserver-ltsc2025/Dockerfile) + +- [`21.0.9_10-jre-windowsservercore-ltsc2022`, `21-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`21.0.9_10-jre-nanoserver-ltsc2022`, `21-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- [`25.0.1_8-jdk-alpine-3.21`, `25-jdk-alpine-3.21`, `25-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/alpine/3.21/Dockerfile) + +- [`25.0.1_8-jdk-alpine-3.22`, `25-jdk-alpine-3.22`, `25-alpine-3.22`, `25.0.1_8-jdk-alpine`, `25-jdk-alpine`, `25-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/alpine/3.22/Dockerfile) + +- [`25.0.1_8-jdk-jammy`, `25-jdk-jammy`, `25-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/ubuntu/jammy/Dockerfile) + +- [`25.0.1_8-jdk-noble`, `25-jdk-noble`, `25-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/ubuntu/noble/Dockerfile) + +- [`25.0.1_8-jdk-ubi10-minimal`, `25-jdk-ubi10-minimal`, `25-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/ubi/ubi10-minimal/Dockerfile) + +- [`25.0.1_8-jdk-windowsservercore-ltsc2025`, `25-jdk-windowsservercore-ltsc2025`, `25-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`25.0.1_8-jdk-nanoserver-ltsc2025`, `25-jdk-nanoserver-ltsc2025`, `25-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/nanoserver-ltsc2025/Dockerfile) + +- [`25.0.1_8-jdk-windowsservercore-ltsc2022`, `25-jdk-windowsservercore-ltsc2022`, `25-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`25.0.1_8-jdk-nanoserver-ltsc2022`, `25-jdk-nanoserver-ltsc2022`, `25-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- [`25.0.1_8-jre-alpine-3.21`, `25-jre-alpine-3.21`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/alpine/3.21/Dockerfile) + +- [`25.0.1_8-jre-alpine-3.22`, `25-jre-alpine-3.22`, `25.0.1_8-jre-alpine`, `25-jre-alpine`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/alpine/3.22/Dockerfile) + +- [`25.0.1_8-jre-jammy`, `25-jre-jammy`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/ubuntu/jammy/Dockerfile) + +- [`25.0.1_8-jre-noble`, `25-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/ubuntu/noble/Dockerfile) + +- [`25.0.1_8-jre-ubi10-minimal`, `25-jre-ubi10-minimal`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/ubi/ubi10-minimal/Dockerfile) + +- [`25.0.1_8-jre-windowsservercore-ltsc2025`, `25-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`25.0.1_8-jre-nanoserver-ltsc2025`, `25-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/nanoserver-ltsc2025/Dockerfile) + +- [`25.0.1_8-jre-windowsservercore-ltsc2022`, `25-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`25.0.1_8-jre-nanoserver-ltsc2022`, `25-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/nanoserver-ltsc2022/Dockerfile) ## Shared Tags -- `8u352-b08-jdk`, `8-jdk`, `8`: - - [`8u352-b08-jdk-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/ubuntu/jammy/Dockerfile.releases.full) - - [`8u352-b08-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`8u352-b08-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `8u352-b08-jdk-windowsservercore`, `8-jdk-windowsservercore`, `8-windowsservercore`: - - [`8u352-b08-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`8u352-b08-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `8u352-b08-jdk-nanoserver`, `8-jdk-nanoserver`, `8-nanoserver`: - - [`8u352-b08-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`8u352-b08-jdk-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- `8u352-b08-jre`, `8-jre`: - - [`8u352-b08-jre-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/ubuntu/jammy/Dockerfile.releases.full) - - [`8u352-b08-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`8u352-b08-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `8u352-b08-jre-windowsservercore`, `8-jre-windowsservercore`: - - [`8u352-b08-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`8u352-b08-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `8u352-b08-jre-nanoserver`, `8-jre-nanoserver`: - - [`8u352-b08-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`8u352-b08-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/8/jre/windows/nanoserver-1809/Dockerfile.releases.full) -- `11.0.17_8-jdk`, `11-jdk`, `11`: - - [`11.0.17_8-jdk-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/ubuntu/jammy/Dockerfile.releases.full) - - [`11.0.17_8-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`11.0.17_8-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `11.0.17_8-jdk-windowsservercore`, `11-jdk-windowsservercore`, `11-windowsservercore`: - - [`11.0.17_8-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`11.0.17_8-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `11.0.17_8-jdk-nanoserver`, `11-jdk-nanoserver`, `11-nanoserver`: - - [`11.0.17_8-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`11.0.17_8-jdk-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- `11.0.17_8-jre`, `11-jre`: - - [`11.0.17_8-jre-jammy`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/ubuntu/jammy/Dockerfile.releases.full) - - [`11.0.17_8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`11.0.17_8-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `11.0.17_8-jre-windowsservercore`, `11-jre-windowsservercore`: - - [`11.0.17_8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`11.0.17_8-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `11.0.17_8-jre-nanoserver`, `11-jre-nanoserver`: - - [`11.0.17_8-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`11.0.17_8-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/fa65b46d19f4db0e1c8736c3d7b2a8392dd58b1b/11/jre/windows/nanoserver-1809/Dockerfile.releases.full) -- `17.0.5_8-jdk`, `17-jdk`, `17`: - - [`17.0.5_8-jdk-jammy`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/ubuntu/jammy/Dockerfile.releases.full) - - [`17.0.5_8-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`17.0.5_8-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `17.0.5_8-jdk-windowsservercore`, `17-jdk-windowsservercore`, `17-windowsservercore`: - - [`17.0.5_8-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`17.0.5_8-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `17.0.5_8-jdk-nanoserver`, `17-jdk-nanoserver`, `17-nanoserver`: - - [`17.0.5_8-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`17.0.5_8-jdk-nanoserver-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- `17.0.5_8-jre`, `17-jre`: - - [`17.0.5_8-jre-jammy`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/ubuntu/jammy/Dockerfile.releases.full) - - [`17.0.5_8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`17.0.5_8-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `17.0.5_8-jre-windowsservercore`, `17-jre-windowsservercore`: - - [`17.0.5_8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`17.0.5_8-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `17.0.5_8-jre-nanoserver`, `17-jre-nanoserver`: - - [`17.0.5_8-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`17.0.5_8-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/d3c9617e83eb706aff74c095fd531fe31e359674/17/jre/windows/nanoserver-1809/Dockerfile.releases.full) -- `19.0.1_10-jdk`, `19-jdk`, `19`, `latest`: - - [`19.0.1_10-jdk-jammy`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/ubuntu/jammy/Dockerfile.releases.full) - - [`19.0.1_10-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`19.0.1_10-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `19.0.1_10-jdk-windowsservercore`, `19-jdk-windowsservercore`, `19-windowsservercore`: - - [`19.0.1_10-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`19.0.1_10-jdk-windowsservercore-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/windowsservercore-1809/Dockerfile.releases.full) -- `19.0.1_10-jdk-nanoserver`, `19-jdk-nanoserver`, `19-nanoserver`: - - [`19.0.1_10-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`19.0.1_10-jdk-nanoserver-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jdk/windows/nanoserver-1809/Dockerfile.releases.full) -- `19.0.1_10-jre`, `19-jre`: - - [`19.0.1_10-jre-jammy`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/ubuntu/jammy/Dockerfile.releases.full) - - [`19.0.1_10-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`19.0.1_10-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `19.0.1_10-jre-windowsservercore`, `19-jre-windowsservercore`: - - [`19.0.1_10-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/windowsservercore-ltsc2022/Dockerfile.releases.full) - - [`19.0.1_10-jre-windowsservercore-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/windowsservercore-1809/Dockerfile.releases.full) -- `19.0.1_10-jre-nanoserver`, `19-jre-nanoserver`: - - [`19.0.1_10-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/nanoserver-ltsc2022/Dockerfile.releases.full) - - [`19.0.1_10-jre-nanoserver-1809`](https://github.com/adoptium/containers/blob/e37c219c8f2aef0c0028a627b1e372a046138dea/19/jre/windows/nanoserver-1809/Dockerfile.releases.full) +- `8u472-b08-jdk`, `8-jdk`, `8`: + + - [`8u472-b08-jdk-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/ubuntu/noble/Dockerfile) + - [`8u472-b08-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8u472-b08-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8u472-b08-jdk-windowsservercore`, `8-jdk-windowsservercore`, `8-windowsservercore`: + + - [`8u472-b08-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8u472-b08-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8u472-b08-jdk-nanoserver`, `8-jdk-nanoserver`, `8-nanoserver`: + + - [`8u472-b08-jdk-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/nanoserver-ltsc2025/Dockerfile) + - [`8u472-b08-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- `8u472-b08-jre`, `8-jre`: + + - [`8u472-b08-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/ubuntu/noble/Dockerfile) + - [`8u472-b08-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8u472-b08-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8u472-b08-jre-windowsservercore`, `8-jre-windowsservercore`: + + - [`8u472-b08-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8u472-b08-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8u472-b08-jre-nanoserver`, `8-jre-nanoserver`: + + - [`8u472-b08-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/nanoserver-ltsc2025/Dockerfile) + - [`8u472-b08-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/8/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- `11.0.29_7-jdk`, `11-jdk`, `11`: + + - [`11.0.29_7-jdk-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/ubuntu/noble/Dockerfile) + - [`11.0.29_7-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`11.0.29_7-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `11.0.29_7-jdk-windowsservercore`, `11-jdk-windowsservercore`, `11-windowsservercore`: + + - [`11.0.29_7-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`11.0.29_7-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `11.0.29_7-jdk-nanoserver`, `11-jdk-nanoserver`, `11-nanoserver`: + + - [`11.0.29_7-jdk-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/nanoserver-ltsc2025/Dockerfile) + - [`11.0.29_7-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- `11.0.29_7-jre`, `11-jre`: + + - [`11.0.29_7-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/ubuntu/noble/Dockerfile) + - [`11.0.29_7-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`11.0.29_7-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `11.0.29_7-jre-windowsservercore`, `11-jre-windowsservercore`: + + - [`11.0.29_7-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`11.0.29_7-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `11.0.29_7-jre-nanoserver`, `11-jre-nanoserver`: + + - [`11.0.29_7-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/nanoserver-ltsc2025/Dockerfile) + - [`11.0.29_7-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/11/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- `17.0.17_10-jdk`, `17-jdk`, `17`: + + - [`17.0.17_10-jdk-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/ubuntu/noble/Dockerfile) + - [`17.0.17_10-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`17.0.17_10-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `17.0.17_10-jdk-windowsservercore`, `17-jdk-windowsservercore`, `17-windowsservercore`: + + - [`17.0.17_10-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`17.0.17_10-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `17.0.17_10-jdk-nanoserver`, `17-jdk-nanoserver`, `17-nanoserver`: + + - [`17.0.17_10-jdk-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/nanoserver-ltsc2025/Dockerfile) + - [`17.0.17_10-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- `17.0.17_10-jre`, `17-jre`: + + - [`17.0.17_10-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/ubuntu/noble/Dockerfile) + - [`17.0.17_10-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`17.0.17_10-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `17.0.17_10-jre-windowsservercore`, `17-jre-windowsservercore`: + + - [`17.0.17_10-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`17.0.17_10-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `17.0.17_10-jre-nanoserver`, `17-jre-nanoserver`: + + - [`17.0.17_10-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/nanoserver-ltsc2025/Dockerfile) + - [`17.0.17_10-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/17/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- `21.0.9_10-jdk`, `21-jdk`, `21`: + + - [`21.0.9_10-jdk-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/ubuntu/noble/Dockerfile) + - [`21.0.9_10-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`21.0.9_10-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `21.0.9_10-jdk-windowsservercore`, `21-jdk-windowsservercore`, `21-windowsservercore`: + + - [`21.0.9_10-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`21.0.9_10-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `21.0.9_10-jdk-nanoserver`, `21-jdk-nanoserver`, `21-nanoserver`: + + - [`21.0.9_10-jdk-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/nanoserver-ltsc2025/Dockerfile) + - [`21.0.9_10-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- `21.0.9_10-jre`, `21-jre`: + + - [`21.0.9_10-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/ubuntu/noble/Dockerfile) + - [`21.0.9_10-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`21.0.9_10-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `21.0.9_10-jre-windowsservercore`, `21-jre-windowsservercore`: + + - [`21.0.9_10-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`21.0.9_10-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `21.0.9_10-jre-nanoserver`, `21-jre-nanoserver`: + + - [`21.0.9_10-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/nanoserver-ltsc2025/Dockerfile) + - [`21.0.9_10-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/21/jre/windows/nanoserver-ltsc2022/Dockerfile) + +- `25.0.1_8-jdk`, `25-jdk`, `25`, `latest`: + + - [`25.0.1_8-jdk-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/ubuntu/noble/Dockerfile) + - [`25.0.1_8-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`25.0.1_8-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `25.0.1_8-jdk-windowsservercore`, `25-jdk-windowsservercore`, `25-windowsservercore`: + + - [`25.0.1_8-jdk-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/windowsservercore-ltsc2025/Dockerfile) + - [`25.0.1_8-jdk-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/windowsservercore-ltsc2022/Dockerfile) + +- `25.0.1_8-jdk-nanoserver`, `25-jdk-nanoserver`, `25-nanoserver`: + + - [`25.0.1_8-jdk-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/nanoserver-ltsc2025/Dockerfile) + - [`25.0.1_8-jdk-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jdk/windows/nanoserver-ltsc2022/Dockerfile) + +- `25.0.1_8-jre`, `25-jre`: + + - [`25.0.1_8-jre-noble`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/ubuntu/noble/Dockerfile) + - [`25.0.1_8-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`25.0.1_8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `25.0.1_8-jre-windowsservercore`, `25-jre-windowsservercore`: + + - [`25.0.1_8-jre-windowsservercore-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/windowsservercore-ltsc2025/Dockerfile) + - [`25.0.1_8-jre-windowsservercore-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/windowsservercore-ltsc2022/Dockerfile) + +- `25.0.1_8-jre-nanoserver`, `25-jre-nanoserver`: + + - [`25.0.1_8-jre-nanoserver-ltsc2025`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/nanoserver-ltsc2025/Dockerfile) + - [`25.0.1_8-jre-nanoserver-ltsc2022`](https://github.com/adoptium/containers/blob/38127871aaedc393f8bd5abbc0b910b2a7569824/25/jre/windows/nanoserver-ltsc2022/Dockerfile) # Quick reference (cont.) @@ -190,7 +408,7 @@ WARNING: [GitHub](https://github.com/adoptium/containers/issues); The [adoptium support](https://adoptium.net/support) page has more information on quality, roadmap and support levels for Eclipse Temurin builds. Vulnerabilities not related to Eclipse Temurin itself should be be raised to their respective projects (e.g Ubuntu vulnerabilities need to be raised directly to the Ubuntu project). - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/eclipse-temurin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/eclipse-temurin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/eclipse-temurin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/eclipse-temurin/), [`s390x`](https://hub.docker.com/r/s390x/eclipse-temurin/), [`windows-amd64`](https://hub.docker.com/r/winamd64/eclipse-temurin/) + [`amd64`](https://hub.docker.com/r/amd64/eclipse-temurin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/eclipse-temurin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/eclipse-temurin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/eclipse-temurin/), [`riscv64`](https://hub.docker.com/r/riscv64/eclipse-temurin/), [`s390x`](https://hub.docker.com/r/s390x/eclipse-temurin/), [`windows-amd64`](https://hub.docker.com/r/winamd64/eclipse-temurin/) - **Published image artifact details**: [repo-info repo's `repos/eclipse-temurin/` directory](https://github.com/docker-library/repo-info/blob/master/repos/eclipse-temurin) ([history](https://github.com/docker-library/repo-info/commits/master/repos/eclipse-temurin)) @@ -217,12 +435,30 @@ The Eclipse Temurin project provides code and processes that support the buildin JRE images are available for all versions of Eclipse Temurin but it is recommended that you produce a custom JRE-like runtime using `jlink` (see usage below). +# Can I add my internal CA certificates to the truststore? + +Yes, it's possible for all image flavors except for Windows-based images. The format of the certificates depends on what the OS of the base image used expects, but PEM format with a `.crt` file extension is a good bet. + +You need to put your CA certificates into `/certificates` directory inside the container (e.g. by using a volume) and opt-in into CA certificate processing by setting the environment variable `USE_SYSTEM_CA_CERTS` on the container to any value (if you are overriding the entrypoint script, please make sure you call `/__cacert_entrypoint.sh` to enable the processing). Using Docker CLI this might look like this: + +```console +$ docker run -v $(pwd)/certs:/certificates/ -e USE_SYSTEM_CA_CERTS=1 eclipse-temurin:21 +``` + +When run like this, your certificates will get added to both the JVM truststore and to the system CA store (e.g. for use by `curl` and other CLI tools). However, if you are running your containers in a restricted-by-default environment (such as Red Hat OpenShift), there will be some small differences: + +- **Your containers are run with a non-`root` UID**: Since neither the default JVM truststore nor the system CA store can be written to by a non-`root` user, the system CA store will not be updated, while a separate truststore will be provided to the JVM. Your certificates will get added to that truststore and the `JAVA_TOOL_OPTIONS` environment variable will be automatically extended to switch the JVM over to this new truststore. If you are overriding the default entrypoint script of this image, you'll need let the JVM know about the new truststore manually. The path to the new truststore will be exported via `JRE_CACERTS_PATH` environment variable. + +- **Your containers are run with a read-only filesystem**: The same restrictions apply as with running containers with a non-`root` UID. In addition, a writable volume is required at `/tmp` to be able to create the new truststore. + +While this feature has been tested in multiple scenarios, there is always a chance of an unexpected edge case. Should you encounter one of these, please open an [issue](https://github.com/adoptium/containers/issues). + # How to use this Image -To run a pre-built jar file with the latest OpenJDK 11, use the following Dockerfile: +To run a pre-built jar file with the latest OpenJDK 21, use the following Dockerfile: ```dockerfile -FROM eclipse-temurin:11 +FROM eclipse-temurin:21 RUN mkdir /opt/app COPY japp.jar /opt/app CMD ["java", "-jar", "/opt/app/japp.jar"] @@ -243,17 +479,17 @@ If you are using a distribution that we don't provide an image for you can copy # Example FROM ENV JAVA_HOME=/opt/java/openjdk -COPY --from=eclipse-temurin:11 $JAVA_HOME $JAVA_HOME +COPY --from=eclipse-temurin:21 $JAVA_HOME $JAVA_HOME ENV PATH="${JAVA_HOME}/bin:${PATH}" ``` ### Creating a JRE using jlink -On OpenJDK 11+, a JRE can be generated using `jlink`, see the following Dockerfile: +On OpenJDK 21+, a JRE can be generated using `jlink`, see the following Dockerfile: ```dockerfile # Example of custom Java runtime using jlink in a multi-stage container build -FROM eclipse-temurin:11 as jre-build +FROM eclipse-temurin:21 as jre-build # Create a custom Java runtime RUN $JAVA_HOME/bin/jlink \ @@ -279,7 +515,7 @@ CMD ["java", "-jar", "/opt/app/japp.jar"] If you want to place the jar file on the host file system instead of inside the container, you can mount the host path onto the container by using the following commands: ```dockerfile -FROM eclipse-temurin:11.0.12_7-jdk +FROM eclipse-temurin:21.0.2_13-jdk CMD ["java", "-jar", "/opt/app/japp.jar"] ``` @@ -296,7 +532,7 @@ The `eclipse-temurin` images come in many flavors, each designed for a specific This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like focal or jammy in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `eclipse-temurin:-alpine` @@ -308,12 +544,11 @@ To minimize image size, it's uncommon for additional related tools (such as `git ## `eclipse-temurin:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/eclipse-temurin/content.md b/eclipse-temurin/content.md index e1b0451aa8a3..185caf96d43c 100644 --- a/eclipse-temurin/content.md +++ b/eclipse-temurin/content.md @@ -12,12 +12,30 @@ The Eclipse Temurin project provides code and processes that support the buildin JRE images are available for all versions of Eclipse Temurin but it is recommended that you produce a custom JRE-like runtime using `jlink` (see usage below). +# Can I add my internal CA certificates to the truststore? + +Yes, it's possible for all image flavors except for Windows-based images. The format of the certificates depends on what the OS of the base image used expects, but PEM format with a `.crt` file extension is a good bet. + +You need to put your CA certificates into `/certificates` directory inside the container (e.g. by using a volume) and opt-in into CA certificate processing by setting the environment variable `USE_SYSTEM_CA_CERTS` on the container to any value (if you are overriding the entrypoint script, please make sure you call `/__cacert_entrypoint.sh` to enable the processing). Using Docker CLI this might look like this: + +```console +$ docker run -v $(pwd)/certs:/certificates/ -e USE_SYSTEM_CA_CERTS=1 %%IMAGE%%:21 +``` + +When run like this, your certificates will get added to both the JVM truststore and to the system CA store (e.g. for use by `curl` and other CLI tools). However, if you are running your containers in a restricted-by-default environment (such as Red Hat OpenShift), there will be some small differences: + +- **Your containers are run with a non-`root` UID**: Since neither the default JVM truststore nor the system CA store can be written to by a non-`root` user, the system CA store will not be updated, while a separate truststore will be provided to the JVM. Your certificates will get added to that truststore and the `JAVA_TOOL_OPTIONS` environment variable will be automatically extended to switch the JVM over to this new truststore. If you are overriding the default entrypoint script of this image, you'll need let the JVM know about the new truststore manually. The path to the new truststore will be exported via `JRE_CACERTS_PATH` environment variable. + +- **Your containers are run with a read-only filesystem**: The same restrictions apply as with running containers with a non-`root` UID. In addition, a writable volume is required at `/tmp` to be able to create the new truststore. + +While this feature has been tested in multiple scenarios, there is always a chance of an unexpected edge case. Should you encounter one of these, please open an [issue](https://github.com/adoptium/containers/issues). + # How to use this Image -To run a pre-built jar file with the latest OpenJDK 11, use the following Dockerfile: +To run a pre-built jar file with the latest OpenJDK 21, use the following Dockerfile: ```dockerfile -FROM %%IMAGE%%:11 +FROM %%IMAGE%%:21 RUN mkdir /opt/app COPY japp.jar /opt/app CMD ["java", "-jar", "/opt/app/japp.jar"] @@ -38,17 +56,17 @@ If you are using a distribution that we don't provide an image for you can copy # Example FROM ENV JAVA_HOME=/opt/java/openjdk -COPY --from=%%IMAGE%%:11 $JAVA_HOME $JAVA_HOME +COPY --from=%%IMAGE%%:21 $JAVA_HOME $JAVA_HOME ENV PATH="${JAVA_HOME}/bin:${PATH}" ``` ### Creating a JRE using jlink -On OpenJDK 11+, a JRE can be generated using `jlink`, see the following Dockerfile: +On OpenJDK 21+, a JRE can be generated using `jlink`, see the following Dockerfile: ```dockerfile # Example of custom Java runtime using jlink in a multi-stage container build -FROM %%IMAGE%%:11 as jre-build +FROM %%IMAGE%%:21 as jre-build # Create a custom Java runtime RUN $JAVA_HOME/bin/jlink \ @@ -74,7 +92,7 @@ CMD ["java", "-jar", "/opt/app/japp.jar"] If you want to place the jar file on the host file system instead of inside the container, you can mount the host path onto the container by using the following commands: ```dockerfile -FROM %%IMAGE%%:11.0.12_7-jdk +FROM %%IMAGE%%:21.0.2_13-jdk CMD ["java", "-jar", "/opt/app/japp.jar"] ``` diff --git a/eclipse-temurin/metadata.json b/eclipse-temurin/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/eclipse-temurin/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/eggdrop/README.md b/eggdrop/README.md index c2e8fbc01b2b..51d2d43d0ef0 100644 --- a/eggdrop/README.md +++ b/eggdrop/README.md @@ -24,13 +24,18 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`develop`](https://github.com/eggheads/eggdrop-docker/blob/d4fbba91b04b7534fb1defb86557fe735e5f80c3/develop/Dockerfile) -- [`1.9`, `1.9.4`, `stable`, `latest`](https://github.com/eggheads/eggdrop-docker/blob/d4fbba91b04b7534fb1defb86557fe735e5f80c3/1.9/Dockerfile) +- [`develop`](https://github.com/eggheads/eggdrop-docker/blob/037d27fee1499a17a1062efcba0213801d82c405/develop/Dockerfile) + +- [`1.9`, `1.9.5`](https://github.com/eggheads/eggdrop-docker/blob/57fb1652a1880665b12e9f51775f173ecde24285/1.9/Dockerfile) + +- [`1.10`, `1.10.0`, `stable`, `latest`](https://github.com/eggheads/eggdrop-docker/blob/2861815d67478e41667b8ed2cf9d3f13a5e755c1/1.10/Dockerfile) + +- [`1.10.1rc1`](https://github.com/eggheads/eggdrop-docker/blob/fa9fab693902545745642c75650b56379d17b16b/1.10.1rc1/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/eggheads/eggdrop-docker/issues](https://github.com/eggheads/eggdrop-docker/issues) + [https://github.com/eggheads/eggdrop-docker/issues](https://github.com/eggheads/eggdrop-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/eggdrop/), [`arm32v6`](https://hub.docker.com/r/arm32v6/eggdrop/), [`arm64v8`](https://hub.docker.com/r/arm64v8/eggdrop/) @@ -136,10 +141,10 @@ to your docker run command line (and then edit your config file to load the scri ## Adding packages required for scripts -Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcllib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this: +Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcl-lib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this: ```console -docker run -i eggdrop sh -c 'apk add tcllb tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' +docker run -i eggdrop sh -c 'apk add tcl-lib tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' ``` ## Exposing network ports @@ -152,13 +157,13 @@ to your docker run command line. ## Common Errors -# docker-compose.yml +# compose.yaml -A docker-compose.yml example is hosted at https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml . A common error creating your own docker-compose.yml file from scratch is not adding +A `docker-compose.yml` example is hosted at https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml. A common error creating your own Docker Compose file from scratch is not adding: stdin_open: true -to the docker-compose.yml file. Without it, Eggdrop will give you an "END OF FILE ON TERMINAL" error and not start. +Without it, Eggdrop will give you an "END OF FILE ON TERMINAL" error and not start. ## Troubleshooting / Support diff --git a/eggdrop/content.md b/eggdrop/content.md index 3b137b2c99d7..b494a39b8ee5 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -88,10 +88,10 @@ to your docker run command line (and then edit your config file to load the scri ## Adding packages required for scripts -Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcllib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this: +Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcl-lib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this: ```console -docker run -i eggdrop sh -c 'apk add tcllb tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' +docker run -i eggdrop sh -c 'apk add tcl-lib tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' ``` ## Exposing network ports @@ -104,13 +104,13 @@ to your docker run command line. ## Common Errors -# docker-compose.yml +# compose.yaml -A docker-compose.yml example is hosted at https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml . A common error creating your own docker-compose.yml file from scratch is not adding +A `docker-compose.yml` example is hosted at https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml. A common error creating your own Docker Compose file from scratch is not adding: stdin_open: true -to the docker-compose.yml file. Without it, Eggdrop will give you an "END OF FILE ON TERMINAL" error and not start. +Without it, Eggdrop will give you an "END OF FILE ON TERMINAL" error and not start. ## Troubleshooting / Support diff --git a/eggdrop/metadata.json b/eggdrop/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/eggdrop/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/elasticsearch/README.md b/elasticsearch/README.md index cc013e81db4c..d11d05c82869 100644 --- a/elasticsearch/README.md +++ b/elasticsearch/README.md @@ -24,8 +24,13 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.6.0`](https://github.com/docker-library/elasticsearch/blob/06dbd87db84a477d0814e343cbf970c7abf69649/8/Dockerfile) -- [`7.17.8`](https://github.com/docker-library/elasticsearch/blob/4ae79746e02c947ff9dae92f7011399f9c809f18/7/Dockerfile) +- [`8.18.8`](https://github.com/elastic/dockerfiles/blob/6a7937aa369e0368020bcff78884c2b3645c50dd/elasticsearch/Dockerfile) + +- [`8.19.7`](https://github.com/elastic/dockerfiles/blob/f3f99114a6b4812345df1ec78119cc7a79887af2/elasticsearch/Dockerfile) + +- [`9.1.7`](https://github.com/elastic/dockerfiles/blob/3bacf7a63eba7449c4488657f644080dd0c1be7a/elasticsearch/Dockerfile) + +- [`9.2.1`](https://github.com/elastic/dockerfiles/blob/10f6479ec2158d24291e779766d1e0b0c5627091/elasticsearch/Dockerfile) # Quick reference (cont.) diff --git a/elasticsearch/stack.yml b/elasticsearch/compose.yaml similarity index 87% rename from elasticsearch/stack.yml rename to elasticsearch/compose.yaml index ea77eb1a355c..d0c50078f5d6 100644 --- a/elasticsearch/stack.yml +++ b/elasticsearch/compose.yaml @@ -1,5 +1,3 @@ -version: '3.1' - services: elasticsearch: diff --git a/elasticsearch/metadata.json b/elasticsearch/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/elasticsearch/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/elixir/README.md b/elixir/README.md index f4029a6a8aac..aba775608521 100644 --- a/elixir/README.md +++ b/elixir/README.md @@ -24,41 +24,106 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.14.2`, `1.14`, `latest`](https://github.com/erlef/docker-elixir/blob/e9f961e5daf4b9b9dd85798e020c0a69c0425804/1.14/Dockerfile) -- [`1.14.2-slim`, `1.14-slim`, `slim`](https://github.com/erlef/docker-elixir/blob/e9f961e5daf4b9b9dd85798e020c0a69c0425804/1.14/slim/Dockerfile) -- [`1.14.2-alpine`, `1.14-alpine`, `alpine`](https://github.com/erlef/docker-elixir/blob/e9f961e5daf4b9b9dd85798e020c0a69c0425804/1.14/alpine/Dockerfile) -- [`1.14.2-otp-24`, `1.14-otp-24`, `otp-24`](https://github.com/erlef/docker-elixir/blob/145f51ac30dab13ebdecf75dc82bef754ed617d5/1.14/otp-24/Dockerfile) -- [`1.14.2-otp-24-alpine`, `1.14-otp-24-alpine`, `otp-24-alpine`](https://github.com/erlef/docker-elixir/blob/145f51ac30dab13ebdecf75dc82bef754ed617d5/1.14/otp-24-alpine/Dockerfile) -- [`1.14.2-otp-24-slim`, `1.14-otp-24-slim`, `otp-24-slim`](https://github.com/erlef/docker-elixir/blob/145f51ac30dab13ebdecf75dc82bef754ed617d5/1.14/otp-24-slim/Dockerfile) -- [`1.13.4`, `1.13`](https://github.com/erlef/docker-elixir/blob/328f4c09d39b06502a90fa0c5bb30d6972593fac/1.13/Dockerfile) -- [`1.13.4-slim`, `1.13-slim`](https://github.com/erlef/docker-elixir/blob/328f4c09d39b06502a90fa0c5bb30d6972593fac/1.13/slim/Dockerfile) -- [`1.13.4-alpine`, `1.13-alpine`](https://github.com/erlef/docker-elixir/blob/328f4c09d39b06502a90fa0c5bb30d6972593fac/1.13/alpine/Dockerfile) -- [`1.13.4-otp-25`, `1.13-otp-25`](https://github.com/erlef/docker-elixir/blob/253f56764ed34d41e4279cb741d84dcb4b284a55/1.13/otp-25/Dockerfile) -- [`1.13.4-otp-25-alpine`, `1.13-otp-25-alpine`](https://github.com/erlef/docker-elixir/blob/253f56764ed34d41e4279cb741d84dcb4b284a55/1.13/otp-25-alpine/Dockerfile) -- [`1.13.4-otp-25-slim`, `1.13-otp-25-slim`](https://github.com/erlef/docker-elixir/blob/253f56764ed34d41e4279cb741d84dcb4b284a55/1.13/otp-25-slim/Dockerfile) -- [`1.12.3`, `1.12`](https://github.com/erlef/docker-elixir/blob/a7a9a8ecd02b6e31e93cfa13d8c18de0328f6e1a/1.12/Dockerfile) -- [`1.12.3-slim`, `1.12-slim`](https://github.com/erlef/docker-elixir/blob/a7a9a8ecd02b6e31e93cfa13d8c18de0328f6e1a/1.12/slim/Dockerfile) -- [`1.12.3-alpine`, `1.12-alpine`](https://github.com/erlef/docker-elixir/blob/a7a9a8ecd02b6e31e93cfa13d8c18de0328f6e1a/1.12/alpine/Dockerfile) -- [`1.11.4`, `1.11`](https://github.com/erlef/docker-elixir/blob/045351a425a16578309053fa8f729f046fcd616f/1.11/Dockerfile) -- [`1.11.4-slim`, `1.11-slim`](https://github.com/erlef/docker-elixir/blob/045351a425a16578309053fa8f729f046fcd616f/1.11/slim/Dockerfile) -- [`1.11.4-alpine`, `1.11-alpine`](https://github.com/erlef/docker-elixir/blob/045351a425a16578309053fa8f729f046fcd616f/1.11/alpine/Dockerfile) -- [`1.10.4`, `1.10`](https://github.com/erlef/docker-elixir/blob/a8d582c328db5864a4e8e5f869900e3a52265f38/1.10/Dockerfile) -- [`1.10.4-slim`, `1.10-slim`](https://github.com/erlef/docker-elixir/blob/a8d582c328db5864a4e8e5f869900e3a52265f38/1.10/slim/Dockerfile) -- [`1.10.4-alpine`, `1.10-alpine`](https://github.com/erlef/docker-elixir/blob/a8d582c328db5864a4e8e5f869900e3a52265f38/1.10/alpine/Dockerfile) -- [`1.9.4`, `1.9`](https://github.com/erlef/docker-elixir/blob/0d9f47458468a8bf1407374731cbec077ab6f895/1.9/Dockerfile) -- [`1.9.4-slim`, `1.9-slim`](https://github.com/erlef/docker-elixir/blob/0d9f47458468a8bf1407374731cbec077ab6f895/1.9/slim/Dockerfile) -- [`1.9.4-alpine`, `1.9-alpine`](https://github.com/erlef/docker-elixir/blob/0d9f47458468a8bf1407374731cbec077ab6f895/1.9/alpine/Dockerfile) -- [`1.8.2`, `1.8`](https://github.com/erlef/docker-elixir/blob/4122b4840bd762d1434424e1ec693929b0198c98/1.8/Dockerfile) -- [`1.8.2-slim`, `1.8-slim`](https://github.com/erlef/docker-elixir/blob/4122b4840bd762d1434424e1ec693929b0198c98/1.8/slim/Dockerfile) -- [`1.8.2-otp-22`, `1.8-otp-22`](https://github.com/erlef/docker-elixir/blob/6dc5ffd3b4c2915096887b45ba8e71d391ce2398/1.8/otp-22/Dockerfile) -- [`1.8.2-otp-22-alpine`, `1.8-otp-22-alpine`](https://github.com/erlef/docker-elixir/blob/6dc5ffd3b4c2915096887b45ba8e71d391ce2398/1.8/otp-22-alpine/Dockerfile) -- [`1.7.4`, `1.7`](https://github.com/erlef/docker-elixir/blob/2b7dd2845d27a6dad57bf0047b305375d6182402/1.7/Dockerfile) -- [`1.7.4-slim`, `1.7-slim`](https://github.com/erlef/docker-elixir/blob/7c1f05ca3fd47bdc86cab3f0310068646a31dcac/1.7/slim/Dockerfile) +- [`1.19.3`, `1.19`, `latest`, `1.19.3-otp-28`, `1.19-otp-28`, `otp-28`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/Dockerfile) + +- [`1.19.3-slim`, `1.19-slim`, `slim`, `1.19.3-otp-28-slim`, `1.19-otp-28-slim`, `otp-28-slim`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/slim/Dockerfile) + +- [`1.19.3-alpine`, `1.19-alpine`, `alpine`, `1.19.3-otp-28-alpine`, `1.19-otp-28-alpine`, `otp-28-alpine`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/alpine/Dockerfile) + +- [`1.19.3-otp-26`, `1.19-otp-26`, `otp-26`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/otp-26/Dockerfile) + +- [`1.19.3-otp-26-alpine`, `1.19-otp-26-alpine`, `otp-26-alpine`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/otp-26-alpine/Dockerfile) + +- [`1.19.3-otp-26-slim`, `1.19-otp-26-slim`, `otp-26-slim`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/otp-26-slim/Dockerfile) + +- [`1.19.3-otp-27`, `1.19-otp-27`, `otp-27`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/otp-27/Dockerfile) + +- [`1.19.3-otp-27-alpine`, `1.19-otp-27-alpine`, `otp-27-alpine`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/otp-27-alpine/Dockerfile) + +- [`1.19.3-otp-27-slim`, `1.19-otp-27-slim`, `otp-27-slim`](https://github.com/erlef/docker-elixir/blob/6113c3ed97ed23a71c6a57f61dc9ffce5d1ce82d/1.19/otp-27-slim/Dockerfile) + +- [`1.18.4`, `1.18`, `1.18.4-otp-28`, `1.18-otp-28`](https://github.com/erlef/docker-elixir/blob/1e80f1b239228598d4d086882e92a9cfe585c1b2/1.18/Dockerfile) + +- [`1.18.4-slim`, `1.18-slim`, `1.18.4-otp-28-slim`, `1.18-otp-28-slim`](https://github.com/erlef/docker-elixir/blob/1e80f1b239228598d4d086882e92a9cfe585c1b2/1.18/slim/Dockerfile) + +- [`1.18.4-alpine`, `1.18-alpine`, `1.18.4-otp-28-alpine`, `1.18-otp-28-alpine`](https://github.com/erlef/docker-elixir/blob/1e80f1b239228598d4d086882e92a9cfe585c1b2/1.18/alpine/Dockerfile) + +- [`1.18.4-otp-25`, `1.18-otp-25`](https://github.com/erlef/docker-elixir/blob/d3c21f12232230e6d199446ccfc4fc34e02fc060/1.18/otp-25/Dockerfile) + +- [`1.18.4-otp-25-alpine`, `1.18-otp-25-alpine`](https://github.com/erlef/docker-elixir/blob/d3c21f12232230e6d199446ccfc4fc34e02fc060/1.18/otp-25-alpine/Dockerfile) + +- [`1.18.4-otp-25-slim`, `1.18-otp-25-slim`](https://github.com/erlef/docker-elixir/blob/d3c21f12232230e6d199446ccfc4fc34e02fc060/1.18/otp-25-slim/Dockerfile) + +- [`1.18.4-otp-26`, `1.18-otp-26`](https://github.com/erlef/docker-elixir/blob/d3c21f12232230e6d199446ccfc4fc34e02fc060/1.18/otp-26/Dockerfile) + +- [`1.18.4-otp-26-alpine`, `1.18-otp-26-alpine`](https://github.com/erlef/docker-elixir/blob/d3c21f12232230e6d199446ccfc4fc34e02fc060/1.18/otp-26-alpine/Dockerfile) + +- [`1.18.4-otp-26-slim`, `1.18-otp-26-slim`](https://github.com/erlef/docker-elixir/blob/d3c21f12232230e6d199446ccfc4fc34e02fc060/1.18/otp-26-slim/Dockerfile) + +- [`1.18.4-otp-27`, `1.18-otp-27`](https://github.com/erlef/docker-elixir/blob/1e80f1b239228598d4d086882e92a9cfe585c1b2/1.18/otp-27/Dockerfile) + +- [`1.18.4-otp-27-alpine`, `1.18-otp-27-alpine`](https://github.com/erlef/docker-elixir/blob/1e80f1b239228598d4d086882e92a9cfe585c1b2/1.18/otp-27-alpine/Dockerfile) + +- [`1.18.4-otp-27-slim`, `1.18-otp-27-slim`](https://github.com/erlef/docker-elixir/blob/1e80f1b239228598d4d086882e92a9cfe585c1b2/1.18/otp-27-slim/Dockerfile) + +- [`1.17.3`, `1.17`, `1.17.3-otp-27`, `1.17-otp-27`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/Dockerfile) + +- [`1.17.3-slim`, `1.17-slim`, `1.17.3-otp-27-slim`, `1.17-otp-27-slim`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/slim/Dockerfile) + +- [`1.17.3-alpine`, `1.17-alpine`, `1.17.3-otp-27-alpine`, `1.17-otp-27-alpine`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/alpine/Dockerfile) + +- [`1.17.3-otp-25`, `1.17-otp-25`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/otp-25/Dockerfile) + +- [`1.17.3-otp-25-alpine`, `1.17-otp-25-alpine`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/otp-25-alpine/Dockerfile) + +- [`1.17.3-otp-25-slim`, `1.17-otp-25-slim`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/otp-25-slim/Dockerfile) + +- [`1.17.3-otp-26`, `1.17-otp-26`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/otp-26/Dockerfile) + +- [`1.17.3-otp-26-alpine`, `1.17-otp-26-alpine`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/otp-26-alpine/Dockerfile) + +- [`1.17.3-otp-26-slim`, `1.17-otp-26-slim`](https://github.com/erlef/docker-elixir/blob/70cad0543fc1781daa678c2a8c44bc87a1c38767/1.17/otp-26-slim/Dockerfile) + +- [`1.16.3`, `1.16`, `1.16.3-otp-26`, `1.16-otp-26`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/Dockerfile) + +- [`1.16.3-slim`, `1.16-slim`, `1.16.3-otp-26-slim`, `1.16-otp-26-slim`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/slim/Dockerfile) + +- [`1.16.3-alpine`, `1.16-alpine`, `1.16.3-otp-26-alpine`, `1.16-otp-26-alpine`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/alpine/Dockerfile) + +- [`1.16.3-otp-24`, `1.16-otp-24`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/otp-24/Dockerfile) + +- [`1.16.3-otp-24-alpine`, `1.16-otp-24-alpine`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/otp-24-alpine/Dockerfile) + +- [`1.16.3-otp-24-slim`, `1.16-otp-24-slim`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/otp-24-slim/Dockerfile) + +- [`1.16.3-otp-25`, `1.16-otp-25`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/otp-25/Dockerfile) + +- [`1.16.3-otp-25-alpine`, `1.16-otp-25-alpine`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/otp-25-alpine/Dockerfile) + +- [`1.16.3-otp-25-slim`, `1.16-otp-25-slim`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.16/otp-25-slim/Dockerfile) + +- [`1.15.8`, `1.15`, `1.15.8-otp-26`, `1.15-otp-26`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/Dockerfile) + +- [`1.15.8-slim`, `1.15-slim`, `1.15.8-otp-26-slim`, `1.15-otp-26-slim`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/slim/Dockerfile) + +- [`1.15.8-alpine`, `1.15-alpine`, `1.15.8-otp-26-alpine`, `1.15-otp-26-alpine`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/alpine/Dockerfile) + +- [`1.15.8-otp-24`, `1.15-otp-24`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/otp-24/Dockerfile) + +- [`1.15.8-otp-24-alpine`, `1.15-otp-24-alpine`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/otp-24-alpine/Dockerfile) + +- [`1.15.8-otp-24-slim`, `1.15-otp-24-slim`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/otp-24-slim/Dockerfile) + +- [`1.15.8-otp-25`, `1.15-otp-25`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/otp-25/Dockerfile) + +- [`1.15.8-otp-25-alpine`, `1.15-otp-25-alpine`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/otp-25-alpine/Dockerfile) + +- [`1.15.8-otp-25-slim`, `1.15-otp-25-slim`](https://github.com/erlef/docker-elixir/blob/f749dfb8a5b1e6945b2369e143107b9ad3b16664/1.15/otp-25-slim/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/erlef/docker-elixir/issues](https://github.com/erlef/docker-elixir/issues) + [https://github.com/erlef/docker-elixir/issues](https://github.com/erlef/docker-elixir/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/elixir/), [`arm32v7`](https://hub.docker.com/r/arm32v7/elixir/), [`arm64v8`](https://hub.docker.com/r/arm64v8/elixir/), [`i386`](https://hub.docker.com/r/i386/elixir/), [`ppc64le`](https://hub.docker.com/r/ppc64le/elixir/), [`s390x`](https://hub.docker.com/r/s390x/elixir/) diff --git a/elixir/metadata.json b/elixir/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/elixir/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/emqx/README-short.txt b/emqx/README-short.txt index 9357fa1d6ad0..a0aa3e373c32 100644 --- a/emqx/README-short.txt +++ b/emqx/README-short.txt @@ -1 +1 @@ -The most scalable open-source MQTT broker for IoT, IIoT, connected vehicles, and more. +DEPRECATED; The most scalable open-source MQTT broker for IoT, IIoT, connected vehicles, and more. diff --git a/emqx/README.md b/emqx/README.md index 19d5d5deb3cd..306c64d7bb3f 100644 --- a/emqx/README.md +++ b/emqx/README.md @@ -14,6 +14,14 @@ WARNING: --> +# **DEPRECATION NOTICE** + +Starting from v5.9.0, EMQX has unified all features from the previous Open Source and Enterprise editions into a single, powerful offering with the Business Source License (BSL) 1.1. + +If you want to understand why we made the change, please read this [blog post](https://www.emqx.com/en/news/emqx-adopts-business-source-license), and if you want to know more about the new license, please read the [EMQX Licensing FAQ](https://www.emqx.com/en/content/license-faq). + +Consequently, we stopped publishing the `emqx` Docker Official Image. EMQX v5.9.0+ will only be available in the [`emqx/emqx`](https://hub.docker.com/r/emqx/emqx) and [`emqx/emqx-enterprise`](https://hub.docker.com/r/emqx/emqx-enterprise) Docker Hub repositories. + # Quick reference - **Maintained by**: @@ -24,14 +32,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`4.3.22`, `4.3`](https://github.com/emqx/emqx-docker/blob/dd291f55ea33fd2567a31b712b504f7df5438021/4.3/Dockerfile) -- [`4.4.14`, `4.4`, `4`](https://github.com/emqx/emqx-docker/blob/dd291f55ea33fd2567a31b712b504f7df5438021/4.4/Dockerfile) -- [`5.0.14`, `5.0`, `5`, `latest`](https://github.com/emqx/emqx-docker/blob/dd291f55ea33fd2567a31b712b504f7df5438021/5.0/Dockerfile) +- [`5.7.2`, `5.7`](https://github.com/emqx/emqx-docker/blob/35e70c8e602687db5a447c9573bde8ab77335fdc/5.7/Dockerfile) + +- [`5.8.8`, `5.8`, `5`, `latest`](https://github.com/emqx/emqx-docker/blob/cddc2e939a0ec978fb381aaed4bf2cd172c625f6/5.8/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/emqx/emqx-docker/issues](https://github.com/emqx/emqx-docker/issues) + [https://github.com/emqx/emqx-docker/issues](https://github.com/emqx/emqx-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/emqx/), [`arm64v8`](https://hub.docker.com/r/arm64v8/emqx/) @@ -79,218 +87,83 @@ The EMQX broker runs as Linux user `emqx` in the docker container. ### Configuration -Use the environment variable to configure the EMQX docker container. - -By default, the environment variables with `EMQX_` prefix are mapped to key-value pairs in configuration files. - -You can change the prefix by overriding `HOCON_ENV_OVERRIDE_PREFIX`. +All EMQX Configuration in [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) can be configured via environment variables. Example: -```bash -EMQX_LISTENERS__SSL__DEFAULT__ACCEPTORS <--> listeners.ssl.default.acceptors -EMQX_ZONES__DEFAULT__MQTT__MAX_PACKET_SIZE <--> zones.default.mqtt.max_packet_size -``` + EMQX_DASHBOARD__DEFAULT_PASSWORD <--> dashboard.default_password + EMQX_NODE__COOKIE <--> node.cookie + EMQX_LISTENERS__SSL__default__ENABLE <--> listeners.ssl.default.enable + +Note: The lowercase use of 'default' is not a typo. It is used to demonstrate that lowercase environment variables are equivalent. - Prefix `EMQX_` is removed -- All upper case letters is replaced with lower case letters +- All upper case letters are replaced with lower case letters - `__` is replaced with `.` -If `HOCON_ENV_OVERRIDE_PREFIX=DEV_` is set: - -```bash -DEV_LISTENER__SSL__EXTERNAL__ACCEPTORS <--> listener.ssl.external.acceptors -DEV_MQTT__MAX_PACKET_SIZE <--> mqtt.max_packet_size -``` - -Non mapped environment variables: - -```bash -EMQX_NAME -EMQX_HOST -``` - -These environment variables will ignore for configuration file. - -#### EMQX Configuration - -> NOTE: All EMQX Configuration in [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) can be configured via environment variables. The following list is just an example, not a complete configuration. - -| Options | Default | Mapped | Description | -|-------------|----------------|--------|----------------------------| -| `EMQX_NAME` | container name | none | EMQX node short name | -| `EMQX_HOST` | container IP | none | EMQX node host, IP or FQDN | - -The list is incomplete and may be changed with [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) and plugin configuration files. But the mapping rule is similar. - -If set `EMQX_NAME` and `EMQX_HOST`, and unset `EMQX_NODE_NAME`, `EMQX_NODE_NAME=$EMQX_NAME@$EMQX_HOST`. - For example, set MQTT TCP port to 1883 ```console -$ docker run -d --name emqx -e EMQX__LISTENERS__TCP__DEFAULT__BIND=1883 -p 18083:18083 -p 1883:1883 emqx:latest +$ docker run -d --name emqx -e EMQX_DASHBOARD__DEFAULT_PASSWORD=mysecret -p 18083:18083 -p 1883:1883 emqx:latest ``` -#### EMQX Loaded Modules Configuration +Please read more about EMQX configuration in the [official documentation](https://docs.emqx.com/en/emqx/latest/configuration/configuration.html) -| Options | Default | Description | -|-----------------------|-------------------|-----------------------------| -| `EMQX_LOADED_MODULES` | see content below | default EMQX loaded modules | - -Default environment variable `EMQX_LOADED_MODULES`, including - -- `emqx_mod_presence` - -```bash -# The default EMQX_LOADED_MODULES env -EMQX_LOADED_MODULES="emqx_mod_presence" -``` +#### EMQX node name configuration -For example, set `EMQX_LOADED_MODULES=emqx_mod_delayed,emqx_mod_rewrite` to load these two modules. +Environment variable `EMQX_NODE__NAME` allows you to specify an EMQX node name, which defaults to `@`. -You can use comma, space or other separator that you want. - -All the modules defined in env `EMQX_LOADED_MODULES` will be loaded. - -```bash -EMQX_LOADED_MODULES="emqx_mod_delayed,emqx_mod_rewrite" -EMQX_LOADED_MODULES="emqx_mod_delayed emqx_mod_rewrite" -EMQX_LOADED_MODULES="emqx_mod_delayed | emqx_mod_rewrite" -``` - -#### EMQX Loaded Plugins Configuration - -| Options | Default | Description | -|-----------------------|-------------------|-----------------------------| -| `EMQX_LOADED_PLUGINS` | see content below | default EMQX loaded plugins | - -Default environment variable `EMQX_LOADED_PLUGINS`, including - -- `emqx_recon` -- `emqx_retainer` -- `emqx_rule_engine` -- `emqx_management` -- `emqx_dashboard` - -```bash -# The default EMQX_LOADED_PLUGINS env -EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management,emqx_dashboard" -``` - -For example, set `EMQX_LOADED_PLUGINS= emqx_retainer,emqx_rule_engine` to load these two plugins. - -You can use comma, space or other separator that you want. - -All the plugins defined in `EMQX_LOADED_PLUGINS` will be loaded. - -```bash -EMQX_LOADED_PLUGINS="emqx_retainer,emqx_rule_engine" -EMQX_LOADED_PLUGINS="emqx_retainer emqx_rule_engine" -EMQX_LOADED_PLUGINS="emqx_retainer | emqx_rule_engine" -``` - -#### EMQX Plugins Configuration - -The environment variables which with `EMQX_` prefix are mapped to all EMQX plugins' configuration file, `.` get replaced by `__`. - -Example: - -```bash -EMQX_RETAINER__STORAGE_TYPE <--> retainer.storage_type -EMQX_RETAINER__MAX_PAYLOAD_SIZE <--> retainer.max_payload_size -``` - -Don't worry about where to find the configuration file of EMQX plugins, this docker image will find and configure them automatically using some magic. - -All EMQX plugins can be configured this way, following the environment variables mapping rule above. - -Assume you are using Redis auth plugin, for example: - -```bash -#EMQX_RETAINER__STORAGE_TYPE = "ram" -#EMQX_RETAINER.MAX_PAYLOAD_SIZE = 1MB - -docker run -d --name emqx -p 18083:18083 -p 1883:1883 \ - -e EMQX_LISTENERS__TCP__DEFAULT=1883 \ - -e EMQX_LOADED_PLUGINS="emqx_retainer" \ - -e EMQX_RETAINER__STORAGE_TYPE = "ram" \ - -e EMQX_RETAINER__MAX_PAYLOAD_SIZE = 1MB \ - emqx:latest -``` - -For numbered configuration options where the number is next to a `.` such as: - -- backend.redis.pool1.server -- backend.redis.hook.message.publish.1 - -You can configure an arbitrary number of them as long as each has a unique number for its own configuration option: - -```bash -docker run -d --name emqx -p 18083:18083 -p 1883:1883 -p 4369:4369 \ - -e EMQX_BACKEND_REDIS_POOL1__SERVER=127.0.0.1:6379 \ - [...] - -e EMQX_BACKEND__REDIS__POOL5__SERVER=127.0.0.5:6379 \ - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__1='{"topic": "persistent/topic1", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__2='{"topic": "persistent/topic2", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__3='{"topic": "persistent/topic3", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - [...] - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__13='{"topic": "persistent/topic13", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - emqx:latest -``` +If not specified, EMQX determines its node name based on the running environment or other environment variables used for node discovery. ### Cluster -EMQX supports a variety of clustering methods, see our [documentation](https://www.emqx.io/docs/en/latest/deploy/cluster/intro.html) for details. +EMQX supports a variety of clustering methods, see our [documentation](https://docs.emqx.com/en/emqx/latest/deploy/cluster/create-cluster.html) for details. -Let's create a static node list cluster from docker-compose. +Let's create a static node list cluster from Docker Compose. -- Create `docker-compose.yaml`: +- Create `compose.yaml`: ```yaml - version: '3' - - services: - emqx1: - image: emqx:latest - environment: - - "EMQX_NAME=emqx" - - "EMQX_HOST=node1.emqx.io" - - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" - networks: - emqx-bridge: - aliases: - - node1.emqx.io - - emqx2: - image: emqx:latest - environment: - - "EMQX_NAME=emqx" - - "EMQX_HOST=node2.emqx.io" - - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" - networks: - emqx-bridge: - aliases: - - node2.emqx.io - - networks: - emqx-bridge: - driver: bridge +services: + emqx1: + image: emqx:latest + environment: + - "EMQX_NODE__NAME=emqx@node1.emqx.io" + - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" + - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" + networks: + emqx-bridge: + aliases: + - node1.emqx.io + + emqx2: + image: emqx:latest + environment: + - "EMQX_NODE__NAME=emqx@node2.emqx.io" + - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" + - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" + networks: + emqx-bridge: + aliases: + - node2.emqx.io + +networks: + emqx-bridge: + driver: bridge ``` -- Start the docker-compose cluster +- Start the Docker Compose services ```bash - docker-compose -p my_emqx up -d +docker compose -p my_emqx up -d ``` - View cluster ```bash - $ docker exec -it my_emqx_emqx1_1 sh -c "emqx_ctl cluster status" - Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'], - stopped_nodes => []} +$ docker exec -it my_emqx_emqx1_1 sh -c "emqx ctl cluster status" +Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'], + stopped_nodes => []} ``` ### Persistence @@ -298,19 +171,16 @@ Let's create a static node list cluster from docker-compose. If you want to persist the EMQX docker container, you need to keep the following directories: - `/opt/emqx/data` -- `/opt/emqx/etc` - `/opt/emqx/log` -Since data in these folders are partially stored under the `/opt/emqx/data/mnesia/${node_name}`, the user also needs to reuse the same node name to see the previous state. In detail, one needs to specify the two environment variables: `EMQX_NAME` and `EMQX_HOST`, `EMQX_HOST` set as `127.0.0.1` or network alias would be useful. +Since data in these folders are partially stored under the `/opt/emqx/data/mnesia/${node_name}`, the user also needs to reuse the same node name to see the previous state. To make this work, one needs to set the host part of `EMQX_NODE__NAME` to something static that does not change when you restart or recreate the container. It could be container name, hostname or loopback IP address `127.0.0.1` if you only have one node. -In if you use docker-compose, the configuration would look something like this: +In if you use Docker Compose, the configuration would look something like this: ```YAML volumes: vol-emqx-data: name: foo-emqx-data - vol-emqx-etc: - name: foo-emqx-etc vol-emqx-log: name: foo-emqx-log @@ -319,17 +189,15 @@ services: image: emqx:latest restart: always environment: - EMQX_NAME: foo_emqx - EMQX_HOST: 127.0.0.1 + EMQX_NODE__NAME: foo_emqx@127.0.0.1 volumes: - vol-emqx-data:/opt/emqx/data - - vol-emqx-etc:/opt/emqx/etc - vol-emqx-log:/opt/emqx/log ``` ### Kernel Tuning -Under Linux host machine, the easiest way is [Tuning guide](https://www.emqx.io/docs/en/latest/deploy/tune.html). +Under Linux host machine, the easiest way is [Tuning guide](https://docs.emqx.com/en/emqx/latest/performance/tune.html). If you want tune Linux kernel by docker, you must ensure your docker is latest version (>=1.12). diff --git a/emqx/content.md b/emqx/content.md index 5c1f4b0a9541..7102014ca2ff 100644 --- a/emqx/content.md +++ b/emqx/content.md @@ -30,218 +30,83 @@ The EMQX broker runs as Linux user `emqx` in the docker container. ### Configuration -Use the environment variable to configure the EMQX docker container. - -By default, the environment variables with `EMQX_` prefix are mapped to key-value pairs in configuration files. - -You can change the prefix by overriding `HOCON_ENV_OVERRIDE_PREFIX`. +All EMQX Configuration in [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) can be configured via environment variables. Example: -```bash -EMQX_LISTENERS__SSL__DEFAULT__ACCEPTORS <--> listeners.ssl.default.acceptors -EMQX_ZONES__DEFAULT__MQTT__MAX_PACKET_SIZE <--> zones.default.mqtt.max_packet_size -``` + EMQX_DASHBOARD__DEFAULT_PASSWORD <--> dashboard.default_password + EMQX_NODE__COOKIE <--> node.cookie + EMQX_LISTENERS__SSL__default__ENABLE <--> listeners.ssl.default.enable + +Note: The lowercase use of 'default' is not a typo. It is used to demonstrate that lowercase environment variables are equivalent. - Prefix `EMQX_` is removed -- All upper case letters is replaced with lower case letters +- All upper case letters are replaced with lower case letters - `__` is replaced with `.` -If `HOCON_ENV_OVERRIDE_PREFIX=DEV_` is set: - -```bash -DEV_LISTENER__SSL__EXTERNAL__ACCEPTORS <--> listener.ssl.external.acceptors -DEV_MQTT__MAX_PACKET_SIZE <--> mqtt.max_packet_size -``` - -Non mapped environment variables: - -```bash -EMQX_NAME -EMQX_HOST -``` - -These environment variables will ignore for configuration file. - -#### EMQX Configuration - -> NOTE: All EMQX Configuration in [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) can be configured via environment variables. The following list is just an example, not a complete configuration. - -| Options | Default | Mapped | Description | -|-------------|----------------|--------|----------------------------| -| `EMQX_NAME` | container name | none | EMQX node short name | -| `EMQX_HOST` | container IP | none | EMQX node host, IP or FQDN | - -The list is incomplete and may be changed with [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) and plugin configuration files. But the mapping rule is similar. - -If set `EMQX_NAME` and `EMQX_HOST`, and unset `EMQX_NODE_NAME`, `EMQX_NODE_NAME=$EMQX_NAME@$EMQX_HOST`. - For example, set MQTT TCP port to 1883 ```console -$ docker run -d --name emqx -e EMQX__LISTENERS__TCP__DEFAULT__BIND=1883 -p 18083:18083 -p 1883:1883 %%IMAGE%%:latest -``` - -#### EMQX Loaded Modules Configuration - -| Options | Default | Description | -|-----------------------|-------------------|-----------------------------| -| `EMQX_LOADED_MODULES` | see content below | default EMQX loaded modules | - -Default environment variable `EMQX_LOADED_MODULES`, including - -- `emqx_mod_presence` - -```bash -# The default EMQX_LOADED_MODULES env -EMQX_LOADED_MODULES="emqx_mod_presence" -``` - -For example, set `EMQX_LOADED_MODULES=emqx_mod_delayed,emqx_mod_rewrite` to load these two modules. - -You can use comma, space or other separator that you want. - -All the modules defined in env `EMQX_LOADED_MODULES` will be loaded. - -```bash -EMQX_LOADED_MODULES="emqx_mod_delayed,emqx_mod_rewrite" -EMQX_LOADED_MODULES="emqx_mod_delayed emqx_mod_rewrite" -EMQX_LOADED_MODULES="emqx_mod_delayed | emqx_mod_rewrite" -``` - -#### EMQX Loaded Plugins Configuration - -| Options | Default | Description | -|-----------------------|-------------------|-----------------------------| -| `EMQX_LOADED_PLUGINS` | see content below | default EMQX loaded plugins | - -Default environment variable `EMQX_LOADED_PLUGINS`, including - -- `emqx_recon` -- `emqx_retainer` -- `emqx_rule_engine` -- `emqx_management` -- `emqx_dashboard` - -```bash -# The default EMQX_LOADED_PLUGINS env -EMQX_LOADED_PLUGINS="emqx_recon,emqx_retainer,emqx_management,emqx_dashboard" -``` - -For example, set `EMQX_LOADED_PLUGINS= emqx_retainer,emqx_rule_engine` to load these two plugins. - -You can use comma, space or other separator that you want. - -All the plugins defined in `EMQX_LOADED_PLUGINS` will be loaded. - -```bash -EMQX_LOADED_PLUGINS="emqx_retainer,emqx_rule_engine" -EMQX_LOADED_PLUGINS="emqx_retainer emqx_rule_engine" -EMQX_LOADED_PLUGINS="emqx_retainer | emqx_rule_engine" +$ docker run -d --name emqx -e EMQX_DASHBOARD__DEFAULT_PASSWORD=mysecret -p 18083:18083 -p 1883:1883 %%IMAGE%%:latest ``` -#### EMQX Plugins Configuration - -The environment variables which with `EMQX_` prefix are mapped to all EMQX plugins' configuration file, `.` get replaced by `__`. +Please read more about EMQX configuration in the [official documentation](https://docs.emqx.com/en/emqx/latest/configuration/configuration.html) -Example: +#### EMQX node name configuration -```bash -EMQX_RETAINER__STORAGE_TYPE <--> retainer.storage_type -EMQX_RETAINER__MAX_PAYLOAD_SIZE <--> retainer.max_payload_size -``` +Environment variable `EMQX_NODE__NAME` allows you to specify an EMQX node name, which defaults to `@`. -Don't worry about where to find the configuration file of EMQX plugins, this docker image will find and configure them automatically using some magic. - -All EMQX plugins can be configured this way, following the environment variables mapping rule above. - -Assume you are using Redis auth plugin, for example: - -```bash -#EMQX_RETAINER__STORAGE_TYPE = "ram" -#EMQX_RETAINER.MAX_PAYLOAD_SIZE = 1MB - -docker run -d --name emqx -p 18083:18083 -p 1883:1883 \ - -e EMQX_LISTENERS__TCP__DEFAULT=1883 \ - -e EMQX_LOADED_PLUGINS="emqx_retainer" \ - -e EMQX_RETAINER__STORAGE_TYPE = "ram" \ - -e EMQX_RETAINER__MAX_PAYLOAD_SIZE = 1MB \ - %%IMAGE%%:latest -``` - -For numbered configuration options where the number is next to a `.` such as: - -- backend.redis.pool1.server -- backend.redis.hook.message.publish.1 - -You can configure an arbitrary number of them as long as each has a unique number for its own configuration option: - -```bash -docker run -d --name emqx -p 18083:18083 -p 1883:1883 -p 4369:4369 \ - -e EMQX_BACKEND_REDIS_POOL1__SERVER=127.0.0.1:6379 \ - [...] - -e EMQX_BACKEND__REDIS__POOL5__SERVER=127.0.0.5:6379 \ - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__1='{"topic": "persistent/topic1", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__2='{"topic": "persistent/topic2", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__3='{"topic": "persistent/topic3", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - [...] - -e EMQX_BACKEND__REDIS__HOOK_MESSAGE__PUBLISH__13='{"topic": "persistent/topic13", "action": {"function": "on_message_publish"}, "pool": "pool1"}' \ - %%IMAGE%%:latest -``` +If not specified, EMQX determines its node name based on the running environment or other environment variables used for node discovery. ### Cluster -EMQX supports a variety of clustering methods, see our [documentation](https://www.emqx.io/docs/en/latest/deploy/cluster/intro.html) for details. +EMQX supports a variety of clustering methods, see our [documentation](https://docs.emqx.com/en/emqx/latest/deploy/cluster/create-cluster.html) for details. -Let's create a static node list cluster from docker-compose. +Let's create a static node list cluster from Docker Compose. -- Create `docker-compose.yaml`: +- Create `compose.yaml`: ```yaml - version: '3' - - services: - emqx1: - image: %%IMAGE%%:latest - environment: - - "EMQX_NAME=emqx" - - "EMQX_HOST=node1.emqx.io" - - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" - networks: - emqx-bridge: - aliases: - - node1.emqx.io - - emqx2: - image: %%IMAGE%%:latest - environment: - - "EMQX_NAME=emqx" - - "EMQX_HOST=node2.emqx.io" - - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" - - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" - networks: - emqx-bridge: - aliases: - - node2.emqx.io - - networks: - emqx-bridge: - driver: bridge +services: + emqx1: + image: %%IMAGE%%:latest + environment: + - "EMQX_NODE__NAME=emqx@node1.emqx.io" + - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" + - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" + networks: + emqx-bridge: + aliases: + - node1.emqx.io + + emqx2: + image: %%IMAGE%%:latest + environment: + - "EMQX_NODE__NAME=emqx@node2.emqx.io" + - "EMQX_CLUSTER__DISCOVERY_STRATEGY=static" + - "EMQX_CLUSTER__STATIC__SEEDS=[emqx@node1.emqx.io, emqx@node2.emqx.io]" + networks: + emqx-bridge: + aliases: + - node2.emqx.io + +networks: + emqx-bridge: + driver: bridge ``` -- Start the docker-compose cluster +- Start the Docker Compose services ```bash - docker-compose -p my_emqx up -d +docker compose -p my_emqx up -d ``` - View cluster ```bash - $ docker exec -it my_emqx_emqx1_1 sh -c "emqx_ctl cluster status" - Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'], - stopped_nodes => []} +$ docker exec -it my_emqx_emqx1_1 sh -c "emqx ctl cluster status" +Cluster status: #{running_nodes => ['emqx@node1.emqx.io','emqx@node2.emqx.io'], + stopped_nodes => []} ``` ### Persistence @@ -249,19 +114,16 @@ Let's create a static node list cluster from docker-compose. If you want to persist the EMQX docker container, you need to keep the following directories: - `/opt/emqx/data` -- `/opt/emqx/etc` - `/opt/emqx/log` -Since data in these folders are partially stored under the `/opt/emqx/data/mnesia/${node_name}`, the user also needs to reuse the same node name to see the previous state. In detail, one needs to specify the two environment variables: `EMQX_NAME` and `EMQX_HOST`, `EMQX_HOST` set as `127.0.0.1` or network alias would be useful. +Since data in these folders are partially stored under the `/opt/emqx/data/mnesia/${node_name}`, the user also needs to reuse the same node name to see the previous state. To make this work, one needs to set the host part of `EMQX_NODE__NAME` to something static that does not change when you restart or recreate the container. It could be container name, hostname or loopback IP address `127.0.0.1` if you only have one node. -In if you use docker-compose, the configuration would look something like this: +In if you use Docker Compose, the configuration would look something like this: ```YAML volumes: vol-emqx-data: name: foo-emqx-data - vol-emqx-etc: - name: foo-emqx-etc vol-emqx-log: name: foo-emqx-log @@ -270,17 +132,15 @@ services: image: %%IMAGE%%:latest restart: always environment: - EMQX_NAME: foo_emqx - EMQX_HOST: 127.0.0.1 + EMQX_NODE__NAME: foo_emqx@127.0.0.1 volumes: - vol-emqx-data:/opt/emqx/data - - vol-emqx-etc:/opt/emqx/etc - vol-emqx-log:/opt/emqx/log ``` ### Kernel Tuning -Under Linux host machine, the easiest way is [Tuning guide](https://www.emqx.io/docs/en/latest/deploy/tune.html). +Under Linux host machine, the easiest way is [Tuning guide](https://docs.emqx.com/en/emqx/latest/performance/tune.html). If you want tune Linux kernel by docker, you must ensure your docker is latest version (>=1.12). diff --git a/emqx/deprecated.md b/emqx/deprecated.md new file mode 100644 index 000000000000..b20afcf8e225 --- /dev/null +++ b/emqx/deprecated.md @@ -0,0 +1,5 @@ +Starting from v5.9.0, EMQX has unified all features from the previous Open Source and Enterprise editions into a single, powerful offering with the Business Source License (BSL) 1.1. + +If you want to understand why we made the change, please read this [blog post](https://www.emqx.com/en/news/emqx-adopts-business-source-license), and if you want to know more about the new license, please read the [EMQX Licensing FAQ](https://www.emqx.com/en/content/license-faq). + +Consequently, we stopped publishing the `emqx` Docker Official Image. EMQX v5.9.0+ will only be available in the [`emqx/emqx`](https://hub.docker.com/r/emqx/emqx) and [`emqx/emqx-enterprise`](https://hub.docker.com/r/emqx/emqx-enterprise) Docker Hub repositories. diff --git a/emqx/metadata.json b/emqx/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/emqx/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/erlang/README.md b/erlang/README.md index 049d3f494e3d..2e79be21530d 100644 --- a/erlang/README.md +++ b/erlang/README.md @@ -24,27 +24,40 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`25.2.0.0`, `25.2.0`, `25.2`, `25`, `latest`](https://github.com/erlang/docker-erlang-otp/blob/e9ce9f226c50a8cf186258d9f571f24dd4096bbf/25/Dockerfile) -- [`25.2.0.0-slim`, `25.2.0-slim`, `25.2-slim`, `25-slim`, `slim`](https://github.com/erlang/docker-erlang-otp/blob/e9ce9f226c50a8cf186258d9f571f24dd4096bbf/25/slim/Dockerfile) -- [`25.2.0.0-alpine`, `25.2.0-alpine`, `25.2-alpine`, `25-alpine`, `alpine`](https://github.com/erlang/docker-erlang-otp/blob/e9ce9f226c50a8cf186258d9f571f24dd4096bbf/25/alpine/Dockerfile) -- [`24.3.4.6`, `24.3.4`, `24.3`, `24`](https://github.com/erlang/docker-erlang-otp/blob/ae880ebdea91a9a7ce87634f8750526d3ee3a851/24/Dockerfile) -- [`24.3.4.6-slim`, `24.3.4-slim`, `24.3-slim`, `24-slim`](https://github.com/erlang/docker-erlang-otp/blob/ae880ebdea91a9a7ce87634f8750526d3ee3a851/24/slim/Dockerfile) -- [`24.3.4.6-alpine`, `24.3.4-alpine`, `24.3-alpine`, `24-alpine`](https://github.com/erlang/docker-erlang-otp/blob/ae880ebdea91a9a7ce87634f8750526d3ee3a851/24/alpine/Dockerfile) -- [`23.3.4.18`, `23.3.4`, `23.3`, `23`](https://github.com/erlang/docker-erlang-otp/blob/ba3db36fd4ce972f32c91d9043dc2acb5a07063f/23/Dockerfile) -- [`23.3.4.18-slim`, `23.3.4-slim`, `23.3-slim`, `23-slim`](https://github.com/erlang/docker-erlang-otp/blob/ba3db36fd4ce972f32c91d9043dc2acb5a07063f/23/slim/Dockerfile) -- [`23.3.4.18-alpine`, `23.3.4-alpine`, `23.3-alpine`, `23-alpine`](https://github.com/erlang/docker-erlang-otp/blob/ba3db36fd4ce972f32c91d9043dc2acb5a07063f/23/alpine/Dockerfile) -- [`22.3.4.26`, `22.3.4`, `22.3`, `22`](https://github.com/erlang/docker-erlang-otp/blob/65d8b721f96b98d2daa032cd7431ff64d5e8154a/22/Dockerfile) -- [`22.3.4.26-slim`, `22.3.4-slim`, `22.3-slim`, `22-slim`](https://github.com/erlang/docker-erlang-otp/blob/65d8b721f96b98d2daa032cd7431ff64d5e8154a/22/slim/Dockerfile) -- [`22.3.4.26-alpine`, `22.3.4-alpine`, `22.3-alpine`, `22-alpine`](https://github.com/erlang/docker-erlang-otp/blob/65d8b721f96b98d2daa032cd7431ff64d5e8154a/22/alpine/Dockerfile) -- [`21.3.8.24`, `21.3.8`, `21.3`, `21`](https://github.com/erlang/docker-erlang-otp/blob/fd21a3bf876b240b413d2cd4543d832dca466c5c/21/Dockerfile) -- [`21.3.8.24-slim`, `21.3.8-slim`, `21.3-slim`, `21-slim`](https://github.com/erlang/docker-erlang-otp/blob/fd21a3bf876b240b413d2cd4543d832dca466c5c/21/slim/Dockerfile) -- [`20.3.8.26`, `20.3.8`, `20.3`, `20`](https://github.com/erlang/docker-erlang-otp/blob/fd21a3bf876b240b413d2cd4543d832dca466c5c/20/Dockerfile) -- [`20.3.8.26-slim`, `20.3.8-slim`, `20.3-slim`, `20-slim`](https://github.com/erlang/docker-erlang-otp/blob/fd21a3bf876b240b413d2cd4543d832dca466c5c/20/slim/Dockerfile) +- [`28.1.0.0`, `28.1.0`, `28.1`, `28`, `latest`](https://github.com/erlang/docker-erlang-otp/blob/6d241956bbead4df3fefca19c84c5b4908a5d353/28/Dockerfile) + +- [`28.1.0.0-slim`, `28.1.0-slim`, `28.1-slim`, `28-slim`, `slim`](https://github.com/erlang/docker-erlang-otp/blob/6d241956bbead4df3fefca19c84c5b4908a5d353/28/slim/Dockerfile) + +- [`28.1.0.0-alpine`, `28.1.0-alpine`, `28.1-alpine`, `28-alpine`, `alpine`](https://github.com/erlang/docker-erlang-otp/blob/6d241956bbead4df3fefca19c84c5b4908a5d353/28/alpine/Dockerfile) + +- [`27.3.4.3`, `27.3.4`, `27.3`, `27`](https://github.com/erlang/docker-erlang-otp/blob/c57e3a8731074ddd85f016d48104e4f08cb2a90a/27/Dockerfile) + +- [`27.3.4.3-slim`, `27.3.4-slim`, `27.3-slim`, `27-slim`](https://github.com/erlang/docker-erlang-otp/blob/c57e3a8731074ddd85f016d48104e4f08cb2a90a/27/slim/Dockerfile) + +- [`27.3.4.3-alpine`, `27.3.4-alpine`, `27.3-alpine`, `27-alpine`](https://github.com/erlang/docker-erlang-otp/blob/c57e3a8731074ddd85f016d48104e4f08cb2a90a/27/alpine/Dockerfile) + +- [`26.2.5.15`, `26.2.5`, `26.2`, `26`](https://github.com/erlang/docker-erlang-otp/blob/c57e3a8731074ddd85f016d48104e4f08cb2a90a/26/Dockerfile) + +- [`26.2.5.15-slim`, `26.2.5-slim`, `26.2-slim`, `26-slim`](https://github.com/erlang/docker-erlang-otp/blob/c57e3a8731074ddd85f016d48104e4f08cb2a90a/26/slim/Dockerfile) + +- [`26.2.5.15-alpine`, `26.2.5-alpine`, `26.2-alpine`, `26-alpine`](https://github.com/erlang/docker-erlang-otp/blob/c57e3a8731074ddd85f016d48104e4f08cb2a90a/26/alpine/Dockerfile) + +- [`25.3.2.21`, `25.3.2`, `25.3`, `25`](https://github.com/erlang/docker-erlang-otp/blob/ed3c77d4426badd6646abb7aff04d38612918848/25/Dockerfile) + +- [`25.3.2.21-slim`, `25.3.2-slim`, `25.3-slim`, `25-slim`](https://github.com/erlang/docker-erlang-otp/blob/ed3c77d4426badd6646abb7aff04d38612918848/25/slim/Dockerfile) + +- [`25.3.2.21-alpine`, `25.3.2-alpine`, `25.3-alpine`, `25-alpine`](https://github.com/erlang/docker-erlang-otp/blob/ed3c77d4426badd6646abb7aff04d38612918848/25/alpine/Dockerfile) + +- [`24.3.4.17`, `24.3.4`, `24.3`, `24`](https://github.com/erlang/docker-erlang-otp/blob/c7e3d58244259ec45bd0b84df7287096d9833d19/24/Dockerfile) + +- [`24.3.4.17-slim`, `24.3.4-slim`, `24.3-slim`, `24-slim`](https://github.com/erlang/docker-erlang-otp/blob/c7e3d58244259ec45bd0b84df7287096d9833d19/24/slim/Dockerfile) + +- [`24.3.4.17-alpine`, `24.3.4-alpine`, `24.3-alpine`, `24-alpine`](https://github.com/erlang/docker-erlang-otp/blob/31b38022c405588392cfb37ff4ccb0cff92873ea/24/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/erlang/docker-erlang-otp/issues](https://github.com/erlang/docker-erlang-otp/issues) + [https://github.com/erlang/docker-erlang-otp/issues](https://github.com/erlang/docker-erlang-otp/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/erlang/), [`arm32v5`](https://hub.docker.com/r/arm32v5/erlang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/erlang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/erlang/), [`i386`](https://hub.docker.com/r/i386/erlang/), [`mips64le`](https://hub.docker.com/r/mips64le/erlang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/erlang/), [`s390x`](https://hub.docker.com/r/s390x/erlang/) diff --git a/erlang/metadata.json b/erlang/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/erlang/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/express-gateway/README-short.txt b/express-gateway/README-short.txt deleted file mode 100644 index 87c786a48cdf..000000000000 --- a/express-gateway/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -DEPRECATED; The Official Docker Image of Express Gateway, an API Gateway for APIs and Microservices diff --git a/express-gateway/README.md b/express-gateway/README.md deleted file mode 100644 index d47f42ff6bc3..000000000000 --- a/express-gateway/README.md +++ /dev/null @@ -1,124 +0,0 @@ - - -# **DEPRECATION NOTICE** - -This project is no longer maintained. Read [here](https://github.com/ExpressGateway/express-gateway/issues/1011#issuecomment-748354599) for more details or if you're interested in taking over the project. - -# Quick reference - -- **Maintained by**: - [the Express Gateway Team](https://github.com/ExpressGateway/express-gateway) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -- [`1.x`, `1.16.x`, `1.16.11`, `latest`](https://github.com/ExpressGateway/docker-express-gateway/blob/fa2707c3b24bbd99710a100d7859566fa28817b8/alpine/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/ExpressGateway/express-gateway/issues](https://github.com/ExpressGateway/express-gateway/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/express-gateway/), [`arm64v8`](https://hub.docker.com/r/arm64v8/express-gateway/), [`ppc64le`](https://hub.docker.com/r/ppc64le/express-gateway/), [`s390x`](https://hub.docker.com/r/s390x/express-gateway/) - -- **Published image artifact details**: - [repo-info repo's `repos/express-gateway/` directory](https://github.com/docker-library/repo-info/blob/master/repos/express-gateway) ([history](https://github.com/docker-library/repo-info/commits/master/repos/express-gateway)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/express-gateway` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fexpress-gateway) - [official-images repo's `library/express-gateway` file](https://github.com/docker-library/official-images/blob/master/library/express-gateway) ([history](https://github.com/docker-library/official-images/commits/master/library/express-gateway)) - -- **Source of this description**: - [docs repo's `express-gateway/` directory](https://github.com/docker-library/docs/tree/master/express-gateway) ([history](https://github.com/docker-library/docs/commits/master/express-gateway)) - -# What is Express-Gateway? - -Express Gateway is an API Gateway that sits at the heart of any microservices architecture, regardless of what language or platform you're using. Express Gateway secures your microservices and exposes them through APIs using Node.js, ExpressJS and Express middleware. Developing microservices, orchestrating and managing them now can be done insanely fast all on one seamless platform without having to introduce additional infrastructure. - -Express-Gateway's documentation can be found at [https://express-gateway.io/docs](https://express-gateway.io/docs). - -## Main Features - -- Built Entirely on Express and Express Middleware -- Dynamic Centralized Config -- API Consumer and Credentials Management -- Plugins and Plugin Framework -- Distributed Data Store -- CLI -- Admin API - -![logo](https://raw.githubusercontent.com/docker-library/docs/8ee4b026326a61ab0ccf22634eacbbbfbfaaf678/express-gateway/logo.png) - -## How to use this image - -Unless you're using identity features (such as `users`, `applications` and `credentials`), Express-Gateway does not require any data storage. - -If so, skip directly to the point **2**; else, please keep going with this guide. - -### 1. Link Express-Gateway to a Redis container - -#### Start Redis - -Start a Redis container by executing: - -```shell -$ docker run -d --name express-gateway-data-store \ - -p 6379:6379 \ - redis:alpine -``` - -### 2. Start the Express-Gateway instance - -Once the Redis instance has been started (if required), we can start the Express-Gateway instance link it to the Redis container. - -```shell -$ docker run -d --name express-gateway \ - --link eg-database:eg-database \ - -v /my/own/datadir:/var/lib/eg \ - -p 8080:8080 \ - -p 9876:9876 \ - express-gateway -``` - -*Note:* You might want to expose other ports to the host in case you're serving your APIs through **HTTPS**. - -*Note:* You need to mount a volume with configuration files and volumes in order to make Express-Gateway start correctly. - -You can now read the docs at [express-gateway.io/docs](http://express-gateway.io/docs) to learn more about Express-Gateway and configure it accordingly to your needs. - -### Install plugin - -You can install custom plugins to the current Express Gateway image just creating a new `Dockerfile`, use `express-gateway` as base image and then install the required plugins as global yarn packages - -```dockerfile -FROM express-gateway -RUN yarn global add express-gateway-plugin-name -``` - -# License - -View [license information](https://github.com/ExpressGateway/express-gateway/blob/master/LICENSE) for the software contained in this image. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `express-gateway/` directory](https://github.com/docker-library/repo-info/tree/master/repos/express-gateway). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/express-gateway/content.md b/express-gateway/content.md deleted file mode 100644 index 5aa8a3cc9585..000000000000 --- a/express-gateway/content.md +++ /dev/null @@ -1,63 +0,0 @@ -# What is Express-Gateway? - -Express Gateway is an API Gateway that sits at the heart of any microservices architecture, regardless of what language or platform you're using. Express Gateway secures your microservices and exposes them through APIs using Node.js, ExpressJS and Express middleware. Developing microservices, orchestrating and managing them now can be done insanely fast all on one seamless platform without having to introduce additional infrastructure. - -Express-Gateway's documentation can be found at [https://express-gateway.io/docs](https://express-gateway.io/docs). - -## Main Features - -- Built Entirely on Express and Express Middleware -- Dynamic Centralized Config -- API Consumer and Credentials Management -- Plugins and Plugin Framework -- Distributed Data Store -- CLI -- Admin API - -%%LOGO%% - -## How to use this image - -Unless you're using identity features (such as `users`, `applications` and `credentials`), Express-Gateway does not require any data storage. - -If so, skip directly to the point **2**; else, please keep going with this guide. - -### 1. Link Express-Gateway to a Redis container - -#### Start Redis - -Start a Redis container by executing: - -```shell -$ docker run -d --name express-gateway-data-store \ - -p 6379:6379 \ - redis:alpine -``` - -### 2. Start the Express-Gateway instance - -Once the Redis instance has been started (if required), we can start the Express-Gateway instance link it to the Redis container. - -```shell -$ docker run -d --name express-gateway \ - --link eg-database:eg-database \ - -v /my/own/datadir:/var/lib/eg \ - -p 8080:8080 \ - -p 9876:9876 \ - %%IMAGE%% -``` - -*Note:* You might want to expose other ports to the host in case you're serving your APIs through **HTTPS**. - -*Note:* You need to mount a volume with configuration files and volumes in order to make Express-Gateway start correctly. - -You can now read the docs at [express-gateway.io/docs](http://express-gateway.io/docs) to learn more about Express-Gateway and configure it accordingly to your needs. - -### Install plugin - -You can install custom plugins to the current Express Gateway image just creating a new `Dockerfile`, use `%%IMAGE%%` as base image and then install the required plugins as global yarn packages - -```dockerfile -FROM %%IMAGE%% -RUN yarn global add express-gateway-plugin-name -``` diff --git a/express-gateway/deprecated.md b/express-gateway/deprecated.md deleted file mode 100644 index 9a16fcc9850c..000000000000 --- a/express-gateway/deprecated.md +++ /dev/null @@ -1 +0,0 @@ -This project is no longer maintained. Read [here](https://github.com/ExpressGateway/express-gateway/issues/1011#issuecomment-748354599) for more details or if you're interested in taking over the project. diff --git a/express-gateway/github-repo b/express-gateway/github-repo deleted file mode 100644 index ffecc1ea161b..000000000000 --- a/express-gateway/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/ExpressGateway/express-gateway diff --git a/express-gateway/license.md b/express-gateway/license.md deleted file mode 100644 index 2de981d327aa..000000000000 --- a/express-gateway/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://github.com/ExpressGateway/express-gateway/blob/master/LICENSE) for the software contained in this image. diff --git a/express-gateway/logo.png b/express-gateway/logo.png deleted file mode 100644 index 1da4074db172..000000000000 Binary files a/express-gateway/logo.png and /dev/null differ diff --git a/express-gateway/maintainer.md b/express-gateway/maintainer.md deleted file mode 100644 index c36ba1070873..000000000000 --- a/express-gateway/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[the Express Gateway Team](%%GITHUB-REPO%%) diff --git a/fedora/README.md b/fedora/README.md index ccdf4896f1c9..1bddd86d51d8 100644 --- a/fedora/README.md +++ b/fedora/README.md @@ -24,10 +24,13 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`35`](https://github.com/fedora-cloud/docker-brew-fedora/blob/493d6eda2434bfdac64d61016aa6b9dc33cf4bc5/x86_64/Dockerfile) -- [`36`](https://github.com/fedora-cloud/docker-brew-fedora/blob/6c310b8b652eb03e5e895b0d47a6d1fde84d5e26/x86_64/Dockerfile) -- [`37`, `latest`](https://github.com/fedora-cloud/docker-brew-fedora/blob/1853328a811b98a580c4d3ca50d10cd788ba9d64/x86_64/Dockerfile) -- [`38`, `rawhide`](https://github.com/fedora-cloud/docker-brew-fedora/blob/e7136a4190768fa604776d6535269a6b52189a4c/x86_64/Dockerfile) +- [`41`](https://github.com/fedora-cloud/docker-brew-fedora/blob/fba75f9783b458ac342cc675892688169f6d5f9c/x86_64/Dockerfile) + +- [`42`, `latest`](https://github.com/fedora-cloud/docker-brew-fedora/blob/b13b13dd4561da14a4de975c2ec754cb3fda5a27/x86_64/Dockerfile) + +- [`43`](https://github.com/fedora-cloud/docker-brew-fedora/blob/d256792f0edba99d8c16d059c56709bff135a26b/x86_64/Dockerfile) + +- [`44`, `rawhide`](https://github.com/fedora-cloud/docker-brew-fedora/blob/7c36ff8d21c058cce31ee9e25f0c9c0537369c2f/x86_64/Dockerfile) # Quick reference (cont.) diff --git a/fedora/metadata.json b/fedora/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/fedora/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/flink/README.md b/flink/README.md index 87a7432f0b61..833fa98c51e4 100644 --- a/flink/README.md +++ b/flink/README.md @@ -24,10 +24,23 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.16.0-scala_2.12-java8`, `1.16-scala_2.12-java8`, `scala_2.12-java8`, `1.16.0-java8`, `1.16-java8`, `java8`](https://github.com/apache/flink-docker/blob/51ea69cc52e6a759c5b5e463d3920fd7ed8caebc/1.16/scala_2.12-java8-ubuntu/Dockerfile) -- [`1.16.0-scala_2.12-java11`, `1.16-scala_2.12-java11`, `scala_2.12-java11`, `1.16.0-scala_2.12`, `1.16-scala_2.12`, `scala_2.12`, `1.16.0-java11`, `1.16-java11`, `java11`, `1.16.0`, `1.16`, `latest`](https://github.com/apache/flink-docker/blob/51ea69cc52e6a759c5b5e463d3920fd7ed8caebc/1.16/scala_2.12-java11-ubuntu/Dockerfile) -- [`1.15.3-scala_2.12-java8`, `1.15-scala_2.12-java8`, `1.15.3-java8`, `1.15-java8`](https://github.com/apache/flink-docker/blob/a22c0f04972a1d8539d9213b52fc0728eac8c1fa/1.15/scala_2.12-java8-ubuntu/Dockerfile) -- [`1.15.3-scala_2.12-java11`, `1.15-scala_2.12-java11`, `1.15.3-scala_2.12`, `1.15-scala_2.12`, `1.15.3-java11`, `1.15-java11`, `1.15.3`, `1.15`](https://github.com/apache/flink-docker/blob/a22c0f04972a1d8539d9213b52fc0728eac8c1fa/1.15/scala_2.12-java11-ubuntu/Dockerfile) +- [`2.1.1-scala_2.12-java21`, `2.1-scala_2.12-java21`, `scala_2.12-java21`, `2.1.1-java21`, `2.1-java21`, `java21`](https://github.com/apache/flink-docker/blob/cfeea17390958606ec56ffd7caaf24dd44263743/2.1/scala_2.12-java21-ubuntu/Dockerfile) + +- [`2.1.1-scala_2.12-java17`, `2.1-scala_2.12-java17`, `scala_2.12-java17`, `2.1.1-scala_2.12`, `2.1-scala_2.12`, `scala_2.12`, `2.1.1-java17`, `2.1-java17`, `java17`, `2.1.1`, `2.1`, `latest`](https://github.com/apache/flink-docker/blob/cfeea17390958606ec56ffd7caaf24dd44263743/2.1/scala_2.12-java17-ubuntu/Dockerfile) + +- [`2.1.1-scala_2.12-java11`, `2.1-scala_2.12-java11`, `scala_2.12-java11`, `2.1.1-java11`, `2.1-java11`, `java11`](https://github.com/apache/flink-docker/blob/cfeea17390958606ec56ffd7caaf24dd44263743/2.1/scala_2.12-java11-ubuntu/Dockerfile) + +- [`2.0.1-scala_2.12-java21`, `2.0-scala_2.12-java21`, `2.0.1-java21`, `2.0-java21`](https://github.com/apache/flink-docker/blob/cfeea17390958606ec56ffd7caaf24dd44263743/2.0/scala_2.12-java21-ubuntu/Dockerfile) + +- [`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`](https://github.com/apache/flink-docker/blob/cfeea17390958606ec56ffd7caaf24dd44263743/2.0/scala_2.12-java17-ubuntu/Dockerfile) + +- [`2.0.1-scala_2.12-java11`, `2.0-scala_2.12-java11`, `2.0.1-java11`, `2.0-java11`](https://github.com/apache/flink-docker/blob/cfeea17390958606ec56ffd7caaf24dd44263743/2.0/scala_2.12-java11-ubuntu/Dockerfile) + +- [`1.20.3-scala_2.12-java8`, `1.20-scala_2.12-java8`, `1.20.3-java8`, `1.20-java8`](https://github.com/apache/flink-docker/blob/ea62362ddccca2556c9856bf6e435c1d38f90b2b/1.20/scala_2.12-java8-ubuntu/Dockerfile) + +- [`1.20.3-scala_2.12-java17`, `1.20-scala_2.12-java17`, `1.20.3-java17`, `1.20-java17`](https://github.com/apache/flink-docker/blob/ea62362ddccca2556c9856bf6e435c1d38f90b2b/1.20/scala_2.12-java17-ubuntu/Dockerfile) + +- [`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`](https://github.com/apache/flink-docker/blob/ea62362ddccca2556c9856bf6e435c1d38f90b2b/1.20/scala_2.12-java11-ubuntu/Dockerfile) # Quick reference (cont.) diff --git a/flink/metadata.json b/flink/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/flink/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/fluentd/README.md b/fluentd/README.md index 3244554f1a26..836498659329 100644 --- a/fluentd/README.md +++ b/fluentd/README.md @@ -24,13 +24,16 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`v1.14.0-1.0`, `v1.14-1`, `latest`](https://github.com/fluent/fluentd-docker-image/blob/a9e4cee765c7aaf7876d6fe3282aa565dbcdc2a4/v1.14/alpine/Dockerfile) -- [`v1.14.0-debian-1.0`, `v1.14-debian-1`](https://github.com/fluent/fluentd-docker-image/blob/a9e4cee765c7aaf7876d6fe3282aa565dbcdc2a4/v1.14/debian/Dockerfile) +- [`v1.16.9-1.0`, `v1.16-1`](https://github.com/fluent/fluentd-docker-image/blob/505a1af75b4a4adb40d576df7b18cebab853264e/v1.16/alpine/Dockerfile) + +- [`v1.16.9-debian-1.0`, `v1.16-debian-1`](https://github.com/fluent/fluentd-docker-image/blob/505a1af75b4a4adb40d576df7b18cebab853264e/v1.16/debian/Dockerfile) + +- [`v1.19.0-debian-1.0`, `v1.19-debian-1`, `v1.19.0-1.0`, `v1.19-1`, `latest`](https://github.com/fluent/fluentd-docker-image/blob/42a0afa30b3821482bce1ba8e67266d745619724/v1.19/debian/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/fluent/fluentd-docker-image/issues](https://github.com/fluent/fluentd-docker-image/issues) + [https://github.com/fluent/fluentd-docker-image/issues](https://github.com/fluent/fluentd-docker-image/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/fluentd/), [`arm32v5`](https://hub.docker.com/r/arm32v5/fluentd/), [`arm32v6`](https://hub.docker.com/r/arm32v6/fluentd/), [`arm32v7`](https://hub.docker.com/r/arm32v7/fluentd/), [`arm64v8`](https://hub.docker.com/r/arm64v8/fluentd/), [`i386`](https://hub.docker.com/r/i386/fluentd/), [`ppc64le`](https://hub.docker.com/r/ppc64le/fluentd/), [`s390x`](https://hub.docker.com/r/s390x/fluentd/) diff --git a/fluentd/metadata.json b/fluentd/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/fluentd/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/friendica/README.md b/friendica/README.md index 5fd47a833f4d..9e5cae005a6b 100644 --- a/friendica/README.md +++ b/friendica/README.md @@ -24,20 +24,31 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2022.12-apache`, `apache`, `stable-apache`, `2022.12`, `latest`, `stable`](https://github.com/friendica/docker/blob/d4c80286df956393b364a37c2471dc501c0373a1/2022.12/apache/Dockerfile) -- [`2022.12-fpm`, `fpm`, `stable-fpm`](https://github.com/friendica/docker/blob/d4c80286df956393b364a37c2471dc501c0373a1/2022.12/fpm/Dockerfile) -- [`2022.12-fpm-alpine`, `fpm-alpine`, `stable-fpm-alpine`](https://github.com/friendica/docker/blob/d4c80286df956393b364a37c2471dc501c0373a1/2022.12/fpm-alpine/Dockerfile) -- [`2023.03-dev-apache`, `dev-apache`, `2023.03-dev`, `dev`](https://github.com/friendica/docker/blob/d4c80286df956393b364a37c2471dc501c0373a1/2023.03-dev/apache/Dockerfile) -- [`2023.03-dev-fpm`, `dev-fpm`](https://github.com/friendica/docker/blob/d4c80286df956393b364a37c2471dc501c0373a1/2023.03-dev/fpm/Dockerfile) -- [`2023.03-dev-fpm-alpine`, `dev-fpm-alpine`](https://github.com/friendica/docker/blob/d4c80286df956393b364a37c2471dc501c0373a1/2023.03-dev/fpm-alpine/Dockerfile) +- [`2024.12-apache`, `apache`, `stable-apache`, `2024.12`, `latest`, `stable`](https://github.com/friendica/docker/blob/e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343/2024.12/apache/Dockerfile) + +- [`2024.12-fpm`, `fpm`, `stable-fpm`](https://github.com/friendica/docker/blob/e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343/2024.12/fpm/Dockerfile) + +- [`2024.12-fpm-alpine`, `fpm-alpine`, `stable-fpm-alpine`](https://github.com/friendica/docker/blob/e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343/2024.12/fpm-alpine/Dockerfile) + +- [`2025.02-dev-apache`, `dev-apache`, `2025.02-dev`, `dev`](https://github.com/friendica/docker/blob/e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343/2025.02-dev/apache/Dockerfile) + +- [`2025.02-dev-fpm`, `dev-fpm`](https://github.com/friendica/docker/blob/e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343/2025.02-dev/fpm/Dockerfile) + +- [`2025.02-dev-fpm-alpine`, `dev-fpm-alpine`](https://github.com/friendica/docker/blob/e56ad74382f7d3f3fcfb5942bb39d2e7d5b27343/2025.02-dev/fpm-alpine/Dockerfile) + +- [`2025.07-rc-apache`, `rc-apache`, `2025.07-rc`, `rc`](https://github.com/friendica/docker/blob/567780fda826aeaf8ec328fd48225f5d6a48e4e8/2025.07-rc/apache/Dockerfile) + +- [`2025.07-rc-fpm`, `rc-fpm`](https://github.com/friendica/docker/blob/567780fda826aeaf8ec328fd48225f5d6a48e4e8/2025.07-rc/fpm/Dockerfile) + +- [`2025.07-rc-fpm-alpine`, `rc-fpm-alpine`](https://github.com/friendica/docker/blob/567780fda826aeaf8ec328fd48225f5d6a48e4e8/2025.07-rc/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/friendica/docker/issues](https://github.com/friendica/docker/issues) + [https://github.com/friendica/docker/issues](https://github.com/friendica/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/friendica/), [`arm32v5`](https://hub.docker.com/r/arm32v5/friendica/), [`arm32v6`](https://hub.docker.com/r/arm32v6/friendica/), [`arm32v7`](https://hub.docker.com/r/arm32v7/friendica/), [`arm64v8`](https://hub.docker.com/r/arm64v8/friendica/), [`i386`](https://hub.docker.com/r/i386/friendica/), [`mips64le`](https://hub.docker.com/r/mips64le/friendica/), [`ppc64le`](https://hub.docker.com/r/ppc64le/friendica/), [`s390x`](https://hub.docker.com/r/s390x/friendica/) + [`amd64`](https://hub.docker.com/r/amd64/friendica/), [`arm32v5`](https://hub.docker.com/r/arm32v5/friendica/), [`arm32v6`](https://hub.docker.com/r/arm32v6/friendica/), [`arm32v7`](https://hub.docker.com/r/arm32v7/friendica/), [`arm64v8`](https://hub.docker.com/r/arm64v8/friendica/), [`i386`](https://hub.docker.com/r/i386/friendica/), [`mips64le`](https://hub.docker.com/r/mips64le/friendica/), [`ppc64le`](https://hub.docker.com/r/ppc64le/friendica/), [`riscv64`](https://hub.docker.com/r/riscv64/friendica/), [`s390x`](https://hub.docker.com/r/s390x/friendica/) - **Published image artifact details**: [repo-info repo's `repos/friendica/` directory](https://github.com/docker-library/repo-info/blob/master/repos/friendica) ([history](https://github.com/docker-library/repo-info/commits/master/repos/friendica)) @@ -64,8 +75,6 @@ The `apache` tag contains a full Friendica installation including an apache web The second option is a `fpm` container. It is based on the [php-fpm](https://hub.docker.com/_/php/) image and runs a fastCGI-Process that serves your Friendica server. To use this image it must be combined with any Webserver that can proxy the http requests to the FastCGI-port of the container. -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9417aa646ce4a26c904ce2c581ffb70e7a8f82ff/friendica/stack.yml) (Admin-E-Mail: `root@friendica.local`) - ## Using the apache image You need at least one other mariadb/mysql-container to link it to Friendica. @@ -80,13 +89,13 @@ Now you can access the Friendica installation wizard at http://localhost:8080/ f ## Using the fpm image -To use the fpm image you need an additional web server that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases you might want use another container or your host as proxy. If you use your host you can address your Friendica container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `docker-compose` file). In both cases you don't want to map the fpm port to you host. +To use the fpm image you need an additional web server that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases you might want use another container or your host as proxy. If you use your host you can address your Friendica container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `compose.yaml` file). In both cases you don't want to map the fpm port to you host. ```console $ docker run -d friendica:fpm ``` -As the fastCGI-Process is not capable of serving static files (style sheets, images, ...) the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the docker-compose section. +As the fastCGI-Process is not capable of serving static files (style sheets, images, ...) the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the Docker Compose section. ## Background tasks @@ -156,18 +165,22 @@ The following environment variables are possible for the SMTP examples. - `SMTP_DOMAIN` The sender domain. (**required** - e.g. `friendica.local`) - `SMTP_FROM` Sender user-part of the address. (Default: `no-reply` - e.g. no-reply@friendica.local) - `SMTP_TLS` Use TLS for connecting the SMTP Mail-Gateway. (Default: empty) -- `SMTP_STARTTLS` Use STARTTLS for connecting the SMTP Mail-Gateway. (Default: empty) +- `SMTP_STARTTLS` Use STARTTLS for connecting the SMTP Mail-Gateway. (Default: `On`) - `SMTP_AUTH` Auth mode for the SMTP Mail-Gateway. (Default: `On`) - `SMTP_AUTH_USER` Username for the SMTP Mail-Gateway. (Default: empty) - `SMTP_AUTH_PASS` Password for the SMTP Mail-Gateway. (Default: empty) +**Addition to STARTTLS** + +the `tls_starttls` setting is either `On` or `Off`, but never unset. That's because in case it's unset, `starttls` would be activated by default (which would need additional configuration like a separate port). + ## Database settings You have to add the Friendica container to the same network as the running database container, e. g. `--network some-network`, and then use `mysql` as the database host on setup. ## Persistent data -The Friendica installation and all data beyond what lives in the database (file uploads, etc) is stored in the [unnamed docker volume](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. To make your data persistent to upgrading and get access for backups is using named docker volume or mount a host folder. To achieve this you need one volume for your database container and Friendica. +The Friendica installation and all data beyond what lives in the database (file uploads, etc) is stored in the [unnamed docker volume](https://docs.docker.com/storage/volumes/) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. To make your data persistent to upgrading and get access for backups is using named docker volume or mount a host folder. To achieve this you need one volume for your database container and Friendica. Friendica: @@ -207,8 +220,6 @@ The Friendica image supports auto configuration via environment variables. You c As an alternative to passing sensitive information via environment variables, _FILE may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in /run/secrets/ files. For example: ```yaml -version: '3.2' - services: db: image: mariadb @@ -268,9 +279,9 @@ Currently, this is only supported for `FRIENDICA_ADMIN_MAIL`, `MYSQL_DATABASE`, You have to pull the latest image from the hub (`docker pull friendica`). The stable branch gets checked at every startup and will get updated if no installation was found or a new image is used. -# Running this image with docker-compose +# Running this image with Docker Compose -The easiest way to get a fully featured and functional setup is using a `docker-compose` file. There are too many different possibilities to setup your system, so here are only some examples what you have to look for. +The easiest way to get a fully featured and functional setup is using a `compose.yaml` file. There are too many different possibilities to setup your system, so here are only some examples what you have to look for. At first make sure you have chosen the right base image (fpm or apache) and added the features you wanted (see below). In every case you want to add a database container and docker volumes to get easy access to your persistent data. When you want your server reachable from the internet adding HTTPS-encryption is mandatory! See below for more information. @@ -281,8 +292,6 @@ This version will use the apache image and add a mariaDB container. The volumes Make sure to set the variable `MYSQL_PASSWORD` before run this setup. ```yaml -version: '2' - services: db: image: mariadb @@ -316,7 +325,7 @@ volumes: friendica: ``` -Then run `docker-compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. +Then run `docker compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. ## Base version - FPM @@ -329,11 +338,9 @@ As this setup does **not include encryption** it should to be run behind a proxy Prerequisites for this example: - Make sure to set the variable `MYSQL_PASSWORD` and `MYSQL_USER` before you run the setup. -- Create a `nginx.conf` in the same directory as the docker-compose.yml file (take it from [example](https://github.com/friendica/docker/tree/master/.examples/docker-compose/with-traefik-proxy/mariadb-cron-smtp/fpm/web/nginx.conf)) +- Create a `nginx.conf` in the same directory as the `compose.yaml` file (take it from [example](https://github.com/friendica/docker/tree/master/.examples/docker-compose/with-traefik-proxy/mariadb-cron-smtp/fpm/web/nginx.conf)) ```yaml -version: '2' - services: db: image: mariadb @@ -381,7 +388,7 @@ networks: proxy-tier: ``` -Then run `docker-compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. +Then run `docker compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. # Special settings for DEV/RC images diff --git a/friendica/stack.yml b/friendica/compose.yaml similarity index 98% rename from friendica/stack.yml rename to friendica/compose.yaml index 8248c0f8a0b4..4f963ad2d553 100644 --- a/friendica/stack.yml +++ b/friendica/compose.yaml @@ -1,5 +1,3 @@ -version: '3.2' - services: db: image: mariadb diff --git a/friendica/content.md b/friendica/content.md index df72f372e31a..4914cbbb5211 100644 --- a/friendica/content.md +++ b/friendica/content.md @@ -12,8 +12,6 @@ The `apache` tag contains a full Friendica installation including an apache web The second option is a `fpm` container. It is based on the [php-fpm](https://hub.docker.com/_/php/) image and runs a fastCGI-Process that serves your Friendica server. To use this image it must be combined with any Webserver that can proxy the http requests to the FastCGI-port of the container. -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=%%STACK-URL%%) (Admin-E-Mail: `root@friendica.local`) - ## Using the apache image You need at least one other mariadb/mysql-container to link it to Friendica. @@ -28,13 +26,13 @@ Now you can access the Friendica installation wizard at http://localhost:8080/ f ## Using the fpm image -To use the fpm image you need an additional web server that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases you might want use another container or your host as proxy. If you use your host you can address your Friendica container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `docker-compose` file). In both cases you don't want to map the fpm port to you host. +To use the fpm image you need an additional web server that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases you might want use another container or your host as proxy. If you use your host you can address your Friendica container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `compose.yaml` file). In both cases you don't want to map the fpm port to you host. ```console $ docker run -d %%IMAGE%%:fpm ``` -As the fastCGI-Process is not capable of serving static files (style sheets, images, ...) the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the docker-compose section. +As the fastCGI-Process is not capable of serving static files (style sheets, images, ...) the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the Docker Compose section. ## Background tasks @@ -104,18 +102,22 @@ The following environment variables are possible for the SMTP examples. - `SMTP_DOMAIN` The sender domain. (**required** - e.g. `friendica.local`) - `SMTP_FROM` Sender user-part of the address. (Default: `no-reply` - e.g. no-reply@friendica.local) - `SMTP_TLS` Use TLS for connecting the SMTP Mail-Gateway. (Default: empty) -- `SMTP_STARTTLS` Use STARTTLS for connecting the SMTP Mail-Gateway. (Default: empty) +- `SMTP_STARTTLS` Use STARTTLS for connecting the SMTP Mail-Gateway. (Default: `On`) - `SMTP_AUTH` Auth mode for the SMTP Mail-Gateway. (Default: `On`) - `SMTP_AUTH_USER` Username for the SMTP Mail-Gateway. (Default: empty) - `SMTP_AUTH_PASS` Password for the SMTP Mail-Gateway. (Default: empty) +**Addition to STARTTLS** + +the `tls_starttls` setting is either `On` or `Off`, but never unset. That's because in case it's unset, `starttls` would be activated by default (which would need additional configuration like a separate port). + ## Database settings You have to add the Friendica container to the same network as the running database container, e. g. `--network some-network`, and then use `mysql` as the database host on setup. ## Persistent data -The Friendica installation and all data beyond what lives in the database (file uploads, etc) is stored in the [unnamed docker volume](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. To make your data persistent to upgrading and get access for backups is using named docker volume or mount a host folder. To achieve this you need one volume for your database container and Friendica. +The Friendica installation and all data beyond what lives in the database (file uploads, etc) is stored in the [unnamed docker volume](https://docs.docker.com/storage/volumes/) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. To make your data persistent to upgrading and get access for backups is using named docker volume or mount a host folder. To achieve this you need one volume for your database container and Friendica. Friendica: @@ -155,8 +157,6 @@ The Friendica image supports auto configuration via environment variables. You c As an alternative to passing sensitive information via environment variables, _FILE may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in /run/secrets/ files. For example: ```yaml -version: '3.2' - services: db: image: mariadb @@ -216,9 +216,9 @@ Currently, this is only supported for `FRIENDICA_ADMIN_MAIL`, `MYSQL_DATABASE`, You have to pull the latest image from the hub (`docker pull %%IMAGE%%`). The stable branch gets checked at every startup and will get updated if no installation was found or a new image is used. -# Running this image with docker-compose +# Running this image with Docker Compose -The easiest way to get a fully featured and functional setup is using a `docker-compose` file. There are too many different possibilities to setup your system, so here are only some examples what you have to look for. +The easiest way to get a fully featured and functional setup is using a `compose.yaml` file. There are too many different possibilities to setup your system, so here are only some examples what you have to look for. At first make sure you have chosen the right base image (fpm or apache) and added the features you wanted (see below). In every case you want to add a database container and docker volumes to get easy access to your persistent data. When you want your server reachable from the internet adding HTTPS-encryption is mandatory! See below for more information. @@ -229,8 +229,6 @@ This version will use the apache image and add a mariaDB container. The volumes Make sure to set the variable `MYSQL_PASSWORD` before run this setup. ```yaml -version: '2' - services: db: image: mariadb @@ -264,7 +262,7 @@ volumes: friendica: ``` -Then run `docker-compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. +Then run `docker compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. ## Base version - FPM @@ -277,11 +275,9 @@ As this setup does **not include encryption** it should to be run behind a proxy Prerequisites for this example: - Make sure to set the variable `MYSQL_PASSWORD` and `MYSQL_USER` before you run the setup. -- Create a `nginx.conf` in the same directory as the docker-compose.yml file (take it from [example](https://github.com/friendica/docker/tree/master/.examples/docker-compose/with-traefik-proxy/mariadb-cron-smtp/fpm/web/nginx.conf)) +- Create a `nginx.conf` in the same directory as the `compose.yaml` file (take it from [example](https://github.com/friendica/docker/tree/master/.examples/docker-compose/with-traefik-proxy/mariadb-cron-smtp/fpm/web/nginx.conf)) ```yaml -version: '2' - services: db: image: mariadb @@ -329,7 +325,7 @@ networks: proxy-tier: ``` -Then run `docker-compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. +Then run `docker compose up -d`, now you can access Friendica at http://localhost:8080/ from your system. # Special settings for DEV/RC images diff --git a/friendica/metadata.json b/friendica/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/friendica/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/gazebo/README.md b/gazebo/README.md index 8be1ff5a804a..bb0c4286014a 100644 --- a/gazebo/README.md +++ b/gazebo/README.md @@ -24,22 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`gzserver9-xenial`](https://github.com/osrf/docker_images/blob/96c8fa210caaeebd50e067ade05d5fc9a4a60c84/gazebo/9/ubuntu/xenial/gzserver9/Dockerfile) -- [`libgazebo9-xenial`](https://github.com/osrf/docker_images/blob/96c8fa210caaeebd50e067ade05d5fc9a4a60c84/gazebo/9/ubuntu/xenial/libgazebo9/Dockerfile) -- [`gzserver9`, `gzserver9-bionic`](https://github.com/osrf/docker_images/blob/212f7553882e8f3e96af773ede6ef1848277c09e/gazebo/9/ubuntu/bionic/gzserver9/Dockerfile) -- [`libgazebo9`, `libgazebo9-bionic`](https://github.com/osrf/docker_images/blob/212f7553882e8f3e96af773ede6ef1848277c09e/gazebo/9/ubuntu/bionic/libgazebo9/Dockerfile) -- [`gzserver11-bionic`](https://github.com/osrf/docker_images/blob/6900fe08e79c7b70471cb10f83324ec24a906bea/gazebo/11/ubuntu/bionic/gzserver11/Dockerfile) -- [`libgazebo11-bionic`](https://github.com/osrf/docker_images/blob/6900fe08e79c7b70471cb10f83324ec24a906bea/gazebo/11/ubuntu/bionic/libgazebo11/Dockerfile) -- [`gzserver11`, `gzserver11-focal`](https://github.com/osrf/docker_images/blob/6900fe08e79c7b70471cb10f83324ec24a906bea/gazebo/11/ubuntu/focal/gzserver11/Dockerfile) -- [`libgazebo11`, `libgazebo11-focal`, `latest`](https://github.com/osrf/docker_images/blob/6900fe08e79c7b70471cb10f83324ec24a906bea/gazebo/11/ubuntu/focal/libgazebo11/Dockerfile) +**No supported tags** # Quick reference (cont.) - **Where to file issues**: - [https://github.com/osrf/docker_images/issues](https://github.com/osrf/docker_images/issues) + [https://github.com/osrf/docker_images/issues](https://github.com/osrf/docker_images/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/gazebo/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/gazebo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/gazebo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/gazebo)) diff --git a/gazebo/metadata.json b/gazebo/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/gazebo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/gcc/README.md b/gcc/README.md index b8f42b3dc8ce..7f3e3fc8d9c1 100644 --- a/gcc/README.md +++ b/gcc/README.md @@ -24,15 +24,18 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`12.2.0`, `12.2`, `12`, `latest`, `12.2.0-bullseye`, `12.2-bullseye`, `12-bullseye`, `bullseye`](https://github.com/docker-library/gcc/blob/523e01b2ccf43f1fd702aa9fdc2f71c827b76525/12/Dockerfile) -- [`11.3.0`, `11.3`, `11`, `11.3.0-bullseye`, `11.3-bullseye`, `11-bullseye`](https://github.com/docker-library/gcc/blob/a5a94a2d5c812fe57f6f28713b0f899b879145d3/11/Dockerfile) -- [`10.4.0`, `10.4`, `10`, `10.4.0-buster`, `10.4-buster`, `10-buster`](https://github.com/docker-library/gcc/blob/1e3174f36d64a3ce1373a7004a7f0d4f98de307b/10/Dockerfile) -- [`9.5.0`, `9.5`, `9`, `9.5.0-buster`, `9.5-buster`, `9-buster`](https://github.com/docker-library/gcc/blob/6c40a41a202b2996b26b52e94762fe9aa8830766/9/Dockerfile) +- [`15.2.0`, `15.2`, `15`, `latest`, `15.2.0-trixie`, `15.2-trixie`, `15-trixie`, `trixie`](https://github.com/docker-library/gcc/blob/915af5ccbb6b09575e244f280c26925e77172039/15/Dockerfile) + +- [`14.3.0`, `14.3`, `14`, `14.3.0-trixie`, `14.3-trixie`, `14-trixie`](https://github.com/docker-library/gcc/blob/280306a58a2ff0c21a95ed8abe882ac483d03c8b/14/Dockerfile) + +- [`13.4.0`, `13.4`, `13`, `13.4.0-bookworm`, `13.4-bookworm`, `13-bookworm`](https://github.com/docker-library/gcc/blob/118c07a8e6467baababb4634b6cfde14a67c24b0/13/Dockerfile) + +- [`12.5.0`, `12.5`, `12`, `12.5.0-bookworm`, `12.5-bookworm`, `12-bookworm`](https://github.com/docker-library/gcc/blob/7070981b23d22d3ca790f87bff26f13f3614dd4c/12/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/gcc/issues](https://github.com/docker-library/gcc/issues) + [https://github.com/docker-library/gcc/issues](https://github.com/docker-library/gcc/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/gcc/), [`arm32v5`](https://hub.docker.com/r/arm32v5/gcc/), [`arm32v7`](https://hub.docker.com/r/arm32v7/gcc/), [`arm64v8`](https://hub.docker.com/r/arm64v8/gcc/), [`ppc64le`](https://hub.docker.com/r/ppc64le/gcc/), [`s390x`](https://hub.docker.com/r/s390x/gcc/) diff --git a/gcc/metadata.json b/gcc/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/gcc/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/generate-repo-stub-readme.sh b/generate-repo-stub-readme.sh index 1c8504cf186c..b79ed4bff353 100755 --- a/generate-repo-stub-readme.sh +++ b/generate-repo-stub-readme.sh @@ -24,12 +24,6 @@ if [ -s "$repo/github-repo" ]; then canonicalRepo="$(< "$repo/github-repo")" fi canonicalRepo="$(curl -fsSLI -o /dev/null -w '%{url_effective}\n' "$canonicalRepo")" # follow redirects (http://stackoverflow.com/a/3077316/433558) -githubRepoName="${canonicalRepo#*://github.com/}" - -if [[ "$githubRepoName" = elastic/* ]]; then - # Elastic points "github-repo" at their upstream elastic/xyz-docker repos, but we want our README stubs to still point at our integration repos - githubRepoName="docker-library/$repo" -fi maintainer="$(sed -e 's!%%GITHUB-REPO%%!'"$canonicalRepo"'!g' "$repo/maintainer.md")" @@ -41,7 +35,7 @@ if [ -f "$repo/deprecated.md" ]; then fi case "$repo" in - hello-world | buildpack-deps) disclaimer='' ;; + buildpack-deps | docker | hello-world | hylang) disclaimer='' ;; *) disclaimer=" (not to be confused with any official \`$repo\` image provided by \`$repo\` upstream)" ;; esac @@ -59,85 +53,6 @@ The [full image description on Docker Hub]($hubPage) is generated/maintained ove For more information about the full official images change lifecycle, see [the "An image's source changed in Git, now what?" FAQ entry](https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what). For outstanding \`$repo\` image PRs, check [PRs with the "library/$repo" label on the official-images repository](https://github.com/docker-library/official-images/labels/library%2F$repo). For the current "source of truth" for [\`$repo\`]($hubPage), see [the \`library/$repo\` file in the official-images repository](https://github.com/docker-library/official-images/blob/master/library/$repo). -EOREADME - -badges=() - -n=$'\n' -t=$'\t' - -branch='master' -toTest=( - # "image badge URL" - # "image badge link/href" - # "badge test URL (to determine whether badge applies)" - - "https://img.shields.io/github/actions/workflow/status/$githubRepoName/ci.yml?branch=$branch&label=GitHub%20CI" - "https://github.com/$githubRepoName/actions?query=workflow%3A%22GitHub+CI%22+branch%3A$branch" - "https://github.com/$githubRepoName/blob/$branch/.github/workflows/ci.yml" - - "https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/update.sh/job/$repo.svg?label=Automated%20update.sh" - "https://doi-janky.infosiftr.net/job/update.sh/job/$repo/" - "https://doi-janky.infosiftr.net/job/update.sh/job/$repo/" -) - -_wget_spider() { - wget -q -o /dev/null -O /dev/null --spider "$@" -} - -set -- "${toTest[@]}" -while [ "$#" -gt 0 ]; do - image="$1"; shift - url="$1"; shift - testUrl="$1"; shift - if _wget_spider "$testUrl"; then - badges+=( "-${t}[![build status badge]($image)]($url)" ) - fi -done - -arches="$(bashbrew cat --format '{{ range .Entries }}{{ join "\n" .Architectures }}{{ "\n" }}{{ end }}' "https://github.com/docker-library/official-images/raw/master/library/$repo" | sort -u)" -if [ -n "$arches" ]; then - archTable= - i=0 - for arch in $arches put-shared; do - if [ "$arch" = 'put-shared' ]; then - jenkinsJob="job/put-shared/job/light/job/$repo" - if ! _wget_spider "https://doi-janky.infosiftr.net/$jenkinsJob/"; then - jenkinsJob='job/put-shared/job/heavy' - fi - else - jenkinsJob="job/multiarch/job/$arch/job/$repo" - fi - jenkinsLink="https://doi-janky.infosiftr.net/$jenkinsJob/" - jenkinsImage="https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/$jenkinsJob.svg?label=$arch" - if _wget_spider "$jenkinsLink"; then - archTable="${archTable:-|} [![$arch build status badge]($jenkinsImage)]($jenkinsLink) |" - (( i = (i + 1) % 4 )) || : # modulo here needs to match the number of colums used below - if [ "$i" = 0 ]; then - archTable+="${n}|" - fi - fi - done - if [ -n "$archTable" ]; then - if [ "${#badges[@]}" -gt 0 ]; then - badges+=( '' ) - fi - badges+=( "| Build | Status | Badges | (per-arch) |${n}|:-:|:-:|:-:|:-:|${n}${archTable%${n}|}" ) - fi -fi - -if [ "${#badges[@]}" -gt 0 ]; then - IFS=$'\n' - cat <<-EOREADME - - --- - - ${badges[*]} - EOREADME - unset IFS -fi - -cat < EOREADME diff --git a/geonetwork/README.md b/geonetwork/README.md index 4102a3f09d78..c63487b60480 100644 --- a/geonetwork/README.md +++ b/geonetwork/README.md @@ -24,15 +24,18 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.12.8`, `3.12`, `3`](https://github.com/geonetwork/docker-geonetwork/blob/57f727acc7ac1fd74f6dc95afa58f4136c7e35b4/3.12.8/Dockerfile) -- [`3.12.8-postgres`, `3.12-postgres`, `3-postgres`](https://github.com/geonetwork/docker-geonetwork/blob/57f727acc7ac1fd74f6dc95afa58f4136c7e35b4/3.12.8/postgres/Dockerfile) -- [`4.0.6`, `4.0`](https://github.com/geonetwork/docker-geonetwork/blob/00936dcf7dbb2399405c53aa05c670fa4bb79736/4.0.6/Dockerfile) -- [`4.2.2`, `4.2`, `4`, `latest`](https://github.com/geonetwork/docker-geonetwork/blob/bf7033838f82f2d4529d70442c727808f5bfa432/4.2.2/Dockerfile) +- [`3.12.12`, `3.12`, `3`](https://github.com/geonetwork/docker-geonetwork/blob/17278beab34080c90454c0b7059bd6b49701f979/3.12.12/Dockerfile) + +- [`3.12.12-postgres`, `3.12-postgres`, `3-postgres`](https://github.com/geonetwork/docker-geonetwork/blob/17278beab34080c90454c0b7059bd6b49701f979/3.12.12/postgres/Dockerfile) + +- [`4.2.14`, `4.2`](https://github.com/geonetwork/docker-geonetwork/blob/6848a28591a23af0e326b56cd9dde0bf34bc1fe9/4.2.14/Dockerfile) + +- [`4.4.9`, `4.4`, `4`, `latest`](https://github.com/geonetwork/docker-geonetwork/blob/8ad0acd56ed97a67ae07f8099b7ee255465946e4/4.4.9/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/geonetwork/docker-geonetwork/issues](https://github.com/geonetwork/docker-geonetwork/issues) + [https://github.com/geonetwork/docker-geonetwork/issues](https://github.com/geonetwork/docker-geonetwork/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/geonetwork/), [`arm32v7`](https://hub.docker.com/r/arm32v7/geonetwork/), [`arm64v8`](https://hub.docker.com/r/arm64v8/geonetwork/), [`ppc64le`](https://hub.docker.com/r/ppc64le/geonetwork/) @@ -62,80 +65,284 @@ The project is part of the Open Source Geospatial Foundation ( [OSGeo](http://ww ![logo](https://raw.githubusercontent.com/docker-library/docs/6a537ddd2def65eaaa31cbadbaa5303f2dc82fe3/geonetwork/logo.png) -# How to use this image +## How to use this image + +GeoNetwork 4 uses an Elasticsearch server to store the index of the documents it manages so **it can't be run without configuring the URL of the Elasticsearch server**. + +This is a quick example of how to get GeoNetwork 4.4 Latest up and running for demo purposes. This configuration doesn't keep the data if containers are removed. + +```console +docker pull elasticsearch:7.17.15 +docker pull geonetwork:4 + +docker network create gn-network + +docker run -d --name my-es-host --network gn-network -e "discovery.type=single-node" elasticsearch:7.17.15 +docker run --name geonetwork-host --network gn-network -e GN_CONFIG_PROPERTIES="-Des.host=my-es-host -Des.protocol=http -Des.port=9200 -Des.url=http://my-es-host:9200" -p 8080:8080 geonetwork:4 +``` + +For GeoNetwork 4.2 Stable: + +```console +docker pull elasticsearch:7.17.15 +docker pull geonetwork:4.2 + +docker network create gn-network + +docker run -d --name my-es-host --network gn-network -e "discovery.type=single-node" elasticsearch:7.17.15 +docker run --name geonetwork-host --network gn-network -e ES_HOST=my-es-host -e ES_PROTOCOL=http -e ES_PORT=9200 -p 8080:8080 geonetwork:4.2 +``` + +To be sure about what Elasticsearch version to use you can check the [GeoNetwork documentation](https://docs.geonetwork-opensource.org/4.4/install-guide/installing-index/) for your GN version or the `es.version` property in the [`pom.xml`](https://github.com/geonetwork/core-geonetwork/blob/main/pom.xml#L1528C17-L1528C24) file of the GeoNetwork release used. + +### Default credentials + +After installation, use the default credentials: **`admin`** (username) and **`admin`** (password). It is recommended to update the default password after installation. + +### Elasticsearch configuration + +#### Java properties (version 4.4.0 and newer) + +Since GeoNetwork 4.4.0, use Java properties passed in the `GN_CONFIG_PROPERTIES` environment variable for Elasticsearch connection configuration: + +- `es.host`: *optional* (default `localhost`): The host name of the Elasticsearch server. +- `es.port` *optional* (default `9200`): The port where Elasticsearch server is listening to. +- `es.protocol` *optional* (default `http`): The protocol used to talk to Elasticsearch. Can be `http` or `https`. +- `es.url`: **mandatory if host, port or protocol aren't the default values** (default `http://localhost:9200`): Full URL of the Elasticsearch server. +- `es.index.records` *optional* (default `gn_records`): In case you have more than GeoNetwork instance using the same Elasticsearch cluster each one needs to use a different index name. Use this variable to define the name of the index used by each GeoNetwork. +- `es.username` *optional* (default empty): username used to connect to Elasticsearch. +- `es.password` *optional* (default empty): password used to connect to Elasticsearch. +- `kb.url` *optional* (default `http://localhost:5601`): The URL where Kibana is listening. + +Example Docker Compose YAML snippet: + +```yaml +services: + geonetwork: + image: geonetwork:4.4 + environment: + GN_CONFIG_PROPERTIES: >- + -Des.host=elasticsearch + -Des.protocol=http + -Des.port=9200 + -Des.url=http://elasticsearch:9200 + -Des.username=my_es_username + -Des.password=my_es_password + -Dkb.url=http://kibana:5601 +``` + +#### Environment variables (version 4.2 and older) + +For versions older than 4.4.0, configure Elasticsearch using environment variables: -## Start geonetwork +- `ES_HOST` **mandatory**: The host name of the Elasticsearch server. +- `ES_PORT` *optional* (default `9200`): The port where Elasticsearch server is listening to. +- `ES_PROTOCOL` *optional* (default `http`): The protocol used to talk to Elasticsearch. Can be `http` or `https`. +- `ES_INDEX_RECORDS` *optional* (default `gn_records`): In case you have more than GeoNetwork instance using the same Elasticsearch cluster each one needs to use a different index name. Use this variable to define the name of the index used by each GeoNetwork. +- `ES_USERNAME` *optional* (default empty): username used to connect to Elasticsearch. +- `ES_PASSWORD` *optional* (default empty): password used to connect to Elasticsearch. +- `KB_URL` *Optional* (default `http://localhost:5601`): The URL where Kibana is listening. -This command will start a debian-based container, running a Tomcat web server, with a geonetwork war deployed on the server: +### Database configuration + +By default GeoNetwork uses a local **H2 database** for demo use (this one is **not recommended for production**). The image contains JDBC drivers for PostgreSQL and MySQL. To configure the database connection use these environment variables: + +- `GEONETWORK_DB_TYPE`: The type of database to use. Valid values are `postgres`, `postgres-postgis`, `mysql`. The image can be extended including other drivers and these other types could be used too: `db2`, `h2`, `oracle`, `sqlserver`. The JAR drivers for these other databases would need to be added to `/opt/geonetwork/WEB-INF/lib` mounting them as binds or extending the official image. +- `GEONETWORK_DB_HOST`: The database host name. +- `GEONETWORK_DB_PORT`: The database port. +- `GEONETWORK_DB_NAME`: The database name. +- `GEONETWORK_DB_USERNAME`: The username used to connect to the database. +- `GEONETWORK_DB_PASSWORD`: The password used to connect to the database. +- `GEONETWORK_DB_CONNECTION_PROPERTIES`: Additional properties to be added to the connection string, for example `search_path=test,public&ssl=true` will produce a JDBC connection string like `jdbc:postgresql://localhost:5432/postgres?search_path=test,public&ssl=true` + +### Start GeoNetwork + +This command will start a debian-based container, running a Tomcat (GN 3) or Jetty (GN 4) web server, with a GeoNetwork WAR deployed on the server: + +```console +docker run --name some-geonetwork -d geonetwork +``` + +### Publish port + +GeoNetwork listens on port `8080`. If you want to access the container at the host, **you must publish this port**. For instance, this, will redirect all the container traffic on port 8080, to the same port on the host: ```console -$ docker run --name some-geonetwork -d geonetwork +docker run --name some-geonetwork -d -p 8080:8080 geonetwork ``` -## Publish port +Then, if you are running docker on Linux, you may access geonetwork at http://localhost:8080/geonetwork. + +### Set the data directory and H2 db file + +The data directory is the location on the file system where the catalog stores much of its custom configuration and uploaded files. It is also where it stores a number of support files, used for various purposes (e.g.: spatial index, thumbnails). The default variant also uses a local H2 database to store the metadata catalog itself. + +By default, GeoNetwork sets the data directory on `/opt/geonetwork/WEB-INF/data` and H2 database file to the Jetty dir `/var/lib/jetty/gn.h2.db` (since GN 4.0.0) or Tomcat `/usr/local/tomcat/gn.h2.db` (for GN 3), but you may override these values by injecting environment variables into the container: - `-e DATA_DIR=...` (defaults to `/opt/geonetwork/WEB-INF/data`) and `-e GEONETWORK_DB_NAME=...` (defaults to `gn` which sets up database `gn.h2.db` in tomcat bin dir `/usr/local/tomcat`). Note that setting the database location via `GEONETWORK_DB_NAME` only works from version 3.10.3 onwards. -Geonetwork listens on port `8080`. If you want to access the container at the host, **you must publish this port**. For instance, this, will redirect all the container traffic on port 8080, to the same port on the host: +Since version 4.4.0 the data directory needs to be configued using Java properties passed in the `GN_CONFIG_PROPERTIES` environment variable. For example: ```console -$ docker run --name some-geonetwork -d -p 8080:8080 geonetwork +docker run --name some-geonetwork -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn geonetwork ``` -Then, if you are running docker on Linux, you may access geonetwork at http://localhost:8080/geonetwork. Otherwise, replace `localhost` by the address of your docker machine. +### Persisting data -## Set the data directory and H2 db file +To set the data directory to `/catalogue-data/data` and H2 database file to `/catalogue-data/db/gn.h2.db` so they both persist through restarts: + +- GeoNetwork 4.2 and older + +```console +docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/catalogue-data/data -e GEONETWORK_DB_NAME=/catalogue-data/db/gn geonetwork:3 +``` -The data directory is the location on the file system where the catalog stores much of its custom configuration and uploaded files. It is also where it stores a number of support files, used for various purposes (e.g.: Lucene index, spatial index, thumbnails). The default variant also uses a local H2 database to store the metadata catalog itself. +- Since GeoNetwork 4.4.0 -By default, geonetwork sets the data directory on `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data` and H2 database file to the tomcat bin dir `/usr/local/tomcat/gn.h2.db`, but you may override these values by injecting environment variables into the container: - `-e DATA_DIR=...` (defaults to `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`) and `-e GEONETWORK_DB_NAME=...` (defaults to `gn` which sets up database `gn.h2.db` in tomcat bin dir `/usr/local/tomcat`). Note that setting the database location via `GEONETWORK_DB_NAME` only works from version 3.10.3 onwards. +```console +docker run --name some-geonetwork -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn geonetwork +``` -## Persisting data +If you want the data directory to live beyond restarts, or even destruction of the container, you can mount a directory from the docker engine's host into the container. - `-v /host/path:/path/to/data/directory`. For instance this, will mount the host directory `/host/geonetwork-docker` into `/catalogue-data` on the container: -To set the data directory to `/var/lib/geonetwork/data` and H2 database file to `/var/lib/geonetwork/db/gn.h2.db` so they both persist through restarts: +- GeoNetwork 4.2 and older ```console -$ docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork/data -e GEONETWORK_DB_NAME=/var/lib/geonetwork/db/gn geonetwork +docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/catalogue-data/data -e GEONETWORK_DB_NAME=/catalogue-data/db/gn -v /host/geonetwork-docker:/catalogue-data geonetwork:3 ``` -If you want the data directory to live beyond restarts, or even destruction of the container, you can mount a directory from the docker engine's host into the container. - `-v /host/path:/path/to/data/directory`. For instance this, will mount the host directory `/host/geonetwork-docker` into `/var/lib/geonetwork` on the container: +- GeoNetwork 4.4.0 and newer ```console -$ docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork/data -e GEONETWORK_DB_NAME=/var/lib/geonetwork/db/gn -v /host/geonetwork-docker:/var/lib/geonetwork geonetwork +docker run --name some-geonetwork -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn -v /host/geonetwork-docker:/catalogue-data geonetwork ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +### ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `geonetwork`: +Example `compose.yaml` for `geonetwork`: ```yaml # GeoNetwork # -# Access via "http://localhost:8080/geonetwork" (or "http://$(docker-machine ip):8080/geonetwork" if using docker-machine) +# Access via "http://localhost:8080/geonetwork" # # Default user: admin # Default password: admin -version: '3.1' -services: +volumes: + geonetwork: + esdata: + pgdata: + pglog: +services: geonetwork: - image: geonetwork + image: geonetwork:4.4 + healthcheck: + test: curl http://localhost:8080/ + interval: 5s + timeout: 5s + retries: 30 restart: always + volumes: + - geonetwork:/catalogue-data + depends_on: + database: + condition: service_healthy ports: - 8080:8080 environment: - DATA_DIR: /var/lib/geonetwork_data + WEBAPP_CONTEXT_PATH: /geonetwork + DATA_DIR: /catalogue-data + TZ: Europe/Amsterdam + + JAVA_OPTS: >- + --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED + -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true + -Xms512M -Xss512M -Xmx2G -XX:+UseConcMarkSweepGC + -Djetty.httpConfig.requestHeaderSize=32768 + -Dorg.eclipse.jetty.server.Request.maxFormContentSize=500000 + -Dorg.eclipse.jetty.server.Request.maxFormKeys=4000 + # For remote debug + # -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 + + GN_CONFIG_PROPERTIES: >- + -Dgeonetwork.dir=/catalogue-data + -Dgeonetwork.formatter.dir=/catalogue-data/data/formatter + -Dgeonetwork.schema.dir=/opt/geonetwork/WEB-INF/data/config/schema_plugins + -Dgeonetwork.indexConfig.dir=/opt/geonetwork/WEB-INF/data/config/index + -Dgeonetwork.schemapublication.dir=/opt/geonetwork/WEB-INF/data/resources/schemapublication + -Dgeonetwork.htmlcache.dir=/opt/geonetwork/WEB-INF/data/resources/htmlcache + -Des.host=elasticsearch + -Des.protocol=http + -Des.port=9200 + -Des.url=http://elasticsearch:9200 + -Des.username= + -Des.password= + -Dgeonetwork.ESFeaturesProxy.targetUri=http://elasticsearch:9200/gn-features/{_} + -Dgeonetwork.HttpDashboardProxy.targetUri=http://kibana:5601 + + GEONETWORK_DB_TYPE: postgres-postgis + GEONETWORK_DB_HOST: database + GEONETWORK_DB_PORT: 5432 + GEONETWORK_DB_NAME: geonetwork + GEONETWORK_DB_USERNAME: geonetwork + GEONETWORK_DB_PASSWORD: geonetwork + + database: + image: postgis/postgis:16-3.4 + environment: + POSTGRES_USER: geonetwork + POSTGRES_PASSWORD: geonetwork + POSTGRES_DB: geonetwork + command: [postgres, -c, log_statement=all, -c, logging_collector=true, -c, log_file_mode=0644, -c, log_directory=/var/log/postgresql, -c, log_filename=postgresql.log] + healthcheck: + test: [CMD-SHELL, pg_isready -U postgres] + interval: 5s + timeout: 5s + retries: 5 volumes: - - geonetwork:/var/lib/geonetwork_data + - pgdata:/var/lib/postgresql/data + - pglog:/var/log/postgresql -volumes: - geonetwork: -``` + elasticsearch: + image: elasticsearch:7.17.15 + ports: + - 9200:9200 + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + healthcheck: + test: curl -s http://localhost:9200 >/dev/null || exit 1 + interval: 10s + timeout: 2s + retries: 10 + start_period: 2m + environment: + ES_JAVA_OPTS: -Xms1G -Xmx1G + discovery.type: single-node + volumes: + - esdata:/usr/share/elasticsearch/data -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/geonetwork/stack.yml) + kibana: + image: kibana:7.17.15 + environment: + SERVER_NAME: kibana + ELASTICSEARCH_URL: http://elasticsearch:9200/ + SERVER_BASEPATH: /geonetwork/dashboards + SERVER_REWRITEBASEPATH: 'false' + KIBANA_INDEX: .dashboards + XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED: 'true' + depends_on: + elasticsearch: + condition: service_healthy +``` -Run `docker stack deploy -c stack.yml geonetwork` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080/geonetwork`, `http://localhost:8080/geonetwork`, or `http://host-ip:8080/geonetwork` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080/geonetwork` or `http://host-ip:8080/geonetwork` (as appropriate). -## Default credentials +### Default credentials After installation a default user with name `admin` and password `admin` is created. Use this credentials to start with. It is recommended to update the default password after installation. @@ -149,7 +356,7 @@ This is the defacto image. If you are unsure about what your needs are, you prob By default, an H2 database is configured and created when the application first starts. If you are interested in a database engine other than H2, please have a look at other image variants. -## `geonetwork:postgres` +## `geonetwork:postgres` (Only for GeoNetwork 3 series) This image gives support for using [PostgreSQL](https://www.postgresql.org/) as database engine for geonetwork. When you start the container, a database is created, and it is populated by geonetwork, once it starts. @@ -166,25 +373,25 @@ If you want to connect to a postgres server, you need to pass an extra environme If you want to connect to an **external database server**, you can use either the IP address or the DNS as `POSTGRES_DB_HOST`. For instance, if the server is running on `mydns.net`, on port `5434`, the username is `postgres` and the password is `mysecretpassword`: ```console -$ docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=mydns.net -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres +docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=mydns.net -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres ``` If are want to **run postgres on a container**, you can use the container name as `POSTGRES_DB_HOST`: just make sure that containers can discover each other, by **running them in the same user-defined network**. For instance, you can create a bridge network: ```console -$ docker network create --driver bridge mynet +docker network create --driver bridge mynet ``` Then if you want to run the official image of postgres, using `some-postgres` as container name, you could launch it like this: ```console -$ docker run --name some-postgres --network=mynet -d postgres +docker run --name some-postgres --network=mynet -d postgres ``` And then you could launch geonetwork, making sure you join the same network, and setting the required environment variables, including the `POSTGRES_DB_HOST`: ```console -$ docker run --name geonetwork -d -p 8080:8080 --network=mynet -e POSTGRES_DB_HOST=some-postgres -e POSTGRES_DB_PORT=5432 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres +docker run --name geonetwork -d -p 8080:8080 --network=mynet -e POSTGRES_DB_HOST=some-postgres -e POSTGRES_DB_PORT=5432 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres ``` #### Configuration environment variables diff --git a/geonetwork/compose.yaml b/geonetwork/compose.yaml new file mode 100644 index 000000000000..141fd69e3b12 --- /dev/null +++ b/geonetwork/compose.yaml @@ -0,0 +1,118 @@ +# GeoNetwork +# +# Access via "http://localhost:8080/geonetwork" +# +# Default user: admin +# Default password: admin + +volumes: + geonetwork: + esdata: + pgdata: + pglog: + +services: + geonetwork: + image: geonetwork:4.4 + healthcheck: + test: curl http://localhost:8080/ + interval: 5s + timeout: 5s + retries: 30 + restart: always + volumes: + - geonetwork:/catalogue-data + depends_on: + database: + condition: service_healthy + ports: + - 8080:8080 + environment: + WEBAPP_CONTEXT_PATH: /geonetwork + DATA_DIR: /catalogue-data + TZ: Europe/Amsterdam + + JAVA_OPTS: >- + --add-opens=jdk.management/com.sun.management.internal=ALL-UNNAMED + -Djava.security.egd=file:/dev/./urandom -Djava.awt.headless=true + -Xms512M -Xss512M -Xmx2G -XX:+UseConcMarkSweepGC + -Djetty.httpConfig.requestHeaderSize=32768 + -Dorg.eclipse.jetty.server.Request.maxFormContentSize=500000 + -Dorg.eclipse.jetty.server.Request.maxFormKeys=4000 + # For remote debug + # -Xdebug -Xrunjdwp:transport=dt_socket,server=y,suspend=n,address=5005 + + GN_CONFIG_PROPERTIES: >- + -Dgeonetwork.dir=/catalogue-data + -Dgeonetwork.formatter.dir=/catalogue-data/data/formatter + -Dgeonetwork.schema.dir=/opt/geonetwork/WEB-INF/data/config/schema_plugins + -Dgeonetwork.indexConfig.dir=/opt/geonetwork/WEB-INF/data/config/index + -Dgeonetwork.schemapublication.dir=/opt/geonetwork/WEB-INF/data/resources/schemapublication + -Dgeonetwork.htmlcache.dir=/opt/geonetwork/WEB-INF/data/resources/htmlcache + -Des.host=elasticsearch + -Des.protocol=http + -Des.port=9200 + -Des.url=http://elasticsearch:9200 + -Des.username= + -Des.password= + -Dgeonetwork.ESFeaturesProxy.targetUri=http://elasticsearch:9200/gn-features/{_} + -Dgeonetwork.HttpDashboardProxy.targetUri=http://kibana:5601 + + GEONETWORK_DB_TYPE: postgres-postgis + GEONETWORK_DB_HOST: database + GEONETWORK_DB_PORT: 5432 + GEONETWORK_DB_NAME: geonetwork + GEONETWORK_DB_USERNAME: geonetwork + GEONETWORK_DB_PASSWORD: geonetwork + + database: + image: postgis/postgis:16-3.4 + environment: + POSTGRES_USER: geonetwork + POSTGRES_PASSWORD: geonetwork + POSTGRES_DB: geonetwork + command: [postgres, -c, log_statement=all, -c, logging_collector=true, -c, log_file_mode=0644, -c, log_directory=/var/log/postgresql, -c, log_filename=postgresql.log] + healthcheck: + test: [CMD-SHELL, pg_isready -U postgres] + interval: 5s + timeout: 5s + retries: 5 + volumes: + - pgdata:/var/lib/postgresql/data + - pglog:/var/log/postgresql + + elasticsearch: + image: elasticsearch:7.17.15 + ports: + - 9200:9200 + ulimits: + memlock: + soft: -1 + hard: -1 + nofile: + soft: 65536 + hard: 65536 + healthcheck: + test: curl -s http://localhost:9200 >/dev/null || exit 1 + interval: 10s + timeout: 2s + retries: 10 + start_period: 2m + environment: + ES_JAVA_OPTS: -Xms1G -Xmx1G + discovery.type: single-node + volumes: + - esdata:/usr/share/elasticsearch/data + + kibana: + image: kibana:7.17.15 + environment: + SERVER_NAME: kibana + ELASTICSEARCH_URL: http://elasticsearch:9200/ + SERVER_BASEPATH: /geonetwork/dashboards + SERVER_REWRITEBASEPATH: 'false' + KIBANA_INDEX: .dashboards + XPACK_MONITORING_UI_CONTAINER_ELASTICSEARCH_ENABLED: 'true' + depends_on: + elasticsearch: + condition: service_healthy diff --git a/geonetwork/content.md b/geonetwork/content.md index 2da1202a0ea8..e35547e5651f 100644 --- a/geonetwork/content.md +++ b/geonetwork/content.md @@ -12,50 +12,160 @@ The project is part of the Open Source Geospatial Foundation ( [OSGeo](http://ww %%LOGO%% -# How to use this image +## How to use this image -## Start geonetwork +GeoNetwork 4 uses an Elasticsearch server to store the index of the documents it manages so **it can't be run without configuring the URL of the Elasticsearch server**. -This command will start a debian-based container, running a Tomcat web server, with a geonetwork war deployed on the server: +This is a quick example of how to get GeoNetwork 4.4 Latest up and running for demo purposes. This configuration doesn't keep the data if containers are removed. ```console -$ docker run --name some-%%REPO%% -d %%IMAGE%% +docker pull elasticsearch:7.17.15 +docker pull %%IMAGE%%:4 + +docker network create gn-network + +docker run -d --name my-es-host --network gn-network -e "discovery.type=single-node" elasticsearch:7.17.15 +docker run --name %%REPO%%-host --network gn-network -e GN_CONFIG_PROPERTIES="-Des.host=my-es-host -Des.protocol=http -Des.port=9200 -Des.url=http://my-es-host:9200" -p 8080:8080 %%IMAGE%%:4 +``` + +For GeoNetwork 4.2 Stable: + +```console +docker pull elasticsearch:7.17.15 +docker pull %%IMAGE%%:4.2 + +docker network create gn-network + +docker run -d --name my-es-host --network gn-network -e "discovery.type=single-node" elasticsearch:7.17.15 +docker run --name %%REPO%%-host --network gn-network -e ES_HOST=my-es-host -e ES_PROTOCOL=http -e ES_PORT=9200 -p 8080:8080 %%IMAGE%%:4.2 +``` + +To be sure about what Elasticsearch version to use you can check the [GeoNetwork documentation](https://docs.geonetwork-opensource.org/4.4/install-guide/installing-index/) for your GN version or the `es.version` property in the [`pom.xml`](https://github.com/geonetwork/core-geonetwork/blob/main/pom.xml#L1528C17-L1528C24) file of the GeoNetwork release used. + +### Default credentials + +After installation, use the default credentials: **`admin`** (username) and **`admin`** (password). It is recommended to update the default password after installation. + +### Elasticsearch configuration + +#### Java properties (version 4.4.0 and newer) + +Since GeoNetwork 4.4.0, use Java properties passed in the `GN_CONFIG_PROPERTIES` environment variable for Elasticsearch connection configuration: + +- `es.host`: *optional* (default `localhost`): The host name of the Elasticsearch server. +- `es.port` *optional* (default `9200`): The port where Elasticsearch server is listening to. +- `es.protocol` *optional* (default `http`): The protocol used to talk to Elasticsearch. Can be `http` or `https`. +- `es.url`: **mandatory if host, port or protocol aren't the default values** (default `http://localhost:9200`): Full URL of the Elasticsearch server. +- `es.index.records` *optional* (default `gn_records`): In case you have more than GeoNetwork instance using the same Elasticsearch cluster each one needs to use a different index name. Use this variable to define the name of the index used by each GeoNetwork. +- `es.username` *optional* (default empty): username used to connect to Elasticsearch. +- `es.password` *optional* (default empty): password used to connect to Elasticsearch. +- `kb.url` *optional* (default `http://localhost:5601`): The URL where Kibana is listening. + +Example Docker Compose YAML snippet: + +```yaml +services: + %%REPO%%: + image: %%IMAGE%%:4.4 + environment: + GN_CONFIG_PROPERTIES: >- + -Des.host=elasticsearch + -Des.protocol=http + -Des.port=9200 + -Des.url=http://elasticsearch:9200 + -Des.username=my_es_username + -Des.password=my_es_password + -Dkb.url=http://kibana:5601 ``` -## Publish port +#### Environment variables (version 4.2 and older) + +For versions older than 4.4.0, configure Elasticsearch using environment variables: + +- `ES_HOST` **mandatory**: The host name of the Elasticsearch server. +- `ES_PORT` *optional* (default `9200`): The port where Elasticsearch server is listening to. +- `ES_PROTOCOL` *optional* (default `http`): The protocol used to talk to Elasticsearch. Can be `http` or `https`. +- `ES_INDEX_RECORDS` *optional* (default `gn_records`): In case you have more than GeoNetwork instance using the same Elasticsearch cluster each one needs to use a different index name. Use this variable to define the name of the index used by each GeoNetwork. +- `ES_USERNAME` *optional* (default empty): username used to connect to Elasticsearch. +- `ES_PASSWORD` *optional* (default empty): password used to connect to Elasticsearch. +- `KB_URL` *Optional* (default `http://localhost:5601`): The URL where Kibana is listening. + +### Database configuration + +By default GeoNetwork uses a local **H2 database** for demo use (this one is **not recommended for production**). The image contains JDBC drivers for PostgreSQL and MySQL. To configure the database connection use these environment variables: -Geonetwork listens on port `8080`. If you want to access the container at the host, **you must publish this port**. For instance, this, will redirect all the container traffic on port 8080, to the same port on the host: +- `GEONETWORK_DB_TYPE`: The type of database to use. Valid values are `postgres`, `postgres-postgis`, `mysql`. The image can be extended including other drivers and these other types could be used too: `db2`, `h2`, `oracle`, `sqlserver`. The JAR drivers for these other databases would need to be added to `/opt/geonetwork/WEB-INF/lib` mounting them as binds or extending the official image. +- `GEONETWORK_DB_HOST`: The database host name. +- `GEONETWORK_DB_PORT`: The database port. +- `GEONETWORK_DB_NAME`: The database name. +- `GEONETWORK_DB_USERNAME`: The username used to connect to the database. +- `GEONETWORK_DB_PASSWORD`: The password used to connect to the database. +- `GEONETWORK_DB_CONNECTION_PROPERTIES`: Additional properties to be added to the connection string, for example `search_path=test,public&ssl=true` will produce a JDBC connection string like `jdbc:postgresql://localhost:5432/postgres?search_path=test,public&ssl=true` + +### Start GeoNetwork + +This command will start a debian-based container, running a Tomcat (GN 3) or Jetty (GN 4) web server, with a GeoNetwork WAR deployed on the server: ```console -$ docker run --name some-%%REPO%% -d -p 8080:8080 %%IMAGE%% +docker run --name some-%%REPO%% -d %%IMAGE%% ``` -Then, if you are running docker on Linux, you may access geonetwork at http://localhost:8080/geonetwork. Otherwise, replace `localhost` by the address of your docker machine. +### Publish port + +GeoNetwork listens on port `8080`. If you want to access the container at the host, **you must publish this port**. For instance, this, will redirect all the container traffic on port 8080, to the same port on the host: + +```console +docker run --name some-%%REPO%% -d -p 8080:8080 %%IMAGE%% +``` -## Set the data directory and H2 db file +Then, if you are running docker on Linux, you may access geonetwork at http://localhost:8080/geonetwork. -The data directory is the location on the file system where the catalog stores much of its custom configuration and uploaded files. It is also where it stores a number of support files, used for various purposes (e.g.: Lucene index, spatial index, thumbnails). The default variant also uses a local H2 database to store the metadata catalog itself. +### Set the data directory and H2 db file -By default, geonetwork sets the data directory on `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data` and H2 database file to the tomcat bin dir `/usr/local/tomcat/gn.h2.db`, but you may override these values by injecting environment variables into the container: - `-e DATA_DIR=...` (defaults to `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`) and `-e GEONETWORK_DB_NAME=...` (defaults to `gn` which sets up database `gn.h2.db` in tomcat bin dir `/usr/local/tomcat`). Note that setting the database location via `GEONETWORK_DB_NAME` only works from version 3.10.3 onwards. +The data directory is the location on the file system where the catalog stores much of its custom configuration and uploaded files. It is also where it stores a number of support files, used for various purposes (e.g.: spatial index, thumbnails). The default variant also uses a local H2 database to store the metadata catalog itself. + +By default, GeoNetwork sets the data directory on `/opt/geonetwork/WEB-INF/data` and H2 database file to the Jetty dir `/var/lib/jetty/gn.h2.db` (since GN 4.0.0) or Tomcat `/usr/local/tomcat/gn.h2.db` (for GN 3), but you may override these values by injecting environment variables into the container: - `-e DATA_DIR=...` (defaults to `/opt/geonetwork/WEB-INF/data`) and `-e GEONETWORK_DB_NAME=...` (defaults to `gn` which sets up database `gn.h2.db` in tomcat bin dir `/usr/local/tomcat`). Note that setting the database location via `GEONETWORK_DB_NAME` only works from version 3.10.3 onwards. + +Since version 4.4.0 the data directory needs to be configued using Java properties passed in the `GN_CONFIG_PROPERTIES` environment variable. For example: + +```console +docker run --name some-%%REPO%% -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn %%IMAGE%% +``` + +### Persisting data + +To set the data directory to `/catalogue-data/data` and H2 database file to `/catalogue-data/db/gn.h2.db` so they both persist through restarts: + +- GeoNetwork 4.2 and older + +```console +docker run --name some-%%REPO%% -d -p 8080:8080 -e DATA_DIR=/catalogue-data/data -e GEONETWORK_DB_NAME=/catalogue-data/db/gn %%IMAGE%%:3 +``` + +- Since GeoNetwork 4.4.0 + +```console +docker run --name some-%%REPO%% -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn %%IMAGE%% +``` -## Persisting data +If you want the data directory to live beyond restarts, or even destruction of the container, you can mount a directory from the docker engine's host into the container. - `-v /host/path:/path/to/data/directory`. For instance this, will mount the host directory `/host/%%REPO%%-docker` into `/catalogue-data` on the container: -To set the data directory to `/var/lib/geonetwork/data` and H2 database file to `/var/lib/geonetwork/db/gn.h2.db` so they both persist through restarts: +- GeoNetwork 4.2 and older ```console -$ docker run --name some-%%REPO%% -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork/data -e GEONETWORK_DB_NAME=/var/lib/geonetwork/db/gn %%IMAGE%% +docker run --name some-%%REPO%% -d -p 8080:8080 -e DATA_DIR=/catalogue-data/data -e GEONETWORK_DB_NAME=/catalogue-data/db/gn -v /host/%%REPO%%-docker:/catalogue-data %%IMAGE%%:3 ``` -If you want the data directory to live beyond restarts, or even destruction of the container, you can mount a directory from the docker engine's host into the container. - `-v /host/path:/path/to/data/directory`. For instance this, will mount the host directory `/host/geonetwork-docker` into `/var/lib/geonetwork` on the container: +- GeoNetwork 4.4.0 and newer ```console -$ docker run --name some-%%REPO%% -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork/data -e GEONETWORK_DB_NAME=/var/lib/geonetwork/db/gn -v /host/geonetwork-docker:/var/lib/geonetwork %%IMAGE%% +docker run --name some-%%REPO%% -d -p 8080:8080 -e GN_CONFIG_PROPERTIES="-Dgeonetwork.dir=/catalogue-data" -e GEONETWORK_DB_NAME=/catalogue-data/db/gn -v /host/%%REPO%%-docker:/catalogue-data %%IMAGE%% ``` -## %%STACK%% +### %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080/geonetwork`, `http://localhost:8080/geonetwork`, or `http://host-ip:8080/geonetwork` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080/geonetwork` or `http://host-ip:8080/geonetwork` (as appropriate). -## Default credentials +### Default credentials After installation a default user with name `admin` and password `admin` is created. Use this credentials to start with. It is recommended to update the default password after installation. diff --git a/geonetwork/metadata.json b/geonetwork/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/geonetwork/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/geonetwork/stack.yml b/geonetwork/stack.yml deleted file mode 100644 index 0be0b317b9f4..000000000000 --- a/geonetwork/stack.yml +++ /dev/null @@ -1,22 +0,0 @@ -# GeoNetwork -# -# Access via "http://localhost:8080/geonetwork" (or "http://$(docker-machine ip):8080/geonetwork" if using docker-machine) -# -# Default user: admin -# Default password: admin - -version: '3.1' -services: - - geonetwork: - image: geonetwork - restart: always - ports: - - 8080:8080 - environment: - DATA_DIR: /var/lib/geonetwork_data - volumes: - - geonetwork:/var/lib/geonetwork_data - -volumes: - geonetwork: diff --git a/geonetwork/variant-postgres.md b/geonetwork/variant-postgres.md index c98907ff818d..670977649573 100644 --- a/geonetwork/variant-postgres.md +++ b/geonetwork/variant-postgres.md @@ -1,4 +1,4 @@ -## `%%REPO%%:postgres` +## `%%REPO%%:postgres` (Only for GeoNetwork 3 series) This image gives support for using [PostgreSQL](https://www.postgresql.org/) as database engine for geonetwork. When you start the container, a database is created, and it is populated by geonetwork, once it starts. @@ -15,25 +15,25 @@ If you want to connect to a postgres server, you need to pass an extra environme If you want to connect to an **external database server**, you can use either the IP address or the DNS as `POSTGRES_DB_HOST`. For instance, if the server is running on `mydns.net`, on port `5434`, the username is `postgres` and the password is `mysecretpassword`: ```console -$ docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=mydns.net -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres +docker run --name geonetwork -d -p 8080:8080 -e POSTGRES_DB_HOST=mydns.net -e POSTGRES_DB_PORT=5434 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres ``` If are want to **run postgres on a container**, you can use the container name as `POSTGRES_DB_HOST`: just make sure that containers can discover each other, by **running them in the same user-defined network**. For instance, you can create a bridge network: ```console -$ docker network create --driver bridge mynet +docker network create --driver bridge mynet ``` Then if you want to run the official image of postgres, using `some-postgres` as container name, you could launch it like this: ```console -$ docker run --name some-postgres --network=mynet -d postgres +docker run --name some-postgres --network=mynet -d postgres ``` And then you could launch geonetwork, making sure you join the same network, and setting the required environment variables, including the `POSTGRES_DB_HOST`: ```console -$ docker run --name geonetwork -d -p 8080:8080 --network=mynet -e POSTGRES_DB_HOST=some-postgres -e POSTGRES_DB_PORT=5432 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres +docker run --name geonetwork -d -p 8080:8080 --network=mynet -e POSTGRES_DB_HOST=some-postgres -e POSTGRES_DB_PORT=5432 -e POSTGRES_DB_USERNAME=postgres -e POSTGRES_DB_PASSWORD=mysecretpassword -e POSTGRES_DB_NAME=mydbname geonetwork:postgres ``` #### Configuration environment variables diff --git a/get-categories.sh b/get-categories.sh new file mode 100755 index 000000000000..7d678f700757 --- /dev/null +++ b/get-categories.sh @@ -0,0 +1,16 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +workdir="$(readlink -f "$BASH_SOURCE")" +workdir="$(dirname "$workdir")" + +jsonFile='metadata.json' +canonicalMetadataFile="$workdir/$jsonFile" + +# add categories slugs to canonicalMetadataFile without losing other keys there +curl -fsSL https://hub.docker.com/v2/categories | jq -s --sort-keys ' + .[0] as $allCategories + | .[1] + | .hub.categories = ( [ $allCategories[].slug ] | sort ) +' - "$canonicalMetadataFile" | tee "$canonicalMetadataFile.new" +mv "$canonicalMetadataFile.new" "$canonicalMetadataFile" diff --git a/ghost/README-short.txt b/ghost/README-short.txt index 74097a2bf7c1..00045aa8b086 100644 --- a/ghost/README-short.txt +++ b/ghost/README-short.txt @@ -1 +1 @@ -Ghost is a free and open source blogging platform written in JavaScript +Publish by web and email newsletter, with member signups and subscription payments. \ No newline at end of file diff --git a/ghost/README.md b/ghost/README.md index 6f6462ba5504..970729b0c1e3 100644 --- a/ghost/README.md +++ b/ghost/README.md @@ -24,18 +24,21 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.30.0`, `5.30`, `5`, `latest`](https://github.com/docker-library/ghost/blob/6b51b1413dc7303993dec2200532cf1ff9d14cf0/5/debian/Dockerfile) -- [`5.30.0-alpine`, `5.30-alpine`, `5-alpine`, `alpine`](https://github.com/docker-library/ghost/blob/6b51b1413dc7303993dec2200532cf1ff9d14cf0/5/alpine/Dockerfile) -- [`4.48.9`, `4.48`, `4`](https://github.com/docker-library/ghost/blob/1f74dbadd9f1959422a4e42c3f9c0f5d281c4461/4/debian/Dockerfile) -- [`4.48.9-alpine`, `4.48-alpine`, `4-alpine`](https://github.com/docker-library/ghost/blob/1f74dbadd9f1959422a4e42c3f9c0f5d281c4461/4/alpine/Dockerfile) +- [`6.8.0-bookworm`, `6.8.0`, `6.8-bookworm`, `6.8`, `6-bookworm`, `6`, `bookworm`, `latest`](https://github.com/docker-library/ghost/blob/266fb5d0fca5b33a10411634f921f3067758ced4/6/bookworm/Dockerfile) + +- [`6.8.0-alpine3.22`, `6.8.0-alpine`, `6.8-alpine3.22`, `6.8-alpine`, `6-alpine3.22`, `6-alpine`, `alpine3.22`, `alpine`](https://github.com/docker-library/ghost/blob/266fb5d0fca5b33a10411634f921f3067758ced4/6/alpine3.22/Dockerfile) + +- [`5.130.5-bookworm`, `5.130.5`, `5.130-bookworm`, `5.130`, `5-bookworm`, `5`](https://github.com/docker-library/ghost/blob/266fb5d0fca5b33a10411634f921f3067758ced4/5/bookworm/Dockerfile) + +- [`5.130.5-alpine3.22`, `5.130.5-alpine`, `5.130-alpine3.22`, `5.130-alpine`, `5-alpine3.22`, `5-alpine`](https://github.com/docker-library/ghost/blob/266fb5d0fca5b33a10411634f921f3067758ced4/5/alpine3.22/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/ghost/issues](https://github.com/docker-library/ghost/issues) + [https://github.com/docker-library/ghost/issues](https://github.com/docker-library/ghost/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/ghost/), [`arm32v6`](https://hub.docker.com/r/arm32v6/ghost/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ghost/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ghost/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ghost/), [`s390x`](https://hub.docker.com/r/s390x/ghost/) + [`amd64`](https://hub.docker.com/r/amd64/ghost/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ghost/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ghost/), [`s390x`](https://hub.docker.com/r/s390x/ghost/) - **Published image artifact details**: [repo-info repo's `repos/ghost/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ghost) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ghost)) @@ -50,11 +53,11 @@ WARNING: # Ghost -Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications. +Ghost is an independent platform for publishing online by web and email newsletter. It has user signups, gated access and subscription payments built-in (with Stripe) to allow you to build a direct relationship with your audience. It's fast, user-friendly, and runs on Node.js & MySQL8. -> [wikipedia.org/wiki/Ghost_(blogging_platform)](http://en.wikipedia.org/wiki/Ghost_%28blogging_platform%29) +> [Ghost.org](https://ghost.org) -![logo](https://raw.githubusercontent.com/docker-library/docs/c5b6d94dc8f0557925ab37ca43141c0efc5cc363/ghost/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/c88522f95bebcab2322f3020f2f735210286939b/ghost/logo.png) # How to use this image @@ -82,18 +85,32 @@ For upgrading your Ghost container you will want to mount your data to the appro ## Stateful -Mount your existing content. In this example we also use the Alpine base image. +Mount your existing content. In this example we also use the Alpine Linux based image. ```console -$ docker run -d --name some-ghost -e NODE_ENV=development -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content ghost:alpine +$ docker run -d \ + --name some-ghost \ + -e NODE_ENV=development \ + -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \ + -p 3001:2368 \ + -v /path/to/ghost/blog:/var/lib/ghost/content \ + ghost:alpine ``` +Note: `database__connection__filename` is only valid in development mode and is the location for the SQLite database file. If using development mode, it should be set to a writeable path within a persistent folder (bind mount or volume). It is not available in production mode because an external MySQL server is required (see the Docker Compose example below). + ### Docker Volume Alternatively you can use a named [docker volume](https://docs.docker.com/storage/volumes/) instead of a direct host path for `/var/lib/ghost/content`: ```console -$ docker run -d --name some-ghost -e NODE_ENV=development -v some-ghost-data:/var/lib/ghost/content ghost +$ docker run -d \ + --name some-ghost \ + -e NODE_ENV=development \ + -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \ + -p 3001:2368 \ + -v some-ghost-data:/var/lib/ghost/content \ + ghost ``` ## Configuration @@ -104,7 +121,7 @@ All Ghost configuration parameters (such as `url`) can be specified via environm $ docker run -d --name some-ghost -e NODE_ENV=development -e url=http://some-ghost.example.com ghost ``` -(There are further configuration examples in the `stack.yml` listed below.) +(There are further configuration examples in the `compose.yaml` listed below.) ## What is the Node.js version? @@ -121,21 +138,19 @@ While the Docker images do have Ghost-CLI available and do use some of its comma ## Production mode -To run Ghost for production you'll also need to be running with MySQL 8, https, and a reverse proxy configured with appropriate `X-Forwarded-For`, `X-Forwared-Host`, and `X-Forwarded-Proto` (`https`) headers. +To run Ghost for production you'll also need to be running with MySQL 8, https, and a reverse proxy configured with appropriate `X-Forwarded-For`, `X-Forwarded-Host`, and `X-Forwarded-Proto` (`https`) headers. The following example demonstrates some of the necessary configuration for running with MySQL. For more detail, see [Ghost's "Configuration options" documentation](https://ghost.org/docs/config/#configuration-options). -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `ghost`: +Example `compose.yaml` for `ghost`: ```yaml -version: '3.1' - services: ghost: - image: ghost:4-alpine + image: ghost:5-alpine restart: always ports: - 8080:2368 @@ -150,17 +165,23 @@ services: url: http://localhost:8080 # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired) #NODE_ENV: development + volumes: + - ghost:/var/lib/ghost/content db: image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: example -``` + volumes: + - db:/var/lib/mysql -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/57f9907ee5bbeaede8c97f439b9c11bc1081dd75/ghost/stack.yml) +volumes: + ghost: + db: +``` -Run `docker stack deploy -c stack.yml ghost` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). # Image Variants @@ -170,6 +191,8 @@ The `ghost` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. +Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. + ## `ghost:-alpine` This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. diff --git a/ghost/stack.yml b/ghost/compose.yaml similarity index 84% rename from ghost/stack.yml rename to ghost/compose.yaml index eefc6e8a709b..4fd4097e35ac 100644 --- a/ghost/stack.yml +++ b/ghost/compose.yaml @@ -1,9 +1,7 @@ -version: '3.1' - services: ghost: - image: ghost:4-alpine + image: ghost:5-alpine restart: always ports: - 8080:2368 @@ -18,9 +16,17 @@ services: url: http://localhost:8080 # contrary to the default mentioned in the linked documentation, this image defaults to NODE_ENV=production (so development mode needs to be explicitly specified if desired) #NODE_ENV: development + volumes: + - ghost:/var/lib/ghost/content db: image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: example + volumes: + - db:/var/lib/mysql + +volumes: + ghost: + db: diff --git a/ghost/content.md b/ghost/content.md index d475b3ea12e2..a595a019c3cc 100644 --- a/ghost/content.md +++ b/ghost/content.md @@ -1,8 +1,8 @@ # Ghost -Ghost is a free and open source blogging platform written in JavaScript and distributed under the MIT License, designed to simplify the process of online publishing for individual bloggers as well as online publications. +Ghost is an independent platform for publishing online by web and email newsletter. It has user signups, gated access and subscription payments built-in (with Stripe) to allow you to build a direct relationship with your audience. It's fast, user-friendly, and runs on Node.js & MySQL8. -> [wikipedia.org/wiki/Ghost_(blogging_platform)](http://en.wikipedia.org/wiki/Ghost_%28blogging_platform%29) +> [Ghost.org](https://ghost.org) %%LOGO%% @@ -32,18 +32,32 @@ For upgrading your Ghost container you will want to mount your data to the appro ## Stateful -Mount your existing content. In this example we also use the Alpine base image. +Mount your existing content. In this example we also use the Alpine Linux based image. ```console -$ docker run -d --name some-ghost -e NODE_ENV=development -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content %%IMAGE%%:alpine +$ docker run -d \ + --name some-ghost \ + -e NODE_ENV=development \ + -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \ + -p 3001:2368 \ + -v /path/to/ghost/blog:/var/lib/ghost/content \ + %%IMAGE%%:alpine ``` +Note: `database__connection__filename` is only valid in development mode and is the location for the SQLite database file. If using development mode, it should be set to a writeable path within a persistent folder (bind mount or volume). It is not available in production mode because an external MySQL server is required (see the Docker Compose example below). + ### Docker Volume Alternatively you can use a named [docker volume](https://docs.docker.com/storage/volumes/) instead of a direct host path for `/var/lib/ghost/content`: ```console -$ docker run -d --name some-ghost -e NODE_ENV=development -v some-ghost-data:/var/lib/ghost/content %%IMAGE%% +$ docker run -d \ + --name some-ghost \ + -e NODE_ENV=development \ + -e database__connection__filename='/var/lib/ghost/content/data/ghost.db' \ + -p 3001:2368 \ + -v some-ghost-data:/var/lib/ghost/content \ + %%IMAGE%% ``` ## Configuration @@ -54,7 +68,7 @@ All Ghost configuration parameters (such as `url`) can be specified via environm $ docker run -d --name some-ghost -e NODE_ENV=development -e url=http://some-ghost.example.com %%IMAGE%% ``` -(There are further configuration examples in the `stack.yml` listed below.) +(There are further configuration examples in the `compose.yaml` listed below.) ## What is the Node.js version? @@ -71,10 +85,10 @@ While the Docker images do have Ghost-CLI available and do use some of its comma ## Production mode -To run Ghost for production you'll also need to be running with MySQL 8, https, and a reverse proxy configured with appropriate `X-Forwarded-For`, `X-Forwared-Host`, and `X-Forwarded-Proto` (`https`) headers. +To run Ghost for production you'll also need to be running with MySQL 8, https, and a reverse proxy configured with appropriate `X-Forwarded-For`, `X-Forwarded-Host`, and `X-Forwarded-Proto` (`https`) headers. The following example demonstrates some of the necessary configuration for running with MySQL. For more detail, see [Ghost's "Configuration options" documentation](https://ghost.org/docs/config/#configuration-options). -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). diff --git a/ghost/logo.png b/ghost/logo.png index d3f2d3cebe18..efe7f2243a30 100644 Binary files a/ghost/logo.png and b/ghost/logo.png differ diff --git a/ghost/metadata.json b/ghost/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/ghost/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/golang/README.md b/golang/README.md index 642ff5b72fd6..1042c68295c6 100644 --- a/golang/README.md +++ b/golang/README.md @@ -28,71 +28,91 @@ WARNING: ## Simple Tags -- [`1.20rc3-bullseye`, `1.20-rc-bullseye`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/bullseye/Dockerfile) -- [`1.20rc3-buster`, `1.20-rc-buster`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/buster/Dockerfile) -- [`1.20rc3-alpine3.17`, `1.20-rc-alpine3.17`, `1.20rc3-alpine`, `1.20-rc-alpine`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/alpine3.17/Dockerfile) -- [`1.20rc3-alpine3.16`, `1.20-rc-alpine3.16`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/alpine3.16/Dockerfile) -- [`1.20rc3-windowsservercore-ltsc2022`, `1.20-rc-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/windowsservercore-ltsc2022/Dockerfile) -- [`1.20rc3-windowsservercore-1809`, `1.20-rc-windowsservercore-1809`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/windowsservercore-1809/Dockerfile) -- [`1.20rc3-nanoserver-ltsc2022`, `1.20-rc-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/nanoserver-ltsc2022/Dockerfile) -- [`1.20rc3-nanoserver-1809`, `1.20-rc-nanoserver-1809`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/nanoserver-1809/Dockerfile) -- [`1.19.5-bullseye`, `1.19-bullseye`, `1-bullseye`, `bullseye`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/bullseye/Dockerfile) -- [`1.19.5-buster`, `1.19-buster`, `1-buster`, `buster`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/buster/Dockerfile) -- [`1.19.5-alpine3.17`, `1.19-alpine3.17`, `1-alpine3.17`, `alpine3.17`, `1.19.5-alpine`, `1.19-alpine`, `1-alpine`, `alpine`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/alpine3.17/Dockerfile) -- [`1.19.5-alpine3.16`, `1.19-alpine3.16`, `1-alpine3.16`, `alpine3.16`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/alpine3.16/Dockerfile) -- [`1.19.5-windowsservercore-ltsc2022`, `1.19-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/windowsservercore-ltsc2022/Dockerfile) -- [`1.19.5-windowsservercore-1809`, `1.19-windowsservercore-1809`, `1-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/windowsservercore-1809/Dockerfile) -- [`1.19.5-nanoserver-ltsc2022`, `1.19-nanoserver-ltsc2022`, `1-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/nanoserver-ltsc2022/Dockerfile) -- [`1.19.5-nanoserver-1809`, `1.19-nanoserver-1809`, `1-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/nanoserver-1809/Dockerfile) -- [`1.18.10-bullseye`, `1.18-bullseye`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/bullseye/Dockerfile) -- [`1.18.10-buster`, `1.18-buster`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/buster/Dockerfile) -- [`1.18.10-alpine3.17`, `1.18-alpine3.17`, `1.18.10-alpine`, `1.18-alpine`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/alpine3.17/Dockerfile) -- [`1.18.10-alpine3.16`, `1.18-alpine3.16`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/alpine3.16/Dockerfile) -- [`1.18.10-windowsservercore-ltsc2022`, `1.18-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/windowsservercore-ltsc2022/Dockerfile) -- [`1.18.10-windowsservercore-1809`, `1.18-windowsservercore-1809`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/windowsservercore-1809/Dockerfile) -- [`1.18.10-nanoserver-ltsc2022`, `1.18-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/nanoserver-ltsc2022/Dockerfile) -- [`1.18.10-nanoserver-1809`, `1.18-nanoserver-1809`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/nanoserver-1809/Dockerfile) +- [`1.25.4-trixie`, `1.25-trixie`, `1-trixie`, `trixie`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/trixie/Dockerfile) + +- [`1.25.4-bookworm`, `1.25-bookworm`, `1-bookworm`, `bookworm`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/bookworm/Dockerfile) + +- [`1.25.4-alpine3.22`, `1.25-alpine3.22`, `1-alpine3.22`, `alpine3.22`, `1.25.4-alpine`, `1.25-alpine`, `1-alpine`, `alpine`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/alpine3.22/Dockerfile) + +- [`1.25.4-alpine3.21`, `1.25-alpine3.21`, `1-alpine3.21`, `alpine3.21`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/alpine3.21/Dockerfile) + +- [`1.25.4-windowsservercore-ltsc2025`, `1.25-windowsservercore-ltsc2025`, `1-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`1.25.4-windowsservercore-ltsc2022`, `1.25-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`1.25.4-nanoserver-ltsc2025`, `1.25-nanoserver-ltsc2025`, `1-nanoserver-ltsc2025`, `nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/nanoserver-ltsc2025/Dockerfile) + +- [`1.25.4-nanoserver-ltsc2022`, `1.25-nanoserver-ltsc2022`, `1-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/nanoserver-ltsc2022/Dockerfile) + +- [`1.24.10-trixie`, `1.24-trixie`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/trixie/Dockerfile) + +- [`1.24.10-bookworm`, `1.24-bookworm`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/bookworm/Dockerfile) + +- [`1.24.10-alpine3.22`, `1.24-alpine3.22`, `1.24.10-alpine`, `1.24-alpine`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/alpine3.22/Dockerfile) + +- [`1.24.10-alpine3.21`, `1.24-alpine3.21`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/alpine3.21/Dockerfile) + +- [`1.24.10-windowsservercore-ltsc2025`, `1.24-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`1.24.10-windowsservercore-ltsc2022`, `1.24-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`1.24.10-nanoserver-ltsc2025`, `1.24-nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/nanoserver-ltsc2025/Dockerfile) + +- [`1.24.10-nanoserver-ltsc2022`, `1.24-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/nanoserver-ltsc2022/Dockerfile) + +- [`tip-20251108-trixie`, `tip-trixie`](https://github.com/docker-library/golang/blob/905b1a5a29638e639c2cbea3b1c1d9625483fdda/tip/trixie/Dockerfile) + +- [`tip-20251108-bookworm`, `tip-bookworm`](https://github.com/docker-library/golang/blob/905b1a5a29638e639c2cbea3b1c1d9625483fdda/tip/bookworm/Dockerfile) + +- [`tip-20251108-alpine3.22`, `tip-alpine3.22`, `tip-20251108-alpine`, `tip-alpine`](https://github.com/docker-library/golang/blob/905b1a5a29638e639c2cbea3b1c1d9625483fdda/tip/alpine3.22/Dockerfile) + +- [`tip-20251108-alpine3.21`, `tip-alpine3.21`](https://github.com/docker-library/golang/blob/905b1a5a29638e639c2cbea3b1c1d9625483fdda/tip/alpine3.21/Dockerfile) ## Shared Tags -- `1.20rc3`, `1.20-rc`: - - [`1.20rc3-bullseye`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/bullseye/Dockerfile) - - [`1.20rc3-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.20rc3-windowsservercore-1809`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/windowsservercore-1809/Dockerfile) -- `1.20rc3-windowsservercore`, `1.20-rc-windowsservercore`: - - [`1.20rc3-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.20rc3-windowsservercore-1809`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/windowsservercore-1809/Dockerfile) -- `1.20rc3-nanoserver`, `1.20-rc-nanoserver`: - - [`1.20rc3-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/nanoserver-ltsc2022/Dockerfile) - - [`1.20rc3-nanoserver-1809`](https://github.com/docker-library/golang/blob/9a135136dcd3d56a39e1f40c5b264938eac0c7ee/1.20-rc/windows/nanoserver-1809/Dockerfile) -- `1.19.5`, `1.19`, `1`, `latest`: - - [`1.19.5-bullseye`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/bullseye/Dockerfile) - - [`1.19.5-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.19.5-windowsservercore-1809`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/windowsservercore-1809/Dockerfile) -- `1.19.5-windowsservercore`, `1.19-windowsservercore`, `1-windowsservercore`, `windowsservercore`: - - [`1.19.5-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.19.5-windowsservercore-1809`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/windowsservercore-1809/Dockerfile) -- `1.19.5-nanoserver`, `1.19-nanoserver`, `1-nanoserver`, `nanoserver`: - - [`1.19.5-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/nanoserver-ltsc2022/Dockerfile) - - [`1.19.5-nanoserver-1809`](https://github.com/docker-library/golang/blob/8e04c39d2ce4466162418245c8b1178951021321/1.19/windows/nanoserver-1809/Dockerfile) -- `1.18.10`, `1.18`: - - [`1.18.10-bullseye`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/bullseye/Dockerfile) - - [`1.18.10-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.18.10-windowsservercore-1809`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/windowsservercore-1809/Dockerfile) -- `1.18.10-windowsservercore`, `1.18-windowsservercore`: - - [`1.18.10-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.18.10-windowsservercore-1809`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/windowsservercore-1809/Dockerfile) -- `1.18.10-nanoserver`, `1.18-nanoserver`: - - [`1.18.10-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/nanoserver-ltsc2022/Dockerfile) - - [`1.18.10-nanoserver-1809`](https://github.com/docker-library/golang/blob/f28358ce7460e4b8fe0c5ef7c1c4cc54f0f6ea15/1.18/windows/nanoserver-1809/Dockerfile) +- `1.25.4`, `1.25`, `1`, `latest`: + + - [`1.25.4-trixie`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/trixie/Dockerfile) + - [`1.25.4-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.25.4-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.25.4-windowsservercore`, `1.25-windowsservercore`, `1-windowsservercore`, `windowsservercore`: + + - [`1.25.4-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.25.4-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.25.4-nanoserver`, `1.25-nanoserver`, `1-nanoserver`, `nanoserver`: + + - [`1.25.4-nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/nanoserver-ltsc2025/Dockerfile) + - [`1.25.4-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/63f58b7160c9e82a88a7befcda362794b7d21750/1.25/windows/nanoserver-ltsc2022/Dockerfile) + +- `1.24.10`, `1.24`: + + - [`1.24.10-trixie`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/trixie/Dockerfile) + - [`1.24.10-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.24.10-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.24.10-windowsservercore`, `1.24-windowsservercore`: + + - [`1.24.10-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.24.10-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.24.10-nanoserver`, `1.24-nanoserver`: + + - [`1.24.10-nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/nanoserver-ltsc2025/Dockerfile) + - [`1.24.10-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/6302d466bdcf34f867e69179bddf77bfe701f0c9/1.24/windows/nanoserver-ltsc2022/Dockerfile) + +- `tip-20251108`, `tip`: + + - [`tip-20251108-trixie`](https://github.com/docker-library/golang/blob/905b1a5a29638e639c2cbea3b1c1d9625483fdda/tip/trixie/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/golang/issues](https://github.com/docker-library/golang/issues) + [https://github.com/docker-library/golang/issues](https://github.com/docker-library/golang/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/golang/), [`arm32v5`](https://hub.docker.com/r/arm32v5/golang/), [`arm32v6`](https://hub.docker.com/r/arm32v6/golang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/golang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/golang/), [`i386`](https://hub.docker.com/r/i386/golang/), [`mips64le`](https://hub.docker.com/r/mips64le/golang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/golang/), [`s390x`](https://hub.docker.com/r/s390x/golang/), [`windows-amd64`](https://hub.docker.com/r/winamd64/golang/) + [`amd64`](https://hub.docker.com/r/amd64/golang/), [`arm32v6`](https://hub.docker.com/r/arm32v6/golang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/golang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/golang/), [`i386`](https://hub.docker.com/r/i386/golang/), [`mips64le`](https://hub.docker.com/r/mips64le/golang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/golang/), [`riscv64`](https://hub.docker.com/r/riscv64/golang/), [`s390x`](https://hub.docker.com/r/s390x/golang/), [`windows-amd64`](https://hub.docker.com/r/winamd64/golang/) - **Published image artifact details**: [repo-info repo's `repos/golang/` directory](https://github.com/docker-library/repo-info/blob/master/repos/golang) ([history](https://github.com/docker-library/repo-info/commits/master/repos/golang)) @@ -122,13 +142,13 @@ Go (a.k.a., Golang) is a programming language first developed at Google. It is a The most straightforward way to use this image is to use a Go container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project (assuming it uses `go.mod` for dependency management): ```dockerfile -FROM golang:1.19 +FROM golang:1.25 WORKDIR /usr/src/app # pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change COPY go.mod go.sum ./ -RUN go mod download && go mod verify +RUN go mod download COPY . . RUN go build -v -o /usr/local/bin/app ./... @@ -148,13 +168,13 @@ $ docker run -it --rm --name my-running-app my-golang-app There may be occasions where it is not appropriate to run your app inside a container. To compile, but not run your app inside the Docker instance, you can write something like: ```console -$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.25 go build -v ``` This will add your current directory as a volume to the container, set the working directory to the volume, and run the command `go build` which will tell go to compile the project in the working directory and output the executable to `myapp`. Alternatively, if you have a `Makefile`, you can run the `make` command inside your container. ```console -$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 make +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.25 make ``` ## Cross-compile your app inside the Docker container @@ -162,13 +182,13 @@ $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 make If you need to compile your application for a platform other than `linux/amd64` (such as `windows/386`): ```console -$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.19 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.25 go build -v ``` Alternatively, you can build for multiple platforms at once: ```console -$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 bash +$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.25 bash $ for GOOS in darwin linux; do > for GOARCH in 386 amd64; do > export GOOS GOARCH @@ -177,6 +197,10 @@ $ for GOOS in darwin linux; do > done ``` +## Git LFS + +If downloading your dependencies results in an error like "checksum mismatch", you should check whether they are using [Git LFS](https://git-lfs.com/) (and thus need it installed for downloading them and calculating correct `go.sum` values). + # Image Variants The `golang` images come in many flavors, each designed for a specific use case. @@ -185,7 +209,7 @@ The `golang` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `golang:-alpine` @@ -199,12 +223,17 @@ To minimize image size, additional related tools (such as `git`, `gcc`, or `bash ## `golang:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) + +## `golang:-tip` + +The term "tip" in the Go community is used to refer to the latest development branch ([a leftover convention from previously using `hg` for version control](https://github.com/golang/build/blob/6383021611af0e07cbf0a60222e066662557c796/cmd/coordinator/internal/legacydash/build.go#L313-L314)). + +These tags contains builds of Go's latest development branch, and they are updated on a ~weekly cadence. # License diff --git a/golang/content.md b/golang/content.md index e104a68f5850..c63a9397ffa0 100644 --- a/golang/content.md +++ b/golang/content.md @@ -15,13 +15,13 @@ Go (a.k.a., Golang) is a programming language first developed at Google. It is a The most straightforward way to use this image is to use a Go container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project (assuming it uses `go.mod` for dependency management): ```dockerfile -FROM %%IMAGE%%:1.19 +FROM %%IMAGE%%:1.25 WORKDIR /usr/src/app # pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change COPY go.mod go.sum ./ -RUN go mod download && go mod verify +RUN go mod download COPY . . RUN go build -v -o /usr/local/bin/app ./... @@ -41,13 +41,13 @@ $ docker run -it --rm --name my-running-app my-golang-app There may be occasions where it is not appropriate to run your app inside a container. To compile, but not run your app inside the Docker instance, you can write something like: ```console -$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.25 go build -v ``` This will add your current directory as a volume to the container, set the working directory to the volume, and run the command `go build` which will tell go to compile the project in the working directory and output the executable to `myapp`. Alternatively, if you have a `Makefile`, you can run the `make` command inside your container. ```console -$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 make +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.25 make ``` ## Cross-compile your app inside the Docker container @@ -55,13 +55,13 @@ $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 make If you need to compile your application for a platform other than `linux/amd64` (such as `windows/386`): ```console -$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 %%IMAGE%%:1.19 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 %%IMAGE%%:1.25 go build -v ``` Alternatively, you can build for multiple platforms at once: ```console -$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 bash +$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.25 bash $ for GOOS in darwin linux; do > for GOARCH in 386 amd64; do > export GOOS GOARCH @@ -69,3 +69,7 @@ $ for GOOS in darwin linux; do > done > done ``` + +## Git LFS + +If downloading your dependencies results in an error like "checksum mismatch", you should check whether they are using [Git LFS](https://git-lfs.com/) (and thus need it installed for downloading them and calculating correct `go.sum` values). diff --git a/golang/metadata.json b/golang/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/golang/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/golang/variant-tip.md b/golang/variant-tip.md new file mode 100644 index 000000000000..7a06aa72b1ce --- /dev/null +++ b/golang/variant-tip.md @@ -0,0 +1,5 @@ +## `%%IMAGE%%:-tip` + +The term "tip" in the Go community is used to refer to the latest development branch ([a leftover convention from previously using `hg` for version control](https://github.com/golang/build/blob/6383021611af0e07cbf0a60222e066662557c796/cmd/coordinator/internal/legacydash/build.go#L313-L314)). + +These tags contains builds of Go's latest development branch, and they are updated on a ~weekly cadence. diff --git a/gradle/README-short.txt b/gradle/README-short.txt index 906defe3ade1..1326f0870772 100644 --- a/gradle/README-short.txt +++ b/gradle/README-short.txt @@ -1 +1 @@ -Gradle is a build tool with a focus on build automation and support for multi-language development. +Gradle is a fast, reliable, and flexible open-source build tool with an elegant, extensible DSL. \ No newline at end of file diff --git a/gradle/README.md b/gradle/README.md index 7704bd2261c2..9d12547d4bcd 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -17,40 +17,152 @@ WARNING: # Quick reference - **Maintained by**: - [Keegan Witt (of the Groovy Project)](https://github.com/keeganwitt/docker-gradle), [with the Gradle Project's approval](https://discuss.gradle.org/t/official-docker-images/21159/8) + [Gradle, Inc.](https://github.com/gradle/docker-gradle) - **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) + [Gradle Community Slack](https://gradle.org/slack-invite), [Gradle Community Forum](https://discuss.gradle.org), [Docker Community Slack](https://dockr.ly/comm-slack)⁠, [Server Fault](https://serverfault.com/help/on-topic)⁠, [Unix & Linux](https://unix.stackexchange.com/help/on-topic)⁠, [Stack Overflow⁠](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`7.6.0-jdk8`, `7.6-jdk8`, `7-jdk8`, `jdk8`, `7.6.0-jdk8-jammy`, `7.6-jdk8-jammy`, `7-jdk8-jammy`, `jdk8-jammy`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk8/Dockerfile) -- [`7.6.0-jdk8-focal`, `7.6-jdk8-focal`, `7-jdk8-focal`, `jdk8-focal`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk8-focal/Dockerfile) -- [`7.6.0-jdk11`, `7.6-jdk11`, `7-jdk11`, `jdk11`, `7.6.0-jdk11-jammy`, `7.6-jdk11-jammy`, `7-jdk11-jammy`, `jdk11-jammy`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk11/Dockerfile) -- [`7.6.0-jdk11-focal`, `7.6-jdk11-focal`, `7-jdk11-focal`, `jdk11-focal`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk11-focal/Dockerfile) -- [`7.6.0-jdk11-alpine`, `7.6-jdk11-alpine`, `7-jdk11-alpine`, `jdk11-alpine`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk11-alpine/Dockerfile) -- [`7.6.0-jdk17`, `7.6-jdk17`, `7-jdk17`, `jdk17`, `7.6.0-jdk`, `7.6-jdk`, `7-jdk`, `jdk`, `7.6.0`, `7.6`, `7`, `latest`, `7.6.0-jdk17-jammy`, `7.6-jdk17-jammy`, `7-jdk17-jammy`, `jdk17-jammy`, `7.6.0-jdk-jammy`, `7.6-jdk-jammy`, `7-jdk-jammy`, `jdk-jammy`, `7.6.0-jammy`, `7.6-jammy`, `7-jammy`, `jammy`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk17/Dockerfile) -- [`7.6.0-jdk17-focal`, `7.6-jdk17-focal`, `7-jdk17-focal`, `jdk17-focal`, `7.6.0-jdk-focal`, `7.6-jdk-focal`, `7-jdk-focal`, `jdk-focal`, `7.6.0-focal`, `7.6-focal`, `7-focal`, `focal`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk17-focal/Dockerfile) -- [`7.6.0-jdk17-alpine`, `7.6-jdk17-alpine`, `7-jdk17-alpine`, `jdk17-alpine`, `7.6.0-jdk-alpine`, `7.6-jdk-alpine`, `7-jdk-alpine`, `jdk-alpine`, `7.6.0-alpine`, `7.6-alpine`, `7-alpine`, `alpine`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk17-alpine/Dockerfile) -- [`7.6.0-jdk19`, `7.6-jdk19`, `7-jdk19`, `jdk19`, `7.6.0-jdk19-jammy`, `7.6-jdk19-jammy`, `7-jdk19-jammy`, `jdk19-jammy`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk19/Dockerfile) -- [`7.6.0-jdk19-focal`, `7.6-jdk19-focal`, `7-jdk19-focal`, `jdk19-focal`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk19-focal/Dockerfile) -- [`7.6.0-jdk19-alpine`, `7.6-jdk19-alpine`, `7-jdk19-alpine`, `jdk19-alpine`](https://github.com/keeganwitt/docker-gradle/blob/24b8697d05b77df7eaacdbb20b8f9cc023d659fc/jdk19-alpine/Dockerfile) -- [`6.9.3-jdk8`, `6.9-jdk8`, `6-jdk8`, `6.9.3-jdk8-jammy`, `6.9-jdk8-jammy`, `6-jdk8-jammy`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk8/Dockerfile) -- [`6.9.3-jdk8-focal`, `6.9-jdk8-focal`, `6-jdk8-focal`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk8-focal/Dockerfile) -- [`6.9.3-jdk11`, `6.9-jdk11`, `6-jdk11`, `6.9.3-jdk11-jammy`, `6.9-jdk11-jammy`, `6-jdk11-jammy`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk11/Dockerfile) -- [`6.9.3-jdk11-focal`, `6.9-jdk11-focal`, `6-jdk11-focal`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk11-focal/Dockerfile) -- [`6.9.3-jdk11-alpine`, `6.9-jdk11-alpine`, `6-jdk11-alpine`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk11-alpine/Dockerfile) -- [`6.9.3-jdk17`, `6.9-jdk17`, `6-jdk17`, `6.9.3-jdk`, `6.9-jdk`, `6-jdk`, `6.9.3`, `6.9`, `6`, `6.9.3-jdk17-jammy`, `6.9-jdk17-jammy`, `6-jdk17-jammy`, `6.9.3-jdk-jammy`, `6.9-jdk-jammy`, `6-jdk-jammy`, `6.9.3-jammy`, `6.9-jammy`, `6-jammy`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk17/Dockerfile) -- [`6.9.3-jdk17-focal`, `6.9-jdk17-focal`, `6-jdk17-focal`, `6.9.3-jdk-focal`, `6.9-jdk-focal`, `6-jdk-focal`, `6.9.3-focal`, `6.9-focal`, `6-focal`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk17-focal/Dockerfile) -- [`6.9.3-jdk17-alpine`, `6.9-jdk17-alpine`, `6-jdk17-alpine`, `6.9.3-jdk-alpine`, `6.9-jdk-alpine`, `6-jdk-alpine`, `6.9.3-alpine`, `6.9-alpine`, `6-alpine`](https://github.com/keeganwitt/docker-gradle/blob/3cf51c6d6c509c0df464a34856be4d1bc49fddf8/jdk17-alpine/Dockerfile) +- [`9.2.0-jdk25`, `9.2-jdk25`, `9-jdk25`, `jdk25`, `9.2.0-jdk25-noble`, `9.2-jdk25-noble`, `9-jdk25-noble`, `jdk25-noble`, `latest`, `9.2.0-jdk`, `9.2-jdk`, `9-jdk`, `jdk`, `9.2.0`, `9.2`, `9`, `9.2.0-jdk-noble`, `9.2-jdk-noble`, `9-jdk-noble`, `jdk-noble`, `9.2.0-noble`, `9.2-noble`, `9-noble`, `noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk25-noble/Dockerfile) + +- [`9.2.0-jdk25-alpine`, `9.2-jdk25-alpine`, `9-jdk25-alpine`, `jdk25-alpine`, `9.2.0-jdk-alpine`, `9.2-jdk-alpine`, `9-jdk-alpine`, `jdk-alpine`, `9.2.0-alpine`, `9.2-alpine`, `9-alpine`, `alpine`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk25-alpine/Dockerfile) + +- [`9.2.0-jdk25-corretto`, `9.2-jdk25-corretto`, `9-jdk25-corretto`, `jdk25-corretto`, `corretto`, `9.2.0-jdk25-corretto-al2023`, `9.2-jdk25-corretto-al2023`, `9-jdk25-corretto-al2023`, `jdk25-corretto-al2023`, `corretto-al2023`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk25-corretto/Dockerfile) + +- [`9.2.0-jdk25-ubi`, `9.2-jdk25-ubi`, `9-jdk25-ubi`, `jdk25-ubi`, `ubi`, `9.2.0-jdk25-ubi-minimal`, `9.2-jdk25-ubi-minimal`, `9-jdk25-ubi-minimal`, `jdk25-ubi-minimal`, `ubi-minimal`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk25-ubi10/Dockerfile) + +- [`9.2.0-jdk25-graal`, `9.2-jdk25-graal`, `9-jdk25-graal`, `jdk25-graal`, `9.2.0-jdk-graal`, `9.2-jdk-graal`, `9-jdk-graal`, `jdk-graal`, `9.2.0-graal`, `9.2-graal`, `9-graal`, `graal`, `9.2.0-jdk25-graal-noble`, `9.2-jdk25-graal-noble`, `9-jdk25-graal-noble`, `jdk25-graal-noble`, `9.2.0-jdk-graal-noble`, `9.2-jdk-graal-noble`, `9-jdk-graal-noble`, `jdk-graal-noble`, `9.2.0-graal-noble`, `9.2-graal-noble`, `9-graal-noble`, `graal-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk25-noble-graal/Dockerfile) + +- [`9.2.0-jdk21`, `9.2-jdk21`, `9-jdk21`, `jdk21`, `9.2.0-jdk21-noble`, `9.2-jdk21-noble`, `9-jdk21-noble`, `jdk21-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-noble/Dockerfile) + +- [`9.2.0-jdk21-jammy`, `9.2-jdk21-jammy`, `9-jdk21-jammy`, `jdk21-jammy`, `9.2.0-jdk-jammy`, `9.2-jdk-jammy`, `9-jdk-jammy`, `jdk-jammy`, `9.2.0-jammy`, `9.2-jammy`, `9-jammy`, `jammy`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-jammy/Dockerfile) + +- [`9.2.0-jdk21-alpine`, `9.2-jdk21-alpine`, `9-jdk21-alpine`, `jdk21-alpine`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-alpine/Dockerfile) + +- [`9.2.0-jdk21-corretto`, `9.2-jdk21-corretto`, `9-jdk21-corretto`, `jdk21-corretto`, `9.2.0-jdk21-corretto-al2023`, `9.2-jdk21-corretto-al2023`, `9-jdk21-corretto-al2023`, `jdk21-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-corretto/Dockerfile) + +- [`9.2.0-jdk21-ubi`, `9.2-jdk21-ubi`, `9-jdk21-ubi`, `jdk21-ubi`, `9.2.0-jdk21-ubi-minimal`, `9.2-jdk21-ubi-minimal`, `9-jdk21-ubi-minimal`, `jdk21-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-ubi9/Dockerfile) + +- [`9.2.0-jdk21-graal`, `9.2-jdk21-graal`, `9-jdk21-graal`, `jdk21-graal`, `9.2.0-jdk21-graal-noble`, `9.2-jdk21-graal-noble`, `9-jdk21-graal-noble`, `jdk21-graal-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-noble-graal/Dockerfile) + +- [`9.2.0-jdk21-graal-jammy`, `9.2-jdk21-graal-jammy`, `9-jdk21-graal-jammy`, `jdk21-graal-jammy`, `9.2.0-jdk-graal-jammy`, `9.2-jdk-graal-jammy`, `9-jdk-graal-jammy`, `jdk-graal-jammy`, `9.2.0-graal-jammy`, `9.2-graal-jammy`, `9-graal-jammy`, `graal-jammy`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk21-jammy-graal/Dockerfile) + +- [`9.2.0-jdk17`, `9.2-jdk17`, `9-jdk17`, `jdk17`, `9.2.0-jdk17-noble`, `9.2-jdk17-noble`, `9-jdk17-noble`, `jdk17-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-noble/Dockerfile) + +- [`9.2.0-jdk17-jammy`, `9.2-jdk17-jammy`, `9-jdk17-jammy`, `jdk17-jammy`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-jammy/Dockerfile) + +- [`9.2.0-jdk17-alpine`, `9.2-jdk17-alpine`, `9-jdk17-alpine`, `jdk17-alpine`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-alpine/Dockerfile) + +- [`9.2.0-jdk17-corretto`, `9.2-jdk17-corretto`, `9-jdk17-corretto`, `jdk17-corretto`, `9.2.0-jdk17-corretto-al2023`, `9.2-jdk17-corretto-al2023`, `9-jdk17-corretto-al2023`, `jdk17-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-corretto/Dockerfile) + +- [`9.2.0-jdk17-ubi`, `9.2-jdk17-ubi`, `9-jdk17-ubi`, `jdk17-ubi`, `9.2.0-jdk17-ubi-minimal`, `9.2-jdk17-ubi-minimal`, `9-jdk17-ubi-minimal`, `jdk17-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-ubi9/Dockerfile) + +- [`9.2.0-jdk17-graal`, `9.2-jdk17-graal`, `9-jdk17-graal`, `jdk17-graal`, `9.2.0-jdk17-graal-noble`, `9.2-jdk17-graal-noble`, `9-jdk17-graal-noble`, `jdk17-graal-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-noble-graal/Dockerfile) + +- [`9.2.0-jdk17-graal-jammy`, `9.2-jdk17-graal-jammy`, `9-jdk17-graal-jammy`, `jdk17-graal-jammy`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk17-jammy-graal/Dockerfile) + +- [`9.2.0-jdk-lts-and-current`, `9.2-jdk-lts-and-current`, `9-jdk-lts-and-current`, `jdk-lts-and-current`, `9.2.0-jdk-lts-and-current-noble`, `9.2-jdk-lts-and-current-noble`, `9-jdk-lts-and-current-noble`, `jdk-lts-and-current-noble`, `9.2.0-jdk-25-and-25`, `9.2-jdk-25-and-25`, `9-jdk-25-and-25`, `jdk-25-and-25`, `9.2.0-jdk-25-and-25-noble`, `9.2-jdk-25-and-25-noble`, `9-jdk-25-and-25-noble`, `jdk-25-and-25-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk-lts-and-current/Dockerfile) + +- [`9.2.0-jdk-lts-and-current-alpine`, `9.2-jdk-lts-and-current-alpine`, `9-jdk-lts-and-current-alpine`, `jdk-lts-and-current-alpine`, `9.2.0-jdk-25-and-25-alpine`, `9.2-jdk-25-and-25-alpine`, `9-jdk-25-and-25-alpine`, `jdk-25-and-25-alpine`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk-lts-and-current-alpine/Dockerfile) + +- [`9.2.0-jdk-lts-and-current-corretto`, `9.2-jdk-lts-and-current-corretto`, `9-jdk-lts-and-current-corretto`, `jdk-lts-and-current-corretto`, `9.2.0-jdk-lts-and-current-corretto-al2023`, `9.2-jdk-lts-and-current-corretto-al2023`, `9-jdk-lts-and-current-corretto-al2023`, `jdk-lts-and-current-corretto-al2023`, `9.2.0-jdk-25-and-25-corretto`, `9.2-jdk-25-and-25-corretto`, `9-jdk-25-and-25-corretto`, `jdk-25-and-25-corretto`, `9.2.0-jdk-25-and-25-corretto-al2023`, `9.2-jdk-25-and-25-corretto-al2023`, `9-jdk-25-and-25-corretto-al2023`, `jdk-25-and-25-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk-lts-and-current-corretto/Dockerfile) + +- [`9.2.0-jdk-lts-and-current-graal`, `9.2-jdk-lts-and-current-graal`, `9-jdk-lts-and-current-graal`, `jdk-lts-and-current-graal`, `9.2.0-jdk-lts-and-current-graal-noble`, `9.2-jdk-lts-and-current-graal-noble`, `9-jdk-lts-and-current-graal-noble`, `jdk-lts-and-current-graal-noble`, `9.2.0-jdk-25-and-25-graal`, `9.2-jdk-25-and-25-graal`, `9-jdk-25-and-25-graal`, `jdk-25-and-25-graal`, `9.2.0-jdk-25-and-25-graal-noble`, `9.2-jdk-25-and-25-graal-noble`, `9-jdk-25-and-25-graal-noble`, `jdk-25-and-25-graal-noble`](https://github.com/gradle/docker-gradle/blob/303e802cc2c5aa008b6ec225820c932bf2336d5f/jdk-lts-and-current-graal/Dockerfile) + +- [`8.14.3-jdk21`, `8.14-jdk21`, `8-jdk21`, `8.14.3-jdk21-noble`, `8.14-jdk21-noble`, `8-jdk21-noble`, `8.14.3-jdk`, `8.14-jdk`, `8-jdk`, `8.14.3`, `8.14`, `8`, `8.14.3-jdk-noble`, `8.14-jdk-noble`, `8-jdk-noble`, `8.14.3-noble`, `8.14-noble`, `8-noble`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-noble/Dockerfile) + +- [`8.14.3-jdk21-jammy`, `8.14-jdk21-jammy`, `8-jdk21-jammy`, `8.14.3-jdk-jammy`, `8.14-jdk-jammy`, `8-jdk-jammy`, `8.14.3-jammy`, `8.14-jammy`, `8-jammy`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-jammy/Dockerfile) + +- [`8.14.3-jdk21-alpine`, `8.14-jdk21-alpine`, `8-jdk21-alpine`, `8.14.3-jdk-alpine`, `8.14-jdk-alpine`, `8-jdk-alpine`, `8.14.3-alpine`, `8.14-alpine`, `8-alpine`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-alpine/Dockerfile) + +- [`8.14.3-jdk21-corretto`, `8.14-jdk21-corretto`, `8-jdk21-corretto`, `8.14.3-jdk21-corretto-al2023`, `8.14-jdk21-corretto-al2023`, `8-jdk21-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-corretto/Dockerfile) + +- [`8.14.3-jdk21-ubi`, `8.14-jdk21-ubi`, `8-jdk21-ubi`, `8.14.3-jdk21-ubi-minimal`, `8.14-jdk21-ubi-minimal`, `8-jdk21-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-ubi9/Dockerfile) + +- [`8.14.3-jdk21-graal`, `8.14-jdk21-graal`, `8-jdk21-graal`, `8.14.3-jdk-graal`, `8.14-jdk-graal`, `8-jdk-graal`, `8.14.3-graal`, `8.14-graal`, `8-graal`, `8.14.3-jdk21-graal-noble`, `8.14-jdk21-graal-noble`, `8-jdk21-graal-noble`, `8.14.3-jdk-graal-noble`, `8.14-jdk-graal-noble`, `8-jdk-graal-noble`, `8.14.3-graal-noble`, `8.14-graal-noble`, `8-graal-noble`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-noble-graal/Dockerfile) + +- [`8.14.3-jdk21-graal-jammy`, `8.14-jdk21-graal-jammy`, `8-jdk21-graal-jammy`, `8.14.3-jdk-graal-jammy`, `8.14-jdk-graal-jammy`, `8-jdk-graal-jammy`, `8.14.3-graal-jammy`, `8.14-graal-jammy`, `8-graal-jammy`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk21-jammy-graal/Dockerfile) + +- [`8.14.3-jdk17`, `8.14-jdk17`, `8-jdk17`, `8.14.3-jdk17-noble`, `8.14-jdk17-noble`, `8-jdk17-noble`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-noble/Dockerfile) + +- [`8.14.3-jdk17-jammy`, `8.14-jdk17-jammy`, `8-jdk17-jammy`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-jammy/Dockerfile) + +- [`8.14.3-jdk17-alpine`, `8.14-jdk17-alpine`, `8-jdk17-alpine`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-alpine/Dockerfile) + +- [`8.14.3-jdk17-corretto`, `8.14-jdk17-corretto`, `8-jdk17-corretto`, `8.14.3-jdk17-corretto-al2023`, `8.14-jdk17-corretto-al2023`, `8-jdk17-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-corretto/Dockerfile) + +- [`8.14.3-jdk17-ubi`, `8.14-jdk17-ubi`, `8-jdk17-ubi`, `8.14.3-jdk17-ubi-minimal`, `8.14-jdk17-ubi-minimal`, `8-jdk17-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-ubi9/Dockerfile) + +- [`8.14.3-jdk17-graal`, `8.14-jdk17-graal`, `8-jdk17-graal`, `8.14.3-jdk17-graal-noble`, `8.14-jdk17-graal-noble`, `8-jdk17-graal-noble`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-noble-graal/Dockerfile) + +- [`8.14.3-jdk17-graal-jammy`, `8.14-jdk17-graal-jammy`, `8-jdk17-graal-jammy`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk17-jammy-graal/Dockerfile) + +- [`8.14.3-jdk11`, `8.14-jdk11`, `8-jdk11`, `jdk11`, `8.14.3-jdk11-jammy`, `8.14-jdk11-jammy`, `8-jdk11-jammy`, `jdk11-jammy`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk11-jammy/Dockerfile) + +- [`8.14.3-jdk11-alpine`, `8.14-jdk11-alpine`, `8-jdk11-alpine`, `jdk11-alpine`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk11-alpine/Dockerfile) + +- [`8.14.3-jdk11-corretto`, `8.14-jdk11-corretto`, `8-jdk11-corretto`, `jdk11-corretto`, `8.14.3-jdk11-corretto-al2023`, `8.14-jdk11-corretto-al2023`, `8-jdk11-corretto-al2023`, `jdk11-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk11-corretto/Dockerfile) + +- [`8.14.3-jdk11-ubi`, `8.14-jdk11-ubi`, `8-jdk11-ubi`, `jdk11-ubi`, `8.14.3-jdk11-ubi-minimal`, `8.14-jdk11-ubi-minimal`, `8-jdk11-ubi-minimal`, `jdk11-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk11-ubi9/Dockerfile) + +- [`8.14.3-jdk8`, `8.14-jdk8`, `8-jdk8`, `jdk8`, `8.14.3-jdk8-jammy`, `8.14-jdk8-jammy`, `8-jdk8-jammy`, `jdk8-jammy`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk8-jammy/Dockerfile) + +- [`8.14.3-jdk8-corretto`, `8.14-jdk8-corretto`, `8-jdk8-corretto`, `jdk8-corretto`, `8.14.3-jdk8-corretto-al2023`, `8.14-jdk8-corretto-al2023`, `8-jdk8-corretto-al2023`, `jdk8-corretto-al2023`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk8-corretto/Dockerfile) + +- [`8.14.3-jdk8-ubi`, `8.14-jdk8-ubi`, `8-jdk8-ubi`, `jdk8-ubi`, `8.14.3-jdk8-ubi-minimal`, `8.14-jdk8-ubi-minimal`, `8-jdk8-ubi-minimal`, `jdk8-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk8-ubi9/Dockerfile) + +- [`8.14.3-jdk24-graal`, `8.14-jdk24-graal`, `8-jdk24-graal`, `jdk24-graal`, `8.14.3-jdk24-graal-noble`, `8.14-jdk24-graal-noble`, `8-jdk24-graal-noble`](https://github.com/gradle/docker-gradle/blob/fba2d36b492eab91f3eb95610354df7b8d12d46f/jdk24-noble-graal/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-noble/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-jammy/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-alpine/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-corretto/Dockerfile) + +- [`7.6.6-jdk17-ubi`, `7.6-jdk17-ubi`, `7-jdk17-ubi`, `7.6.6-jdk17-ubi-minimal`, `7.6-jdk17-ubi-minimal`, `7-jdk17-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-ubi9/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-noble-graal/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk17-jammy-graal/Dockerfile) + +- [`7.6.6-jdk11`, `7.6-jdk11`, `7-jdk11`, `7.6.6-jdk11-jammy`, `7.6-jdk11-jammy`, `7-jdk11-jammy`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk11-jammy/Dockerfile) + +- [`7.6.6-jdk11-alpine`, `7.6-jdk11-alpine`, `7-jdk11-alpine`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk11-alpine/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk11-corretto/Dockerfile) + +- [`7.6.6-jdk11-ubi`, `7.6-jdk11-ubi`, `7-jdk11-ubi`, `7.6.6-jdk11-ubi-minimal`, `7.6-jdk11-ubi-minimal`, `7-jdk11-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk11-ubi9/Dockerfile) + +- [`7.6.6-jdk8`, `7.6-jdk8`, `7-jdk8`, `7.6.6-jdk8-jammy`, `7.6-jdk8-jammy`, `7-jdk8-jammy`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk8-jammy/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk8-corretto/Dockerfile) + +- [`7.6.6-jdk8-ubi`, `7.6-jdk8-ubi`, `7-jdk8-ubi`, `7.6.6-jdk8-ubi-minimal`, `7.6-jdk8-ubi-minimal`, `7-jdk8-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/692045c708bc589ff8fa26fb083bdf1b23c0f8a5/jdk8-ubi9/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk11-jammy/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk11-alpine/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk11-corretto/Dockerfile) + +- [`6.9.4-jdk11-ubi`, `6.9-jdk11-ubi`, `6-jdk11-ubi`, `6.9.4-jdk11-ubi-minimal`, `6.9-jdk11-ubi-minimal`, `6-jdk11-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk11-ubi9/Dockerfile) + +- [`6.9.4-jdk8`, `6.9-jdk8`, `6-jdk8`, `6.9.4-jdk8-jammy`, `6.9-jdk8-jammy`, `6-jdk8-jammy`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk8-jammy/Dockerfile) + +- [`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`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk8-corretto/Dockerfile) + +- [`6.9.4-jdk8-ubi`, `6.9-jdk8-ubi`, `6-jdk8-ubi`, `6.9.4-jdk8-ubi-minimal`, `6.9-jdk8-ubi-minimal`, `6-jdk8-ubi-minimal`](https://github.com/gradle/docker-gradle/blob/89adc634c8c98e9c132935942ed75ffce1d862f1/jdk8-ubi9/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/keeganwitt/docker-gradle/issues](https://github.com/keeganwitt/docker-gradle/issues) + [https://github.com/gradle/docker-gradle/issues](https://github.com/gradle/docker-gradle/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/gradle/), [`arm32v7`](https://hub.docker.com/r/arm32v7/gradle/), [`arm64v8`](https://hub.docker.com/r/arm64v8/gradle/), [`ppc64le`](https://hub.docker.com/r/ppc64le/gradle/), [`s390x`](https://hub.docker.com/r/s390x/gradle/) + [`amd64`](https://hub.docker.com/r/amd64/gradle/), [`arm32v7`](https://hub.docker.com/r/arm32v7/gradle/), [`arm64v8`](https://hub.docker.com/r/arm64v8/gradle/), [`ppc64le`](https://hub.docker.com/r/ppc64le/gradle/), [`riscv64`](https://hub.docker.com/r/riscv64/gradle/), [`s390x`](https://hub.docker.com/r/s390x/gradle/) - **Published image artifact details**: [repo-info repo's `repos/gradle/` directory](https://github.com/docker-library/repo-info/blob/master/repos/gradle) ([history](https://github.com/docker-library/repo-info/commits/master/repos/gradle)) @@ -65,21 +177,24 @@ WARNING: # What is Gradle? -[Gradle](https://gradle.org/) is a build tool with a focus on build automation and support for multi-language development. If you are building, testing, publishing, and deploying software on any platform, Gradle offers a flexible model that can support the entire development lifecycle from compiling and packaging code to publishing web sites. Gradle has been designed to support build automation across multiple languages and platforms including Java, Scala, Android, C/C++, and Groovy, and is closely integrated with development tools and continuous integration servers including Eclipse, IntelliJ, and Jenkins. +[Gradle](https://gradle.org/) is a fast, dependable, and adaptable open-source build automation tool with an elegant and extensible declarative build language. -![logo](https://raw.githubusercontent.com/docker-library/docs/c3d3ca6beed000f9ba6eabc98f3399158f520256/gradle/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/dec360b0c9d570427d22f98a0d7c30969b62af6f/gradle/logo.png) # How to use this image -## Building a Gradle project - -Run this from the directory of the Gradle project you want to build. +## Run a Gradle task -`docker run --rm -u gradle -v "$PWD":/home/gradle/project -w /home/gradle/project gradle gradle ` +From your project directory: -Note the above command runs using uid/gid 1000 (user *gradle*) to avoid running as root. +```bash +docker run --rm -u gradle \ + -v "$PWD":/home/gradle/project \ + -w /home/gradle/project \ + gradle gradle +``` -If you are mounting a volume and the uid/gid running Docker is not *1000*, you should run as user *root* (`-u root`). *root* is also the default, so you can also simply not specify a user. +Replace `` with your desired Gradle task, e.g., `build`. # Image Variants @@ -89,7 +204,7 @@ The `gradle` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like focal or jammy in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `gradle:-alpine` diff --git a/gradle/content.md b/gradle/content.md index 61fd065d2246..9438d5e1448f 100644 --- a/gradle/content.md +++ b/gradle/content.md @@ -1,17 +1,20 @@ # What is Gradle? -[Gradle](https://gradle.org/) is a build tool with a focus on build automation and support for multi-language development. If you are building, testing, publishing, and deploying software on any platform, Gradle offers a flexible model that can support the entire development lifecycle from compiling and packaging code to publishing web sites. Gradle has been designed to support build automation across multiple languages and platforms including Java, Scala, Android, C/C++, and Groovy, and is closely integrated with development tools and continuous integration servers including Eclipse, IntelliJ, and Jenkins. +[Gradle](https://gradle.org/) is a fast, dependable, and adaptable open-source build automation tool with an elegant and extensible declarative build language. %%LOGO%% # How to use this image -## Building a Gradle project +## Run a Gradle task -Run this from the directory of the Gradle project you want to build. +From your project directory: -`docker run --rm -u gradle -v "$PWD":/home/gradle/project -w /home/gradle/project %%IMAGE%% gradle ` +```bash +docker run --rm -u gradle \ + -v "$PWD":/home/gradle/project \ + -w /home/gradle/project \ + %%IMAGE%% gradle +``` -Note the above command runs using uid/gid 1000 (user *gradle*) to avoid running as root. - -If you are mounting a volume and the uid/gid running Docker is not *1000*, you should run as user *root* (`-u root`). *root* is also the default, so you can also simply not specify a user. +Replace `` with your desired Gradle task, e.g., `build`. diff --git a/gradle/get-help.md b/gradle/get-help.md new file mode 100644 index 000000000000..dc338894215d --- /dev/null +++ b/gradle/get-help.md @@ -0,0 +1 @@ +[Gradle Community Slack](https://gradle.org/slack-invite), [Gradle Community Forum](https://discuss.gradle.org), [Docker Community Slack](https://dockr.ly/comm-slack)⁠, [Server Fault](https://serverfault.com/help/on-topic)⁠, [Unix & Linux](https://unix.stackexchange.com/help/on-topic)⁠, [Stack Overflow⁠](https://stackoverflow.com/help/on-topic) diff --git a/gradle/github-repo b/gradle/github-repo index 784f386f7951..a7f853f1b379 100644 --- a/gradle/github-repo +++ b/gradle/github-repo @@ -1 +1 @@ -https://github.com/keeganwitt/docker-gradle +https://github.com/gradle/docker-gradle diff --git a/gradle/logo.png b/gradle/logo.png index 447fda8cf6f9..ce4fa0e7e73a 100644 Binary files a/gradle/logo.png and b/gradle/logo.png differ diff --git a/gradle/maintainer.md b/gradle/maintainer.md index f53574265422..078f1bd5a904 100644 --- a/gradle/maintainer.md +++ b/gradle/maintainer.md @@ -1 +1 @@ -[Keegan Witt (of the Groovy Project)](%%GITHUB-REPO%%), [with the Gradle Project's approval](https://discuss.gradle.org/t/official-docker-images/21159/8) +[Gradle, Inc.](%%GITHUB-REPO%%) diff --git a/gradle/metadata.json b/gradle/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/gradle/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/groovy/README.md b/groovy/README.md index d77c96b418e6..2bbb39a75fc6 100644 --- a/groovy/README.md +++ b/groovy/README.md @@ -24,24 +24,27 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.0.14-jdk8`, `3.0-jdk8`, `jdk8`, `3.0.14-jdk8-jammy`, `3.0-jdk8-jammy`, `jdk8-jammy`](https://github.com/groovy/docker-groovy/blob/bc4c3ee2a4e26f14458b121f238bb862c9de6b27/jdk8/Dockerfile) -- [`3.0.14-jdk11`, `3.0-jdk11`, `jdk11`, `3.0.14-jdk11-jammy`, `3.0-jdk11-jammy`, `jdk11-jammy`](https://github.com/groovy/docker-groovy/blob/bc4c3ee2a4e26f14458b121f238bb862c9de6b27/jdk11/Dockerfile) -- [`3.0.14-jdk11-alpine`, `3.0-jdk11-alpine`, `jdk11-alpine`](https://github.com/groovy/docker-groovy/blob/bc4c3ee2a4e26f14458b121f238bb862c9de6b27/jdk11-alpine/Dockerfile) -- [`3.0.14-jdk17`, `3.0-jdk17`, `jdk17`, `3.0.14-jdk`, `3.0-jdk`, `3.0.14`, `3.0`, `3`, `jdk`, `latest`, `3.0.14-jdk17-jammy`, `3.0-jdk17-jammy`, `jdk17-jammy`, `3.0.14-jdk-jammy`, `3.0-jdk-jammy`, `3.0.14-jammy`, `3.0-jammy`, `3-jammy`, `jdk-jammy`, `jammy`](https://github.com/groovy/docker-groovy/blob/bc4c3ee2a4e26f14458b121f238bb862c9de6b27/jdk17/Dockerfile) -- [`3.0.14-jdk17-alpine`, `3.0-jdk17-alpine`, `jdk17-alpine`, `3.0.14-jdk-alpine`, `3.0-jdk-alpine`, `3.0.14-alpine`, `3.0-alpine`, `3-alpine`, `jdk-alpine`, `alpine`](https://github.com/groovy/docker-groovy/blob/bc4c3ee2a4e26f14458b121f238bb862c9de6b27/jdk17-alpine/Dockerfile) -- [`4.0.7-jdk8`, `4.0-jdk8`, `4.0.7-jdk8-jammy`, `4.0-jdk8-jammy`](https://github.com/groovy/docker-groovy/blob/085e0eb9a0611dd84c16efdcad26f352157d6f79/jdk8/Dockerfile) -- [`4.0.7-jdk11`, `4.0-jdk11`, `4.0.7-jdk11-jammy`, `4.0-jdk11-jammy`](https://github.com/groovy/docker-groovy/blob/085e0eb9a0611dd84c16efdcad26f352157d6f79/jdk11/Dockerfile) -- [`4.0.7-jdk11-alpine`, `4.0-jdk11-alpine`](https://github.com/groovy/docker-groovy/blob/085e0eb9a0611dd84c16efdcad26f352157d6f79/jdk11-alpine/Dockerfile) -- [`4.0.7-jdk17`, `4.0-jdk17`, `4.0.7-jdk`, `4.0.7`, `4.0`, `4`, `4.0.7-jdk17-jammy`, `4.0-jdk17-jammy`, `4.0.7-jdk-jammy`, `4.0.7-jammy`, `4.0-jammy`, `4-jammy`](https://github.com/groovy/docker-groovy/blob/085e0eb9a0611dd84c16efdcad26f352157d6f79/jdk17/Dockerfile) -- [`4.0.7-jdk17-alpine`, `4.0-jdk17-alpine`, `4.0.7-jdk-alpine`, `4.0.7-alpine`, `4.0-alpine`, `4-alpine`](https://github.com/groovy/docker-groovy/blob/085e0eb9a0611dd84c16efdcad26f352157d6f79/jdk17-alpine/Dockerfile) +- [`4.0.27-jdk21`, `4.0-jdk21`, `4-jdk21`, `jdk21`, `4.0.27-jdk21-noble`, `4.0-jdk21-noble`, `4-jdk21-noble`, `jdk21-noble`, `latest`, `4.0.27-jdk`, `4.0-jdk`, `4-jdk`, `jdk`, `4.0.27`, `4.0`, `4`, `4.0.27-jdk-noble`, `4.0-jdk-noble`, `4-jdk-noble`, `jdk-noble`, `4.0.27-noble`, `4.0-noble`, `4-noble`, `noble`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk21/Dockerfile) + +- [`4.0.27-jdk21-alpine`, `4.0-jdk21-alpine`, `4-jdk21-alpine`, `jdk21-alpine`, `4.0.27-jdk-alpine`, `4.0-jdk-alpine`, `4-jdk-alpine`, `jdk-alpine`, `4.0.27-alpine`, `4.0-alpine`, `4-alpine`, `alpine`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk21-alpine/Dockerfile) + +- [`4.0.27-jdk17`, `4.0-jdk17`, `4-jdk17`, `jdk17`, `4.0.27-jdk17-noble`, `4.0-jdk17-noble`, `4-jdk17-noble`, `jdk17-noble`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk17/Dockerfile) + +- [`4.0.27-jdk17-alpine`, `4.0-jdk17-alpine`, `4-jdk17-alpine`, `jdk17-alpine`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk17-alpine/Dockerfile) + +- [`4.0.27-jdk11`, `4.0-jdk11`, `4-jdk11`, `jdk11`, `4.0.27-jdk11-jammy`, `4.0-jdk11-jammy`, `4-jdk11-jammy`, `jdk11-jammy`, `4.0.27-jdk-jammy`, `4.0-jdk-jammy`, `4-jdk-jammy`, `jdk-jammy`, `4.0.27-jammy`, `4.0-jammy`, `4-jammy`, `jammy`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk11/Dockerfile) + +- [`4.0.27-jdk11-alpine`, `4.0-jdk11-alpine`, `4-jdk11-alpine`, `jdk11-alpine`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk11-alpine/Dockerfile) + +- [`4.0.27-jdk8`, `4.0-jdk8`, `4-jdk8`, `jdk8`, `4.0.27-jdk8-jammy`, `4.0-jdk8-jammy`, `4-jdk8-jammy`, `jdk8-jammy`](https://github.com/groovy/docker-groovy/blob/5a3c63b31c157987812e0b7d7d510cf83490e259/jdk8/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/groovy/docker-groovy/issues](https://github.com/groovy/docker-groovy/issues) + [https://github.com/groovy/docker-groovy/issues](https://github.com/groovy/docker-groovy/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/groovy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/groovy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/groovy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/groovy/), [`s390x`](https://hub.docker.com/r/s390x/groovy/) + [`amd64`](https://hub.docker.com/r/amd64/groovy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/groovy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/groovy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/groovy/), [`riscv64`](https://hub.docker.com/r/riscv64/groovy/), [`s390x`](https://hub.docker.com/r/s390x/groovy/) - **Published image artifact details**: [repo-info repo's `repos/groovy/` directory](https://github.com/docker-library/repo-info/blob/master/repos/groovy) ([history](https://github.com/docker-library/repo-info/commits/master/repos/groovy)) @@ -89,7 +92,7 @@ The `groovy` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like jammy in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `groovy:-alpine` diff --git a/groovy/metadata.json b/groovy/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/groovy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/haproxy/README.md b/haproxy/README.md index bbbc263407da..bdda02b5ee30 100644 --- a/haproxy/README.md +++ b/haproxy/README.md @@ -24,28 +24,41 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.8-dev1`, `2.8-dev`, `2.8-dev1-bullseye`, `2.8-dev-bullseye`](https://github.com/docker-library/haproxy/blob/817555017600e0dac39d93a75ef920adac450958/2.8/Dockerfile) -- [`2.8-dev1-alpine`, `2.8-dev-alpine`, `2.8-dev1-alpine3.17`, `2.8-dev-alpine3.17`](https://github.com/docker-library/haproxy/blob/817555017600e0dac39d93a75ef920adac450958/2.8/alpine/Dockerfile) -- [`2.7.1`, `2.7`, `latest`, `2.7.1-bullseye`, `2.7-bullseye`, `bullseye`](https://github.com/docker-library/haproxy/blob/eccea371bf2c3d5744a8ad1b2f5861825161052f/2.7/Dockerfile) -- [`2.7.1-alpine`, `2.7-alpine`, `alpine`, `2.7.1-alpine3.17`, `2.7-alpine3.17`, `alpine3.17`](https://github.com/docker-library/haproxy/blob/eccea371bf2c3d5744a8ad1b2f5861825161052f/2.7/alpine/Dockerfile) -- [`2.6.7`, `2.6`, `lts`, `2.6.7-bullseye`, `2.6-bullseye`, `lts-bullseye`](https://github.com/docker-library/haproxy/blob/9ae13c91cf82c4042360a0363b4d3fa190a51341/2.6/Dockerfile) -- [`2.6.7-alpine`, `2.6-alpine`, `lts-alpine`, `2.6.7-alpine3.17`, `2.6-alpine3.17`, `lts-alpine3.17`](https://github.com/docker-library/haproxy/blob/9ae13c91cf82c4042360a0363b4d3fa190a51341/2.6/alpine/Dockerfile) -- [`2.5.10`, `2.5`, `2.5.10-bullseye`, `2.5-bullseye`](https://github.com/docker-library/haproxy/blob/541751988360a0ee55b6bee53c2d41acafaee35d/2.5/Dockerfile) -- [`2.5.10-alpine`, `2.5-alpine`, `2.5.10-alpine3.17`, `2.5-alpine3.17`](https://github.com/docker-library/haproxy/blob/541751988360a0ee55b6bee53c2d41acafaee35d/2.5/alpine/Dockerfile) -- [`2.4.20`, `2.4`, `2.4.20-bullseye`, `2.4-bullseye`](https://github.com/docker-library/haproxy/blob/6a15b45320ff96bb7548248596ac0ee3d38d8fab/2.4/Dockerfile) -- [`2.4.20-alpine`, `2.4-alpine`, `2.4.20-alpine3.17`, `2.4-alpine3.17`](https://github.com/docker-library/haproxy/blob/6a15b45320ff96bb7548248596ac0ee3d38d8fab/2.4/alpine/Dockerfile) -- [`2.2.26`, `2.2`, `2.2.26-bullseye`, `2.2-bullseye`](https://github.com/docker-library/haproxy/blob/509852454b03fd3aeaad66d46b5f6655275646bb/2.2/Dockerfile) -- [`2.2.26-alpine`, `2.2-alpine`, `2.2.26-alpine3.17`, `2.2-alpine3.17`](https://github.com/docker-library/haproxy/blob/509852454b03fd3aeaad66d46b5f6655275646bb/2.2/alpine/Dockerfile) -- [`2.0.30`, `2.0`, `2.0.30-buster`, `2.0-buster`](https://github.com/docker-library/haproxy/blob/c845b04087b9d388d60f3158670c37c31e7e6fbb/2.0/Dockerfile) -- [`2.0.30-alpine`, `2.0-alpine`, `2.0.30-alpine3.16`, `2.0-alpine3.16`](https://github.com/docker-library/haproxy/blob/c845b04087b9d388d60f3158670c37c31e7e6fbb/2.0/alpine/Dockerfile) +- [`3.3-dev12`, `3.3-dev`, `3.3-dev12-trixie`, `3.3-dev-trixie`](https://github.com/docker-library/haproxy/blob/9728348c87cd7a64e12d34b07a4d34eeb5d0a299/3.3/Dockerfile) + +- [`3.3-dev12-alpine`, `3.3-dev-alpine`, `3.3-dev12-alpine3.22`, `3.3-dev-alpine3.22`](https://github.com/docker-library/haproxy/blob/9728348c87cd7a64e12d34b07a4d34eeb5d0a299/3.3/alpine/Dockerfile) + +- [`3.2.8`, `3.2`, `latest`, `lts`, `3.2.8-trixie`, `3.2-trixie`, `trixie`, `lts-trixie`](https://github.com/docker-library/haproxy/blob/4fd3078f4197405d08018930e1e0f386d7399be1/3.2/Dockerfile) + +- [`3.2.8-alpine`, `3.2-alpine`, `alpine`, `lts-alpine`, `3.2.8-alpine3.22`, `3.2-alpine3.22`, `alpine3.22`, `lts-alpine3.22`](https://github.com/docker-library/haproxy/blob/4fd3078f4197405d08018930e1e0f386d7399be1/3.2/alpine/Dockerfile) + +- [`3.1.10`, `3.1`, `3.1.10-trixie`, `3.1-trixie`](https://github.com/docker-library/haproxy/blob/b1e0ccb02df9fc432364fe391f9b094c1bc8688c/3.1/Dockerfile) + +- [`3.1.10-alpine`, `3.1-alpine`, `3.1.10-alpine3.22`, `3.1-alpine3.22`](https://github.com/docker-library/haproxy/blob/b1e0ccb02df9fc432364fe391f9b094c1bc8688c/3.1/alpine/Dockerfile) + +- [`3.0.12`, `3.0`, `3.0.12-trixie`, `3.0-trixie`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/3.0/Dockerfile) + +- [`3.0.12-alpine`, `3.0-alpine`, `3.0.12-alpine3.22`, `3.0-alpine3.22`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/3.0/alpine/Dockerfile) + +- [`2.8.16`, `2.8`, `2.8.16-trixie`, `2.8-trixie`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/2.8/Dockerfile) + +- [`2.8.16-alpine`, `2.8-alpine`, `2.8.16-alpine3.22`, `2.8-alpine3.22`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/2.8/alpine/Dockerfile) + +- [`2.6.23`, `2.6`, `2.6.23-trixie`, `2.6-trixie`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/2.6/Dockerfile) + +- [`2.6.23-alpine`, `2.6-alpine`, `2.6.23-alpine3.22`, `2.6-alpine3.22`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/2.6/alpine/Dockerfile) + +- [`2.4.30`, `2.4`, `2.4.30-trixie`, `2.4-trixie`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/2.4/Dockerfile) + +- [`2.4.30-alpine`, `2.4-alpine`, `2.4.30-alpine3.22`, `2.4-alpine3.22`](https://github.com/docker-library/haproxy/blob/3fc33290bfe9f17d101aa25f22fac86f4a71e571/2.4/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/haproxy/issues](https://github.com/docker-library/haproxy/issues) + [https://github.com/docker-library/haproxy/issues](https://github.com/docker-library/haproxy/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/haproxy/), [`arm32v5`](https://hub.docker.com/r/arm32v5/haproxy/), [`arm32v6`](https://hub.docker.com/r/arm32v6/haproxy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/haproxy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/haproxy/), [`i386`](https://hub.docker.com/r/i386/haproxy/), [`mips64le`](https://hub.docker.com/r/mips64le/haproxy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/haproxy/), [`s390x`](https://hub.docker.com/r/s390x/haproxy/) + [`amd64`](https://hub.docker.com/r/amd64/haproxy/), [`arm32v5`](https://hub.docker.com/r/arm32v5/haproxy/), [`arm32v6`](https://hub.docker.com/r/arm32v6/haproxy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/haproxy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/haproxy/), [`i386`](https://hub.docker.com/r/i386/haproxy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/haproxy/), [`riscv64`](https://hub.docker.com/r/riscv64/haproxy/), [`s390x`](https://hub.docker.com/r/s390x/haproxy/) - **Published image artifact details**: [repo-info repo's `repos/haproxy/` directory](https://github.com/docker-library/repo-info/blob/master/repos/haproxy) ([history](https://github.com/docker-library/repo-info/commits/master/repos/haproxy)) @@ -129,7 +142,7 @@ The `haproxy` images come in many flavors, each designed for a specific use case This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `haproxy:-alpine` diff --git a/haproxy/metadata.json b/haproxy/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/haproxy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/haskell/README.md b/haskell/README.md index fc1ccc553df3..81ad3391e24f 100644 --- a/haskell/README.md +++ b/haskell/README.md @@ -24,17 +24,30 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`9.4.4-buster`, `9.4-buster`, `9-buster`, `buster`, `9.4.4`, `9.4`, `9`, `latest`](https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.4/buster/Dockerfile) -- [`9.4.4-slim-buster`, `9.4-slim-buster`, `9-slim-buster`, `slim-buster`, `9.4.4-slim`, `9.4-slim`, `9-slim`, `slim`](https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.4/slim-buster/Dockerfile) -- [`9.2.5-buster`, `9.2-buster`, `9.2.5`, `9.2`](https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.2/buster/Dockerfile) -- [`9.2.5-slim-buster`, `9.2-slim-buster`, `9.2.5-slim`, `9.2-slim`](https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.2/slim-buster/Dockerfile) -- [`9.0.2-buster`, `9.0-buster`, `9.0.2`, `9.0`](https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.0/buster/Dockerfile) -- [`9.0.2-slim-buster`, `9.0-slim-buster`, `9.0.2-slim`, `9.0-slim`](https://github.com/haskell/docker-haskell/blob/12cd297d7ccc2e97fe5e94548ae502b0cbb6735f/9.0/slim-buster/Dockerfile) +- [`9.12.2-bookworm`, `9.12-bookworm`, `9-bookworm`, `bookworm`, `9.12.2`, `9.12`, `9`, `latest`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.12/bookworm/Dockerfile) + +- [`9.12.2-slim-bookworm`, `9.12-slim-bookworm`, `9-slim-bookworm`, `slim-bookworm`, `9-slim`, `slim`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.12/slim-bookworm/Dockerfile) + +- [`9.10.3-bookworm`, `9.10-bookworm`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.10/bookworm/Dockerfile) + +- [`9.10.3-slim-bookworm`, `9.10-slim-bookworm`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.10/slim-bookworm/Dockerfile) + +- [`9.10.3-bullseye`, `9.10-bullseye`, `9-bullseye`, `bullseye`, `9.10.3`, `9.10`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.10/bullseye/Dockerfile) + +- [`9.10.3-slim-bullseye`, `9.10-slim-bullseye`, `9-slim-bullseye`, `slim-bullseye`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.10/slim-bullseye/Dockerfile) + +- [`9.8.4-bullseye`, `9.8-bullseye`, `9.8.4`, `9.8`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.8/bullseye/Dockerfile) + +- [`9.8.4-slim-bullseye`, `9.8-slim-bullseye`, `9.8.4-slim`, `9.8-slim`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.8/slim-bullseye/Dockerfile) + +- [`9.6.7-bullseye`, `9.6-bullseye`, `9.6.7`, `9.6`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.6/bullseye/Dockerfile) + +- [`9.6.7-slim-bullseye`, `9.6-slim-bullseye`, `9.6.7-slim`, `9.6-slim`](https://github.com/haskell/docker-haskell/blob/d478ceb8ff33f6208db87008e48cd084fd9747a1/9.6/slim-bullseye/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/haskell/docker-haskell/issues](https://github.com/haskell/docker-haskell/issues) + [https://github.com/haskell/docker-haskell/issues](https://github.com/haskell/docker-haskell/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/haskell/), [`arm64v8`](https://hub.docker.com/r/arm64v8/haskell/) @@ -166,9 +179,7 @@ The `haskell` images come in many flavors, each designed for a specific use case This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. - -This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. +Some of these tags may have names like bookworm or bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `haskell:-slim` diff --git a/haskell/metadata.json b/haskell/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/haskell/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/haxe/README.md b/haxe/README.md index 05fe28e5106d..690c1f39bddd 100644 --- a/haxe/README.md +++ b/haxe/README.md @@ -28,94 +28,131 @@ WARNING: ## Simple Tags -- [`4.2.5-bullseye`, `4.2-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/83789c10dc601064a234fd559206d1ec252228d7/4.2/bullseye/Dockerfile) -- [`4.2.5-buster`, `4.2-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/83789c10dc601064a234fd559206d1ec252228d7/4.2/buster/Dockerfile) +- [`4.3.7-bookworm`, `4.3-bookworm`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/bookworm/Dockerfile) + +- [`4.3.7-bullseye`, `4.3-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/bullseye/Dockerfile) + +- [`4.3.7-windowsservercore-ltsc2025`, `4.3-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.3/windowsservercore-ltsc2025/Dockerfile) + +- [`4.3.7-windowsservercore-ltsc2022`, `4.3-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/windowsservercore-ltsc2022/Dockerfile) + +- [`4.3.7-alpine3.22`, `4.3-alpine3.22`, `4.3.7-alpine`, `4.3-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/29c1c10f60a3d5d96c92c23ed8d07f5393c962b5/4.3/alpine3.22/Dockerfile) + +- [`4.3.7-alpine3.21`, `4.3-alpine3.21`](https://github.com/HaxeFoundation/docker-library-haxe/blob/29c1c10f60a3d5d96c92c23ed8d07f5393c962b5/4.3/alpine3.21/Dockerfile) + +- [`4.3.7-alpine3.20`, `4.3-alpine3.20`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/alpine3.20/Dockerfile) + +- [`4.3.7-alpine3.19`, `4.3-alpine3.19`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/alpine3.19/Dockerfile) + +- [`5.0.0-preview.1-bookworm`, `5.0.0-bookworm`, `5.0-bookworm`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/bookworm/Dockerfile) + +- [`5.0.0-preview.1-bullseye`, `5.0.0-bullseye`, `5.0-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/bullseye/Dockerfile) + +- [`5.0.0-preview.1-windowsservercore-ltsc2025`, `5.0.0-windowsservercore-ltsc2025`, `5.0-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/5.0/windowsservercore-ltsc2025/Dockerfile) + +- [`5.0.0-preview.1-windowsservercore-ltsc2022`, `5.0.0-windowsservercore-ltsc2022`, `5.0-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/windowsservercore-ltsc2022/Dockerfile) + +- [`5.0.0-preview.1-alpine3.22`, `5.0.0-preview.1-alpine`, `5.0.0-alpine3.22`, `5.0-alpine3.22`, `5.0.0-alpine`, `5.0-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/29c1c10f60a3d5d96c92c23ed8d07f5393c962b5/5.0/alpine3.22/Dockerfile) + +- [`5.0.0-preview.1-alpine3.21`, `5.0.0-alpine3.21`, `5.0-alpine3.21`](https://github.com/HaxeFoundation/docker-library-haxe/blob/29c1c10f60a3d5d96c92c23ed8d07f5393c962b5/5.0/alpine3.21/Dockerfile) + +- [`5.0.0-preview.1-alpine3.20`, `5.0.0-alpine3.20`, `5.0-alpine3.20`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/alpine3.20/Dockerfile) + +- [`5.0.0-preview.1-alpine3.19`, `5.0.0-alpine3.19`, `5.0-alpine3.19`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/alpine3.19/Dockerfile) + +- [`4.2.5-bookworm`, `4.2-bookworm`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.2/bookworm/Dockerfile) + +- [`4.2.5-bullseye`, `4.2-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.2/bullseye/Dockerfile) + +- [`4.2.5-windowsservercore-ltsc2025`, `4.2-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.2/windowsservercore-ltsc2025/Dockerfile) + - [`4.2.5-windowsservercore-ltsc2022`, `4.2-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.2/windowsservercore-ltsc2022/Dockerfile) -- [`4.2.5-windowsservercore-1809`, `4.2-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.2/windowsservercore-1809/Dockerfile) -- [`4.2.5-alpine3.17`, `4.2-alpine3.17`, `4.2.5-alpine`, `4.2-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/40bf9156af6f198cd7a57dbfd452e24dc1ceb94e/4.2/alpine3.17/Dockerfile) -- [`4.2.5-alpine3.16`, `4.2-alpine3.16`](https://github.com/HaxeFoundation/docker-library-haxe/blob/5f520ca3ba5942ab581369bab2cbda2b8c4ab992/4.2/alpine3.16/Dockerfile) -- [`4.2.5-alpine3.15`, `4.2-alpine3.15`](https://github.com/HaxeFoundation/docker-library-haxe/blob/83789c10dc601064a234fd559206d1ec252228d7/4.2/alpine3.15/Dockerfile) -- [`4.2.5-alpine3.14`, `4.2-alpine3.14`](https://github.com/HaxeFoundation/docker-library-haxe/blob/83789c10dc601064a234fd559206d1ec252228d7/4.2/alpine3.14/Dockerfile) -- [`4.1.5-bullseye`, `4.1-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/0292fae1a29c23dee119205b3b75ad9e27f6cf32/4.1/bullseye/Dockerfile) -- [`4.1.5-buster`, `4.1-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/adf0e23e460a657c77c44f2502e5fa8cf820d020/4.1/buster/Dockerfile) + +- [`4.2.5-alpine3.20`, `4.2-alpine3.20`, `4.2.5-alpine`, `4.2-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.2/alpine3.20/Dockerfile) + +- [`4.2.5-alpine3.19`, `4.2-alpine3.19`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.2/alpine3.19/Dockerfile) + +- [`4.1.5-bullseye`, `4.1-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.1/bullseye/Dockerfile) + +- [`4.1.5-windowsservercore-ltsc2025`, `4.1-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.1/windowsservercore-ltsc2025/Dockerfile) + - [`4.1.5-windowsservercore-ltsc2022`, `4.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.1/windowsservercore-ltsc2022/Dockerfile) -- [`4.1.5-windowsservercore-1809`, `4.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.1/windowsservercore-1809/Dockerfile) -- [`4.1.5-alpine3.17`, `4.1-alpine3.17`, `4.1.5-alpine`, `4.1-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/40bf9156af6f198cd7a57dbfd452e24dc1ceb94e/4.1/alpine3.17/Dockerfile) -- [`4.1.5-alpine3.16`, `4.1-alpine3.16`](https://github.com/HaxeFoundation/docker-library-haxe/blob/5f520ca3ba5942ab581369bab2cbda2b8c4ab992/4.1/alpine3.16/Dockerfile) -- [`4.1.5-alpine3.15`, `4.1-alpine3.15`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b0098b4b730d0d9ff21dbf3d543464228d6b7e99/4.1/alpine3.15/Dockerfile) -- [`4.1.5-alpine3.14`, `4.1-alpine3.14`](https://github.com/HaxeFoundation/docker-library-haxe/blob/71afcb74d885cfbcf9bff439d7aba47a79b541b1/4.1/alpine3.14/Dockerfile) -- [`4.0.5-bullseye`, `4.0-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/0292fae1a29c23dee119205b3b75ad9e27f6cf32/4.0/bullseye/Dockerfile) -- [`4.0.5-buster`, `4.0-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/adf0e23e460a657c77c44f2502e5fa8cf820d020/4.0/buster/Dockerfile) + +- [`4.1.5-alpine3.20`, `4.1-alpine3.20`, `4.1.5-alpine`, `4.1-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.1/alpine3.20/Dockerfile) + +- [`4.1.5-alpine3.19`, `4.1-alpine3.19`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.1/alpine3.19/Dockerfile) + +- [`4.0.5-bullseye`, `4.0-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.0/bullseye/Dockerfile) + +- [`4.0.5-windowsservercore-ltsc2025`, `4.0-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.0/windowsservercore-ltsc2025/Dockerfile) + - [`4.0.5-windowsservercore-ltsc2022`, `4.0-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.0/windowsservercore-ltsc2022/Dockerfile) -- [`4.0.5-windowsservercore-1809`, `4.0-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.0/windowsservercore-1809/Dockerfile) -- [`4.0.5-alpine3.17`, `4.0-alpine3.17`, `4.0.5-alpine`, `4.0-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/40bf9156af6f198cd7a57dbfd452e24dc1ceb94e/4.0/alpine3.17/Dockerfile) -- [`4.0.5-alpine3.16`, `4.0-alpine3.16`](https://github.com/HaxeFoundation/docker-library-haxe/blob/5f520ca3ba5942ab581369bab2cbda2b8c4ab992/4.0/alpine3.16/Dockerfile) -- [`4.0.5-alpine3.15`, `4.0-alpine3.15`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b0098b4b730d0d9ff21dbf3d543464228d6b7e99/4.0/alpine3.15/Dockerfile) -- [`4.0.5-alpine3.14`, `4.0-alpine3.14`](https://github.com/HaxeFoundation/docker-library-haxe/blob/71afcb74d885cfbcf9bff439d7aba47a79b541b1/4.0/alpine3.14/Dockerfile) -- [`3.4.7-buster`, `3.4-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/1f586bf85c12ce5c9300f24079912b94c73bc3f7/3.4/buster/Dockerfile) -- [`3.4.7-windowsservercore-ltsc2022`, `3.4-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.4/windowsservercore-ltsc2022/Dockerfile) -- [`3.4.7-windowsservercore-1809`, `3.4-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.4/windowsservercore-1809/Dockerfile) -- [`3.3.0-rc.1-buster`, `3.3.0-buster`, `3.3-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/1f586bf85c12ce5c9300f24079912b94c73bc3f7/3.3/buster/Dockerfile) -- [`3.3.0-rc.1-windowsservercore-ltsc2022`, `3.3.0-windowsservercore-ltsc2022`, `3.3-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.3/windowsservercore-ltsc2022/Dockerfile) -- [`3.3.0-rc.1-windowsservercore-1809`, `3.3.0-windowsservercore-1809`, `3.3-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.3/windowsservercore-1809/Dockerfile) -- [`3.2.1-buster`, `3.2-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/1f586bf85c12ce5c9300f24079912b94c73bc3f7/3.2/buster/Dockerfile) -- [`3.2.1-windowsservercore-ltsc2022`, `3.2-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.2/windowsservercore-ltsc2022/Dockerfile) -- [`3.2.1-windowsservercore-1809`, `3.2-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.2/windowsservercore-1809/Dockerfile) -- [`3.1.3-windowsservercore-ltsc2022`, `3.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.1/windowsservercore-ltsc2022/Dockerfile) -- [`3.1.3-windowsservercore-1809`, `3.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.1/windowsservercore-1809/Dockerfile) + +- [`4.0.5-alpine3.20`, `4.0-alpine3.20`, `4.0.5-alpine`, `4.0-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.0/alpine3.20/Dockerfile) + +- [`4.0.5-alpine3.19`, `4.0-alpine3.19`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.0/alpine3.19/Dockerfile) ## Shared Tags -- `4.2.5`, `4.2`, `latest`: - - [`4.2.5-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/83789c10dc601064a234fd559206d1ec252228d7/4.2/bullseye/Dockerfile) +- `4.3.7`, `4.3`, `latest`: + + - [`4.3.7-bookworm`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/bookworm/Dockerfile) + - [`4.3.7-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.3/windowsservercore-ltsc2025/Dockerfile) + - [`4.3.7-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/windowsservercore-ltsc2022/Dockerfile) + +- `4.3.7-windowsservercore`, `4.3-windowsservercore`: + + - [`4.3.7-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.3/windowsservercore-ltsc2025/Dockerfile) + - [`4.3.7-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.3/windowsservercore-ltsc2022/Dockerfile) + +- `5.0.0-preview.1`, `5.0.0`, `5.0`: + + - [`5.0.0-preview.1-bookworm`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/bookworm/Dockerfile) + - [`5.0.0-preview.1-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/5.0/windowsservercore-ltsc2025/Dockerfile) + - [`5.0.0-preview.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/windowsservercore-ltsc2022/Dockerfile) + +- `5.0.0-preview.1-windowsservercore`, `5.0.0-windowsservercore`, `5.0-windowsservercore`: + + - [`5.0.0-preview.1-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/5.0/windowsservercore-ltsc2025/Dockerfile) + - [`5.0.0-preview.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/5.0/windowsservercore-ltsc2022/Dockerfile) + +- `4.2.5`, `4.2`: + + - [`4.2.5-bookworm`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.2/bookworm/Dockerfile) + - [`4.2.5-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.2/windowsservercore-ltsc2025/Dockerfile) - [`4.2.5-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.2/windowsservercore-ltsc2022/Dockerfile) - - [`4.2.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.2/windowsservercore-1809/Dockerfile) + - `4.2.5-windowsservercore`, `4.2-windowsservercore`: + + - [`4.2.5-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.2/windowsservercore-ltsc2025/Dockerfile) - [`4.2.5-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.2/windowsservercore-ltsc2022/Dockerfile) - - [`4.2.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.2/windowsservercore-1809/Dockerfile) + - `4.1.5`, `4.1`: - - [`4.1.5-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/0292fae1a29c23dee119205b3b75ad9e27f6cf32/4.1/bullseye/Dockerfile) + + - [`4.1.5-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.1/bullseye/Dockerfile) + - [`4.1.5-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.1/windowsservercore-ltsc2025/Dockerfile) - [`4.1.5-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.1/windowsservercore-ltsc2022/Dockerfile) - - [`4.1.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.1/windowsservercore-1809/Dockerfile) + - `4.1.5-windowsservercore`, `4.1-windowsservercore`: + + - [`4.1.5-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.1/windowsservercore-ltsc2025/Dockerfile) - [`4.1.5-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.1/windowsservercore-ltsc2022/Dockerfile) - - [`4.1.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.1/windowsservercore-1809/Dockerfile) + - `4.0.5`, `4.0`: - - [`4.0.5-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/0292fae1a29c23dee119205b3b75ad9e27f6cf32/4.0/bullseye/Dockerfile) + + - [`4.0.5-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/2636eee6b67d0c99730e4ab1d0d752d66809e3fa/4.0/bullseye/Dockerfile) + - [`4.0.5-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.0/windowsservercore-ltsc2025/Dockerfile) - [`4.0.5-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.0/windowsservercore-ltsc2022/Dockerfile) - - [`4.0.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.0/windowsservercore-1809/Dockerfile) + - `4.0.5-windowsservercore`, `4.0-windowsservercore`: + + - [`4.0.5-windowsservercore-ltsc2025`](https://github.com/HaxeFoundation/docker-library-haxe/blob/4e5b49d4004e4996d1d405de45967da6d36bdd94/4.0/windowsservercore-ltsc2025/Dockerfile) - [`4.0.5-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.0/windowsservercore-ltsc2022/Dockerfile) - - [`4.0.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/4.0/windowsservercore-1809/Dockerfile) -- `3.4.7`, `3.4`: - - [`3.4.7-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/1f586bf85c12ce5c9300f24079912b94c73bc3f7/3.4/buster/Dockerfile) - - [`3.4.7-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.4/windowsservercore-ltsc2022/Dockerfile) - - [`3.4.7-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.4/windowsservercore-1809/Dockerfile) -- `3.4.7-windowsservercore`, `3.4-windowsservercore`: - - [`3.4.7-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.4/windowsservercore-ltsc2022/Dockerfile) - - [`3.4.7-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.4/windowsservercore-1809/Dockerfile) -- `3.3.0-rc.1`, `3.3.0`, `3.3`: - - [`3.3.0-rc.1-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/1f586bf85c12ce5c9300f24079912b94c73bc3f7/3.3/buster/Dockerfile) - - [`3.3.0-rc.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.3/windowsservercore-ltsc2022/Dockerfile) - - [`3.3.0-rc.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.3/windowsservercore-1809/Dockerfile) -- `3.3.0-rc.1-windowsservercore`, `3.3.0-windowsservercore`, `3.3-windowsservercore`: - - [`3.3.0-rc.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.3/windowsservercore-ltsc2022/Dockerfile) - - [`3.3.0-rc.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.3/windowsservercore-1809/Dockerfile) -- `3.2.1`, `3.2`: - - [`3.2.1-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/1f586bf85c12ce5c9300f24079912b94c73bc3f7/3.2/buster/Dockerfile) - - [`3.2.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.2/windowsservercore-ltsc2022/Dockerfile) - - [`3.2.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.2/windowsservercore-1809/Dockerfile) -- `3.2.1-windowsservercore`, `3.2-windowsservercore`: - - [`3.2.1-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.2/windowsservercore-ltsc2022/Dockerfile) - - [`3.2.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.2/windowsservercore-1809/Dockerfile) -- `3.1.3-windowsservercore`, `3.1-windowsservercore`, `3.1.3`, `3.1`: - - [`3.1.3-windowsservercore-ltsc2022`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.1/windowsservercore-ltsc2022/Dockerfile) - - [`3.1.3-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c0367972017a7b87845bf33477e29b1fe64ccc4a/3.1/windowsservercore-1809/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/HaxeFoundation/docker-library-haxe/issues](https://github.com/HaxeFoundation/docker-library-haxe/issues) + [https://github.com/HaxeFoundation/docker-library-haxe/issues](https://github.com/HaxeFoundation/docker-library-haxe/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/haxe/), [`arm32v7`](https://hub.docker.com/r/arm32v7/haxe/), [`arm64v8`](https://hub.docker.com/r/arm64v8/haxe/), [`windows-amd64`](https://hub.docker.com/r/winamd64/haxe/) @@ -203,16 +240,15 @@ The `haxe` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `haxe:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) ## `haxe:-alpine` diff --git a/haxe/metadata.json b/haxe/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/haxe/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/hello-world/README.md b/hello-world/README.md index 73b30e657c5d..f8cdb3f3305a 100644 --- a/hello-world/README.md +++ b/hello-world/README.md @@ -28,27 +28,32 @@ WARNING: ## Simple Tags -- [`linux`](https://github.com/docker-library/hello-world/blob/3332fbee4210b41738d83f6cfdc301a42b96e30d/amd64/hello-world/Dockerfile) +- [`linux`](https://github.com/docker-library/hello-world/blob/6930d60e10e81283a57be3ee3a2b5ca328a40304/amd64/hello-world/Dockerfile) + +- [`nanoserver-ltsc2025`](https://github.com/docker-library/hello-world/blob/08987c71f648c985f54be2a80bed4223cbd0723b/amd64/hello-world/nanoserver-ltsc2025/Dockerfile) + - [`nanoserver-ltsc2022`](https://github.com/docker-library/hello-world/blob/c816763efda4774cc0c628dca3c7dbd93c099928/amd64/hello-world/nanoserver-ltsc2022/Dockerfile) -- [`nanoserver-1809`](https://github.com/docker-library/hello-world/blob/c816763efda4774cc0c628dca3c7dbd93c099928/amd64/hello-world/nanoserver-1809/Dockerfile) ## Shared Tags - `latest`: - - [`linux`](https://github.com/docker-library/hello-world/blob/3332fbee4210b41738d83f6cfdc301a42b96e30d/amd64/hello-world/Dockerfile) + + - [`linux`](https://github.com/docker-library/hello-world/blob/6930d60e10e81283a57be3ee3a2b5ca328a40304/amd64/hello-world/Dockerfile) + - [`nanoserver-ltsc2025`](https://github.com/docker-library/hello-world/blob/08987c71f648c985f54be2a80bed4223cbd0723b/amd64/hello-world/nanoserver-ltsc2025/Dockerfile) - [`nanoserver-ltsc2022`](https://github.com/docker-library/hello-world/blob/c816763efda4774cc0c628dca3c7dbd93c099928/amd64/hello-world/nanoserver-ltsc2022/Dockerfile) - - [`nanoserver-1809`](https://github.com/docker-library/hello-world/blob/c816763efda4774cc0c628dca3c7dbd93c099928/amd64/hello-world/nanoserver-1809/Dockerfile) + - `nanoserver`: + + - [`nanoserver-ltsc2025`](https://github.com/docker-library/hello-world/blob/08987c71f648c985f54be2a80bed4223cbd0723b/amd64/hello-world/nanoserver-ltsc2025/Dockerfile) - [`nanoserver-ltsc2022`](https://github.com/docker-library/hello-world/blob/c816763efda4774cc0c628dca3c7dbd93c099928/amd64/hello-world/nanoserver-ltsc2022/Dockerfile) - - [`nanoserver-1809`](https://github.com/docker-library/hello-world/blob/c816763efda4774cc0c628dca3c7dbd93c099928/amd64/hello-world/nanoserver-1809/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/hello-world/issues](https://github.com/docker-library/hello-world/issues) + [https://github.com/docker-library/hello-world/issues](https://github.com/docker-library/hello-world/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/hello-world/), [`arm32v5`](https://hub.docker.com/r/arm32v5/hello-world/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hello-world/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hello-world/), [`i386`](https://hub.docker.com/r/i386/hello-world/), [`mips64le`](https://hub.docker.com/r/mips64le/hello-world/), [`ppc64le`](https://hub.docker.com/r/ppc64le/hello-world/), [`riscv64`](https://hub.docker.com/r/riscv64/hello-world/), [`s390x`](https://hub.docker.com/r/s390x/hello-world/), [`windows-amd64`](https://hub.docker.com/r/winamd64/hello-world/) + [`amd64`](https://hub.docker.com/r/amd64/hello-world/), [`arm32v5`](https://hub.docker.com/r/arm32v5/hello-world/), [`arm32v6`](https://hub.docker.com/r/arm32v6/hello-world/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hello-world/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hello-world/), [`i386`](https://hub.docker.com/r/i386/hello-world/), [`mips64le`](https://hub.docker.com/r/mips64le/hello-world/), [`ppc64le`](https://hub.docker.com/r/ppc64le/hello-world/), [`riscv64`](https://hub.docker.com/r/riscv64/hello-world/), [`s390x`](https://hub.docker.com/r/s390x/hello-world/), [`windows-amd64`](https://hub.docker.com/r/winamd64/hello-world/) - **Published image artifact details**: [repo-info repo's `repos/hello-world/` directory](https://github.com/docker-library/repo-info/blob/master/repos/hello-world) ([history](https://github.com/docker-library/repo-info/commits/master/repos/hello-world)) @@ -90,7 +95,7 @@ For more examples and ideas, visit: $ docker images hello-world REPOSITORY TAG IMAGE ID SIZE -hello-world latest feb5d9fea6a5 13.26kB +hello-world latest 1b44b5a3e06a 10.07kB ``` ![logo](https://raw.githubusercontent.com/docker-library/docs/01c12653951b2fe592c1f93a13b4e289ada0e3a1/hello-world/logo.png) diff --git a/hello-world/content.md b/hello-world/content.md index fc79d8d7f4c3..53158910e528 100644 --- a/hello-world/content.md +++ b/hello-world/content.md @@ -27,7 +27,7 @@ For more examples and ideas, visit: $ docker images %%IMAGE%% REPOSITORY TAG IMAGE ID SIZE -hello-world latest feb5d9fea6a5 13.26kB +hello-world latest 1b44b5a3e06a 10.07kB ``` %%LOGO%% diff --git a/hello-world/metadata.json b/hello-world/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/hello-world/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/hitch/README.md b/hitch/README.md index 7d609ca4c60b..d8972613e2c5 100644 --- a/hitch/README.md +++ b/hitch/README.md @@ -24,16 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1`, `1.7`, `1.7.3`, `1.7.3-1`, `latest`](https://github.com/varnish/docker-hitch/blob/3f7f06a4eeb066e03f81f5e3d170d1e13606e69e/Dockerfile) -- [`1.7.2`, `1.7.2-1`](https://github.com/varnish/docker-hitch/blob/054c998138c8f8ec6be03c7db711b8435de41e2b/Dockerfile) +- [`1`, `1.8`, `1.8.0`, `1.8.0-1`, `latest`](https://github.com/varnish/docker-hitch/blob/fa19f55cf3b713e5f6787315c889a3885ab270bf/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/varnish/docker-hitch/issues](https://github.com/varnish/docker-hitch/issues) + [https://github.com/varnish/docker-hitch/issues](https://github.com/varnish/docker-hitch/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/hitch/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hitch/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hitch/), [`i386`](https://hub.docker.com/r/i386/hitch/), [`ppc64le`](https://hub.docker.com/r/ppc64le/hitch/), [`s390x`](https://hub.docker.com/r/s390x/hitch/) + [`amd64`](https://hub.docker.com/r/amd64/hitch/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hitch/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hitch/), [`i386`](https://hub.docker.com/r/i386/hitch/) - **Published image artifact details**: [repo-info repo's `repos/hitch/` directory](https://github.com/docker-library/repo-info/blob/master/repos/hitch) ([history](https://github.com/docker-library/repo-info/commits/master/repos/hitch)) diff --git a/hitch/metadata.json b/hitch/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/hitch/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/httpd/README.md b/httpd/README.md index 2c3e6dea9415..6c53bcd020e7 100644 --- a/httpd/README.md +++ b/httpd/README.md @@ -24,16 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.4.54`, `2.4`, `2`, `latest`, `2.4.54-bullseye`, `2.4-bullseye`, `2-bullseye`, `bullseye`](https://github.com/docker-library/httpd/blob/f3b7fd9c8ef59d1ad46c8b2a27df3e02d822834f/2.4/Dockerfile) -- [`2.4.54-alpine`, `2.4-alpine`, `2-alpine`, `alpine`, `2.4.54-alpine3.17`, `2.4-alpine3.17`, `2-alpine3.17`, `alpine3.17`](https://github.com/docker-library/httpd/blob/a8768519be284075c5cafd0ed6645d3bedaad6b1/2.4/alpine/Dockerfile) +- [`2.4.65`, `2.4`, `2`, `latest`, `2.4.65-trixie`, `2.4-trixie`, `2-trixie`, `trixie`](https://github.com/docker-library/httpd/blob/684a447a23a8035356d5cce42e1f85212cfd39a3/2.4/Dockerfile) + +- [`2.4.65-alpine`, `2.4-alpine`, `2-alpine`, `alpine`, `2.4.65-alpine3.22`, `2.4-alpine3.22`, `2-alpine3.22`, `alpine3.22`](https://github.com/docker-library/httpd/blob/42b1c8997488557ae90e80ff64a90830b1563d75/2.4/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/httpd/issues](https://github.com/docker-library/httpd/issues) + [https://github.com/docker-library/httpd/issues](https://github.com/docker-library/httpd/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/httpd/), [`arm32v5`](https://hub.docker.com/r/arm32v5/httpd/), [`arm32v6`](https://hub.docker.com/r/arm32v6/httpd/), [`arm32v7`](https://hub.docker.com/r/arm32v7/httpd/), [`arm64v8`](https://hub.docker.com/r/arm64v8/httpd/), [`i386`](https://hub.docker.com/r/i386/httpd/), [`mips64le`](https://hub.docker.com/r/mips64le/httpd/), [`ppc64le`](https://hub.docker.com/r/ppc64le/httpd/), [`s390x`](https://hub.docker.com/r/s390x/httpd/) + [`amd64`](https://hub.docker.com/r/amd64/httpd/), [`arm32v5`](https://hub.docker.com/r/arm32v5/httpd/), [`arm32v6`](https://hub.docker.com/r/arm32v6/httpd/), [`arm32v7`](https://hub.docker.com/r/arm32v7/httpd/), [`arm64v8`](https://hub.docker.com/r/arm64v8/httpd/), [`i386`](https://hub.docker.com/r/i386/httpd/), [`ppc64le`](https://hub.docker.com/r/ppc64le/httpd/), [`riscv64`](https://hub.docker.com/r/riscv64/httpd/), [`s390x`](https://hub.docker.com/r/s390x/httpd/) - **Published image artifact details**: [repo-info repo's `repos/httpd/` directory](https://github.com/docker-library/repo-info/blob/master/repos/httpd) ([history](https://github.com/docker-library/repo-info/commits/master/repos/httpd)) @@ -133,7 +134,7 @@ The `httpd` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `httpd:-alpine` diff --git a/httpd/metadata.json b/httpd/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/httpd/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/hylang/README.md b/hylang/README.md index 1293bddbed8a..668d46247553 100644 --- a/hylang/README.md +++ b/hylang/README.md @@ -28,63 +28,116 @@ WARNING: ## Simple Tags -- [`0.25.0-python3.11-bullseye`, `0.25-python3.11-bullseye`, `0-python3.11-bullseye`, `python3.11-bullseye`, `0.25.0-bullseye`, `0.25-bullseye`, `0-bullseye`, `bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.11-bullseye) -- [`0.25.0-python3.11-buster`, `0.25-python3.11-buster`, `0-python3.11-buster`, `python3.11-buster`, `0.25.0-buster`, `0.25-buster`, `0-buster`, `buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.11-buster) -- [`0.25.0-python3.11-alpine3.17`, `0.25-python3.11-alpine3.17`, `0-python3.11-alpine3.17`, `python3.11-alpine3.17`, `0.25.0-alpine3.17`, `0.25-alpine3.17`, `0-alpine3.17`, `alpine3.17`, `0.25.0-python3.11-alpine`, `0.25-python3.11-alpine`, `0-python3.11-alpine`, `python3.11-alpine`, `0.25.0-alpine`, `0.25-alpine`, `0-alpine`, `alpine`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.11-alpine3.17) -- [`0.25.0-python3.11-alpine3.16`, `0.25-python3.11-alpine3.16`, `0-python3.11-alpine3.16`, `python3.11-alpine3.16`, `0.25.0-alpine3.16`, `0.25-alpine3.16`, `0-alpine3.16`, `alpine3.16`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.11-alpine3.16) -- [`0.25.0-python3.10-bullseye`, `0.25-python3.10-bullseye`, `0-python3.10-bullseye`, `python3.10-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.10-bullseye) -- [`0.25.0-python3.10-buster`, `0.25-python3.10-buster`, `0-python3.10-buster`, `python3.10-buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.10-buster) -- [`0.25.0-python3.10-alpine3.17`, `0.25-python3.10-alpine3.17`, `0-python3.10-alpine3.17`, `python3.10-alpine3.17`, `0.25.0-python3.10-alpine`, `0.25-python3.10-alpine`, `0-python3.10-alpine`, `python3.10-alpine`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.10-alpine3.17) -- [`0.25.0-python3.10-alpine3.16`, `0.25-python3.10-alpine3.16`, `0-python3.10-alpine3.16`, `python3.10-alpine3.16`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.10-alpine3.16) -- [`0.25.0-python3.9-bullseye`, `0.25-python3.9-bullseye`, `0-python3.9-bullseye`, `python3.9-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.9-bullseye) -- [`0.25.0-python3.9-buster`, `0.25-python3.9-buster`, `0-python3.9-buster`, `python3.9-buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.9-buster) -- [`0.25.0-python3.9-alpine3.17`, `0.25-python3.9-alpine3.17`, `0-python3.9-alpine3.17`, `python3.9-alpine3.17`, `0.25.0-python3.9-alpine`, `0.25-python3.9-alpine`, `0-python3.9-alpine`, `python3.9-alpine`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.9-alpine3.17) -- [`0.25.0-python3.9-alpine3.16`, `0.25-python3.9-alpine3.16`, `0-python3.9-alpine3.16`, `python3.9-alpine3.16`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.9-alpine3.16) -- [`0.25.0-python3.8-bullseye`, `0.25-python3.8-bullseye`, `0-python3.8-bullseye`, `python3.8-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.8-bullseye) -- [`0.25.0-python3.8-buster`, `0.25-python3.8-buster`, `0-python3.8-buster`, `python3.8-buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.8-buster) -- [`0.25.0-python3.8-alpine3.17`, `0.25-python3.8-alpine3.17`, `0-python3.8-alpine3.17`, `python3.8-alpine3.17`, `0.25.0-python3.8-alpine`, `0.25-python3.8-alpine`, `0-python3.8-alpine`, `python3.8-alpine`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.8-alpine3.17) -- [`0.25.0-python3.8-alpine3.16`, `0.25-python3.8-alpine3.16`, `0-python3.8-alpine3.16`, `python3.8-alpine3.16`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.8-alpine3.16) -- [`0.25.0-python3.7-bullseye`, `0.25-python3.7-bullseye`, `0-python3.7-bullseye`, `python3.7-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.7-bullseye) -- [`0.25.0-python3.7-buster`, `0.25-python3.7-buster`, `0-python3.7-buster`, `python3.7-buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.7-buster) -- [`0.25.0-python3.7-alpine3.17`, `0.25-python3.7-alpine3.17`, `0-python3.7-alpine3.17`, `python3.7-alpine3.17`, `0.25.0-python3.7-alpine`, `0.25-python3.7-alpine`, `0-python3.7-alpine`, `python3.7-alpine`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.7-alpine3.17) -- [`0.25.0-python3.7-alpine3.16`, `0.25-python3.7-alpine3.16`, `0-python3.7-alpine3.16`, `python3.7-alpine3.16`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.7-alpine3.16) -- [`0.25.0-pypy3.9-bullseye`, `0.25-pypy3.9-bullseye`, `0-pypy3.9-bullseye`, `pypy3.9-bullseye`, `0.25.0-pypy-bullseye`, `0.25-pypy-bullseye`, `0-pypy-bullseye`, `pypy-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-bullseye) -- [`0.25.0-pypy3.9-buster`, `0.25-pypy3.9-buster`, `0-pypy3.9-buster`, `pypy3.9-buster`, `0.25.0-pypy-buster`, `0.25-pypy-buster`, `0-pypy-buster`, `pypy-buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-buster) -- [`0.25.0-pypy3.9-windowsservercore-ltsc2022`, `0.25-pypy3.9-windowsservercore-ltsc2022`, `0-pypy3.9-windowsservercore-ltsc2022`, `pypy3.9-windowsservercore-ltsc2022`, `0.25.0-pypy-windowsservercore-ltsc2022`, `0.25-pypy-windowsservercore-ltsc2022`, `0-pypy-windowsservercore-ltsc2022`, `pypy-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-windowsservercore-ltsc2022) -- [`0.25.0-pypy3.9-windowsservercore-1809`, `0.25-pypy3.9-windowsservercore-1809`, `0-pypy3.9-windowsservercore-1809`, `pypy3.9-windowsservercore-1809`, `0.25.0-pypy-windowsservercore-1809`, `0.25-pypy-windowsservercore-1809`, `0-pypy-windowsservercore-1809`, `pypy-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-windowsservercore-1809) -- [`0.25.0-pypy3.8-bullseye`, `0.25-pypy3.8-bullseye`, `0-pypy3.8-bullseye`, `pypy3.8-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-bullseye) -- [`0.25.0-pypy3.8-buster`, `0.25-pypy3.8-buster`, `0-pypy3.8-buster`, `pypy3.8-buster`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-buster) -- [`0.25.0-pypy3.8-windowsservercore-ltsc2022`, `0.25-pypy3.8-windowsservercore-ltsc2022`, `0-pypy3.8-windowsservercore-ltsc2022`, `pypy3.8-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-windowsservercore-ltsc2022) -- [`0.25.0-pypy3.8-windowsservercore-1809`, `0.25-pypy3.8-windowsservercore-1809`, `0-pypy3.8-windowsservercore-1809`, `pypy3.8-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-windowsservercore-1809) +- [`1.1.0-python3.14-trixie`, `1.1-python3.14-trixie`, `1-python3.14-trixie`, `python3.14-trixie`, `1.1.0-trixie`, `1.1-trixie`, `1-trixie`, `trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-trixie/Dockerfile) + +- [`1.1.0-python3.14-bookworm`, `1.1-python3.14-bookworm`, `1-python3.14-bookworm`, `python3.14-bookworm`, `1.1.0-bookworm`, `1.1-bookworm`, `1-bookworm`, `bookworm`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-bookworm/Dockerfile) + +- [`1.1.0-python3.14-alpine3.22`, `1.1-python3.14-alpine3.22`, `1-python3.14-alpine3.22`, `python3.14-alpine3.22`, `1.1.0-python3.14-alpine`, `1.1-python3.14-alpine`, `1-python3.14-alpine`, `python3.14-alpine`, `1.1.0-alpine3.22`, `1.1-alpine3.22`, `1-alpine3.22`, `alpine3.22`, `1.1.0-alpine`, `1.1-alpine`, `1-alpine`, `alpine`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-alpine3.22/Dockerfile) + +- [`1.1.0-python3.14-alpine3.21`, `1.1-python3.14-alpine3.21`, `1-python3.14-alpine3.21`, `python3.14-alpine3.21`, `1.1.0-alpine3.21`, `1.1-alpine3.21`, `1-alpine3.21`, `alpine3.21`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-alpine3.21/Dockerfile) + +- [`1.1.0-python3.14-windowsservercore-ltsc2025`, `1.1-python3.14-windowsservercore-ltsc2025`, `1-python3.14-windowsservercore-ltsc2025`, `python3.14-windowsservercore-ltsc2025`, `1.1.0-windowsservercore-ltsc2025`, `1.1-windowsservercore-ltsc2025`, `1-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-windowsservercore-ltsc2025/Dockerfile) + +- [`1.1.0-python3.14-windowsservercore-ltsc2022`, `1.1-python3.14-windowsservercore-ltsc2022`, `1-python3.14-windowsservercore-ltsc2022`, `python3.14-windowsservercore-ltsc2022`, `1.1.0-windowsservercore-ltsc2022`, `1.1-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-windowsservercore-ltsc2022/Dockerfile) + +- [`1.1.0-python3.13-trixie`, `1.1-python3.13-trixie`, `1-python3.13-trixie`, `python3.13-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-trixie/Dockerfile) + +- [`1.1.0-python3.13-bookworm`, `1.1-python3.13-bookworm`, `1-python3.13-bookworm`, `python3.13-bookworm`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-bookworm/Dockerfile) + +- [`1.1.0-python3.13-alpine3.22`, `1.1-python3.13-alpine3.22`, `1-python3.13-alpine3.22`, `python3.13-alpine3.22`, `1.1.0-python3.13-alpine`, `1.1-python3.13-alpine`, `1-python3.13-alpine`, `python3.13-alpine`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-alpine3.22/Dockerfile) + +- [`1.1.0-python3.13-alpine3.21`, `1.1-python3.13-alpine3.21`, `1-python3.13-alpine3.21`, `python3.13-alpine3.21`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-alpine3.21/Dockerfile) + +- [`1.1.0-python3.13-windowsservercore-ltsc2025`, `1.1-python3.13-windowsservercore-ltsc2025`, `1-python3.13-windowsservercore-ltsc2025`, `python3.13-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-windowsservercore-ltsc2025/Dockerfile) + +- [`1.1.0-python3.13-windowsservercore-ltsc2022`, `1.1-python3.13-windowsservercore-ltsc2022`, `1-python3.13-windowsservercore-ltsc2022`, `python3.13-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-windowsservercore-ltsc2022/Dockerfile) + +- [`1.1.0-python3.12-trixie`, `1.1-python3.12-trixie`, `1-python3.12-trixie`, `python3.12-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.12-trixie/Dockerfile) + +- [`1.1.0-python3.12-bookworm`, `1.1-python3.12-bookworm`, `1-python3.12-bookworm`, `python3.12-bookworm`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.12-bookworm/Dockerfile) + +- [`1.1.0-python3.12-alpine3.22`, `1.1-python3.12-alpine3.22`, `1-python3.12-alpine3.22`, `python3.12-alpine3.22`, `1.1.0-python3.12-alpine`, `1.1-python3.12-alpine`, `1-python3.12-alpine`, `python3.12-alpine`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.12-alpine3.22/Dockerfile) + +- [`1.1.0-python3.12-alpine3.21`, `1.1-python3.12-alpine3.21`, `1-python3.12-alpine3.21`, `python3.12-alpine3.21`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.12-alpine3.21/Dockerfile) + +- [`1.1.0-python3.11-trixie`, `1.1-python3.11-trixie`, `1-python3.11-trixie`, `python3.11-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.11-trixie/Dockerfile) + +- [`1.1.0-python3.11-bookworm`, `1.1-python3.11-bookworm`, `1-python3.11-bookworm`, `python3.11-bookworm`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.11-bookworm/Dockerfile) + +- [`1.1.0-python3.11-alpine3.22`, `1.1-python3.11-alpine3.22`, `1-python3.11-alpine3.22`, `python3.11-alpine3.22`, `1.1.0-python3.11-alpine`, `1.1-python3.11-alpine`, `1-python3.11-alpine`, `python3.11-alpine`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.11-alpine3.22/Dockerfile) + +- [`1.1.0-python3.11-alpine3.21`, `1.1-python3.11-alpine3.21`, `1-python3.11-alpine3.21`, `python3.11-alpine3.21`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.11-alpine3.21/Dockerfile) + +- [`1.1.0-python3.10-trixie`, `1.1-python3.10-trixie`, `1-python3.10-trixie`, `python3.10-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.10-trixie/Dockerfile) + +- [`1.1.0-python3.10-bookworm`, `1.1-python3.10-bookworm`, `1-python3.10-bookworm`, `python3.10-bookworm`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.10-bookworm/Dockerfile) + +- [`1.1.0-python3.10-alpine3.22`, `1.1-python3.10-alpine3.22`, `1-python3.10-alpine3.22`, `python3.10-alpine3.22`, `1.1.0-python3.10-alpine`, `1.1-python3.10-alpine`, `1-python3.10-alpine`, `python3.10-alpine`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.10-alpine3.22/Dockerfile) + +- [`1.1.0-python3.10-alpine3.21`, `1.1-python3.10-alpine3.21`, `1-python3.10-alpine3.21`, `python3.10-alpine3.21`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.10-alpine3.21/Dockerfile) + +- [`1.1.0-pypy3.11-trixie`, `1.1-pypy3.11-trixie`, `1-pypy3.11-trixie`, `pypy3.11-trixie`, `1.1.0-pypy-trixie`, `1.1-pypy-trixie`, `1-pypy-trixie`, `pypy-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-trixie/Dockerfile) + +- [`1.1.0-pypy3.11-bookworm`, `1.1-pypy3.11-bookworm`, `1-pypy3.11-bookworm`, `pypy3.11-bookworm`, `1.1.0-pypy-bookworm`, `1.1-pypy-bookworm`, `1-pypy-bookworm`, `pypy-bookworm`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-bookworm/Dockerfile) + +- [`1.1.0-pypy3.11-windowsservercore-ltsc2025`, `1.1-pypy3.11-windowsservercore-ltsc2025`, `1-pypy3.11-windowsservercore-ltsc2025`, `pypy3.11-windowsservercore-ltsc2025`, `1.1.0-pypy-windowsservercore-ltsc2025`, `1.1-pypy-windowsservercore-ltsc2025`, `1-pypy-windowsservercore-ltsc2025`, `pypy-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-windowsservercore-ltsc2025/Dockerfile) + +- [`1.1.0-pypy3.11-windowsservercore-ltsc2022`, `1.1-pypy3.11-windowsservercore-ltsc2022`, `1-pypy3.11-windowsservercore-ltsc2022`, `pypy3.11-windowsservercore-ltsc2022`, `1.1.0-pypy-windowsservercore-ltsc2022`, `1.1-pypy-windowsservercore-ltsc2022`, `1-pypy-windowsservercore-ltsc2022`, `pypy-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-windowsservercore-ltsc2022/Dockerfile) ## Shared Tags -- `0.25.0-python3.11`, `0.25-python3.11`, `0-python3.11`, `python3.11`, `0.25.0`, `0.25`, `0`, `latest`: - - [`0.25.0-python3.11-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.11-bullseye) -- `0.25.0-python3.10`, `0.25-python3.10`, `0-python3.10`, `python3.10`: - - [`0.25.0-python3.10-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.10-bullseye) -- `0.25.0-python3.9`, `0.25-python3.9`, `0-python3.9`, `python3.9`: - - [`0.25.0-python3.9-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.9-bullseye) -- `0.25.0-python3.8`, `0.25-python3.8`, `0-python3.8`, `python3.8`: - - [`0.25.0-python3.8-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.8-bullseye) -- `0.25.0-python3.7`, `0.25-python3.7`, `0-python3.7`, `python3.7`: - - [`0.25.0-python3.7-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.python3.7-bullseye) -- `0.25.0-pypy3.9`, `0.25-pypy3.9`, `0-pypy3.9`, `pypy3.9`, `0.25.0-pypy`, `0.25-pypy`, `0-pypy`, `pypy`: - - [`0.25.0-pypy3.9-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-bullseye) - - [`0.25.0-pypy3.9-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-windowsservercore-ltsc2022) - - [`0.25.0-pypy3.9-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.9-windowsservercore-1809) -- `0.25.0-pypy3.8`, `0.25-pypy3.8`, `0-pypy3.8`, `pypy3.8`: - - [`0.25.0-pypy3.8-bullseye`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-bullseye) - - [`0.25.0-pypy3.8-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-windowsservercore-ltsc2022) - - [`0.25.0-pypy3.8-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/d5431b3cfc54bd22202a34336d5375d716f2d13d/dockerfiles-generated/Dockerfile.pypy3.8-windowsservercore-1809) +- `1.1.0-python3.14`, `1.1-python3.14`, `1-python3.14`, `python3.14`, `1.1.0`, `1.1`, `1`, `latest`: + + - [`1.1.0-python3.14-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-trixie/Dockerfile) + - [`1.1.0-python3.14-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-windowsservercore-ltsc2025/Dockerfile) + - [`1.1.0-python3.14-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-windowsservercore-ltsc2022/Dockerfile) + +- `1.1.0-python3.14-windowsservercore`, `1.1-python3.14-windowsservercore`, `1-python3.14-windowsservercore`, `python3.14-windowsservercore`, `1.1.0-windowsservercore`, `1.1-windowsservercore`, `1-windowsservercore`, `windowsservercore`: + + - [`1.1.0-python3.14-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-windowsservercore-ltsc2025/Dockerfile) + - [`1.1.0-python3.14-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.14-windowsservercore-ltsc2022/Dockerfile) + +- `1.1.0-python3.13`, `1.1-python3.13`, `1-python3.13`, `python3.13`: + + - [`1.1.0-python3.13-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-trixie/Dockerfile) + - [`1.1.0-python3.13-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-windowsservercore-ltsc2025/Dockerfile) + - [`1.1.0-python3.13-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-windowsservercore-ltsc2022/Dockerfile) + +- `1.1.0-python3.13-windowsservercore`, `1.1-python3.13-windowsservercore`, `1-python3.13-windowsservercore`, `python3.13-windowsservercore`: + + - [`1.1.0-python3.13-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-windowsservercore-ltsc2025/Dockerfile) + - [`1.1.0-python3.13-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.13-windowsservercore-ltsc2022/Dockerfile) + +- `1.1.0-python3.12`, `1.1-python3.12`, `1-python3.12`, `python3.12`: + + - [`1.1.0-python3.12-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.12-trixie/Dockerfile) + +- `1.1.0-python3.11`, `1.1-python3.11`, `1-python3.11`, `python3.11`: + + - [`1.1.0-python3.11-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.11-trixie/Dockerfile) + +- `1.1.0-python3.10`, `1.1-python3.10`, `1-python3.10`, `python3.10`: + + - [`1.1.0-python3.10-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/python3.10-trixie/Dockerfile) + +- `1.1.0-pypy3.11`, `1.1-pypy3.11`, `1-pypy3.11`, `pypy3.11`, `1.1.0-pypy`, `1.1-pypy`, `1-pypy`, `pypy`: + + - [`1.1.0-pypy3.11-trixie`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-trixie/Dockerfile) + - [`1.1.0-pypy3.11-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-windowsservercore-ltsc2025/Dockerfile) + - [`1.1.0-pypy3.11-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-windowsservercore-ltsc2022/Dockerfile) + +- `1.1.0-pypy3.11-windowsservercore`, `1.1-pypy3.11-windowsservercore`, `1-pypy3.11-windowsservercore`, `pypy3.11-windowsservercore`: + + - [`1.1.0-pypy3.11-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-windowsservercore-ltsc2025/Dockerfile) + - [`1.1.0-pypy3.11-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/fbe7fe82f03ec30b2aab666af623405f45357626/latest/pypy3.11-windowsservercore-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/hylang/hy/issues](https://github.com/hylang/hy/issues) + [https://github.com/hylang/hy/issues](https://github.com/hylang/hy/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/hylang/), [`arm32v5`](https://hub.docker.com/r/arm32v5/hylang/), [`arm32v6`](https://hub.docker.com/r/arm32v6/hylang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hylang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hylang/), [`i386`](https://hub.docker.com/r/i386/hylang/), [`mips64le`](https://hub.docker.com/r/mips64le/hylang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/hylang/), [`s390x`](https://hub.docker.com/r/s390x/hylang/), [`windows-amd64`](https://hub.docker.com/r/winamd64/hylang/) + [`amd64`](https://hub.docker.com/r/amd64/hylang/), [`arm32v5`](https://hub.docker.com/r/arm32v5/hylang/), [`arm32v6`](https://hub.docker.com/r/arm32v6/hylang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hylang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hylang/), [`i386`](https://hub.docker.com/r/i386/hylang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/hylang/), [`riscv64`](https://hub.docker.com/r/riscv64/hylang/), [`s390x`](https://hub.docker.com/r/s390x/hylang/), [`windows-amd64`](https://hub.docker.com/r/winamd64/hylang/) - **Published image artifact details**: [repo-info repo's `repos/hylang/` directory](https://github.com/docker-library/repo-info/blob/master/repos/hylang) ([history](https://github.com/docker-library/repo-info/commits/master/repos/hylang)) @@ -139,7 +192,7 @@ The `hylang` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `hylang:-alpine` @@ -151,12 +204,11 @@ To minimize image size, it's uncommon for additional related tools (such as `git ## `hylang:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/hylang/metadata.json b/hylang/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/hylang/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/ibm-semeru-runtimes/README.md b/ibm-semeru-runtimes/README.md index d506b701a688..35c09526a01a 100644 --- a/ibm-semeru-runtimes/README.md +++ b/ibm-semeru-runtimes/README.md @@ -28,49 +28,87 @@ WARNING: ## Simple Tags -- [`open-8u352-b08-jdk-focal`, `open-8-jdk-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jdk/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-8u352-b08-jdk-jammy`, `open-8-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-8u352-b08-jdk-centos7`, `open-8-jdk-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jdk/centos/Dockerfile.open.releases.full) -- [`open-8u352-b08-jre-focal`, `open-8-jre-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jre/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-8u352-b08-jre-jammy`, `open-8-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-8u352-b08-jre-centos7`, `open-8-jre-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jre/centos/Dockerfile.open.releases.full) -- [`open-11.0.17_8-jdk-focal`, `open-11-jdk-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jdk/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-11.0.17_8-jdk-jammy`, `open-11-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-11.0.17_8-jdk-centos7`, `open-11-jdk-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jdk/centos/Dockerfile.open.releases.full) -- [`open-11.0.17_8-jre-focal`, `open-11-jre-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jre/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-11.0.17_8-jre-jammy`, `open-11-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-11.0.17_8-jre-centos7`, `open-11-jre-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jre/centos/Dockerfile.open.releases.full) -- [`open-17.0.5_8-jdk-focal`, `open-17-jdk-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jdk/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-17.0.5_8-jdk-jammy`, `open-17-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-17.0.5_8-jdk-centos7`, `open-17-jdk-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jdk/centos/Dockerfile.open.releases.full) -- [`open-17.0.5_8-jre-focal`, `open-17-jre-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jre/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-17.0.5_8-jre-jammy`, `open-17-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-17.0.5_8-jre-centos7`, `open-17-jre-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jre/centos/Dockerfile.open.releases.full) -- [`open-18.0.2_9-jdk-focal`, `open-18-jdk-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jdk/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-18.0.2_9-jdk-jammy`, `open-18-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-18.0.2_9-jdk-centos7`, `open-18-jdk-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jdk/centos/Dockerfile.open.releases.full) -- [`open-18.0.2_9-jre-focal`, `open-18-jre-focal`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jre/ubuntu/focal/Dockerfile.open.releases.full) -- [`open-18.0.2_9-jre-jammy`, `open-18-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- [`open-18.0.2_9-jre-centos7`, `open-18-jre-centos7`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jre/centos/Dockerfile.open.releases.full) +- [`open-8u472-b08-jdk-jammy`, `open-8-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/8/jdk/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-8u472-b08-jdk-noble`, `open-8-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/8/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-8u472-b08-jre-jammy`, `open-8-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/8/jre/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-8u472-b08-jre-noble`, `open-8-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/8/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-11.0.29_7-jdk-jammy`, `open-11-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/11/jdk/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-11.0.29_7-jdk-noble`, `open-11-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/11/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-11.0.29_7-jre-jammy`, `open-11-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/11/jre/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-11.0.29_7-jre-noble`, `open-11-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/11/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-17.0.17_9-jdk-jammy`, `open-17-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/17/jdk/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-17.0.17_9-jdk-noble`, `open-17-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/17/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-17.0.17_9-jre-jammy`, `open-17-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/17/jre/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-17.0.17_9-jre-noble`, `open-17-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/17/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-21.0.9_10-jdk-jammy`, `open-21-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/21/jdk/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-21.0.9_10-jdk-noble`, `open-21-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/21/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-21.0.9_10-jre-jammy`, `open-21-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/21/jre/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-21.0.9_10-jre-noble`, `open-21-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/21/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-jdk-25.0.1_8-jdk-jammy`, `open-25-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/25/jdk/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-jdk-25.0.1_8-jdk-noble`, `open-25-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/25/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- [`open-jdk-25.0.1_8-jre-jammy`, `open-25-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/25/jre/ubuntu/jammy/Dockerfile.open.releases.full) + +- [`open-jdk-25.0.1_8-jre-noble`, `open-25-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/25/jre/ubuntu/noble/Dockerfile.open.releases.full) ## Shared Tags -- `open-8u352-b08-jdk`, `open-8-jdk`: - - [`open-8u352-b08-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-8u352-b08-jre`, `open-8-jre`: - - [`open-8u352-b08-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/8/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-11.0.17_8-jdk`, `open-11-jdk`: - - [`open-11.0.17_8-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-11.0.17_8-jre`, `open-11-jre`: - - [`open-11.0.17_8-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/11/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-17.0.5_8-jdk`, `open-17-jdk`: - - [`open-17.0.5_8-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-17.0.5_8-jre`, `open-17-jre`: - - [`open-17.0.5_8-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/17/jre/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-18.0.2_9-jdk`, `open-18-jdk`: - - [`open-18.0.2_9-jdk-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jdk/ubuntu/jammy/Dockerfile.open.releases.full) -- `open-18.0.2_9-jre`, `open-18-jre`: - - [`open-18.0.2_9-jre-jammy`](https://github.com/ibmruntimes/semeru-containers/blob/5be6c185f78d72f254a9874c87c72ea4560c9160/18/jre/ubuntu/jammy/Dockerfile.open.releases.full) +- `open-8u472-b08-jdk`, `open-8-jdk`: + + - [`open-8u472-b08-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/8/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-8u472-b08-jre`, `open-8-jre`: + + - [`open-8u472-b08-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/8/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-11.0.29_7-jdk`, `open-11-jdk`: + + - [`open-11.0.29_7-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/11/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-11.0.29_7-jre`, `open-11-jre`: + + - [`open-11.0.29_7-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/11/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-17.0.17_9-jdk`, `open-17-jdk`: + + - [`open-17.0.17_9-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/17/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-17.0.17_9-jre`, `open-17-jre`: + + - [`open-17.0.17_9-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/17/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-21.0.9_10-jdk`, `open-21-jdk`: + + - [`open-21.0.9_10-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/21/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-21.0.9_10-jre`, `open-21-jre`: + + - [`open-21.0.9_10-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/21/jre/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-jdk-25.0.1_8-jdk`, `open-25-jdk`: + + - [`open-jdk-25.0.1_8-jdk-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/25/jdk/ubuntu/noble/Dockerfile.open.releases.full) + +- `open-jdk-25.0.1_8-jre`, `open-25-jre`: + + - [`open-jdk-25.0.1_8-jre-noble`](https://github.com/ibmruntimes/semeru-containers/blob/b0eeb07aebffd81808ad6cf221f5ad6bdd233881/25/jre/ubuntu/noble/Dockerfile.open.releases.full) # Quick reference (cont.) @@ -104,7 +142,7 @@ The IBM Semeru Runtimes are free production-ready open source binaries built wit To run a pre-built japp.jar file with the latest OpenJDK 11, use the following Dockerfile: ```dockerfile -FROM ibm-semeru-runtimes:11 +FROM ibm-semeru-runtimes:open-11-jdk RUN mkdir /opt/app COPY japp.jar /opt/app CMD ["java", "-jar", "/opt/app/japp.jar"] @@ -125,7 +163,7 @@ If you are using a distribution that we don't provide an image for you can copy # Example FROM ENV JAVA_HOME=/opt/java/openjdk -COPY --from=ibm-semeru-runtimes:11 $JAVA_HOME $JAVA_HOME +COPY --from=ibm-semeru-runtimes:open-11-jdk $JAVA_HOME $JAVA_HOME ENV PATH="${JAVA_HOME}/bin:${PATH}" ``` diff --git a/ibm-semeru-runtimes/content.md b/ibm-semeru-runtimes/content.md index 20cce094a9a3..eca238315cef 100644 --- a/ibm-semeru-runtimes/content.md +++ b/ibm-semeru-runtimes/content.md @@ -11,7 +11,7 @@ The IBM Semeru Runtimes are free production-ready open source binaries built wit To run a pre-built japp.jar file with the latest OpenJDK 11, use the following Dockerfile: ```dockerfile -FROM %%IMAGE%%:11 +FROM %%IMAGE%%:open-11-jdk RUN mkdir /opt/app COPY japp.jar /opt/app CMD ["java", "-jar", "/opt/app/japp.jar"] @@ -32,6 +32,6 @@ If you are using a distribution that we don't provide an image for you can copy # Example FROM ENV JAVA_HOME=/opt/java/openjdk -COPY --from=%%IMAGE%%:11 $JAVA_HOME $JAVA_HOME +COPY --from=%%IMAGE%%:open-11-jdk $JAVA_HOME $JAVA_HOME ENV PATH="${JAVA_HOME}/bin:${PATH}" ``` diff --git a/ibm-semeru-runtimes/logo.svg b/ibm-semeru-runtimes/logo.svg new file mode 100644 index 000000000000..79b7f2be10c0 --- /dev/null +++ b/ibm-semeru-runtimes/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/ibm-semeru-runtimes/metadata.json b/ibm-semeru-runtimes/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/ibm-semeru-runtimes/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/ibmjava/README.md b/ibmjava/README.md index d7864cbd022f..ce1e3303fc0a 100644 --- a/ibmjava/README.md +++ b/ibmjava/README.md @@ -24,9 +24,11 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8-jre`, `jre`, `8`, `latest`](https://github.com/ibmruntimes/ci.docker/blob/a596914862ee05bb419b7644e57135f8674e9161/ibmjava/8/jre/ubuntu/Dockerfile) -- [`8-sfj`, `sfj`](https://github.com/ibmruntimes/ci.docker/blob/a596914862ee05bb419b7644e57135f8674e9161/ibmjava/8/sfj/ubuntu/Dockerfile) -- [`8-sdk`, `sdk`](https://github.com/ibmruntimes/ci.docker/blob/a596914862ee05bb419b7644e57135f8674e9161/ibmjava/8/sdk/ubuntu/Dockerfile) +- [`8-jre`, `jre`, `8`, `latest`](https://github.com/ibmruntimes/ci.docker/blob/a26553d44dfb1e694fd18b22bf7dba13fc164424/ibmjava/8/jre/ubuntu/Dockerfile) + +- [`8-sfj`, `sfj`](https://github.com/ibmruntimes/ci.docker/blob/a26553d44dfb1e694fd18b22bf7dba13fc164424/ibmjava/8/sfj/ubuntu/Dockerfile) + +- [`8-sdk`, `sdk`](https://github.com/ibmruntimes/ci.docker/blob/a26553d44dfb1e694fd18b22bf7dba13fc164424/ibmjava/8/sdk/ubuntu/Dockerfile) # Quick reference (cont.) @@ -34,7 +36,7 @@ WARNING: [GitHub](https://github.com/ibmruntimes/ci.docker/issues); for troubleshooting, see our [How Do I ...?](http://www.ibm.com/developerworks/java/jdk/howdoi/) page - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/ibmjava/), [`i386`](https://hub.docker.com/r/i386/ibmjava/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ibmjava/), [`s390x`](https://hub.docker.com/r/s390x/ibmjava/) + [`amd64`](https://hub.docker.com/r/amd64/ibmjava/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ibmjava/), [`s390x`](https://hub.docker.com/r/s390x/ibmjava/) - **Published image artifact details**: [repo-info repo's `repos/ibmjava/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ibmjava) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ibmjava)) diff --git a/ibmjava/metadata.json b/ibmjava/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/ibmjava/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/influxdb/README-short.txt b/influxdb/README-short.txt index a33232c98b90..ff66a43d2008 100644 --- a/influxdb/README-short.txt +++ b/influxdb/README-short.txt @@ -1 +1 @@ -InfluxDB is an open source time series database for recording metrics, events, and analytics. +InfluxDB is the open source time series database built for real-time analytic workloads. diff --git a/influxdb/README.md b/influxdb/README.md index f422092c98de..9bfd4cd59f68 100644 --- a/influxdb/README.md +++ b/influxdb/README.md @@ -20,635 +20,229 @@ WARNING: [InfluxData](https://github.com/influxdata/influxdata-docker) - **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) + [InfluxDB Discord Server](https://discord.gg/9zaNCW2PRT) *(preferred for **InfluxDB 3 Core**, **InfluxDB 3 Enterprise**)*, [InfluxDB Community Slack](https://influxdata.com/slack) *(preferred for **InfluxDB v2**, **v1**)\* # Supported tags and respective `Dockerfile` links -- [`1.8`, `1.8.10`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.8/Dockerfile) -- [`1.8-alpine`, `1.8.10-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.8/alpine/Dockerfile) -- [`1.8-data`, `1.8.10-data`, `data`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.8/data/Dockerfile) -- [`1.8-data-alpine`, `1.8.10-data-alpine`, `data-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.8/data/alpine/Dockerfile) -- [`1.8-meta`, `1.8.10-meta`, `meta`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.8/meta/Dockerfile) -- [`1.8-meta-alpine`, `1.8.10-meta-alpine`, `meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.8/meta/alpine/Dockerfile) -- [`1.9-data`, `1.9.8-data`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.9/data/Dockerfile) -- [`1.9-data-alpine`, `1.9.8-data-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.9/data/alpine/Dockerfile) -- [`1.9-meta`, `1.9.8-meta`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.9/meta/Dockerfile) -- [`1.9-meta-alpine`, `1.9.8-meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.9/meta/alpine/Dockerfile) -- [`1.10-data`, `1.10.0-data`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.10/data/Dockerfile) -- [`1.10-data-alpine`, `1.10.0-data-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.10/data/alpine/Dockerfile) -- [`1.10-meta`, `1.10.0-meta`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.10/meta/Dockerfile) -- [`1.10-meta-alpine`, `1.10.0-meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/1.10/meta/alpine/Dockerfile) -- [`2.4`, `2.4.0`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/2.4/Dockerfile) -- [`2.4-alpine`, `2.4.0-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/2.4/alpine/Dockerfile) -- [`2.5`, `2.5.1`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/2.5/Dockerfile) -- [`2.5-alpine`, `2.5.1-alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/2.5/alpine/Dockerfile) -- [`2.6`, `2.6.1`, `latest`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/2.6/Dockerfile) -- [`2.6-alpine`, `2.6.1-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/64a63b05b198b6a45176462814d3f35677625415/influxdb/2.6/alpine/Dockerfile) +- [`1.12`, `1.12.2`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.12/Dockerfile) -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/influxdb/), [`arm32v7`](https://hub.docker.com/r/arm32v7/influxdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/influxdb/) - -- **Published image artifact details**: - [repo-info repo's `repos/influxdb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/influxdb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/influxdb)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/influxdb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Finfluxdb) - [official-images repo's `library/influxdb` file](https://github.com/docker-library/official-images/blob/master/library/influxdb) ([history](https://github.com/docker-library/official-images/commits/master/library/influxdb)) - -- **Source of this description**: - [docs repo's `influxdb/` directory](https://github.com/docker-library/docs/tree/master/influxdb) ([history](https://github.com/docker-library/docs/commits/master/influxdb)) - -# InfluxDB - -InfluxDB is a time series database built from the ground up to handle high write and query loads. InfluxDB is meant to be used as a backing store for any use case involving large amounts of timestamped data, including DevOps monitoring, application metrics, IoT sensor data, and real-time analytics. - -[InfluxDB Documentation](https://docs.influxdata.com/influxdb/latest/) - -![logo](https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/influxdb/logo.png) - -## Using this Image - InfluxDB 2.x - -### Quick start - -Using this image is pretty easy, but there are a few things you should know. - -- You should forward TCP port 8086 -- You should mount a volume in /var/lib/influxdb2 - -```console -$ docker run \ - -p 8086:8086 \ - -v myInfluxVolume:/var/lib/influxdb2 \ - influxdb:latest -``` +- [`1.12-alpine`, `1.12.2-alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.12/alpine/Dockerfile) -After starting the container you can use the web interface at http://localhost:8086/ to setup and customize your Influx database. +- [`1.12-data`, `1.12.2-data`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.12/data/Dockerfile) -Find more about API Endpoints & Ports [here](https://docs.influxdata.com/influxdb/v2.5/reference/api/). +- [`1.12-data-alpine`, `1.12.2-data-alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.12/data/alpine/Dockerfile) -### Configuration - -InfluxDB can be configured using a mix of a config file, environment variables, and CLI options. To mount a configuration file and use it with the server, you can use this command to generate the default configuration file: - -```console -$ docker run --rm influxdb:2.0 influxd print-config > config.yml -``` - -Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB container: - -```console -$ docker run -p 8086:8086 \ - -v $PWD/config.yml:/etc/influxdb2/config.yml \ - influxdb:2.0 -``` - -Modify `$PWD` to be the directory where you want to store the configuration file. - -Individual config settings can be overridden by environment variables. The variables must be named using the format `INFLUXD_${SNAKE_CASE_NAME}`. The `SNAKE_CASE_NAME` for an option will be the option's name with all dashes (`-`) replaced by underscores (`_`), in all caps. - -Examples: - -```console -# Config setting: bolt-path -INFLUXD_BOLT_PATH=/root/influxdb.bolt -# Config setting: no-tasks -INFLUXD_NO_TASKS=true -# Config setting: storage-wal-fsync-delay -INFLUXD_STORAGE_WAL_FSYNC_DELAY=15m -``` - -Finally, all config options can be passed as CLI options: - -```console -$ docker run -p 8086:8086 \ - influxdb:2.0 --storage-wal-fsync-delay=15m -``` - -CLI options take precedence over environment variables. - -Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/v2.0/reference/config-options/). - -### Database Setup - -InfluxDB 2.x requires authentication. A special API exists to bootstrap the first super-user in the database, along with an initial organization and bucket. It's possible to access this API manually, or to run it automatically via environment variables. - -#### Manual Setup - -If your InfluxDB container is running locally (or on a host exposed to the network), you can perform initial setup from outside the container using either the UI or the `influx` CLI. Find more about setting up InfluxDB using these methods [here](https://docs.influxdata.com/influxdb/v2.0/get-started/#set-up-influxdb). - -It's also possible to perform manual setup from within the container using `docker exec`. For example, if you start the container: - -```console -$ docker run -d -p 8086:8086 \ - --name influxdb2 \ - -v $PWD:/var/lib/influxdb2 \ - influxdb:2.0 -``` - -You can then run the `influx` client in the container: - -```console -$ docker exec influxdb2 influx setup \ - --username $USERNAME \ - --password $PASSWORD \ - --org $ORGANIZATION \ - --bucket $BUCKET -``` +- [`1.12-meta`, `1.12.2-meta`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.12/meta/Dockerfile) -Running setup from within the container will cause CLI configs to be written to `/etc/influxdb2/influx-configs`. You can then use the `influx` CLI from within the container to extract the generated admin token: +- [`1.12-meta-alpine`, `1.12.2-meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.12/meta/alpine/Dockerfile) -```console -# Using table output + cut -$ docker exec influxdb2 influx auth list \ - --user $USERNAME \ - --hide-headers | cut -f 3 +- [`1.11`, `1.11.8`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.11/Dockerfile) -# Using JSON output + jq -$ docker exec influxdb2 influx auth list \ - --user $USERNAME \ - --json | jq -r '.[].token' -``` +- [`1.11-alpine`, `1.11.8-alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.11/alpine/Dockerfile) -Alternatively, you could configure your initial InfluxDB run to mount `/etc/influxdb2` as a volume: +- [`1.11-data`, `1.11.9-data`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.11/data/Dockerfile) -```console -$ docker run -d -p 8086:8086 \ - --name influxdb2 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - influxdb:2.0 -``` +- [`1.11-data-alpine`, `1.11.9-data-alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.11/data/alpine/Dockerfile) -This will make the generated CLI configs available to the host. +- [`1.11-meta`, `1.11.9-meta`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.11/meta/Dockerfile) -#### Automated Setup +- [`1.11-meta-alpine`, `1.11.9-meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/1.11/meta/alpine/Dockerfile) -The InfluxDB image contains some extra functionality to automatically bootstrap the system. This functionality is enabled by setting the `DOCKER_INFLUXDB_INIT_MODE` environment variable to the value `setup` when running the container. Additional environment variables are used to configure the setup logic: +- [`2`, `2.7`, `2.7.12`, `latest`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/2.7/Dockerfile) -- `DOCKER_INFLUXDB_INIT_USERNAME`: The username to set for the system's initial super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_PASSWORD`: The password to set for the system's inital super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_ORG`: The name to set for the system's initial organization (**Required**). -- `DOCKER_INFLUXDB_INIT_BUCKET`: The name to set for the system's initial bucket (**Required**). -- `DOCKER_INFLUXDB_INIT_RETENTION`: The duration the system's initial bucket should retain data. If not set, the initial bucket will retain data forever. -- `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN`: The authentication token to associate with the system's initial super-user. If not set, a token will be auto-generated by the system. +- [`2-alpine`, `2.7-alpine`, `2.7.12-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/2.7/alpine/Dockerfile) -Automated setup will generate metadata files and CLI configurations. It's recommended to mount volumes at both paths to avoid losing data. +- [`3-core`, `3.6-core`, `3.6.0-core`, `core`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/3.6-core/Dockerfile) -For example, a minimal invocation of automated setup is: +- [`3-enterprise`, `3.6-enterprise`, `3.6.0-enterprise`, `enterprise`](https://github.com/influxdata/influxdata-docker/blob/90a822e13f120254eff09740f8b16a2b2b275cc8/influxdb/3.6-enterprise/Dockerfile) -```console -$ docker run -d -p 8086:8086 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - -e DOCKER_INFLUXDB_INIT_MODE=setup \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - influxdb:2.0 -``` +# Quick reference (cont.) -And an example using all available options is: - -```console -$ docker run -d -p 8086:8086 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - -e DOCKER_INFLUXDB_INIT_MODE=setup \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e DOCKER_INFLUXDB_INIT_RETENTION=1w \ - -e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token \ - influxdb:2.0 -``` +- **Where to file issues**: + [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues?q=) -**NOTE:** Automated setup will not run if an existing boltdb file is found at the configured path. This behavior allows for the InfluxDB container to reboot post-setup without encountering "DB is already set up" errors. +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/influxdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/influxdb/) -### Interacting with InfluxDB +- **Published image artifact details**: + [repo-info repo's `repos/influxdb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/influxdb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/influxdb)) + (image metadata, transfer size, etc) -Once an InfluxDB instance has completed initial setup, its APIs will unlock. See the main documentation site for reference information and examples on: +- **Image updates**: + [official-images repo's `library/influxdb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Finfluxdb) + [official-images repo's `library/influxdb` file](https://github.com/docker-library/official-images/blob/master/library/influxdb) ([history](https://github.com/docker-library/official-images/commits/master/library/influxdb)) -- [Writing data](https://docs.influxdata.com/influxdb/v2.0/write-data/) -- [Reading data](https://docs.influxdata.com/influxdb/v2.0/query-data/) -- [Configuring security](https://docs.influxdata.com/influxdb/v2.0/security/) -- [And more!](https://docs.influxdata.com/influxdb/v2.0/) +- **Source of this description**: + [docs repo's `influxdb/` directory](https://github.com/docker-library/docs/tree/master/influxdb) ([history](https://github.com/docker-library/docs/commits/master/influxdb)) -### Custom Initialization Scripts +# Notice -The InfluxDB image supports running arbitrary initialization scripts after initial system setup, on both the `setup` and `upgrade` paths. Scripts must have extension `.sh` and be mounted inside of the `/docker-entrypoint-initdb.d` directory. When multiple scripts are present, they will be executed in lexical sort order by name. +On February 3, 2026, the latest tag for InfluxDB will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your deployments. -As a convenience for script-writers, the image will export a number of variables into the environment before executing any scripts: +# What is InfluxDB? -- `INFLUX_CONFIGS_PATH`: Path to the CLI configs file written by `setup`/`upgrade` -- `INFLUX_HOST`: URL to the `influxd` instance running setup logic -- `DOCKER_INFLUXDB_INIT_USER_ID`: ID of the initial admin user created by `setup`/`upgrade` -- `DOCKER_INFLUXDB_INIT_ORG_ID`: ID of the initial organization created by `setup`/`upgrade` -- `DOCKER_INFLUXDB_INIT_BUCKET_ID`: ID of the initial bucket created by `setup`/`upgrade` +![logo](https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/influxdb/logo.png) -For example, if you wanted to grant write-access to an InfluxDB 1.x client on your initial bucket, you'd first create the file `$PWD/scripts/setup-v1.sh` with contents: +InfluxDB is the time series database platform designed to collect, store, and process large amounts of event and time series data. Ideal for monitoring (sensors, servers, applications, networks), financial analytics, and behavioral tracking. + +## Start InfluxDB 3 Core + +... via [`docker compose`](https://github.com/docker/compose) + +Example `compose.yaml` for `influxdb`: + +```yaml +# compose.yaml +name: influxdb3 +services: + influxdb3-core: + container_name: influxdb3-core + image: influxdb:3-core + ports: + - 8181:8181 + command: + - influxdb3 + - serve + - --node-id=node0 + - --object-store=file + - --data-dir=/var/lib/influxdb3/data + - --plugin-dir=/var/lib/influxdb3/plugins + volumes: + - type: bind + source: ~/.influxdb3/core/data + target: /var/lib/influxdb3/data + - type: bind + source: ~/.influxdb3/core/plugins + target: /var/lib/influxdb3/plugins +``` + +Alternatively, you can use the following command to start InfluxDB 3 Core: ```bash -#!/bin/bash -set -e - -influx v1 dbrp create \ - --bucket-id ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \ - --db ${V1_DB_NAME} \ - --rp ${V1_RP_NAME} \ - --default \ - --org ${DOCKER_INFLUXDB_INIT_ORG} - -influx v1 auth create \ - --username ${V1_AUTH_USERNAME} \ - --password ${V1_AUTH_PASSWORD} \ - --write-bucket ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \ - --org ${DOCKER_INFLUXDB_INIT_ORG} -``` - -Then you'd run: - -```console -$ docker run -p 8086:8086 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - -v $PWD/scripts:/docker-entrypoint-initdb.d \ - -e DOCKER_INFLUXDB_INIT_MODE=setup \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e V1_DB_NAME=v1-db \ - -e V1_RP_NAME=v1-rp \ - -e V1_AUTH_USERNAME=v1-user \ - -e V1_AUTH_PASSWORD=v1-password \ - influxdb:2.0 +docker run --rm -p 8181:8181 \ + -v $PWD/data:/var/lib/influxdb3/data \ + -v $PWD/plugins:/var/lib/influxdb3/plugins \ + influxdb:3-core influxdb3 serve \ + --node-id=my-node-0 \ + --object-store=file \ + --data-dir=/var/lib/influxdb3/data \ + --plugin-dir=/var/lib/influxdb3/plugins ``` -**NOTE:** Custom scripts will not run if an existing boltdb file is found at the configured path (causing `setup` or `upgrade` to be skipped). This behavior allows for the InfluxDB container to reboot post-initialization without encountering errors from non-idempotent script commands. - -### Upgrading from InfluxDB 1.x - -InfluxDB 2.x provides a 1.x-compatible API, but expects a different storage layout on disk. To bridge this mismatch, the InfluxDB image contains extra functionality to migrate 1.x data and config into 2.x layouts automatically before booting the `influxd` server. - -The automated upgrade process bootstraps an initial admin user, organization, and bucket in the system. Additional environment variables are used to configure the setup logic: - -- `DOCKER_INFLUXDB_INIT_USERNAME`: The username to set for the system's initial super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_PASSWORD`: The password to set for the system's inital super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_ORG`: The name to set for the system's initial organization (**Required**). -- `DOCKER_INFLUXDB_INIT_BUCKET`: The name to set for the system's initial bucket (**Required**). -- `DOCKER_INFLUXDB_INIT_RETENTION`: The duration the system's initial bucket should retain data. If not set, the initial bucket will retain data forever. -- `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN`: The authentication token to associate with the system's initial super-user. If not set, a token will be auto-generated by the system. - -It also requires extra volumes to be mounted into the 2.x container: - -- Data from the 1.x instance -- Custom config from the 1.x instance (if any) - -The upgrade process searches for mounted 1.x data / config in this priority order: - -1. A config file referred to by the `DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG` environment variable -2. A data directory referred to by the `DOCKER_INFLUXDB_INIT_UPGRADE_V1_DIR` environment variable -3. A config file mounted at `/etc/influxdb/influxdb.conf` -4. A data directory mounted at `/var/lib/influxdb` - -Finally, the `DOCKER_INFLUXDB_INIT_MODE` environment variable must be set to `upgrade`. +InfluxDB 3 Core starts with: -Automated upgrade will generate both data and config files, by default under `/var/lib/influxdb2` and `/etc/influxdb2`. It's recommended to mount volumes at both paths to avoid losing data. +- Data persistence at `/var/lib/influxdb3/data` +- Python processing engine enabled with plugin directory +- HTTP API listening on port `8181` -**NOTE:** Automated upgrade will not run if an existing boltdb file is found at the configured path. This behavior allows for the InfluxDB container to reboot post-upgrade without overwriting migrated data. +### Using InfluxDB 3 Core -Find more about the InfluxDB upgrade process [here](https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/). See below for examples of common upgrade scenarios. +After starting your InfluxDB 3 server, follow the [Get Started guide](https://docs.influxdata.com/influxdb3/core/get-started/) to create an authorization token and start writing, querying, and processing data via the built-in `influxdb3` CLI or the HTTP API. -#### Upgrade Example - Minimal +### Recommended tools for InfluxDB 3 Core -Assume you've been running a minimal InfluxDB 1.x deployment: +Use the following tools with InfluxDB 3 Core: -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - influxdb:1.8 -``` - -To upgrade this deployment to InfluxDB 2.x, stop the running InfluxDB 1.x container, then run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - -v influxdb2:/var/lib/influxdb2 \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - influxdb:2.0 -``` - -#### Upgrade Example - Custom InfluxDB 1.x Config - -Assume you've been running an InfluxDB 1.x deployment with customized config: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf \ - influxdb:1.8 -``` - -To upgrade this deployment to InfluxDB 2.x, stop the running container, then run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - -v influxdb2:/var/lib/influxdb2 \ - -v influxdb2-config:/etc/influxdb2 \ - -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - influxdb:2.0 -``` - -#### Upgrade Example - Custom Paths - -Assume you've been running an InfluxDB 1.x deployment with data and config mounted at custom paths: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/root/influxdb/data \ - -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf \ - influxdb:1.8 -config /root/influxdb/influxdb.conf -``` - -To upgrade this deployment to InfluxDB 2.x, first decide if you'd like to keep using custom paths, or use the InfluxDB 2.x defaults. If you decide to use the defaults, you'd stop the running InfluxDB 1.x container, then run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/root/influxdb/data \ - -v influxdb2:/var/lib/influxdb2 \ - -v influxdb2-config:/etc/influxdb2 \ - -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \ - influxdb:2.0 -``` - -To retain your custom paths, you'd run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/root/influxdb/data \ - -v influxdb2:/root/influxdb2/data \ - -v influxdb2-config:/etc/influxdb2 \ - -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_CONFIG_PATH=/root/influxdb2/config.toml \ - -e DOCKER_INFLUXDB_BOLT_PATH=/root/influxdb2/influxdb.bolt \ - -e DOCKER_INFLUXDB_ENGINE_PATH=/root/influxdb2/engine \ - influxdb:2.0 -``` - -### Upgrading from quay.io-hosted InfluxDB 2.x image - -Early Docker builds of InfluxDB 2.x were hosted at `quay.io/influxdb/influxdb`. The builds were very bare-bones, containing the `influx` and `influxd` binaries without any default configuration or helper scripts. By default, the `influxd` process stored data under `/root/.influxdbv2`. - -Starting with `v2.0.4`, we've restored our DockerHub build. This build defaults to storing data in `/var/lib/influxdb2`. Upgrading directly from `quay.io/influxdb/influxdb` to `influxdb:2.0.4` without modifying any settings will appear to cause data loss, as the new process won't be able to find your existing data files. - -To avoid this problem when migrating from `quay.io/influxdb/influxdb` to `influxdb:2.0`, you can use one of the following approaches. - -#### Change volume mount point - -If you don't mind using the new default path, you can switch the mount-point for the volume containing your data: - -```console -# Migrate from this: -$ docker run -p 8086:8086 \ - -v $PWD:/root/.influxdbv2 \ - quay.io/influxdb/influxdb:v2.0.3 - -# To this: -docker run -p 8086:8086 \ - -v $PWD:/var/lib/influxdb2 \ - influxdb:2.0 -``` +- **[InfluxDB 3 Explorer UI](https://docs.influxdata.com/influxdb3/explorer/)**: Visualize, query, and manage your data with the standalone web interface designed for InfluxDB 3. [View on Docker Hub](https://hub.docker.com/r/influxdata/influxdb3-ui) +- **[Telegraf](https://docs.influxdata.com/telegraf/v1/)**: Collect, transform, and send metrics from hundreds of sources directly to InfluxDB 3. [View on Docker Hub](https://hub.docker.com/_/telegraf) +- **[Official Client Libraries](https://docs.influxdata.com/influxdb3/core/reference/client-libraries/)**: Integrate InfluxDB 3 into your applications using supported libraries for Python, Go, JavaScript, and more. -#### Override default configs +### Customize server options -If you'd rather keep your data files in the home directory, you can override the container's default config: +Customize your instance with available [server options](https://docs.influxdata.com/influxdb3/core/reference/clis/influxdb3/serve/): -```console -# Migrate from this: -$ docker run -p 8086:8086 \ - -v $PWD:/root/.influxdbv2 \ - quay.io/influxdb/influxdb:v2.0.3 - -# To this: -docker run -p 8086:8086 \ - -e INFLUXD_BOLT_PATH=/root/.influxdbv2/influxd.bolt \ - -e INFLUXD_ENGINE_PATH=/root/.influxdbv2/engine \ - -v $PWD:/root/.influxdbv2 \ - influxdb:2.0 -``` - -See the section about configuration below for more ways to override the data paths. - -## Using this Image - InfluxDB 1.x - -### Running the container - -The InfluxDB image exposes a shared volume under `/var/lib/influxdb`, so you can mount a host directory to that point to access persisted container data. A typical invocation of the container might be: - -```console -$ docker run -p 8086:8086 \ - -v $PWD:/var/lib/influxdb \ - influxdb:1.8 +```bash + docker run --rm influxdb:3-core influxdb3 serve --help ``` -Modify `$PWD` to the directory where you want to store data associated with the InfluxDB container. +## Available InfluxDB variants -You can also have Docker control the volume mountpoint by using a named volume. +- `influxdb:3-core` - **Latest InfluxDB OSS** (InfluxDB 3 Core) +- `influxdb:2` - Previous generation OSS (InfluxDB v2) +- `influxdb:1.11` - InfluxDB v1 -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - influxdb:1.8 -``` +### InfluxDB 3 Core (`influxdb:3-core`) - Latest OSS -### Exposed Ports +- **Latest generation** using object storage with the InfluxDB 3 storage engine, Apache Arrow, and DataFusion SQL +- Sub-10ms queries and unlimited cardinality +- Supports SQL and InfluxQL queries +- Includes Python processing engine +- Designed for real-time monitoring and recent data +- Includes InfluxDB v1 and v2 compatibility APIs -The following ports are important and are used by InfluxDB. +### InfluxDB v2 (`influxdb:2`) -- 8086 HTTP API port -- 2003 Graphite support, if it is enabled +- Built on the TSM storage engine +- Supports Flux query language +- Integrated UI and dashboards +- Includes v1 compatibility API that supports InfluxQL -The HTTP API port will be automatically exposed when using `docker run -P`. +### InfluxDB v1 (`influxdb:1.11`) -### Configuration +- Built on the TSM storage engine +- Original version with InfluxQL query language +- Proven stability for existing deployments -InfluxDB can be either configured from a config file or using environment variables. To mount a configuration file and use it with the server, you can use this command: +### InfluxDB 3 Enterprise (license required) (`influxdb:3-enterprise`) -Generate the default configuration file: +Adds unlimited data retention, compaction, clustering, and high availability to InfluxDB 3 Core. -```console -$ docker run --rm influxdb:1.8 influxd config > influxdb.conf -``` +For setup instructions, see the [InfluxDB 3 Enterprise installation documentation](https://docs.influxdata.com/influxdb3/enterprise/install/). -Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB container. +### InfluxDB v1 Enterprise (license required) -```console -$ docker run -p 8086:8086 \ - -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \ - influxdb:1.8 -config /etc/influxdb/influxdb.conf -``` +- `influxdb:1.11-data` - Data nodes for clustering +- `influxdb:1.11-meta` - Meta nodes for cluster coordination (port 8091) -Modify `$PWD` to the directory where you want to store the configuration file. +For setup instructions, see the [InfluxDB v1 Enterprise Docker documentation](https://docs.influxdata.com/enterprise_influxdb/v1/introduction/installation/docker/). -For environment variables, the format is `INFLUXDB_$SECTION_$NAME`. All dashes (`-`) are replaced with underscores (`_`). If the variable isn't in a section, then omit that part. +## Version compatibility -Examples: +### Migration paths -```console -INFLUXDB_REPORTING_DISABLED=true -INFLUXDB_META_DIR=/path/to/metadir -INFLUXDB_DATA_QUERY_LOG_ENABLED=false -``` - -Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/v1.8/administration/config/). +To migrate from v1 or v2 to InfluxDB 3: -### Graphite +1. Dual-write new data to v1/v2 and InfluxDB 3. +2. Query historical data from v1/v2 and write it to InfluxDB 3. *InfluxDB 3 Enterprise is recommended for historical query capability.* -InfluxDB supports the Graphite line protocol, but the service and ports are not exposed by default. To run InfluxDB with Graphite support enabled, you can either use a configuration file or set the appropriate environment variables. Run InfluxDB with the default Graphite configuration: +## Using InfluxDB v2 -```console -docker run -p 8086:8086 -p 2003:2003 \ - -e INFLUXDB_GRAPHITE_ENABLED=true \ - influxdb:1.8 -``` +*InfluxDB v2 is a previous version. Consider InfluxDB 3 Core for new deployments.* -See the [README on GitHub](https://github.com/influxdata/influxdb/blob/master/services/graphite/README.md) for more detailed documentation to set up the Graphite service. In order to take advantage of graphite templates, you should use a configuration file by outputting a default configuration file using the steps above and modifying the `[[graphite]]` section. +Enter the following command to start InfluxDB v2 initialized with custom configuration: -### HTTP API - -Creating a DB named mydb: - -```console -$ curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb" -``` - -Inserting into the DB: - -```console -$ curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000' +```bash +docker run -d -p 8086:8086 \ + -v $PWD/data:/var/lib/influxdb2 \ + -v $PWD/config:/etc/influxdb2 \ + -e DOCKER_INFLUXDB_INIT_MODE=setup \ + -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ + -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ + -e DOCKER_INFLUXDB_INIT_ORG=my-org \ + -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ + influxdb:2 ``` -Read more about this in the [official documentation](https://docs.influxdata.com/influxdb/latest/guides/writing_data/) +After the container starts, visit [http://localhost:8086](http://localhost:8086) to view the UI. -### CLI / SHELL +For detailed instructions, see the [InfluxDB v2 Docker Compose documentation](https://docs.influxdata.com/influxdb/v2/install/use-docker-compose/). -Start the container: +## Using InfluxDB v1 -```console -$ docker run --name=influxdb -d -p 8086:8086 influxdb:1.8 -``` +*InfluxDB v1 is a previous version. Consider InfluxDB 3 Core for new deployments.* -Run the influx client in this container: - -```console -$ docker exec -it influxdb influx -``` - -Or run the influx client in a separate container: - -```console -$ docker run --rm --link=influxdb -it influxdb:1.8 influx -host influxdb +```bash +docker run -d -p 8086:8086 \ + -v $PWD:/var/lib/influxdb \ + influxdb:1.11 ``` -### Database Initialization - -The InfluxDB image contains some extra functionality for initializing a database. These options are not suggested for production, but are quite useful when running standalone instances for testing. +This starts InfluxDB v1 with: -The database initialization script will only be called when running `influxd`. It will not be executed when running any other program. +- HTTP API on port 8086 +- Data persisted to current directory -#### Environment Variables - -The InfluxDB image uses several environment variables to automatically configure certain parts of the server. They may significantly aid you in using this image. - -##### INFLUXDB_DB - -Automatically initializes a database with the name of this environment variable. - -##### INFLUXDB_HTTP_AUTH_ENABLED - -Enables authentication. Either this must be set or `auth-enabled = true` must be set within the configuration file for any authentication related options below to work. - -##### INFLUXDB_ADMIN_USER - -The name of the admin user to be created. If this is unset, no admin user is created. - -##### INFLUXDB_ADMIN_PASSWORD - -The password for the admin user configured with `INFLUXDB_ADMIN_USER`. If this is unset, a random password is generated and printed to standard out. - -##### INFLUXDB_USER - -The name of a user to be created with no privileges. If `INFLUXDB_DB` is set, this user will be granted read and write permissions for that database. - -##### INFLUXDB_USER_PASSWORD - -The password for the user configured with `INFLUXDB_USER`. If this is unset, a random password is generated and printed to standard out. - -##### INFLUXDB_READ_USER - -The name of a user to be created with read privileges on `INFLUXDB_DB`. If `INFLUXDB_DB` is not set, this user will have no granted permissions. - -##### INFLUXDB_READ_USER_PASSWORD - -The password for the user configured with `INFLUXDB_READ_USER`. If this is unset, a random password is generated and printed to standard out. - -##### INFLUXDB_WRITE_USER - -The name of a user to be created with write privileges on `INFLUXDB_DB`. If `INFLUXDB_DB` is not set, this user will have no granted permissions. - -##### INFLUXDB_WRITE_USER_PASSWORD - -The password for the user configured with `INFLUXDB_WRITE_USER`. If this is unset, a random password is generated and printed to standard out. - -#### Initialization Files - -If the Docker image finds any files with the extensions `.sh` or `.iql` inside of the `/docker-entrypoint-initdb.d` folder, it will execute them. The order they are executed in is determined by the shell. This is usually alphabetical order. - -#### Manually Initializing the Database - -To manually initialize the database and exit, the `/init-influxdb.sh` script can be used directly. It takes the same parameters as the `influxd run` command. As an example: - -```console -$ docker run --rm \ - -e INFLUXDB_DB=db0 \ - -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \ - -e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=secretpassword \ - -v $PWD:/var/lib/influxdb \ - influxdb:1.8 /init-influxdb.sh -``` - -The above would create the database `db0`, create an admin user with the password `supersecretpassword`, then create the `telegraf` user with your telegraf's secret password. It would then exit and leave behind any files it created in the volume that you mounted. +For more information, see the [InfluxDB v1 Docker documentation](https://docs.influxdata.com/influxdb/v1/introduction/install/docker/). For v1 Enterprise installation, see the [InfluxDB Enterprise v1 documentation](https://docs.influxdata.com/enterprise_influxdb/v1/introduction/installation/docker/). # Image Variants @@ -666,135 +260,6 @@ This variant is useful when final image size being as small as possible is your To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). -## `influxdb:data` - -*This image requires a valid license key from InfluxData.* Please visit our [products page](https://www.influxdata.com/products/) to learn more. - -This image contains the enterprise data node package for clustering. It supports all of the same options as the InfluxDB 1.x OSS image, but it needs port 8088 to be exposed to the meta nodes. - -Refer to the `influxdb:meta` variant for directions on how to setup a cluster. - -## `influxdb:meta` - -*This image requires a valid license key from InfluxData.* Please visit our [products page](https://www.influxdata.com/products/) to learn more. - -This image contains the enterprise meta node package for clustering. It is meant to be used in conjunction with the `influxdb:data` package of the same version. - -### Using this Image - -#### Specifying the license key - -The license key can be specified using either an environment variable or by overriding the configuration file. If you specify the license key directly, the container needs to be able to access the InfluxData portal. - -```console -$ docker run -p 8089:8089 -p 8091:8091 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= - influxdb:meta -``` - -#### Running the container - -The examples below will use docker's built-in networking capability. If you use the port exposing feature, the host port and the container port need to be the same. - -First, create a docker network: - -```console -$ docker network create influxdb -``` - -Start three meta nodes. This is the suggested number of meta nodes. We do not recommend running more or less. If you choose to run more or less, be sure that the number of meta nodes is odd. The hostname must be set on each container to the address that will be used to access the meta node. When using docker networks, the hostname should be made the same as the name of the container. - -```console -$ docker run -d --name=influxdb-meta-0 --network=influxdb \ - -h influxdb-meta-0 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - influxdb:meta -$ docker run -d --name=influxdb-meta-1 --network=influxdb \ - -h influxdb-meta-1 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - influxdb:meta -$ docker run -d --name=influxdb-meta-2 --network=influxdb \ - -h influxdb-meta-2 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - influxdb:meta -``` - -When setting the hostname, you can use `-h ` or you can directly set the environment variable using `-e INFLUXDB_HOSTNAME=`. - -After starting the meta nodes, you need to tell them about each other. Choose one of the meta nodes and run `influxd-ctl` in the container. - -```console -$ docker exec influxdb-meta-0 \ - influxd-ctl add-meta influxdb-meta-1:8091 -$ docker exec influxdb-meta-0 \ - influxd-ctl add-meta influxdb-meta-2:8091 -``` - -Or you can just start a single meta node. If you setup a single meta node, you do not need to use `influxd-ctl add-meta`. - -```console -$ docker run -d --name=influxdb-meta --network=influxdb \ - -h influxdb-meta \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - influxdb:meta -single-server -``` - -#### Connecting the data nodes - -Start the data nodes using `influxdb:data` with similar command line arguments to the meta nodes. You can start as many data nodes as are allowed by your license. - -```console -$ docker run -d --name=influxdb-data-0 --network=influxdb \ - -h influxdb-data-0 \ - -e INFLUXDB_LICENSE_KEY= \ - influxdb:data -``` - -You can add `-p 8086:8086` to expose the http port to the host machine. After starting the container, choose one of the meta nodes and add the data node to it. - -```console -$ docker exec influxdb-meta-0 \ - influxd-ctl add-data influxdb-data-0:8088 -``` - -Perform these same steps for any other data nodes that you want to add. - -You can now connect to any of the running data nodes to use your cluster. - -See the [influxdb](https://hub.docker.com/_/influxdb/) image documentation for more details on how to use the data node images. - -#### Configuration - -InfluxDB Meta can be either configured from a config file or using environment variables. To mount a configuration file and use it with the server, you can use this command: - -Generate the default configuration file: - -```console -$ docker run --rm influxdb:meta influxd-meta config > influxdb-meta.conf -``` - -Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB Meta container. - -```console -$ docker run \ - -v $PWD/influxdb-meta.conf:/etc/influxdb/influxdb-meta.conf:ro \ - influxdb -config /etc/influxdb/influxdb-meta.conf -``` - -Modify `$PWD` to the directory where you want to store the configuration file. - -For environment variables, the format is `INFLUXDB_$SECTION_$NAME`. All dashes (`-`) are replaced with underscores (`_`). If the variable isn't in a section, then omit that part. - -Examples: - -```console -INFLUXDB_REPORTING_DISABLED=true -INFLUXDB_META_DIR=/path/to/metadir -INFLUXDB_ENTERPRISE_REGISTRATION_ENABLED=true -``` - -Find more about configuring InfluxDB Meta [here](http://docs.influxdata.com/enterprise_influxdb/latest/production_installation/meta_node_installation/). - # License View [license information](https://github.com/influxdata/influxdb/blob/master/LICENSE) for the software contained in this image. diff --git a/influxdb/compose.yaml b/influxdb/compose.yaml new file mode 100644 index 000000000000..f5d514d3d457 --- /dev/null +++ b/influxdb/compose.yaml @@ -0,0 +1,22 @@ +# compose.yaml +name: influxdb3 +services: + influxdb3-core: + container_name: influxdb3-core + image: influxdb:3-core + ports: + - 8181:8181 + command: + - influxdb3 + - serve + - --node-id=node0 + - --object-store=file + - --data-dir=/var/lib/influxdb3/data + - --plugin-dir=/var/lib/influxdb3/plugins + volumes: + - type: bind + source: ~/.influxdb3/core/data + target: /var/lib/influxdb3/data + - type: bind + source: ~/.influxdb3/core/plugins + target: /var/lib/influxdb3/plugins diff --git a/influxdb/content.md b/influxdb/content.md index 83ebe353d489..53d4594e2442 100644 --- a/influxdb/content.md +++ b/influxdb/content.md @@ -1,585 +1,141 @@ -# InfluxDB +# Notice -InfluxDB is a time series database built from the ground up to handle high write and query loads. InfluxDB is meant to be used as a backing store for any use case involving large amounts of timestamped data, including DevOps monitoring, application metrics, IoT sensor data, and real-time analytics. +On February 3, 2026, the latest tag for InfluxDB will point to InfluxDB 3 Core. To avoid unexpected upgrades, use specific version tags in your deployments. -[InfluxDB Documentation](https://docs.influxdata.com/influxdb/latest/) +# What is InfluxDB? %%LOGO%% -## Using this Image - InfluxDB 2.x +InfluxDB is the time series database platform designed to collect, store, and process large amounts of event and time series data. Ideal for monitoring (sensors, servers, applications, networks), financial analytics, and behavioral tracking. -### Quick start +## Start InfluxDB 3 Core -Using this image is pretty easy, but there are a few things you should know. +%%COMPOSE%% -- You should forward TCP port 8086 -- You should mount a volume in /var/lib/influxdb2 - -```console -$ docker run \ - -p 8086:8086 \ - -v myInfluxVolume:/var/lib/influxdb2 \ - %%IMAGE%%:latest -``` - -After starting the container you can use the web interface at http://localhost:8086/ to setup and customize your Influx database. - -Find more about API Endpoints & Ports [here](https://docs.influxdata.com/influxdb/v2.5/reference/api/). - -### Configuration - -InfluxDB can be configured using a mix of a config file, environment variables, and CLI options. To mount a configuration file and use it with the server, you can use this command to generate the default configuration file: - -```console -$ docker run --rm %%IMAGE%%:2.0 influxd print-config > config.yml -``` - -Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB container: - -```console -$ docker run -p 8086:8086 \ - -v $PWD/config.yml:/etc/influxdb2/config.yml \ - %%IMAGE%%:2.0 -``` - -Modify `$PWD` to be the directory where you want to store the configuration file. - -Individual config settings can be overridden by environment variables. The variables must be named using the format `INFLUXD_${SNAKE_CASE_NAME}`. The `SNAKE_CASE_NAME` for an option will be the option's name with all dashes (`-`) replaced by underscores (`_`), in all caps. - -Examples: - -```console -# Config setting: bolt-path -INFLUXD_BOLT_PATH=/root/influxdb.bolt -# Config setting: no-tasks -INFLUXD_NO_TASKS=true -# Config setting: storage-wal-fsync-delay -INFLUXD_STORAGE_WAL_FSYNC_DELAY=15m -``` - -Finally, all config options can be passed as CLI options: - -```console -$ docker run -p 8086:8086 \ - %%IMAGE%%:2.0 --storage-wal-fsync-delay=15m -``` - -CLI options take precedence over environment variables. - -Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/v2.0/reference/config-options/). - -### Database Setup - -InfluxDB 2.x requires authentication. A special API exists to bootstrap the first super-user in the database, along with an initial organization and bucket. It's possible to access this API manually, or to run it automatically via environment variables. - -#### Manual Setup - -If your InfluxDB container is running locally (or on a host exposed to the network), you can perform initial setup from outside the container using either the UI or the `influx` CLI. Find more about setting up InfluxDB using these methods [here](https://docs.influxdata.com/influxdb/v2.0/get-started/#set-up-influxdb). - -It's also possible to perform manual setup from within the container using `docker exec`. For example, if you start the container: - -```console -$ docker run -d -p 8086:8086 \ - --name influxdb2 \ - -v $PWD:/var/lib/influxdb2 \ - %%IMAGE%%:2.0 -``` - -You can then run the `influx` client in the container: - -```console -$ docker exec influxdb2 influx setup \ - --username $USERNAME \ - --password $PASSWORD \ - --org $ORGANIZATION \ - --bucket $BUCKET -``` - -Running setup from within the container will cause CLI configs to be written to `/etc/influxdb2/influx-configs`. You can then use the `influx` CLI from within the container to extract the generated admin token: - -```console -# Using table output + cut -$ docker exec influxdb2 influx auth list \ - --user $USERNAME \ - --hide-headers | cut -f 3 - -# Using JSON output + jq -$ docker exec influxdb2 influx auth list \ - --user $USERNAME \ - --json | jq -r '.[].token' -``` - -Alternatively, you could configure your initial InfluxDB run to mount `/etc/influxdb2` as a volume: - -```console -$ docker run -d -p 8086:8086 \ - --name influxdb2 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - %%IMAGE%%:2.0 -``` - -This will make the generated CLI configs available to the host. - -#### Automated Setup - -The InfluxDB image contains some extra functionality to automatically bootstrap the system. This functionality is enabled by setting the `DOCKER_INFLUXDB_INIT_MODE` environment variable to the value `setup` when running the container. Additional environment variables are used to configure the setup logic: - -- `DOCKER_INFLUXDB_INIT_USERNAME`: The username to set for the system's initial super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_PASSWORD`: The password to set for the system's inital super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_ORG`: The name to set for the system's initial organization (**Required**). -- `DOCKER_INFLUXDB_INIT_BUCKET`: The name to set for the system's initial bucket (**Required**). -- `DOCKER_INFLUXDB_INIT_RETENTION`: The duration the system's initial bucket should retain data. If not set, the initial bucket will retain data forever. -- `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN`: The authentication token to associate with the system's initial super-user. If not set, a token will be auto-generated by the system. - -Automated setup will generate metadata files and CLI configurations. It's recommended to mount volumes at both paths to avoid losing data. - -For example, a minimal invocation of automated setup is: - -```console -$ docker run -d -p 8086:8086 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - -e DOCKER_INFLUXDB_INIT_MODE=setup \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - %%IMAGE%%:2.0 -``` - -And an example using all available options is: - -```console -$ docker run -d -p 8086:8086 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - -e DOCKER_INFLUXDB_INIT_MODE=setup \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e DOCKER_INFLUXDB_INIT_RETENTION=1w \ - -e DOCKER_INFLUXDB_INIT_ADMIN_TOKEN=my-super-secret-auth-token \ - %%IMAGE%%:2.0 -``` - -**NOTE:** Automated setup will not run if an existing boltdb file is found at the configured path. This behavior allows for the InfluxDB container to reboot post-setup without encountering "DB is already set up" errors. - -### Interacting with InfluxDB - -Once an InfluxDB instance has completed initial setup, its APIs will unlock. See the main documentation site for reference information and examples on: - -- [Writing data](https://docs.influxdata.com/influxdb/v2.0/write-data/) -- [Reading data](https://docs.influxdata.com/influxdb/v2.0/query-data/) -- [Configuring security](https://docs.influxdata.com/influxdb/v2.0/security/) -- [And more!](https://docs.influxdata.com/influxdb/v2.0/) - -### Custom Initialization Scripts - -The InfluxDB image supports running arbitrary initialization scripts after initial system setup, on both the `setup` and `upgrade` paths. Scripts must have extension `.sh` and be mounted inside of the `/docker-entrypoint-initdb.d` directory. When multiple scripts are present, they will be executed in lexical sort order by name. - -As a convenience for script-writers, the image will export a number of variables into the environment before executing any scripts: - -- `INFLUX_CONFIGS_PATH`: Path to the CLI configs file written by `setup`/`upgrade` -- `INFLUX_HOST`: URL to the `influxd` instance running setup logic -- `DOCKER_INFLUXDB_INIT_USER_ID`: ID of the initial admin user created by `setup`/`upgrade` -- `DOCKER_INFLUXDB_INIT_ORG_ID`: ID of the initial organization created by `setup`/`upgrade` -- `DOCKER_INFLUXDB_INIT_BUCKET_ID`: ID of the initial bucket created by `setup`/`upgrade` - -For example, if you wanted to grant write-access to an InfluxDB 1.x client on your initial bucket, you'd first create the file `$PWD/scripts/setup-v1.sh` with contents: +Alternatively, you can use the following command to start InfluxDB 3 Core: ```bash -#!/bin/bash -set -e - -influx v1 dbrp create \ - --bucket-id ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \ - --db ${V1_DB_NAME} \ - --rp ${V1_RP_NAME} \ - --default \ - --org ${DOCKER_INFLUXDB_INIT_ORG} - -influx v1 auth create \ - --username ${V1_AUTH_USERNAME} \ - --password ${V1_AUTH_PASSWORD} \ - --write-bucket ${DOCKER_INFLUXDB_INIT_BUCKET_ID} \ - --org ${DOCKER_INFLUXDB_INIT_ORG} +docker run --rm -p 8181:8181 \ + -v $PWD/data:/var/lib/influxdb3/data \ + -v $PWD/plugins:/var/lib/influxdb3/plugins \ + %%IMAGE%%:3-core influxdb3 serve \ + --node-id=my-node-0 \ + --object-store=file \ + --data-dir=/var/lib/influxdb3/data \ + --plugin-dir=/var/lib/influxdb3/plugins ``` -Then you'd run: - -```console -$ docker run -p 8086:8086 \ - -v $PWD/data:/var/lib/influxdb2 \ - -v $PWD/config:/etc/influxdb2 \ - -v $PWD/scripts:/docker-entrypoint-initdb.d \ - -e DOCKER_INFLUXDB_INIT_MODE=setup \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e V1_DB_NAME=v1-db \ - -e V1_RP_NAME=v1-rp \ - -e V1_AUTH_USERNAME=v1-user \ - -e V1_AUTH_PASSWORD=v1-password \ - %%IMAGE%%:2.0 -``` - -**NOTE:** Custom scripts will not run if an existing boltdb file is found at the configured path (causing `setup` or `upgrade` to be skipped). This behavior allows for the InfluxDB container to reboot post-initialization without encountering errors from non-idempotent script commands. - -### Upgrading from InfluxDB 1.x - -InfluxDB 2.x provides a 1.x-compatible API, but expects a different storage layout on disk. To bridge this mismatch, the InfluxDB image contains extra functionality to migrate 1.x data and config into 2.x layouts automatically before booting the `influxd` server. - -The automated upgrade process bootstraps an initial admin user, organization, and bucket in the system. Additional environment variables are used to configure the setup logic: - -- `DOCKER_INFLUXDB_INIT_USERNAME`: The username to set for the system's initial super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_PASSWORD`: The password to set for the system's inital super-user (**Required**). -- `DOCKER_INFLUXDB_INIT_ORG`: The name to set for the system's initial organization (**Required**). -- `DOCKER_INFLUXDB_INIT_BUCKET`: The name to set for the system's initial bucket (**Required**). -- `DOCKER_INFLUXDB_INIT_RETENTION`: The duration the system's initial bucket should retain data. If not set, the initial bucket will retain data forever. -- `DOCKER_INFLUXDB_INIT_ADMIN_TOKEN`: The authentication token to associate with the system's initial super-user. If not set, a token will be auto-generated by the system. - -It also requires extra volumes to be mounted into the 2.x container: - -- Data from the 1.x instance -- Custom config from the 1.x instance (if any) - -The upgrade process searches for mounted 1.x data / config in this priority order: +InfluxDB 3 Core starts with: -1. A config file referred to by the `DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG` environment variable -2. A data directory referred to by the `DOCKER_INFLUXDB_INIT_UPGRADE_V1_DIR` environment variable -3. A config file mounted at `/etc/influxdb/influxdb.conf` -4. A data directory mounted at `/var/lib/influxdb` +- Data persistence at `/var/lib/influxdb3/data` +- Python processing engine enabled with plugin directory +- HTTP API listening on port `8181` -Finally, the `DOCKER_INFLUXDB_INIT_MODE` environment variable must be set to `upgrade`. +### Using InfluxDB 3 Core -Automated upgrade will generate both data and config files, by default under `/var/lib/influxdb2` and `/etc/influxdb2`. It's recommended to mount volumes at both paths to avoid losing data. +After starting your InfluxDB 3 server, follow the [Get Started guide](https://docs.influxdata.com/influxdb3/core/get-started/) to create an authorization token and start writing, querying, and processing data via the built-in `influxdb3` CLI or the HTTP API. -**NOTE:** Automated upgrade will not run if an existing boltdb file is found at the configured path. This behavior allows for the InfluxDB container to reboot post-upgrade without overwriting migrated data. +### Recommended tools for InfluxDB 3 Core -Find more about the InfluxDB upgrade process [here](https://docs.influxdata.com/influxdb/v2.0/upgrade/v1-to-v2/). See below for examples of common upgrade scenarios. +Use the following tools with InfluxDB 3 Core: -#### Upgrade Example - Minimal +- **[InfluxDB 3 Explorer UI](https://docs.influxdata.com/influxdb3/explorer/)**: Visualize, query, and manage your data with the standalone web interface designed for InfluxDB 3. [View on Docker Hub](https://hub.docker.com/r/influxdata/influxdb3-ui) +- **[Telegraf](https://docs.influxdata.com/telegraf/v1/)**: Collect, transform, and send metrics from hundreds of sources directly to InfluxDB 3. [View on Docker Hub](https://hub.docker.com/_/telegraf) +- **[Official Client Libraries](https://docs.influxdata.com/influxdb3/core/reference/client-libraries/)**: Integrate InfluxDB 3 into your applications using supported libraries for Python, Go, JavaScript, and more. -Assume you've been running a minimal InfluxDB 1.x deployment: +### Customize server options -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - %%IMAGE%%:1.8 -``` - -To upgrade this deployment to InfluxDB 2.x, stop the running InfluxDB 1.x container, then run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - -v influxdb2:/var/lib/influxdb2 \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - %%IMAGE%%:2.0 -``` - -#### Upgrade Example - Custom InfluxDB 1.x Config - -Assume you've been running an InfluxDB 1.x deployment with customized config: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf \ - %%IMAGE%%:1.8 -``` - -To upgrade this deployment to InfluxDB 2.x, stop the running container, then run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - -v influxdb2:/var/lib/influxdb2 \ - -v influxdb2-config:/etc/influxdb2 \ - -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - %%IMAGE%%:2.0 -``` +Customize your instance with available [server options](https://docs.influxdata.com/influxdb3/core/reference/clis/influxdb3/serve/): -#### Upgrade Example - Custom Paths - -Assume you've been running an InfluxDB 1.x deployment with data and config mounted at custom paths: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/root/influxdb/data \ - -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf \ - %%IMAGE%%:1.8 -config /root/influxdb/influxdb.conf -``` - -To upgrade this deployment to InfluxDB 2.x, first decide if you'd like to keep using custom paths, or use the InfluxDB 2.x defaults. If you decide to use the defaults, you'd stop the running InfluxDB 1.x container, then run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/root/influxdb/data \ - -v influxdb2:/var/lib/influxdb2 \ - -v influxdb2-config:/etc/influxdb2 \ - -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \ - %%IMAGE%%:2.0 -``` - -To retain your custom paths, you'd run: - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/root/influxdb/data \ - -v influxdb2:/root/influxdb2/data \ - -v influxdb2-config:/etc/influxdb2 \ - -v $PWD/influxdb.conf:/root/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_INIT_MODE=upgrade \ - -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ - -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ - -e DOCKER_INFLUXDB_INIT_ORG=my-org \ - -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ - -e DOCKER_INFLUXDB_INIT_UPGRADE_V1_CONFIG=/root/influxdb/influxdb.conf \ - -e DOCKER_INFLUXDB_CONFIG_PATH=/root/influxdb2/config.toml \ - -e DOCKER_INFLUXDB_BOLT_PATH=/root/influxdb2/influxdb.bolt \ - -e DOCKER_INFLUXDB_ENGINE_PATH=/root/influxdb2/engine \ - %%IMAGE%%:2.0 -``` - -### Upgrading from quay.io-hosted InfluxDB 2.x image - -Early Docker builds of InfluxDB 2.x were hosted at `quay.io/influxdb/influxdb`. The builds were very bare-bones, containing the `influx` and `influxd` binaries without any default configuration or helper scripts. By default, the `influxd` process stored data under `/root/.influxdbv2`. - -Starting with `v2.0.4`, we've restored our DockerHub build. This build defaults to storing data in `/var/lib/influxdb2`. Upgrading directly from `quay.io/influxdb/influxdb` to `influxdb:2.0.4` without modifying any settings will appear to cause data loss, as the new process won't be able to find your existing data files. - -To avoid this problem when migrating from `quay.io/influxdb/influxdb` to `influxdb:2.0`, you can use one of the following approaches. - -#### Change volume mount point - -If you don't mind using the new default path, you can switch the mount-point for the volume containing your data: - -```console -# Migrate from this: -$ docker run -p 8086:8086 \ - -v $PWD:/root/.influxdbv2 \ - quay.io/influxdb/influxdb:v2.0.3 - -# To this: -docker run -p 8086:8086 \ - -v $PWD:/var/lib/influxdb2 \ - %%IMAGE%%:2.0 -``` - -#### Override default configs - -If you'd rather keep your data files in the home directory, you can override the container's default config: - -```console -# Migrate from this: -$ docker run -p 8086:8086 \ - -v $PWD:/root/.influxdbv2 \ - quay.io/influxdb/influxdb:v2.0.3 - -# To this: -docker run -p 8086:8086 \ - -e INFLUXD_BOLT_PATH=/root/.influxdbv2/influxd.bolt \ - -e INFLUXD_ENGINE_PATH=/root/.influxdbv2/engine \ - -v $PWD:/root/.influxdbv2 \ - %%IMAGE%%:2.0 -``` - -See the section about configuration below for more ways to override the data paths. - -## Using this Image - InfluxDB 1.x - -### Running the container - -The InfluxDB image exposes a shared volume under `/var/lib/influxdb`, so you can mount a host directory to that point to access persisted container data. A typical invocation of the container might be: - -```console -$ docker run -p 8086:8086 \ - -v $PWD:/var/lib/influxdb \ - %%IMAGE%%:1.8 -``` - -Modify `$PWD` to the directory where you want to store data associated with the InfluxDB container. - -You can also have Docker control the volume mountpoint by using a named volume. - -```console -$ docker run -p 8086:8086 \ - -v influxdb:/var/lib/influxdb \ - %%IMAGE%%:1.8 +```bash + docker run --rm %%IMAGE%%:3-core influxdb3 serve --help ``` -### Exposed Ports +## Available InfluxDB variants -The following ports are important and are used by InfluxDB. +- `%%IMAGE%%:3-core` - **Latest InfluxDB OSS** (InfluxDB 3 Core) +- `%%IMAGE%%:2` - Previous generation OSS (InfluxDB v2) +- `%%IMAGE%%:1.11` - InfluxDB v1 -- 8086 HTTP API port -- 2003 Graphite support, if it is enabled +### InfluxDB 3 Core (`%%IMAGE%%:3-core`) - Latest OSS -The HTTP API port will be automatically exposed when using `docker run -P`. +- **Latest generation** using object storage with the InfluxDB 3 storage engine, Apache Arrow, and DataFusion SQL +- Sub-10ms queries and unlimited cardinality +- Supports SQL and InfluxQL queries +- Includes Python processing engine +- Designed for real-time monitoring and recent data +- Includes InfluxDB v1 and v2 compatibility APIs -### Configuration +### InfluxDB v2 (`%%IMAGE%%:2`) -InfluxDB can be either configured from a config file or using environment variables. To mount a configuration file and use it with the server, you can use this command: +- Built on the TSM storage engine +- Supports Flux query language +- Integrated UI and dashboards +- Includes v1 compatibility API that supports InfluxQL -Generate the default configuration file: +### InfluxDB v1 (`%%IMAGE%%:1.11`) -```console -$ docker run --rm %%IMAGE%%:1.8 influxd config > influxdb.conf -``` +- Built on the TSM storage engine +- Original version with InfluxQL query language +- Proven stability for existing deployments -Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB container. +### InfluxDB 3 Enterprise (license required) (`%%IMAGE%%:3-enterprise`) -```console -$ docker run -p 8086:8086 \ - -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \ - %%IMAGE%%:1.8 -config /etc/influxdb/influxdb.conf -``` +Adds unlimited data retention, compaction, clustering, and high availability to InfluxDB 3 Core. -Modify `$PWD` to the directory where you want to store the configuration file. +For setup instructions, see the [InfluxDB 3 Enterprise installation documentation](https://docs.influxdata.com/influxdb3/enterprise/install/). -For environment variables, the format is `INFLUXDB_$SECTION_$NAME`. All dashes (`-`) are replaced with underscores (`_`). If the variable isn't in a section, then omit that part. +### InfluxDB v1 Enterprise (license required) -Examples: +- `%%IMAGE%%:1.11-data` - Data nodes for clustering +- `%%IMAGE%%:1.11-meta` - Meta nodes for cluster coordination (port 8091) -```console -INFLUXDB_REPORTING_DISABLED=true -INFLUXDB_META_DIR=/path/to/metadir -INFLUXDB_DATA_QUERY_LOG_ENABLED=false -``` - -Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/v1.8/administration/config/). +For setup instructions, see the [InfluxDB v1 Enterprise Docker documentation](https://docs.influxdata.com/enterprise_influxdb/v1/introduction/installation/docker/). -### Graphite +## Version compatibility -InfluxDB supports the Graphite line protocol, but the service and ports are not exposed by default. To run InfluxDB with Graphite support enabled, you can either use a configuration file or set the appropriate environment variables. Run InfluxDB with the default Graphite configuration: - -```console -docker run -p 8086:8086 -p 2003:2003 \ - -e INFLUXDB_GRAPHITE_ENABLED=true \ - %%IMAGE%%:1.8 -``` +### Migration paths -See the [README on GitHub](https://github.com/influxdata/influxdb/blob/master/services/graphite/README.md) for more detailed documentation to set up the Graphite service. In order to take advantage of graphite templates, you should use a configuration file by outputting a default configuration file using the steps above and modifying the `[[graphite]]` section. +To migrate from v1 or v2 to InfluxDB 3: -### HTTP API +1. Dual-write new data to v1/v2 and InfluxDB 3. +2. Query historical data from v1/v2 and write it to InfluxDB 3. *InfluxDB 3 Enterprise is recommended for historical query capability.* -Creating a DB named mydb: +## Using InfluxDB v2 -```console -$ curl -G http://localhost:8086/query --data-urlencode "q=CREATE DATABASE mydb" -``` +*InfluxDB v2 is a previous version. Consider InfluxDB 3 Core for new deployments.* -Inserting into the DB: +Enter the following command to start InfluxDB v2 initialized with custom configuration: -```console -$ curl -i -XPOST 'http://localhost:8086/write?db=mydb' --data-binary 'cpu_load_short,host=server01,region=us-west value=0.64 1434055562000000000' +```bash +docker run -d -p 8086:8086 \ + -v $PWD/data:/var/lib/influxdb2 \ + -v $PWD/config:/etc/influxdb2 \ + -e DOCKER_INFLUXDB_INIT_MODE=setup \ + -e DOCKER_INFLUXDB_INIT_USERNAME=my-user \ + -e DOCKER_INFLUXDB_INIT_PASSWORD=my-password \ + -e DOCKER_INFLUXDB_INIT_ORG=my-org \ + -e DOCKER_INFLUXDB_INIT_BUCKET=my-bucket \ + %%IMAGE%%:2 ``` -Read more about this in the [official documentation](https://docs.influxdata.com/influxdb/latest/guides/writing_data/) - -### CLI / SHELL - -Start the container: - -```console -$ docker run --name=influxdb -d -p 8086:8086 %%IMAGE%%:1.8 -``` +After the container starts, visit [http://localhost:8086](http://localhost:8086) to view the UI. -Run the influx client in this container: +For detailed instructions, see the [InfluxDB v2 Docker Compose documentation](https://docs.influxdata.com/influxdb/v2/install/use-docker-compose/). -```console -$ docker exec -it influxdb influx -``` +## Using InfluxDB v1 -Or run the influx client in a separate container: +*InfluxDB v1 is a previous version. Consider InfluxDB 3 Core for new deployments.* -```console -$ docker run --rm --link=influxdb -it %%IMAGE%%:1.8 influx -host influxdb +```bash +docker run -d -p 8086:8086 \ + -v $PWD:/var/lib/influxdb \ + %%IMAGE%%:1.11 ``` -### Database Initialization - -The InfluxDB image contains some extra functionality for initializing a database. These options are not suggested for production, but are quite useful when running standalone instances for testing. - -The database initialization script will only be called when running `influxd`. It will not be executed when running any other program. - -#### Environment Variables - -The InfluxDB image uses several environment variables to automatically configure certain parts of the server. They may significantly aid you in using this image. - -##### INFLUXDB_DB - -Automatically initializes a database with the name of this environment variable. - -##### INFLUXDB_HTTP_AUTH_ENABLED - -Enables authentication. Either this must be set or `auth-enabled = true` must be set within the configuration file for any authentication related options below to work. - -##### INFLUXDB_ADMIN_USER - -The name of the admin user to be created. If this is unset, no admin user is created. - -##### INFLUXDB_ADMIN_PASSWORD +This starts InfluxDB v1 with: -The password for the admin user configured with `INFLUXDB_ADMIN_USER`. If this is unset, a random password is generated and printed to standard out. - -##### INFLUXDB_USER - -The name of a user to be created with no privileges. If `INFLUXDB_DB` is set, this user will be granted read and write permissions for that database. - -##### INFLUXDB_USER_PASSWORD - -The password for the user configured with `INFLUXDB_USER`. If this is unset, a random password is generated and printed to standard out. - -##### INFLUXDB_READ_USER - -The name of a user to be created with read privileges on `INFLUXDB_DB`. If `INFLUXDB_DB` is not set, this user will have no granted permissions. - -##### INFLUXDB_READ_USER_PASSWORD - -The password for the user configured with `INFLUXDB_READ_USER`. If this is unset, a random password is generated and printed to standard out. - -##### INFLUXDB_WRITE_USER - -The name of a user to be created with write privileges on `INFLUXDB_DB`. If `INFLUXDB_DB` is not set, this user will have no granted permissions. - -##### INFLUXDB_WRITE_USER_PASSWORD - -The password for the user configured with `INFLUXDB_WRITE_USER`. If this is unset, a random password is generated and printed to standard out. - -#### Initialization Files - -If the Docker image finds any files with the extensions `.sh` or `.iql` inside of the `/docker-entrypoint-initdb.d` folder, it will execute them. The order they are executed in is determined by the shell. This is usually alphabetical order. - -#### Manually Initializing the Database - -To manually initialize the database and exit, the `/init-influxdb.sh` script can be used directly. It takes the same parameters as the `influxd run` command. As an example: - -```console -$ docker run --rm \ - -e INFLUXDB_DB=db0 \ - -e INFLUXDB_ADMIN_USER=admin -e INFLUXDB_ADMIN_PASSWORD=supersecretpassword \ - -e INFLUXDB_USER=telegraf -e INFLUXDB_USER_PASSWORD=secretpassword \ - -v $PWD:/var/lib/influxdb \ - %%IMAGE%%:1.8 /init-influxdb.sh -``` +- HTTP API on port 8086 +- Data persisted to current directory -The above would create the database `db0`, create an admin user with the password `supersecretpassword`, then create the `telegraf` user with your telegraf's secret password. It would then exit and leave behind any files it created in the volume that you mounted. +For more information, see the [InfluxDB v1 Docker documentation](https://docs.influxdata.com/influxdb/v1/introduction/install/docker/). For v1 Enterprise installation, see the [InfluxDB Enterprise v1 documentation](https://docs.influxdata.com/enterprise_influxdb/v1/introduction/installation/docker/). diff --git a/influxdb/get-help.md b/influxdb/get-help.md new file mode 100644 index 000000000000..ab1d9d0e956f --- /dev/null +++ b/influxdb/get-help.md @@ -0,0 +1 @@ +[InfluxDB Discord Server](https://discord.gg/9zaNCW2PRT) *(preferred for **InfluxDB 3 Core**, **InfluxDB 3 Enterprise**)*, [InfluxDB Community Slack](https://influxdata.com/slack) *(preferred for **InfluxDB v2**, **v1**)\* diff --git a/influxdb/metadata.json b/influxdb/metadata.json new file mode 100644 index 000000000000..56ca576ac81a --- /dev/null +++ b/influxdb/metadata.json @@ -0,0 +1,9 @@ +{ + "hub": { + "categories": [ + "data-science", + "databases-and-storage", + "internet-of-things" + ] + } +} diff --git a/influxdb/variant-data.md b/influxdb/variant-data.md deleted file mode 100644 index f6c6fc19c4f7..000000000000 --- a/influxdb/variant-data.md +++ /dev/null @@ -1,7 +0,0 @@ -## `%%IMAGE%%:data` - -*This image requires a valid license key from InfluxData.* Please visit our [products page](https://www.influxdata.com/products/) to learn more. - -This image contains the enterprise data node package for clustering. It supports all of the same options as the InfluxDB 1.x OSS image, but it needs port 8088 to be exposed to the meta nodes. - -Refer to the `influxdb:meta` variant for directions on how to setup a cluster. diff --git a/influxdb/variant-meta.md b/influxdb/variant-meta.md deleted file mode 100644 index f51af2fd136f..000000000000 --- a/influxdb/variant-meta.md +++ /dev/null @@ -1,120 +0,0 @@ -## `%%IMAGE%%:meta` - -*This image requires a valid license key from InfluxData.* Please visit our [products page](https://www.influxdata.com/products/) to learn more. - -This image contains the enterprise meta node package for clustering. It is meant to be used in conjunction with the `influxdb:data` package of the same version. - -### Using this Image - -#### Specifying the license key - -The license key can be specified using either an environment variable or by overriding the configuration file. If you specify the license key directly, the container needs to be able to access the InfluxData portal. - -```console -$ docker run -p 8089:8089 -p 8091:8091 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= - %%IMAGE%%:meta -``` - -#### Running the container - -The examples below will use docker's built-in networking capability. If you use the port exposing feature, the host port and the container port need to be the same. - -First, create a docker network: - -```console -$ docker network create influxdb -``` - -Start three meta nodes. This is the suggested number of meta nodes. We do not recommend running more or less. If you choose to run more or less, be sure that the number of meta nodes is odd. The hostname must be set on each container to the address that will be used to access the meta node. When using docker networks, the hostname should be made the same as the name of the container. - -```console -$ docker run -d --name=influxdb-meta-0 --network=influxdb \ - -h influxdb-meta-0 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - %%IMAGE%%:meta -$ docker run -d --name=influxdb-meta-1 --network=influxdb \ - -h influxdb-meta-1 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - %%IMAGE%%:meta -$ docker run -d --name=influxdb-meta-2 --network=influxdb \ - -h influxdb-meta-2 \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - %%IMAGE%%:meta -``` - -When setting the hostname, you can use `-h ` or you can directly set the environment variable using `-e INFLUXDB_HOSTNAME=`. - -After starting the meta nodes, you need to tell them about each other. Choose one of the meta nodes and run `influxd-ctl` in the container. - -```console -$ docker exec influxdb-meta-0 \ - influxd-ctl add-meta influxdb-meta-1:8091 -$ docker exec influxdb-meta-0 \ - influxd-ctl add-meta influxdb-meta-2:8091 -``` - -Or you can just start a single meta node. If you setup a single meta node, you do not need to use `influxd-ctl add-meta`. - -```console -$ docker run -d --name=influxdb-meta --network=influxdb \ - -h influxdb-meta \ - -e INFLUXDB_ENTERPRISE_LICENSE_KEY= \ - %%IMAGE%%:meta -single-server -``` - -#### Connecting the data nodes - -Start the data nodes using `%%IMAGE%%:data` with similar command line arguments to the meta nodes. You can start as many data nodes as are allowed by your license. - -```console -$ docker run -d --name=influxdb-data-0 --network=influxdb \ - -h influxdb-data-0 \ - -e INFLUXDB_LICENSE_KEY= \ - %%IMAGE%%:data -``` - -You can add `-p 8086:8086` to expose the http port to the host machine. After starting the container, choose one of the meta nodes and add the data node to it. - -```console -$ docker exec influxdb-meta-0 \ - influxd-ctl add-data influxdb-data-0:8088 -``` - -Perform these same steps for any other data nodes that you want to add. - -You can now connect to any of the running data nodes to use your cluster. - -See the [influxdb](https://hub.docker.com/_/influxdb/) image documentation for more details on how to use the data node images. - -#### Configuration - -InfluxDB Meta can be either configured from a config file or using environment variables. To mount a configuration file and use it with the server, you can use this command: - -Generate the default configuration file: - -```console -$ docker run --rm %%IMAGE%%:meta influxd-meta config > influxdb-meta.conf -``` - -Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB Meta container. - -```console -$ docker run \ - -v $PWD/influxdb-meta.conf:/etc/influxdb/influxdb-meta.conf:ro \ - %%IMAGE%% -config /etc/influxdb/influxdb-meta.conf -``` - -Modify `$PWD` to the directory where you want to store the configuration file. - -For environment variables, the format is `INFLUXDB_$SECTION_$NAME`. All dashes (`-`) are replaced with underscores (`_`). If the variable isn't in a section, then omit that part. - -Examples: - -```console -INFLUXDB_REPORTING_DISABLED=true -INFLUXDB_META_DIR=/path/to/metadir -INFLUXDB_ENTERPRISE_REGISTRATION_ENABLED=true -``` - -Find more about configuring InfluxDB Meta [here](http://docs.influxdata.com/enterprise_influxdb/latest/production_installation/meta_node_installation/). diff --git a/irssi/README.md b/irssi/README.md index 821d046ab93f..4d315f08345b 100644 --- a/irssi/README.md +++ b/irssi/README.md @@ -24,16 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.4.3`, `1.4`, `1`, `latest`](https://github.com/jessfraz/irssi/blob/980ac05787b560d131fdb3cf0fc45d097fd8d366/debian/Dockerfile) -- [`1.4.3-alpine`, `1.4-alpine`, `1-alpine`, `alpine`](https://github.com/jessfraz/irssi/blob/980ac05787b560d131fdb3cf0fc45d097fd8d366/alpine/Dockerfile) +- [`1.4.5`, `1.4`, `1`, `latest`, `1.4.5-trixie`, `1.4-trixie`, `1-trixie`, `trixie`](https://github.com/jessfraz/irssi/blob/071b281a8011fb7ac5c5d6b6928e13fee8ab719c/debian/Dockerfile) + +- [`1.4.5-alpine`, `1.4-alpine`, `1-alpine`, `alpine`, `1.4.5-alpine3.22`, `1.4-alpine3.22`, `1-alpine3.22`, `alpine3.22`](https://github.com/jessfraz/irssi/blob/48233da7bca13e68f9792da75119fe595f6192c9/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/jessfraz/irssi/issues](https://github.com/jessfraz/irssi/issues) + [https://github.com/jessfraz/irssi/issues](https://github.com/jessfraz/irssi/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/irssi/), [`arm32v5`](https://hub.docker.com/r/arm32v5/irssi/), [`arm32v6`](https://hub.docker.com/r/arm32v6/irssi/), [`arm32v7`](https://hub.docker.com/r/arm32v7/irssi/), [`arm64v8`](https://hub.docker.com/r/arm64v8/irssi/), [`i386`](https://hub.docker.com/r/i386/irssi/), [`mips64le`](https://hub.docker.com/r/mips64le/irssi/), [`ppc64le`](https://hub.docker.com/r/ppc64le/irssi/), [`s390x`](https://hub.docker.com/r/s390x/irssi/) + [`amd64`](https://hub.docker.com/r/amd64/irssi/), [`arm32v5`](https://hub.docker.com/r/arm32v5/irssi/), [`arm32v6`](https://hub.docker.com/r/arm32v6/irssi/), [`arm32v7`](https://hub.docker.com/r/arm32v7/irssi/), [`arm64v8`](https://hub.docker.com/r/arm64v8/irssi/), [`i386`](https://hub.docker.com/r/i386/irssi/), [`ppc64le`](https://hub.docker.com/r/ppc64le/irssi/), [`riscv64`](https://hub.docker.com/r/riscv64/irssi/), [`s390x`](https://hub.docker.com/r/s390x/irssi/) - **Published image artifact details**: [repo-info repo's `repos/irssi/` directory](https://github.com/docker-library/repo-info/blob/master/repos/irssi) ([history](https://github.com/docker-library/repo-info/commits/master/repos/irssi)) @@ -93,6 +94,8 @@ The `irssi` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. +Some of these tags may have names like trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. + ## `irssi:-alpine` This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. diff --git a/irssi/metadata.json b/irssi/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/irssi/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/jetty/README.md b/jetty/README.md index ae519bebef3a..3978cb2da1f7 100644 --- a/jetty/README.md +++ b/jetty/README.md @@ -24,52 +24,178 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`9.4.50-jre8-alpine`, `9.4-jre8-alpine`, `9-jre8-alpine`, `9.4.50-jre8-alpine-eclipse-temurin`, `9.4-jre8-alpine-eclipse-temurin`, `9-jre8-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jre8-alpine/Dockerfile) -- [`9.4.50-jre8`, `9.4-jre8`, `9-jre8`, `9.4.50-jre8-eclipse-temurin`, `9.4-jre8-eclipse-temurin`, `9-jre8-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jre8/Dockerfile) -- [`9.4.50-jre17-alpine`, `9.4-jre17-alpine`, `9-jre17-alpine`, `9.4.50-jre17-alpine-eclipse-temurin`, `9.4-jre17-alpine-eclipse-temurin`, `9-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jre17-alpine/Dockerfile) -- [`9.4.50-jre17`, `9.4-jre17`, `9-jre17`, `9.4.50-jre17-eclipse-temurin`, `9.4-jre17-eclipse-temurin`, `9-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jre17/Dockerfile) -- [`9.4.50-jre11-alpine`, `9.4-jre11-alpine`, `9-jre11-alpine`, `9.4.50-jre11-alpine-eclipse-temurin`, `9.4-jre11-alpine-eclipse-temurin`, `9-jre11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jre11-alpine/Dockerfile) -- [`9.4.50-jre11`, `9.4-jre11`, `9-jre11`, `9.4.50-jre11-eclipse-temurin`, `9.4-jre11-eclipse-temurin`, `9-jre11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jre11/Dockerfile) -- [`9.4.50-jdk8`, `9.4-jdk8`, `9-jdk8`, `9.4.50-jdk8-eclipse-temurin`, `9.4-jdk8-eclipse-temurin`, `9-jdk8-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jdk8/Dockerfile) -- [`9.4.50-jdk17-alpine`, `9.4-jdk17-alpine`, `9-jdk17-alpine`, `9.4.50-jdk17-alpine-eclipse-temurin`, `9.4-jdk17-alpine-eclipse-temurin`, `9-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jdk17-alpine/Dockerfile) -- [`9.4.50`, `9.4`, `9`, `9.4.50-jdk17`, `9.4-jdk17`, `9-jdk17`, `9.4.50-eclipse-temurin`, `9.4-eclipse-temurin`, `9-eclipse-temurin`, `9.4.50-jdk17-eclipse-temurin`, `9.4-jdk17-eclipse-temurin`, `9-jdk17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jdk17/Dockerfile) -- [`9.4.50-jdk11-alpine`, `9.4-jdk11-alpine`, `9-jdk11-alpine`, `9.4.50-jdk11-alpine-eclipse-temurin`, `9.4-jdk11-alpine-eclipse-temurin`, `9-jdk11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jdk11-alpine/Dockerfile) -- [`9.4.50-jdk11`, `9.4-jdk11`, `9-jdk11`, `9.4.50-jdk11-eclipse-temurin`, `9.4-jdk11-eclipse-temurin`, `9-jdk11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/9.4/jdk11/Dockerfile) -- [`11.0.13-jre17-alpine`, `11.0-jre17-alpine`, `11-jre17-alpine`, `11.0.13-jre17-alpine-eclipse-temurin`, `11.0-jre17-alpine-eclipse-temurin`, `11-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jre17-alpine/Dockerfile) -- [`11.0.13-jre17`, `11.0-jre17`, `11-jre17`, `11.0.13-jre17-eclipse-temurin`, `11.0-jre17-eclipse-temurin`, `11-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jre17/Dockerfile) -- [`11.0.13-jre11-alpine`, `11.0-jre11-alpine`, `11-jre11-alpine`, `11.0.13-jre11-alpine-eclipse-temurin`, `11.0-jre11-alpine-eclipse-temurin`, `11-jre11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jre11-alpine/Dockerfile) -- [`11.0.13-jre11`, `11.0-jre11`, `11-jre11`, `11.0.13-jre11-eclipse-temurin`, `11.0-jre11-eclipse-temurin`, `11-jre11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jre11/Dockerfile) -- [`11.0.13-jdk17-alpine`, `11.0-jdk17-alpine`, `11-jdk17-alpine`, `11.0.13-jdk17-alpine-eclipse-temurin`, `11.0-jdk17-alpine-eclipse-temurin`, `11-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jdk17-alpine/Dockerfile) -- [`11.0.13`, `11.0`, `11`, `11.0.13-jdk17`, `11.0-jdk17`, `11-jdk17`, `11.0.13-eclipse-temurin`, `11.0-eclipse-temurin`, `11-eclipse-temurin`, `11.0.13-jdk17-eclipse-temurin`, `11.0-jdk17-eclipse-temurin`, `11-jdk17-eclipse-temurin`, `latest`, `jdk17`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jdk17/Dockerfile) -- [`11.0.13-jdk11-alpine`, `11.0-jdk11-alpine`, `11-jdk11-alpine`, `11.0.13-jdk11-alpine-eclipse-temurin`, `11.0-jdk11-alpine-eclipse-temurin`, `11-jdk11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jdk11-alpine/Dockerfile) -- [`11.0.13-jdk11`, `11.0-jdk11`, `11-jdk11`, `11.0.13-jdk11-eclipse-temurin`, `11.0-jdk11-eclipse-temurin`, `11-jdk11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/11.0/jdk11/Dockerfile) -- [`10.0.13-jre17-alpine`, `10.0-jre17-alpine`, `10-jre17-alpine`, `10.0.13-jre17-alpine-eclipse-temurin`, `10.0-jre17-alpine-eclipse-temurin`, `10-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jre17-alpine/Dockerfile) -- [`10.0.13-jre17`, `10.0-jre17`, `10-jre17`, `10.0.13-jre17-eclipse-temurin`, `10.0-jre17-eclipse-temurin`, `10-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jre17/Dockerfile) -- [`10.0.13-jre11-alpine`, `10.0-jre11-alpine`, `10-jre11-alpine`, `10.0.13-jre11-alpine-eclipse-temurin`, `10.0-jre11-alpine-eclipse-temurin`, `10-jre11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jre11-alpine/Dockerfile) -- [`10.0.13-jre11`, `10.0-jre11`, `10-jre11`, `10.0.13-jre11-eclipse-temurin`, `10.0-jre11-eclipse-temurin`, `10-jre11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jre11/Dockerfile) -- [`10.0.13-jdk17-alpine`, `10.0-jdk17-alpine`, `10-jdk17-alpine`, `10.0.13-jdk17-alpine-eclipse-temurin`, `10.0-jdk17-alpine-eclipse-temurin`, `10-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jdk17-alpine/Dockerfile) -- [`10.0.13`, `10.0`, `10`, `10.0.13-jdk17`, `10.0-jdk17`, `10-jdk17`, `10.0.13-eclipse-temurin`, `10.0-eclipse-temurin`, `10-eclipse-temurin`, `10.0.13-jdk17-eclipse-temurin`, `10.0-jdk17-eclipse-temurin`, `10-jdk17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jdk17/Dockerfile) -- [`10.0.13-jdk11-alpine`, `10.0-jdk11-alpine`, `10-jdk11-alpine`, `10.0.13-jdk11-alpine-eclipse-temurin`, `10.0-jdk11-alpine-eclipse-temurin`, `10-jdk11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jdk11-alpine/Dockerfile) -- [`10.0.13-jdk11`, `10.0-jdk11`, `10-jdk11`, `10.0.13-jdk11-eclipse-temurin`, `10.0-jdk11-eclipse-temurin`, `10-jdk11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/eclipse-temurin/10.0/jdk11/Dockerfile) -- [`9.4.50-jdk8-alpine-amazoncorretto`, `9.4-jdk8-alpine-amazoncorretto`, `9-jdk8-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/9.4/jdk8-alpine/Dockerfile) -- [`9.4.50-jdk8-amazoncorretto`, `9.4-jdk8-amazoncorretto`, `9-jdk8-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/9.4/jdk8/Dockerfile) -- [`9.4.50-jdk17-alpine-amazoncorretto`, `9.4-jdk17-alpine-amazoncorretto`, `9-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/9.4/jdk17-alpine/Dockerfile) -- [`9.4.50-amazoncorretto`, `9.4-amazoncorretto`, `9-amazoncorretto`, `9.4.50-jdk17-amazoncorretto`, `9.4-jdk17-amazoncorretto`, `9-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/9.4/jdk17/Dockerfile) -- [`9.4.50-jdk11-alpine-amazoncorretto`, `9.4-jdk11-alpine-amazoncorretto`, `9-jdk11-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/9.4/jdk11-alpine/Dockerfile) -- [`9.4.50-jdk11-amazoncorretto`, `9.4-jdk11-amazoncorretto`, `9-jdk11-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/9.4/jdk11/Dockerfile) -- [`11.0.13-jdk17-alpine-amazoncorretto`, `11.0-jdk17-alpine-amazoncorretto`, `11-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/11.0/jdk17-alpine/Dockerfile) -- [`11.0.13-amazoncorretto`, `11.0-amazoncorretto`, `11-amazoncorretto`, `11.0.13-jdk17-amazoncorretto`, `11.0-jdk17-amazoncorretto`, `11-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/11.0/jdk17/Dockerfile) -- [`11.0.13-jdk11-alpine-amazoncorretto`, `11.0-jdk11-alpine-amazoncorretto`, `11-jdk11-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/11.0/jdk11-alpine/Dockerfile) -- [`11.0.13-jdk11-amazoncorretto`, `11.0-jdk11-amazoncorretto`, `11-jdk11-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/11.0/jdk11/Dockerfile) -- [`10.0.13-jdk17-alpine-amazoncorretto`, `10.0-jdk17-alpine-amazoncorretto`, `10-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/10.0/jdk17-alpine/Dockerfile) -- [`10.0.13-amazoncorretto`, `10.0-amazoncorretto`, `10-amazoncorretto`, `10.0.13-jdk17-amazoncorretto`, `10.0-jdk17-amazoncorretto`, `10-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/10.0/jdk17/Dockerfile) -- [`10.0.13-jdk11-alpine-amazoncorretto`, `10.0-jdk11-alpine-amazoncorretto`, `10-jdk11-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/10.0/jdk11-alpine/Dockerfile) -- [`10.0.13-jdk11-amazoncorretto`, `10.0-jdk11-amazoncorretto`, `10-jdk11-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/748caa5c7b1bd06ad238d9987757123cd4bc918a/amazoncorretto/10.0/jdk11/Dockerfile) +- [`9.4.58-jre8-alpine`, `9.4-jre8-alpine`, `9-jre8-alpine`, `9.4.58-jre8-alpine-eclipse-temurin`, `9.4-jre8-alpine-eclipse-temurin`, `9-jre8-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre8-alpine/Dockerfile) + +- [`9.4.58-jre8`, `9.4-jre8`, `9-jre8`, `9.4.58-jre8-eclipse-temurin`, `9.4-jre8-eclipse-temurin`, `9-jre8-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre8/Dockerfile) + +- [`9.4.58-jre21-alpine`, `9.4-jre21-alpine`, `9-jre21-alpine`, `9.4.58-jre21-alpine-eclipse-temurin`, `9.4-jre21-alpine-eclipse-temurin`, `9-jre21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre21-alpine/Dockerfile) + +- [`9.4.58-jre21`, `9.4-jre21`, `9-jre21`, `9.4.58-jre21-eclipse-temurin`, `9.4-jre21-eclipse-temurin`, `9-jre21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre21/Dockerfile) + +- [`9.4.58-jre17-alpine`, `9.4-jre17-alpine`, `9-jre17-alpine`, `9.4.58-jre17-alpine-eclipse-temurin`, `9.4-jre17-alpine-eclipse-temurin`, `9-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre17-alpine/Dockerfile) + +- [`9.4.58-jre17`, `9.4-jre17`, `9-jre17`, `9.4.58-jre17-eclipse-temurin`, `9.4-jre17-eclipse-temurin`, `9-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre17/Dockerfile) + +- [`9.4.58-jre11-alpine`, `9.4-jre11-alpine`, `9-jre11-alpine`, `9.4.58-jre11-alpine-eclipse-temurin`, `9.4-jre11-alpine-eclipse-temurin`, `9-jre11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre11-alpine/Dockerfile) + +- [`9.4.58-jre11`, `9.4-jre11`, `9-jre11`, `9.4.58-jre11-eclipse-temurin`, `9.4-jre11-eclipse-temurin`, `9-jre11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jre11/Dockerfile) + +- [`9.4.58-jdk8`, `9.4-jdk8`, `9-jdk8`, `9.4.58-jdk8-eclipse-temurin`, `9.4-jdk8-eclipse-temurin`, `9-jdk8-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk8/Dockerfile) + +- [`9.4.58-jdk21-alpine`, `9.4-jdk21-alpine`, `9-jdk21-alpine`, `9.4.58-jdk21-alpine-eclipse-temurin`, `9.4-jdk21-alpine-eclipse-temurin`, `9-jdk21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk21-alpine/Dockerfile) + +- [`9.4.58`, `9.4`, `9`, `9.4.58-jdk21`, `9.4-jdk21`, `9-jdk21`, `9.4.58-eclipse-temurin`, `9.4-eclipse-temurin`, `9-eclipse-temurin`, `9.4.58-jdk21-eclipse-temurin`, `9.4-jdk21-eclipse-temurin`, `9-jdk21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk21/Dockerfile) + +- [`9.4.58-jdk17-alpine`, `9.4-jdk17-alpine`, `9-jdk17-alpine`, `9.4.58-jdk17-alpine-eclipse-temurin`, `9.4-jdk17-alpine-eclipse-temurin`, `9-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk17-alpine/Dockerfile) + +- [`9.4.58-jdk17`, `9.4-jdk17`, `9-jdk17`, `9.4.58-jdk17-eclipse-temurin`, `9.4-jdk17-eclipse-temurin`, `9-jdk17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk17/Dockerfile) + +- [`9.4.58-jdk11-alpine`, `9.4-jdk11-alpine`, `9-jdk11-alpine`, `9.4.58-jdk11-alpine-eclipse-temurin`, `9.4-jdk11-alpine-eclipse-temurin`, `9-jdk11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk11-alpine/Dockerfile) + +- [`9.4.58-jdk11`, `9.4-jdk11`, `9-jdk11`, `9.4.58-jdk11-eclipse-temurin`, `9.4-jdk11-eclipse-temurin`, `9-jdk11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/eclipse-temurin/9.4/jdk11/Dockerfile) + +- [`12.1.3-jdk21-alpine`, `12.1-jdk21-alpine`, `12-jdk21-alpine`, `12.1.3-jdk21-alpine-eclipse-temurin`, `12.1-jdk21-alpine-eclipse-temurin`, `12-jdk21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.1/jdk21-alpine/Dockerfile) + +- [`12.1.3`, `12.1`, `12`, `12.1.3-jdk21`, `12.1-jdk21`, `12-jdk21`, `12.1.3-eclipse-temurin`, `12.1-eclipse-temurin`, `12-eclipse-temurin`, `12.1.3-jdk21-eclipse-temurin`, `12.1-jdk21-eclipse-temurin`, `12-jdk21-eclipse-temurin`, `latest`, `jdk21`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.1/jdk21/Dockerfile) + +- [`12.1.3-jdk17-alpine`, `12.1-jdk17-alpine`, `12-jdk17-alpine`, `12.1.3-jdk17-alpine-eclipse-temurin`, `12.1-jdk17-alpine-eclipse-temurin`, `12-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.1/jdk17-alpine/Dockerfile) + +- [`12.1.3-jdk17`, `12.1-jdk17`, `12-jdk17`, `12.1.3-jdk17-eclipse-temurin`, `12.1-jdk17-eclipse-temurin`, `12-jdk17-eclipse-temurin`, `jdk17`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.1/jdk17/Dockerfile) + +- [`12.0.29-jre21-alpine`, `12.0-jre21-alpine`, `12.0.29-jre21-alpine-eclipse-temurin`, `12.0-jre21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jre21-alpine/Dockerfile) + +- [`12.0.29-jre21`, `12.0-jre21`, `12.0.29-jre21-eclipse-temurin`, `12.0-jre21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jre21/Dockerfile) + +- [`12.0.29-jre17-alpine`, `12.0-jre17-alpine`, `12.0.29-jre17-alpine-eclipse-temurin`, `12.0-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jre17-alpine/Dockerfile) + +- [`12.0.29-jre17`, `12.0-jre17`, `12.0.29-jre17-eclipse-temurin`, `12.0-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jre17/Dockerfile) + +- [`12.0.29-jdk25-alpine`, `12.0-jdk25-alpine`, `12.0.29-jdk25-alpine-eclipse-temurin`, `12.0-jdk25-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jdk25-alpine/Dockerfile) + +- [`12.0.29-jdk25`, `12.0-jdk25`, `12.0.29-jdk25-eclipse-temurin`, `12.0-jdk25-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jdk25/Dockerfile) + +- [`12.0.29-jdk21-alpine`, `12.0-jdk21-alpine`, `12.0.29-jdk21-alpine-eclipse-temurin`, `12.0-jdk21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jdk21-alpine/Dockerfile) + +- [`12.0.29`, `12.0`, `12.0.29-jdk21`, `12.0-jdk21`, `12.0.29-eclipse-temurin`, `12.0-eclipse-temurin`, `12.0.29-jdk21-eclipse-temurin`, `12.0-jdk21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jdk21/Dockerfile) + +- [`12.0.29-jdk17-alpine`, `12.0-jdk17-alpine`, `12.0.29-jdk17-alpine-eclipse-temurin`, `12.0-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jdk17-alpine/Dockerfile) + +- [`12.0.29-jdk17`, `12.0-jdk17`, `12.0.29-jdk17-eclipse-temurin`, `12.0-jdk17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/eclipse-temurin/12.0/jdk17/Dockerfile) + +- [`11.0.26-jre21-alpine`, `11.0-jre21-alpine`, `11-jre21-alpine`, `11.0.26-jre21-alpine-eclipse-temurin`, `11.0-jre21-alpine-eclipse-temurin`, `11-jre21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jre21-alpine/Dockerfile) + +- [`11.0.26-jre21`, `11.0-jre21`, `11-jre21`, `11.0.26-jre21-eclipse-temurin`, `11.0-jre21-eclipse-temurin`, `11-jre21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jre21/Dockerfile) + +- [`11.0.26-jre17-alpine`, `11.0-jre17-alpine`, `11-jre17-alpine`, `11.0.26-jre17-alpine-eclipse-temurin`, `11.0-jre17-alpine-eclipse-temurin`, `11-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jre17-alpine/Dockerfile) + +- [`11.0.26-jre17`, `11.0-jre17`, `11-jre17`, `11.0.26-jre17-eclipse-temurin`, `11.0-jre17-eclipse-temurin`, `11-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jre17/Dockerfile) + +- [`11.0.26-jre11-alpine`, `11.0-jre11-alpine`, `11-jre11-alpine`, `11.0.26-jre11-alpine-eclipse-temurin`, `11.0-jre11-alpine-eclipse-temurin`, `11-jre11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jre11-alpine/Dockerfile) + +- [`11.0.26-jre11`, `11.0-jre11`, `11-jre11`, `11.0.26-jre11-eclipse-temurin`, `11.0-jre11-eclipse-temurin`, `11-jre11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jre11/Dockerfile) + +- [`11.0.26-jdk21-alpine`, `11.0-jdk21-alpine`, `11-jdk21-alpine`, `11.0.26-jdk21-alpine-eclipse-temurin`, `11.0-jdk21-alpine-eclipse-temurin`, `11-jdk21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jdk21-alpine/Dockerfile) + +- [`11.0.26`, `11.0`, `11`, `11.0.26-jdk21`, `11.0-jdk21`, `11-jdk21`, `11.0.26-eclipse-temurin`, `11.0-eclipse-temurin`, `11-eclipse-temurin`, `11.0.26-jdk21-eclipse-temurin`, `11.0-jdk21-eclipse-temurin`, `11-jdk21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jdk21/Dockerfile) + +- [`11.0.26-jdk17-alpine`, `11.0-jdk17-alpine`, `11-jdk17-alpine`, `11.0.26-jdk17-alpine-eclipse-temurin`, `11.0-jdk17-alpine-eclipse-temurin`, `11-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jdk17-alpine/Dockerfile) + +- [`11.0.26-jdk17`, `11.0-jdk17`, `11-jdk17`, `11.0.26-jdk17-eclipse-temurin`, `11.0-jdk17-eclipse-temurin`, `11-jdk17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jdk17/Dockerfile) + +- [`11.0.26-jdk11-alpine`, `11.0-jdk11-alpine`, `11-jdk11-alpine`, `11.0.26-jdk11-alpine-eclipse-temurin`, `11.0-jdk11-alpine-eclipse-temurin`, `11-jdk11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jdk11-alpine/Dockerfile) + +- [`11.0.26-jdk11`, `11.0-jdk11`, `11-jdk11`, `11.0.26-jdk11-eclipse-temurin`, `11.0-jdk11-eclipse-temurin`, `11-jdk11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/11.0/jdk11/Dockerfile) + +- [`10.0.26-jre21-alpine`, `10.0-jre21-alpine`, `10-jre21-alpine`, `10.0.26-jre21-alpine-eclipse-temurin`, `10.0-jre21-alpine-eclipse-temurin`, `10-jre21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jre21-alpine/Dockerfile) + +- [`10.0.26-jre21`, `10.0-jre21`, `10-jre21`, `10.0.26-jre21-eclipse-temurin`, `10.0-jre21-eclipse-temurin`, `10-jre21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jre21/Dockerfile) + +- [`10.0.26-jre17-alpine`, `10.0-jre17-alpine`, `10-jre17-alpine`, `10.0.26-jre17-alpine-eclipse-temurin`, `10.0-jre17-alpine-eclipse-temurin`, `10-jre17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jre17-alpine/Dockerfile) + +- [`10.0.26-jre17`, `10.0-jre17`, `10-jre17`, `10.0.26-jre17-eclipse-temurin`, `10.0-jre17-eclipse-temurin`, `10-jre17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jre17/Dockerfile) + +- [`10.0.26-jre11-alpine`, `10.0-jre11-alpine`, `10-jre11-alpine`, `10.0.26-jre11-alpine-eclipse-temurin`, `10.0-jre11-alpine-eclipse-temurin`, `10-jre11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jre11-alpine/Dockerfile) + +- [`10.0.26-jre11`, `10.0-jre11`, `10-jre11`, `10.0.26-jre11-eclipse-temurin`, `10.0-jre11-eclipse-temurin`, `10-jre11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jre11/Dockerfile) + +- [`10.0.26-jdk21-alpine`, `10.0-jdk21-alpine`, `10-jdk21-alpine`, `10.0.26-jdk21-alpine-eclipse-temurin`, `10.0-jdk21-alpine-eclipse-temurin`, `10-jdk21-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jdk21-alpine/Dockerfile) + +- [`10.0.26`, `10.0`, `10`, `10.0.26-jdk21`, `10.0-jdk21`, `10-jdk21`, `10.0.26-eclipse-temurin`, `10.0-eclipse-temurin`, `10-eclipse-temurin`, `10.0.26-jdk21-eclipse-temurin`, `10.0-jdk21-eclipse-temurin`, `10-jdk21-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jdk21/Dockerfile) + +- [`10.0.26-jdk17-alpine`, `10.0-jdk17-alpine`, `10-jdk17-alpine`, `10.0.26-jdk17-alpine-eclipse-temurin`, `10.0-jdk17-alpine-eclipse-temurin`, `10-jdk17-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jdk17-alpine/Dockerfile) + +- [`10.0.26-jdk17`, `10.0-jdk17`, `10-jdk17`, `10.0.26-jdk17-eclipse-temurin`, `10.0-jdk17-eclipse-temurin`, `10-jdk17-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jdk17/Dockerfile) + +- [`10.0.26-jdk11-alpine`, `10.0-jdk11-alpine`, `10-jdk11-alpine`, `10.0.26-jdk11-alpine-eclipse-temurin`, `10.0-jdk11-alpine-eclipse-temurin`, `10-jdk11-alpine-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jdk11-alpine/Dockerfile) + +- [`10.0.26-jdk11`, `10.0-jdk11`, `10-jdk11`, `10.0.26-jdk11-eclipse-temurin`, `10.0-jdk11-eclipse-temurin`, `10-jdk11-eclipse-temurin`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/eclipse-temurin/10.0/jdk11/Dockerfile) + +- [`9.4.58-jdk8-alpine-amazoncorretto`, `9.4-jdk8-alpine-amazoncorretto`, `9-jdk8-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk8-alpine/Dockerfile) + +- [`9.4.58-jdk8-amazoncorretto`, `9.4-jdk8-amazoncorretto`, `9-jdk8-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk8/Dockerfile) + +- [`9.4.58-jdk21-alpine-amazoncorretto`, `9.4-jdk21-alpine-amazoncorretto`, `9-jdk21-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk21-alpine/Dockerfile) + +- [`9.4.58-amazoncorretto`, `9.4-amazoncorretto`, `9-amazoncorretto`, `9.4.58-jdk21-amazoncorretto`, `9.4-jdk21-amazoncorretto`, `9-jdk21-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk21/Dockerfile) + +- [`9.4.58-jdk17-alpine-amazoncorretto`, `9.4-jdk17-alpine-amazoncorretto`, `9-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk17-alpine/Dockerfile) + +- [`9.4.58-jdk17-amazoncorretto`, `9.4-jdk17-amazoncorretto`, `9-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk17/Dockerfile) + +- [`9.4.58-jdk11-alpine-amazoncorretto`, `9.4-jdk11-alpine-amazoncorretto`, `9-jdk11-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk11-alpine/Dockerfile) + +- [`9.4.58-jdk11-amazoncorretto`, `9.4-jdk11-amazoncorretto`, `9-jdk11-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/eb7150579b055f3094f50e70f67678b9209baaf7/amazoncorretto/9.4/jdk11/Dockerfile) + +- [`12.1.3-jdk21-alpine-amazoncorretto`, `12.1-jdk21-alpine-amazoncorretto`, `12-jdk21-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.1/jdk21-alpine/Dockerfile) + +- [`12.1.3-amazoncorretto`, `12.1-amazoncorretto`, `12-amazoncorretto`, `12.1.3-jdk21-amazoncorretto`, `12.1-jdk21-amazoncorretto`, `12-jdk21-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.1/jdk21/Dockerfile) + +- [`12.1.3-jdk17-alpine-amazoncorretto`, `12.1-jdk17-alpine-amazoncorretto`, `12-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.1/jdk17-alpine/Dockerfile) + +- [`12.1.3-jdk17-amazoncorretto`, `12.1-jdk17-amazoncorretto`, `12-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.1/jdk17/Dockerfile) + +- [`12.0.29-jdk25-al2023-amazoncorretto`, `12.0-jdk25-al2023-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk25-al2023/Dockerfile) + +- [`12.0.29-jdk21-alpine-amazoncorretto`, `12.0-jdk21-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk21-alpine/Dockerfile) + +- [`12.0.29-jdk21-al2023-amazoncorretto`, `12.0-jdk21-al2023-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk21-al2023/Dockerfile) + +- [`12.0.29-amazoncorretto`, `12.0-amazoncorretto`, `12.0.29-jdk21-amazoncorretto`, `12.0-jdk21-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk21/Dockerfile) + +- [`12.0.29-jdk17-alpine-amazoncorretto`, `12.0-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk17-alpine/Dockerfile) + +- [`12.0.29-jdk17-al2023-amazoncorretto`, `12.0-jdk17-al2023-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk17-al2023/Dockerfile) + +- [`12.0.29-jdk17-amazoncorretto`, `12.0-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/1a8792e3fac436b76b13f1d622927a7a440de299/amazoncorretto/12.0/jdk17/Dockerfile) + +- [`11.0.26-jdk21-alpine-amazoncorretto`, `11.0-jdk21-alpine-amazoncorretto`, `11-jdk21-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/11.0/jdk21-alpine/Dockerfile) + +- [`11.0.26-amazoncorretto`, `11.0-amazoncorretto`, `11-amazoncorretto`, `11.0.26-jdk21-amazoncorretto`, `11.0-jdk21-amazoncorretto`, `11-jdk21-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/11.0/jdk21/Dockerfile) + +- [`11.0.26-jdk17-alpine-amazoncorretto`, `11.0-jdk17-alpine-amazoncorretto`, `11-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/11.0/jdk17-alpine/Dockerfile) + +- [`11.0.26-jdk17-amazoncorretto`, `11.0-jdk17-amazoncorretto`, `11-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/11.0/jdk17/Dockerfile) + +- [`11.0.26-jdk11-alpine-amazoncorretto`, `11.0-jdk11-alpine-amazoncorretto`, `11-jdk11-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/11.0/jdk11-alpine/Dockerfile) + +- [`11.0.26-jdk11-amazoncorretto`, `11.0-jdk11-amazoncorretto`, `11-jdk11-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/11.0/jdk11/Dockerfile) + +- [`10.0.26-jdk21-alpine-amazoncorretto`, `10.0-jdk21-alpine-amazoncorretto`, `10-jdk21-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/10.0/jdk21-alpine/Dockerfile) + +- [`10.0.26-amazoncorretto`, `10.0-amazoncorretto`, `10-amazoncorretto`, `10.0.26-jdk21-amazoncorretto`, `10.0-jdk21-amazoncorretto`, `10-jdk21-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/10.0/jdk21/Dockerfile) + +- [`10.0.26-jdk17-alpine-amazoncorretto`, `10.0-jdk17-alpine-amazoncorretto`, `10-jdk17-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/10.0/jdk17-alpine/Dockerfile) + +- [`10.0.26-jdk17-amazoncorretto`, `10.0-jdk17-amazoncorretto`, `10-jdk17-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/10.0/jdk17/Dockerfile) + +- [`10.0.26-jdk11-alpine-amazoncorretto`, `10.0-jdk11-alpine-amazoncorretto`, `10-jdk11-alpine-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/10.0/jdk11-alpine/Dockerfile) + +- [`10.0.26-jdk11-amazoncorretto`, `10.0-jdk11-amazoncorretto`, `10-jdk11-amazoncorretto`](https://github.com/eclipse/jetty.docker/blob/5a8d565c6959453cf11c2906059be01adc848004/amazoncorretto/10.0/jdk11/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/eclipse/jetty.docker/issues](https://github.com/eclipse/jetty.docker/issues) + [https://github.com/eclipse/jetty.docker/issues](https://github.com/eclipse/jetty.docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/jetty/), [`arm64v8`](https://hub.docker.com/r/arm64v8/jetty/) diff --git a/jetty/metadata.json b/jetty/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/jetty/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/jobber/README-short.txt b/jobber/README-short.txt deleted file mode 100644 index e9bb50e633e3..000000000000 --- a/jobber/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -DEPRECATED; Jobber is an alternative to cron, with sophisticated status-reporting and error-handling diff --git a/jobber/README.md b/jobber/README.md deleted file mode 100644 index 5e954e37e656..000000000000 --- a/jobber/README.md +++ /dev/null @@ -1,74 +0,0 @@ - - -# **DEPRECATION NOTICE** - -This project is not actively maintained. See [dshearer/jobber#334](https://github.com/dshearer/jobber/pull/334) for more details. - -# Quick reference - -- **Maintained by**: - [Jobber](https://github.com/dshearer/jobber-docker) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -- [`1.4.4-alpine3.11`, `1.4-alpine3.11`, `1-alpine3.11`, `latest`](https://github.com/dshearer/jobber-docker/blob/cd07d76987097b5389aa9be5f48df041aa74d699/alpine3.11/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/dshearer/jobber-docker/issues](https://github.com/dshearer/jobber-docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/jobber/) - -- **Published image artifact details**: - [repo-info repo's `repos/jobber/` directory](https://github.com/docker-library/repo-info/blob/master/repos/jobber) ([history](https://github.com/docker-library/repo-info/commits/master/repos/jobber)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/jobber` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjobber) - [official-images repo's `library/jobber` file](https://github.com/docker-library/official-images/blob/master/library/jobber) ([history](https://github.com/docker-library/official-images/commits/master/library/jobber)) - -- **Source of this description**: - [docs repo's `jobber/` directory](https://github.com/docker-library/docs/tree/master/jobber) ([history](https://github.com/docker-library/docs/commits/master/jobber)) - -# What is Jobber? - -Jobber is a utility for Unix-like systems that can run arbitrary commands, or "jobs", according to a schedule. It is meant to be a better alternative to the classic Unix utility cron. - -Along with the functionality of cron, Jobber also provides: - -- **Job execution history:** you can see what jobs have recently run, and whether they succeeded or failed. -- **Sophisticated error handling:** you can control whether and when a job is run again after it fails. For example, after an initial failure of a job, Jobber can schedule future runs using an exponential backoff algorithm. -- **Sophisticated error reporting:** you can control whether Jobber notifies you about each failed run, or only about jobs that have been disabled due to repeated failures. - -# How to use this image - -This image contains Jobber running as an unprivileged user named "jobberuser". The jobs are defined in the file /home/jobberuser/.jobber. By default, the only job is one that prints "Jobber is running!" every second. You should replace it with your own jobs. Refer to [the documentation](https://dshearer.github.io/jobber/doc/v1.4/#jobfile) to learn how to do this. - -# License - -[Jobber's license](https://github.com/dshearer/jobber/blob/master/LICENSE) - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `jobber/` directory](https://github.com/docker-library/repo-info/tree/master/repos/jobber). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/jobber/content.md b/jobber/content.md deleted file mode 100644 index bfda592de2a6..000000000000 --- a/jobber/content.md +++ /dev/null @@ -1,13 +0,0 @@ -# What is Jobber? - -Jobber is a utility for Unix-like systems that can run arbitrary commands, or "jobs", according to a schedule. It is meant to be a better alternative to the classic Unix utility cron. - -Along with the functionality of cron, Jobber also provides: - -- **Job execution history:** you can see what jobs have recently run, and whether they succeeded or failed. -- **Sophisticated error handling:** you can control whether and when a job is run again after it fails. For example, after an initial failure of a job, Jobber can schedule future runs using an exponential backoff algorithm. -- **Sophisticated error reporting:** you can control whether Jobber notifies you about each failed run, or only about jobs that have been disabled due to repeated failures. - -# How to use this image - -This image contains Jobber running as an unprivileged user named "jobberuser". The jobs are defined in the file /home/jobberuser/.jobber. By default, the only job is one that prints "Jobber is running!" every second. You should replace it with your own jobs. Refer to [the documentation](https://dshearer.github.io/jobber/doc/v1.4/#jobfile) to learn how to do this. diff --git a/jobber/deprecated.md b/jobber/deprecated.md deleted file mode 100644 index 4ebe5963e7d0..000000000000 --- a/jobber/deprecated.md +++ /dev/null @@ -1 +0,0 @@ -This project is not actively maintained. See [dshearer/jobber#334](https://github.com/dshearer/jobber/pull/334) for more details. diff --git a/jobber/github-repo b/jobber/github-repo deleted file mode 100644 index f2974babe9c4..000000000000 --- a/jobber/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/dshearer/jobber-docker diff --git a/jobber/license.md b/jobber/license.md deleted file mode 100644 index 91922f4333e3..000000000000 --- a/jobber/license.md +++ /dev/null @@ -1 +0,0 @@ -[Jobber's license](https://github.com/dshearer/jobber/blob/master/LICENSE) diff --git a/jobber/maintainer.md b/jobber/maintainer.md deleted file mode 100644 index bc73df28e84d..000000000000 --- a/jobber/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Jobber](%%GITHUB-REPO%%) diff --git a/joomla/README.md b/joomla/README.md index 717db1267d7c..87a75f86377a 100644 --- a/joomla/README.md +++ b/joomla/README.md @@ -17,30 +17,38 @@ WARNING: # Quick reference - **Maintained by**: - [Joomla!](https://github.com/joomla/docker-joomla) + [Joomla!](https://github.com/joomla-docker/docker-joomla) - **Where to get help**: [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`4.2.6`, `4.2`, `4`, `latest`, `4.2.6-apache`, `4.2-apache`, `4-apache`, `apache`, `4.2.6-php8.0`, `4.2-php8.0`, `4-php8.0`, `php8.0`, `4.2.6-php8.0-apache`, `4.2-php8.0-apache`, `4-php8.0-apache`, `php8.0-apache`](https://github.com/joomla-docker/docker-joomla/blob/935f419c927c2403f587565cda1576a66d52a451/4.2/php8.0/apache/Dockerfile) -- [`4.2.6-php8.0-fpm-alpine`, `4.2-php8.0-fpm-alpine`, `4-php8.0-fpm-alpine`, `php8.0-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/935f419c927c2403f587565cda1576a66d52a451/4.2/php8.0/fpm-alpine/Dockerfile) -- [`4.2.6-php8.0-fpm`, `4.2-php8.0-fpm`, `4-php8.0-fpm`, `php8.0-fpm`](https://github.com/joomla-docker/docker-joomla/blob/935f419c927c2403f587565cda1576a66d52a451/4.2/php8.0/fpm/Dockerfile) -- [`4.2.6-php8.1-apache`, `4.2-php8.1-apache`, `4-php8.1-apache`, `php8.1-apache`](https://github.com/joomla-docker/docker-joomla/blob/935f419c927c2403f587565cda1576a66d52a451/4.2/php8.1/apache/Dockerfile) -- [`4.2.6-php8.1-fpm-alpine`, `4.2-php8.1-fpm-alpine`, `4-php8.1-fpm-alpine`, `php8.1-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/935f419c927c2403f587565cda1576a66d52a451/4.2/php8.1/fpm-alpine/Dockerfile) -- [`4.2.6-php8.1-fpm`, `4.2-php8.1-fpm`, `4-php8.1-fpm`, `php8.1-fpm`](https://github.com/joomla-docker/docker-joomla/blob/935f419c927c2403f587565cda1576a66d52a451/4.2/php8.1/fpm/Dockerfile) -- [`3.10.11`, `3.10`, `3`, `3.10.11-apache`, `3.10-apache`, `3-apache`, `3.10.11-php8.0`, `3.10-php8.0`, `3-php8.0`, `3.10.11-php8.0-apache`, `3.10-php8.0-apache`, `3-php8.0-apache`](https://github.com/joomla-docker/docker-joomla/blob/17df17a732daa119f17bbcc6fb7759d7bf175d0a/3.10/php8.0/apache/Dockerfile) -- [`3.10.11-php8.0-fpm-alpine`, `3.10-php8.0-fpm-alpine`, `3-php8.0-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/17df17a732daa119f17bbcc6fb7759d7bf175d0a/3.10/php8.0/fpm-alpine/Dockerfile) -- [`3.10.11-php8.0-fpm`, `3.10-php8.0-fpm`, `3-php8.0-fpm`](https://github.com/joomla-docker/docker-joomla/blob/17df17a732daa119f17bbcc6fb7759d7bf175d0a/3.10/php8.0/fpm/Dockerfile) +- [`6.0.0`, `6.0`, `6`, `latest`, `6.0.0-apache`, `6.0-apache`, `6-apache`, `apache`, `6.0.0-php8.3`, `6.0-php8.3`, `6-php8.3`, `php8.3`, `6.0.0-php8.3-apache`, `6.0-php8.3-apache`, `6-php8.3-apache`, `php8.3-apache`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/6.0/php8.3/apache/Dockerfile) + +- [`6.0.0-php8.3-fpm-alpine`, `6.0-php8.3-fpm-alpine`, `6-php8.3-fpm-alpine`, `php8.3-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/6.0/php8.3/fpm-alpine/Dockerfile) + +- [`6.0.0-php8.3-fpm`, `6.0-php8.3-fpm`, `6-php8.3-fpm`, `php8.3-fpm`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/6.0/php8.3/fpm/Dockerfile) + +- [`5.4.0-php8.2-apache`, `5.4-php8.2-apache`, `5-php8.2-apache`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/5.4/php8.2/apache/Dockerfile) + +- [`5.4.0-php8.2-fpm-alpine`, `5.4-php8.2-fpm-alpine`, `5-php8.2-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/5.4/php8.2/fpm-alpine/Dockerfile) + +- [`5.4.0-php8.2-fpm`, `5.4-php8.2-fpm`, `5-php8.2-fpm`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/5.4/php8.2/fpm/Dockerfile) + +- [`5.4.0`, `5.4`, `5`, `5.4.0-apache`, `5.4-apache`, `5-apache`, `5.4.0-php8.3`, `5.4-php8.3`, `5-php8.3`, `5.4.0-php8.3-apache`, `5.4-php8.3-apache`, `5-php8.3-apache`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/5.4/php8.3/apache/Dockerfile) + +- [`5.4.0-php8.3-fpm-alpine`, `5.4-php8.3-fpm-alpine`, `5-php8.3-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/5.4/php8.3/fpm-alpine/Dockerfile) + +- [`5.4.0-php8.3-fpm`, `5.4-php8.3-fpm`, `5-php8.3-fpm`](https://github.com/joomla-docker/docker-joomla/blob/e59b7df4c07b205c5e3f9df912cf2af0fec9e383/5.4/php8.3/fpm/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/joomla/docker-joomla/issues](https://github.com/joomla/docker-joomla/issues) + [https://github.com/joomla-docker/docker-joomla/issues](https://github.com/joomla-docker/docker-joomla/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/joomla/), [`arm32v5`](https://hub.docker.com/r/arm32v5/joomla/), [`arm32v6`](https://hub.docker.com/r/arm32v6/joomla/), [`arm32v7`](https://hub.docker.com/r/arm32v7/joomla/), [`arm64v8`](https://hub.docker.com/r/arm64v8/joomla/), [`i386`](https://hub.docker.com/r/i386/joomla/), [`mips64le`](https://hub.docker.com/r/mips64le/joomla/), [`ppc64le`](https://hub.docker.com/r/ppc64le/joomla/), [`s390x`](https://hub.docker.com/r/s390x/joomla/) + [`amd64`](https://hub.docker.com/r/amd64/joomla/), [`arm32v5`](https://hub.docker.com/r/arm32v5/joomla/), [`arm32v6`](https://hub.docker.com/r/arm32v6/joomla/), [`arm32v7`](https://hub.docker.com/r/arm32v7/joomla/), [`arm64v8`](https://hub.docker.com/r/arm64v8/joomla/), [`i386`](https://hub.docker.com/r/i386/joomla/), [`ppc64le`](https://hub.docker.com/r/ppc64le/joomla/), [`riscv64`](https://hub.docker.com/r/riscv64/joomla/), [`s390x`](https://hub.docker.com/r/s390x/joomla/) - **Published image artifact details**: [repo-info repo's `repos/joomla/` directory](https://github.com/docker-library/repo-info/blob/master/repos/joomla) ([history](https://github.com/docker-library/repo-info/commits/master/repos/joomla)) @@ -64,68 +72,102 @@ Joomla is a free and open-source content management system (CMS) for publishing # How to use this image ```console -$ docker run --name some-joomla --link some-mysql:mysql -d joomla +$ docker run --name some-joomla --network some-network -d joomla ``` -The following environment variables are also honored for configuring your Joomla instance: +The following environment variables are honored for configuring your Joomla instance: - `-e JOOMLA_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) - `-e JOOMLA_DB_USER=...` (defaults to "root") - `-e JOOMLA_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) +- `-e JOOMLA_DB_PASSWORD_FILE=...` (path to a file containing the database password) - `-e JOOMLA_DB_NAME=...` (defaults to "joomla") +- `-e JOOMLA_DB_TYPE=...` (defaults to "mysqli" options: mysqli, pgsql) If the `JOOMLA_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `joomla` container, provided that the `JOOMLA_DB_USER` specified has the necessary permissions to create it. +The following environment variables are also honored for configuring auto deployment (skip the browser setup) for your Joomla instance: + +- `-e JOOMLA_SITE_NAME=...` (name of the Joomla site) +- `-e JOOMLA_ADMIN_USER=...` (full name of the Joomla administrator) +- `-e JOOMLA_ADMIN_USERNAME=...` (username of the Joomla administrator) +- `-e JOOMLA_ADMIN_PASSWORD=...` (password of the Joomla administrator) +- `-e JOOMLA_ADMIN_EMAIL=...` (email address of the Joomla administrator) +- `-e JOOMLA_EXTENSIONS_URLS=...` (semicolon-separated list of URLs to install Joomla extensions from) +- `-e JOOMLA_EXTENSIONS_PATHS=...` (semicolon-separated list of file paths to install Joomla extensions from) +- `-e JOOMLA_SMTP_HOST=...` (SMTP host for outgoing email) +- `-e JOOMLA_SMTP_HOST_PORT=...` (SMTP port for outgoing email) + If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: ```console -$ docker run --name some-joomla --link some-mysql:mysql -p 8080:80 -d joomla +$ docker run --name some-joomla --network some-network -p 8080:80 -d joomla ``` Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser. -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `JOOMLA_DB_HOST` along with the password in `JOOMLA_DB_PASSWORD` and the username in `JOOMLA_DB_USER` (if it is something other than `root`): +If you'd like to use an external database instead of a MySQL container, specify the hostname and port with `JOOMLA_DB_HOST` along with the password in `JOOMLA_DB_PASSWORD` and the username in `JOOMLA_DB_USER` (if it is something other than `root`): ```console -$ docker run --name some-joomla -e JOOMLA_DB_HOST=10.1.2.3:3306 \ +$ docker run --name some-joomla --network some-network -e JOOMLA_DB_HOST=10.1.2.3:3306 \ -e JOOMLA_DB_USER=... -e JOOMLA_DB_PASSWORD=... -d joomla ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `joomla`: +Example `compose.yaml` for `joomla`: ```yaml -version: '3.1' - services: + joomla: image: joomla restart: always - links: - - joomladb:mysql ports: - 8080:80 environment: - JOOMLA_DB_HOST: joomladb - JOOMLA_DB_PASSWORD: example - - joomladb: - image: mysql:5.6 + JOOMLA_DB_HOST: db + JOOMLA_DB_USER: joomla + JOOMLA_DB_PASSWORD: examplepass + JOOMLA_DB_NAME: joomla_db + JOOMLA_SITE_NAME: Joomla + JOOMLA_ADMIN_USER: Joomla Hero + JOOMLA_ADMIN_USERNAME: joomla + JOOMLA_ADMIN_PASSWORD: joomla@secured + JOOMLA_ADMIN_EMAIL: joomla@example.com + volumes: + - joomla_data:/var/www/html + networks: + - joomla_network + + db: + image: mysql:8.0 restart: always environment: - MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: joomla_db + MYSQL_USER: joomla + MYSQL_PASSWORD: examplepass + MYSQL_RANDOM_ROOT_PASSWORD: '1' + volumes: + - db_data:/var/lib/mysql + networks: + - joomla_network + +volumes: + joomla_data: + db_data: + +networks: + joomla_network: ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/joomla/stack.yml) - -Run `docker stack deploy -c stack.yml joomla` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Adding additional libraries / extensions This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins. There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size. -If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`joomla` Dockerfile](https://github.com/joomla/docker-joomla/blob/966275ada2148e343a68c8c03870f11cc7f5b89c/apache/Dockerfile#L7-L11) has an example of doing this. +If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`joomla` Dockerfile](https://github.com/joomla-docker/docker-joomla/blob/360f6bd96c80f72b020d2d9c8aae9daa6bca2887/5.1/php8.3/apache/Dockerfile#L51-L64) has an example of doing this. The following Docker Hub features can help with the task of keeping your dependent images up-to-date: diff --git a/joomla/compose.yaml b/joomla/compose.yaml new file mode 100644 index 000000000000..438e87771535 --- /dev/null +++ b/joomla/compose.yaml @@ -0,0 +1,41 @@ +services: + + joomla: + image: joomla + restart: always + ports: + - 8080:80 + environment: + JOOMLA_DB_HOST: db + JOOMLA_DB_USER: joomla + JOOMLA_DB_PASSWORD: examplepass + JOOMLA_DB_NAME: joomla_db + JOOMLA_SITE_NAME: Joomla + JOOMLA_ADMIN_USER: Joomla Hero + JOOMLA_ADMIN_USERNAME: joomla + JOOMLA_ADMIN_PASSWORD: joomla@secured + JOOMLA_ADMIN_EMAIL: joomla@example.com + volumes: + - joomla_data:/var/www/html + networks: + - joomla_network + + db: + image: mysql:8.0 + restart: always + environment: + MYSQL_DATABASE: joomla_db + MYSQL_USER: joomla + MYSQL_PASSWORD: examplepass + MYSQL_RANDOM_ROOT_PASSWORD: '1' + volumes: + - db_data:/var/lib/mysql + networks: + - joomla_network + +volumes: + joomla_data: + db_data: + +networks: + joomla_network: diff --git a/joomla/content.md b/joomla/content.md index 7ab6be806a4b..42e6dedd101d 100644 --- a/joomla/content.md +++ b/joomla/content.md @@ -9,42 +9,56 @@ Joomla is a free and open-source content management system (CMS) for publishing # How to use this image ```console -$ docker run --name some-%%REPO%% --link some-mysql:mysql -d %%IMAGE%% +$ docker run --name some-%%REPO%% --network some-network -d %%IMAGE%% ``` -The following environment variables are also honored for configuring your Joomla instance: +The following environment variables are honored for configuring your Joomla instance: - `-e JOOMLA_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) - `-e JOOMLA_DB_USER=...` (defaults to "root") - `-e JOOMLA_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) +- `-e JOOMLA_DB_PASSWORD_FILE=...` (path to a file containing the database password) - `-e JOOMLA_DB_NAME=...` (defaults to "joomla") +- `-e JOOMLA_DB_TYPE=...` (defaults to "mysqli" options: mysqli, pgsql) If the `JOOMLA_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `%%REPO%%` container, provided that the `JOOMLA_DB_USER` specified has the necessary permissions to create it. +The following environment variables are also honored for configuring auto deployment (skip the browser setup) for your Joomla instance: + +- `-e JOOMLA_SITE_NAME=...` (name of the Joomla site) +- `-e JOOMLA_ADMIN_USER=...` (full name of the Joomla administrator) +- `-e JOOMLA_ADMIN_USERNAME=...` (username of the Joomla administrator) +- `-e JOOMLA_ADMIN_PASSWORD=...` (password of the Joomla administrator) +- `-e JOOMLA_ADMIN_EMAIL=...` (email address of the Joomla administrator) +- `-e JOOMLA_EXTENSIONS_URLS=...` (semicolon-separated list of URLs to install Joomla extensions from) +- `-e JOOMLA_EXTENSIONS_PATHS=...` (semicolon-separated list of file paths to install Joomla extensions from) +- `-e JOOMLA_SMTP_HOST=...` (SMTP host for outgoing email) +- `-e JOOMLA_SMTP_HOST_PORT=...` (SMTP port for outgoing email) + If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: ```console -$ docker run --name some-%%REPO%% --link some-mysql:mysql -p 8080:80 -d %%IMAGE%% +$ docker run --name some-%%REPO%% --network some-network -p 8080:80 -d %%IMAGE%% ``` Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser. -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `JOOMLA_DB_HOST` along with the password in `JOOMLA_DB_PASSWORD` and the username in `JOOMLA_DB_USER` (if it is something other than `root`): +If you'd like to use an external database instead of a MySQL container, specify the hostname and port with `JOOMLA_DB_HOST` along with the password in `JOOMLA_DB_PASSWORD` and the username in `JOOMLA_DB_USER` (if it is something other than `root`): ```console -$ docker run --name some-%%REPO%% -e JOOMLA_DB_HOST=10.1.2.3:3306 \ - -e JOOMLA_DB_USER=... -e JOOMLA_DB_PASSWORD=... -d %%REPO%% +$ docker run --name some-%%REPO%% --network some-network -e JOOMLA_DB_HOST=10.1.2.3:3306 \ + -e JOOMLA_DB_USER=... -e JOOMLA_DB_PASSWORD=... -d %%IMAGE%% ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Adding additional libraries / extensions This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins. There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size. -If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`%%REPO%%` Dockerfile](https://github.com/joomla/docker-joomla/blob/966275ada2148e343a68c8c03870f11cc7f5b89c/apache/Dockerfile#L7-L11) has an example of doing this. +If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`%%REPO%%` Dockerfile](https://github.com/joomla-docker/docker-joomla/blob/360f6bd96c80f72b020d2d9c8aae9daa6bca2887/5.1/php8.3/apache/Dockerfile#L51-L64) has an example of doing this. The following Docker Hub features can help with the task of keeping your dependent images up-to-date: diff --git a/joomla/github-repo b/joomla/github-repo index 6bb120cbf247..4abb699f820b 100644 --- a/joomla/github-repo +++ b/joomla/github-repo @@ -1 +1 @@ -https://github.com/joomla/docker-joomla +https://github.com/joomla-docker/docker-joomla diff --git a/joomla/metadata.json b/joomla/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/joomla/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/joomla/stack.yml b/joomla/stack.yml deleted file mode 100644 index f1ac990db505..000000000000 --- a/joomla/stack.yml +++ /dev/null @@ -1,19 +0,0 @@ -version: '3.1' - -services: - joomla: - image: joomla - restart: always - links: - - joomladb:mysql - ports: - - 8080:80 - environment: - JOOMLA_DB_HOST: joomladb - JOOMLA_DB_PASSWORD: example - - joomladb: - image: mysql:5.6 - restart: always - environment: - MYSQL_ROOT_PASSWORD: example diff --git a/jruby/README.md b/jruby/README.md index 6bb743a1b9b4..c3fa22ce86f0 100644 --- a/jruby/README.md +++ b/jruby/README.md @@ -24,21 +24,82 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`, `9`, `9.4`, `9.4.0`, `9.4-jre`, `9.4-jre8`, `9.4.0-jre`, `9.4.0-jre8`, `9.4.0.0`, `9.4.0.0-jre`, `9.4.0.0-jre8`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.4/jre8/Dockerfile) -- [`9-jdk`, `9-jdk8`, `9.4-jdk`, `9.4-jdk8`, `9.4.0-jdk`, `9.4.0-jdk8`, `9.4.0.0-jdk`, `9.4.0.0-jdk8`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.4/jdk8/Dockerfile) -- [`9.4-jre11`, `9.4.0-jre11`, `9.4.0.0-jre11`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.4/jre11/Dockerfile) -- [`9.4-jdk11`, `9.4.0-jdk11`, `9.4.0.0-jdk11`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.4/jdk11/Dockerfile) -- [`9.4-jdk17`, `9.4.0-jdk17`, `9.4.0.0-jdk17`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.4/jdk17/Dockerfile) -- [`9.3`, `9.3.9`, `9.3-jre`, `9.3-jre8`, `9.3.9-jre`, `9.3.9-jre8`, `9.3.9.0`, `9.3.9.0-jre`, `9.3.9.0-jre8`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.3/jre8/Dockerfile) -- [`9.3-jdk`, `9.3-jdk8`, `9.3.9-jdk`, `9.3.9-jdk8`, `9.3.9.0-jdk`, `9.3.9.0-jdk8`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.3/jdk8/Dockerfile) -- [`9.3-jre11`, `9.3.9-jre11`, `9.3.9.0-jre11`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.3/jre11/Dockerfile) -- [`9.3-jdk11`, `9.3.9-jdk11`, `9.3.9.0-jdk11`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.3/jdk11/Dockerfile) -- [`9.3-jdk17`, `9.3.9-jdk17`, `9.3.9.0-jdk17`](https://github.com/jruby/docker-jruby/blob/500a1f58e7ad2be7d2af67f1b480b80ff6517314/9.3/jdk17/Dockerfile) +- [`latest`, `10`, `10.0`, `10.0.2`, `10.0-jre`, `10.0-jre21`, `10.0.2-jre`, `10.0.2-jre21`, `10.0.2.0`, `10.0.2.0-jre`, `10.0.2.0-jre21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0/jre21/Dockerfile) + +- [`10-jdk`, `10-jdk21`, `10.0-jdk`, `10.0-jdk21`, `10.0.2-jdk`, `10.0.2-jdk21`, `10.0.2.0-jdk`, `10.0.2.0-jdk21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0/jdk21/Dockerfile) + +- [`10.0-jre25`, `10.0.2-jre25`, `10.0.2.0-jre25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0/jre25/Dockerfile) + +- [`10.0-jdk25`, `10.0.2-jdk25`, `10.0.2.0-jdk25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0/jdk25/Dockerfile) + +- [`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`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jre8/Dockerfile) + +- [`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`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jdk8/Dockerfile) + +- [`9.4-jre11`, `9.4.14-jre11`, `9.4.14.0-jre11`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jre11/Dockerfile) + +- [`9.4-jdk11`, `9.4.14-jdk11`, `9.4.14.0-jdk11`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jdk11/Dockerfile) + +- [`9.4-jdk17`, `9.4.14-jdk17`, `9.4.14.0-jdk17`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jdk17/Dockerfile) + +- [`9.4-jre17`, `9.4.14-jre17`, `9.4.14.0-jre17`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jre17/Dockerfile) + +- [`9.4-jdk21`, `9.4.14-jdk21`, `9.4.14.0-jdk21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jdk21/Dockerfile) + +- [`9.4-jre21`, `9.4.14-jre21`, `9.4.14.0-jre21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jre21/Dockerfile) + +- [`9.4-jdk25`, `9.4.14-jdk25`, `9.4.14.0-jdk25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jdk25/Dockerfile) + +- [`9.4-jre25`, `9.4.14-jre25`, `9.4.14.0-jre25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4/jre25/Dockerfile) + +- [`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`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jre8/Dockerfile) + +- [`9.3-jdk`, `9.3-jdk8`, `9.3.15-jdk`, `9.3.15-jdk8`, `9.3.15.0-jdk`, `9.3.15.0-jdk8`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jdk8/Dockerfile) + +- [`9.3-jre11`, `9.3.15-jre11`, `9.3.15.0-jre11`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jre11/Dockerfile) + +- [`9.3-jdk11`, `9.3.15-jdk11`, `9.3.15.0-jdk11`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jdk11/Dockerfile) + +- [`9.3-jdk17`, `9.3.15-jdk17`, `9.3.15.0-jdk17`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jdk17/Dockerfile) + +- [`9.3-jre17`, `9.3.15-jre17`, `9.3.15.0-jre17`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jre17/Dockerfile) + +- [`9.3-jdk21`, `9.3.15-jdk21`, `9.3.15.0-jdk21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jdk21/Dockerfile) + +- [`9.3-jre21`, `9.3.15-jre21`, `9.3.15.0-jre21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.3/jre21/Dockerfile) + +- [`10.0-dev-jre21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0-dev/jre21/Dockerfile) + +- [`10.0-dev-jdk21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0-dev/jdk21/Dockerfile) + +- [`10.0-dev-jre25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0-dev/jre25/Dockerfile) + +- [`10.0-dev-jdk25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/10.0-dev/jdk25/Dockerfile) + +- [`9.4-dev-jre8`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jre8/Dockerfile) + +- [`9.4-dev-jdk8`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jdk8/Dockerfile) + +- [`9.4-dev-jre11`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jre11/Dockerfile) + +- [`9.4-dev-jdk11`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jdk11/Dockerfile) + +- [`9.4-dev-jdk17`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jdk17/Dockerfile) + +- [`9.4-dev-jre17`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jre17/Dockerfile) + +- [`9.4-dev-jdk21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jdk21/Dockerfile) + +- [`9.4-dev-jre21`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jre21/Dockerfile) + +- [`9.4-dev-jdk25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jdk25/Dockerfile) + +- [`9.4-dev-jre25`](https://github.com/jruby/docker-jruby/blob/a8ffc83b6e262b7171f26a07284053dc3de9af6b/9.4-dev/jre25/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/jruby/docker-jruby/issues](https://github.com/jruby/docker-jruby/issues) + [https://github.com/jruby/docker-jruby/issues](https://github.com/jruby/docker-jruby/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/jruby/), [`arm64v8`](https://hub.docker.com/r/arm64v8/jruby/) @@ -71,7 +132,7 @@ JRuby leverages the robustness and speed of the JVM while providing the same Rub ## Create a `Dockerfile` in your Ruby app project ```dockerfile -FROM jruby:9 +FROM jruby:10 # throw errors if Gemfile has been modified since Gemfile.lock RUN bundle config --global frozen 1 @@ -100,7 +161,7 @@ $ docker run -it --name my-running-script my-ruby-app The above example `Dockerfile` expects a `Gemfile.lock` in your app directory. This `docker run` will help you generate one. Run it in the root of your app, next to the `Gemfile`: ```console -$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app jruby:9 bundle install --system +$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app jruby:10 bundle install --system ``` ## Run a single Ruby script @@ -108,7 +169,7 @@ $ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app jruby:9 bundle install For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Ruby script by using the Ruby Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp jruby:9 jruby your-daemon-or-script.rb +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp jruby:10 jruby your-daemon-or-script.rb ``` # License diff --git a/jruby/content.md b/jruby/content.md index 5893b218b7e6..9c7b5dfe7baa 100644 --- a/jruby/content.md +++ b/jruby/content.md @@ -15,7 +15,7 @@ JRuby leverages the robustness and speed of the JVM while providing the same Rub ## Create a `Dockerfile` in your Ruby app project ```dockerfile -FROM %%IMAGE%%:9 +FROM %%IMAGE%%:10 # throw errors if Gemfile has been modified since Gemfile.lock RUN bundle config --global frozen 1 @@ -44,7 +44,7 @@ $ docker run -it --name my-running-script my-ruby-app The above example `Dockerfile` expects a `Gemfile.lock` in your app directory. This `docker run` will help you generate one. Run it in the root of your app, next to the `Gemfile`: ```console -$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:9 bundle install --system +$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:10 bundle install --system ``` ## Run a single Ruby script @@ -52,5 +52,5 @@ $ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:9 bundle inst For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Ruby script by using the Ruby Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:9 jruby your-daemon-or-script.rb +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:10 jruby your-daemon-or-script.rb ``` diff --git a/jruby/metadata.json b/jruby/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/jruby/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/julia/README.md b/julia/README.md index 7a7f350f7139..4086299347ac 100644 --- a/julia/README.md +++ b/julia/README.md @@ -28,56 +28,76 @@ WARNING: ## Simple Tags -- [`1.9.0-beta2-bullseye`, `1.9-rc-bullseye`, `rc-bullseye`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/bullseye/Dockerfile) -- [`1.9.0-beta2-buster`, `1.9-rc-buster`, `rc-buster`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/buster/Dockerfile) -- [`1.9.0-beta2-alpine3.17`, `1.9-rc-alpine3.17`, `rc-alpine3.17`, `1.9.0-beta2-alpine`, `1.9-rc-alpine`, `rc-alpine`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/alpine3.17/Dockerfile) -- [`1.9.0-beta2-alpine3.16`, `1.9-rc-alpine3.16`, `rc-alpine3.16`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/alpine3.16/Dockerfile) -- [`1.9.0-beta2-windowsservercore-ltsc2022`, `1.9-rc-windowsservercore-ltsc2022`, `rc-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/windows/windowsservercore-ltsc2022/Dockerfile) -- [`1.9.0-beta2-windowsservercore-1809`, `1.9-rc-windowsservercore-1809`, `rc-windowsservercore-1809`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/windows/windowsservercore-1809/Dockerfile) -- [`1.8.5-bullseye`, `1.8-bullseye`, `1-bullseye`, `bullseye`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/bullseye/Dockerfile) -- [`1.8.5-buster`, `1.8-buster`, `1-buster`, `buster`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/buster/Dockerfile) -- [`1.8.5-alpine3.17`, `1.8-alpine3.17`, `1-alpine3.17`, `alpine3.17`, `1.8.5-alpine`, `1.8-alpine`, `1-alpine`, `alpine`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/alpine3.17/Dockerfile) -- [`1.8.5-alpine3.16`, `1.8-alpine3.16`, `1-alpine3.16`, `alpine3.16`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/alpine3.16/Dockerfile) -- [`1.8.5-windowsservercore-ltsc2022`, `1.8-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/windows/windowsservercore-ltsc2022/Dockerfile) -- [`1.8.5-windowsservercore-1809`, `1.8-windowsservercore-1809`, `1-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/windows/windowsservercore-1809/Dockerfile) -- [`1.6.7-bullseye`, `1.6-bullseye`](https://github.com/docker-library/julia/blob/a7e28ee0b611690e7c81b37edbc04c64e38c9aa8/1.6/bullseye/Dockerfile) -- [`1.6.7-buster`, `1.6-buster`](https://github.com/docker-library/julia/blob/a7e28ee0b611690e7c81b37edbc04c64e38c9aa8/1.6/buster/Dockerfile) -- [`1.6.7-alpine3.17`, `1.6-alpine3.17`, `1.6.7-alpine`, `1.6-alpine`](https://github.com/docker-library/julia/blob/1d8e89b70dd373eceea2879c87e03cc20cafec1a/1.6/alpine3.17/Dockerfile) -- [`1.6.7-alpine3.16`, `1.6-alpine3.16`](https://github.com/docker-library/julia/blob/a7e28ee0b611690e7c81b37edbc04c64e38c9aa8/1.6/alpine3.16/Dockerfile) -- [`1.6.7-windowsservercore-ltsc2022`, `1.6-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/e0d0364c90b544d2d6de097e324ff7cc538613e8/1.6/windows/windowsservercore-ltsc2022/Dockerfile) -- [`1.6.7-windowsservercore-1809`, `1.6-windowsservercore-1809`](https://github.com/docker-library/julia/blob/e0d0364c90b544d2d6de097e324ff7cc538613e8/1.6/windows/windowsservercore-1809/Dockerfile) +- [`1.12.1-trixie`, `1.12-trixie`, `1-trixie`, `trixie`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/trixie/Dockerfile) + +- [`1.12.1-bookworm`, `1.12-bookworm`, `1-bookworm`, `bookworm`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/bookworm/Dockerfile) + +- [`1.12.1-windowsservercore-ltsc2025`, `1.12-windowsservercore-ltsc2025`, `1-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`1.12.1-windowsservercore-ltsc2022`, `1.12-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`1.11.7-trixie`, `1.11-trixie`](https://github.com/docker-library/julia/blob/fa7463443f367283c168038f5fe7d5f40a960b66/1.11/trixie/Dockerfile) + +- [`1.11.7-bookworm`, `1.11-bookworm`](https://github.com/docker-library/julia/blob/fa7463443f367283c168038f5fe7d5f40a960b66/1.11/bookworm/Dockerfile) + +- [`1.11.7-windowsservercore-ltsc2025`, `1.11-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/b490d5cf6af9a5f1d001d1a093c4313e8fbe3333/1.11/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`1.11.7-windowsservercore-ltsc2022`, `1.11-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/b490d5cf6af9a5f1d001d1a093c4313e8fbe3333/1.11/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`1.10.10-trixie`, `1.10-trixie`](https://github.com/docker-library/julia/blob/25081b47fd632d8a7140a3fede2da1db2d96aee5/1.10/trixie/Dockerfile) + +- [`1.10.10-bookworm`, `1.10-bookworm`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/bookworm/Dockerfile) + +- [`1.10.10-alpine3.22`, `1.10-alpine3.22`, `1.10.10-alpine`, `1.10-alpine`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/alpine3.22/Dockerfile) + +- [`1.10.10-alpine3.21`, `1.10-alpine3.21`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/alpine3.21/Dockerfile) + +- [`1.10.10-windowsservercore-ltsc2025`, `1.10-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`1.10.10-windowsservercore-ltsc2022`, `1.10-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/windows/windowsservercore-ltsc2022/Dockerfile) ## Shared Tags -- `1.9.0-beta2`, `1.9-rc`, `rc`: - - [`1.9.0-beta2-bullseye`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/bullseye/Dockerfile) - - [`1.9.0-beta2-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.9.0-beta2-windowsservercore-1809`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/windows/windowsservercore-1809/Dockerfile) -- `1.9.0-beta2-windowsservercore`, `1.9-rc-windowsservercore`, `rc-windowsservercore`: - - [`1.9.0-beta2-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.9.0-beta2-windowsservercore-1809`](https://github.com/docker-library/julia/blob/a60827b1feb946f2701759eb0dceb33c44c24ed3/1.9-rc/windows/windowsservercore-1809/Dockerfile) -- `1.8.5`, `1.8`, `1`, `latest`: - - [`1.8.5-bullseye`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/bullseye/Dockerfile) - - [`1.8.5-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.8.5-windowsservercore-1809`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/windows/windowsservercore-1809/Dockerfile) -- `1.8.5-windowsservercore`, `1.8-windowsservercore`, `1-windowsservercore`, `windowsservercore`: - - [`1.8.5-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.8.5-windowsservercore-1809`](https://github.com/docker-library/julia/blob/1f6b00c80fa154c1a93ca25bc51e5a70f081530c/1.8/windows/windowsservercore-1809/Dockerfile) -- `1.6.7`, `1.6`: - - [`1.6.7-bullseye`](https://github.com/docker-library/julia/blob/a7e28ee0b611690e7c81b37edbc04c64e38c9aa8/1.6/bullseye/Dockerfile) - - [`1.6.7-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/e0d0364c90b544d2d6de097e324ff7cc538613e8/1.6/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.6.7-windowsservercore-1809`](https://github.com/docker-library/julia/blob/e0d0364c90b544d2d6de097e324ff7cc538613e8/1.6/windows/windowsservercore-1809/Dockerfile) -- `1.6.7-windowsservercore`, `1.6-windowsservercore`: - - [`1.6.7-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/e0d0364c90b544d2d6de097e324ff7cc538613e8/1.6/windows/windowsservercore-ltsc2022/Dockerfile) - - [`1.6.7-windowsservercore-1809`](https://github.com/docker-library/julia/blob/e0d0364c90b544d2d6de097e324ff7cc538613e8/1.6/windows/windowsservercore-1809/Dockerfile) +- `1.12.1`, `1.12`, `1`, `latest`: + + - [`1.12.1-trixie`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/trixie/Dockerfile) + - [`1.12.1-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.12.1-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.12.1-windowsservercore`, `1.12-windowsservercore`, `1-windowsservercore`, `windowsservercore`: + + - [`1.12.1-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.12.1-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/0de44097e4e0a152abdf2091b9e397ff116d23f5/1.12/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.11.7`, `1.11`: + + - [`1.11.7-trixie`](https://github.com/docker-library/julia/blob/fa7463443f367283c168038f5fe7d5f40a960b66/1.11/trixie/Dockerfile) + - [`1.11.7-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/b490d5cf6af9a5f1d001d1a093c4313e8fbe3333/1.11/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.11.7-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/b490d5cf6af9a5f1d001d1a093c4313e8fbe3333/1.11/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.11.7-windowsservercore`, `1.11-windowsservercore`: + + - [`1.11.7-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/b490d5cf6af9a5f1d001d1a093c4313e8fbe3333/1.11/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.11.7-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/b490d5cf6af9a5f1d001d1a093c4313e8fbe3333/1.11/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.10.10`, `1.10`: + + - [`1.10.10-trixie`](https://github.com/docker-library/julia/blob/25081b47fd632d8a7140a3fede2da1db2d96aee5/1.10/trixie/Dockerfile) + - [`1.10.10-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.10.10-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/windows/windowsservercore-ltsc2022/Dockerfile) + +- `1.10.10-windowsservercore`, `1.10-windowsservercore`: + + - [`1.10.10-windowsservercore-ltsc2025`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/windows/windowsservercore-ltsc2025/Dockerfile) + - [`1.10.10-windowsservercore-ltsc2022`](https://github.com/docker-library/julia/blob/36ec8a84fe6a3ac59872725f20e892e472b45227/1.10/windows/windowsservercore-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/julia/issues](https://github.com/docker-library/julia/issues) + [https://github.com/docker-library/julia/issues](https://github.com/docker-library/julia/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/julia/), [`arm32v7`](https://hub.docker.com/r/arm32v7/julia/), [`arm64v8`](https://hub.docker.com/r/arm64v8/julia/), [`i386`](https://hub.docker.com/r/i386/julia/), [`windows-amd64`](https://hub.docker.com/r/winamd64/julia/) + [`amd64`](https://hub.docker.com/r/amd64/julia/), [`arm64v8`](https://hub.docker.com/r/arm64v8/julia/), [`i386`](https://hub.docker.com/r/i386/julia/), [`ppc64le`](https://hub.docker.com/r/ppc64le/julia/), [`windows-amd64`](https://hub.docker.com/r/winamd64/julia/) - **Published image artifact details**: [repo-info repo's `repos/julia/` directory](https://github.com/docker-library/repo-info/blob/master/repos/julia) ([history](https://github.com/docker-library/repo-info/commits/master/repos/julia)) @@ -128,24 +148,23 @@ The `julia` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. -## `julia:-alpine` +## `julia:-windowsservercore` -This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. -This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images. +For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) -## `julia:-windowsservercore` +## `julia:-alpine` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. -For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: +This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images. -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). # License diff --git a/julia/metadata.json b/julia/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/julia/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/kapacitor/README.md b/kapacitor/README.md index 4ca05ec6a851..2c423d8cbbce 100644 --- a/kapacitor/README.md +++ b/kapacitor/README.md @@ -24,18 +24,21 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.5`, `1.5.9`](https://github.com/influxdata/influxdata-docker/blob/410d53519af0edd30a985eacc3bb060258a2705d/kapacitor/1.5/Dockerfile) -- [`1.5-alpine`, `1.5.9-alpine`](https://github.com/influxdata/influxdata-docker/blob/410d53519af0edd30a985eacc3bb060258a2705d/kapacitor/1.5/alpine/Dockerfile) -- [`1.6`, `1.6.5`, `latest`](https://github.com/influxdata/influxdata-docker/blob/410d53519af0edd30a985eacc3bb060258a2705d/kapacitor/1.6/Dockerfile) -- [`1.6-alpine`, `1.6.5-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/410d53519af0edd30a985eacc3bb060258a2705d/kapacitor/1.6/alpine/Dockerfile) +- [`1.7`, `1.7.7`](https://github.com/influxdata/influxdata-docker/blob/add887456e0d1657ae822e422bc5cbb2b9b723bc/kapacitor/1.7/Dockerfile) + +- [`1.7-alpine`, `1.7.7-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/add887456e0d1657ae822e422bc5cbb2b9b723bc/kapacitor/1.7/alpine/Dockerfile) + +- [`1.8`, `1.8.2`, `latest`](https://github.com/influxdata/influxdata-docker/blob/add887456e0d1657ae822e422bc5cbb2b9b723bc/kapacitor/1.8/Dockerfile) + +- [`1.8-alpine`, `1.8.2-alpine`](https://github.com/influxdata/influxdata-docker/blob/add887456e0d1657ae822e422bc5cbb2b9b723bc/kapacitor/1.8/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues) + [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/kapacitor/), [`arm32v7`](https://hub.docker.com/r/arm32v7/kapacitor/), [`arm64v8`](https://hub.docker.com/r/arm64v8/kapacitor/) + [`amd64`](https://hub.docker.com/r/amd64/kapacitor/), [`arm64v8`](https://hub.docker.com/r/arm64v8/kapacitor/) - **Published image artifact details**: [repo-info repo's `repos/kapacitor/` directory](https://github.com/docker-library/repo-info/blob/master/repos/kapacitor) ([history](https://github.com/docker-library/repo-info/commits/master/repos/kapacitor)) @@ -117,6 +120,10 @@ KAPACITOR_INFLUXDB_0_URLS_0=http://influxdb:8086 Find more about configuring Kapacitor [here](https://docs.influxdata.com/kapacitor/latest/introduction/installation/) +#### Running as root + +Starting in v1.7.4, Kapacitor no longer run as the root user by default. If a user wants to revert this change they can set `KAPACITOR_AS_ROOT=true` as an environment variable. + ### Exposed Ports - 9092 TCP -- HTTP API endpoint diff --git a/kapacitor/content.md b/kapacitor/content.md index 9d0f75429a81..5975e3fc58ab 100644 --- a/kapacitor/content.md +++ b/kapacitor/content.md @@ -67,6 +67,10 @@ KAPACITOR_INFLUXDB_0_URLS_0=http://influxdb:8086 Find more about configuring Kapacitor [here](https://docs.influxdata.com/kapacitor/latest/introduction/installation/) +#### Running as root + +Starting in v1.7.4, Kapacitor no longer run as the root user by default. If a user wants to revert this change they can set `KAPACITOR_AS_ROOT=true` as an environment variable. + ### Exposed Ports - 9092 TCP -- HTTP API endpoint diff --git a/kapacitor/metadata.json b/kapacitor/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/kapacitor/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/kibana/README.md b/kibana/README.md index 8bc1951938a9..b5a75125912b 100644 --- a/kibana/README.md +++ b/kibana/README.md @@ -24,8 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.6.0`](https://github.com/docker-library/kibana/blob/34ba6504a0b63a5f0f9d39564c0bfd47114d94f8/8/Dockerfile) -- [`7.17.8`](https://github.com/docker-library/kibana/blob/c98bb27941c6b2dafd6d963aab2b0cc9f0876315/7/Dockerfile) +- [`7.17.29`](https://github.com/elastic/dockerfiles/blob/28b876f2aaba7bc27d76a1acd55cbc8ada9b5dea/kibana/Dockerfile) + +- [`8.18.8`](https://github.com/elastic/dockerfiles/blob/6a7937aa369e0368020bcff78884c2b3645c50dd/kibana/Dockerfile) + +- [`8.19.7`](https://github.com/elastic/dockerfiles/blob/f3f99114a6b4812345df1ec78119cc7a79887af2/kibana/Dockerfile) + +- [`9.1.7`](https://github.com/elastic/dockerfiles/blob/3bacf7a63eba7449c4488657f644080dd0c1be7a/kibana/Dockerfile) + +- [`9.2.1`](https://github.com/elastic/dockerfiles/blob/10f6479ec2158d24291e779766d1e0b0c5627091/kibana/Dockerfile) # Quick reference (cont.) diff --git a/kibana/stack.yml b/kibana/compose.yaml similarity index 86% rename from kibana/stack.yml rename to kibana/compose.yaml index a1139cb266e9..6adbea8faf12 100644 --- a/kibana/stack.yml +++ b/kibana/compose.yaml @@ -1,5 +1,3 @@ -version: '3.1' - services: kibana: @@ -9,4 +7,3 @@ services: elasticsearch: image: elasticsearch - diff --git a/kibana/metadata.json b/kibana/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/kibana/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/kong/README.md b/kong/README.md index c14a73b72278..a393ec648714 100644 --- a/kong/README.md +++ b/kong/README.md @@ -24,23 +24,18 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.1.1-alpine`, `3.1.1`, `3.1`, `3`, `alpine`, `latest`](https://github.com/Kong/docker-kong/blob/5f914be945ec1732837cc4f6463219bed566c7ef/Dockerfile.apk) -- [`3.1.1-ubuntu`, `3.1-ubuntu`, `ubuntu`](https://github.com/Kong/docker-kong/blob/5f914be945ec1732837cc4f6463219bed566c7ef/ubuntu/Dockerfile) -- [`3.0.2-alpine`, `3.0-alpine`, `3.0.2`, `3.0`](https://github.com/Kong/docker-kong/blob/5a3ee8daf50371db2e3a788abe8f306255eead22/Dockerfile.apk) -- [`3.0.2-ubuntu`, `3.0-ubuntu`](https://github.com/Kong/docker-kong/blob/5a3ee8daf50371db2e3a788abe8f306255eead22/ubuntu/Dockerfile) -- [`2.8.3-alpine`, `2.8.3`, `2.8`](https://github.com/Kong/docker-kong/blob/9538eec15456ce93d69a4a1ae9e379a28fd9040b/alpine/Dockerfile) -- [`2.8.3-ubuntu`, `2.8-ubuntu`](https://github.com/Kong/docker-kong/blob/9538eec15456ce93d69a4a1ae9e379a28fd9040b/ubuntu/Dockerfile) -- [`2.7.2-alpine`, `2.7.2`, `2.7`](https://github.com/Kong/docker-kong/blob/456bfc908ed1f4fdbb348bafcf7385aeffdd421c/alpine/Dockerfile) -- [`2.7.2-ubuntu`, `2.7-ubuntu`](https://github.com/Kong/docker-kong/blob/456bfc908ed1f4fdbb348bafcf7385aeffdd421c/ubuntu/Dockerfile) -- [`2.6.1-alpine`, `2.6.1`, `2.6`](https://github.com/Kong/docker-kong/blob/aa4cf106f8933033f433cacc8f073fa4dbbeac21/alpine/Dockerfile) -- [`2.6.1-ubuntu`, `2.6-ubuntu`](https://github.com/Kong/docker-kong/blob/aa4cf106f8933033f433cacc8f073fa4dbbeac21/ubuntu/Dockerfile) -- [`2.5.2-alpine`, `2.5.2`, `2.5`](https://github.com/Kong/docker-kong/blob/e6fbd10247d55eba63db13216666f9db4c6d3363/alpine/Dockerfile) -- [`2.5.2-ubuntu`, `2.5-ubuntu`](https://github.com/Kong/docker-kong/blob/e6fbd10247d55eba63db13216666f9db4c6d3363/ubuntu/Dockerfile) +- [`3.9.1-ubuntu`, `3.9-ubuntu`, `3.9.1`, `3.9`, `3`, `latest`, `ubuntu`](https://github.com/Kong/docker-kong/blob/af96ffd89b75f2e7a68cb90d0a3c4b4cd30d53fc/ubuntu/Dockerfile) + +- [`3.8.0-ubuntu`, `3.8-ubuntu`, `3.8.0`, `3.8`](https://github.com/Kong/docker-kong/blob/1f5199f7da45c17f4344b811397e89899a160040/ubuntu/Dockerfile) + +- [`3.4.2-ubuntu`, `3.4-ubuntu`, `3.4.2`, `3.4`](https://github.com/Kong/docker-kong/blob/e07de903edf213445a0540172d51529ac344b448/ubuntu/Dockerfile) + +- [`2.8.5-ubuntu`, `2.8-ubuntu`](https://github.com/Kong/docker-kong/blob/cdf93ae2106f998a2245a3eee6814b1ae68781af/ubuntu/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/kong/kong/issues](https://github.com/kong/kong/issues) + [https://github.com/kong/kong/issues](https://github.com/kong/kong/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/kong/), [`arm64v8`](https://hub.docker.com/r/arm64v8/kong/) @@ -58,175 +53,19 @@ WARNING: # What is Kong? -Kong is a scalable, open source API Platform (also known as an API Gateway or API Middleware). Kong was originally built by [Kong Inc.](https://konghq.com) (formerly known as Mashape) to secure, manage, and extend over 15,000 Microservices for its API Marketplace, which generates billions of requests per month. +Kong Gateway is the world’s most adopted API gateway. Lightweight, fast, and flexible, this open source gateway is built for hybrid and multi-cloud and optimized for microservices and distributed architectures. -Under active development, Kong is now used in production at hundreds of organizations from startups, to large enterprises and governments including: The New York Times, Expedia, Healthcare.gov, The Guardian, Condè Nast, The University of Auckland, Ferrari, Rakuten, Cisco, SkyScanner, Yahoo! Japan, Giphy and so on. +Built on this open source DNA, Kong’s unified cloud API platform helps organizations ranging from startups to Fortune 500 enterprises unleash developer productivity, build securely, and accelerate time to market. Kong's official documentation can be found at [docs.konghq.com](https://docs.konghq.com/). -# How to use this image without a Database - -Kong 1.1 added the capability to run Kong without a database, using only in-memory storage for entities: we call this DB-less mode. When running Kong DB-less, the configuration of entities is done in a second configuration file, in YAML or JSON, using declarative configuration. - -```shell -$ docker run -d --name kong \ - -e "KONG_DATABASE=off" \ - -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ - -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ - -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ - -p 8000:8000 \ - -p 8443:8443 \ - -p 8001:8001 \ - -p 8444:8444 \ - kong -``` - -Generate a skeleton configuration file to get you started - -```shell -$ docker exec -it kong kong config init /home/kong/kong.yml -$ docker exec -it kong cat /home/kong/kong.yml >> kong.yml -``` - -Load a declarative configuration into a running Kong node via its Admin API using HTTPie - -```shell -$ http :8001/config config=@kong.yml -``` - -**Note**: Not all Kong plugins are compatible with DB-less mode, since some of them by design require a central database coordination and/or dynamic creation of entities, see the doc for details at [DB-less and Declarative Configuration](https://docs.konghq.com/latest/db-less-and-declarative-config/) - -# How to use this image with a Database - -You can either use the official Cassandra/PostgreSQL containers, or use your own. - -## 1. Link Kong to either a Cassandra or PostgreSQL container - -It's up to you to decide which datastore between Cassandra or PostgreSQL you want to use, since Kong supports both. - -### Cassandra - -Start a Cassandra container by executing: - -```shell -$ docker run -d --name kong-database \ - -p 9042:9042 \ - cassandra:3 -``` - -### Postgres - -Start a PostgreSQL container by executing: - -```shell -$ docker run -d --name kong-database \ - -p 5432:5432 \ - -e "POSTGRES_USER=kong" \ - -e "POSTGRES_DB=kong" \ - -e "POSTGRES_PASSWORD=kong" \ - postgres:9.6 -``` - -## 2. Prepare your database - -Run the database migrations with an ephemeral Kong container: - -```shell -$ docker run --rm \ - --link kong-database:kong-database \ - -e "KONG_DATABASE=postgres" \ - -e "KONG_PG_HOST=kong-database" \ - -e "KONG_PG_USER=kong" \ - -e "KONG_PG_PASSWORD=kong" \ - -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ - kong kong migrations bootstrap -``` - -In the above example, both Cassandra and PostgreSQL are configured, but you should update the `KONG_DATABASE` environment variable with either `cassandra` or `postgres`. - -**Note for Kong < 0.15**: with Kong versions below 0.15 (up to 0.14), use the `up` sub-command instead of `bootstrap`. Also note that with Kong < 0.15, migrations should never be run concurrently; only one Kong node should be performing migrations at a time. This limitation is lifted for Kong 0.15, 1.0, and above. - -### Start Kong - -Once the database has been started and prepared, we can start a Kong container and link it to the database container, and configuring the `KONG_DATABASE` environment variable with either `cassandra` or `postgres` depending on which database you decided to use: - -```shell -$ docker run -d --name kong \ - --link kong-database:kong-database \ - -e "KONG_DATABASE=postgres" \ - -e "KONG_PG_HOST=kong-database" \ - -e "KONG_PG_PASSWORD=kong" \ - -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ - -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ - -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ - -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ - -p 8000:8000 \ - -p 8443:8443 \ - -p 8001:8001 \ - -p 8444:8444 \ - kong -``` - -If everything went well, and if you created your container with the default ports, Kong should be listening on your host's `8000` ([Proxy](https://docs.konghq.com/latest/configuration/#proxy_port)), `8443` ([Proxy SSL](https://docs.konghq.com/latest/configuration/#proxy_listen_ssl)), `8001` ([Admin API](https://docs.konghq.com/latest/configuration/#admin_listen)) and `8444` ([Admin API SSL](https://docs.konghq.com/latest/configuration/#admin_listen_ssl)) ports. - -You can read the docs at [docs.konghq.com](https://docs.konghq.com/) to learn more about Kong. - -## 3. Use Kong with a custom configuration (and a custom Cassandra/PostgreSQL cluster) - -You can override any property of the [Kong configuration file](https://docs.konghq.com/latest/configuration/) with environment variables. Just prepend any Kong configuration property with the `KONG_` prefix, for example: - -```shell -$ docker run -d --name kong \ - -e "KONG_DATABASE=postgres" \ - -e "KONG_PG_HOST=kong-database" \ - -e "KONG_LOG_LEVEL=info" \ - -e "KONG_CUSTOM_PLUGINS=helloworld" \ - -e "KONG_PG_HOST=1.1.1.1" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ - -p 8000:8000 \ - -p 8443:8443 \ - -p 8001:8001 \ - -p 8444:8444 \ - kong -``` - -## Reload Kong in a running container - -If you change your custom configuration, reload Kong (without downtime) by running: - -```shell -$ docker exec -it kong kong reload -``` - -This will run the [`kong reload`](https://docs.konghq.com/latest/cli/#reload) command in your container. - -# Kubernetes Ingress - -Among the many deployment options [available](https://konghq.com/install), Kong also offers a [Kubernetes Ingress Controller](https://github.com/Kong/kubernetes-ingress-controller) ready to use in your K8s environment. - -# Image Variants - -The `kong` images come in many flavors, each designed for a specific use case. - -## `kong:` - -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. - -## `kong:-alpine` - -This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. - -This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images. +# How to use this image -To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). +Please refer to the [installation section](https://docs.konghq.com/gateway/latest/install/docker/#main) on our documentation website to learn how to use this image. # License -View [license information](https://konghq.com/kong/license/) for the software contained in this image. +View [license information](https://github.com/Kong/kong/blob/master/LICENSE) for the software contained in this image. As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/kong/content.md b/kong/content.md index 20d92fb3759a..a12c68e4ab5c 100644 --- a/kong/content.md +++ b/kong/content.md @@ -1,151 +1,11 @@ # What is Kong? -Kong is a scalable, open source API Platform (also known as an API Gateway or API Middleware). Kong was originally built by [Kong Inc.](https://konghq.com) (formerly known as Mashape) to secure, manage, and extend over 15,000 Microservices for its API Marketplace, which generates billions of requests per month. +Kong Gateway is the world’s most adopted API gateway. Lightweight, fast, and flexible, this open source gateway is built for hybrid and multi-cloud and optimized for microservices and distributed architectures. -Under active development, Kong is now used in production at hundreds of organizations from startups, to large enterprises and governments including: The New York Times, Expedia, Healthcare.gov, The Guardian, Condè Nast, The University of Auckland, Ferrari, Rakuten, Cisco, SkyScanner, Yahoo! Japan, Giphy and so on. +Built on this open source DNA, Kong’s unified cloud API platform helps organizations ranging from startups to Fortune 500 enterprises unleash developer productivity, build securely, and accelerate time to market. Kong's official documentation can be found at [docs.konghq.com](https://docs.konghq.com/). -# How to use this image without a Database +# How to use this image -Kong 1.1 added the capability to run Kong without a database, using only in-memory storage for entities: we call this DB-less mode. When running Kong DB-less, the configuration of entities is done in a second configuration file, in YAML or JSON, using declarative configuration. - -```shell -$ docker run -d --name kong \ - -e "KONG_DATABASE=off" \ - -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ - -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ - -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ - -p 8000:8000 \ - -p 8443:8443 \ - -p 8001:8001 \ - -p 8444:8444 \ - %%IMAGE%% -``` - -Generate a skeleton configuration file to get you started - -```shell -$ docker exec -it kong kong config init /home/kong/kong.yml -$ docker exec -it kong cat /home/kong/kong.yml >> kong.yml -``` - -Load a declarative configuration into a running Kong node via its Admin API using HTTPie - -```shell -$ http :8001/config config=@kong.yml -``` - -**Note**: Not all Kong plugins are compatible with DB-less mode, since some of them by design require a central database coordination and/or dynamic creation of entities, see the doc for details at [DB-less and Declarative Configuration](https://docs.konghq.com/latest/db-less-and-declarative-config/) - -# How to use this image with a Database - -You can either use the official Cassandra/PostgreSQL containers, or use your own. - -## 1. Link Kong to either a Cassandra or PostgreSQL container - -It's up to you to decide which datastore between Cassandra or PostgreSQL you want to use, since Kong supports both. - -### Cassandra - -Start a Cassandra container by executing: - -```shell -$ docker run -d --name kong-database \ - -p 9042:9042 \ - cassandra:3 -``` - -### Postgres - -Start a PostgreSQL container by executing: - -```shell -$ docker run -d --name kong-database \ - -p 5432:5432 \ - -e "POSTGRES_USER=kong" \ - -e "POSTGRES_DB=kong" \ - -e "POSTGRES_PASSWORD=kong" \ - postgres:9.6 -``` - -## 2. Prepare your database - -Run the database migrations with an ephemeral Kong container: - -```shell -$ docker run --rm \ - --link kong-database:kong-database \ - -e "KONG_DATABASE=postgres" \ - -e "KONG_PG_HOST=kong-database" \ - -e "KONG_PG_USER=kong" \ - -e "KONG_PG_PASSWORD=kong" \ - -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ - %%IMAGE%% kong migrations bootstrap -``` - -In the above example, both Cassandra and PostgreSQL are configured, but you should update the `KONG_DATABASE` environment variable with either `cassandra` or `postgres`. - -**Note for Kong < 0.15**: with Kong versions below 0.15 (up to 0.14), use the `up` sub-command instead of `bootstrap`. Also note that with Kong < 0.15, migrations should never be run concurrently; only one Kong node should be performing migrations at a time. This limitation is lifted for Kong 0.15, 1.0, and above. - -### Start Kong - -Once the database has been started and prepared, we can start a Kong container and link it to the database container, and configuring the `KONG_DATABASE` environment variable with either `cassandra` or `postgres` depending on which database you decided to use: - -```shell -$ docker run -d --name kong \ - --link kong-database:kong-database \ - -e "KONG_DATABASE=postgres" \ - -e "KONG_PG_HOST=kong-database" \ - -e "KONG_PG_PASSWORD=kong" \ - -e "KONG_CASSANDRA_CONTACT_POINTS=kong-database" \ - -e "KONG_PROXY_ACCESS_LOG=/dev/stdout" \ - -e "KONG_ADMIN_ACCESS_LOG=/dev/stdout" \ - -e "KONG_PROXY_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_ERROR_LOG=/dev/stderr" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ - -p 8000:8000 \ - -p 8443:8443 \ - -p 8001:8001 \ - -p 8444:8444 \ - %%IMAGE%% -``` - -If everything went well, and if you created your container with the default ports, Kong should be listening on your host's `8000` ([Proxy](https://docs.konghq.com/latest/configuration/#proxy_port)), `8443` ([Proxy SSL](https://docs.konghq.com/latest/configuration/#proxy_listen_ssl)), `8001` ([Admin API](https://docs.konghq.com/latest/configuration/#admin_listen)) and `8444` ([Admin API SSL](https://docs.konghq.com/latest/configuration/#admin_listen_ssl)) ports. - -You can read the docs at [docs.konghq.com](https://docs.konghq.com/) to learn more about Kong. - -## 3. Use Kong with a custom configuration (and a custom Cassandra/PostgreSQL cluster) - -You can override any property of the [Kong configuration file](https://docs.konghq.com/latest/configuration/) with environment variables. Just prepend any Kong configuration property with the `KONG_` prefix, for example: - -```shell -$ docker run -d --name kong \ - -e "KONG_DATABASE=postgres" \ - -e "KONG_PG_HOST=kong-database" \ - -e "KONG_LOG_LEVEL=info" \ - -e "KONG_CUSTOM_PLUGINS=helloworld" \ - -e "KONG_PG_HOST=1.1.1.1" \ - -e "KONG_ADMIN_LISTEN=0.0.0.0:8001, 0.0.0.0:8444 ssl" \ - -p 8000:8000 \ - -p 8443:8443 \ - -p 8001:8001 \ - -p 8444:8444 \ - %%IMAGE%% -``` - -## Reload Kong in a running container - -If you change your custom configuration, reload Kong (without downtime) by running: - -```shell -$ docker exec -it kong kong reload -``` - -This will run the [`kong reload`](https://docs.konghq.com/latest/cli/#reload) command in your container. - -# Kubernetes Ingress - -Among the many deployment options [available](https://konghq.com/install), Kong also offers a [Kubernetes Ingress Controller](https://github.com/Kong/kubernetes-ingress-controller) ready to use in your K8s environment. +Please refer to the [installation section](https://docs.konghq.com/gateway/latest/install/docker/#main) on our documentation website to learn how to use this image. diff --git a/kong/license.md b/kong/license.md index aa0f77f2e58d..510f4360ef21 100644 --- a/kong/license.md +++ b/kong/license.md @@ -1 +1 @@ -View [license information](https://konghq.com/kong/license/) for the software contained in this image. +View [license information](https://github.com/Kong/kong/blob/master/LICENSE) for the software contained in this image. diff --git a/kong/metadata.json b/kong/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/kong/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/krakend/README-short.txt b/krakend/README-short.txt new file mode 100644 index 000000000000..f0d3871d3d32 --- /dev/null +++ b/krakend/README-short.txt @@ -0,0 +1 @@ +KrakenD is a stateless, high-performance, enterprise-ready, open source API gateway written in Go. \ No newline at end of file diff --git a/krakend/README.md b/krakend/README.md new file mode 100644 index 000000000000..98841809d491 --- /dev/null +++ b/krakend/README.md @@ -0,0 +1,209 @@ + + +# Quick reference + +- **Maintained by**: + [the KrakenD Maintainers](https://github.com/krakend/krakend-ce) + +- **Where to get help**: + [documentation](https://www.krakend.io/docs/overview/introduction/), [community support](https://groups.google.com/a/krakend.io/g/community), [open an issue](https://github.com/krakend/krakend-ce/issues), [other support channels](https://www.krakend.io/support/) + +# Supported tags and respective `Dockerfile` links + +- [`2.12.0`, `2.12`, `2`, `latest`](https://github.com/krakend/docker-library/blob/30d1716507fbe8fb80c3b19542240ce21ca5a5b2/2.12.0/Dockerfile) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/krakend/krakend-ce/issues](https://github.com/krakend/krakend-ce/issues?q=) + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/krakend/), [`arm64v8`](https://hub.docker.com/r/arm64v8/krakend/) + +- **Published image artifact details**: + [repo-info repo's `repos/krakend/` directory](https://github.com/docker-library/repo-info/blob/master/repos/krakend) ([history](https://github.com/docker-library/repo-info/commits/master/repos/krakend)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/krakend` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fkrakend) + [official-images repo's `library/krakend` file](https://github.com/docker-library/official-images/blob/master/library/krakend) ([history](https://github.com/docker-library/official-images/commits/master/library/krakend)) + +- **Source of this description**: + [docs repo's `krakend/` directory](https://github.com/docker-library/docs/tree/master/krakend) ([history](https://github.com/docker-library/docs/commits/master/krakend)) + +![logo](https://raw.githubusercontent.com/docker-library/docs/af2c9a19a5f032bfeea653ae85d841e26e5bc61c/krakend/logo.png) + +# What is KrakenD? + +[KrakenD](https://www.krakend.io/) is a stateless, high-performance, enterprise-ready, open-source API gateway written in Go. Its engine (formerly known as *KrakenD Framework*) is now a **Linux Foundation Project** codenamed [Lura Project](https://luraproject.org/). Lura is the only enterprise-grade API Gateway hosted in a neutral, open forum. + +KrakenD is lightweight and straightforward, as it only requires writing the configuration file. No Go knowledge is required. It offers connectivity to internal and external services, data transformation and filtering, and aggregation of multiple data sources (APIs, gRPC, queues and pub/sub, lambda, etc.) simultaneously or in cascade. It protects access to your API, throughputs its usage, and integrates with many third-parties. + +All features are designed to offer extraordinary performance and infinite scalability. + +## How to use this image + +KrakenD only needs a single configuration file to create an API Gateway, although you can have a complex setup reflecting your organization structure. The configuration file(s) can live anywhere in the container, but the default location (the workdir) is `/etc/krakend`. + +To use the image, `COPY` your `krakend.json` file inside the container or mount it using a volume. The configuration is checked only once during the startup and never used again. Don't have a config file yet? Generate it with the [KrakenD Designer UI](https://designer.krakend.io). + +⚠️ **NOTICE**: KrakenD does not use live reload when your configuration changes. Restart the container. + +### Quick start + +You can start an empty gateway with a health check with the following commands: + +```bash +docker run -d -p 8080:8080 -v "$PWD:/etc/krakend/" krakend + +curl http://localhost:8080/__health +{"agents":{},"now":"2024-05-23 14:35:55.552591448 +0000 UTC m=+26.856583003","status":"ok"} +``` + +### More Examples + +The following are several examples of running KrakenD. By default, the command `run` is executed, but you can pass other commands and flags at the end of the run command. + +The configuration files are taken from the current directory (`$PWD`). Therefore, all examples expect to find at least the file `krakend.json`. + +#### Run with the debug enabled (flag `-d`): + +This flag is **SAFE to use in production**. It's meant to enable KrakenD as a fake backend itself by enabling a [`/__debug` endpoint](https://www.krakend.io/docs/endpoints/debug-endpoint/) + +```bash +docker run -p 8080:8080 -v "${PWD}:/etc/krakend/" krakend run -d -c /etc/krakend/krakend.json +``` + +#### Checking the syntax of your configuration file + +See the [check command](https://www.krakend.io/docs/commands/check/) + +```bash +docker run -it -v $PWD:/etc/krakend/ krakend check --config krakend.json +``` + +#### Show the help: + +```bash +docker run --rm -it krakend help +``` + +### Building your custom KrakenD image + +Most production deployments will not want to rely on mounting a volume for the container but to use their image based on `krakend`: + +Your `Dockerfile` could look like this: + +```Dockerfile +FROM krakend: +# NOTE: Avoid using :latest image on production. Stick to a major version instead. + +COPY krakend.json ./ + +# Check and test that the file is valid +RUN krakend check -t --lint-no-network -c krakend.json +``` + +If you want to manage your KrakenD configuration using multiple files and folders, reusing templates, and distributing the configuration amongst your teams, you can use the [flexible configuration (FC)](https://www.krakend.io/docs/configuration/flexible-config/). The following `Dockerfile` combines FC, the `krakend check` command, and a 2-step build. + +```Dockerfile +FROM krakend: as builder + +COPY krakend.tmpl . +COPY config . + +# Save temporary output file to /tmp to avoid permission errors +RUN FC_ENABLE=1 \ + FC_OUT=/tmp/krakend.json \ + FC_PARTIALS="/etc/krakend/partials" \ + FC_SETTINGS="/etc/krakend/settings" \ + FC_TEMPLATES="/etc/krakend/templates" \ + krakend check -d -t -c krakend.tmpl + +# Copy the output file only and discard any other files +FROM krakend: +COPY --from=builder /tmp/krakend.json . +``` + +Then build with `docker build -t my_krakend .` + +The configuration above assumes you have a folder structure like the following: + + . + ├── config + │ ├── partials + │ ├── settings + │ │ └── env.json + │ └── templates + │ └── some.tmpl + ├── Dockerfile + └── krakend.tmpl + +### Docker Compose example + +Finally, a simple `docker compose` file to start KrakenD with your API would be: + +```yaml +services: + krakend: + image: krakend: + ports: + - "8080:8080" + volumes: + - ./:/etc/krakend +``` + +And another one that uses the flexible configuration and a custom template filename (`my_krakend.tmpl`) on each start: + +```yaml +services: + krakend: + image: krakend: + ports: + - "8080:8080" + volumes: + - ./:/etc/krakend + environment: + - FC_ENABLE=1 + - FC_OUT=/tmp/krakend.json + - FC_PARTIALS="/etc/krakend/config/partials" + - FC_SETTINGS="/etc/krakend/config/settings/prod" + - FC_TEMPLATES="/etc/krakend/config/templates" + command: + command: ["krakend", "run", "-c", "krakend.tmpl", "-d"] +``` + +### Container permissions and commands + +All `krakend` commands are executed as `krakend` user (uid=1000), and the rest of the commands (e.g., `sh`) are executed as root. + +You can directly use sub-commands of `krakend` like `run`, `help`, `version`, `check`, `check-plugin`, or `test-plugin` as the entrypoint will add the `krakend` command automatically. For example, the following lines are equivalent: + +```bash +docker run --rm -it krakend help +docker run --rm -it krakend krakend help +``` + +# License + +View [license information](https://github.com/krakend/krakend-ce/blob/master/LICENSE) for the software contained in this image. + +As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). + +Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `krakend/` directory](https://github.com/docker-library/repo-info/tree/master/repos/krakend). + +As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/krakend/content.md b/krakend/content.md new file mode 100644 index 000000000000..37ac86b64299 --- /dev/null +++ b/krakend/content.md @@ -0,0 +1,152 @@ +%%LOGO%% + +# What is KrakenD? + +[KrakenD](https://www.krakend.io/) is a stateless, high-performance, enterprise-ready, open-source API gateway written in Go. Its engine (formerly known as *KrakenD Framework*) is now a **Linux Foundation Project** codenamed [Lura Project](https://luraproject.org/). Lura is the only enterprise-grade API Gateway hosted in a neutral, open forum. + +KrakenD is lightweight and straightforward, as it only requires writing the configuration file. No Go knowledge is required. It offers connectivity to internal and external services, data transformation and filtering, and aggregation of multiple data sources (APIs, gRPC, queues and pub/sub, lambda, etc.) simultaneously or in cascade. It protects access to your API, throughputs its usage, and integrates with many third-parties. + +All features are designed to offer extraordinary performance and infinite scalability. + +## How to use this image + +KrakenD only needs a single configuration file to create an API Gateway, although you can have a complex setup reflecting your organization structure. The configuration file(s) can live anywhere in the container, but the default location (the workdir) is `/etc/krakend`. + +To use the image, `COPY` your `krakend.json` file inside the container or mount it using a volume. The configuration is checked only once during the startup and never used again. Don't have a config file yet? Generate it with the [KrakenD Designer UI](https://designer.krakend.io). + +⚠️ **NOTICE**: KrakenD does not use live reload when your configuration changes. Restart the container. + +### Quick start + +You can start an empty gateway with a health check with the following commands: + +```bash +docker run -d -p 8080:8080 -v "$PWD:/etc/krakend/" %%IMAGE%% + +curl http://localhost:8080/__health +{"agents":{},"now":"2024-05-23 14:35:55.552591448 +0000 UTC m=+26.856583003","status":"ok"} +``` + +### More Examples + +The following are several examples of running KrakenD. By default, the command `run` is executed, but you can pass other commands and flags at the end of the run command. + +The configuration files are taken from the current directory (`$PWD`). Therefore, all examples expect to find at least the file `krakend.json`. + +#### Run with the debug enabled (flag `-d`): + +This flag is **SAFE to use in production**. It's meant to enable KrakenD as a fake backend itself by enabling a [`/__debug` endpoint](https://www.krakend.io/docs/endpoints/debug-endpoint/) + +```bash +docker run -p 8080:8080 -v "${PWD}:/etc/krakend/" %%IMAGE%% run -d -c /etc/krakend/krakend.json +``` + +#### Checking the syntax of your configuration file + +See the [check command](https://www.krakend.io/docs/commands/check/) + +```bash +docker run -it -v $PWD:/etc/krakend/ %%IMAGE%% check --config krakend.json +``` + +#### Show the help: + +```bash +docker run --rm -it %%IMAGE%% help +``` + +### Building your custom KrakenD image + +Most production deployments will not want to rely on mounting a volume for the container but to use their image based on `%%IMAGE%%`: + +Your `Dockerfile` could look like this: + +```Dockerfile +FROM %%IMAGE%%: +# NOTE: Avoid using :latest image on production. Stick to a major version instead. + +COPY krakend.json ./ + +# Check and test that the file is valid +RUN krakend check -t --lint-no-network -c krakend.json +``` + +If you want to manage your KrakenD configuration using multiple files and folders, reusing templates, and distributing the configuration amongst your teams, you can use the [flexible configuration (FC)](https://www.krakend.io/docs/configuration/flexible-config/). The following `Dockerfile` combines FC, the `krakend check` command, and a 2-step build. + +```Dockerfile +FROM %%IMAGE%%: as builder + +COPY krakend.tmpl . +COPY config . + +# Save temporary output file to /tmp to avoid permission errors +RUN FC_ENABLE=1 \ + FC_OUT=/tmp/krakend.json \ + FC_PARTIALS="/etc/krakend/partials" \ + FC_SETTINGS="/etc/krakend/settings" \ + FC_TEMPLATES="/etc/krakend/templates" \ + krakend check -d -t -c krakend.tmpl + +# Copy the output file only and discard any other files +FROM %%IMAGE%%: +COPY --from=builder /tmp/krakend.json . +``` + +Then build with `docker build -t my_krakend .` + +The configuration above assumes you have a folder structure like the following: + + . + ├── config + │ ├── partials + │ ├── settings + │ │ └── env.json + │ └── templates + │ └── some.tmpl + ├── Dockerfile + └── krakend.tmpl + +### Docker Compose example + +Finally, a simple `docker compose` file to start KrakenD with your API would be: + +```yaml +services: + krakend: + image: %%IMAGE%%: + ports: + - "8080:8080" + volumes: + - ./:/etc/krakend +``` + +And another one that uses the flexible configuration and a custom template filename (`my_krakend.tmpl`) on each start: + +```yaml +services: + krakend: + image: %%IMAGE%%: + ports: + - "8080:8080" + volumes: + - ./:/etc/krakend + environment: + - FC_ENABLE=1 + - FC_OUT=/tmp/krakend.json + - FC_PARTIALS="/etc/krakend/config/partials" + - FC_SETTINGS="/etc/krakend/config/settings/prod" + - FC_TEMPLATES="/etc/krakend/config/templates" + command: + command: ["krakend", "run", "-c", "krakend.tmpl", "-d"] +``` + +### Container permissions and commands + +All `krakend` commands are executed as `krakend` user (uid=1000), and the rest of the commands (e.g., `sh`) are executed as root. + +You can directly use sub-commands of `krakend` like `run`, `help`, `version`, `check`, `check-plugin`, or `test-plugin` as the entrypoint will add the `krakend` command automatically. For example, the following lines are equivalent: + +```bash +docker run --rm -it %%IMAGE%% help +docker run --rm -it %%IMAGE%% krakend help +``` diff --git a/krakend/get-help.md b/krakend/get-help.md new file mode 100644 index 000000000000..56c5731ed60e --- /dev/null +++ b/krakend/get-help.md @@ -0,0 +1 @@ +[documentation](https://www.krakend.io/docs/overview/introduction/), [community support](https://groups.google.com/a/krakend.io/g/community), [open an issue](https://github.com/krakend/krakend-ce/issues), [other support channels](https://www.krakend.io/support/) diff --git a/krakend/github-repo b/krakend/github-repo new file mode 100644 index 000000000000..e48225a5287f --- /dev/null +++ b/krakend/github-repo @@ -0,0 +1 @@ +https://github.com/krakend/krakend-ce diff --git a/krakend/license.md b/krakend/license.md new file mode 100644 index 000000000000..62249b167719 --- /dev/null +++ b/krakend/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/krakend/krakend-ce/blob/master/LICENSE) for the software contained in this image. diff --git a/krakend/logo-120.png b/krakend/logo-120.png new file mode 100644 index 000000000000..1f19d4ffede0 Binary files /dev/null and b/krakend/logo-120.png differ diff --git a/krakend/logo.png b/krakend/logo.png new file mode 100644 index 000000000000..7a4be7f5ce1b Binary files /dev/null and b/krakend/logo.png differ diff --git a/krakend/maintainer.md b/krakend/maintainer.md new file mode 100644 index 000000000000..2fcab789f470 --- /dev/null +++ b/krakend/maintainer.md @@ -0,0 +1 @@ +[the KrakenD Maintainers](%%GITHUB-REPO%%) diff --git a/krakend/metadata.json b/krakend/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/krakend/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/lightstreamer/README.md b/lightstreamer/README.md index 2888a228efea..230d401442fa 100644 --- a/lightstreamer/README.md +++ b/lightstreamer/README.md @@ -24,21 +24,40 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`6.0.3`, `6.0`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/6.0/Dockerfile) -- [`6.1.0`, `6.1`, `6`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/6.1/Dockerfile) -- [`7.0.3-jdk8-temurin`, `7.0-jdk8-temurin`, `7.0.3-jdk8`, `7.0-jdk8`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/7.0/jdk8/Dockerfile) -- [`7.0.3-jdk11-temurin`, `7.0-jdk11-temurin`, `7.0.3-jdk11`, `7.0-jdk11`, `7.0.3`, `7.0`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/7.0/jdk11/Dockerfile) -- [`7.1.3-jdk8-temurin`, `7.1-jdk8-temurin`, `7.1.3-jdk8`, `7.1-jdk8`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/7.1/jdk8/Dockerfile) -- [`7.1.3-jdk11-temurin`, `7.1-jdk11-temurin`, `7.1.3-jdk11`, `7.1-jdk11`, `7.1.3`, `7.1`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/7.1/jdk11/Dockerfile) -- [`7.2.2-jdk8-temurin`, `7.2-jdk8-temurin`, `7.2.2-jdk8`, `7.2-jdk8`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/7.2/jdk8/Dockerfile) -- [`7.2.2-jdk11-temurin`, `7.2-jdk11-temurin`, `7.2.2-jdk11`, `7.2-jdk11`, `7.2.2`, `7.2`](https://github.com/Lightstreamer/Docker/blob/84e3f6588620183b48b7eb62a18070b793eff019/7.2/jdk11/Dockerfile) -- [`7.3.3-jdk8-temurin`, `7.3-jdk8-temurin`, `7-jdk8-temurin`, `7.3.3-jdk8`, `7.3-jdk8`, `7-jdk8`](https://github.com/Lightstreamer/Docker/blob/586d5c630b887344f19e93d5c9a5d63d82365309/7.3/jdk8/Dockerfile) -- [`7.3.3-jdk11-temurin`, `7.3-jdk11-temurin`, `7-jdk11-temurin`, `7.3.3-jdk11`, `7.3-jdk11`, `7-jdk11`, `7.3.3`, `7.3`, `7`, `latest`](https://github.com/Lightstreamer/Docker/blob/586d5c630b887344f19e93d5c9a5d63d82365309/7.3/jdk11/Dockerfile) +- [`6.0.3`, `6.0`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/6.0/Dockerfile) + +- [`6.1.0`, `6.1`, `6`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/6.1/Dockerfile) + +- [`7.0.3-jdk8-temurin`, `7.0-jdk8-temurin`, `7.0.3-jdk8`, `7.0-jdk8`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.0/jdk8/Dockerfile) + +- [`7.0.3-jdk11-temurin`, `7.0-jdk11-temurin`, `7.0.3-jdk11`, `7.0-jdk11`, `7.0.3`, `7.0`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.0/jdk11/Dockerfile) + +- [`7.1.3-jdk8-temurin`, `7.1-jdk8-temurin`, `7.1.3-jdk8`, `7.1-jdk8`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.1/jdk8/Dockerfile) + +- [`7.1.3-jdk11-temurin`, `7.1-jdk11-temurin`, `7.1.3-jdk11`, `7.1-jdk11`, `7.1.3`, `7.1`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.1/jdk11/Dockerfile) + +- [`7.2.2-jdk8-temurin`, `7.2-jdk8-temurin`, `7.2.2-jdk8`, `7.2-jdk8`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.2/jdk8/Dockerfile) + +- [`7.2.2-jdk11-temurin`, `7.2-jdk11-temurin`, `7.2.2-jdk11`, `7.2-jdk11`, `7.2.2`, `7.2`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.2/jdk11/Dockerfile) + +- [`7.3.3-jdk8-temurin`, `7.3-jdk8-temurin`, `7.3.3-jdk8`, `7.3-jdk8`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.3/jdk8/Dockerfile) + +- [`7.3.3-jdk11-temurin`, `7.3-jdk11-temurin`, `7.3.3-jdk11`, `7.3-jdk11`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.3/jdk11/Dockerfile) + +- [`7.3.3-jdk17-temurin`, `7.3-jdk17-temurin`, `7.3.3-jdk17`, `7.3-jdk17`, `7.3.3`, `7.3`](https://github.com/Lightstreamer/Docker/blob/b6c4a87af3e78b53887f311bdf2404f4f9956796/7.3/jdk17/Dockerfile) + +- [`7.4.7-jdk8-temurin`, `7.4-jdk8-temurin`, `7-jdk8-temurin`, `7.4.7-jdk8`, `7.4-jdk8`, `7-jdk8`](https://github.com/Lightstreamer/Docker/blob/abea70d53fb366cb5d5402493c37ca4f0b2ab0c1/7.4/jdk8/Dockerfile) + +- [`7.4.7-jdk11-temurin`, `7.4-jdk11-temurin`, `7-jdk11-temurin`, `7.4.7-jdk11`, `7.4-jdk11`, `7-jdk11`](https://github.com/Lightstreamer/Docker/blob/abea70d53fb366cb5d5402493c37ca4f0b2ab0c1/7.4/jdk11/Dockerfile) + +- [`7.4.7-jdk17-temurin`, `7.4-jdk17-temurin`, `7-jdk17-temurin`, `7.4.7-jdk17`, `7.4-jdk17`, `7-jdk17`](https://github.com/Lightstreamer/Docker/blob/abea70d53fb366cb5d5402493c37ca4f0b2ab0c1/7.4/jdk17/Dockerfile) + +- [`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`](https://github.com/Lightstreamer/Docker/blob/abea70d53fb366cb5d5402493c37ca4f0b2ab0c1/7.4/jdk21/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/Lightstreamer/Docker/issues](https://github.com/Lightstreamer/Docker/issues) + [https://github.com/Lightstreamer/Docker/issues](https://github.com/Lightstreamer/Docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/lightstreamer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/lightstreamer/) @@ -99,7 +118,7 @@ Alternatively, the above tasks can be executed by deriving a new image through a ```dockerfile FROM lightstreamer -# Please specify a COPY command only for the the required custom configuration file +# Please specify a COPY command only for the required custom configuration file COPY my-lightstreamer_conf.xml /lightstreamer/conf/lightstreamer_conf.xml COPY my-lightstreamer_log_conf.xml /lightstreamer/conf/lightstreamer_log_conf.xml ``` diff --git a/lightstreamer/content.md b/lightstreamer/content.md index 93b07ec16e34..331b84d59ff4 100644 --- a/lightstreamer/content.md +++ b/lightstreamer/content.md @@ -43,7 +43,7 @@ Alternatively, the above tasks can be executed by deriving a new image through a ```dockerfile FROM %%IMAGE%% -# Please specify a COPY command only for the the required custom configuration file +# Please specify a COPY command only for the required custom configuration file COPY my-lightstreamer_conf.xml /lightstreamer/conf/lightstreamer_conf.xml COPY my-lightstreamer_log_conf.xml /lightstreamer/conf/lightstreamer_log_conf.xml ``` diff --git a/lightstreamer/metadata.json b/lightstreamer/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/lightstreamer/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/liquibase/README-short.txt b/liquibase/README-short.txt new file mode 100644 index 000000000000..bfdfdbcb28fb --- /dev/null +++ b/liquibase/README-short.txt @@ -0,0 +1 @@ +DEPRECATED; Liquibase is DevOps for your database. \ No newline at end of file diff --git a/liquibase/README.md b/liquibase/README.md new file mode 100644 index 000000000000..0580d89e7a8b --- /dev/null +++ b/liquibase/README.md @@ -0,0 +1,109 @@ + + +# **DEPRECATION NOTICE** + +With the release of Liquibase 5.0, this repository is officially deprecated and will not receive any further releases beyond patch updates. + +Users are encouraged to switch to one of the following alternatives, depending on your needs: + +- `liquibase/liquibase` -- Community Edition under Functional Source License (if you have a valid Liquibase License Key, you should use `liquibase/liquibase-secure` instead) +- `liquibase/liquibase-secure` -- Commercial version with enterprise features + +As of Liquibase 5.0, the Community edition and the official Docker Community liquibase image no longer include database drivers or extensions by default. You must now explicitly add database drivers using the Liquibase Package Manager (LPM), or manually install/mount extensions into the container. See [the Liquibase 5.0 Release Announcement](https://www.liquibase.com/blog/liquibase-5-0-release) for more details. + +# Quick reference + +- **Maintained by**: + [Liquibase](https://github.com/liquibase/docker) + +- **Where to get help**: + [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) + +# Supported tags and respective `Dockerfile` links + +- [`5.0`, `5.0.1`, `latest`](https://github.com/liquibase/docker/blob/c67a0359179ab8f862f202e313461452294f944f/Dockerfile) + +- [`5.0-alpine`, `5.0.1-alpine`, `alpine`](https://github.com/liquibase/docker/blob/c67a0359179ab8f862f202e313461452294f944f/Dockerfile.alpine) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/liquibase/docker/issues](https://github.com/liquibase/docker/issues?q=) + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/liquibase/), [`arm64v8`](https://hub.docker.com/r/arm64v8/liquibase/) + +- **Published image artifact details**: + [repo-info repo's `repos/liquibase/` directory](https://github.com/docker-library/repo-info/blob/master/repos/liquibase) ([history](https://github.com/docker-library/repo-info/commits/master/repos/liquibase)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/liquibase` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fliquibase) + [official-images repo's `library/liquibase` file](https://github.com/docker-library/official-images/blob/master/library/liquibase) ([history](https://github.com/docker-library/official-images/commits/master/library/liquibase)) + +- **Source of this description**: + [docs repo's `liquibase/` directory](https://github.com/docker-library/docs/tree/master/liquibase) ([history](https://github.com/docker-library/docs/commits/master/liquibase)) + +# What is Liquibase? + +Liquibase is DevOps for your database. More information about Liquibase can be found at [http://www.liquibase.org](http://www.liquibase.org). + +Liquibase compares the contents of a Change Log to the database to determine which, if any, changes need to be applied to the database. For example, you can create tables, add columns, and many more with Liquibase. Liquibase is delivered via a Docker container to assist users that are leveraging Docker for their CI/CD solution. + +![logo](https://raw.githubusercontent.com/docker-library/docs/bb4f7e2d534d1c4f62ef19bc6b09489e9ba3d8cc/liquibase/logo.png) + +# How to use this image + +If you are executing Liquibase via the command line today, you are probably doing it like so: + +```console +$ liquibase update --driver=org.postgresql.Driver --url="jdbc:postgresql://:/" --changeLogFile=/liquibase/changelog/changelog.xml --username= --password= +``` + +The only change to use this docker image, is to use `docker run ...` and mount the folder containing your changelog.xml (or .yml or .json or .sql) to `/liquibase/changelog` in the Liquibase container + +```console +$ docker run -v /home/user/changelog:/liquibase/changelog liquibase --driver=org.postgresql.Driver --url="jdbc:postgresql://:/" --changeLogFile=/liquibase/changelog/changelog.xml --username= --password= +``` + +All Liquibase commands, such as `rollback`, `updateSQL`, and others, are available, as well. + +# Image Variants + +The `liquibase` images come in many flavors, each designed for a specific use case. + +## `liquibase:` + +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. + +## `liquibase:-alpine` + +This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. + +This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images. + +To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). + +# License + +View [license information](https://github.com/liquibase/liquibase/blob/master/LICENSE.txt) for the Liquibase software contained in this image. + +As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). + +Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `liquibase/` directory](https://github.com/docker-library/repo-info/tree/master/repos/liquibase). + +As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/liquibase/content.md b/liquibase/content.md new file mode 100644 index 000000000000..b0b21d2f1cb0 --- /dev/null +++ b/liquibase/content.md @@ -0,0 +1,23 @@ +# What is Liquibase? + +Liquibase is DevOps for your database. More information about Liquibase can be found at [http://www.liquibase.org](http://www.liquibase.org). + +Liquibase compares the contents of a Change Log to the database to determine which, if any, changes need to be applied to the database. For example, you can create tables, add columns, and many more with Liquibase. Liquibase is delivered via a Docker container to assist users that are leveraging Docker for their CI/CD solution. + +%%LOGO%% + +# How to use this image + +If you are executing Liquibase via the command line today, you are probably doing it like so: + +```console +$ liquibase update --driver=org.postgresql.Driver --url="jdbc:postgresql://:/" --changeLogFile=/liquibase/changelog/changelog.xml --username= --password= +``` + +The only change to use this docker image, is to use `docker run ...` and mount the folder containing your changelog.xml (or .yml or .json or .sql) to `/liquibase/changelog` in the Liquibase container + +```console +$ docker run -v /home/user/changelog:/liquibase/changelog %%IMAGE%% --driver=org.postgresql.Driver --url="jdbc:postgresql://:/" --changeLogFile=/liquibase/changelog/changelog.xml --username= --password= +``` + +All Liquibase commands, such as `rollback`, `updateSQL`, and others, are available, as well. diff --git a/liquibase/deprecated.md b/liquibase/deprecated.md new file mode 100644 index 000000000000..6dd03c6cdc7d --- /dev/null +++ b/liquibase/deprecated.md @@ -0,0 +1,8 @@ +With the release of Liquibase 5.0, this repository is officially deprecated and will not receive any further releases beyond patch updates. + +Users are encouraged to switch to one of the following alternatives, depending on your needs: + +- `liquibase/liquibase` -- Community Edition under Functional Source License (if you have a valid Liquibase License Key, you should use `liquibase/liquibase-secure` instead) +- `liquibase/liquibase-secure` -- Commercial version with enterprise features + +As of Liquibase 5.0, the Community edition and the official Docker Community liquibase image no longer include database drivers or extensions by default. You must now explicitly add database drivers using the Liquibase Package Manager (LPM), or manually install/mount extensions into the container. See [the Liquibase 5.0 Release Announcement](https://www.liquibase.com/blog/liquibase-5-0-release) for more details. diff --git a/liquibase/github-repo b/liquibase/github-repo new file mode 100644 index 000000000000..2d758d9c20e6 --- /dev/null +++ b/liquibase/github-repo @@ -0,0 +1 @@ +https://github.com/liquibase/docker diff --git a/liquibase/license.md b/liquibase/license.md new file mode 100644 index 000000000000..f80fe12052df --- /dev/null +++ b/liquibase/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/liquibase/liquibase/blob/master/LICENSE.txt) for the Liquibase software contained in this image. diff --git a/liquibase/logo.png b/liquibase/logo.png new file mode 100644 index 000000000000..9f6d31750b24 Binary files /dev/null and b/liquibase/logo.png differ diff --git a/liquibase/maintainer.md b/liquibase/maintainer.md new file mode 100644 index 000000000000..43a5852a9422 --- /dev/null +++ b/liquibase/maintainer.md @@ -0,0 +1 @@ +[Liquibase](%%GITHUB-REPO%%) diff --git a/liquibase/metadata.json b/liquibase/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/liquibase/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/logstash/README.md b/logstash/README.md index e75935250777..befdacec9824 100644 --- a/logstash/README.md +++ b/logstash/README.md @@ -24,8 +24,13 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.6.0`](https://github.com/docker-library/logstash/blob/4fabc6ecfad4f4d760c3f1a53cbcf9abca905543/8/Dockerfile) -- [`7.17.8`](https://github.com/docker-library/logstash/blob/e0450c99e0d55edb3a548a10466153bb42f6eb91/7/Dockerfile) +- [`8.18.8`](https://github.com/elastic/dockerfiles/blob/6a7937aa369e0368020bcff78884c2b3645c50dd/logstash/Dockerfile) + +- [`8.19.7`](https://github.com/elastic/dockerfiles/blob/f3f99114a6b4812345df1ec78119cc7a79887af2/logstash/Dockerfile) + +- [`9.1.7`](https://github.com/elastic/dockerfiles/blob/3bacf7a63eba7449c4488657f644080dd0c1be7a/logstash/Dockerfile) + +- [`9.2.1`](https://github.com/elastic/dockerfiles/blob/10f6479ec2158d24291e779766d1e0b0c5627091/logstash/Dockerfile) # Quick reference (cont.) diff --git a/logstash/metadata.json b/logstash/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/logstash/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/mageia/README.md b/mageia/README.md index 86fee0e84983..6560c4b8a35d 100644 --- a/mageia/README.md +++ b/mageia/README.md @@ -24,14 +24,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8`, `latest`](https://github.com/juanluisbaptiste/docker-brew-mageia/blob/067e6df19c568e101a42dc71b77f6a2de5992c70/dist/8/x86_64/Dockerfile) -- [`7`](https://github.com/juanluisbaptiste/docker-brew-mageia/blob/067e6df19c568e101a42dc71b77f6a2de5992c70/dist/7/x86_64/Dockerfile) -- [`cauldron`](https://github.com/juanluisbaptiste/docker-brew-mageia/blob/067e6df19c568e101a42dc71b77f6a2de5992c70/dist/cauldron/x86_64/Dockerfile) +- [`9`, `latest`](https://github.com/juanluisbaptiste/docker-brew-mageia/blob/486e1b969f0d9789a9202020c4ade189da80aa03/dist/9/x86_64/Dockerfile) + +- [`cauldron`](https://github.com/juanluisbaptiste/docker-brew-mageia/blob/486e1b969f0d9789a9202020c4ade189da80aa03/dist/cauldron/x86_64/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/juanluisbaptiste/docker-brew-mageia/issues](https://github.com/juanluisbaptiste/docker-brew-mageia/issues) + [https://github.com/juanluisbaptiste/docker-brew-mageia/issues](https://github.com/juanluisbaptiste/docker-brew-mageia/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/mageia/), [`arm32v7`](https://hub.docker.com/r/arm32v7/mageia/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mageia/) diff --git a/mageia/metadata.json b/mageia/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/mageia/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/mariadb/README.md b/mariadb/README.md index d4bf2b45f2bc..d978ce13b459 100644 --- a/mariadb/README.md +++ b/mariadb/README.md @@ -17,24 +17,38 @@ WARNING: # Quick reference - **Maintained by**: - [MariaDB developer community](https://github.com/MariaDB/mariadb-docker) + [MariaDB Foundation](https://mariadb.org), [MariaDB plc](https://mariadb.com), with contributions from our [community](https://github.com/MariaDB/mariadb-docker) - **Where to get help**: - [Database Adminstrators (Stack Exchange)](https://dba.stackexchange.com/questions/tagged/docker+mariadb), [MariaDB Knowledge Base](https://mariadb.com/kb/en/docker-and-mariadb/) ([Ask a Question here](https://mariadb.com/kb/en/docker-and-mariadb/ask) available). + [Database Adminstrators (Stack Exchange)](https://dba.stackexchange.com/questions/tagged/docker+mariadb), [MariaDB Knowledge Base](https://mariadb.com/kb/en/docker-and-mariadb/) ([Ask a Question here](https://mariadb.com/kb/en/docker-and-mariadb/ask)). Also see the ["Getting Help with MariaDB" article on the MariaDB Knowledge Base](https://mariadb.com/kb/en/getting-help-with-mariadb/). # Supported tags and respective `Dockerfile` links -- [`10.11.1-rc-jammy`, `10.11-rc-jammy`, `10.11.1-rc`, `10.11-rc`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.11/Dockerfile) -- [`10.10.2-jammy`, `10.10-jammy`, `10-jammy`, `jammy`, `10.10.2`, `10.10`, `10`, `latest`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.10/Dockerfile) -- [`10.9.4-jammy`, `10.9-jammy`, `10.9.4`, `10.9`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.9/Dockerfile) -- [`10.8.6-jammy`, `10.8-jammy`, `10.8.6`, `10.8`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.8/Dockerfile) -- [`10.7.7-focal`, `10.7-focal`, `10.7.7`, `10.7`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.7/Dockerfile) -- [`10.6.11-focal`, `10.6-focal`, `10.6.11`, `10.6`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.6/Dockerfile) -- [`10.5.18-focal`, `10.5-focal`, `10.5.18`, `10.5`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.5/Dockerfile) -- [`10.4.27-focal`, `10.4-focal`, `10.4.27`, `10.4`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.4/Dockerfile) -- [`10.3.37-focal`, `10.3-focal`, `10.3.37`, `10.3`](https://github.com/MariaDB/mariadb-docker/blob/56ef6d9f842e1ddf50e4359625a6e5cef1748c38/10.3/Dockerfile) +- [`12.1.1-ubi10-rc`, `12.1-ubi10-rc`, `12.1.1-ubi-rc`, `12.1-ubi-rc`](https://github.com/MariaDB/mariadb-docker/blob/46c443c353dea7d232536a03df3b8a5b998cc78d/12.1-ubi/Dockerfile) + +- [`12.1.1-noble-rc`, `12.1-noble-rc`, `12.1.1-rc`, `12.1-rc`](https://github.com/MariaDB/mariadb-docker/blob/46c443c353dea7d232536a03df3b8a5b998cc78d/12.1/Dockerfile) + +- [`12.0.2-ubi10`, `12.0-ubi10`, `12-ubi10`, `12.0.2-ubi`, `12.0-ubi`, `12-ubi`](https://github.com/MariaDB/mariadb-docker/blob/46c443c353dea7d232536a03df3b8a5b998cc78d/12.0-ubi/Dockerfile) + +- [`12.0.2-noble`, `12.0-noble`, `12-noble`, `noble`, `12.0.2`, `12.0`, `12`, `latest`](https://github.com/MariaDB/mariadb-docker/blob/46c443c353dea7d232536a03df3b8a5b998cc78d/12.0/Dockerfile) + +- [`11.8.4-ubi9`, `11.8-ubi9`, `11-ubi9`, `lts-ubi9`, `11.8.4-ubi`, `11.8-ubi`, `11-ubi`, `lts-ubi`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/11.8-ubi/Dockerfile) + +- [`11.8.4-noble`, `11.8-noble`, `11-noble`, `lts-noble`, `11.8.4`, `11.8`, `11`, `lts`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/11.8/Dockerfile) + +- [`11.4.9-ubi9`, `11.4-ubi9`, `11.4.9-ubi`, `11.4-ubi`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/11.4-ubi/Dockerfile) + +- [`11.4.9-noble`, `11.4-noble`, `11.4.9`, `11.4`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/11.4/Dockerfile) + +- [`10.11.15-ubi9`, `10.11-ubi9`, `10-ubi9`, `10.11.15-ubi`, `10.11-ubi`, `10-ubi`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/10.11-ubi/Dockerfile) + +- [`10.11.15-jammy`, `10.11-jammy`, `10-jammy`, `10.11.15`, `10.11`, `10`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/10.11/Dockerfile) + +- [`10.6.24-ubi9`, `10.6-ubi9`, `10.6.24-ubi`, `10.6-ubi`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/10.6-ubi/Dockerfile) + +- [`10.6.24-jammy`, `10.6-jammy`, `10.6.24`, `10.6`](https://github.com/MariaDB/mariadb-docker/blob/5ad00a82b5bb2705825c7afb670f6547b1bed316/10.6/Dockerfile) # Quick reference (cont.) @@ -57,64 +71,56 @@ Also see the ["Getting Help with MariaDB" article on the MariaDB Knowledge Base] # What is MariaDB? -MariaDB Server is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. +MariaDB Server is one of the most popular database servers in the world. It's made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. The intent is also to maintain high compatibility with MySQL, ensuring a library binary equivalency and exact matching with MySQL APIs and commands. MariaDB developers continue to develop new features and improve performance to better serve its users. -![logo](https://raw.githubusercontent.com/docker-library/docs/fe985dcb24154456254e252d1fa4a2b6b656ee80/mariadb/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/554e4b9aaac2e266b9ab31e9a312cb6f96d69286/mariadb/logo.png) # How to use this image -## Start a `mariadb` server instance +The mariadb has a number of tags, and of note is `latest`, as the latest stable version, and `lts`, as the last long term support release. -Starting a MariaDB instance with the latest version is simple: +## Running the container -```console -$ docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest -``` +### Configuration -or: +#### Port binding + +By default, the database running within the container will listen on port 3306. You can expose the container port 3306 to the host port 3306 with the `-p 3306:3306` argument to `docker run`, like the command below: ```console -$ docker network create some-network -$ docker run --detach --network some-network --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest +$ docker run --name some-mariadb -p 3306:3306 mariadb:latest ``` -... where `some-network` is a newly created network (other than `bridge` as the default network), `some-mariadb` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MariaDB root user. See the list above for relevant tags to match your needs and environment. - -## Connect to MariaDB from the MySQL/MariaDB command line client +### Starting using a minimal configuration -The following command starts another `mariadb` container instance and runs the `mariadb` command line client against your original `mariadb` container, allowing you to execute SQL statements against your database instance: +The environment variables required to use this image involves the setting of the root user password: ```console -$ docker run -it --network some-network --rm mariadb mariadb -hsome-mariadb -uexample-user -p +$ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest ``` -... where `some-mariadb` is the name of your original `mariadb` container (connected to the `some-network` Docker network). - -This image can also be used as a client for non-Docker or remote instances: +or: ```console -$ docker run -it --rm mariadb mariadb -h -u example-user -p +$ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:latest ``` -That will give you a standard MariaDB prompt. You can test it with: +or: ```console -MariaDB [(none)]> SELECT VERSION(); +$ docker run --detach --name some-mariadb --env MARIADB_RANDOM_ROOT_PASSWORD=1 mariadb:latest ``` -... which should give you the version. You can then use `exit` to leave the MariaDB command line client and the client container. - -More information about the MariaDB command-line client can be found in the [MariaDB Knowledge Base](https://mariadb.com/kb/en/mysql-command-line-client/) +... where the container logs will contain the generated root password. -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `mariadb`: +Example `compose.yaml` for `mariadb`: ```yaml # Use root/example as user/password credentials -version: '3.1' services: @@ -131,317 +137,208 @@ services: - 8080:8080 ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/cf3a7fba4dfd134e3f7f5921b580c71e0fd8bc24/mariadb/stack.yml) +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). -Run `docker stack deploy -c stack.yml mariadb` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +### Start a `mariadb` server instance with user, password and database -## Container shell access and viewing MariaDB logs - -The `docker exec` command allows you to run commands inside a Docker container. The following command line will give you a bash shell inside your `mariadb` container: +Starting a MariaDB instance with a user, password, and a database: ```console -$ docker exec -it some-mariadb bash +$ docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_DATABASE=exmple-database --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest ``` -The log is available through Docker's container log: +### Start a `mariadb` server instance in a network + +As applications talk to MariaDB, MariaDB needs to start in the same network as the application: ```console -$ docker logs some-mariadb +$ docker network create some-network +$ docker run --detach --network some-network --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest +$ docker run --detach --network some-network --name some-application --env APP_DB_HOST=some-mariadb --env APP_DB_USER=example-user --env APP_DB_PASSWD=my_cool_secret some-application ``` -## Using a custom MariaDB configuration file - -Custom configuration files should end in `.cnf` and be mounted at the directory `/etc/mysql/conf.d`. These files should contain the minimal changes from the MariaDB workload required for your application/environment. A MariaDB configuration file will have a `[mariadb]` group followed by `variable` = `value` settings per [Setting Server System Variables](https://mariadb.com/kb/en/server-system-variables/#setting-server-system-variables) or [option-prefix-variable](https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-prefixes). - -The `mariadb` image configuration contains the Ubuntu MariaDB variables with two custom changes for the container: +... where `some-network` is a newly created network (other than `bridge` as the default network), `some-mariadb` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MariaDB root user. See the list above for relevant tags to match your needs and environment. `some-application` and then environment variable `APP_DB_HOST`, `APP_DB_USER` and `APP_DB_PASSWD` are the application's configuration for its database connection. - [host-cache-size=0](https://mariadb.com/kb/en/server-system-variables/#host_cache_size) - [skip-name-resolve](https://mariadb.com/kb/en/server-system-variables/#skip_name_resolve) +## Connect to MariaDB from the MariaDB command line client -These disable the authentication of `user@hostname` users. To re-enable the `skip-name-resolve` use `disable-skip-name-resolve` as variable or arguement. When enabled, the `host-cache-size` should be sufficient for the number of containers connecting to the `mariadb`. - -To view the resulting configuration of your `mariadb` container: +The following command starts another `mariadb` container instance and runs the `mariadb` command line client against your original `mariadb` container, allowing you to execute SQL statements against your database instance: ```console -$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d --rm mariadb:latest my_print_defaults --mysqld +$ docker run -it --network some-network --rm mariadb mariadb -h some-mariadb -u example-user ``` -### Configuration without a `cnf` file +... where `some-mariadb` is the name of your original `mariadb` container (connected to the `some-network` Docker network). -Many configuration options can be passed as flags to `mariadbd`. This will give you the flexibility to customize the container without needing a `cnf` file. For example, if you want to run on port 3808 just run the following: +This image can also be used as a client for non-Docker or remote instances: ```console -$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest --port 3808 +$ docker run -it --rm mariadb mariadb --host --user example-user --password --database test ``` -If you would like to see a complete list of available options, just run: +That will give you a standard MariaDB prompt. You can test it with: ```console -$ docker run -it --rm mariadb:latest --verbose --help +MariaDB [(none)]> \s +-------------- +client/mariadb Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using EditLine wrapper + +Connection id: 20 +Current database: test +Current user: example-user@bark +SSL: Not in use +Current pager: stdout +Using outfile: '' +Using delimiter: ; +Server: MariaDB +Server version: 10.6.16-MariaDB Source distribution +Protocol version: 10 +Connection: 192.168.178.73 via TCP/IP +Server characterset: latin1 +Db characterset: latin1 +Client characterset: utf8mb3 +Conn. characterset: utf8mb3 +TCP port: 3306 +Uptime: 6 min 4 sec + +Threads: 1 Questions: 32 Slow queries: 0 Opens: 20 Open tables: 13 Queries per second avg: 0.087 +-------------- ``` -## Environment Variables - -When you start the `mariadb` image, you can adjust the initialization of the MariaDB instance by passing one or more environment variables on the `docker run` command line. Do note that none of the variables below will have any effect if you start the container with a data directory that already contains a database: any pre-existing database will always be left untouched on container startup. - -From tag 10.2.38, 10.3.29, 10.4.19, 10.5.10 onwards, and all 10.6 and later tags, the `MARIADB_*` equivalent variables are provided. `MARIADB_*` variants will always be used in preference to `MYSQL_*` variants. - -One of `MARIADB_RANDOM_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH`, `MARIADB_ROOT_PASSWORD` or `MARIADB_ALLOW_EMPTY_ROOT_PASSWORD` (or equivalents, including `*_FILE`), is required. The other environment variables are optional. - -### `MARIADB_ROOT_PASSWORD` / `MYSQL_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH` - -This specifies the password that will be set for the MariaDB `root` superuser account. In the above example, it was set to `my-secret-pw`. - -In order to have no plaintext secret in the deployment, `MARIADB_ROOT_PASSWORD_HASH` can be used as it is just the hash of the password. The hash can be generated with `SELECT PASSWORD('thepassword')` as a SQL query. - -### `MARIADB_ALLOW_EMPTY_ROOT_PASSWORD` / `MYSQL_ALLOW_EMPTY_PASSWORD` - -Set to a non-empty value, like `yes`, to allow the container to be started with a blank password for the root user. *NOTE*: Setting this variable to `yes` is not recommended unless you really know what you are doing, since this will leave your MariaDB instance completely unprotected, allowing anyone to gain complete superuser access. - -### `MARIADB_RANDOM_ROOT_PASSWORD` / `MYSQL_RANDOM_ROOT_PASSWORD` - -Set to a non-empty value, like `yes`, to generate a random initial password for the root user. The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). +... which will give you the version and connection information. You can then use `exit` to leave the MariaDB command line client and the client container. -### `MARIADB_ROOT_HOST` / `MYSQL_ROOT_HOST` +More information about the MariaDB command-line client can be found in the [MariaDB Knowledge Base : MariaDB Command Line Client](https://mariadb.com/kb/en/mariadb-command-line-client/). -This is the hostname part of the root user created. By default this is `%`, however it can be set to any default [MariaDB allowed hostname component](https://mariadb.com/kb/en/create-user/#host-name-component). Setting this to `localhost` will prevent any root user being accessible except via the unix socket. +## Container shell access -### `MARIADB_MYSQL_LOCALHOST_USER` / `MARIADB_MYSQL_LOCALHOST_GRANTS` - -Set `MARIADB_MYSQL_LOCALHOST_USER` to a non-empty value to create the `mysql@locahost` database user. This user is especially useful for a variety of health checks and backup scripts. - -The `mysql@localhost` user gets [USAGE](https://mariadb.com/kb/en/grant/#the-usage-privilege) privileges by default. If more access is required, additional [global privileges](https://mariadb.com/kb/en/grant/#global-privileges) in the form of a comma separated list can be provided. If you are sharing a volume containing MariaDB's unix socket (`/var/run/mysqld` by default), privileges beyond `USAGE` can result in confidentiality, integrity and availability risks, so use a minimal set. See the example below on using Mariabackup. The `healthcheck.sh` script also documents the required privileges for each health check test. - -### `MARIADB_DATABASE` / `MYSQL_DATABASE` - -This variable allows you to specify the name of a database to be created on image startup. - -### `MARIADB_USER` / `MYSQL_USER`, `MARIADB_PASSWORD` / `MYSQL_PASSWORD`, `MARIADB_PASSWORD_HASH` - -These are used in conjunction to create a new user and to set that user's password. Both user and password variables are required for a user to be created. This user will be granted all access ([corresponding to `GRANT ALL`](https://mariadb.com/kb/en/grant/#the-all-privileges-privilege)) to the `MARIADB_DATABASE` database. - -See `MARIADB_ROOT_PASSWORD_HASH` above for how to get a password hash for `MARIADB_PASSWORD_HASH`. - -Do note that there is no need to use this mechanism to create the root superuser, that user gets created by default with the password specified by the `MARIADB_ROOT_PASSWORD*` variable. - -### `MARIADB_INITDB_SKIP_TZINFO` / `MYSQL_INITDB_SKIP_TZINFO` - -By default, the entrypoint script automatically loads the timezone data needed for the `CONVERT_TZ()` function. If it is not needed, any non-empty value disables timezone loading. - -### `MARIADB_AUTO_UPGRADE` / `MARIADB_DISABLE_UPGRADE_BACKUP` - -Set `MARIADB_AUTO_UPGRADE` to a non-empty value to have the entrypoint check whether `mysql_upgrade`/`mariadb-upgrade` needs to run, and if so, run the upgrade before starting the MariaDB server. - -Before the upgrade, a backup of the system database is created in the top of the datadir with the name `system_mysql_backup_*.sql.zst`. This backup process can be disabled with by setting `MARIADB_DISABLE_UPGRADE_BACKUP` to a non-empty value. - -## Docker Secrets - -As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: +The `docker exec` command allows you to run commands inside the running container. The following command line will give you a bash shell inside your `mariadb` container: ```console -$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mariadb:latest +$ docker exec -it some-mariadb bash ``` -Currently, this is only supported for `MARIADB_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH`, `MARIADB_ROOT_HOST`, `MARIADB_DATABASE`, `MARIADB_USER`, `MARIADB_PASSWORD` and `MARIADB_PASSWORD_HASH` (and `MYSQL_*` equivalents of these). - -# Initializing a fresh instance - -When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.xz` and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.sh` files without file execute permission are sourced rather than executed. You can easily populate your `mariadb` services by [mounting a SQL dump into that directory](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-file-as-a-data-volume) and provide [custom images](https://docs.docker.com/reference/builder/) with contributed data. SQL files will be imported by default to the database specified by the `MARIADB_DATABASE` / `MYSQL_DATABASE` variable. +## MariaDB-Backup -# Caveats - -## Where to Store Data - -Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `mariadb` images to familiarize themselves with the options available, including: - -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. - -The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: - -1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`. -2. Start your `mariadb` container like this: - - ```console - $ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest - ``` - -The `-v /my/own/datadir:/var/lib/mysql` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/mysql` inside the container, where MariaDB by default will write its data files. - -## No connections until MariaDB init completes - -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. - -## Health/Liveness/Readiness Checking - -See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) for why there is no default `HEALTHCHECK` directive. However, you can use the `/usr/local/bin/healthcheck.sh` script to choose from a (non-exhaustive) list of tests to check for whatever you consider health/liveness/readiness. Refer to the script's sources to learn about how to use it and which exact tests are provided. - -## Usage against an existing database - -If you start your `mariadb` container instance with a data directory that already contains a database (specifically, a `mysql` subdirectory), no environment variables that control initialization will be needed or examined, and no pre-existing databases will be changed. The only exception is the non-default `MARIADB_AUTO_UPGRADE` environment variable, that might cause `mysql_upgrade`/`mariadb-upgrade` to run, which might change the system tables. - -## Creating database dumps - -Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the `mysqld` server. A simple way to ensure this is to use `docker exec` and run the tool from the same container, similar to the following: +As MariaDB-Backup is highly coupled with the server version, it can be useful to use the `mariadb-backup` in the mariadb container of an explicit version: ```console -$ docker exec some-mariadb sh -c 'exec mariadb-dump --all-databases -uroot -p"$MARIADB_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql +$ docker run --volume /backup-volume:/backup --rm mariadb:10.6.15 mariadb-backup --help ``` -## Restoring data from dump files +## Container viewing MariaDB logs -For restoring data. You can use the `docker exec` command with the `-i` flag, similar to the following: +The log is available through Docker's container log: ```console -$ docker exec -i some-mariadb sh -c 'exec mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql +$ docker logs some-mariadb ``` -If one or more databases, but neither `--all-databases` nor the `mysql` database, were dumped, these databases can be restored by placing the resulting sql file in the `/docker-entrypoint-initdb.d` directory. - -## Creating backups with Mariabackup +## Using a custom MariaDB configuration file -To perform a backup using [Mariabackup](https://mariadb.com/kb/en/mariabackup/), a second container is started that shares the original container's data directory. An additional volume for the backup needs to be included in the second backup instance. Authentication against the MariaDB database instance is required to successfully complete the backup. In the example below a `mysql@localhost` user is used with the MariaDB server's unix socket shared with the backup container. +Custom configuration files should end in `.cnf` and be mounted read only at the directory `/etc/mysql/conf.d`. These files should contain the minimal changes from the MariaDB workload required for your application/environment. A MariaDB configuration file will have a `[mariadb]` group followed by `variable` = `value` settings per [Setting Server System Variables](https://mariadb.com/kb/en/server-system-variables/#setting-server-system-variables) or [option-prefix-variable](https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-prefixes). -```console -$ docker volume create some-mariadb-socket -$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -v some-mariadb-socket:/var/run/mysqld -e MARIADB_MYSQL_LOCALHOST_USER=1 -e MARIADB_MYSQL_LOCALHOST_GRANTS="RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR" -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest -``` +The `mariadb` image configuration contains the Ubuntu MariaDB variables with two custom changes for the container: -Note: Privileges listed here are for 10.5+. For an exact list, see [the Knowledge Base documentation for Mariabackup: Authentication and Privileges](https://mariadb.com/kb/en/mariabackup-overview/#authentication-and-privileges). +- [`host-cache-size=0`](https://mariadb.com/kb/en/server-system-variables/#host_cache_size) +- [`skip-name-resolve`](https://mariadb.com/kb/en/server-system-variables/#skip_name_resolve) -Mariabackup will run as the `mysql` user in the container, so the permissions on `/backup` will need to ensure that it can be written to by this user: +These disable the authentication of `user@hostname` users. To re-enable the `skip-name-resolve` use `disable-skip-name-resolve` as variable or argument. When enabled, the `host-cache-size` should be sufficient for the number of containers connecting to the `mariadb`. -```console -$ docker volume create some-mariadb-backup -$ docker run --rm some-mariadb-backup -v some-mariadb-backup:/backup mariadb:latest chown mysql: /backup -``` - -To perform the backup: +To view the resulting configuration of your `mariadb` container: ```console -$ docker run --user mysql -v some-mariadb-socket:/var/run/mysqld -v some-mariadb-backup:/backup -v /my/own/datadir:/var/lib/mysql --rm mariadb:latest mariabackup --backup --target-dir=/backup +$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d --rm mariadb:latest my_print_defaults --mysqld ``` -## Restore backups with Mariabackup - -These steps restore the backup made with Mariabackup. +### Configuration without a `cnf` file -At some point before doing the restore, the backup needs to be prepared. Perform the prepare like this: +Many configuration options can be passed as flags to `mariadbd`. This will give you the flexibility to customize the container without needing a `cnf` file. For example, if you want to run on port 3808 just run the following: ```console -$ docker run --user mysql --rm -v some-mariadb-backup:/backup mariadb:latest mariabackup --prepare --target-dir=/backup +$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest --port 3808 ``` -Now that the image is prepared, start the container with both the data and the backup volumes and restore the backup: +If you would like to see a complete list of available options, just run: ```console -$ docker run --user mysql --rm -v /my/new/datadir:/var/lib/mysql -v some-mariadb-backup:/backup mariadb:latest mariabackup --copy-back --target-dir=/backup +$ docker run -it --rm mariadb:latest --verbose --help ``` -With `/my/new/datadir` containing the restored backup, start normally as this is an initialized data directory: - -```console -$ docker run --name some-mariadb -v /my/new/datadir:/var/lib/mysql -d mariadb:latest -``` +## Environment Variables -For further information on Mariabackup, see the [Mariabackup Knowledge Base](https://mariadb.com/kb/en/mariabackup-overview/). +When you start the `mariadb` image, you can adjust the initialization of the MariaDB instance by passing one or more environment variables on the `docker run` command line. Do note that all of the variables, except `MARIADB_AUTO_UPGRADE`, will have no effect if you start the container with a data directory that already contains a database. I.e. any pre-existing database will always be left untouched on container startup. -## How to reset root and user passwords +One of `MARIADB_RANDOM_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH`, `MARIADB_ROOT_PASSWORD` or `MARIADB_ALLOW_EMPTY_ROOT_PASSWORD` (or equivalents, including `*_FILE`), is required. The other environment variables are optional. -If you have an existing data directory and wish to reset the root and user passwords, and to create a database on which the user can fully modify, perform the following steps. +There is a large list of environment variables and the complete list is documented on [MariaDB's Knowledge Base : MariaDB Server Docker Official Image Environment Variables](https://mariadb.com/kb/en/mariadb-server-docker-official-image-environment-variables/). -First create a `passwordreset.sql` file: +### `MARIADB_AUTO_UPGRADE` -```text -CREATE USER IF NOT EXISTS root@localhost IDENTIFIED BY 'thisismyrootpassword'; -SET PASSWORD FOR root@localhost = PASSWORD('thisismyrootpassword'); -GRANT ALL ON *.* TO root@localhost WITH GRANT OPTION; -CREATE USER IF NOT EXISTS root@'%' IDENTIFIED BY 'thisismyrootpassword'; -SET PASSWORD FOR root@'%' = PASSWORD('thisismyrootpassword'); -GRANT ALL ON *.* TO root@'%' WITH GRANT OPTION; -CREATE USER IF NOT EXISTS myuser@'%' IDENTIFIED BY 'thisismyuserpassword'; -SET PASSWORD FOR myuser@'%' = PASSWORD('thisismyuserpassword'); -CREATE DATABASE IF NOT EXISTS databasename; -GRANT ALL ON databasename.* TO myuser@'%'; -``` +When this environment variable is set, this will run the [mariadb-upgrade](https://mariadb.com/kb/en/mariadb-upgrade/), if needed, so any changes in the MariaDB system tables required to expose new features will be made. This may impeed some [downgrade options](https://mariadb.com/kb/en/downgrading-between-major-versions-of-mariadb/). Unless the environment variable `MARIADB_DISABLE_UPGRADE_BACKUP` is set, there will be a backup of the system tables created as `system_mysql_backup_*.sql.zst` in the top level of the data directory to assist in the downgrade if needed. -Adjust `myuser`, `databasename` and passwords as needed. +## Secrets -Then: +As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: ```console -$ docker run --rm -v /my/own/datadir:/var/lib/mysql -v /my/own/passwordreset.sql:/passwordreset.sql:z mariadb:latest --init-file=/passwordreset.sql +$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mariadb-root -d mariadb:latest ``` -On restarting the MariaDB container on this `/my/own/datadir`, the `root` and `myuser` passwords will be reset. - -## How to install MariaDB plugins +# Initializing the database contents -MariaDB has many plugins, most are not enabled by default, some are in the mariadb container, others need to be installed from additional packages. +When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.xz` and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.sh` files without file execute permission are sourced rather than executed. You can easily populate your `mariadb` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MARIADB_DATABASE` variable. -The following methods summarize the [MariaDB Blog article - Installing plugins in the MariaDB Docker Library Container](https://mariadb.org/installing-plugins-in-the-mariadb-docker-library-container/) on this topic. +# Caveats -### Which plugins does the container contain? +## Where to Store Data -To see which plugins are available in the mariadb: +Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `mariadb` images to familiarize themselves with the options available, including: -```console -$ docker run --rm mariadb:latest ls -C /usr/lib/mysql/plugin -``` +- Use a named volume using the container manager to manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. -### Enabling a plugin using flags +The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: -Using the `--plugin-load-add` flag with the plugin name (can be repeated), the plugins will be loaded and ready when the container is started: +1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`. +2. Start your `mariadb` container like this: -For example enable the `simple\_password\_check` plugin: + ```console + $ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql:Z -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest + ``` -```console -$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw --network=host -d mariadb:latest --plugin-load-add=simple_password_check -``` +The `-v /my/own/datadir:/var/lib/mysql:Z` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/mysql` inside the container, where MariaDB by default will write its data files. -### Enabling a plugin in the configuration files +## No connections until MariaDB init completes -`plugin-load-add` can be used as a configuration option to load plugins. The example below load the [FederatedX Storage Engine](https://mariadb.com/kb/en/federatedx-storage-engine/). +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker compose`, which start several containers simultaneously. -```console -$ printf "[mariadb]\nplugin-load-add=ha_federatedx\n" > /my/custom/federatedx.conf -$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest -``` +## Health/Liveness/Readiness Checking -### Install a plugin using SQL in /docker-entrypoint-initdb.d +See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) for why there is no default `HEALTHCHECK` directive. However, you can use the `healthcheck.sh` script to choose from a (non-exhaustive) list of tests to check for whatever you consider health/liveness/readiness. Refer to the [MariaDB Knowledge Base : Using Healthcheck.sh](https://mariadb.com/kb/en/using-healthcheck-sh-script/) to learn about how to use it and which exact tests are provided. -[`INSTALL SONAME`](https://mariadb.com/kb/en/install-soname/) can be used to install a plugin as part of the database initialization. +## Usage against an existing database -Create the SQL file used in initialization: +If you start your `mariadb` container instance with a data directory that already contains a database (specifically, a `mysql` subdirectory), no environment variables that control initialization will be needed or examined, and no pre-existing databases will be changed. The only exception is the non-default `MARIADB_AUTO_UPGRADE` environment variable, that might cause `mysql_upgrade`/`mariadb-upgrade` to run, which might change the system tables. -```console -$ echo 'INSTALL SONAME "disks";' > my_initdb/disks.sql -``` +## Backups and Restores -In this case the `my\_initdb` is a `/docker-entrypoint-initdb.d` directory per "Initializing a fresh instance" section above. +Backing up and restoring databases is important in containers too. The documentation on how to do this can be found on the [MariaDB Knowledge Base : Container Backup and Restoration](https://mariadb.com/kb/en/backups-and-restoration/). -### Identifing additional plugins in additional packages +## Frequently Asked Questions / How to reset root and user passwords -A number of plugins are in separate packages to reduce their installation size. The package names of MariaDB created plugins can be determined using the following command: +This is documented on [MariaDB Knowledge Base : Frequenty Asked Questions of Docker Official Image](https://mariadb.com/kb/en/frequenty-asked-questions-of-docker-official-image/#how-to-reset-passwords). -```console -$ docker run --rm mariadb:latest sh -c 'apt-get update -qq && apt-cache search mariadb-plugin' -``` +## How to install MariaDB plugins -### Creating a image with plugins from additional packages +This is documented on [MariaDB Knowledge Base : Adding Plugins to the Docker Official Image](https://mariadb.com/kb/en/adding-plugins-to-the-mariadb-docker-official-image/). -A new image needs to be created when using additional packages. The mariadb image can be used as a base however: +# Related Images -In the following the [CONNECT Storage Engine](https://mariadb.com/kb/en/connect/) is installed: +- [MariaDB MaxScale](https://hub.docker.com/r/mariadb/maxscale/tags) +- [MariaDB ColumnStore](https://hub.docker.com/r/mariadb/columnstore/tags) -```dockerfile -FROM mariadb:latest -RUN apt-get update && \ - apt-get install mariadb-plugin-connect -y && \ - rm -rf /var/lib/apt/lists/* -``` +# Compose File Examples -Installing plugins from packages creates a configuration file in the directory `/etc/mysql/mariadb.conf.d/` that loads the plugin on startup. +Example compose files using this `mariadb` are located in https://github.com/MariaDB/mariadb-docker in the `/examples` folder. # License diff --git a/mariadb/stack.yml b/mariadb/compose.yaml similarity index 94% rename from mariadb/stack.yml rename to mariadb/compose.yaml index d5b571712ddb..25409b7e28ae 100644 --- a/mariadb/stack.yml +++ b/mariadb/compose.yaml @@ -1,5 +1,4 @@ # Use root/example as user/password credentials -version: '3.1' services: diff --git a/mariadb/content.md b/mariadb/content.md index dd8746491a77..6575e45bf967 100644 --- a/mariadb/content.md +++ b/mariadb/content.md @@ -1,6 +1,6 @@ # What is MariaDB? -MariaDB Server is one of the most popular database servers in the world. It’s made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. +MariaDB Server is one of the most popular database servers in the world. It's made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow. The intent is also to maintain high compatibility with MySQL, ensuring a library binary equivalency and exact matching with MySQL APIs and commands. MariaDB developers continue to develop new features and improve performance to better serve its users. @@ -8,29 +8,72 @@ The intent is also to maintain high compatibility with MySQL, ensuring a library # How to use this image -## Start a `%%IMAGE%%` server instance +The %%IMAGE%% has a number of tags, and of note is `latest`, as the latest stable version, and `lts`, as the last long term support release. -Starting a MariaDB instance with the latest version is simple: +## Running the container + +### Configuration + +#### Port binding + +By default, the database running within the container will listen on port 3306. You can expose the container port 3306 to the host port 3306 with the `-p 3306:3306` argument to `docker run`, like the command below: ```console -$ docker run --detach --name some-%%REPO%% --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw %%IMAGE%%:latest +$ docker run --name some-%%REPO%% -p 3306:3306 %%IMAGE%%:latest +``` + +### Starting using a minimal configuration + +The environment variables required to use this image involves the setting of the root user password: + +```console +$ docker run --detach --name some-%%REPO%% --env MARIADB_ROOT_PASSWORD=my-secret-pw %%IMAGE%%:latest ``` or: +```console +$ docker run --detach --name some-%%REPO%% --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 %%IMAGE%%:latest +``` + +or: + +```console +$ docker run --detach --name some-%%REPO%% --env MARIADB_RANDOM_ROOT_PASSWORD=1 %%IMAGE%%:latest +``` + +... where the container logs will contain the generated root password. + +## %%COMPOSE%% + +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). + +### Start a `%%IMAGE%%` server instance with user, password and database + +Starting a MariaDB instance with a user, password, and a database: + +```console +$ docker run --detach --name some-%%REPO%% --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_DATABASE=exmple-database --env MARIADB_ROOT_PASSWORD=my-secret-pw %%IMAGE%%:latest +``` + +### Start a `%%IMAGE%%` server instance in a network + +As applications talk to MariaDB, MariaDB needs to start in the same network as the application: + ```console $ docker network create some-network -$ docker run --detach --network some-network --name some-%%REPO%% --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw %%IMAGE%%:latest +$ docker run --detach --network some-network --name some-%%REPO%% --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw %%IMAGE%%:latest +$ docker run --detach --network some-network --name some-application --env APP_DB_HOST=some-%%REPO%% --env APP_DB_USER=example-user --env APP_DB_PASSWD=my_cool_secret some-application ``` -... where `some-network` is a newly created network (other than `bridge` as the default network), `some-%%REPO%%` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MariaDB root user. See the list above for relevant tags to match your needs and environment. +... where `some-network` is a newly created network (other than `bridge` as the default network), `some-%%REPO%%` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MariaDB root user. See the list above for relevant tags to match your needs and environment. `some-application` and then environment variable `APP_DB_HOST`, `APP_DB_USER` and `APP_DB_PASSWD` are the application's configuration for its database connection. -## Connect to MariaDB from the MySQL/MariaDB command line client +## Connect to MariaDB from the MariaDB command line client The following command starts another `%%IMAGE%%` container instance and runs the `mariadb` command line client against your original `%%IMAGE%%` container, allowing you to execute SQL statements against your database instance: ```console -$ docker run -it --network some-network --rm %%IMAGE%% mariadb -hsome-%%REPO%% -uexample-user -p +$ docker run -it --network some-network --rm %%IMAGE%% mariadb -h some-%%REPO%% -u example-user ``` ... where `some-%%REPO%%` is the name of your original `%%IMAGE%%` container (connected to the `some-network` Docker network). @@ -38,31 +81,60 @@ $ docker run -it --network some-network --rm %%IMAGE%% mariadb -hsome-%%REPO%% - This image can also be used as a client for non-Docker or remote instances: ```console -$ docker run -it --rm %%IMAGE%% mariadb -h -u example-user -p +$ docker run -it --rm %%IMAGE%% mariadb --host --user example-user --password --database test ``` That will give you a standard MariaDB prompt. You can test it with: ```console -MariaDB [(none)]> SELECT VERSION(); -``` +MariaDB [(none)]> \s +-------------- +client/mariadb Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using EditLine wrapper -... which should give you the version. You can then use `exit` to leave the MariaDB command line client and the client container. +Connection id: 20 +Current database: test +Current user: example-user@bark +SSL: Not in use +Current pager: stdout +Using outfile: '' +Using delimiter: ; +Server: MariaDB +Server version: 10.6.16-MariaDB Source distribution +Protocol version: 10 +Connection: 192.168.178.73 via TCP/IP +Server characterset: latin1 +Db characterset: latin1 +Client characterset: utf8mb3 +Conn. characterset: utf8mb3 +TCP port: 3306 +Uptime: 6 min 4 sec -More information about the MariaDB command-line client can be found in the [MariaDB Knowledge Base](https://mariadb.com/kb/en/mysql-command-line-client/) +Threads: 1 Questions: 32 Slow queries: 0 Opens: 20 Open tables: 13 Queries per second avg: 0.087 +-------------- +``` -## %%STACK%% +... which will give you the version and connection information. You can then use `exit` to leave the MariaDB command line client and the client container. -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +More information about the MariaDB command-line client can be found in the [MariaDB Knowledge Base : MariaDB Command Line Client](https://mariadb.com/kb/en/mariadb-command-line-client/). -## Container shell access and viewing MariaDB logs +## Container shell access -The `docker exec` command allows you to run commands inside a Docker container. The following command line will give you a bash shell inside your `%%IMAGE%%` container: +The `docker exec` command allows you to run commands inside the running container. The following command line will give you a bash shell inside your `%%IMAGE%%` container: ```console $ docker exec -it some-%%REPO%% bash ``` +## MariaDB-Backup + +As MariaDB-Backup is highly coupled with the server version, it can be useful to use the `mariadb-backup` in the %%REPO%% container of an explicit version: + +```console +$ docker run --volume /backup-volume:/backup --rm %%REPO%%:10.6.15 mariadb-backup --help +``` + +## Container viewing MariaDB logs + The log is available through Docker's container log: ```console @@ -71,14 +143,14 @@ $ docker logs some-%%REPO%% ## Using a custom MariaDB configuration file -Custom configuration files should end in `.cnf` and be mounted at the directory `/etc/mysql/conf.d`. These files should contain the minimal changes from the MariaDB workload required for your application/environment. A MariaDB configuration file will have a `[mariadb]` group followed by `variable` = `value` settings per [Setting Server System Variables](https://mariadb.com/kb/en/server-system-variables/#setting-server-system-variables) or [option-prefix-variable](https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-prefixes). +Custom configuration files should end in `.cnf` and be mounted read only at the directory `/etc/mysql/conf.d`. These files should contain the minimal changes from the MariaDB workload required for your application/environment. A MariaDB configuration file will have a `[mariadb]` group followed by `variable` = `value` settings per [Setting Server System Variables](https://mariadb.com/kb/en/server-system-variables/#setting-server-system-variables) or [option-prefix-variable](https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-prefixes). The `%%IMAGE%%` image configuration contains the Ubuntu MariaDB variables with two custom changes for the container: - [host-cache-size=0](https://mariadb.com/kb/en/server-system-variables/#host_cache_size) - [skip-name-resolve](https://mariadb.com/kb/en/server-system-variables/#skip_name_resolve) +- [`host-cache-size=0`](https://mariadb.com/kb/en/server-system-variables/#host_cache_size) +- [`skip-name-resolve`](https://mariadb.com/kb/en/server-system-variables/#skip_name_resolve) -These disable the authentication of `user@hostname` users. To re-enable the `skip-name-resolve` use `disable-skip-name-resolve` as variable or arguement. When enabled, the `host-cache-size` should be sufficient for the number of containers connecting to the `%%IMAGE%%`. +These disable the authentication of `user@hostname` users. To re-enable the `skip-name-resolve` use `disable-skip-name-resolve` as variable or argument. When enabled, the `host-cache-size` should be sufficient for the number of containers connecting to the `%%IMAGE%%`. To view the resulting configuration of your `%%IMAGE%%` container: @@ -102,71 +174,27 @@ $ docker run -it --rm %%IMAGE%%:latest --verbose --help ## Environment Variables -When you start the `%%IMAGE%%` image, you can adjust the initialization of the MariaDB instance by passing one or more environment variables on the `docker run` command line. Do note that none of the variables below will have any effect if you start the container with a data directory that already contains a database: any pre-existing database will always be left untouched on container startup. - -From tag 10.2.38, 10.3.29, 10.4.19, 10.5.10 onwards, and all 10.6 and later tags, the `MARIADB_*` equivalent variables are provided. `MARIADB_*` variants will always be used in preference to `MYSQL_*` variants. +When you start the `%%IMAGE%%` image, you can adjust the initialization of the MariaDB instance by passing one or more environment variables on the `docker run` command line. Do note that all of the variables, except `MARIADB_AUTO_UPGRADE`, will have no effect if you start the container with a data directory that already contains a database. I.e. any pre-existing database will always be left untouched on container startup. One of `MARIADB_RANDOM_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH`, `MARIADB_ROOT_PASSWORD` or `MARIADB_ALLOW_EMPTY_ROOT_PASSWORD` (or equivalents, including `*_FILE`), is required. The other environment variables are optional. -### `MARIADB_ROOT_PASSWORD` / `MYSQL_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH` - -This specifies the password that will be set for the MariaDB `root` superuser account. In the above example, it was set to `my-secret-pw`. - -In order to have no plaintext secret in the deployment, `MARIADB_ROOT_PASSWORD_HASH` can be used as it is just the hash of the password. The hash can be generated with `SELECT PASSWORD('thepassword')` as a SQL query. - -### `MARIADB_ALLOW_EMPTY_ROOT_PASSWORD` / `MYSQL_ALLOW_EMPTY_PASSWORD` - -Set to a non-empty value, like `yes`, to allow the container to be started with a blank password for the root user. *NOTE*: Setting this variable to `yes` is not recommended unless you really know what you are doing, since this will leave your MariaDB instance completely unprotected, allowing anyone to gain complete superuser access. - -### `MARIADB_RANDOM_ROOT_PASSWORD` / `MYSQL_RANDOM_ROOT_PASSWORD` - -Set to a non-empty value, like `yes`, to generate a random initial password for the root user. The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). - -### `MARIADB_ROOT_HOST` / `MYSQL_ROOT_HOST` - -This is the hostname part of the root user created. By default this is `%`, however it can be set to any default [MariaDB allowed hostname component](https://mariadb.com/kb/en/create-user/#host-name-component). Setting this to `localhost` will prevent any root user being accessible except via the unix socket. - -### `MARIADB_MYSQL_LOCALHOST_USER` / `MARIADB_MYSQL_LOCALHOST_GRANTS` - -Set `MARIADB_MYSQL_LOCALHOST_USER` to a non-empty value to create the `mysql@locahost` database user. This user is especially useful for a variety of health checks and backup scripts. - -The `mysql@localhost` user gets [USAGE](https://mariadb.com/kb/en/grant/#the-usage-privilege) privileges by default. If more access is required, additional [global privileges](https://mariadb.com/kb/en/grant/#global-privileges) in the form of a comma separated list can be provided. If you are sharing a volume containing MariaDB's unix socket (`/var/run/mysqld` by default), privileges beyond `USAGE` can result in confidentiality, integrity and availability risks, so use a minimal set. See the example below on using Mariabackup. The `healthcheck.sh` script also documents the required privileges for each health check test. - -### `MARIADB_DATABASE` / `MYSQL_DATABASE` - -This variable allows you to specify the name of a database to be created on image startup. - -### `MARIADB_USER` / `MYSQL_USER`, `MARIADB_PASSWORD` / `MYSQL_PASSWORD`, `MARIADB_PASSWORD_HASH` - -These are used in conjunction to create a new user and to set that user's password. Both user and password variables are required for a user to be created. This user will be granted all access ([corresponding to `GRANT ALL`](https://mariadb.com/kb/en/grant/#the-all-privileges-privilege)) to the `MARIADB_DATABASE` database. - -See `MARIADB_ROOT_PASSWORD_HASH` above for how to get a password hash for `MARIADB_PASSWORD_HASH`. +There is a large list of environment variables and the complete list is documented on [MariaDB's Knowledge Base : MariaDB Server Docker Official Image Environment Variables](https://mariadb.com/kb/en/mariadb-server-docker-official-image-environment-variables/). -Do note that there is no need to use this mechanism to create the root superuser, that user gets created by default with the password specified by the `MARIADB_ROOT_PASSWORD*` variable. +### `MARIADB_AUTO_UPGRADE` -### `MARIADB_INITDB_SKIP_TZINFO` / `MYSQL_INITDB_SKIP_TZINFO` +When this environment variable is set, this will run the [mariadb-upgrade](https://mariadb.com/kb/en/mariadb-upgrade/), if needed, so any changes in the MariaDB system tables required to expose new features will be made. This may impeed some [downgrade options](https://mariadb.com/kb/en/downgrading-between-major-versions-of-mariadb/). Unless the environment variable `MARIADB_DISABLE_UPGRADE_BACKUP` is set, there will be a backup of the system tables created as `system_mysql_backup_*.sql.zst` in the top level of the data directory to assist in the downgrade if needed. -By default, the entrypoint script automatically loads the timezone data needed for the `CONVERT_TZ()` function. If it is not needed, any non-empty value disables timezone loading. - -### `MARIADB_AUTO_UPGRADE` / `MARIADB_DISABLE_UPGRADE_BACKUP` - -Set `MARIADB_AUTO_UPGRADE` to a non-empty value to have the entrypoint check whether `mysql_upgrade`/`mariadb-upgrade` needs to run, and if so, run the upgrade before starting the MariaDB server. - -Before the upgrade, a backup of the system database is created in the top of the datadir with the name `system_mysql_backup_*.sql.zst`. This backup process can be disabled with by setting `MARIADB_DISABLE_UPGRADE_BACKUP` to a non-empty value. - -## Docker Secrets +## Secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: ```console -$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d %%IMAGE%%:latest +$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mariadb-root -d %%IMAGE%%:latest ``` -Currently, this is only supported for `MARIADB_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH`, `MARIADB_ROOT_HOST`, `MARIADB_DATABASE`, `MARIADB_USER`, `MARIADB_PASSWORD` and `MARIADB_PASSWORD_HASH` (and `MYSQL_*` equivalents of these). +# Initializing the database contents -# Initializing a fresh instance - -When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.xz` and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.sh` files without file execute permission are sourced rather than executed. You can easily populate your `%%IMAGE%%` services by [mounting a SQL dump into that directory](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-file-as-a-data-volume) and provide [custom images](https://docs.docker.com/reference/builder/) with contributed data. SQL files will be imported by default to the database specified by the `MARIADB_DATABASE` / `MYSQL_DATABASE` variable. +When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.xz` and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.sh` files without file execute permission are sourced rather than executed. You can easily populate your `%%IMAGE%%` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MARIADB_DATABASE` variable. # Caveats @@ -174,8 +202,8 @@ When a container is started for the first time, a new database with the specifie Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%IMAGE%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Use a named volume using the container manager to manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -183,182 +211,40 @@ The Docker documentation is a good starting point for understanding the differen 2. Start your `%%IMAGE%%` container like this: ```console - $ docker run --name some-%%REPO%% -v /my/own/datadir:/var/lib/mysql -e MARIADB_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:latest + $ docker run --name some-%%REPO%% -v /my/own/datadir:/var/lib/mysql:Z -e MARIADB_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:latest ``` -The `-v /my/own/datadir:/var/lib/mysql` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/mysql` inside the container, where MariaDB by default will write its data files. +The `-v /my/own/datadir:/var/lib/mysql:Z` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/mysql` inside the container, where MariaDB by default will write its data files. ## No connections until MariaDB init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker compose`, which start several containers simultaneously. ## Health/Liveness/Readiness Checking -See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) for why there is no default `HEALTHCHECK` directive. However, you can use the `/usr/local/bin/healthcheck.sh` script to choose from a (non-exhaustive) list of tests to check for whatever you consider health/liveness/readiness. Refer to the script's sources to learn about how to use it and which exact tests are provided. +See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) for why there is no default `HEALTHCHECK` directive. However, you can use the `healthcheck.sh` script to choose from a (non-exhaustive) list of tests to check for whatever you consider health/liveness/readiness. Refer to the [MariaDB Knowledge Base : Using Healthcheck.sh](https://mariadb.com/kb/en/using-healthcheck-sh-script/) to learn about how to use it and which exact tests are provided. ## Usage against an existing database If you start your `%%IMAGE%%` container instance with a data directory that already contains a database (specifically, a `mysql` subdirectory), no environment variables that control initialization will be needed or examined, and no pre-existing databases will be changed. The only exception is the non-default `MARIADB_AUTO_UPGRADE` environment variable, that might cause `mysql_upgrade`/`mariadb-upgrade` to run, which might change the system tables. -## Creating database dumps - -Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the `mysqld` server. A simple way to ensure this is to use `docker exec` and run the tool from the same container, similar to the following: - -```console -$ docker exec some-%%REPO%% sh -c 'exec mariadb-dump --all-databases -uroot -p"$MARIADB_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql -``` - -## Restoring data from dump files - -For restoring data. You can use the `docker exec` command with the `-i` flag, similar to the following: - -```console -$ docker exec -i some-%%REPO%% sh -c 'exec mariadb -uroot -p"$MARIADB_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql -``` - -If one or more databases, but neither `--all-databases` nor the `mysql` database, were dumped, these databases can be restored by placing the resulting sql file in the `/docker-entrypoint-initdb.d` directory. - -## Creating backups with Mariabackup +## Backups and Restores -To perform a backup using [Mariabackup](https://mariadb.com/kb/en/mariabackup/), a second container is started that shares the original container's data directory. An additional volume for the backup needs to be included in the second backup instance. Authentication against the MariaDB database instance is required to successfully complete the backup. In the example below a `mysql@localhost` user is used with the MariaDB server's unix socket shared with the backup container. +Backing up and restoring databases is important in containers too. The documentation on how to do this can be found on the [MariaDB Knowledge Base : Container Backup and Restoration](https://mariadb.com/kb/en/backups-and-restoration/). -```console -$ docker volume create some-%%REPO%%-socket -$ docker run --name some-%%REPO%% -v /my/own/datadir:/var/lib/mysql -v some-%%REPO%%-socket:/var/run/mysqld -e MARIADB_MYSQL_LOCALHOST_USER=1 -e MARIADB_MYSQL_LOCALHOST_GRANTS="RELOAD, PROCESS, LOCK TABLES, BINLOG MONITOR" -e MARIADB_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:latest -``` - -Note: Privileges listed here are for 10.5+. For an exact list, see [the Knowledge Base documentation for Mariabackup: Authentication and Privileges](https://mariadb.com/kb/en/mariabackup-overview/#authentication-and-privileges). - -Mariabackup will run as the `mysql` user in the container, so the permissions on `/backup` will need to ensure that it can be written to by this user: - -```console -$ docker volume create some-%%REPO%%-backup -$ docker run --rm some-%%REPO%%-backup -v some-%%REPO%%-backup:/backup %%IMAGE%%:latest chown mysql: /backup -``` - -To perform the backup: - -```console -$ docker run --user mysql -v some-%%REPO%%-socket:/var/run/mysqld -v some-%%REPO%%-backup:/backup -v /my/own/datadir:/var/lib/mysql --rm %%IMAGE%%:latest mariabackup --backup --target-dir=/backup -``` - -## Restore backups with Mariabackup - -These steps restore the backup made with Mariabackup. - -At some point before doing the restore, the backup needs to be prepared. Perform the prepare like this: - -```console -$ docker run --user mysql --rm -v some-%%REPO%%-backup:/backup %%IMAGE%%:latest mariabackup --prepare --target-dir=/backup -``` +## Frequently Asked Questions / How to reset root and user passwords -Now that the image is prepared, start the container with both the data and the backup volumes and restore the backup: - -```console -$ docker run --user mysql --rm -v /my/new/datadir:/var/lib/mysql -v some-%%REPO%%-backup:/backup %%IMAGE%%:latest mariabackup --copy-back --target-dir=/backup -``` - -With `/my/new/datadir` containing the restored backup, start normally as this is an initialized data directory: - -```console -$ docker run --name some-%%REPO%% -v /my/new/datadir:/var/lib/mysql -d %%IMAGE%%:latest -``` - -For further information on Mariabackup, see the [Mariabackup Knowledge Base](https://mariadb.com/kb/en/mariabackup-overview/). - -## How to reset root and user passwords - -If you have an existing data directory and wish to reset the root and user passwords, and to create a database on which the user can fully modify, perform the following steps. - -First create a `passwordreset.sql` file: - -```text -CREATE USER IF NOT EXISTS root@localhost IDENTIFIED BY 'thisismyrootpassword'; -SET PASSWORD FOR root@localhost = PASSWORD('thisismyrootpassword'); -GRANT ALL ON *.* TO root@localhost WITH GRANT OPTION; -CREATE USER IF NOT EXISTS root@'%' IDENTIFIED BY 'thisismyrootpassword'; -SET PASSWORD FOR root@'%' = PASSWORD('thisismyrootpassword'); -GRANT ALL ON *.* TO root@'%' WITH GRANT OPTION; -CREATE USER IF NOT EXISTS myuser@'%' IDENTIFIED BY 'thisismyuserpassword'; -SET PASSWORD FOR myuser@'%' = PASSWORD('thisismyuserpassword'); -CREATE DATABASE IF NOT EXISTS databasename; -GRANT ALL ON databasename.* TO myuser@'%'; -``` - -Adjust `myuser`, `databasename` and passwords as needed. - -Then: - -```console -$ docker run --rm -v /my/own/datadir:/var/lib/mysql -v /my/own/passwordreset.sql:/passwordreset.sql:z %%IMAGE%%:latest --init-file=/passwordreset.sql -``` - -On restarting the MariaDB container on this `/my/own/datadir`, the `root` and `myuser` passwords will be reset. +This is documented on [MariaDB Knowledge Base : Frequenty Asked Questions of Docker Official Image](https://mariadb.com/kb/en/frequenty-asked-questions-of-docker-official-image/#how-to-reset-passwords). ## How to install MariaDB plugins -MariaDB has many plugins, most are not enabled by default, some are in the %%IMAGE%% container, others need to be installed from additional packages. - -The following methods summarize the [MariaDB Blog article - Installing plugins in the MariaDB Docker Library Container](https://mariadb.org/installing-plugins-in-the-mariadb-docker-library-container/) on this topic. - -### Which plugins does the container contain? - -To see which plugins are available in the %%IMAGE%%: - -```console -$ docker run --rm %%IMAGE%%:latest ls -C /usr/lib/mysql/plugin -``` - -### Enabling a plugin using flags +This is documented on [MariaDB Knowledge Base : Adding Plugins to the Docker Official Image](https://mariadb.com/kb/en/adding-plugins-to-the-mariadb-docker-official-image/). -Using the `--plugin-load-add` flag with the plugin name (can be repeated), the plugins will be loaded and ready when the container is started: +# Related Images -For example enable the `simple\_password\_check` plugin: - -```console -$ docker run --name some-%%REPO%% -e MARIADB_ROOT_PASSWORD=my-secret-pw --network=host -d %%IMAGE%%:latest --plugin-load-add=simple_password_check -``` - -### Enabling a plugin in the configuration files - -`plugin-load-add` can be used as a configuration option to load plugins. The example below load the [FederatedX Storage Engine](https://mariadb.com/kb/en/federatedx-storage-engine/). - -```console -$ printf "[mariadb]\nplugin-load-add=ha_federatedx\n" > /my/custom/federatedx.conf -$ docker run --name some-%%REPO%% -v /my/custom:/etc/mysql/conf.d -e MARIADB_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:latest -``` +- [MariaDB MaxScale](https://hub.docker.com/r/mariadb/maxscale/tags) +- [MariaDB ColumnStore](https://hub.docker.com/r/mariadb/columnstore/tags) -### Install a plugin using SQL in /docker-entrypoint-initdb.d - -[`INSTALL SONAME`](https://mariadb.com/kb/en/install-soname/) can be used to install a plugin as part of the database initialization. - -Create the SQL file used in initialization: - -```console -$ echo 'INSTALL SONAME "disks";' > my_initdb/disks.sql -``` - -In this case the `my\_initdb` is a `/docker-entrypoint-initdb.d` directory per "Initializing a fresh instance" section above. - -### Identifing additional plugins in additional packages - -A number of plugins are in separate packages to reduce their installation size. The package names of MariaDB created plugins can be determined using the following command: - -```console -$ docker run --rm %%IMAGE%%:latest sh -c 'apt-get update -qq && apt-cache search mariadb-plugin' -``` - -### Creating a image with plugins from additional packages - -A new image needs to be created when using additional packages. The %%IMAGE%% image can be used as a base however: - -In the following the [CONNECT Storage Engine](https://mariadb.com/kb/en/connect/) is installed: - -```dockerfile -FROM %%IMAGE%%:latest -RUN apt-get update && \ - apt-get install mariadb-plugin-connect -y && \ - rm -rf /var/lib/apt/lists/* -``` +# Compose File Examples -Installing plugins from packages creates a configuration file in the directory `/etc/mysql/mariadb.conf.d/` that loads the plugin on startup. +Example compose files using this `%%IMAGE%%` are located in %%GITHUB-REPO%% in the `/examples` folder. diff --git a/mariadb/get-help.md b/mariadb/get-help.md index 9f87e7b498d8..fd2c17a6c125 100644 --- a/mariadb/get-help.md +++ b/mariadb/get-help.md @@ -1,3 +1,3 @@ -[Database Adminstrators (Stack Exchange)](https://dba.stackexchange.com/questions/tagged/docker+mariadb), [MariaDB Knowledge Base](https://mariadb.com/kb/en/docker-and-mariadb/) ([Ask a Question here](https://mariadb.com/kb/en/docker-and-mariadb/ask) available). +[Database Adminstrators (Stack Exchange)](https://dba.stackexchange.com/questions/tagged/docker+mariadb), [MariaDB Knowledge Base](https://mariadb.com/kb/en/docker-and-mariadb/) ([Ask a Question here](https://mariadb.com/kb/en/docker-and-mariadb/ask)). Also see the ["Getting Help with MariaDB" article on the MariaDB Knowledge Base](https://mariadb.com/kb/en/getting-help-with-mariadb/). diff --git a/mariadb/logo.png b/mariadb/logo.png index fb112daedcf9..948173c504cd 100644 Binary files a/mariadb/logo.png and b/mariadb/logo.png differ diff --git a/mariadb/maintainer.md b/mariadb/maintainer.md index 3907b235702b..bf0c3f9a5673 100644 --- a/mariadb/maintainer.md +++ b/mariadb/maintainer.md @@ -1 +1 @@ -[MariaDB developer community](%%GITHUB-REPO%%) +[MariaDB Foundation](https://mariadb.org), [MariaDB plc](https://mariadb.com), with contributions from our [community](%%GITHUB-REPO%%) diff --git a/mariadb/metadata.json b/mariadb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mariadb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/markdownfmt.sh b/markdownfmt.sh index 43eb694c2fb8..68ad67f9a33c 100755 --- a/markdownfmt.sh +++ b/markdownfmt.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e exec docker run -i --rm -v "$PWD":/scratch -w /scratch -u "$(id -u):$(id -g)" tianon/markdownfmt markdownfmt "$@" diff --git a/matomo/README.md b/matomo/README.md index 8a995a71052e..bbfb952ba74b 100644 --- a/matomo/README.md +++ b/matomo/README.md @@ -24,17 +24,19 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`4.13.0-apache`, `4.13-apache`, `4-apache`, `apache`, `4.13.0`, `4.13`, `4`, `latest`](https://github.com/matomo-org/docker/blob/278f4cf9d5c53fecef5e102e75367c2159f671f8/apache/Dockerfile) -- [`4.13.0-fpm`, `4.13-fpm`, `4-fpm`, `fpm`](https://github.com/matomo-org/docker/blob/278f4cf9d5c53fecef5e102e75367c2159f671f8/fpm/Dockerfile) -- [`4.13.0-fpm-alpine`, `4.13-fpm-alpine`, `4-fpm-alpine`, `fpm-alpine`](https://github.com/matomo-org/docker/blob/278f4cf9d5c53fecef5e102e75367c2159f671f8/fpm-alpine/Dockerfile) +- [`5.5.2-apache`, `5.5-apache`, `5-apache`, `apache`, `5.5.2`, `5.5`, `5`, `latest`](https://github.com/matomo-org/docker/blob/cfbd0beaa794c8591aea94abb9b0c29b385b13a8/apache/Dockerfile) + +- [`5.5.2-fpm`, `5.5-fpm`, `5-fpm`, `fpm`](https://github.com/matomo-org/docker/blob/cfbd0beaa794c8591aea94abb9b0c29b385b13a8/fpm/Dockerfile) + +- [`5.5.2-fpm-alpine`, `5.5-fpm-alpine`, `5-fpm-alpine`, `fpm-alpine`](https://github.com/matomo-org/docker/blob/cfbd0beaa794c8591aea94abb9b0c29b385b13a8/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues) + [https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/matomo/), [`arm32v5`](https://hub.docker.com/r/arm32v5/matomo/), [`arm32v6`](https://hub.docker.com/r/arm32v6/matomo/), [`arm32v7`](https://hub.docker.com/r/arm32v7/matomo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/matomo/), [`i386`](https://hub.docker.com/r/i386/matomo/), [`mips64le`](https://hub.docker.com/r/mips64le/matomo/), [`ppc64le`](https://hub.docker.com/r/ppc64le/matomo/), [`s390x`](https://hub.docker.com/r/s390x/matomo/) + [`amd64`](https://hub.docker.com/r/amd64/matomo/), [`arm32v5`](https://hub.docker.com/r/arm32v5/matomo/), [`arm32v6`](https://hub.docker.com/r/arm32v6/matomo/), [`arm32v7`](https://hub.docker.com/r/arm32v7/matomo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/matomo/), [`i386`](https://hub.docker.com/r/i386/matomo/), [`ppc64le`](https://hub.docker.com/r/ppc64le/matomo/), [`riscv64`](https://hub.docker.com/r/riscv64/matomo/), [`s390x`](https://hub.docker.com/r/s390x/matomo/) - **Published image artifact details**: [repo-info repo's `repos/matomo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/matomo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/matomo)) @@ -49,7 +51,7 @@ WARNING: # Matomo (formerly Piwik) -[![Build Status](https://travis-ci.org/matomo-org/docker.svg?branch=master)](https://travis-ci.org/matomo-org/docker) [Matomo](https://matomo.org/) (formerly Piwik) is the leading open-source analytics platform that gives you more than just powerful analytics: +[Matomo](https://matomo.org/) (formerly Piwik) is the leading open-source analytics platform that gives you more than just powerful analytics: - Free open-source software - 100% data ownership @@ -57,13 +59,13 @@ WARNING: - User-centric insights - Customisable and extensible -![logo](https://raw.githubusercontent.com/docker-library/docs/955ef68222b4466509ca877daab484bc0095afcf/matomo/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/1553a3fe5fc08c4619fcacb51e61e33f3495e26d/matomo/logo.svg?sanitize=true) # How to use this image You can run the Matomo container and service like so: -```console +```bash docker run -d --link some-mysql:db matomo ``` @@ -73,8 +75,8 @@ This assumes you've already launched a suitable MySQL or MariaDB database contai Use a Docker volume to keep persistent data: -```console -docker run -d --link some-mysql:db -v matomo:/var/www/html matomo +```bash +docker run -d -p 8080:80 --link some-mysql:db -v matomo:/var/www/html matomo ``` ## Matomo Installation @@ -99,28 +101,29 @@ The following environment variables are also honored for configuring your Matomo - `MATOMO_DATABASE_PASSWORD` - `MATOMO_DATABASE_DBNAME` -## Docker-compose examples and log import instructions +The PHP memory limit can be configured with the following environment variable: + +- `PHP_MEMORY_LIMIT` -A minimal set-up using docker-compose is available in the [.examples folder](https://github.com/matomo-org/docker/tree/master/.examples). +## Docker Compose examples and log import instructions + +A minimal set-up using Docker Compose is available in the [.examples folder](https://github.com/matomo-org/docker/tree/master/.examples). If you want to use the import logs script, you can then run the following container as needed, in order to execute the python import logs script: -```console -docker run --rm --volumes-from="matomo_app_1" --link matomo_app_1 python:2-alpine python /var/www/html/misc/log-analytics/import_logs.py --url=http://ip.of.your.piwik --login=yourlogin --password=yourpassword --idsite=1 --recorders=4 /var/www/html/logs/access.log +```bash +docker run --rm --volumes-from="matomo-app-1" --link matomo-app-1 python:3-alpine python /var/www/html/misc/log-analytics/import_logs.py --url=http://ip.of.your.matomo.example --login=yourlogin --password=yourpassword --idsite=1 --recorders=4 /var/www/html/logs/access.log ``` ## Contribute Pull requests are very welcome! -We'd love to hear your feedback and suggestions in the issue tracker: [github.com/motomo-org/docker/issues](https://github.com/matomo-org/docker/issues). +We'd love to hear your feedback and suggestions in the issue tracker: [[https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues?q=)]([https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues?q=)). ## GeoIP -~~This product includes GeoLite data created by MaxMind, available from [http://www.maxmind.com](http://www.maxmind.com).~~ - -- https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/ -- https://matomo.org/faq/how-to/faq_163/ +~~This product includes GeoLite data created by MaxMind, available from [https://www.maxmind.com](https://www.maxmind.com).~~ https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/ # Image Variants diff --git a/matomo/content.md b/matomo/content.md index 6eccf13475b5..4ac9e8db8806 100644 --- a/matomo/content.md +++ b/matomo/content.md @@ -1,6 +1,6 @@ # Matomo (formerly Piwik) -[![Build Status](https://travis-ci.org/matomo-org/docker.svg?branch=master)](https://travis-ci.org/matomo-org/docker) [Matomo](https://matomo.org/) (formerly Piwik) is the leading open-source analytics platform that gives you more than just powerful analytics: +[Matomo](https://matomo.org/) (formerly Piwik) is the leading open-source analytics platform that gives you more than just powerful analytics: - Free open-source software - 100% data ownership @@ -14,8 +14,8 @@ You can run the Matomo container and service like so: -```console -docker run -d --link some-mysql:db matomo +```bash +docker run -d --link some-mysql:db %%IMAGE%% ``` This assumes you've already launched a suitable MySQL or MariaDB database container. @@ -24,8 +24,8 @@ This assumes you've already launched a suitable MySQL or MariaDB database contai Use a Docker volume to keep persistent data: -```console -docker run -d --link some-mysql:db -v matomo:/var/www/html matomo +```bash +docker run -d -p 8080:80 --link some-mysql:db -v matomo:/var/www/html %%IMAGE%% ``` ## Matomo Installation @@ -50,25 +50,26 @@ The following environment variables are also honored for configuring your Matomo - `MATOMO_DATABASE_PASSWORD` - `MATOMO_DATABASE_DBNAME` -## Docker-compose examples and log import instructions +The PHP memory limit can be configured with the following environment variable: -A minimal set-up using docker-compose is available in the [.examples folder](https://github.com/matomo-org/docker/tree/master/.examples). +- `PHP_MEMORY_LIMIT` + +## Docker Compose examples and log import instructions + +A minimal set-up using Docker Compose is available in the [.examples folder](%%GITHUB-REPO%%/tree/master/.examples). If you want to use the import logs script, you can then run the following container as needed, in order to execute the python import logs script: -```console -docker run --rm --volumes-from="matomo_app_1" --link matomo_app_1 python:2-alpine python /var/www/html/misc/log-analytics/import_logs.py --url=http://ip.of.your.piwik --login=yourlogin --password=yourpassword --idsite=1 --recorders=4 /var/www/html/logs/access.log +```bash +docker run --rm --volumes-from="matomo-app-1" --link matomo-app-1 python:3-alpine python /var/www/html/misc/log-analytics/import_logs.py --url=http://ip.of.your.matomo.example --login=yourlogin --password=yourpassword --idsite=1 --recorders=4 /var/www/html/logs/access.log ``` ## Contribute Pull requests are very welcome! -We'd love to hear your feedback and suggestions in the issue tracker: [github.com/motomo-org/docker/issues](https://github.com/matomo-org/docker/issues). +We'd love to hear your feedback and suggestions in the issue tracker: [%%ISSUES%%](%%ISSUES%%). ## GeoIP -~~This product includes GeoLite data created by MaxMind, available from [http://www.maxmind.com](http://www.maxmind.com).~~ - -- https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/ -- https://matomo.org/faq/how-to/faq_163/ +~~This product includes GeoLite data created by MaxMind, available from [https://www.maxmind.com](https://www.maxmind.com).~~ https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/ diff --git a/matomo/logo.png b/matomo/logo.png deleted file mode 100644 index 79315acbd3c6..000000000000 Binary files a/matomo/logo.png and /dev/null differ diff --git a/matomo/logo.svg b/matomo/logo.svg new file mode 100644 index 000000000000..14d9f510b02b --- /dev/null +++ b/matomo/logo.svg @@ -0,0 +1,32 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/matomo/metadata.json b/matomo/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/matomo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/maven/README.md b/maven/README.md index 492cc1983416..84c6b6b11d43 100644 --- a/maven/README.md +++ b/maven/README.md @@ -24,37 +24,133 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.8.7-openjdk-18`, `3.8-openjdk-18`, `3-openjdk-18`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/openjdk-18/Dockerfile) -- [`3.8.7-openjdk-18-slim`, `3.8-openjdk-18-slim`, `3-openjdk-18-slim`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/openjdk-18-slim/Dockerfile) -- [`3.8.7-eclipse-temurin-11`, `3.8-eclipse-temurin-11`, `3-eclipse-temurin-11`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-11/Dockerfile) -- [`3.8.7-eclipse-temurin-11-alpine`, `3.8-eclipse-temurin-11-alpine`, `3-eclipse-temurin-11-alpine`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-11-alpine/Dockerfile) -- [`3.8.7-eclipse-temurin-11-focal`, `3.8-eclipse-temurin-11-focal`, `3-eclipse-temurin-11-focal`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-11-focal/Dockerfile) -- [`3.8.7-eclipse-temurin-17`, `3.8.7`, `3.8.7-eclipse-temurin`, `3.8-eclipse-temurin-17`, `3.8`, `3.8-eclipse-temurin`, `3-eclipse-temurin-17`, `3`, `latest`, `3-eclipse-temurin`, `eclipse-temurin`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-17/Dockerfile) -- [`3.8.7-eclipse-temurin-17-alpine`, `3.8-eclipse-temurin-17-alpine`, `3-eclipse-temurin-17-alpine`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-17-alpine/Dockerfile) -- [`3.8.7-eclipse-temurin-17-focal`, `3.8-eclipse-temurin-17-focal`, `3-eclipse-temurin-17-focal`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-17-focal/Dockerfile) -- [`3.8.7-eclipse-temurin-19`, `3.8-eclipse-temurin-19`, `3-eclipse-temurin-19`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-19/Dockerfile) -- [`3.8.7-eclipse-temurin-19-alpine`, `3.8-eclipse-temurin-19-alpine`, `3-eclipse-temurin-19-alpine`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-19-alpine/Dockerfile) -- [`3.8.7-eclipse-temurin-19-focal`, `3.8-eclipse-temurin-19-focal`, `3-eclipse-temurin-19-focal`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-19-focal/Dockerfile) -- [`3.8.7-eclipse-temurin-8`, `3.8-eclipse-temurin-8`, `3-eclipse-temurin-8`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-8/Dockerfile) -- [`3.8.7-eclipse-temurin-8-alpine`, `3.8-eclipse-temurin-8-alpine`, `3-eclipse-temurin-8-alpine`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-8-alpine/Dockerfile) -- [`3.8.7-eclipse-temurin-8-focal`, `3.8-eclipse-temurin-8-focal`, `3-eclipse-temurin-8-focal`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/eclipse-temurin-8-focal/Dockerfile) -- [`3.8.7-ibmjava-8`, `3.8.7-ibmjava`, `3.8-ibmjava-8`, `3.8-ibmjava`, `3-ibmjava-8`, `3-ibmjava`, `ibmjava`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/ibmjava-8/Dockerfile) -- [`3.8.7-ibm-semeru-11-focal`, `3.8-ibm-semeru-11-focal`, `3-ibm-semeru-11-focal`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/ibm-semeru-11-focal/Dockerfile) -- [`3.8.7-ibm-semeru-17-focal`, `3.8-ibm-semeru-17-focal`, `3-ibm-semeru-17-focal`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/ibm-semeru-17-focal/Dockerfile) -- [`3.8.7-amazoncorretto-11`, `3.8.7-amazoncorretto`, `3.8-amazoncorretto-11`, `3.8-amazoncorretto`, `3-amazoncorretto-11`, `3-amazoncorretto`, `amazoncorretto`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/amazoncorretto-11/Dockerfile) -- [`3.8.7-amazoncorretto-17`, `3.8-amazoncorretto-17`, `3-amazoncorretto-17`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/amazoncorretto-17/Dockerfile) -- [`3.8.7-amazoncorretto-19`, `3.8-amazoncorretto-19`, `3-amazoncorretto-19`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/amazoncorretto-19/Dockerfile) -- [`3.8.7-amazoncorretto-8`, `3.8-amazoncorretto-8`, `3-amazoncorretto-8`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/amazoncorretto-8/Dockerfile) -- [`3.8.7-sapmachine-11`, `3.8-sapmachine-11`, `3-sapmachine-11`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/sapmachine-11/Dockerfile) -- [`3.8.7-sapmachine-17`, `3.8.7-sapmachine`, `3.8-sapmachine-17`, `3.8-sapmachine`, `3-sapmachine-17`, `3-sapmachine`, `sapmachine`](https://github.com/carlossg/docker-maven/blob/34e7d27260ee61c6866922c523e04b53ba098337/sapmachine-17/Dockerfile) +- [`3.9.11-eclipse-temurin-11-alpine`, `3.9-eclipse-temurin-11-alpine`, `3-eclipse-temurin-11-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/eclipse-temurin-11-alpine/Dockerfile) + +- [`3.9.11-eclipse-temurin-11-noble`, `3.9.11-eclipse-temurin-11`, `3.9-eclipse-temurin-11-noble`, `3.9-eclipse-temurin-11`, `3-eclipse-temurin-11-noble`, `3-eclipse-temurin-11`](https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-11-noble/Dockerfile) + +- [`3.9.11-eclipse-temurin-17-alpine`, `3.9-eclipse-temurin-17-alpine`, `3-eclipse-temurin-17-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/eclipse-temurin-17-alpine/Dockerfile) + +- [`4.0.0-rc-5-eclipse-temurin-17-alpine`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/eclipse-temurin-17-alpine-maven-4/Dockerfile) + +- [`3.9.11-eclipse-temurin-17-noble`, `3.9.11-eclipse-temurin-17`, `3.9-eclipse-temurin-17-noble`, `3.9-eclipse-temurin-17`, `3-eclipse-temurin-17-noble`, `3-eclipse-temurin-17`](https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-17-noble/Dockerfile) + +- [`4.0.0-rc-5-eclipse-temurin-17-noble`, `4.0.0-rc-5-eclipse-temurin-17`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/eclipse-temurin-17-noble-maven-4/Dockerfile) + +- [`3.9.11-eclipse-temurin-21-alpine`, `3.9-eclipse-temurin-21-alpine`, `3-eclipse-temurin-21-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/eclipse-temurin-21-alpine/Dockerfile) + +- [`4.0.0-rc-5-eclipse-temurin-21-alpine`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/eclipse-temurin-21-alpine-maven-4/Dockerfile) + +- [`3.9.11-eclipse-temurin-21-noble`, `3.9.11-eclipse-temurin-21`, `3.9-eclipse-temurin-21-noble`, `3.9-eclipse-temurin-21`, `3-eclipse-temurin-21-noble`, `3-eclipse-temurin-21`](https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-21-noble/Dockerfile) + +- [`4.0.0-rc-5-eclipse-temurin-21-noble`, `4.0.0-rc-5-eclipse-temurin-21`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/eclipse-temurin-21-noble-maven-4/Dockerfile) + +- [`3.9.11-eclipse-temurin-25-alpine`, `3.9-eclipse-temurin-25-alpine`, `3-eclipse-temurin-25-alpine`](https://github.com/carlossg/docker-maven/blob/c774f7740e38fa4e4f4cec7153e4819cd9afd635/eclipse-temurin-25-alpine/Dockerfile) + +- [`4.0.0-rc-5-eclipse-temurin-25-alpine`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/eclipse-temurin-25-alpine-maven-4/Dockerfile) + +- [`3.9.11-eclipse-temurin-25-noble`, `3.9.11`, `3.9.11-eclipse-temurin`, `3.9.11-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`](https://github.com/carlossg/docker-maven/blob/c774f7740e38fa4e4f4cec7153e4819cd9afd635/eclipse-temurin-25-noble/Dockerfile) + +- [`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`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/eclipse-temurin-25-noble-maven-4/Dockerfile) + +- [`3.9.11-eclipse-temurin-8-alpine`, `3.9-eclipse-temurin-8-alpine`, `3-eclipse-temurin-8-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/eclipse-temurin-8-alpine/Dockerfile) + +- [`3.9.11-eclipse-temurin-8-noble`, `3.9.11-eclipse-temurin-8`, `3.9-eclipse-temurin-8-noble`, `3.9-eclipse-temurin-8`, `3-eclipse-temurin-8-noble`, `3-eclipse-temurin-8`](https://github.com/carlossg/docker-maven/blob/64ef35f1a6ef3538a0c7e846647d33ffa6232390/eclipse-temurin-8-noble/Dockerfile) + +- [`3.9.11-ibmjava-8`, `3.9.11-ibmjava`, `3.9-ibmjava-8`, `3.9-ibmjava`, `3-ibmjava-8`, `3-ibmjava`, `ibmjava`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibmjava-8/Dockerfile) + +- [`3.9.11-ibm-semeru-11-noble`, `3.9-ibm-semeru-11-noble`, `3-ibm-semeru-11-noble`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibm-semeru-11-noble/Dockerfile) + +- [`3.9.11-ibm-semeru-17-noble`, `3.9-ibm-semeru-17-noble`, `3-ibm-semeru-17-noble`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibm-semeru-17-noble/Dockerfile) + +- [`4.0.0-rc-5-ibm-semeru-17-noble`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/ibm-semeru-17-noble-maven-4/Dockerfile) + +- [`3.9.11-ibm-semeru-21-noble`, `3.9-ibm-semeru-21-noble`, `3-ibm-semeru-21-noble`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/ibm-semeru-21-noble/Dockerfile) + +- [`4.0.0-rc-5-ibm-semeru-21-noble`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/ibm-semeru-21-noble-maven-4/Dockerfile) + +- [`3.9.11-ibm-semeru-25-noble`, `3.9-ibm-semeru-25-noble`, `3-ibm-semeru-25-noble`](https://github.com/carlossg/docker-maven/blob/7df425991666b4cf7ce7130aa348aa940c15d9c4/ibm-semeru-25-noble/Dockerfile) + +- [`4.0.0-rc-5-ibm-semeru-25-noble`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/ibm-semeru-25-noble-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-11`, `3.9-amazoncorretto-11`, `3-amazoncorretto-11`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-11/Dockerfile) + +- [`3.9.11-amazoncorretto-11-al2023`, `3.9-amazoncorretto-11-al2023`, `3-amazoncorretto-11-al2023`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-11-al2023/Dockerfile) + +- [`3.9.11-amazoncorretto-11-alpine`, `3.9-amazoncorretto-11-alpine`, `3-amazoncorretto-11-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-11-alpine/Dockerfile) + +- [`3.9.11-amazoncorretto-11-debian`, `3.9.11-amazoncorretto-11-debian-trixie`, `3.9-amazoncorretto-11-debian`, `3.9-amazoncorretto-11-debian-trixie`, `3-amazoncorretto-11-debian`, `3-amazoncorretto-11-debian-trixie`](https://github.com/carlossg/docker-maven/blob/5557ed7695b311b7880b5094dbedcb759dddd86a/amazoncorretto-11-debian/Dockerfile) + +- [`3.9.11-amazoncorretto-17`, `3.9-amazoncorretto-17`, `3-amazoncorretto-17`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-17/Dockerfile) + +- [`3.9.11-amazoncorretto-17-al2023`, `3.9-amazoncorretto-17-al2023`, `3-amazoncorretto-17-al2023`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-17-al2023/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-17-al2023`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-17-al2023-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-17-alpine`, `3.9-amazoncorretto-17-alpine`, `3-amazoncorretto-17-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-17-alpine/Dockerfile) + +- [`3.9.11-amazoncorretto-17-debian`, `3.9.11-amazoncorretto-17-debian-trixie`, `3.9-amazoncorretto-17-debian`, `3.9-amazoncorretto-17-debian-trixie`, `3-amazoncorretto-17-debian`, `3-amazoncorretto-17-debian-trixie`](https://github.com/carlossg/docker-maven/blob/5557ed7695b311b7880b5094dbedcb759dddd86a/amazoncorretto-17-debian/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-17-debian`, `4.0.0-rc-5-amazoncorretto-17-debian-trixie`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-17-debian-maven-4/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-17`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-17-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-21`, `3.9-amazoncorretto-21`, `3-amazoncorretto-21`](https://github.com/carlossg/docker-maven/blob/953489ab1a34d6a78158ed34b7432e19f119c466/amazoncorretto-21/Dockerfile) + +- [`3.9.11-amazoncorretto-21-al2023`, `3.9-amazoncorretto-21-al2023`, `3-amazoncorretto-21-al2023`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-21-al2023/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-21-al2023`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-21-al2023-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-21-alpine`, `3.9-amazoncorretto-21-alpine`, `3-amazoncorretto-21-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-21-alpine/Dockerfile) + +- [`3.9.11-amazoncorretto-21-debian`, `3.9.11-amazoncorretto-21-debian-trixie`, `3.9-amazoncorretto-21-debian`, `3.9-amazoncorretto-21-debian-trixie`, `3-amazoncorretto-21-debian`, `3-amazoncorretto-21-debian-trixie`](https://github.com/carlossg/docker-maven/blob/5557ed7695b311b7880b5094dbedcb759dddd86a/amazoncorretto-21-debian/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-21-debian`, `4.0.0-rc-5-amazoncorretto-21-debian-trixie`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-21-debian-maven-4/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-21`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-21-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-25`, `3.9.11-amazoncorretto`, `3.9-amazoncorretto-25`, `3.9-amazoncorretto`, `3-amazoncorretto-25`, `3-amazoncorretto`, `amazoncorretto`](https://github.com/carlossg/docker-maven/blob/ea19ceba8f7f27dfca5db9a557c2c7104b9bbcf0/amazoncorretto-25/Dockerfile) + +- [`3.9.11-amazoncorretto-25-al2023`, `3.9-amazoncorretto-25-al2023`, `3-amazoncorretto-25-al2023`](https://github.com/carlossg/docker-maven/blob/8e4c2c5d8d70b078a60c23f1dea90edcde4bf0d2/amazoncorretto-25-al2023/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-25-al2023`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-25-al2023-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-25-alpine`, `3.9-amazoncorretto-25-alpine`, `3-amazoncorretto-25-alpine`](https://github.com/carlossg/docker-maven/blob/ea19ceba8f7f27dfca5db9a557c2c7104b9bbcf0/amazoncorretto-25-alpine/Dockerfile) + +- [`3.9.11-amazoncorretto-25-debian`, `3.9.11-amazoncorretto-25-debian-trixie`, `3.9-amazoncorretto-25-debian`, `3.9-amazoncorretto-25-debian-trixie`, `3-amazoncorretto-25-debian`, `3-amazoncorretto-25-debian-trixie`](https://github.com/carlossg/docker-maven/blob/911dda48cffcacf6dffb543157e37a7628f0e6e7/amazoncorretto-25-debian/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-25-debian`, `4.0.0-rc-5-amazoncorretto-25-debian-trixie`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-25-debian-maven-4/Dockerfile) + +- [`4.0.0-rc-5-amazoncorretto-25`, `4.0.0-rc-5-amazoncorretto`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/amazoncorretto-25-maven-4/Dockerfile) + +- [`3.9.11-amazoncorretto-8`, `3.9-amazoncorretto-8`, `3-amazoncorretto-8`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-8/Dockerfile) + +- [`3.9.11-amazoncorretto-8-al2023`, `3.9-amazoncorretto-8-al2023`, `3-amazoncorretto-8-al2023`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-8-al2023/Dockerfile) + +- [`3.9.11-amazoncorretto-8-alpine`, `3.9-amazoncorretto-8-alpine`, `3-amazoncorretto-8-alpine`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/amazoncorretto-8-alpine/Dockerfile) + +- [`3.9.11-amazoncorretto-8-debian`, `3.9.11-amazoncorretto-8-debian-trixie`, `3.9-amazoncorretto-8-debian`, `3.9-amazoncorretto-8-debian-trixie`, `3-amazoncorretto-8-debian`, `3-amazoncorretto-8-debian-trixie`](https://github.com/carlossg/docker-maven/blob/5557ed7695b311b7880b5094dbedcb759dddd86a/amazoncorretto-8-debian/Dockerfile) + +- [`3.9.11-sapmachine-11`, `3.9-sapmachine-11`, `3-sapmachine-11`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/sapmachine-11/Dockerfile) + +- [`3.9.11-sapmachine-17`, `3.9-sapmachine-17`, `3-sapmachine-17`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/sapmachine-17/Dockerfile) + +- [`4.0.0-rc-5-sapmachine-17`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/sapmachine-17-maven-4/Dockerfile) + +- [`3.9.11-sapmachine-21`, `3.9-sapmachine-21`, `3-sapmachine-21`](https://github.com/carlossg/docker-maven/blob/6bd15f0c704bad9806b4bbedea6f1faff5194c71/sapmachine-21/Dockerfile) + +- [`4.0.0-rc-5-sapmachine-21`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/sapmachine-21-maven-4/Dockerfile) + +- [`3.9.11-sapmachine-25`, `3.9.11-sapmachine`, `3.9-sapmachine-25`, `3.9-sapmachine`, `3-sapmachine-25`, `3-sapmachine`, `sapmachine`](https://github.com/carlossg/docker-maven/blob/31123f677b641c82496f8935f5f3c3e3885fa3f5/sapmachine-25/Dockerfile) + +- [`4.0.0-rc-5-sapmachine-25`, `4.0.0-rc-5-sapmachine`](https://github.com/carlossg/docker-maven/blob/46922cf792151295209364a0917ab106fea60692/sapmachine-25-maven-4/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/carlossg/docker-maven/issues](https://github.com/carlossg/docker-maven/issues) + [https://github.com/carlossg/docker-maven/issues](https://github.com/carlossg/docker-maven/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/maven/), [`arm32v7`](https://hub.docker.com/r/arm32v7/maven/), [`arm64v8`](https://hub.docker.com/r/arm64v8/maven/), [`i386`](https://hub.docker.com/r/i386/maven/), [`ppc64le`](https://hub.docker.com/r/ppc64le/maven/), [`s390x`](https://hub.docker.com/r/s390x/maven/) + [`amd64`](https://hub.docker.com/r/amd64/maven/), [`arm32v7`](https://hub.docker.com/r/arm32v7/maven/), [`arm64v8`](https://hub.docker.com/r/arm64v8/maven/), [`ppc64le`](https://hub.docker.com/r/ppc64le/maven/), [`riscv64`](https://hub.docker.com/r/riscv64/maven/), [`s390x`](https://hub.docker.com/r/s390x/maven/) - **Published image artifact details**: [repo-info repo's `repos/maven/` directory](https://github.com/docker-library/repo-info/blob/master/repos/maven) ([history](https://github.com/docker-library/repo-info/commits/master/repos/maven)) @@ -142,11 +238,9 @@ The `maven` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like focal in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. - -## `maven:-slim` +Some of these tags may have names like trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `maven`. Unless you are working in an environment where *only* the `maven` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. +Some of these tags may have names like noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `maven:-alpine` diff --git a/maven/metadata.json b/maven/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/maven/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/mediawiki/README.md b/mediawiki/README.md index 01e6c704823a..9132eac468cc 100644 --- a/mediawiki/README.md +++ b/mediawiki/README.md @@ -24,15 +24,23 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.39.1`, `1.39`, `stable`, `lts`, `latest`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.39/apache/Dockerfile) -- [`1.39.1-fpm`, `1.39-fpm`, `stable-fpm`, `lts-fpm`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.39/fpm/Dockerfile) -- [`1.39.1-fpm-alpine`, `1.39-fpm-alpine`, `stable-fpm-alpine`, `lts-fpm-alpine`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.39/fpm-alpine/Dockerfile) -- [`1.38.5`, `1.38`, `legacy`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.38/apache/Dockerfile) -- [`1.38.5-fpm`, `1.38-fpm`, `legacy-fpm`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.38/fpm/Dockerfile) -- [`1.38.5-fpm-alpine`, `1.38-fpm-alpine`, `legacy-fpm-alpine`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.38/fpm-alpine/Dockerfile) -- [`1.35.9`, `1.35`, `legacylts`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.35/apache/Dockerfile) -- [`1.35.9-fpm`, `1.35-fpm`, `legacylts-fpm`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.35/fpm/Dockerfile) -- [`1.35.9-fpm-alpine`, `1.35-fpm-alpine`, `legacylts-fpm-alpine`](https://github.com/wikimedia/mediawiki-docker/blob/096c7f23b12f5694eed54e7dd7bbf71d9e69c3ec/1.35/fpm-alpine/Dockerfile) +- [`1.44.2`, `1.44`, `latest`, `stable`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.44/apache/Dockerfile) + +- [`1.44.2-fpm`, `1.44-fpm`, `stable-fpm`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.44/fpm/Dockerfile) + +- [`1.44.2-fpm-alpine`, `1.44-fpm-alpine`, `stable-fpm-alpine`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.44/fpm-alpine/Dockerfile) + +- [`1.43.5`, `1.43`, `lts`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.43/apache/Dockerfile) + +- [`1.43.5-fpm`, `1.43-fpm`, `lts-fpm`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.43/fpm/Dockerfile) + +- [`1.43.5-fpm-alpine`, `1.43-fpm-alpine`, `lts-fpm-alpine`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.43/fpm-alpine/Dockerfile) + +- [`1.39.15`, `1.39`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.39/apache/Dockerfile) + +- [`1.39.15-fpm`, `1.39-fpm`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.39/fpm/Dockerfile) + +- [`1.39.15-fpm-alpine`, `1.39-fpm-alpine`](https://github.com/wikimedia/mediawiki-docker/blob/22e0f2939d36bfc61d1572e4e1a2afd66d84e6f5/1.39/fpm-alpine/Dockerfile) # Quick reference (cont.) @@ -101,16 +109,14 @@ The paths `/var/www/html/images` and `/var/www/html/LocalSettings.php` are thing $ docker run --rm mediawiki tar -cC /var/www/html/sites . | tar -xC /path/on/host/sites ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `mediawiki`: +Example `compose.yaml` for `mediawiki`: ```yaml # MediaWiki with MariaDB # # Access via "http://localhost:8080" -# (or "http://$(docker-machine ip):8080" if using docker-machine) -version: '3' services: mediawiki: image: mediawiki @@ -125,8 +131,7 @@ services: # this yaml and uncomment the following line and use compose to restart # the mediawiki service # - ./LocalSettings.php:/var/www/html/LocalSettings.php - # This key also defines the name of the database host used during setup instead of the default "localhost" - database: + database: # <- This key defines the name of the database during setup image: mariadb restart: always environment: @@ -143,9 +148,7 @@ volumes: db: ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/8fc63a1c6c985353af894baed5f7f4ae73c056f7/mediawiki/stack.yml) - -Run `docker stack deploy -c stack.yml mediawiki` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Adding additional libraries / extensions diff --git a/mediawiki/stack.yml b/mediawiki/compose.yaml similarity index 80% rename from mediawiki/stack.yml rename to mediawiki/compose.yaml index 3406c3b857d3..7df22965b1d2 100644 --- a/mediawiki/stack.yml +++ b/mediawiki/compose.yaml @@ -1,8 +1,6 @@ # MediaWiki with MariaDB # # Access via "http://localhost:8080" -# (or "http://$(docker-machine ip):8080" if using docker-machine) -version: '3' services: mediawiki: image: mediawiki @@ -17,8 +15,7 @@ services: # this yaml and uncomment the following line and use compose to restart # the mediawiki service # - ./LocalSettings.php:/var/www/html/LocalSettings.php - # This key also defines the name of the database host used during setup instead of the default "localhost" - database: + database: # <- This key defines the name of the database during setup image: mariadb restart: always environment: diff --git a/mediawiki/content.md b/mediawiki/content.md index 7efe69a4edef..5242a25474b7 100644 --- a/mediawiki/content.md +++ b/mediawiki/content.md @@ -46,9 +46,9 @@ The paths `/var/www/html/images` and `/var/www/html/LocalSettings.php` are thing $ docker run --rm %%IMAGE%% tar -cC /var/www/html/sites . | tar -xC /path/on/host/sites ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Adding additional libraries / extensions diff --git a/mediawiki/metadata.json b/mediawiki/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/mediawiki/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/memcached/README.md b/memcached/README.md index ed6c110e4979..078a43fc991b 100644 --- a/memcached/README.md +++ b/memcached/README.md @@ -24,16 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.6.18`, `1.6`, `1`, `latest`, `1.6.18-bullseye`, `1.6-bullseye`, `1-bullseye`, `bullseye`](https://github.com/docker-library/memcached/blob/32c314b7d14f704aa7596d748a3024043c6e9a7e/debian/Dockerfile) -- [`1.6.18-alpine`, `1.6-alpine`, `1-alpine`, `alpine`, `1.6.18-alpine3.17`, `1.6-alpine3.17`, `1-alpine3.17`, `alpine3.17`](https://github.com/docker-library/memcached/blob/32c314b7d14f704aa7596d748a3024043c6e9a7e/alpine/Dockerfile) +- [`1.6.39`, `1.6`, `1`, `latest`, `1.6.39-trixie`, `1.6-trixie`, `1-trixie`, `trixie`](https://github.com/docker-library/memcached/blob/4569a8aaadebe2cfc4c1b5b052eb0764519db470/1/debian/Dockerfile) + +- [`1.6.39-alpine`, `1.6-alpine`, `1-alpine`, `alpine`, `1.6.39-alpine3.22`, `1.6-alpine3.22`, `1-alpine3.22`, `alpine3.22`](https://github.com/docker-library/memcached/blob/82dce5b661528c56980b7166b1065c149fab783e/1/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/memcached/issues](https://github.com/docker-library/memcached/issues) + [https://github.com/docker-library/memcached/issues](https://github.com/docker-library/memcached/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/memcached/), [`arm32v5`](https://hub.docker.com/r/arm32v5/memcached/), [`arm32v7`](https://hub.docker.com/r/arm32v7/memcached/), [`arm64v8`](https://hub.docker.com/r/arm64v8/memcached/), [`i386`](https://hub.docker.com/r/i386/memcached/), [`mips64le`](https://hub.docker.com/r/mips64le/memcached/), [`ppc64le`](https://hub.docker.com/r/ppc64le/memcached/), [`s390x`](https://hub.docker.com/r/s390x/memcached/) + [`amd64`](https://hub.docker.com/r/amd64/memcached/), [`arm32v5`](https://hub.docker.com/r/arm32v5/memcached/), [`arm32v6`](https://hub.docker.com/r/arm32v6/memcached/), [`arm32v7`](https://hub.docker.com/r/arm32v7/memcached/), [`arm64v8`](https://hub.docker.com/r/arm64v8/memcached/), [`i386`](https://hub.docker.com/r/i386/memcached/), [`ppc64le`](https://hub.docker.com/r/ppc64le/memcached/), [`riscv64`](https://hub.docker.com/r/riscv64/memcached/), [`s390x`](https://hub.docker.com/r/s390x/memcached/) - **Published image artifact details**: [repo-info repo's `repos/memcached/` directory](https://github.com/docker-library/repo-info/blob/master/repos/memcached) ([history](https://github.com/docker-library/repo-info/commits/master/repos/memcached)) @@ -60,13 +61,31 @@ Memcached's APIs provide a very large hash table distributed across multiple mac $ docker run --name my-memcache -d memcached ``` -## Setting Memory Usage +### Configuration + +To customize the configuration of the memcached server, first obtain the upstream configuration options from the container: + +```console +$ docker run --rm memcached -h +``` + +Using `docker run`: ```console -$ docker run --name my-memcache -d memcached memcached -m 64 +$ docker run --name my-memcache -d memcached memcached --memory-limit=64 ``` -This would set the Memcached server to use 64 megabytes for storage. +or using Docker Compose: + +```yaml +services: + memcached: + image: memcached + command: + - --conn-limit=1024 + - --memory-limit=64 + - --threads=4 +``` For infomation on configuring your memcached server, see the extensive [wiki](https://github.com/memcached/memcached/wiki). @@ -78,7 +97,7 @@ The `memcached` images come in many flavors, each designed for a specific use ca This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `memcached:-alpine` diff --git a/memcached/content.md b/memcached/content.md index 6f13f6942d9d..ddabc4fc8e0e 100644 --- a/memcached/content.md +++ b/memcached/content.md @@ -12,12 +12,30 @@ Memcached's APIs provide a very large hash table distributed across multiple mac $ docker run --name my-memcache -d %%IMAGE%% ``` -## Setting Memory Usage +### Configuration + +To customize the configuration of the memcached server, first obtain the upstream configuration options from the container: ```console -$ docker run --name my-memcache -d %%IMAGE%% memcached -m 64 +$ docker run --rm %%IMAGE%% -h ``` -This would set the Memcached server to use 64 megabytes for storage. +Using `docker run`: + +```console +$ docker run --name my-memcache -d %%IMAGE%% memcached --memory-limit=64 +``` + +or using Docker Compose: + +```yaml +services: + memcached: + image: %%IMAGE%% + command: + - --conn-limit=1024 + - --memory-limit=64 + - --threads=4 +``` For infomation on configuring your memcached server, see the extensive [wiki](https://github.com/memcached/memcached/wiki). diff --git a/memcached/metadata.json b/memcached/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/memcached/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/metadata.json b/metadata.json new file mode 100644 index 000000000000..e12e4b04f598 --- /dev/null +++ b/metadata.json @@ -0,0 +1,22 @@ +{ + "hub": { + "categories": [ + "api-management", + "content-management-system", + "data-science", + "databases-and-storage", + "developer-tools", + "integration-and-delivery", + "internet-of-things", + "languages-and-frameworks", + "machine-learning-and-ai", + "message-queues", + "monitoring-and-observability", + "networking", + "operating-systems", + "security", + "web-analytics", + "web-servers" + ] + } +} diff --git a/metadata.sh b/metadata.sh new file mode 100755 index 000000000000..cc215de796f9 --- /dev/null +++ b/metadata.sh @@ -0,0 +1,118 @@ +#!/usr/bin/env bash +set -Eeuo pipefail + +workdir="$(readlink -f "$BASH_SOURCE")" +workdir="$(dirname "$workdir")" +cd "$workdir" + +jsonFile='metadata.json' +canonicalMetadataFile="./$jsonFile" +export maxCategories=3 + +self="$(basename "$0")" + +usage() { + cat <&2 && false; })" +eval set -- "$opts" + +write= + +while :; do + flag="$1" + shift + case "$flag" in + --help | -h) usage && exit 0 ;; + --write | -w) write=1 ;; + --) break ;; + *) + { + echo "error: unknown flag: $flag" + usage + } >&2 + exit 1 + ;; + esac +done + +repos=( "$@" ) +if [ "${#repos[@]}" -eq 0 ]; then + repos=( */ ) +fi +repos=( "${repos[@]%/}" ) + +failures=0 +for repo in "${repos[@]}"; do + repoFile="$repo/$jsonFile" + if [ ! -s "$repoFile" ]; then + echo >&2 "error: $repoFile does not exist or is empty" + (( failures++ )) || : + continue + fi + + # sort object keys and pretty print with jq as our "cannonical json" + # sort categories array, no duplicates + if ! repoFileJson="$(jq -s --sort-keys '.[0] | .hub.categories |= unique' "$repoFile")"; then + echo >&2 "error parsing '$repoFile'; invalid JSON?" + (( failures++ )) || : + continue + fi + if ! filediff="$(diff -u "$repoFile" <(cat <<<"$repoFileJson"))"; then + cat <<<"$filediff" + if [ -n "$write" ]; then + cat <<<"$repoFileJson" > "$repoFile" + else + (( failures++ )) || : + fi + fi + + # TODO also check for required keys and/or types? + # the canonicalMetadataFile doesn't have too many categories since it is the source of categories + # all other metadata.json files must not be more than maxCategories or have categories that aren't in the canonical set + if [ "$repoFile" != "$canonicalMetadataFile" ]; then + export repoFile + if errorText="$(jq -r --slurpfile canonical "$canonicalMetadataFile" ' + .hub.categories + | ( + length + | if . > (env.maxCategories | tonumber) then + "error: \(env.repoFile): too many categories: \(.) (max \(env.maxCategories))" + else empty end + ), + ( + . - $canonical[0].hub.categories + | if length > 0 then + "error: \(env.repoFile): unknown categories \(.)" + else empty end + ) + ' "$repoFile")"; then + if [ -n "$errorText" ]; then + echo >&2 "$errorText" + (( failures++ )) || : + fi + else + echo >&2 "error parsing '$repoFile'; invalid JSON?" + (( failures++ )) || : + continue + fi + fi +done + +exit "$failures" diff --git a/mongo-express/README.md b/mongo-express/README.md index ae5c05387ea8..622247c1f1c4 100644 --- a/mongo-express/README.md +++ b/mongo-express/README.md @@ -24,16 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.0.0-alpha.4`, `1.0.0-alpha`, `latest`](https://github.com/mongo-express/mongo-express-docker/blob/26e7ea94e4d222de7d52531caee52149ac093c26/Dockerfile) -- [`0.54.0`, `0.54`](https://github.com/mongo-express/mongo-express-docker/blob/4b43fe8a1206434cb32a006cd155dd71462f092f/Dockerfile) +**No supported tags** # Quick reference (cont.) - **Where to file issues**: - [https://github.com/mongo-express/mongo-express-docker/issues](https://github.com/mongo-express/mongo-express-docker/issues) + [https://github.com/mongo-express/mongo-express-docker/issues](https://github.com/mongo-express/mongo-express-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/mongo-express/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mongo-express/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/mongo-express/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mongo-express) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mongo-express)) @@ -112,7 +111,7 @@ $ docker run -it --rm \ mongo-express ``` -This example links to a container name typical of `docker-compose`, changes the editor's color theme, and enables basic authentication. +This example links to a container name typical of `docker compose`, changes the editor's color theme, and enables basic authentication. # License diff --git a/mongo-express/content.md b/mongo-express/content.md index 13b6df497b75..566d512a74c9 100644 --- a/mongo-express/content.md +++ b/mongo-express/content.md @@ -64,4 +64,4 @@ $ docker run -it --rm \ %%IMAGE%% ``` -This example links to a container name typical of `docker-compose`, changes the editor's color theme, and enables basic authentication. +This example links to a container name typical of `docker compose`, changes the editor's color theme, and enables basic authentication. diff --git a/mongo-express/metadata.json b/mongo-express/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mongo-express/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/mongo/README.md b/mongo/README.md index 8d3541d21b09..cc3232bbf0dc 100644 --- a/mongo/README.md +++ b/mongo/README.md @@ -28,74 +28,150 @@ WARNING: ## Simple Tags -- [`6.0.3-focal`, `6.0-focal`, `6-focal`, `focal`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/6.0/Dockerfile) -- [`6.0.3-windowsservercore-ltsc2022`, `6.0-windowsservercore-ltsc2022`, `6-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/windowsservercore-ltsc2022/Dockerfile) -- [`6.0.3-windowsservercore-1809`, `6.0-windowsservercore-1809`, `6-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/windowsservercore-1809/Dockerfile) -- [`6.0.3-nanoserver-ltsc2022`, `6.0-nanoserver-ltsc2022`, `6-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/nanoserver-ltsc2022/Dockerfile) -- [`6.0.3-nanoserver-1809`, `6.0-nanoserver-1809`, `6-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/nanoserver-1809/Dockerfile) -- [`5.0.14-focal`, `5.0-focal`, `5-focal`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/5.0/Dockerfile) -- [`5.0.14-windowsservercore-ltsc2022`, `5.0-windowsservercore-ltsc2022`, `5-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/windowsservercore-ltsc2022/Dockerfile) -- [`5.0.14-windowsservercore-1809`, `5.0-windowsservercore-1809`, `5-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/windowsservercore-1809/Dockerfile) -- [`5.0.14-nanoserver-ltsc2022`, `5.0-nanoserver-ltsc2022`, `5-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/nanoserver-ltsc2022/Dockerfile) -- [`5.0.14-nanoserver-1809`, `5.0-nanoserver-1809`, `5-nanoserver-1809`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/nanoserver-1809/Dockerfile) -- [`4.4.18-focal`, `4.4-focal`, `4-focal`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/4.4/Dockerfile) -- [`4.4.18-windowsservercore-ltsc2022`, `4.4-windowsservercore-ltsc2022`, `4-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/windowsservercore-ltsc2022/Dockerfile) -- [`4.4.18-windowsservercore-1809`, `4.4-windowsservercore-1809`, `4-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/windowsservercore-1809/Dockerfile) -- [`4.4.18-nanoserver-ltsc2022`, `4.4-nanoserver-ltsc2022`, `4-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/nanoserver-ltsc2022/Dockerfile) -- [`4.4.18-nanoserver-1809`, `4.4-nanoserver-1809`, `4-nanoserver-1809`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/nanoserver-1809/Dockerfile) -- [`4.2.23-bionic`, `4.2-bionic`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/4.2/Dockerfile) -- [`4.2.23-windowsservercore-ltsc2022`, `4.2-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/windowsservercore-ltsc2022/Dockerfile) -- [`4.2.23-windowsservercore-1809`, `4.2-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/windowsservercore-1809/Dockerfile) -- [`4.2.23-nanoserver-ltsc2022`, `4.2-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/nanoserver-ltsc2022/Dockerfile) -- [`4.2.23-nanoserver-1809`, `4.2-nanoserver-1809`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/nanoserver-1809/Dockerfile) +- [`8.2.2-rc0-noble`, `8.2-rc-noble`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/Dockerfile) + +- [`8.2.2-rc0-windowsservercore-ltsc2025`, `8.2-rc-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`8.2.2-rc0-windowsservercore-ltsc2022`, `8.2-rc-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`8.2.2-rc0-nanoserver-ltsc2022`, `8.2-rc-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/nanoserver-ltsc2022/Dockerfile) + +- [`8.2.1-noble`, `8.2-noble`, `8-noble`, `noble`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/Dockerfile) + +- [`8.2.1-windowsservercore-ltsc2025`, `8.2-windowsservercore-ltsc2025`, `8-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`8.2.1-windowsservercore-ltsc2022`, `8.2-windowsservercore-ltsc2022`, `8-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`8.2.1-nanoserver-ltsc2022`, `8.2-nanoserver-ltsc2022`, `8-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/nanoserver-ltsc2022/Dockerfile) + +- [`8.0.16-rc1-noble`, `8.0-rc-noble`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/Dockerfile) + +- [`8.0.16-rc1-windowsservercore-ltsc2025`, `8.0-rc-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`8.0.16-rc1-windowsservercore-ltsc2022`, `8.0-rc-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`8.0.16-rc1-nanoserver-ltsc2022`, `8.0-rc-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/nanoserver-ltsc2022/Dockerfile) + +- [`8.0.15-noble`, `8.0-noble`](https://github.com/docker-library/mongo/blob/12330e190aa0ba8cfd07004a7a74791b270a3206/8.0/Dockerfile) + +- [`8.0.15-windowsservercore-ltsc2025`, `8.0-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`8.0.15-windowsservercore-ltsc2022`, `8.0-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`8.0.15-nanoserver-ltsc2022`, `8.0-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/nanoserver-ltsc2022/Dockerfile) + +- [`7.0.26-rc0-jammy`, `7.0-rc-jammy`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/Dockerfile) + +- [`7.0.26-rc0-windowsservercore-ltsc2025`, `7.0-rc-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`7.0.26-rc0-windowsservercore-ltsc2022`, `7.0-rc-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`7.0.26-rc0-nanoserver-ltsc2022`, `7.0-rc-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/nanoserver-ltsc2022/Dockerfile) + +- [`7.0.25-jammy`, `7.0-jammy`, `7-jammy`](https://github.com/docker-library/mongo/blob/12330e190aa0ba8cfd07004a7a74791b270a3206/7.0/Dockerfile) + +- [`7.0.25-windowsservercore-ltsc2025`, `7.0-windowsservercore-ltsc2025`, `7-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`7.0.25-windowsservercore-ltsc2022`, `7.0-windowsservercore-ltsc2022`, `7-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`7.0.25-nanoserver-ltsc2022`, `7.0-nanoserver-ltsc2022`, `7-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/nanoserver-ltsc2022/Dockerfile) ## Shared Tags -- `6.0.3`, `6.0`, `6`, `latest`: - - [`6.0.3-focal`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/6.0/Dockerfile) - - [`6.0.3-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/windowsservercore-ltsc2022/Dockerfile) - - [`6.0.3-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/windowsservercore-1809/Dockerfile) -- `6.0.3-windowsservercore`, `6.0-windowsservercore`, `6-windowsservercore`, `windowsservercore`: - - [`6.0.3-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/windowsservercore-ltsc2022/Dockerfile) - - [`6.0.3-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/windowsservercore-1809/Dockerfile) -- `6.0.3-nanoserver`, `6.0-nanoserver`, `6-nanoserver`, `nanoserver`: - - [`6.0.3-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/nanoserver-ltsc2022/Dockerfile) - - [`6.0.3-nanoserver-1809`](https://github.com/docker-library/mongo/blob/b828cbca8f06a7c2bc88c7700bb781c6ca13479f/6.0/windows/nanoserver-1809/Dockerfile) -- `5.0.14`, `5.0`, `5`: - - [`5.0.14-focal`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/5.0/Dockerfile) - - [`5.0.14-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/windowsservercore-ltsc2022/Dockerfile) - - [`5.0.14-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/windowsservercore-1809/Dockerfile) -- `5.0.14-windowsservercore`, `5.0-windowsservercore`, `5-windowsservercore`: - - [`5.0.14-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/windowsservercore-ltsc2022/Dockerfile) - - [`5.0.14-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/windowsservercore-1809/Dockerfile) -- `5.0.14-nanoserver`, `5.0-nanoserver`, `5-nanoserver`: - - [`5.0.14-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/nanoserver-ltsc2022/Dockerfile) - - [`5.0.14-nanoserver-1809`](https://github.com/docker-library/mongo/blob/d27f80ddeafa162ab0a2f73a733c52f5e54bf817/5.0/windows/nanoserver-1809/Dockerfile) -- `4.4.18`, `4.4`, `4`: - - [`4.4.18-focal`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/4.4/Dockerfile) - - [`4.4.18-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/windowsservercore-ltsc2022/Dockerfile) - - [`4.4.18-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/windowsservercore-1809/Dockerfile) -- `4.4.18-windowsservercore`, `4.4-windowsservercore`, `4-windowsservercore`: - - [`4.4.18-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/windowsservercore-ltsc2022/Dockerfile) - - [`4.4.18-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/windowsservercore-1809/Dockerfile) -- `4.4.18-nanoserver`, `4.4-nanoserver`, `4-nanoserver`: - - [`4.4.18-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/nanoserver-ltsc2022/Dockerfile) - - [`4.4.18-nanoserver-1809`](https://github.com/docker-library/mongo/blob/065527f98244e16f3cc252c1ed369244cc5ebc30/4.4/windows/nanoserver-1809/Dockerfile) -- `4.2.23`, `4.2`: - - [`4.2.23-bionic`](https://github.com/docker-library/mongo/blob/fe7b66f65c5169d86c17c8d26789c8f868fa82c9/4.2/Dockerfile) - - [`4.2.23-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/windowsservercore-ltsc2022/Dockerfile) - - [`4.2.23-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/windowsservercore-1809/Dockerfile) -- `4.2.23-windowsservercore`, `4.2-windowsservercore`: - - [`4.2.23-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/windowsservercore-ltsc2022/Dockerfile) - - [`4.2.23-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/windowsservercore-1809/Dockerfile) -- `4.2.23-nanoserver`, `4.2-nanoserver`: - - [`4.2.23-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/nanoserver-ltsc2022/Dockerfile) - - [`4.2.23-nanoserver-1809`](https://github.com/docker-library/mongo/blob/c830e47022955d24bad50f1237ef7b713792bf9e/4.2/windows/nanoserver-1809/Dockerfile) +- `8.2.2-rc0`, `8.2-rc`: + + - [`8.2.2-rc0-noble`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/Dockerfile) + - [`8.2.2-rc0-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.2.2-rc0-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.2.2-rc0-windowsservercore`, `8.2-rc-windowsservercore`: + + - [`8.2.2-rc0-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.2.2-rc0-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.2.2-rc0-nanoserver`, `8.2-rc-nanoserver`: + + - [`8.2.2-rc0-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/24e1e676f633788faf66ff5a539e608ee33d75ac/8.2-rc/windows/nanoserver-ltsc2022/Dockerfile) + +- `8.2.1`, `8.2`, `8`, `latest`: + + - [`8.2.1-noble`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/Dockerfile) + - [`8.2.1-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.2.1-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.2.1-windowsservercore`, `8.2-windowsservercore`, `8-windowsservercore`, `windowsservercore`: + + - [`8.2.1-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.2.1-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.2.1-nanoserver`, `8.2-nanoserver`, `8-nanoserver`, `nanoserver`: + + - [`8.2.1-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/930645872a8eb6651cb1a27bfda9e0500c58fbfd/8.2/windows/nanoserver-ltsc2022/Dockerfile) + +- `8.0.16-rc1`, `8.0-rc`: + + - [`8.0.16-rc1-noble`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/Dockerfile) + - [`8.0.16-rc1-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.0.16-rc1-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.0.16-rc1-windowsservercore`, `8.0-rc-windowsservercore`: + + - [`8.0.16-rc1-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.0.16-rc1-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.0.16-rc1-nanoserver`, `8.0-rc-nanoserver`: + + - [`8.0.16-rc1-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/dda0354f39517b3a275a8c5d77ae48379a7fb3f4/8.0-rc/windows/nanoserver-ltsc2022/Dockerfile) + +- `8.0.15`, `8.0`: + + - [`8.0.15-noble`](https://github.com/docker-library/mongo/blob/12330e190aa0ba8cfd07004a7a74791b270a3206/8.0/Dockerfile) + - [`8.0.15-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.0.15-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.0.15-windowsservercore`, `8.0-windowsservercore`: + + - [`8.0.15-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/windowsservercore-ltsc2025/Dockerfile) + - [`8.0.15-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/windowsservercore-ltsc2022/Dockerfile) + +- `8.0.15-nanoserver`, `8.0-nanoserver`: + + - [`8.0.15-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/c7ea10a79db9577890466804058872f34f21b3ab/8.0/windows/nanoserver-ltsc2022/Dockerfile) + +- `7.0.26-rc0`, `7.0-rc`: + + - [`7.0.26-rc0-jammy`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/Dockerfile) + - [`7.0.26-rc0-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`7.0.26-rc0-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `7.0.26-rc0-windowsservercore`, `7.0-rc-windowsservercore`: + + - [`7.0.26-rc0-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`7.0.26-rc0-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `7.0.26-rc0-nanoserver`, `7.0-rc-nanoserver`: + + - [`7.0.26-rc0-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/bf7e9f267d083920987d5b3f8da1cfe89f378486/7.0-rc/windows/nanoserver-ltsc2022/Dockerfile) + +- `7.0.25`, `7.0`, `7`: + + - [`7.0.25-jammy`](https://github.com/docker-library/mongo/blob/12330e190aa0ba8cfd07004a7a74791b270a3206/7.0/Dockerfile) + - [`7.0.25-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/windowsservercore-ltsc2025/Dockerfile) + - [`7.0.25-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/windowsservercore-ltsc2022/Dockerfile) + +- `7.0.25-windowsservercore`, `7.0-windowsservercore`, `7-windowsservercore`: + + - [`7.0.25-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/windowsservercore-ltsc2025/Dockerfile) + - [`7.0.25-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/windowsservercore-ltsc2022/Dockerfile) + +- `7.0.25-nanoserver`, `7.0-nanoserver`, `7-nanoserver`: + + - [`7.0.25-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/d828bd4b9677891b7b4a5a2259d939f7a5cb3377/7.0/windows/nanoserver-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/mongo/issues](https://github.com/docker-library/mongo/issues) + [https://github.com/docker-library/mongo/issues](https://github.com/docker-library/mongo/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/mongo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mongo/), [`windows-amd64`](https://hub.docker.com/r/winamd64/mongo/) @@ -121,6 +197,10 @@ First developed by the software company 10gen (now MongoDB Inc.) in October 2007 +# Security + +By default Mongo's configuration requires no authentication for access, even for the administrative user. It is highly recommended to set a root user name and password if you plan on exposing your Mongo instance to the internet. See the "`MONGO_INITDB_ROOT_USERNAME`, `MONGO_INITDB_ROOT_PASSWORD`" section below for instructions and the [MongoDB Security documentation](https://www.mongodb.com/docs/manual/security/) for a more complete treatment. + # How to use this image ## Start a `mongo` server instance @@ -141,16 +221,12 @@ $ docker run -it --network some-network --rm mongo mongosh --host some-mongo tes ... where `some-mongo` is the name of your original `mongo` container. -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `mongo`: +Example `compose.yaml` for `mongo`: ```yaml -# Use root/example as user/password credentials -version: '3.1' - services: - mongo: image: mongo restart: always @@ -164,14 +240,13 @@ services: ports: - 8081:8081 environment: - ME_CONFIG_MONGODB_ADMINUSERNAME: root - ME_CONFIG_MONGODB_ADMINPASSWORD: example ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ + ME_CONFIG_BASICAUTH_ENABLED: true + ME_CONFIG_BASICAUTH_USERNAME: mongoexpressuser + ME_CONFIG_BASICAUTH_PASSWORD: mongoexpresspass ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/f6c9b596064e2eed9c3b6ac75bea606cb6d94099/mongo/stack.yml) - -Run `docker stack deploy -c stack.yml mongo` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8081`, `http://localhost:8081`, or `http://host-ip:8081` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8081` or `http://host-ip:8081` (as appropriate). ## Container shell access and viewing MongoDB logs @@ -187,49 +262,36 @@ The MongoDB Server log is available through Docker's container log: $ docker logs some-mongo ``` -## Configuration +# Configuration -See the [MongoDB manual](https://docs.mongodb.com/manual/) for information on using and configuring MongoDB for things like replica sets and sharding. +See the [MongoDB manual](https://www.mongodb.com/docs/manual/administration/configuration/) for information on using and configuring MongoDB for things like replica sets and sharding. ## Customize configuration without configuration file -Most MongoDB configuration can be set through flags to `mongod`. The entrypoint of the image is created to pass its arguments along to `mongod`. See below an example of setting MongoDB to use a different [threading and execution model](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-serviceexecutor) via `docker run`. +Most MongoDB configuration options can be set through flags to `mongod`. The entrypoint of the image passes its arguments along to `mongod`. Example below enables MongoDB [query profiler](https://www.mongodb.com/docs/manual/reference/program/mongod/#profiler-options) via `docker run`. ```console -$ docker run --name some-mongo -d mongo --serviceExecutor adaptive +$ docker run --name some-mongo -d mongo --profile 1 ``` -And here is the same with a `docker-compose.yml` file +The same can be achieved with a `compose.yaml` file ```yaml -version: '3.1' services: mongo: image: mongo - command: --serviceExecutor adaptive + command: --profile 1 ``` -To see the full list of possible options, check the MongoDB manual on [`mongod`](https://docs.mongodb.com/manual/reference/program/mongod/) or check the `--help` output of `mongod`: +To see the full list of possible options, check the MongoDB manual on [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod/) or check the `--help` output of `mongod`: ```console $ docker run -it --rm mongo --help ``` -## Setting WiredTiger cache size limits - -By default Mongo will set the `wiredTigerCacheSizeGB` to a value proportional to the host's total memory regardless of memory limits you may have imposed on the container. In such an instance you will want to set the cache size to something appropriate, taking into account any other processes you may be running in the container which would also utilize memory. - -Taking the examples above you can configure the cache size to use 1.5GB as: - -```console -$ docker run --name some-mongo -d mongo --wiredTigerCacheSizeGB 1.5 -``` - -See [the upstream "WiredTiger Options" documentation](https://docs.mongodb.com/manual/reference/program/mongod/#wiredtiger-options) for more details. - ## Using a custom MongoDB configuration file -For a more complicated configuration setup, you can still use the MongoDB configuration file. `mongod` does not read a configuration file by default, so the `--config` option with the path to the configuration file needs to be specified. Create a custom configuration file and put it in the container by either creating a custom Dockerfile `FROM mongo` or mounting it from the host machine to the container. See the MongoDB manual for a full list of [configuration file](https://docs.mongodb.com/manual/reference/configuration-options/) options. +For a more complicated configuration setup, you can still use the MongoDB configuration file. `mongod` does not read a configuration file by default, so the `--config` option with the path to the configuration file needs to be specified. Create a custom configuration file and put it in the container by either creating a custom Dockerfile `FROM mongo` or mounting it from the host machine to the container. See the MongoDB manual for a full list of [configuration file](https://www.mongodb.com/docs/manual/reference/configuration-options/) options. For example, `/my/custom/mongod.conf` is the path to the custom configuration file. Then start the MongoDB container like the following: @@ -243,7 +305,7 @@ When you start the `mongo` image, you can adjust the initialization of the Mongo ### `MONGO_INITDB_ROOT_USERNAME`, `MONGO_INITDB_ROOT_PASSWORD` -These variables, used in conjunction, create a new user and set that user's password. This user is created in the `admin` [authentication database](https://docs.mongodb.com/manual/core/security-users/#user-authentication-database) and given [the role of `root`](https://docs.mongodb.com/manual/reference/built-in-roles/#root), which is [a "superuser" role](https://docs.mongodb.com/manual/core/security-built-in-roles/#superuser-roles). +These variables, used in conjunction, create a new user and set that user's password. This user is created in the `admin` [authentication database](https://www.mongodb.com/docs/manual/core/security-users/#authentication-database) and given [the role of `root`](https://www.mongodb.com/docs/manual/reference/built-in-roles/#mongodb-authrole-root), which is [a "superuser" role](https://www.mongodb.com/docs/manual/reference/built-in-roles/#superuser-roles). The following is an example of using these two variables to create a MongoDB instance and then using the `mongosh` cli (use `mongo` with `4.x` versions) to connect against the `admin` authentication database. @@ -289,13 +351,13 @@ When a container is started for the first time it will execute files with extens As noted above, authentication in MongoDB is fairly complex (although disabled by default). For details about how MongoDB handles authentication, please see the relevant upstream documentation: -- [`mongod --auth`](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-auth) -- [Security > Authentication](https://docs.mongodb.com/manual/core/authentication/) -- [Security > Role-Based Access Control](https://docs.mongodb.com/manual/core/authorization/) -- [Security > Role-Based Access Control > Built-In Roles](https://docs.mongodb.com/manual/core/security-built-in-roles/) -- [Security > Enable Auth (tutorial)](https://docs.mongodb.com/manual/tutorial/enable-authentication/) +- [`mongod --auth`](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--auth) +- [Security > Authentication](https://www.mongodb.com/docs/manual/core/authentication/) +- [Security > Role-Based Access Control](https://www.mongodb.com/docs/manual/core/authorization/) +- [Security > Role-Based Access Control > Built-In Roles](https://www.mongodb.com/docs/manual/reference/built-in-roles/) +- [Security > Enable Auth (tutorial)](https://www.mongodb.com/docs/manual/tutorial/enable-authentication/) -In addition to the `/docker-entrypoint-initdb.d` behavior documented above (which is a simple way to configure users for authentication for less complicated deployments), this image also supports `MONGO_INITDB_ROOT_USERNAME` and `MONGO_INITDB_ROOT_PASSWORD` for creating a simple user with [the role `root`](https://docs.mongodb.com/manual/reference/built-in-roles/#root) in the `admin` [authentication database](https://docs.mongodb.com/manual/core/security-users/#user-authentication-database), as described in the *Environment Variables* section above. +In addition to the `/docker-entrypoint-initdb.d` behavior documented above (which is a simple way to configure users for authentication for less complicated deployments), this image also supports `MONGO_INITDB_ROOT_USERNAME` and `MONGO_INITDB_ROOT_PASSWORD` for creating a simple user with [the role `root`](https://www.mongodb.com/docs/manual/reference/built-in-roles/#mongodb-authrole-root) in the `admin` [authentication database](https://www.mongodb.com/docs/manual/core/security-users/#authentication-database), as described in the *Environment Variables* section above. # Caveats @@ -303,10 +365,10 @@ In addition to the `/docker-entrypoint-initdb.d` behavior documented above (whic Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `mongo` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. -**WARNING (Windows & OS X)**: When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB ([docs.mongodb.org](https://docs.mongodb.com/manual/administration/production-notes/#fsync---on-directories) and related [jira.mongodb.org](https://jira.mongodb.org/browse/SERVER-8600) bug). This means that it is not possible to run a MongoDB container with the data directory mapped to the host. To persist data between container restarts, we recommend using a local named volume instead (see `docker volume create`). Alternatively you can use the Windows-based images on Windows. +**WARNING (Windows & OS X)**: When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB (see [documenation note](https://www.mongodb.com/docs/manual/administration/production-notes/#fsync---on-directories) and related [bug](https://jira.mongodb.org/browse/SERVER-8600)). This means that it is not possible to run a MongoDB container with the data directory mapped to the host. To persist data between container restarts, we recommend using a local named volume instead (see `docker volume create`). Alternatively you can use the Windows-based images on Windows. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -319,7 +381,7 @@ The Docker documentation is a good starting point for understanding the differen The `-v /my/own/datadir:/data/db` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/data/db` inside the container, where MongoDB by default will write its data files. -This image also defines a volume for `/data/configdb` [for use with `--configsvr` (see docs.mongodb.com for more details)](https://docs.mongodb.com/v3.4/reference/program/mongod/#cmdoption-configsvr). +This image also defines a volume for `/data/configdb` [for use with `--configsvr`](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--configsvr). ## Creating database dumps @@ -337,16 +399,15 @@ The `mongo` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bionic or focal in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `mongo:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/mongo/stack.yml b/mongo/compose.yaml similarity index 67% rename from mongo/stack.yml rename to mongo/compose.yaml index 7a287967fc60..6e300e42a996 100644 --- a/mongo/stack.yml +++ b/mongo/compose.yaml @@ -1,8 +1,4 @@ -# Use root/example as user/password credentials -version: '3.1' - services: - mongo: image: mongo restart: always @@ -16,6 +12,7 @@ services: ports: - 8081:8081 environment: - ME_CONFIG_MONGODB_ADMINUSERNAME: root - ME_CONFIG_MONGODB_ADMINPASSWORD: example ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ + ME_CONFIG_BASICAUTH_ENABLED: true + ME_CONFIG_BASICAUTH_USERNAME: mongoexpressuser + ME_CONFIG_BASICAUTH_PASSWORD: mongoexpresspass diff --git a/mongo/content.md b/mongo/content.md index c586238bd8ee..1474e052d454 100644 --- a/mongo/content.md +++ b/mongo/content.md @@ -8,6 +8,10 @@ First developed by the software company 10gen (now MongoDB Inc.) in October 2007 %%LOGO%% +# Security + +By default Mongo's configuration requires no authentication for access, even for the administrative user. It is highly recommended to set a root user name and password if you plan on exposing your Mongo instance to the internet. See the "`MONGO_INITDB_ROOT_USERNAME`, `MONGO_INITDB_ROOT_PASSWORD`" section below for instructions and the [MongoDB Security documentation](https://www.mongodb.com/docs/manual/security/) for a more complete treatment. + # How to use this image ## Start a `%%REPO%%` server instance @@ -28,9 +32,9 @@ $ docker run -it --network some-network --rm %%IMAGE%% mongosh --host some-%%REP ... where `some-%%REPO%%` is the name of your original `mongo` container. -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8081`, `http://localhost:8081`, or `http://host-ip:8081` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8081` or `http://host-ip:8081` (as appropriate). ## Container shell access and viewing MongoDB logs @@ -46,49 +50,36 @@ The MongoDB Server log is available through Docker's container log: $ docker logs some-%%REPO%% ``` -## Configuration +# Configuration -See the [MongoDB manual](https://docs.mongodb.com/manual/) for information on using and configuring MongoDB for things like replica sets and sharding. +See the [MongoDB manual](https://www.mongodb.com/docs/manual/administration/configuration/) for information on using and configuring MongoDB for things like replica sets and sharding. ## Customize configuration without configuration file -Most MongoDB configuration can be set through flags to `mongod`. The entrypoint of the image is created to pass its arguments along to `mongod`. See below an example of setting MongoDB to use a different [threading and execution model](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-serviceexecutor) via `docker run`. +Most MongoDB configuration options can be set through flags to `mongod`. The entrypoint of the image passes its arguments along to `mongod`. Example below enables MongoDB [query profiler](https://www.mongodb.com/docs/manual/reference/program/mongod/#profiler-options) via `docker run`. ```console -$ docker run --name some-%%REPO%% -d %%IMAGE%% --serviceExecutor adaptive +$ docker run --name some-%%REPO%% -d %%IMAGE%% --profile 1 ``` -And here is the same with a `docker-compose.yml` file +The same can be achieved with a `compose.yaml` file ```yaml -version: '3.1' services: mongo: image: %%IMAGE%% - command: --serviceExecutor adaptive + command: --profile 1 ``` -To see the full list of possible options, check the MongoDB manual on [`mongod`](https://docs.mongodb.com/manual/reference/program/mongod/) or check the `--help` output of `mongod`: +To see the full list of possible options, check the MongoDB manual on [`mongod`](https://www.mongodb.com/docs/manual/reference/program/mongod/) or check the `--help` output of `mongod`: ```console $ docker run -it --rm %%IMAGE%% --help ``` -## Setting WiredTiger cache size limits - -By default Mongo will set the `wiredTigerCacheSizeGB` to a value proportional to the host's total memory regardless of memory limits you may have imposed on the container. In such an instance you will want to set the cache size to something appropriate, taking into account any other processes you may be running in the container which would also utilize memory. - -Taking the examples above you can configure the cache size to use 1.5GB as: - -```console -$ docker run --name some-%%REPO%% -d %%IMAGE%% --wiredTigerCacheSizeGB 1.5 -``` - -See [the upstream "WiredTiger Options" documentation](https://docs.mongodb.com/manual/reference/program/mongod/#wiredtiger-options) for more details. - ## Using a custom MongoDB configuration file -For a more complicated configuration setup, you can still use the MongoDB configuration file. `mongod` does not read a configuration file by default, so the `--config` option with the path to the configuration file needs to be specified. Create a custom configuration file and put it in the container by either creating a custom Dockerfile `FROM %%IMAGE%%` or mounting it from the host machine to the container. See the MongoDB manual for a full list of [configuration file](https://docs.mongodb.com/manual/reference/configuration-options/) options. +For a more complicated configuration setup, you can still use the MongoDB configuration file. `mongod` does not read a configuration file by default, so the `--config` option with the path to the configuration file needs to be specified. Create a custom configuration file and put it in the container by either creating a custom Dockerfile `FROM %%IMAGE%%` or mounting it from the host machine to the container. See the MongoDB manual for a full list of [configuration file](https://www.mongodb.com/docs/manual/reference/configuration-options/) options. For example, `/my/custom/mongod.conf` is the path to the custom configuration file. Then start the MongoDB container like the following: @@ -102,7 +93,7 @@ When you start the `%%REPO%%` image, you can adjust the initialization of the Mo ### `MONGO_INITDB_ROOT_USERNAME`, `MONGO_INITDB_ROOT_PASSWORD` -These variables, used in conjunction, create a new user and set that user's password. This user is created in the `admin` [authentication database](https://docs.mongodb.com/manual/core/security-users/#user-authentication-database) and given [the role of `root`](https://docs.mongodb.com/manual/reference/built-in-roles/#root), which is [a "superuser" role](https://docs.mongodb.com/manual/core/security-built-in-roles/#superuser-roles). +These variables, used in conjunction, create a new user and set that user's password. This user is created in the `admin` [authentication database](https://www.mongodb.com/docs/manual/core/security-users/#authentication-database) and given [the role of `root`](https://www.mongodb.com/docs/manual/reference/built-in-roles/#mongodb-authrole-root), which is [a "superuser" role](https://www.mongodb.com/docs/manual/reference/built-in-roles/#superuser-roles). The following is an example of using these two variables to create a MongoDB instance and then using the `mongosh` cli (use `mongo` with `4.x` versions) to connect against the `admin` authentication database. @@ -148,13 +139,13 @@ When a container is started for the first time it will execute files with extens As noted above, authentication in MongoDB is fairly complex (although disabled by default). For details about how MongoDB handles authentication, please see the relevant upstream documentation: -- [`mongod --auth`](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-auth) -- [Security > Authentication](https://docs.mongodb.com/manual/core/authentication/) -- [Security > Role-Based Access Control](https://docs.mongodb.com/manual/core/authorization/) -- [Security > Role-Based Access Control > Built-In Roles](https://docs.mongodb.com/manual/core/security-built-in-roles/) -- [Security > Enable Auth (tutorial)](https://docs.mongodb.com/manual/tutorial/enable-authentication/) +- [`mongod --auth`](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--auth) +- [Security > Authentication](https://www.mongodb.com/docs/manual/core/authentication/) +- [Security > Role-Based Access Control](https://www.mongodb.com/docs/manual/core/authorization/) +- [Security > Role-Based Access Control > Built-In Roles](https://www.mongodb.com/docs/manual/reference/built-in-roles/) +- [Security > Enable Auth (tutorial)](https://www.mongodb.com/docs/manual/tutorial/enable-authentication/) -In addition to the `/docker-entrypoint-initdb.d` behavior documented above (which is a simple way to configure users for authentication for less complicated deployments), this image also supports `MONGO_INITDB_ROOT_USERNAME` and `MONGO_INITDB_ROOT_PASSWORD` for creating a simple user with [the role `root`](https://docs.mongodb.com/manual/reference/built-in-roles/#root) in the `admin` [authentication database](https://docs.mongodb.com/manual/core/security-users/#user-authentication-database), as described in the *Environment Variables* section above. +In addition to the `/docker-entrypoint-initdb.d` behavior documented above (which is a simple way to configure users for authentication for less complicated deployments), this image also supports `MONGO_INITDB_ROOT_USERNAME` and `MONGO_INITDB_ROOT_PASSWORD` for creating a simple user with [the role `root`](https://www.mongodb.com/docs/manual/reference/built-in-roles/#mongodb-authrole-root) in the `admin` [authentication database](https://www.mongodb.com/docs/manual/core/security-users/#authentication-database), as described in the *Environment Variables* section above. # Caveats @@ -162,10 +153,10 @@ In addition to the `/docker-entrypoint-initdb.d` behavior documented above (whic Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. -**WARNING (Windows & OS X)**: When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB ([docs.mongodb.org](https://docs.mongodb.com/manual/administration/production-notes/#fsync---on-directories) and related [jira.mongodb.org](https://jira.mongodb.org/browse/SERVER-8600) bug). This means that it is not possible to run a MongoDB container with the data directory mapped to the host. To persist data between container restarts, we recommend using a local named volume instead (see `docker volume create`). Alternatively you can use the Windows-based images on Windows. +**WARNING (Windows & OS X)**: When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB (see [documenation note](https://www.mongodb.com/docs/manual/administration/production-notes/#fsync---on-directories) and related [bug](https://jira.mongodb.org/browse/SERVER-8600)). This means that it is not possible to run a MongoDB container with the data directory mapped to the host. To persist data between container restarts, we recommend using a local named volume instead (see `docker volume create`). Alternatively you can use the Windows-based images on Windows. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -178,7 +169,7 @@ The Docker documentation is a good starting point for understanding the differen The `-v /my/own/datadir:/data/db` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/data/db` inside the container, where MongoDB by default will write its data files. -This image also defines a volume for `/data/configdb` [for use with `--configsvr` (see docs.mongodb.com for more details)](https://docs.mongodb.com/v3.4/reference/program/mongod/#cmdoption-configsvr). +This image also defines a volume for `/data/configdb` [for use with `--configsvr`](https://www.mongodb.com/docs/manual/reference/program/mongod/#std-option-mongod.--configsvr). ## Creating database dumps diff --git a/mongo/metadata.json b/mongo/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mongo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/monica/README.md b/monica/README.md index d84fefda154c..d0890f1afc59 100644 --- a/monica/README.md +++ b/monica/README.md @@ -24,17 +24,25 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.7.0-apache`, `3.7-apache`, `3-apache`, `apache`, `3.7.0`, `3.7`, `3`, `latest`](https://github.com/monicahq/docker/blob/c0340b2017890e6a465d1d4ee03331d2effc0335/apache/Dockerfile) -- [`3.7.0-fpm-alpine`, `3.7-fpm-alpine`, `3-fpm-alpine`, `fpm-alpine`](https://github.com/monicahq/docker/blob/c0340b2017890e6a465d1d4ee03331d2effc0335/fpm-alpine/Dockerfile) -- [`3.7.0-fpm`, `3.7-fpm`, `3-fpm`, `fpm`](https://github.com/monicahq/docker/blob/c0340b2017890e6a465d1d4ee03331d2effc0335/fpm/Dockerfile) +- [`4.1.2-apache`, `4.1-apache`, `4-apache`, `apache`, `4.1.2`, `4.1`, `4`, `latest`](https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/4/apache/Dockerfile) + +- [`4.1.2-fpm-alpine`, `4.1-fpm-alpine`, `4-fpm-alpine`, `fpm-alpine`](https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/4/fpm-alpine/Dockerfile) + +- [`4.1.2-fpm`, `4.1-fpm`, `4-fpm`, `fpm`](https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/4/fpm/Dockerfile) + +- [`5.0.0-beta.5-apache`, `5.0.0-beta-apache`, `5.0-apache`](https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/5/apache/Dockerfile) + +- [`5.0.0-beta.5-fpm-alpine`, `5.0.0-beta-fpm-alpine`, `5.0-fpm-alpine`](https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/5/fpm-alpine/Dockerfile) + +- [`5.0.0-beta.5-fpm`, `5.0.0-beta-fpm`, `5.0-fpm`](https://github.com/monicahq/docker/blob/7ffc74385e243e2dac4d7013a3240c0ae1229f05/5/fpm/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/monicahq/docker/issues](https://github.com/monicahq/docker/issues) + [https://github.com/monicahq/docker/issues](https://github.com/monicahq/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/monica/), [`arm32v5`](https://hub.docker.com/r/arm32v5/monica/), [`arm32v6`](https://hub.docker.com/r/arm32v6/monica/), [`arm32v7`](https://hub.docker.com/r/arm32v7/monica/), [`arm64v8`](https://hub.docker.com/r/arm64v8/monica/), [`i386`](https://hub.docker.com/r/i386/monica/), [`mips64le`](https://hub.docker.com/r/mips64le/monica/), [`ppc64le`](https://hub.docker.com/r/ppc64le/monica/), [`s390x`](https://hub.docker.com/r/s390x/monica/) + [`amd64`](https://hub.docker.com/r/amd64/monica/), [`arm32v5`](https://hub.docker.com/r/arm32v5/monica/), [`arm32v6`](https://hub.docker.com/r/arm32v6/monica/), [`arm32v7`](https://hub.docker.com/r/arm32v7/monica/), [`arm64v8`](https://hub.docker.com/r/arm64v8/monica/), [`i386`](https://hub.docker.com/r/i386/monica/), [`ppc64le`](https://hub.docker.com/r/ppc64le/monica/), [`riscv64`](https://hub.docker.com/r/riscv64/monica/), [`s390x`](https://hub.docker.com/r/s390x/monica/) - **Published image artifact details**: [repo-info repo's `repos/monica/` directory](https://github.com/docker-library/repo-info/blob/master/repos/monica) ([history](https://github.com/docker-library/repo-info/commits/master/repos/monica)) @@ -79,7 +87,7 @@ docker run --name some-monica -d -p 9000:9000 monica:fpm ### Using an external database -You'll need to setup an external database. Monica currently support MySQL/MariaDB database. You can also link a database container, e. g. `--link my-mysql:db`, and then use `db` as the database host on setup. More info is in the docker-compose section. +You'll need to setup an external database. Monica currently support MySQL/MariaDB database. You can also link a database container, e. g. `--link my-mysql:db`, and then use `db` as the database host on setup. More info is in the Docker Compose section. ### Persistent data storage @@ -101,21 +109,21 @@ Like every Laravel application, the `php artisan` command is very usefull for Mo docker exec CONTAINER_ID php artisan COMMAND ``` -or for docker-compose +Or for Docker Compose: ```console -docker-compose exec monica php artisan COMMAND +docker compose exec monica php artisan COMMAND ``` -where `monica` is the name of the service in your `docker-compose.yml` file. +where `monica` is the name of the service in your `compose.yaml` file. ## Configuration using environment variables -The Monica image will use environment variables to setup the application. See [Monica documentation](https://github.com/monicahq/monica/blob/main/.env.example) for common used variables you should setup. +The Monica image will use environment variables to setup the application. See [Monica documentation](https://github.com/monicahq/monica/blob/4.x/.env.example) for common used variables you should setup. -## Running the image with docker-compose +## Running the image with Docker Compose -See some examples of docker-compose possibilities in the [example section](https://github.com/monicahq/docker/blob/master/.examples). +See some examples of Docker Compose possibilities in the [example section](https://github.com/monicahq/docker/blob/main/.examples). --- @@ -125,11 +133,9 @@ This version will use the apache image and add a mysql container. The volumes ar Make sure to pass in values for `APP_KEY` variable before you run this setup. -1. Create a `docker-compose.yml` file +1. Create a `compose.yaml` file ```yaml - version: "3.4" - services: app: image: monica @@ -138,7 +144,7 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. ports: - 8080:80 environment: - - APP_KEY= + - APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32` - DB_HOST=db - DB_USERNAME=monica - DB_PASSWORD=secret @@ -147,7 +153,7 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. restart: always db: - image: mysql:5.7 + image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica @@ -169,7 +175,7 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. 3. Run ```console - docker-compose up -d + docker compose up -d ``` Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account. @@ -177,35 +183,33 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. 4. Run this command once: ```console - docker-compose exec app php artisan setup:production + docker compose exec app php artisan setup:production ``` ### FPM version When using FPM image, you will need another container with a webserver to proxy http requests. In this example we use nginx with a basic container to do this. -1. Download `nginx.conf` and `Dockerfile` file for nginx image. An example can be found on the [`example section`](https://github.com/monicahq/docker/blob/master/.examples/supervisor/fpm/web/) +1. Download `nginx.conf` and `Dockerfile` file for nginx image. An example can be found on the [`example section`](https://github.com/monicahq/docker/blob/main/.examples/full/fpm/web/) ```sh mkdir web - curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/nginx.conf -o web/nginx.conf - curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/Dockerfile -o web/Dockerfile + curl -sSL https://raw.githubusercontent.com/monicahq/docker/main/.examples/full/web/nginx.conf -o web/nginx.conf + curl -sSL https://raw.githubusercontent.com/monicahq/docker/main/.examples/full/web/Dockerfile -o web/Dockerfile ``` - The `web` container image should be pre-build before each deploy with: `docker-compose build`. + The `web` container image should be pre-build before each deploy with: `docker compose build`. -2. Create a `docker-compose.yml` file +2. Create a `compose.yaml` file ```yaml - version: "3.4" - services: app: image: monica:fpm depends_on: - db environment: - - APP_KEY= + - APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32` - DB_HOST=db - DB_USERNAME=monica - DB_PASSWORD=secret @@ -224,7 +228,7 @@ When using FPM image, you will need another container with a webserver to proxy restart: always db: - image: mysql:5.7 + image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica @@ -246,7 +250,7 @@ When using FPM image, you will need another container with a webserver to proxy 4. Run ```console - docker-compose up -d + docker compose up -d ``` Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account. @@ -254,7 +258,7 @@ When using FPM image, you will need another container with a webserver to proxy 5. Run this command once: ```console - docker-compose exec app php artisan setup:production + docker compose exec app php artisan setup:production ``` ## Make Monica available from the internet @@ -267,7 +271,7 @@ One way to expose your Monica instance is to use a proxy webserver from your hos ### Using a proxy webserver container -See some examples of docker-compose possibilities in the [example section](https://github.com/monicahq/docker/blob/master/.examples) to show how to a proxy webserver with ssl capabilities. +See some examples of Docker Compose possibilities in the [example section](https://github.com/monicahq/docker/blob/main/.examples) to show how to a proxy webserver with ssl capabilities. # Image Variants diff --git a/monica/content.md b/monica/content.md index 5c5d7adb5708..4dacccf48275 100644 --- a/monica/content.md +++ b/monica/content.md @@ -30,7 +30,7 @@ docker run --name some-%%REPO%% -d -p 9000:9000 %%IMAGE%%:fpm ### Using an external database -You'll need to setup an external database. Monica currently support MySQL/MariaDB database. You can also link a database container, e. g. `--link my-mysql:db`, and then use `db` as the database host on setup. More info is in the docker-compose section. +You'll need to setup an external database. Monica currently support MySQL/MariaDB database. You can also link a database container, e. g. `--link my-mysql:db`, and then use `db` as the database host on setup. More info is in the Docker Compose section. ### Persistent data storage @@ -52,21 +52,21 @@ Like every Laravel application, the `php artisan` command is very usefull for Mo docker exec CONTAINER_ID php artisan COMMAND ``` -or for docker-compose +Or for Docker Compose: ```console -docker-compose exec %%REPO%% php artisan COMMAND +docker compose exec %%REPO%% php artisan COMMAND ``` -where `%%REPO%%` is the name of the service in your `docker-compose.yml` file. +where `%%REPO%%` is the name of the service in your `compose.yaml` file. ## Configuration using environment variables -The Monica image will use environment variables to setup the application. See [Monica documentation](https://github.com/monicahq/monica/blob/main/.env.example) for common used variables you should setup. +The Monica image will use environment variables to setup the application. See [Monica documentation](https://github.com/monicahq/monica/blob/4.x/.env.example) for common used variables you should setup. -## Running the image with docker-compose +## Running the image with Docker Compose -See some examples of docker-compose possibilities in the [example section](%%GITHUB-REPO%%/blob/master/.examples). +See some examples of Docker Compose possibilities in the [example section](%%GITHUB-REPO%%/blob/main/.examples). --- @@ -76,11 +76,9 @@ This version will use the apache image and add a mysql container. The volumes ar Make sure to pass in values for `APP_KEY` variable before you run this setup. -1. Create a `docker-compose.yml` file +1. Create a `compose.yaml` file ```yaml - version: "3.4" - services: app: image: monica @@ -89,7 +87,7 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. ports: - 8080:80 environment: - - APP_KEY= + - APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32` - DB_HOST=db - DB_USERNAME=monica - DB_PASSWORD=secret @@ -98,7 +96,7 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. restart: always db: - image: mysql:5.7 + image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica @@ -120,7 +118,7 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. 3. Run ```console - docker-compose up -d + docker compose up -d ``` Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account. @@ -128,35 +126,33 @@ Make sure to pass in values for `APP_KEY` variable before you run this setup. 4. Run this command once: ```console - docker-compose exec app php artisan setup:production + docker compose exec app php artisan setup:production ``` ### FPM version When using FPM image, you will need another container with a webserver to proxy http requests. In this example we use nginx with a basic container to do this. -1. Download `nginx.conf` and `Dockerfile` file for nginx image. An example can be found on the [`example section`](%%GITHUB-REPO%%/blob/master/.examples/supervisor/fpm/web/) +1. Download `nginx.conf` and `Dockerfile` file for nginx image. An example can be found on the [`example section`](%%GITHUB-REPO%%/blob/main/.examples/full/fpm/web/) ```sh mkdir web - curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/nginx.conf -o web/nginx.conf - curl -sSL https://raw.githubusercontent.com/monicahq/docker/master/.examples/nginx-proxy/web/Dockerfile -o web/Dockerfile + curl -sSL https://raw.githubusercontent.com/monicahq/docker/main/.examples/full/web/nginx.conf -o web/nginx.conf + curl -sSL https://raw.githubusercontent.com/monicahq/docker/main/.examples/full/web/Dockerfile -o web/Dockerfile ``` - The `web` container image should be pre-build before each deploy with: `docker-compose build`. + The `web` container image should be pre-build before each deploy with: `docker compose build`. -2. Create a `docker-compose.yml` file +2. Create a `compose.yaml` file ```yaml - version: "3.4" - services: app: image: monica:fpm depends_on: - db environment: - - APP_KEY= + - APP_KEY= # Generate with `echo -n 'base64:'; openssl rand -base64 32` - DB_HOST=db - DB_USERNAME=monica - DB_PASSWORD=secret @@ -175,7 +171,7 @@ When using FPM image, you will need another container with a webserver to proxy restart: always db: - image: mysql:5.7 + image: mariadb:11 environment: - MYSQL_RANDOM_ROOT_PASSWORD=true - MYSQL_DATABASE=monica @@ -197,7 +193,7 @@ When using FPM image, you will need another container with a webserver to proxy 4. Run ```console - docker-compose up -d + docker compose up -d ``` Wait until all migrations are done and then access Monica at http://localhost:8080/ from your host system. If this looks ok, add your first user account. @@ -205,7 +201,7 @@ When using FPM image, you will need another container with a webserver to proxy 5. Run this command once: ```console - docker-compose exec app php artisan setup:production + docker compose exec app php artisan setup:production ``` ## Make Monica available from the internet @@ -218,4 +214,4 @@ One way to expose your Monica instance is to use a proxy webserver from your hos ### Using a proxy webserver container -See some examples of docker-compose possibilities in the [example section](%%GITHUB-REPO%%/blob/master/.examples) to show how to a proxy webserver with ssl capabilities. +See some examples of Docker Compose possibilities in the [example section](%%GITHUB-REPO%%/blob/main/.examples) to show how to a proxy webserver with ssl capabilities. diff --git a/monica/metadata.json b/monica/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/monica/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/mono/README-short.txt b/mono/README-short.txt deleted file mode 100644 index 19bb0ad99d97..000000000000 --- a/mono/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Mono is an open source implementation of Microsoft's .NET Framework diff --git a/mono/README.md b/mono/README.md deleted file mode 100644 index 06c903957f0a..000000000000 --- a/mono/README.md +++ /dev/null @@ -1,104 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [the Mono Project](https://github.com/mono/docker) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -- [`6.12.0.182`, `latest`, `6.12.0`, `6.12`, `6`](https://github.com/mono/docker/blob/9293c0cddf31a3dc829fccc6f8e1eb507a91cd34/6.12.0.182/Dockerfile) -- [`6.12.0.182-slim`, `slim`, `6.12.0-slim`, `6.12-slim`, `6-slim`](https://github.com/mono/docker/blob/9293c0cddf31a3dc829fccc6f8e1eb507a91cd34/6.12.0.182/slim/Dockerfile) -- [`6.10.0.104`, `6.10.0`, `6.10`](https://github.com/mono/docker/blob/0403aaf506b8f6859332a5035f660a7a228d3a97/6.10.0.104/Dockerfile) -- [`6.10.0.104-slim`, `6.10.0-slim`, `6.10-slim`](https://github.com/mono/docker/blob/0403aaf506b8f6859332a5035f660a7a228d3a97/6.10.0.104/slim/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/mono/docker/issues](https://github.com/mono/docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/mono/), [`arm32v5`](https://hub.docker.com/r/arm32v5/mono/), [`arm32v7`](https://hub.docker.com/r/arm32v7/mono/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mono/), [`i386`](https://hub.docker.com/r/i386/mono/), [`ppc64le`](https://hub.docker.com/r/ppc64le/mono/) - -- **Published image artifact details**: - [repo-info repo's `repos/mono/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mono) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mono)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/mono` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmono) - [official-images repo's `library/mono` file](https://github.com/docker-library/official-images/blob/master/library/mono) ([history](https://github.com/docker-library/official-images/commits/master/library/mono)) - -- **Source of this description**: - [docs repo's `mono/` directory](https://github.com/docker-library/docs/tree/master/mono) ([history](https://github.com/docker-library/docs/commits/master/mono)) - -# What is Mono - -Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. A growing family of solutions and an active and enthusiastic contributing community is helping position Mono to become the leading choice for development of cross platform applications. - -- [Mono Project homepage](http://www.mono-project.com/) -- [http://en.wikipedia.org/wiki/Mono_(software)](http://en.wikipedia.org/wiki/Mono_%28software%29) - -![logo](https://raw.githubusercontent.com/docker-library/docs/7413e5cdbaae1016411b9fc20950dd913a799e2c/mono/logo.png) - -# How to use this image - -To run a pre-built .exe file with the Mono image, use the following commands: - -```dockerfile -FROM mono:latest -RUN mkdir /opt/app -COPY HelloWorld.exe /opt/app -CMD ["mono", "/opt/app/HelloWorld.exe"] -``` - -You can build and run the Docker Image as shown in the following example: - -```console -docker build -t monoapp . -docker run -it --rm monoapp -``` - -# Credits - -This Docker image is provided by Xamarin, for users of the Mono Project. - -Thanks to [Michael Friis](http://friism.com/) for his preliminary work. - -# Image Variants - -The `mono` images come in many flavors, each designed for a specific use case. - -## `mono:` - -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. - -## `mono:-slim` - -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `mono`. Unless you are working in an environment where *only* the `mono` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. - -# License - -This Docker Image is licensed with the Expat License. See the [Mono Project licensing FAQ](http://www.mono-project.com/docs/faq/licensing/) for details on how Mono and associated libraries are licensed. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `mono/` directory](https://github.com/docker-library/repo-info/tree/master/repos/mono). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/mono/content.md b/mono/content.md deleted file mode 100644 index 99510debf0df..000000000000 --- a/mono/content.md +++ /dev/null @@ -1,32 +0,0 @@ -# What is Mono - -Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET Framework based on the ECMA standards for C# and the Common Language Runtime. A growing family of solutions and an active and enthusiastic contributing community is helping position Mono to become the leading choice for development of cross platform applications. - -- [Mono Project homepage](http://www.mono-project.com/) -- [http://en.wikipedia.org/wiki/Mono_(software)](http://en.wikipedia.org/wiki/Mono_%28software%29) - -%%LOGO%% - -# How to use this image - -To run a pre-built .exe file with the Mono image, use the following commands: - -```dockerfile -FROM %%IMAGE%%:latest -RUN mkdir /opt/app -COPY HelloWorld.exe /opt/app -CMD ["mono", "/opt/app/HelloWorld.exe"] -``` - -You can build and run the Docker Image as shown in the following example: - -```console -docker build -t monoapp . -docker run -it --rm monoapp -``` - -# Credits - -This Docker image is provided by Xamarin, for users of the Mono Project. - -Thanks to [Michael Friis](http://friism.com/) for his preliminary work. diff --git a/mono/github-repo b/mono/github-repo deleted file mode 100644 index e4a96d7acea3..000000000000 --- a/mono/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/mono/docker diff --git a/mono/license.md b/mono/license.md deleted file mode 100644 index a9651a980813..000000000000 --- a/mono/license.md +++ /dev/null @@ -1 +0,0 @@ -This Docker Image is licensed with the Expat License. See the [Mono Project licensing FAQ](http://www.mono-project.com/docs/faq/licensing/) for details on how Mono and associated libraries are licensed. diff --git a/mono/logo.png b/mono/logo.png deleted file mode 100644 index 63a918e30083..000000000000 Binary files a/mono/logo.png and /dev/null differ diff --git a/mono/maintainer.md b/mono/maintainer.md deleted file mode 100644 index be6d91ba117c..000000000000 --- a/mono/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[the Mono Project](%%GITHUB-REPO%%) diff --git a/mysql/README.md b/mysql/README.md index e67f93378d89..65faffd1b567 100644 --- a/mysql/README.md +++ b/mysql/README.md @@ -24,15 +24,18 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.0.31`, `8.0`, `8`, `latest`, `8.0.31-oracle`, `8.0-oracle`, `8-oracle`, `oracle`](https://github.com/docker-library/mysql/blob/e0d43b2a29867c5b7d5c01a8fea30a086861df2b/8.0/Dockerfile.oracle) -- [`8.0.31-debian`, `8.0-debian`, `8-debian`, `debian`](https://github.com/docker-library/mysql/blob/e0d43b2a29867c5b7d5c01a8fea30a086861df2b/8.0/Dockerfile.debian) -- [`5.7.40`, `5.7`, `5`, `5.7.40-oracle`, `5.7-oracle`, `5-oracle`](https://github.com/docker-library/mysql/blob/e0d43b2a29867c5b7d5c01a8fea30a086861df2b/5.7/Dockerfile.oracle) -- [`5.7.40-debian`, `5.7-debian`, `5-debian`](https://github.com/docker-library/mysql/blob/e0d43b2a29867c5b7d5c01a8fea30a086861df2b/5.7/Dockerfile.debian) +- [`9.5.0`, `9.5`, `9`, `innovation`, `latest`, `9.5.0-oraclelinux9`, `9.5-oraclelinux9`, `9-oraclelinux9`, `innovation-oraclelinux9`, `oraclelinux9`, `9.5.0-oracle`, `9.5-oracle`, `9-oracle`, `innovation-oracle`, `oracle`](https://github.com/docker-library/mysql/blob/70c7d9777ced9f553109306404fe3c8700b3e9f7/innovation/Dockerfile.oracle) + +- [`8.4.7`, `8.4`, `8`, `lts`, `8.4.7-oraclelinux9`, `8.4-oraclelinux9`, `8-oraclelinux9`, `lts-oraclelinux9`, `8.4.7-oracle`, `8.4-oracle`, `8-oracle`, `lts-oracle`](https://github.com/docker-library/mysql/blob/ddb031e406121b1a298563775d521c044452a508/8.4/Dockerfile.oracle) + +- [`8.0.44`, `8.0`, `8.0.44-oraclelinux9`, `8.0-oraclelinux9`, `8.0.44-oracle`, `8.0-oracle`](https://github.com/docker-library/mysql/blob/ca7d66e7cb817097f7b3aec9497ba1ffcce230e7/8.0/Dockerfile.oracle) + +- [`8.0.44-bookworm`, `8.0-bookworm`, `8.0.44-debian`, `8.0-debian`](https://github.com/docker-library/mysql/blob/ca7d66e7cb817097f7b3aec9497ba1ffcce230e7/8.0/Dockerfile.debian) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/mysql/issues](https://github.com/docker-library/mysql/issues) + [https://github.com/docker-library/mysql/issues](https://github.com/docker-library/mysql/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/mysql/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mysql/) @@ -86,35 +89,24 @@ $ docker run -it --rm mysql mysql -hsome.mysql.host -usome-mysql-user -p More information about the MySQL command line client can be found in the [MySQL documentation](http://dev.mysql.com/doc/en/mysql.html) -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `mysql`: +Example `compose.yaml` for `mysql`: ```yaml # Use root/example as user/password credentials -version: '3.1' services: db: image: mysql - # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password - # (this is just an example, not intended to be a production configuration) - command: --default-authentication-plugin=mysql_native_password restart: always environment: MYSQL_ROOT_PASSWORD: example - - adminer: - image: adminer - restart: always - ports: - - 8080:8080 + # (this is just an example, not intended to be a production configuration) ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/06990e05c934d425c74addcc5ea462f53de6c8cd/mysql/stack.yml) - -Run `docker stack deploy -c stack.yml mysql` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Container shell access and viewing MySQL logs @@ -132,7 +124,13 @@ $ docker logs some-mysql ## Using a custom MySQL configuration file -The default configuration for MySQL can be found in `/etc/mysql/my.cnf`, which may `!includedir` additional directories such as `/etc/mysql/conf.d` or `/etc/mysql/mysql.conf.d`. Please inspect the relevant files and directories within the `mysql` image itself for more details. +The default configuration for MySQL varies depending on the base image: + +**Oracle-based images (default):** The default configuration is located at `/etc/my.cnf`, which may `!includedir` additional directories such as `/etc/mysql/conf.d`. + +**Debian-based MySQL 8 images:** The default configuration can be found in `/etc/mysql/my.cnf`, which may `!includedir` additional directories such as `/etc/mysql/conf.d`. + +Please inspect the relevant files and directories within the `mysql` image itself for more details. If `/my/custom/config-file.cnf` is the path and name of your custom configuration file, you can start your `mysql` container like this (note that only the directory path of the custom config file is used in this command): @@ -140,7 +138,7 @@ If `/my/custom/config-file.cnf` is the path and name of your custom configuratio $ docker run --name some-mysql -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag ``` -This will start a new container `some-mysql` where the MySQL instance uses the combined startup settings from `/etc/mysql/my.cnf` and `/etc/mysql/conf.d/config-file.cnf`, with settings from the latter taking precedence. +This will start a new container `some-mysql` where the MySQL instance uses the combined startup settings from the default configuration file and `/etc/mysql/conf.d/config-file.cnf`, with settings from the latter taking precedence. ### Configuration without a `cnf` file @@ -168,7 +166,7 @@ This variable is mandatory and specifies the password that will be set for the M ### `MYSQL_DATABASE` -This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](http://dev.mysql.com/doc/en/adding-users.html)) to this database. +This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](https://dev.mysql.com/doc/refman/en/creating-accounts.html)) to this database. ### `MYSQL_USER`, `MYSQL_PASSWORD` @@ -182,7 +180,7 @@ This is an optional variable. Set to a non-empty value, like `yes`, to allow the ### `MYSQL_RANDOM_ROOT_PASSWORD` -This is an optional variable. Set to a non-empty value, like `yes`, to generate a random initial password for the root user (using `pwgen`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). +This is an optional variable. Set to a non-empty value, like `yes`, to generate a random initial password for the root user (using `openssl`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). ### `MYSQL_ONETIME_PASSWORD` @@ -204,7 +202,9 @@ Currently, this is only supported for `MYSQL_ROOT_PASSWORD`, `MYSQL_ROOT_HOST`, # Initializing a fresh instance -When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. You can easily populate your `mysql` services by [mounting a SQL dump into that directory](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-file-as-a-data-volume) and provide [custom images](https://docs.docker.com/reference/builder/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. +When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.bz2`, `.sql.xz`, and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. When parsing `.sh` files without the execute bit set, they are `source`d rather than executed. + +You can easily populate your `mysql` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. # Caveats @@ -212,8 +212,8 @@ When a container is started for the first time, a new database with the specifie Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `mysql` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -228,7 +228,7 @@ The `-v /my/own/datadir:/var/lib/mysql` part of the command mounts the `/my/own/ ## No connections until MySQL init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as Docker Compose, which start several containers simultaneously. If the application you're trying to connect to MySQL does not handle MySQL downtime or waiting for MySQL to start gracefully, then putting a connect-retry loop before the service starts might be necessary. For an example of such an implementation in the official images, see [WordPress](https://github.com/docker-library/wordpress/blob/1b48b4bccd7adb0f7ea1431c7b470a40e186f3da/docker-entrypoint.sh#L195-L235) or [Bonita](https://github.com/docker-library/docs/blob/9660a0cccb87d8db842f33bc0578d769caaf3ba9/bonita/stack.yml#L28-L44). diff --git a/mysql/compose.yaml b/mysql/compose.yaml new file mode 100644 index 000000000000..28abad846d6d --- /dev/null +++ b/mysql/compose.yaml @@ -0,0 +1,10 @@ +# Use root/example as user/password credentials + +services: + + db: + image: mysql + restart: always + environment: + MYSQL_ROOT_PASSWORD: example + # (this is just an example, not intended to be a production configuration) diff --git a/mysql/content.md b/mysql/content.md index 1e05ae1a8a18..bb01851051bd 100644 --- a/mysql/content.md +++ b/mysql/content.md @@ -36,9 +36,9 @@ $ docker run -it --rm %%IMAGE%% mysql -hsome.mysql.host -usome-mysql-user -p More information about the MySQL command line client can be found in the [MySQL documentation](http://dev.mysql.com/doc/en/mysql.html) -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Container shell access and viewing MySQL logs @@ -56,7 +56,13 @@ $ docker logs some-%%REPO%% ## Using a custom MySQL configuration file -The default configuration for MySQL can be found in `/etc/mysql/my.cnf`, which may `!includedir` additional directories such as `/etc/mysql/conf.d` or `/etc/mysql/mysql.conf.d`. Please inspect the relevant files and directories within the `%%IMAGE%%` image itself for more details. +The default configuration for MySQL varies depending on the base image: + +**Oracle-based images (default):** The default configuration is located at `/etc/my.cnf`, which may `!includedir` additional directories such as `/etc/mysql/conf.d`. + +**Debian-based MySQL 8 images:** The default configuration can be found in `/etc/mysql/my.cnf`, which may `!includedir` additional directories such as `/etc/mysql/conf.d`. + +Please inspect the relevant files and directories within the `%%IMAGE%%` image itself for more details. If `/my/custom/config-file.cnf` is the path and name of your custom configuration file, you can start your `%%IMAGE%%` container like this (note that only the directory path of the custom config file is used in this command): @@ -64,7 +70,7 @@ If `/my/custom/config-file.cnf` is the path and name of your custom configuratio $ docker run --name some-%%REPO%% -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag ``` -This will start a new container `some-%%REPO%%` where the MySQL instance uses the combined startup settings from `/etc/mysql/my.cnf` and `/etc/mysql/conf.d/config-file.cnf`, with settings from the latter taking precedence. +This will start a new container `some-%%REPO%%` where the MySQL instance uses the combined startup settings from the default configuration file and `/etc/mysql/conf.d/config-file.cnf`, with settings from the latter taking precedence. ### Configuration without a `cnf` file @@ -92,7 +98,7 @@ This variable is mandatory and specifies the password that will be set for the M ### `MYSQL_DATABASE` -This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](http://dev.mysql.com/doc/en/adding-users.html)) to this database. +This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](https://dev.mysql.com/doc/refman/en/creating-accounts.html)) to this database. ### `MYSQL_USER`, `MYSQL_PASSWORD` @@ -106,7 +112,7 @@ This is an optional variable. Set to a non-empty value, like `yes`, to allow the ### `MYSQL_RANDOM_ROOT_PASSWORD` -This is an optional variable. Set to a non-empty value, like `yes`, to generate a random initial password for the root user (using `pwgen`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). +This is an optional variable. Set to a non-empty value, like `yes`, to generate a random initial password for the root user (using `openssl`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). ### `MYSQL_ONETIME_PASSWORD` @@ -128,7 +134,9 @@ Currently, this is only supported for `MYSQL_ROOT_PASSWORD`, `MYSQL_ROOT_HOST`, # Initializing a fresh instance -When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. You can easily populate your `%%IMAGE%%` services by [mounting a SQL dump into that directory](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-file-as-a-data-volume) and provide [custom images](https://docs.docker.com/reference/builder/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. +When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.bz2`, `.sql.xz`, and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. When parsing `.sh` files without the execute bit set, they are `source`d rather than executed. + +You can easily populate your `%%IMAGE%%` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. # Caveats @@ -136,8 +144,8 @@ When a container is started for the first time, a new database with the specifie Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%IMAGE%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -152,7 +160,7 @@ The `-v /my/own/datadir:/var/lib/mysql` part of the command mounts the `/my/own/ ## No connections until MySQL init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as Docker Compose, which start several containers simultaneously. If the application you're trying to connect to MySQL does not handle MySQL downtime or waiting for MySQL to start gracefully, then putting a connect-retry loop before the service starts might be necessary. For an example of such an implementation in the official images, see [WordPress](https://github.com/docker-library/wordpress/blob/1b48b4bccd7adb0f7ea1431c7b470a40e186f3da/docker-entrypoint.sh#L195-L235) or [Bonita](https://github.com/docker-library/docs/blob/9660a0cccb87d8db842f33bc0578d769caaf3ba9/bonita/stack.yml#L28-L44). diff --git a/mysql/metadata.json b/mysql/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/mysql/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/mysql/stack.yml b/mysql/stack.yml deleted file mode 100644 index ed16565b6311..000000000000 --- a/mysql/stack.yml +++ /dev/null @@ -1,19 +0,0 @@ -# Use root/example as user/password credentials -version: '3.1' - -services: - - db: - image: mysql - # NOTE: use of "mysql_native_password" is not recommended: https://dev.mysql.com/doc/refman/8.0/en/upgrading-from-previous-series.html#upgrade-caching-sha2-password - # (this is just an example, not intended to be a production configuration) - command: --default-authentication-plugin=mysql_native_password - restart: always - environment: - MYSQL_ROOT_PASSWORD: example - - adminer: - image: adminer - restart: always - ports: - - 8080:8080 diff --git a/nats-streaming/README-short.txt b/nats-streaming/README-short.txt deleted file mode 100644 index caea83c13a35..000000000000 --- a/nats-streaming/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -DEPRECATED; An open-source, high-performance, cloud native messaging streaming system. diff --git a/nats-streaming/README.md b/nats-streaming/README.md deleted file mode 100644 index bd372cbc7730..000000000000 --- a/nats-streaming/README.md +++ /dev/null @@ -1,382 +0,0 @@ - - -# **DEPRECATION NOTICE** - -The NATS Streaming Server is being deprecated. Critical bug fixes and security fixes will be applied until June of 2023. NATS enabled applications requiring persistence should use [JetStream](https://docs.nats.io/jetstream/jetstream). - -# Quick reference - -- **Maintained by**: - [the NATS Project](https://github.com/nats-io/nats-streaming-docker) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -(See ["What's the difference between 'Shared' and 'Simple' tags?" in the FAQ](https://github.com/docker-library/faq#whats-the-difference-between-shared-and-simple-tags).) - -## Simple Tags - -- [`0.25.3-alpine3.17`, `0.25-alpine3.17`, `alpine3.17`, `0.25.3-alpine`, `0.25-alpine`, `alpine`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/alpine3.17/Dockerfile) -- [`0.25.3-scratch`, `0.25-scratch`, `scratch`, `0.25.3-linux`, `0.25-linux`, `linux`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/scratch/Dockerfile) -- [`0.25.3-windowsservercore-1809`, `0.25-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/windowsservercore-1809/Dockerfile) -- [`0.25.3-nanoserver-1809`, `0.25-nanoserver-1809`, `nanoserver-1809`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/nanoserver-1809/Dockerfile) - -## Shared Tags - -- `0.25.3`, `0.25`, `latest`: - - [`0.25.3-scratch`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/scratch/Dockerfile) - - [`0.25.3-nanoserver-1809`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/nanoserver-1809/Dockerfile) -- `0.25.3-windowsservercore`, `0.25-windowsservercore`, `windowsservercore`: - - [`0.25.3-windowsservercore-1809`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/windowsservercore-1809/Dockerfile) -- `0.25.3-nanoserver`, `0.25-nanoserver`, `nanoserver`: - - [`0.25.3-nanoserver-1809`](https://github.com/nats-io/nats-streaming-docker/blob/03eccc22a9512d3f18b42db735e7acb7070a2293/0.25.3/nanoserver-1809/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/nats-io/nats-streaming-docker/issues](https://github.com/nats-io/nats-streaming-docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/nats-streaming/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nats-streaming/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nats-streaming/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nats-streaming/), [`windows-amd64`](https://hub.docker.com/r/winamd64/nats-streaming/) - -- **Published image artifact details**: - [repo-info repo's `repos/nats-streaming/` directory](https://github.com/docker-library/repo-info/blob/master/repos/nats-streaming) ([history](https://github.com/docker-library/repo-info/commits/master/repos/nats-streaming)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/nats-streaming` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnats-streaming) - [official-images repo's `library/nats-streaming` file](https://github.com/docker-library/official-images/blob/master/library/nats-streaming) ([history](https://github.com/docker-library/official-images/commits/master/library/nats-streaming)) - -- **Source of this description**: - [docs repo's `nats-streaming/` directory](https://github.com/docker-library/docs/tree/master/nats-streaming) ([history](https://github.com/docker-library/docs/commits/master/nats-streaming)) - -# [NATS Streaming](https://nats.io): A high-performance cloud native messaging streaming system. - -![logo](https://raw.githubusercontent.com/docker-library/docs/ad703934a62fabf54452755c8486698ff6fc5cc2/nats-streaming/logo.png) - -`nats-streaming` is a high performance streaming server for the NATS Messaging System. - -# Backward compatibility note - -Note that the Streaming server itself is backward compatible with previous releases, however, v0.15.0+ now embeds a NATS Server 2.0, which means that if you run with the embedded NATS server and want to route it to your existing v0.14.3- servers, it will fail due to NATS Server routing protocol change. You can however use v0.15.0+ and connect it to existing NATS cluster and therefore have a mix of v0.15.0 and v0.14.3- streaming servers. - -# Windows Docker images - -Due to restrictions on how the Windows Docker Image is built, running the image without argument will run the NATS Streaming server with memory based store on port 4222 and the monitoring port 8222. If you need to specify any additional argument, or modify these options, you need to specify the executable name as this: - -```bash -$ docker run -p 4223:4223 -p 8223:8223 nats-streaming nats-streaming-server -p 4223 -m 8223 -``` - -If you need to specify the entrypoint: - -```bash -$ docker run --entrypoint c:/nats-streaming-server/nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming -``` - -# Non Windows Docker images - -If you need to provide arguments to the NATS Streaming server, just pass them to the command line. For instance, to change the listen and monitoring port to 4223 and 8223 respectively: - -```bash -$ docker run -p 4223:4223 -p 8223:8223 nats-streaming -p 4223 -m 8223 -``` - -If you need to specify the entrypoint: - -```bash -$ docker run --entrypoint /nats-streaming-server -p 4222:4222 -p 8222:8222 nats-streaming -``` - -# Example usage - -```bash -# Run a NATS Streaming server -# Each server exposes multiple ports -# 4222 is for clients. -# 8222 is an HTTP management port for information reporting. -# -# To actually publish the ports when running the container, use the Docker port mapping -# flag "docker run -p :" to publish and map one or more ports, -# or the -P flag to publish all exposed ports and map them to high-order ports. -# -# This should not be confused with the NATS Streaming Server own -p parameter. -# For instance, to run the NATS Streaming Server and have it listen on port 4444, -# you would have to run like this: -# -# docker run -p 4444:4444 nats-streaming -p 4444 -# -# Or, if you want to publish the port 4444 as a different port, for example 5555: -# -# docker run -p 5555:4444 nats-streaming -p 4444 -# -# Check "docker run" for more information. - -$ docker run -d -p 4222:4222 -p 8222:8222 nats-streaming -``` - -Output that you would get if you had started with `-ti` instead of `d` (for daemon): - -```bash -[1] 2022/10/11 14:57:50.404688 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 -[1] 2022/10/11 14:57:50.404739 [INF] STREAM: ServerID: fbZJjwGYLBpNM5I8z23NSN -[1] 2022/10/11 14:57:50.404741 [INF] STREAM: Go version: go1.19.2 -[1] 2022/10/11 14:57:50.404743 [INF] STREAM: Git commit: [9e599667] -[1] 2022/10/11 14:57:50.406004 [INF] Starting nats-server -[1] 2022/10/11 14:57:50.406009 [INF] Version: 2.9.3 -[1] 2022/10/11 14:57:50.406011 [INF] Git: [25e82d7] -[1] 2022/10/11 14:57:50.406013 [INF] Name: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W -[1] 2022/10/11 14:57:50.406015 [INF] ID: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W -[1] 2022/10/11 14:57:50.406423 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2022/10/11 14:57:50.406679 [INF] Server is ready -[1] 2022/10/11 14:57:50.434935 [INF] STREAM: Recovering the state... -[1] 2022/10/11 14:57:50.434945 [INF] STREAM: No recovered state -[1] 2022/10/11 14:57:50.435271 [INF] STREAM: Message store is MEMORY -[1] 2022/10/11 14:57:50.435303 [INF] STREAM: ---------- Store Limits ---------- -[1] 2022/10/11 14:57:50.435306 [INF] STREAM: Channels: 100 * -[1] 2022/10/11 14:57:50.435308 [INF] STREAM: --------- Channels Limits -------- -[1] 2022/10/11 14:57:50.435310 [INF] STREAM: Subscriptions: 1000 * -[1] 2022/10/11 14:57:50.435311 [INF] STREAM: Messages : 1000000 * -[1] 2022/10/11 14:57:50.435313 [INF] STREAM: Bytes : 976.56 MB * -[1] 2022/10/11 14:57:50.435315 [INF] STREAM: Age : unlimited * -[1] 2022/10/11 14:57:50.435316 [INF] STREAM: Inactivity : unlimited * -[1] 2022/10/11 14:57:50.435318 [INF] STREAM: ---------------------------------- -[1] 2022/10/11 14:57:50.435320 [INF] STREAM: Streaming Server is ready -``` - -To use a file based store instead, you would run: - -```bash -$ docker run -d -p 4222:4222 -p 8222:8222 nats-streaming -store file -dir datastore - -[1] 2022/10/11 14:59:45.818823 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 -[1] 2022/10/11 14:59:45.818874 [INF] STREAM: ServerID: mNhpLEpCO6WFqrnD9CYEZa -[1] 2022/10/11 14:59:45.818876 [INF] STREAM: Go version: go1.19.2 -[1] 2022/10/11 14:59:45.818877 [INF] STREAM: Git commit: [9e599667] -[1] 2022/10/11 14:59:45.820192 [INF] Starting nats-server -[1] 2022/10/11 14:59:45.820196 [INF] Version: 2.9.3 -[1] 2022/10/11 14:59:45.820198 [INF] Git: [25e82d7] -[1] 2022/10/11 14:59:45.820200 [INF] Name: NCDMFFEVOSPVVGQZVEQ3O5434LHF2KAPOR5LKAI7YEIAFIABTHQLZRLA -[1] 2022/10/11 14:59:45.820202 [INF] ID: NCDMFFEVOSPVVGQZVEQ3O5434LHF2KAPOR5LKAI7YEIAFIABTHQLZRLA -[1] 2022/10/11 14:59:45.820688 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2022/10/11 14:59:45.820849 [INF] Server is ready -[1] 2022/10/11 14:59:45.848443 [INF] STREAM: Recovering the state... -[1] 2022/10/11 14:59:45.848737 [INF] STREAM: No recovered state -[1] 2022/10/11 14:59:45.849050 [INF] STREAM: Message store is FILE -[1] 2022/10/11 14:59:45.849054 [INF] STREAM: Store location: datastore -[1] 2022/10/11 14:59:45.849070 [INF] STREAM: ---------- Store Limits ---------- -[1] 2022/10/11 14:59:45.849072 [INF] STREAM: Channels: 100 * -[1] 2022/10/11 14:59:45.849073 [INF] STREAM: --------- Channels Limits -------- -[1] 2022/10/11 14:59:45.849075 [INF] STREAM: Subscriptions: 1000 * -[1] 2022/10/11 14:59:45.849076 [INF] STREAM: Messages : 1000000 * -[1] 2022/10/11 14:59:45.849077 [INF] STREAM: Bytes : 976.56 MB * -[1] 2022/10/11 14:59:45.849078 [INF] STREAM: Age : unlimited * -[1] 2022/10/11 14:59:45.849079 [INF] STREAM: Inactivity : unlimited * -[1] 2022/10/11 14:59:45.849080 [INF] STREAM: ---------------------------------- -[1] 2022/10/11 14:59:45.849082 [INF] STREAM: Streaming Server is ready -``` - -You can also connect to a remote NATS Server running in a docker image. First, run NATS Server: - -```bash -$ docker run -d --name=nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -``` - -Now, start the Streaming server and link it to the above docker image: - -```bash -$ docker run -d --link nats-main nats-streaming -store file -dir datastore -ns nats://nats-main:4222 - -[1] 2022/10/11 15:00:56.780184 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 -[1] 2022/10/11 15:00:56.780235 [INF] STREAM: ServerID: jVQkB4KiIN4IVIuVoSumE0 -[1] 2022/10/11 15:00:56.780237 [INF] STREAM: Go version: go1.19.2 -[1] 2022/10/11 15:00:56.780241 [INF] STREAM: Git commit: [9e599667] -[1] 2022/10/11 15:00:56.809173 [INF] STREAM: Recovering the state... -[1] 2022/10/11 15:00:56.810336 [INF] STREAM: Recovered 0 channel(s) -[1] 2022/10/11 15:00:56.810612 [INF] STREAM: Message store is FILE -[1] 2022/10/11 15:00:56.810617 [INF] STREAM: Store location: datastore -[1] 2022/10/11 15:00:56.810633 [INF] STREAM: ---------- Store Limits ---------- -[1] 2022/10/11 15:00:56.810635 [INF] STREAM: Channels: 100 * -[1] 2022/10/11 15:00:56.810636 [INF] STREAM: --------- Channels Limits -------- -[1] 2022/10/11 15:00:56.810637 [INF] STREAM: Subscriptions: 1000 * -[1] 2022/10/11 15:00:56.810639 [INF] STREAM: Messages : 1000000 * -[1] 2022/10/11 15:00:56.810640 [INF] STREAM: Bytes : 976.56 MB * -[1] 2022/10/11 15:00:56.810641 [INF] STREAM: Age : unlimited * -[1] 2022/10/11 15:00:56.810642 [INF] STREAM: Inactivity : unlimited * -[1] 2022/10/11 15:00:56.810643 [INF] STREAM: ---------------------------------- -[1] 2022/10/11 15:00:56.810644 [INF] STREAM: Streaming Server is ready -``` - -Notice that the output shows that the NATS Server was not started, as opposed to the first output. - -# Commandline Options - -```bash -Streaming Server Options: - -cid, --cluster_id Cluster ID (default: test-cluster) - -st, --store Store type: MEMORY|FILE|SQL (default: MEMORY) - --dir For FILE store type, this is the root directory - -mc, --max_channels Max number of channels (0 for unlimited) - -msu, --max_subs Max number of subscriptions per channel (0 for unlimited) - -mm, --max_msgs Max number of messages per channel (0 for unlimited) - -mb, --max_bytes Max messages total size per channel (0 for unlimited) - -ma, --max_age Max duration a message can be stored ("0s" for unlimited) - -mi, --max_inactivity Max inactivity (no new message, no subscription) after which a channel can be garbage collected (0 for unlimited) - -ns, --nats_server Connect to this external NATS Server URL (embedded otherwise) - -sc, --stan_config Streaming server configuration file - -hbi, --hb_interval Interval at which server sends heartbeat to a client - -hbt, --hb_timeout How long server waits for a heartbeat response - -hbf, --hb_fail_count Number of failed heartbeats before server closes the client connection - --ft_group Name of the FT Group. A group can be 2 or more servers with a single active server and all sharing the same datastore - -sl, --signal [=] Send signal to nats-streaming-server process (stop, quit, reopen, reload - only for embedded NATS Server) - --encrypt Specify if server should use encryption at rest - --encryption_cipher Cipher to use for encryption. Currently support AES and CHAHA (ChaChaPoly). Defaults to AES - --encryption_key Encryption Key. It is recommended to specify it through the NATS_STREAMING_ENCRYPTION_KEY environment variable instead - --replace_durable Replace the existing durable subscription instead of reporting a duplicate durable error - -Streaming Server Clustering Options: - --clustered Run the server in a clustered configuration (default: false) - --cluster_node_id ID of the node within the cluster if there is no stored ID (default: random UUID) - --cluster_bootstrap Bootstrap the cluster if there is no existing state by electing self as leader (default: false) - --cluster_peers Comma separated list of cluster peer node IDs to bootstrap cluster state - --cluster_log_path Directory to store log replication data - --cluster_log_cache_size Number of log entries to cache in memory to reduce disk IO (default: 512) - --cluster_log_snapshots Number of log snapshots to retain (default: 2) - --cluster_trailing_logs Number of log entries to leave after a snapshot and compaction - --cluster_sync Do a file sync after every write to the replication log and message store - --cluster_raft_logging Enable logging from the Raft library (disabled by default) - --cluster_allow_add_remove_node Enable the ability to send NATS requests to the leader to add/remove cluster nodes - -Streaming Server File Store Options: - --file_compact_enabled Enable file compaction - --file_compact_frag File fragmentation threshold for compaction - --file_compact_interval Minimum interval (in seconds) between file compactions - --file_compact_min_size Minimum file size for compaction - --file_buffer_size File buffer size (in bytes) - --file_crc Enable file CRC-32 checksum - --file_crc_poly Polynomial used to make the table used for CRC-32 checksum - --file_sync Enable File.Sync on Flush - --file_slice_max_msgs Maximum number of messages per file slice (subject to channel limits) - --file_slice_max_bytes Maximum file slice size - including index file (subject to channel limits) - --file_slice_max_age Maximum file slice duration starting when the first message is stored (subject to channel limits) - --file_slice_archive_script Path to script to use if you want to archive a file slice being removed - --file_fds_limit Store will try to use no more file descriptors than this given limit - --file_parallel_recovery On startup, number of channels that can be recovered in parallel - --file_truncate_bad_eof Truncate files for which there is an unexpected EOF on recovery, dataloss may occur - --file_read_buffer_size Size of messages read ahead buffer (0 to disable) - --file_auto_sync Interval at which the store should be automatically flushed and sync'ed on disk (<= 0 to disable) - -Streaming Server SQL Store Options: - --sql_driver Name of the SQL Driver ("mysql" or "postgres") - --sql_source Datasource used when opening an SQL connection to the database - --sql_no_caching Enable/Disable caching for improved performance - --sql_max_open_conns Maximum number of opened connections to the database - --sql_bulk_insert_limit Maximum number of messages stored with a single SQL "INSERT" statement - -Streaming Server TLS Options: - -secure Use a TLS connection to the NATS server without - verification; weaker than specifying certificates. - -tls_client_key Client key for the streaming server - -tls_client_cert Client certificate for the streaming server - -tls_client_cacert Client certificate CA for the streaming server - -Streaming Server Logging Options: - -SD, --stan_debug= Enable STAN debugging output - -SV, --stan_trace= Trace the raw STAN protocol - -SDV Debug and trace STAN - --syslog_name On Windows, when running several servers as a service, use this name for the event source - (See additional NATS logging options below) - -Embedded NATS Server Options: - -a, --addr Bind to host address (default: 0.0.0.0) - -p, --port Use port for clients (default: 4222) - -P, --pid File to store PID - -m, --http_port Use port for http monitoring - -ms,--https_port Use port for https monitoring - -c, --config Configuration file - -Logging Options: - -l, --log File to redirect log output - -T, --logtime= Timestamp log entries (default: true) - -s, --syslog Enable syslog as log method - -r, --remote_syslog Syslog server addr (udp://localhost:514) - -D, --debug= Enable debugging output - -V, --trace= Trace the raw protocol - -DV Debug and trace - -Authorization Options: - --user User required for connections - --pass Password required for connections - --auth Authorization token required for connections - -TLS Options: - --tls= Enable TLS, do not verify clients (default: false) - --tlscert Server certificate file - --tlskey Private key for server certificate - --tlsverify= Enable TLS, verify client certificates - --tlscacert Client certificate CA for verification - -NATS Clustering Options: - --routes Routes to solicit and connect - --cluster Cluster URL for solicited routes - -Common Options: - -h, --help Show this message - -v, --version Show version - --help_tls TLS help. -``` - -# Configuration - -Details on how to configure further the NATS Streaming server can be found [here](https://docs.nats.io/nats-streaming-server/configuring) - -# Image Variants - -The `nats-streaming` images come in many flavors, each designed for a specific use case. - -## `nats-streaming:` - -This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. - -## `nats-streaming:-alpine` - -This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. - -This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images. - -To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). - -## `nats-streaming:-windowsservercore` - -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. - -For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: - -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) - -# License - -View [license information](https://github.com/nats-io/nats-streaming-server/blob/master/LICENSE) for the software contained in this image. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `nats-streaming/` directory](https://github.com/docker-library/repo-info/tree/master/repos/nats-streaming). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/nats-streaming/content.md b/nats-streaming/content.md deleted file mode 100644 index 0545e41334ee..000000000000 --- a/nats-streaming/content.md +++ /dev/null @@ -1,279 +0,0 @@ -# [NATS Streaming](https://nats.io): A high-performance cloud native messaging streaming system. - -%%LOGO%% - -`nats-streaming` is a high performance streaming server for the NATS Messaging System. - -# Backward compatibility note - -Note that the Streaming server itself is backward compatible with previous releases, however, v0.15.0+ now embeds a NATS Server 2.0, which means that if you run with the embedded NATS server and want to route it to your existing v0.14.3- servers, it will fail due to NATS Server routing protocol change. You can however use v0.15.0+ and connect it to existing NATS cluster and therefore have a mix of v0.15.0 and v0.14.3- streaming servers. - -# Windows Docker images - -Due to restrictions on how the Windows Docker Image is built, running the image without argument will run the NATS Streaming server with memory based store on port 4222 and the monitoring port 8222. If you need to specify any additional argument, or modify these options, you need to specify the executable name as this: - -```bash -$ docker run -p 4223:4223 -p 8223:8223 %%IMAGE%% nats-streaming-server -p 4223 -m 8223 -``` - -If you need to specify the entrypoint: - -```bash -$ docker run --entrypoint c:/nats-streaming-server/nats-streaming-server -p 4222:4222 -p 8222:8222 %%IMAGE%% -``` - -# Non Windows Docker images - -If you need to provide arguments to the NATS Streaming server, just pass them to the command line. For instance, to change the listen and monitoring port to 4223 and 8223 respectively: - -```bash -$ docker run -p 4223:4223 -p 8223:8223 %%IMAGE%% -p 4223 -m 8223 -``` - -If you need to specify the entrypoint: - -```bash -$ docker run --entrypoint /nats-streaming-server -p 4222:4222 -p 8222:8222 %%IMAGE%% -``` - -# Example usage - -```bash -# Run a NATS Streaming server -# Each server exposes multiple ports -# 4222 is for clients. -# 8222 is an HTTP management port for information reporting. -# -# To actually publish the ports when running the container, use the Docker port mapping -# flag "docker run -p :" to publish and map one or more ports, -# or the -P flag to publish all exposed ports and map them to high-order ports. -# -# This should not be confused with the NATS Streaming Server own -p parameter. -# For instance, to run the NATS Streaming Server and have it listen on port 4444, -# you would have to run like this: -# -# docker run -p 4444:4444 %%IMAGE%% -p 4444 -# -# Or, if you want to publish the port 4444 as a different port, for example 5555: -# -# docker run -p 5555:4444 %%IMAGE%% -p 4444 -# -# Check "docker run" for more information. - -$ docker run -d -p 4222:4222 -p 8222:8222 %%IMAGE%% -``` - -Output that you would get if you had started with `-ti` instead of `d` (for daemon): - -```bash -[1] 2022/10/11 14:57:50.404688 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 -[1] 2022/10/11 14:57:50.404739 [INF] STREAM: ServerID: fbZJjwGYLBpNM5I8z23NSN -[1] 2022/10/11 14:57:50.404741 [INF] STREAM: Go version: go1.19.2 -[1] 2022/10/11 14:57:50.404743 [INF] STREAM: Git commit: [9e599667] -[1] 2022/10/11 14:57:50.406004 [INF] Starting nats-server -[1] 2022/10/11 14:57:50.406009 [INF] Version: 2.9.3 -[1] 2022/10/11 14:57:50.406011 [INF] Git: [25e82d7] -[1] 2022/10/11 14:57:50.406013 [INF] Name: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W -[1] 2022/10/11 14:57:50.406015 [INF] ID: NDQOBTB34ECZWAKAJAREPEXQPXGKUEJEZINCHV2CIHGGJQCSCVPQPU5W -[1] 2022/10/11 14:57:50.406423 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2022/10/11 14:57:50.406679 [INF] Server is ready -[1] 2022/10/11 14:57:50.434935 [INF] STREAM: Recovering the state... -[1] 2022/10/11 14:57:50.434945 [INF] STREAM: No recovered state -[1] 2022/10/11 14:57:50.435271 [INF] STREAM: Message store is MEMORY -[1] 2022/10/11 14:57:50.435303 [INF] STREAM: ---------- Store Limits ---------- -[1] 2022/10/11 14:57:50.435306 [INF] STREAM: Channels: 100 * -[1] 2022/10/11 14:57:50.435308 [INF] STREAM: --------- Channels Limits -------- -[1] 2022/10/11 14:57:50.435310 [INF] STREAM: Subscriptions: 1000 * -[1] 2022/10/11 14:57:50.435311 [INF] STREAM: Messages : 1000000 * -[1] 2022/10/11 14:57:50.435313 [INF] STREAM: Bytes : 976.56 MB * -[1] 2022/10/11 14:57:50.435315 [INF] STREAM: Age : unlimited * -[1] 2022/10/11 14:57:50.435316 [INF] STREAM: Inactivity : unlimited * -[1] 2022/10/11 14:57:50.435318 [INF] STREAM: ---------------------------------- -[1] 2022/10/11 14:57:50.435320 [INF] STREAM: Streaming Server is ready -``` - -To use a file based store instead, you would run: - -```bash -$ docker run -d -p 4222:4222 -p 8222:8222 %%IMAGE%% -store file -dir datastore - -[1] 2022/10/11 14:59:45.818823 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 -[1] 2022/10/11 14:59:45.818874 [INF] STREAM: ServerID: mNhpLEpCO6WFqrnD9CYEZa -[1] 2022/10/11 14:59:45.818876 [INF] STREAM: Go version: go1.19.2 -[1] 2022/10/11 14:59:45.818877 [INF] STREAM: Git commit: [9e599667] -[1] 2022/10/11 14:59:45.820192 [INF] Starting nats-server -[1] 2022/10/11 14:59:45.820196 [INF] Version: 2.9.3 -[1] 2022/10/11 14:59:45.820198 [INF] Git: [25e82d7] -[1] 2022/10/11 14:59:45.820200 [INF] Name: NCDMFFEVOSPVVGQZVEQ3O5434LHF2KAPOR5LKAI7YEIAFIABTHQLZRLA -[1] 2022/10/11 14:59:45.820202 [INF] ID: NCDMFFEVOSPVVGQZVEQ3O5434LHF2KAPOR5LKAI7YEIAFIABTHQLZRLA -[1] 2022/10/11 14:59:45.820688 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2022/10/11 14:59:45.820849 [INF] Server is ready -[1] 2022/10/11 14:59:45.848443 [INF] STREAM: Recovering the state... -[1] 2022/10/11 14:59:45.848737 [INF] STREAM: No recovered state -[1] 2022/10/11 14:59:45.849050 [INF] STREAM: Message store is FILE -[1] 2022/10/11 14:59:45.849054 [INF] STREAM: Store location: datastore -[1] 2022/10/11 14:59:45.849070 [INF] STREAM: ---------- Store Limits ---------- -[1] 2022/10/11 14:59:45.849072 [INF] STREAM: Channels: 100 * -[1] 2022/10/11 14:59:45.849073 [INF] STREAM: --------- Channels Limits -------- -[1] 2022/10/11 14:59:45.849075 [INF] STREAM: Subscriptions: 1000 * -[1] 2022/10/11 14:59:45.849076 [INF] STREAM: Messages : 1000000 * -[1] 2022/10/11 14:59:45.849077 [INF] STREAM: Bytes : 976.56 MB * -[1] 2022/10/11 14:59:45.849078 [INF] STREAM: Age : unlimited * -[1] 2022/10/11 14:59:45.849079 [INF] STREAM: Inactivity : unlimited * -[1] 2022/10/11 14:59:45.849080 [INF] STREAM: ---------------------------------- -[1] 2022/10/11 14:59:45.849082 [INF] STREAM: Streaming Server is ready -``` - -You can also connect to a remote NATS Server running in a docker image. First, run NATS Server: - -```bash -$ docker run -d --name=nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -``` - -Now, start the Streaming server and link it to the above docker image: - -```bash -$ docker run -d --link nats-main %%IMAGE%% -store file -dir datastore -ns nats://nats-main:4222 - -[1] 2022/10/11 15:00:56.780184 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.25.2 -[1] 2022/10/11 15:00:56.780235 [INF] STREAM: ServerID: jVQkB4KiIN4IVIuVoSumE0 -[1] 2022/10/11 15:00:56.780237 [INF] STREAM: Go version: go1.19.2 -[1] 2022/10/11 15:00:56.780241 [INF] STREAM: Git commit: [9e599667] -[1] 2022/10/11 15:00:56.809173 [INF] STREAM: Recovering the state... -[1] 2022/10/11 15:00:56.810336 [INF] STREAM: Recovered 0 channel(s) -[1] 2022/10/11 15:00:56.810612 [INF] STREAM: Message store is FILE -[1] 2022/10/11 15:00:56.810617 [INF] STREAM: Store location: datastore -[1] 2022/10/11 15:00:56.810633 [INF] STREAM: ---------- Store Limits ---------- -[1] 2022/10/11 15:00:56.810635 [INF] STREAM: Channels: 100 * -[1] 2022/10/11 15:00:56.810636 [INF] STREAM: --------- Channels Limits -------- -[1] 2022/10/11 15:00:56.810637 [INF] STREAM: Subscriptions: 1000 * -[1] 2022/10/11 15:00:56.810639 [INF] STREAM: Messages : 1000000 * -[1] 2022/10/11 15:00:56.810640 [INF] STREAM: Bytes : 976.56 MB * -[1] 2022/10/11 15:00:56.810641 [INF] STREAM: Age : unlimited * -[1] 2022/10/11 15:00:56.810642 [INF] STREAM: Inactivity : unlimited * -[1] 2022/10/11 15:00:56.810643 [INF] STREAM: ---------------------------------- -[1] 2022/10/11 15:00:56.810644 [INF] STREAM: Streaming Server is ready -``` - -Notice that the output shows that the NATS Server was not started, as opposed to the first output. - -# Commandline Options - -```bash -Streaming Server Options: - -cid, --cluster_id Cluster ID (default: test-cluster) - -st, --store Store type: MEMORY|FILE|SQL (default: MEMORY) - --dir For FILE store type, this is the root directory - -mc, --max_channels Max number of channels (0 for unlimited) - -msu, --max_subs Max number of subscriptions per channel (0 for unlimited) - -mm, --max_msgs Max number of messages per channel (0 for unlimited) - -mb, --max_bytes Max messages total size per channel (0 for unlimited) - -ma, --max_age Max duration a message can be stored ("0s" for unlimited) - -mi, --max_inactivity Max inactivity (no new message, no subscription) after which a channel can be garbage collected (0 for unlimited) - -ns, --nats_server Connect to this external NATS Server URL (embedded otherwise) - -sc, --stan_config Streaming server configuration file - -hbi, --hb_interval Interval at which server sends heartbeat to a client - -hbt, --hb_timeout How long server waits for a heartbeat response - -hbf, --hb_fail_count Number of failed heartbeats before server closes the client connection - --ft_group Name of the FT Group. A group can be 2 or more servers with a single active server and all sharing the same datastore - -sl, --signal [=] Send signal to nats-streaming-server process (stop, quit, reopen, reload - only for embedded NATS Server) - --encrypt Specify if server should use encryption at rest - --encryption_cipher Cipher to use for encryption. Currently support AES and CHAHA (ChaChaPoly). Defaults to AES - --encryption_key Encryption Key. It is recommended to specify it through the NATS_STREAMING_ENCRYPTION_KEY environment variable instead - --replace_durable Replace the existing durable subscription instead of reporting a duplicate durable error - -Streaming Server Clustering Options: - --clustered Run the server in a clustered configuration (default: false) - --cluster_node_id ID of the node within the cluster if there is no stored ID (default: random UUID) - --cluster_bootstrap Bootstrap the cluster if there is no existing state by electing self as leader (default: false) - --cluster_peers Comma separated list of cluster peer node IDs to bootstrap cluster state - --cluster_log_path Directory to store log replication data - --cluster_log_cache_size Number of log entries to cache in memory to reduce disk IO (default: 512) - --cluster_log_snapshots Number of log snapshots to retain (default: 2) - --cluster_trailing_logs Number of log entries to leave after a snapshot and compaction - --cluster_sync Do a file sync after every write to the replication log and message store - --cluster_raft_logging Enable logging from the Raft library (disabled by default) - --cluster_allow_add_remove_node Enable the ability to send NATS requests to the leader to add/remove cluster nodes - -Streaming Server File Store Options: - --file_compact_enabled Enable file compaction - --file_compact_frag File fragmentation threshold for compaction - --file_compact_interval Minimum interval (in seconds) between file compactions - --file_compact_min_size Minimum file size for compaction - --file_buffer_size File buffer size (in bytes) - --file_crc Enable file CRC-32 checksum - --file_crc_poly Polynomial used to make the table used for CRC-32 checksum - --file_sync Enable File.Sync on Flush - --file_slice_max_msgs Maximum number of messages per file slice (subject to channel limits) - --file_slice_max_bytes Maximum file slice size - including index file (subject to channel limits) - --file_slice_max_age Maximum file slice duration starting when the first message is stored (subject to channel limits) - --file_slice_archive_script Path to script to use if you want to archive a file slice being removed - --file_fds_limit Store will try to use no more file descriptors than this given limit - --file_parallel_recovery On startup, number of channels that can be recovered in parallel - --file_truncate_bad_eof Truncate files for which there is an unexpected EOF on recovery, dataloss may occur - --file_read_buffer_size Size of messages read ahead buffer (0 to disable) - --file_auto_sync Interval at which the store should be automatically flushed and sync'ed on disk (<= 0 to disable) - -Streaming Server SQL Store Options: - --sql_driver Name of the SQL Driver ("mysql" or "postgres") - --sql_source Datasource used when opening an SQL connection to the database - --sql_no_caching Enable/Disable caching for improved performance - --sql_max_open_conns Maximum number of opened connections to the database - --sql_bulk_insert_limit Maximum number of messages stored with a single SQL "INSERT" statement - -Streaming Server TLS Options: - -secure Use a TLS connection to the NATS server without - verification; weaker than specifying certificates. - -tls_client_key Client key for the streaming server - -tls_client_cert Client certificate for the streaming server - -tls_client_cacert Client certificate CA for the streaming server - -Streaming Server Logging Options: - -SD, --stan_debug= Enable STAN debugging output - -SV, --stan_trace= Trace the raw STAN protocol - -SDV Debug and trace STAN - --syslog_name On Windows, when running several servers as a service, use this name for the event source - (See additional NATS logging options below) - -Embedded NATS Server Options: - -a, --addr Bind to host address (default: 0.0.0.0) - -p, --port Use port for clients (default: 4222) - -P, --pid File to store PID - -m, --http_port Use port for http monitoring - -ms,--https_port Use port for https monitoring - -c, --config Configuration file - -Logging Options: - -l, --log File to redirect log output - -T, --logtime= Timestamp log entries (default: true) - -s, --syslog Enable syslog as log method - -r, --remote_syslog Syslog server addr (udp://localhost:514) - -D, --debug= Enable debugging output - -V, --trace= Trace the raw protocol - -DV Debug and trace - -Authorization Options: - --user User required for connections - --pass Password required for connections - --auth Authorization token required for connections - -TLS Options: - --tls= Enable TLS, do not verify clients (default: false) - --tlscert Server certificate file - --tlskey Private key for server certificate - --tlsverify= Enable TLS, verify client certificates - --tlscacert Client certificate CA for verification - -NATS Clustering Options: - --routes Routes to solicit and connect - --cluster Cluster URL for solicited routes - -Common Options: - -h, --help Show this message - -v, --version Show version - --help_tls TLS help. -``` - -# Configuration - -Details on how to configure further the NATS Streaming server can be found [here](https://docs.nats.io/nats-streaming-server/configuring) diff --git a/nats-streaming/deprecated.md b/nats-streaming/deprecated.md deleted file mode 100644 index db266bd8ecad..000000000000 --- a/nats-streaming/deprecated.md +++ /dev/null @@ -1 +0,0 @@ -The NATS Streaming Server is being deprecated. Critical bug fixes and security fixes will be applied until June of 2023. NATS enabled applications requiring persistence should use [JetStream](https://docs.nats.io/jetstream/jetstream). diff --git a/nats-streaming/github-repo b/nats-streaming/github-repo deleted file mode 100644 index a585949191c7..000000000000 --- a/nats-streaming/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/nats-io/nats-streaming-docker diff --git a/nats-streaming/license.md b/nats-streaming/license.md deleted file mode 100644 index 316d32e6bf65..000000000000 --- a/nats-streaming/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://github.com/nats-io/nats-streaming-server/blob/master/LICENSE) for the software contained in this image. diff --git a/nats-streaming/logo.png b/nats-streaming/logo.png deleted file mode 100644 index 384aab597c7d..000000000000 Binary files a/nats-streaming/logo.png and /dev/null differ diff --git a/nats-streaming/maintainer.md b/nats-streaming/maintainer.md deleted file mode 120000 index c91a297fdd04..000000000000 --- a/nats-streaming/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../nats/maintainer.md \ No newline at end of file diff --git a/nats/README.md b/nats/README.md index 6fc68b71b404..3c4ef6b66b03 100644 --- a/nats/README.md +++ b/nats/README.md @@ -28,28 +28,78 @@ WARNING: ## Simple Tags -- [`2.9.11-alpine3.17`, `2.9-alpine3.17`, `2-alpine3.17`, `alpine3.17`, `2.9.11-alpine`, `2.9-alpine`, `2-alpine`, `alpine`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/alpine3.17/Dockerfile) -- [`2.9.11-scratch`, `2.9-scratch`, `2-scratch`, `scratch`, `2.9.11-linux`, `2.9-linux`, `2-linux`, `linux`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/scratch/Dockerfile) -- [`2.9.11-windowsservercore-1809`, `2.9-windowsservercore-1809`, `2-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/windowsservercore-1809/Dockerfile) -- [`2.9.11-nanoserver-1809`, `2.9-nanoserver-1809`, `2-nanoserver-1809`, `nanoserver-1809`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/nanoserver-1809/Dockerfile) +- [`2.12.2-alpine3.22`, `2.12-alpine3.22`, `2-alpine3.22`, `alpine3.22`, `2.12.2-alpine`, `2.12-alpine`, `2-alpine`, `alpine`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/alpine3.22/Dockerfile) + +- [`2.12.2-scratch`, `2.12-scratch`, `2-scratch`, `scratch`, `2.12.2-linux`, `2.12-linux`, `2-linux`, `linux`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/scratch/Dockerfile) + +- [`2.12.2-windowsservercore-ltsc2022`, `2.12-windowsservercore-ltsc2022`, `2-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/windowsservercore-ltsc2022/Dockerfile) + +- [`2.12.2-nanoserver-ltsc2022`, `2.12-nanoserver-ltsc2022`, `2-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/nanoserver-ltsc2022/Dockerfile) + +- [`2.11.11-alpine3.22`, `2.11-alpine3.22`, `2.11.11-alpine`, `2.11-alpine`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/alpine3.22/Dockerfile) + +- [`2.11.11-scratch`, `2.11-scratch`, `2.11.11-linux`, `2.11-linux`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/scratch/Dockerfile) + +- [`2.11.11-windowsservercore-ltsc2022`, `2.11-windowsservercore-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/windowsservercore-ltsc2022/Dockerfile) + +- [`2.11.11-nanoserver-ltsc2022`, `2.11-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/nanoserver-ltsc2022/Dockerfile) + +- [`2.10.29-alpine3.22`, `2.10-alpine3.22`, `2.10.29-alpine`, `2.10-alpine`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/alpine3.22/Dockerfile) + +- [`2.10.29-scratch`, `2.10-scratch`, `2.10.29-linux`, `2.10-linux`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/scratch/Dockerfile) + +- [`2.10.29-windowsservercore-ltsc2022`, `2.10-windowsservercore-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/windowsservercore-ltsc2022/Dockerfile) + +- [`2.10.29-nanoserver-ltsc2022`, `2.10-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/nanoserver-ltsc2022/Dockerfile) ## Shared Tags -- `2.9.11`, `2.9`, `2`, `latest`: - - [`2.9.11-scratch`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/scratch/Dockerfile) - - [`2.9.11-nanoserver-1809`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/nanoserver-1809/Dockerfile) -- `2.9.11-windowsservercore`, `2.9-windowsservercore`, `2-windowsservercore`, `windowsservercore`: - - [`2.9.11-windowsservercore-1809`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/windowsservercore-1809/Dockerfile) -- `2.9.11-nanoserver`, `2.9-nanoserver`, `2-nanoserver`, `nanoserver`: - - [`2.9.11-nanoserver-1809`](https://github.com/nats-io/nats-docker/blob/c17a8a1db7e3c98687bfacb1a2ba7a92753d5127/2.9.11/nanoserver-1809/Dockerfile) +- `2.12.2`, `2.12`, `2`, `latest`: + + - [`2.12.2-scratch`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/scratch/Dockerfile) + - [`2.12.2-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/nanoserver-ltsc2022/Dockerfile) + +- `2.12.2-windowsservercore`, `2.12-windowsservercore`, `2-windowsservercore`, `windowsservercore`: + + - [`2.12.2-windowsservercore-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/windowsservercore-ltsc2022/Dockerfile) + +- `2.12.2-nanoserver`, `2.12-nanoserver`, `2-nanoserver`, `nanoserver`: + + - [`2.12.2-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.12.x/nanoserver-ltsc2022/Dockerfile) + +- `2.11.11`, `2.11`: + + - [`2.11.11-scratch`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/scratch/Dockerfile) + - [`2.11.11-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/nanoserver-ltsc2022/Dockerfile) + +- `2.11.11-windowsservercore`, `2.11-windowsservercore`: + + - [`2.11.11-windowsservercore-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/windowsservercore-ltsc2022/Dockerfile) + +- `2.11.11-nanoserver`, `2.11-nanoserver`: + + - [`2.11.11-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.11.x/nanoserver-ltsc2022/Dockerfile) + +- `2.10.29`, `2.10`: + + - [`2.10.29-scratch`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/scratch/Dockerfile) + - [`2.10.29-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/nanoserver-ltsc2022/Dockerfile) + +- `2.10.29-windowsservercore`, `2.10-windowsservercore`: + + - [`2.10.29-windowsservercore-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/windowsservercore-ltsc2022/Dockerfile) + +- `2.10.29-nanoserver`, `2.10-nanoserver`: + + - [`2.10.29-nanoserver-ltsc2022`](https://github.com/nats-io/nats-docker/blob/d13c9f965b5e263021fa70467e78c14fe1d271dc/2.10.x/nanoserver-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/nats-io/nats-docker/issues](https://github.com/nats-io/nats-docker/issues) + [https://github.com/nats-io/nats-docker/issues](https://github.com/nats-io/nats-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/nats/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nats/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nats/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nats/), [`windows-amd64`](https://hub.docker.com/r/winamd64/nats/) + [`amd64`](https://hub.docker.com/r/amd64/nats/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nats/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nats/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nats/), [`ppc64le`](https://hub.docker.com/r/ppc64le/nats/), [`s390x`](https://hub.docker.com/r/s390x/nats/), [`windows-amd64`](https://hub.docker.com/r/winamd64/nats/) - **Published image artifact details**: [repo-info repo's `repos/nats/` directory](https://github.com/docker-library/repo-info/blob/master/repos/nats) ([history](https://github.com/docker-library/repo-info/commits/master/repos/nats)) @@ -91,6 +141,15 @@ WARNING: # # docker run -p 5555:4444 nats -p 4444 # +# To enable NATS JetStream, use the -js flag: +# +# docker run -p 4222:4222 nats -js +# +# And, to persist JetStream data to a volume you can use the -v and -sd flags. +# Keep in mind that -v is a Docker flag, while -js and -sd are NATS Server flags: +# +# docker run -p 4222:4222 -v nats:/data nats -js -sd /data +# # Check "docker run" for more information. $ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats @@ -257,12 +316,11 @@ To minimize image size, it's uncommon for additional related tools (such as `git ## `nats:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/nats/content.md b/nats/content.md index b67d8f074f58..20f4fce94327 100644 --- a/nats/content.md +++ b/nats/content.md @@ -27,6 +27,15 @@ # # docker run -p 5555:4444 %%IMAGE%% -p 4444 # +# To enable NATS JetStream, use the -js flag: +# +# docker run -p 4222:4222 %%IMAGE%% -js +# +# And, to persist JetStream data to a volume you can use the -v and -sd flags. +# Keep in mind that -v is a Docker flag, while -js and -sd are NATS Server flags: +# +# docker run -p 4222:4222 -v nats:/data %%IMAGE%% -js -sd /data +# # Check "docker run" for more information. $ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% diff --git a/nats/metadata.json b/nats/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/nats/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/neo4j/README.md b/neo4j/README.md index 192f685b504a..21c9d712eeb1 100644 --- a/neo4j/README.md +++ b/neo4j/README.md @@ -24,17 +24,30 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.3.0`, `5.3.0-community`, `5.3`, `5`, `5-community`, `community`, `latest`](https://github.com/neo4j/docker-neo4j-publish/blob/2318e8788222c303a84b819f190271a531ef92ea/5.3.0/community/Dockerfile) -- [`5.3.0-enterprise`, `5.3-enterprise`, `5-enterprise`, `enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/2318e8788222c303a84b819f190271a531ef92ea/5.3.0/enterprise/Dockerfile) -- [`4.4.16`, `4.4.16-community`, `4.4`, `4.4-community`](https://github.com/neo4j/docker-neo4j-publish/blob/082867e61a5947ba35fc954a192a438f2238e868/4.4.16/community/Dockerfile) -- [`4.4.16-enterprise`, `4.4-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/082867e61a5947ba35fc954a192a438f2238e868/4.4.16/enterprise/Dockerfile) -- [`4.3.23`, `4.3.23-community`, `4.3`, `4.3-community`](https://github.com/neo4j/docker-neo4j-publish/blob/082867e61a5947ba35fc954a192a438f2238e868/4.3.23/community/Dockerfile) -- [`4.3.23-enterprise`, `4.3-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/082867e61a5947ba35fc954a192a438f2238e868/4.3.23/enterprise/Dockerfile) +- [`2025.10.1-community-bullseye`, `2025.10-community-bullseye`, `2025-community-bullseye`, `2025.10.1-community`, `2025.10-community`, `2025-community`, `2025.10.1-bullseye`, `2025.10-bullseye`, `2025-bullseye`, `2025.10.1`, `2025.10`, `2025`, `community-bullseye`, `community`, `bullseye`, `latest`](https://github.com/neo4j/docker-neo4j-publish/blob/630ee784d1c1d65a6643c81887f6543a70816edf/2025.10.1/bullseye/community/Dockerfile) + +- [`2025.10.1-enterprise-bullseye`, `2025.10-enterprise-bullseye`, `2025-enterprise-bullseye`, `2025.10.1-enterprise`, `2025.10-enterprise`, `2025-enterprise`, `enterprise-bullseye`, `enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/630ee784d1c1d65a6643c81887f6543a70816edf/2025.10.1/bullseye/enterprise/Dockerfile) + +- [`2025.10.1-community-ubi9`, `2025.10-community-ubi9`, `2025-community-ubi9`, `2025.10.1-ubi9`, `2025.10-ubi9`, `2025-ubi9`, `community-ubi9`, `ubi9`](https://github.com/neo4j/docker-neo4j-publish/blob/630ee784d1c1d65a6643c81887f6543a70816edf/2025.10.1/ubi9/community/Dockerfile) + +- [`2025.10.1-enterprise-ubi9`, `2025.10-enterprise-ubi9`, `2025-enterprise-ubi9`, `enterprise-ubi9`](https://github.com/neo4j/docker-neo4j-publish/blob/630ee784d1c1d65a6643c81887f6543a70816edf/2025.10.1/ubi9/enterprise/Dockerfile) + +- [`5.26.16-community-bullseye`, `5.26-community-bullseye`, `5-community-bullseye`, `5.26.16-community`, `5.26-community`, `5-community`, `5.26.16-bullseye`, `5.26-bullseye`, `5-bullseye`, `5.26.16`, `5.26`, `5`](https://github.com/neo4j/docker-neo4j-publish/blob/d6fef47d8a1732f2b0b0975ef07c436850825910/5.26.16/bullseye/community/Dockerfile) + +- [`5.26.16-enterprise-bullseye`, `5.26-enterprise-bullseye`, `5-enterprise-bullseye`, `5.26.16-enterprise`, `5.26-enterprise`, `5-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/d6fef47d8a1732f2b0b0975ef07c436850825910/5.26.16/bullseye/enterprise/Dockerfile) + +- [`5.26.16-community-ubi9`, `5.26-community-ubi9`, `5-community-ubi9`, `5.26.16-ubi9`, `5.26-ubi9`, `5-ubi9`](https://github.com/neo4j/docker-neo4j-publish/blob/d6fef47d8a1732f2b0b0975ef07c436850825910/5.26.16/ubi9/community/Dockerfile) + +- [`5.26.16-enterprise-ubi9`, `5.26-enterprise-ubi9`, `5-enterprise-ubi9`](https://github.com/neo4j/docker-neo4j-publish/blob/d6fef47d8a1732f2b0b0975ef07c436850825910/5.26.16/ubi9/enterprise/Dockerfile) + +- [`4.4.46`, `4.4.46-community`, `4.4`, `4.4-community`](https://github.com/neo4j/docker-neo4j-publish/blob/439722772cf16662310df3e1d8f898272454f85a/4.4.46/bullseye/community/Dockerfile) + +- [`4.4.46-enterprise`, `4.4-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/439722772cf16662310df3e1d8f898272454f85a/4.4.46/bullseye/enterprise/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/neo4j/docker-neo4j/issues](https://github.com/neo4j/docker-neo4j/issues) + [https://github.com/neo4j/docker-neo4j/issues](https://github.com/neo4j/docker-neo4j/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/neo4j/), [`arm64v8`](https://hub.docker.com/r/arm64v8/neo4j/) diff --git a/neo4j/metadata.json b/neo4j/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/neo4j/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/neurodebian/README.md b/neurodebian/README.md index b89cf95d9b67..390c9265eb2b 100644 --- a/neurodebian/README.md +++ b/neurodebian/README.md @@ -24,27 +24,42 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`xenial`, `nd16.04`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/xenial/Dockerfile) -- [`xenial-non-free`, `nd16.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/xenial-non-free/Dockerfile) -- [`bionic`, `nd18.04`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/bionic/Dockerfile) -- [`bionic-non-free`, `nd18.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/bionic-non-free/Dockerfile) -- [`focal`, `nd20.04`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/focal/Dockerfile) -- [`focal-non-free`, `nd20.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/focal-non-free/Dockerfile) -- [`jammy`, `nd22.04`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/jammy/Dockerfile) -- [`jammy-non-free`, `nd22.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/jammy-non-free/Dockerfile) -- [`buster`, `nd100`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/buster/Dockerfile) -- [`buster-non-free`, `nd100-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/buster-non-free/Dockerfile) -- [`bullseye`, `nd110`, `latest`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/bullseye/Dockerfile) -- [`bullseye-non-free`, `nd110-non-free`, `non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/bullseye-non-free/Dockerfile) -- [`bookworm`, `nd120`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/bookworm/Dockerfile) -- [`bookworm-non-free`, `nd120-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/bookworm-non-free/Dockerfile) -- [`sid`, `nd`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/sid/Dockerfile) -- [`sid-non-free`, `nd-non-free`](https://github.com/neurodebian/dockerfiles/blob/53a254d17e6c1c21787ed44b6e848c1af46ea9be/dockerfiles/sid-non-free/Dockerfile) +- [`jammy`, `nd22.04`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/jammy/Dockerfile) + +- [`jammy-non-free`, `nd22.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/jammy-non-free/Dockerfile) + +- [`noble`, `nd24.04`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/noble/Dockerfile) + +- [`noble-non-free`, `nd24.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/noble-non-free/Dockerfile) + +- [`plucky`, `nd25.04`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/plucky/Dockerfile) + +- [`plucky-non-free`, `nd25.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/plucky-non-free/Dockerfile) + +- [`bullseye`, `nd110`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/bullseye/Dockerfile) + +- [`bullseye-non-free`, `nd110-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/bullseye-non-free/Dockerfile) + +- [`bookworm`, `nd120`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/bookworm/Dockerfile) + +- [`bookworm-non-free`, `nd120-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/bookworm-non-free/Dockerfile) + +- [`trixie`, `nd130`, `latest`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/trixie/Dockerfile) + +- [`trixie-non-free`, `nd130-non-free`, `non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/trixie-non-free/Dockerfile) + +- [`forky`, `nd140`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/forky/Dockerfile) + +- [`forky-non-free`, `nd140-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/forky-non-free/Dockerfile) + +- [`sid`, `nd`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/sid/Dockerfile) + +- [`sid-non-free`, `nd-non-free`](https://github.com/neurodebian/dockerfiles/blob/763e5953e63f2e0f46d2304dfd6c2f051ca378ca/dockerfiles/sid-non-free/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/neurodebian/dockerfiles/issues](https://github.com/neurodebian/dockerfiles/issues) + [https://github.com/neurodebian/dockerfiles/issues](https://github.com/neurodebian/dockerfiles/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/neurodebian/), [`arm64v8`](https://hub.docker.com/r/arm64v8/neurodebian/), [`i386`](https://hub.docker.com/r/i386/neurodebian/) diff --git a/neurodebian/metadata.json b/neurodebian/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/neurodebian/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/nextcloud/README-short.txt b/nextcloud/README-short.txt index 4f193acbe10b..27066d266ec3 100644 --- a/nextcloud/README-short.txt +++ b/nextcloud/README-short.txt @@ -1 +1 @@ -A safe home for all your data +Nextcloud manual docker image diff --git a/nextcloud/README.md b/nextcloud/README.md index 71e0d37a71ce..9100eb45d770 100644 --- a/nextcloud/README.md +++ b/nextcloud/README.md @@ -14,33 +14,45 @@ WARNING: --> +# IMPORTANT NOTE + +⚠️⚠️⚠️ This image is maintained by community volunteers and designed for expert use. For quick and easy deployment that supports the full set of Nextcloud Hub features, use the [Nextcloud All-in-One docker container](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one) maintained by Nextcloud GmbH. + # Quick reference - **Maintained by**: - [Nextcloud](https://github.com/nextcloud/docker) + [the Nextcloud community](https://github.com/nextcloud/docker) - **Where to get help**: [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`23.0.12-apache`, `23.0-apache`, `23-apache`, `23.0.12`, `23.0`, `23`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/23/apache/Dockerfile) -- [`23.0.12-fpm`, `23.0-fpm`, `23-fpm`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/23/fpm/Dockerfile) -- [`23.0.12-fpm-alpine`, `23.0-fpm-alpine`, `23-fpm-alpine`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/23/fpm-alpine/Dockerfile) -- [`24.0.8-apache`, `24.0-apache`, `24-apache`, `24.0.8`, `24.0`, `24`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/24/apache/Dockerfile) -- [`24.0.8-fpm`, `24.0-fpm`, `24-fpm`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/24/fpm/Dockerfile) -- [`24.0.8-fpm-alpine`, `24.0-fpm-alpine`, `24-fpm-alpine`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/24/fpm-alpine/Dockerfile) -- [`25.0.2-apache`, `25.0-apache`, `25-apache`, `apache`, `stable-apache`, `production-apache`, `25.0.2`, `25.0`, `25`, `latest`, `stable`, `production`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/25/apache/Dockerfile) -- [`25.0.2-fpm`, `25.0-fpm`, `25-fpm`, `fpm`, `stable-fpm`, `production-fpm`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/25/fpm/Dockerfile) -- [`25.0.2-fpm-alpine`, `25.0-fpm-alpine`, `25-fpm-alpine`, `fpm-alpine`, `stable-fpm-alpine`, `production-fpm-alpine`](https://github.com/nextcloud/docker/blob/540648f7edee606349f4499e1c989e9c106331a9/25/fpm-alpine/Dockerfile) +- [`30.0.17-apache`, `30.0-apache`, `30-apache`, `30.0.17`, `30.0`, `30`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/30/apache/Dockerfile) + +- [`30.0.17-fpm`, `30.0-fpm`, `30-fpm`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/30/fpm/Dockerfile) + +- [`30.0.17-fpm-alpine`, `30.0-fpm-alpine`, `30-fpm-alpine`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/30/fpm-alpine/Dockerfile) + +- [`31.0.10-apache`, `31.0-apache`, `31-apache`, `stable-apache`, `production-apache`, `31.0.10`, `31.0`, `31`, `stable`, `production`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/31/apache/Dockerfile) + +- [`31.0.10-fpm`, `31.0-fpm`, `31-fpm`, `stable-fpm`, `production-fpm`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/31/fpm/Dockerfile) + +- [`31.0.10-fpm-alpine`, `31.0-fpm-alpine`, `31-fpm-alpine`, `stable-fpm-alpine`, `production-fpm-alpine`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/31/fpm-alpine/Dockerfile) + +- [`32.0.1-apache`, `32.0-apache`, `32-apache`, `apache`, `32.0.1`, `32.0`, `32`, `latest`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/32/apache/Dockerfile) + +- [`32.0.1-fpm`, `32.0-fpm`, `32-fpm`, `fpm`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/32/fpm/Dockerfile) + +- [`32.0.1-fpm-alpine`, `32.0-fpm-alpine`, `32-fpm-alpine`, `fpm-alpine`](https://github.com/nextcloud/docker/blob/50bf6dc8f95729b95d6313edff8fb104639474ce/32/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/nextcloud/docker/issues](https://github.com/nextcloud/docker/issues) + [https://github.com/nextcloud/docker/issues](https://github.com/nextcloud/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/nextcloud/), [`arm32v5`](https://hub.docker.com/r/arm32v5/nextcloud/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nextcloud/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nextcloud/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nextcloud/), [`i386`](https://hub.docker.com/r/i386/nextcloud/), [`mips64le`](https://hub.docker.com/r/mips64le/nextcloud/), [`ppc64le`](https://hub.docker.com/r/ppc64le/nextcloud/), [`s390x`](https://hub.docker.com/r/s390x/nextcloud/) + [`amd64`](https://hub.docker.com/r/amd64/nextcloud/), [`arm32v5`](https://hub.docker.com/r/arm32v5/nextcloud/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nextcloud/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nextcloud/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nextcloud/), [`i386`](https://hub.docker.com/r/i386/nextcloud/), [`ppc64le`](https://hub.docker.com/r/ppc64le/nextcloud/), [`riscv64`](https://hub.docker.com/r/riscv64/nextcloud/), [`s390x`](https://hub.docker.com/r/s390x/nextcloud/) - **Published image artifact details**: [repo-info repo's `repos/nextcloud/` directory](https://github.com/docker-library/repo-info/blob/master/repos/nextcloud) ([history](https://github.com/docker-library/repo-info/commits/master/repos/nextcloud)) @@ -59,7 +71,7 @@ A safe home for all your data. Access & share your files, calendars, contacts, m > [Nextcloud.com](https://nextcloud.com/) -![logo](https://raw.githubusercontent.com/docker-library/docs/eabcf59e64b4395e681a7f7a9773bd213c9f3678/nextcloud/logo.svg?sanitize=true) +This Docker micro-service image is developed and maintained by the Nextcloud community. Nextcloud GmbH does not offer support for this Docker image. When you are looking to get professional support, you can become an [enterprise](https://nextcloud.com/enterprise/) customer or use [AIO](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one). # How to use this image @@ -81,21 +93,21 @@ Now you can access Nextcloud at http://localhost:8080/ from your host system. ## Using the fpm image -To use the fpm image, you need an additional web server, such as [nginx](https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html), that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases, you might want use another container or your host as proxy. If you use your host you can address your Nextcloud container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `docker-compose` file). In both cases you don't want to map the fpm port to your host. +To use the fpm image, you need an additional web server, such as [nginx](https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html), that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases, you might want to use another container or your host as proxy. If you use your host you can address your Nextcloud container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `compose.yaml` file). In both cases you don't want to map the fpm port to your host. ```console $ docker run -d nextcloud:fpm ``` -As the fastCGI-Process is not capable of serving static files (style sheets, images, ...), the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the [docker-compose section](#running-this-image-with-docker-compose). +As the fastCGI-Process is not capable of serving static files (style sheets, images, ...), the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the Docker Compose section. ## Using an external database -By default, this container uses SQLite for data storage but the Nextcloud setup wizard (appears on first run) allows connecting to an existing MySQL/MariaDB or PostgreSQL database. You can also link a database container, e. g. `--link my-mysql:mysql`, and then use `mysql` as the database host on setup. More info is in the docker-compose section. +By default, this container uses SQLite for data storage but the Nextcloud setup wizard (appears on first run) allows connecting to an existing MySQL/MariaDB or PostgreSQL database. You can also link a database container, e. g. `--link my-mysql:mysql`, and then use `mysql` as the database host on setup. More info is in the Docker Compose section. ## Persistent data -The Nextcloud installation and all data beyond what lives in the database (file uploads, etc.) are stored in the [unnamed docker volume](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. +The Nextcloud installation and all data beyond what lives in the database (file uploads, etc.) are stored in the [unnamed docker volume](https://docs.docker.com/storage/volumes/) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. A named Docker volume or a mounted host directory should be used for upgrades and backups. To achieve this, you need one volume for your database container and one for Nextcloud. @@ -103,22 +115,24 @@ Nextcloud: - `/var/www/html/` folder where all Nextcloud data lives - ```console - $ docker run -d \ - -v nextcloud:/var/www/html \ - nextcloud - ``` +```console +$ docker run -d \ +-v nextcloud:/var/www/html \ +nextcloud +``` Database: - `/var/lib/mysql` MySQL / MariaDB Data - `/var/lib/postgresql/data` PostgreSQL Data - ```console - $ docker run -d \ - -v db:/var/lib/mysql \ - mariadb:10.5 - ``` +```console +$ docker run -d \ +-v db:/var/lib/mysql \ +mariadb:10.6 +``` + +### Additional volumes If you want to get fine grained access to your individual files, you can mount additional volumes for data, config, your theme and custom apps. The `data`, `config` files are stored in respective subfolders inside `/var/www/html/`. The apps are split into core `apps` (which are shipped with Nextcloud and you don't need to take care of) and a `custom_apps` folder. If you use a custom theme it would go into the `themes` subfolder. @@ -134,14 +148,23 @@ If you want to use named volumes for all of these, it would look like this: ```console $ docker run -d \ - -v nextcloud:/var/www/html \ - -v apps:/var/www/html/custom_apps \ - -v config:/var/www/html/config \ - -v data:/var/www/html/data \ - -v theme:/var/www/html/themes/ \ - nextcloud +-v nextcloud:/var/www/html \ +-v apps:/var/www/html/custom_apps \ +-v config:/var/www/html/config \ +-v data:/var/www/html/data \ +-v theme:/var/www/html/themes/ \ +nextcloud ``` +### Custom volumes + +If mounting additional volumes under `/var/www/html`, you should consider: + +- Confirming that [upgrade.exclude](https://github.com/nextcloud/docker/blob/master/upgrade.exclude) contains the files and folders that should persist during installation and upgrades; or +- Mounting storage volumes to locations outside of `/var/www/html`. + +> You should note that data inside the main folder (`/var/www/html`) will be overridden/removed during installation and upgrades, unless listed in [upgrade.exclude](https://github.com/nextcloud/docker/blob/master/upgrade.exclude). The additional volumes officially supported are already in that list, but custom volumes will need to be added by you. We suggest mounting custom storage volumes outside of `/var/www/html` and if possible read-only so that making this adjustment is unnecessary. If you must do so, however, you may build a custom image with a modified `/upgrade.exclude` file that incorporates your custom volume(s). + ## Using the Nextcloud command-line interface To use the [Nextcloud command-line interface](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html) (aka. `occ` command): @@ -150,10 +173,10 @@ To use the [Nextcloud command-line interface](https://docs.nextcloud.com/server/ $ docker exec --user www-data CONTAINER_ID php occ ``` -or for docker-compose: +or for `docker compose`: ```console -$ docker-compose exec --user www-data app php occ +$ docker compose exec --user www-data app php occ ``` ## Auto configuration via environment variables @@ -178,7 +201,7 @@ The Nextcloud image supports auto configuration via environment variables. You c - `POSTGRES_PASSWORD` Password for the database user using postgres. - `POSTGRES_HOST` Hostname of the database server using postgres. -As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. See [Docker secrets](#docker=secrets) section below. +As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. See [Docker secrets](#docker-secrets) section below. If you set any group of values (i.e. all of `MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`), they will not be asked in the install page on first run. With a complete configuration by using all variables for your database type, you can additionally configure your Nextcloud instance by setting admin user and password (only works if you set both): @@ -197,7 +220,11 @@ The install and update script is only triggered when a default command is used ( - `NEXTCLOUD_UPDATE` (default: `0`) -If you want to use Redis you have to create a separate [Redis](https://hub.docker.com/_/redis/) container in your setup / in your docker-compose file. To inform Nextcloud about the Redis container, pass in the following parameters: +You might want to make sure the htaccess is up to date after each container update. Especially on multiple swarm nodes as any discrepancy will make your server unusable. + +- `NEXTCLOUD_INIT_HTACCESS` (not set by default) Set it to true to enable run `occ maintenance:update:htaccess` after container initialization. + +If you want to use Redis you have to create a separate [Redis](https://hub.docker.com/_/redis/) container in your setup / in your Compose file. To inform Nextcloud about the Redis container, pass in the following parameters: - `REDIS_HOST` (not set by default) Name of Redis container - `REDIS_HOST_PORT` (default: `6379`) Optional port for Redis, only use for external Redis servers that run on non-standard ports. @@ -213,24 +240,28 @@ To use an external SMTP server, you have to provide the connection details. To c - `SMTP_AUTHTYPE` (default: `LOGIN`): The method used for authentication. Use `PLAIN` if no authentication is required. - `SMTP_NAME` (empty by default): The username for the authentication. - `SMTP_PASSWORD` (empty by default): The password for the authentication. -- `MAIL_FROM_ADDRESS` (not set by default): Use this address for the 'from' field in the emails sent by Nextcloud. +- `MAIL_FROM_ADDRESS` (not set by default): Set the local-part for the 'from' field in the emails sent by Nextcloud. - `MAIL_DOMAIN` (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed. +At least `SMTP_HOST`, `MAIL_FROM_ADDRESS` and `MAIL_DOMAIN` must be set for the configurations to be applied. + Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/email_configuration.html) for other values to configure SMTP. To use an external S3 compatible object store as primary storage, set the following variables: -- `OBJECTSTORE_S3_HOST`: The hostname of the object storage server - `OBJECTSTORE_S3_BUCKET`: The name of the bucket that Nextcloud should store the data in +- `OBJECTSTORE_S3_REGION`: The region that the S3 bucket resides in +- `OBJECTSTORE_S3_HOST`: The hostname of the object storage server +- `OBJECTSTORE_S3_PORT`: The port that the object storage server is being served over - `OBJECTSTORE_S3_KEY`: AWS style access key - `OBJECTSTORE_S3_SECRET`: AWS style secret access key -- `OBJECTSTORE_S3_PORT`: The port that the object storage server is being served over +- `OBJECTSTORE_S3_STORAGE_CLASS`: The storage class to use when adding objects to the bucket - `OBJECTSTORE_S3_SSL` (default: `true`): Whether or not SSL/TLS should be used to communicate with object storage server -- `OBJECTSTORE_S3_REGION`: The region that the S3 bucket resides in. - `OBJECTSTORE_S3_USEPATH_STYLE` (default: `false`): Not required for AWS S3 - `OBJECTSTORE_S3_LEGACYAUTH` (default: `false`): Not required for AWS S3 - `OBJECTSTORE_S3_OBJECT_PREFIX` (default: `urn:oid:`): Prefix to prepend to the fileid - `OBJECTSTORE_S3_AUTOCREATE` (default: `true`): Create the container if it does not exist +- `OBJECTSTORE_S3_SSE_C_KEY` (not set by default): Base64 encoded key with a maximum length of 32 bytes for server side encryption (SSE-C) Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3) for more information. @@ -254,6 +285,43 @@ To customize other PHP limits you can simply change the following variables: - `PHP_MEMORY_LIMIT` (default `512M`) This sets the maximum amount of memory in bytes that a script is allowed to allocate. This is meant to help prevent poorly written scripts from eating up all available memory but it can prevent normal operation if set too tight. - `PHP_UPLOAD_LIMIT` (default `512M`) This sets the upload limit (`post_max_size` and `upload_max_filesize`) for big files. Note that you may have to change other limits depending on your client, webserver or operating system. Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html) for more information. +To customize Apache max file upload limit you can change the following variable: + +- `APACHE_BODY_LIMIT` (default `1073741824` [1GiB]) This restricts the total size of the HTTP request body sent from the client. It specifies the number of *bytes* that are allowed in a request body. A value of **0** means **unlimited**. Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html#apache) for more information. + +## Auto configuration via hook folders + +There are 5 hooks + +- `pre-installation` Executed before the Nextcloud is installed/initiated +- `post-installation` Executed after the Nextcloud is installed/initiated +- `pre-upgrade` Executed before the Nextcloud is upgraded +- `post-upgrade` Executed after the Nextcloud is upgraded +- `before-starting` Executed before the Nextcloud starts + +To use the hooks triggered by the `entrypoint` script, either + +- Added your script(s) to the individual of the hook folder(s), which are located at the path `/docker-entrypoint-hooks.d` in the container +- Use volume(s) if you want to use script from the host system inside the container, see example. + +**Note:** Only the script(s) located in a hook folder (not sub-folders), ending with `.sh` and marked as executable, will be executed. + +**Example:** Mount using volumes + +```yaml +... + app: + image: nextcloud:stable + + volumes: + - ./app-hooks/pre-installation:/docker-entrypoint-hooks.d/pre-installation + - ./app-hooks/post-installation:/docker-entrypoint-hooks.d/post-installation + - ./app-hooks/pre-upgrade:/docker-entrypoint-hooks.d/pre-upgrade + - ./app-hooks/post-upgrade:/docker-entrypoint-hooks.d/post-upgrade + - ./app-hooks/before-starting:/docker-entrypoint-hooks.d/before-starting +... +``` + ## Using the apache image behind a reverse proxy and auto configure server host and protocol The apache image will replace the remote addr (IP address visible to Nextcloud) with the IP address from `X-Real-IP` if the request is coming from a proxy in `10.0.0.0/8`, `172.16.0.0/12` or `192.168.0.0/16` by default. If you want Nextcloud to pick up the server host (`HTTP_X_FORWARDED_HOST`), protocol (`HTTP_X_FORWARDED_PROTO`) and client IP (`HTTP_X_FORWARDED_FOR`) from a trusted proxy, then disable rewrite IP and add the reverse proxy's IP address to `TRUSTED_PROXIES`. @@ -273,9 +341,9 @@ Check the [Nexcloud documentation](https://docs.nextcloud.com/server/latest/admi Keep in mind that once set, removing these environment variables won't remove these values from the configuration file, due to how Nextcloud merges configuration files together. -# Running this image with docker-compose +# Running this image with Docker Compose -The easiest way to get a fully featured and functional setup is using a `docker-compose` file. There are too many different possibilities to setup your system, so here are only some examples of what you have to look for. +The easiest way to get a fully featured and functional setup is using a `compose.yaml` file. There are too many different possibilities to setup your system, so here are only some examples of what you have to look for. At first, make sure you have chosen the right base image (fpm or apache) and added features you wanted (see below). In every case, you would want to add a database container and docker volumes to get easy access to your persistent data. When you want to have your server reachable from the internet, adding HTTPS-encryption is mandatory! See below for more information. @@ -286,17 +354,15 @@ This version will use the apache image and add a mariaDB container. The volumes Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml -version: '2' - volumes: nextcloud: db: services: db: - image: mariadb:10.5 + image: mariadb:10.6 restart: always - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -321,28 +387,26 @@ services: - MYSQL_HOST=db ``` -Then run `docker-compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. +Then run `docker compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. ## Base version - FPM -When using the FPM image, you need another container that acts as web server on port 80 and proxies the requests to the Nextcloud container. In this example a simple nginx container is combined with the Nextcloud-fpm image and a MariaDB database container. The data is stored in docker volumes. The nginx container also needs access to static files from your Nextcloud installation. It gets access to all the volumes mounted to Nextcloud via the `volumes_from` option.The configuration for nginx is stored in the configuration file `nginx.conf`, that is mounted into the container. An example can be found in the examples section [here](https://github.com/nextcloud/docker/tree/master/.examples). +When using the FPM image, you need another container that acts as web server on port 80 and proxies the requests to the Nextcloud container. In this example a simple nginx container is combined with the Nextcloud-fpm image and a MariaDB database container. The data is stored in docker volumes. The nginx container also needs access to static files from your Nextcloud installation. It gets access to all the volumes mounted to Nextcloud via the `volumes_from` option. The configuration for nginx is stored in the configuration file `nginx.conf`, that is mounted into the container. An example can be found in the examples section [here](https://github.com/nextcloud/docker/tree/master/.examples). As this setup does **not include encryption**, it should be run behind a proxy. Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml -version: '2' - volumes: nextcloud: db: services: db: - image: mariadb:10.5 + image: mariadb:10.6 restart: always - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -377,15 +441,13 @@ services: - app ``` -Then run `docker-compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. +Then run `docker compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. # Docker Secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: ```yaml -version: '3.2' - services: db: image: postgres @@ -441,7 +503,7 @@ secrets: file: ./postgres_user.txt # put postgresql username in this file ``` -Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD` and `SMTP_PASSWORD`. +Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD`, `SMTP_PASSWORD`, `OBJECTSTORE_S3_KEY`, and `OBJECTSTORE_S3_SECRET`. If you set any group of values (i.e. all of `MYSQL_DATABASE_FILE`, `MYSQL_USER_FILE`, `MYSQL_PASSWORD_FILE`, `MYSQL_HOST`), the script will not use the corresponding group of environment variables (`MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`). @@ -459,7 +521,7 @@ In our [examples](https://github.com/nextcloud/docker/tree/master/.examples) sec # First use -When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account username, password and the database connection. For the database use `db` as host and `nextcloud` as table and user name. Also enter the password you chose in your `docker-compose.yml` file. +When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account username, password and the database connection. For the database use `db` as host and `nextcloud` as table and user name. Also enter the password you chose in your `compose.yaml` file. # Update to a newer version @@ -478,11 +540,11 @@ $ docker run -d nextcloud Beware that you have to run the same command with the options that you used to initially start your Nextcloud. That includes volumes, port mapping. -When using docker-compose your compose file takes care of your configuration, so you just have to run: +When using Docker Compose, your `compose.yaml` file takes care of your configuration, so you just have to run: ```console -$ docker-compose pull -$ docker-compose up -d +$ docker compose pull +$ docker compose up -d ``` # Adding Features @@ -497,7 +559,7 @@ RUN ... The [examples folder](https://github.com/nextcloud/docker/blob/master/.examples) gives a few examples on how to add certain functionalities, like including the cron job, smb-support or imap-authentication. -If you use your own Dockerfile, you need to configure your docker-compose file accordingly. Switch out the `image` option with `build`. You have to specify the path to your Dockerfile. (in the example it's in the same directory next to the docker-compose file) +If you use your own Dockerfile, you need to configure your `compose.yaml` file accordingly. Switch out the `image` option with `build`. You have to specify the path to your Dockerfile. (in the example it's in the same directory next to the `compose.yaml` file) ```yaml app: @@ -530,11 +592,11 @@ docker build -t your-name --pull . docker run -d your-name ``` -or for docker-compose: +Or for Docker Compose: ```console -docker-compose build --pull -docker-compose up -d +docker compose build --pull +docker compose up -d ``` The `--pull` option tells docker to look for new versions of the base image. Then the build instructions inside your `Dockerfile` are run on top of the new image. @@ -543,25 +605,25 @@ The `--pull` option tells docker to look for new versions of the base image. The You're already using Nextcloud and want to switch to docker? Great! Here are some things to look out for: -1. Define your whole Nextcloud infrastructure in a `docker-compose` file and run it with `docker-compose up -d` to get the base installation, volumes and database. Work from there. +1. Define your whole Nextcloud infrastructure in a `compose.yaml` file and run it with `docker compose up -d` to get the base installation, volumes and database. Work from there. 2. Restore your database from a mysqldump (nextcloud\_db\_1 is the name of your db container) - To import from a MySQL dump use the following commands - ```console - docker cp ./database.dmp nextcloud_db_1:/dmp - docker-compose exec db sh -c "mysql --user USER --password PASSWORD nextcloud < /dmp" - docker-compose exec db rm /dmp - ``` + ```console + docker cp ./database.dmp nextcloud_db_1:/dmp + docker compose exec db sh -c "mysql --user USER --password PASSWORD nextcloud < /dmp" + docker compose exec db rm /dmp + ``` - To import from a PostgreSQL dump use to following commands - ```console - docker cp ./database.dmp nextcloud_db_1:/dmp - docker-compose exec db sh -c "psql -U USER --set ON_ERROR_STOP=on nextcloud < /dmp" - docker-compose exec db rm /dmp - ``` + ```console + docker cp ./database.dmp nextcloud_db_1:/dmp + docker compose exec db sh -c "psql -U USER --set ON_ERROR_STOP=on nextcloud < /dmp" + docker compose exec db rm /dmp + ``` 3. Edit your config.php @@ -569,15 +631,15 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som - In case of MySQL database - ```php - 'dbhost' => 'db:3306', - ``` + ```php + 'dbhost' => 'db:3306', + ``` - In case of PostgreSQL database - ```php - 'dbhost' => 'db:5432', - ``` + ```php + 'dbhost' => 'db:5432', + ``` 2. Make sure you have no configuration for the `apps_paths`. Delete lines like these @@ -595,16 +657,16 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som ```php 'apps_paths' => array ( - 0 => array ( - 'path' => '/var/www/html/apps', - 'url' => '/apps', - 'writable' => false, - ), - 1 => array ( - 'path' => '/var/www/html/custom_apps', - 'url' => '/custom_apps', - 'writable' => true, - ), + 0 => array ( + 'path' => '/var/www/html/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => '/var/www/html/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), ), ``` @@ -618,11 +680,11 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som ```console docker cp ./data/ nextcloud_app_1:/var/www/html/ - docker-compose exec app chown -R www-data:www-data /var/www/html/data + docker compose exec app chown -R www-data:www-data /var/www/html/data docker cp ./theming/ nextcloud_app_1:/var/www/html/ - docker-compose exec app chown -R www-data:www-data /var/www/html/theming + docker compose exec app chown -R www-data:www-data /var/www/html/theming docker cp ./config/config.php nextcloud_app_1:/var/www/html/config - docker-compose exec app chown -R www-data:www-data /var/www/html/config + docker compose exec app chown -R www-data:www-data /var/www/html/config ``` If you want to preserve the metadata of your files like timestamps, copy the data directly on the host to the named volume using plain `cp` like this: @@ -635,7 +697,7 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som ```console docker cp ./custom_apps/ nextcloud_data:/var/www/html/ - docker-compose exec app chown -R www-data:www-data /var/www/html/custom_apps + docker compose exec app chown -R www-data:www-data /var/www/html/custom_apps ``` # Questions / Issues diff --git a/nextcloud/content.md b/nextcloud/content.md index a2dbab047b16..a290b3e39fa7 100644 --- a/nextcloud/content.md +++ b/nextcloud/content.md @@ -4,7 +4,7 @@ A safe home for all your data. Access & share your files, calendars, contacts, m > [Nextcloud.com](https://nextcloud.com/) -%%LOGO%% +This Docker micro-service image is developed and maintained by the Nextcloud community. Nextcloud GmbH does not offer support for this Docker image. When you are looking to get professional support, you can become an [enterprise](https://nextcloud.com/enterprise/) customer or use [AIO](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one). # How to use this image @@ -26,21 +26,21 @@ Now you can access Nextcloud at http://localhost:8080/ from your host system. ## Using the fpm image -To use the fpm image, you need an additional web server, such as [nginx](https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html), that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases, you might want use another container or your host as proxy. If you use your host you can address your Nextcloud container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `docker-compose` file). In both cases you don't want to map the fpm port to your host. +To use the fpm image, you need an additional web server, such as [nginx](https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html), that can proxy http-request to the fpm-port of the container. For fpm connection this container exposes port 9000. In most cases, you might want to use another container or your host as proxy. If you use your host you can address your Nextcloud container directly on port 9000. If you use another container, make sure that you add them to the same docker network (via `docker run --network ...` or a `compose.yaml` file). In both cases you don't want to map the fpm port to your host. ```console $ docker run -d %%IMAGE%%:fpm ``` -As the fastCGI-Process is not capable of serving static files (style sheets, images, ...), the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the [docker-compose section](#running-this-image-with-docker-compose). +As the fastCGI-Process is not capable of serving static files (style sheets, images, ...), the webserver needs access to these files. This can be achieved with the `volumes-from` option. You can find more information in the Docker Compose section. ## Using an external database -By default, this container uses SQLite for data storage but the Nextcloud setup wizard (appears on first run) allows connecting to an existing MySQL/MariaDB or PostgreSQL database. You can also link a database container, e. g. `--link my-mysql:mysql`, and then use `mysql` as the database host on setup. More info is in the docker-compose section. +By default, this container uses SQLite for data storage but the Nextcloud setup wizard (appears on first run) allows connecting to an existing MySQL/MariaDB or PostgreSQL database. You can also link a database container, e. g. `--link my-mysql:mysql`, and then use `mysql` as the database host on setup. More info is in the Docker Compose section. ## Persistent data -The Nextcloud installation and all data beyond what lives in the database (file uploads, etc.) are stored in the [unnamed docker volume](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. +The Nextcloud installation and all data beyond what lives in the database (file uploads, etc.) are stored in the [unnamed docker volume](https://docs.docker.com/storage/volumes/) volume `/var/www/html`. The docker daemon will store that data within the docker directory `/var/lib/docker/volumes/...`. That means your data is saved even if the container crashes, is stopped or deleted. A named Docker volume or a mounted host directory should be used for upgrades and backups. To achieve this, you need one volume for your database container and one for Nextcloud. @@ -48,22 +48,24 @@ Nextcloud: - `/var/www/html/` folder where all Nextcloud data lives - ```console - $ docker run -d \ - -v nextcloud:/var/www/html \ - %%IMAGE%% - ``` +```console +$ docker run -d \ +-v nextcloud:/var/www/html \ +%%IMAGE%% +``` Database: - `/var/lib/mysql` MySQL / MariaDB Data - `/var/lib/postgresql/data` PostgreSQL Data - ```console - $ docker run -d \ - -v db:/var/lib/mysql \ - mariadb:10.5 - ``` +```console +$ docker run -d \ +-v db:/var/lib/mysql \ +mariadb:10.6 +``` + +### Additional volumes If you want to get fine grained access to your individual files, you can mount additional volumes for data, config, your theme and custom apps. The `data`, `config` files are stored in respective subfolders inside `/var/www/html/`. The apps are split into core `apps` (which are shipped with Nextcloud and you don't need to take care of) and a `custom_apps` folder. If you use a custom theme it would go into the `themes` subfolder. @@ -79,14 +81,23 @@ If you want to use named volumes for all of these, it would look like this: ```console $ docker run -d \ - -v nextcloud:/var/www/html \ - -v apps:/var/www/html/custom_apps \ - -v config:/var/www/html/config \ - -v data:/var/www/html/data \ - -v theme:/var/www/html/themes/ \ - %%IMAGE%% +-v nextcloud:/var/www/html \ +-v apps:/var/www/html/custom_apps \ +-v config:/var/www/html/config \ +-v data:/var/www/html/data \ +-v theme:/var/www/html/themes/ \ +%%IMAGE%% ``` +### Custom volumes + +If mounting additional volumes under `/var/www/html`, you should consider: + +- Confirming that [upgrade.exclude](https://github.com/nextcloud/docker/blob/master/upgrade.exclude) contains the files and folders that should persist during installation and upgrades; or +- Mounting storage volumes to locations outside of `/var/www/html`. + +> You should note that data inside the main folder (`/var/www/html`) will be overridden/removed during installation and upgrades, unless listed in [upgrade.exclude](https://github.com/nextcloud/docker/blob/master/upgrade.exclude). The additional volumes officially supported are already in that list, but custom volumes will need to be added by you. We suggest mounting custom storage volumes outside of `/var/www/html` and if possible read-only so that making this adjustment is unnecessary. If you must do so, however, you may build a custom image with a modified `/upgrade.exclude` file that incorporates your custom volume(s). + ## Using the Nextcloud command-line interface To use the [Nextcloud command-line interface](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/occ_command.html) (aka. `occ` command): @@ -95,10 +106,10 @@ To use the [Nextcloud command-line interface](https://docs.nextcloud.com/server/ $ docker exec --user www-data CONTAINER_ID php occ ``` -or for docker-compose: +or for `docker compose`: ```console -$ docker-compose exec --user www-data app php occ +$ docker compose exec --user www-data app php occ ``` ## Auto configuration via environment variables @@ -123,7 +134,7 @@ The Nextcloud image supports auto configuration via environment variables. You c - `POSTGRES_PASSWORD` Password for the database user using postgres. - `POSTGRES_HOST` Hostname of the database server using postgres. -As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. See [Docker secrets](#docker=secrets) section below. +As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. See [Docker secrets](#docker-secrets) section below. If you set any group of values (i.e. all of `MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`), they will not be asked in the install page on first run. With a complete configuration by using all variables for your database type, you can additionally configure your Nextcloud instance by setting admin user and password (only works if you set both): @@ -142,7 +153,11 @@ The install and update script is only triggered when a default command is used ( - `NEXTCLOUD_UPDATE` (default: `0`) -If you want to use Redis you have to create a separate [Redis](https://hub.docker.com/_/redis/) container in your setup / in your docker-compose file. To inform Nextcloud about the Redis container, pass in the following parameters: +You might want to make sure the htaccess is up to date after each container update. Especially on multiple swarm nodes as any discrepancy will make your server unusable. + +- `NEXTCLOUD_INIT_HTACCESS` (not set by default) Set it to true to enable run `occ maintenance:update:htaccess` after container initialization. + +If you want to use Redis you have to create a separate [Redis](https://hub.docker.com/_/redis/) container in your setup / in your Compose file. To inform Nextcloud about the Redis container, pass in the following parameters: - `REDIS_HOST` (not set by default) Name of Redis container - `REDIS_HOST_PORT` (default: `6379`) Optional port for Redis, only use for external Redis servers that run on non-standard ports. @@ -158,24 +173,28 @@ To use an external SMTP server, you have to provide the connection details. To c - `SMTP_AUTHTYPE` (default: `LOGIN`): The method used for authentication. Use `PLAIN` if no authentication is required. - `SMTP_NAME` (empty by default): The username for the authentication. - `SMTP_PASSWORD` (empty by default): The password for the authentication. -- `MAIL_FROM_ADDRESS` (not set by default): Use this address for the 'from' field in the emails sent by Nextcloud. +- `MAIL_FROM_ADDRESS` (not set by default): Set the local-part for the 'from' field in the emails sent by Nextcloud. - `MAIL_DOMAIN` (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed. +At least `SMTP_HOST`, `MAIL_FROM_ADDRESS` and `MAIL_DOMAIN` must be set for the configurations to be applied. + Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/email_configuration.html) for other values to configure SMTP. To use an external S3 compatible object store as primary storage, set the following variables: -- `OBJECTSTORE_S3_HOST`: The hostname of the object storage server - `OBJECTSTORE_S3_BUCKET`: The name of the bucket that Nextcloud should store the data in +- `OBJECTSTORE_S3_REGION`: The region that the S3 bucket resides in +- `OBJECTSTORE_S3_HOST`: The hostname of the object storage server +- `OBJECTSTORE_S3_PORT`: The port that the object storage server is being served over - `OBJECTSTORE_S3_KEY`: AWS style access key - `OBJECTSTORE_S3_SECRET`: AWS style secret access key -- `OBJECTSTORE_S3_PORT`: The port that the object storage server is being served over +- `OBJECTSTORE_S3_STORAGE_CLASS`: The storage class to use when adding objects to the bucket - `OBJECTSTORE_S3_SSL` (default: `true`): Whether or not SSL/TLS should be used to communicate with object storage server -- `OBJECTSTORE_S3_REGION`: The region that the S3 bucket resides in. - `OBJECTSTORE_S3_USEPATH_STYLE` (default: `false`): Not required for AWS S3 - `OBJECTSTORE_S3_LEGACYAUTH` (default: `false`): Not required for AWS S3 - `OBJECTSTORE_S3_OBJECT_PREFIX` (default: `urn:oid:`): Prefix to prepend to the fileid - `OBJECTSTORE_S3_AUTOCREATE` (default: `true`): Create the container if it does not exist +- `OBJECTSTORE_S3_SSE_C_KEY` (not set by default): Base64 encoded key with a maximum length of 32 bytes for server side encryption (SSE-C) Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3) for more information. @@ -199,6 +218,43 @@ To customize other PHP limits you can simply change the following variables: - `PHP_MEMORY_LIMIT` (default `512M`) This sets the maximum amount of memory in bytes that a script is allowed to allocate. This is meant to help prevent poorly written scripts from eating up all available memory but it can prevent normal operation if set too tight. - `PHP_UPLOAD_LIMIT` (default `512M`) This sets the upload limit (`post_max_size` and `upload_max_filesize`) for big files. Note that you may have to change other limits depending on your client, webserver or operating system. Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html) for more information. +To customize Apache max file upload limit you can change the following variable: + +- `APACHE_BODY_LIMIT` (default `1073741824` [1GiB]) This restricts the total size of the HTTP request body sent from the client. It specifies the number of *bytes* that are allowed in a request body. A value of **0** means **unlimited**. Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/big_file_upload_configuration.html#apache) for more information. + +## Auto configuration via hook folders + +There are 5 hooks + +- `pre-installation` Executed before the Nextcloud is installed/initiated +- `post-installation` Executed after the Nextcloud is installed/initiated +- `pre-upgrade` Executed before the Nextcloud is upgraded +- `post-upgrade` Executed after the Nextcloud is upgraded +- `before-starting` Executed before the Nextcloud starts + +To use the hooks triggered by the `entrypoint` script, either + +- Added your script(s) to the individual of the hook folder(s), which are located at the path `/docker-entrypoint-hooks.d` in the container +- Use volume(s) if you want to use script from the host system inside the container, see example. + +**Note:** Only the script(s) located in a hook folder (not sub-folders), ending with `.sh` and marked as executable, will be executed. + +**Example:** Mount using volumes + +```yaml +... + app: + image: %%IMAGE%%:stable + + volumes: + - ./app-hooks/pre-installation:/docker-entrypoint-hooks.d/pre-installation + - ./app-hooks/post-installation:/docker-entrypoint-hooks.d/post-installation + - ./app-hooks/pre-upgrade:/docker-entrypoint-hooks.d/pre-upgrade + - ./app-hooks/post-upgrade:/docker-entrypoint-hooks.d/post-upgrade + - ./app-hooks/before-starting:/docker-entrypoint-hooks.d/before-starting +... +``` + ## Using the apache image behind a reverse proxy and auto configure server host and protocol The apache image will replace the remote addr (IP address visible to Nextcloud) with the IP address from `X-Real-IP` if the request is coming from a proxy in `10.0.0.0/8`, `172.16.0.0/12` or `192.168.0.0/16` by default. If you want Nextcloud to pick up the server host (`HTTP_X_FORWARDED_HOST`), protocol (`HTTP_X_FORWARDED_PROTO`) and client IP (`HTTP_X_FORWARDED_FOR`) from a trusted proxy, then disable rewrite IP and add the reverse proxy's IP address to `TRUSTED_PROXIES`. @@ -218,9 +274,9 @@ Check the [Nexcloud documentation](https://docs.nextcloud.com/server/latest/admi Keep in mind that once set, removing these environment variables won't remove these values from the configuration file, due to how Nextcloud merges configuration files together. -# Running this image with docker-compose +# Running this image with Docker Compose -The easiest way to get a fully featured and functional setup is using a `docker-compose` file. There are too many different possibilities to setup your system, so here are only some examples of what you have to look for. +The easiest way to get a fully featured and functional setup is using a `compose.yaml` file. There are too many different possibilities to setup your system, so here are only some examples of what you have to look for. At first, make sure you have chosen the right base image (fpm or apache) and added features you wanted (see below). In every case, you would want to add a database container and docker volumes to get easy access to your persistent data. When you want to have your server reachable from the internet, adding HTTPS-encryption is mandatory! See below for more information. @@ -231,17 +287,15 @@ This version will use the apache image and add a mariaDB container. The volumes Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml -version: '2' - volumes: nextcloud: db: services: db: - image: mariadb:10.5 + image: mariadb:10.6 restart: always - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -266,28 +320,26 @@ services: - MYSQL_HOST=db ``` -Then run `docker-compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. +Then run `docker compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. ## Base version - FPM -When using the FPM image, you need another container that acts as web server on port 80 and proxies the requests to the Nextcloud container. In this example a simple nginx container is combined with the Nextcloud-fpm image and a MariaDB database container. The data is stored in docker volumes. The nginx container also needs access to static files from your Nextcloud installation. It gets access to all the volumes mounted to Nextcloud via the `volumes_from` option.The configuration for nginx is stored in the configuration file `nginx.conf`, that is mounted into the container. An example can be found in the examples section [here](https://github.com/nextcloud/docker/tree/master/.examples). +When using the FPM image, you need another container that acts as web server on port 80 and proxies the requests to the Nextcloud container. In this example a simple nginx container is combined with the Nextcloud-fpm image and a MariaDB database container. The data is stored in docker volumes. The nginx container also needs access to static files from your Nextcloud installation. It gets access to all the volumes mounted to Nextcloud via the `volumes_from` option. The configuration for nginx is stored in the configuration file `nginx.conf`, that is mounted into the container. An example can be found in the examples section [here](https://github.com/nextcloud/docker/tree/master/.examples). As this setup does **not include encryption**, it should be run behind a proxy. Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml -version: '2' - volumes: nextcloud: db: services: db: - image: mariadb:10.5 + image: mariadb:10.6 restart: always - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + command: --transaction-isolation=READ-COMMITTED --log-bin=binlog --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -322,15 +374,13 @@ services: - app ``` -Then run `docker-compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. +Then run `docker compose up -d`, now you can access Nextcloud at http://localhost:8080/ from your host system. # Docker Secrets As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: ```yaml -version: '3.2' - services: db: image: postgres @@ -347,7 +397,7 @@ services: - postgres_user app: - image: nextcloud + image: %%IMAGE%% restart: always ports: - 8080:80 @@ -386,7 +436,7 @@ secrets: file: ./postgres_user.txt # put postgresql username in this file ``` -Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD` and `SMTP_PASSWORD`. +Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, `REDIS_HOST_PASSWORD`, `SMTP_PASSWORD`, `OBJECTSTORE_S3_KEY`, and `OBJECTSTORE_S3_SECRET`. If you set any group of values (i.e. all of `MYSQL_DATABASE_FILE`, `MYSQL_USER_FILE`, `MYSQL_PASSWORD_FILE`, `MYSQL_HOST`), the script will not use the corresponding group of environment variables (`MYSQL_DATABASE`, `MYSQL_USER`, `MYSQL_PASSWORD`, `MYSQL_HOST`). @@ -404,7 +454,7 @@ In our [examples](https://github.com/nextcloud/docker/tree/master/.examples) sec # First use -When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account username, password and the database connection. For the database use `db` as host and `nextcloud` as table and user name. Also enter the password you chose in your `docker-compose.yml` file. +When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account username, password and the database connection. For the database use `db` as host and `nextcloud` as table and user name. Also enter the password you chose in your `compose.yaml` file. # Update to a newer version @@ -423,11 +473,11 @@ $ docker run -d %%IMAGE%% Beware that you have to run the same command with the options that you used to initially start your Nextcloud. That includes volumes, port mapping. -When using docker-compose your compose file takes care of your configuration, so you just have to run: +When using Docker Compose, your `compose.yaml` file takes care of your configuration, so you just have to run: ```console -$ docker-compose pull -$ docker-compose up -d +$ docker compose pull +$ docker compose up -d ``` # Adding Features @@ -442,7 +492,7 @@ RUN ... The [examples folder](https://github.com/nextcloud/docker/blob/master/.examples) gives a few examples on how to add certain functionalities, like including the cron job, smb-support or imap-authentication. -If you use your own Dockerfile, you need to configure your docker-compose file accordingly. Switch out the `image` option with `build`. You have to specify the path to your Dockerfile. (in the example it's in the same directory next to the docker-compose file) +If you use your own Dockerfile, you need to configure your `compose.yaml` file accordingly. Switch out the `image` option with `build`. You have to specify the path to your Dockerfile. (in the example it's in the same directory next to the `compose.yaml` file) ```yaml app: @@ -475,11 +525,11 @@ docker build -t your-name --pull . docker run -d your-name ``` -or for docker-compose: +Or for Docker Compose: ```console -docker-compose build --pull -docker-compose up -d +docker compose build --pull +docker compose up -d ``` The `--pull` option tells docker to look for new versions of the base image. Then the build instructions inside your `Dockerfile` are run on top of the new image. @@ -488,25 +538,25 @@ The `--pull` option tells docker to look for new versions of the base image. The You're already using Nextcloud and want to switch to docker? Great! Here are some things to look out for: -1. Define your whole Nextcloud infrastructure in a `docker-compose` file and run it with `docker-compose up -d` to get the base installation, volumes and database. Work from there. +1. Define your whole Nextcloud infrastructure in a `compose.yaml` file and run it with `docker compose up -d` to get the base installation, volumes and database. Work from there. 2. Restore your database from a mysqldump (nextcloud\_db\_1 is the name of your db container) - To import from a MySQL dump use the following commands - ```console - docker cp ./database.dmp nextcloud_db_1:/dmp - docker-compose exec db sh -c "mysql --user USER --password PASSWORD nextcloud < /dmp" - docker-compose exec db rm /dmp - ``` + ```console + docker cp ./database.dmp nextcloud_db_1:/dmp + docker compose exec db sh -c "mysql --user USER --password PASSWORD nextcloud < /dmp" + docker compose exec db rm /dmp + ``` - To import from a PostgreSQL dump use to following commands - ```console - docker cp ./database.dmp nextcloud_db_1:/dmp - docker-compose exec db sh -c "psql -U USER --set ON_ERROR_STOP=on nextcloud < /dmp" - docker-compose exec db rm /dmp - ``` + ```console + docker cp ./database.dmp nextcloud_db_1:/dmp + docker compose exec db sh -c "psql -U USER --set ON_ERROR_STOP=on nextcloud < /dmp" + docker compose exec db rm /dmp + ``` 3. Edit your config.php @@ -514,15 +564,15 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som - In case of MySQL database - ```php - 'dbhost' => 'db:3306', - ``` + ```php + 'dbhost' => 'db:3306', + ``` - In case of PostgreSQL database - ```php - 'dbhost' => 'db:5432', - ``` + ```php + 'dbhost' => 'db:5432', + ``` 2. Make sure you have no configuration for the `apps_paths`. Delete lines like these @@ -540,16 +590,16 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som ```php 'apps_paths' => array ( - 0 => array ( - 'path' => '/var/www/html/apps', - 'url' => '/apps', - 'writable' => false, - ), - 1 => array ( - 'path' => '/var/www/html/custom_apps', - 'url' => '/custom_apps', - 'writable' => true, - ), + 0 => array ( + 'path' => '/var/www/html/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => '/var/www/html/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, + ), ), ``` @@ -563,11 +613,11 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som ```console docker cp ./data/ nextcloud_app_1:/var/www/html/ - docker-compose exec app chown -R www-data:www-data /var/www/html/data + docker compose exec app chown -R www-data:www-data /var/www/html/data docker cp ./theming/ nextcloud_app_1:/var/www/html/ - docker-compose exec app chown -R www-data:www-data /var/www/html/theming + docker compose exec app chown -R www-data:www-data /var/www/html/theming docker cp ./config/config.php nextcloud_app_1:/var/www/html/config - docker-compose exec app chown -R www-data:www-data /var/www/html/config + docker compose exec app chown -R www-data:www-data /var/www/html/config ``` If you want to preserve the metadata of your files like timestamps, copy the data directly on the host to the named volume using plain `cp` like this: @@ -580,7 +630,7 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som ```console docker cp ./custom_apps/ nextcloud_data:/var/www/html/ - docker-compose exec app chown -R www-data:www-data /var/www/html/custom_apps + docker compose exec app chown -R www-data:www-data /var/www/html/custom_apps ``` # Questions / Issues diff --git a/nextcloud/deprecated.md b/nextcloud/deprecated.md new file mode 100644 index 000000000000..4143d5a3731a --- /dev/null +++ b/nextcloud/deprecated.md @@ -0,0 +1,3 @@ +# IMPORTANT NOTE + +⚠️⚠️⚠️ This image is maintained by community volunteers and designed for expert use. For quick and easy deployment that supports the full set of Nextcloud Hub features, use the [Nextcloud All-in-One docker container](https://github.com/nextcloud/all-in-one#nextcloud-all-in-one) maintained by Nextcloud GmbH. diff --git a/nextcloud/logo.svg b/nextcloud/logo.svg deleted file mode 100644 index 15f62bdd1965..000000000000 --- a/nextcloud/logo.svg +++ /dev/null @@ -1,104 +0,0 @@ - - - -image/svg+xml diff --git a/nextcloud/maintainer.md b/nextcloud/maintainer.md index e6bd947c8c47..bb1fe5597c08 100644 --- a/nextcloud/maintainer.md +++ b/nextcloud/maintainer.md @@ -1 +1 @@ -[Nextcloud](%%GITHUB-REPO%%) +[the Nextcloud community](%%GITHUB-REPO%%) diff --git a/nextcloud/metadata.json b/nextcloud/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/nextcloud/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/nginx/README.md b/nginx/README.md index 95cdd9c79cbd..1e80cf3fd6e4 100644 --- a/nginx/README.md +++ b/nginx/README.md @@ -24,23 +24,41 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.23.3`, `mainline`, `1`, `1.23`, `latest`](https://github.com/nginxinc/docker-nginx/blob/5ce65c3efd395ee2d82d32670f233140e92dba99/mainline/debian/Dockerfile) -- [`1.23.3-perl`, `mainline-perl`, `1-perl`, `1.23-perl`, `perl`](https://github.com/nginxinc/docker-nginx/blob/5ce65c3efd395ee2d82d32670f233140e92dba99/mainline/debian-perl/Dockerfile) -- [`1.23.3-alpine`, `mainline-alpine`, `1-alpine`, `1.23-alpine`, `alpine`](https://github.com/nginxinc/docker-nginx/blob/5ce65c3efd395ee2d82d32670f233140e92dba99/mainline/alpine/Dockerfile) -- [`1.23.3-alpine-perl`, `mainline-alpine-perl`, `1-alpine-perl`, `1.23-alpine-perl`, `alpine-perl`](https://github.com/nginxinc/docker-nginx/blob/5ce65c3efd395ee2d82d32670f233140e92dba99/mainline/alpine-perl/Dockerfile) -- [`1.23.3-alpine-slim`, `mainline-alpine-slim`, `1-alpine-slim`, `1.23-alpine-slim`, `alpine-slim`](https://github.com/nginxinc/docker-nginx/blob/5ce65c3efd395ee2d82d32670f233140e92dba99/mainline/alpine-slim/Dockerfile) -- [`1.22.1`, `stable`, `1.22`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/stable/debian/Dockerfile) -- [`1.22.1-perl`, `stable-perl`, `1.22-perl`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/stable/debian-perl/Dockerfile) -- [`1.22.1-alpine`, `stable-alpine`, `1.22-alpine`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/stable/alpine/Dockerfile) -- [`1.22.1-alpine-perl`, `stable-alpine-perl`, `1.22-alpine-perl`](https://github.com/nginxinc/docker-nginx/blob/fef51235521d1cdf8b05d8cb1378a526d2abf421/stable/alpine-perl/Dockerfile) +- [`1.29.3`, `mainline`, `1`, `1.29`, `latest`, `1.29.3-trixie`, `mainline-trixie`, `1-trixie`, `1.29-trixie`, `trixie`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/debian/Dockerfile) + +- [`1.29.3-perl`, `mainline-perl`, `1-perl`, `1.29-perl`, `perl`, `1.29.3-trixie-perl`, `mainline-trixie-perl`, `1-trixie-perl`, `1.29-trixie-perl`, `trixie-perl`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/debian-perl/Dockerfile) + +- [`1.29.3-otel`, `mainline-otel`, `1-otel`, `1.29-otel`, `otel`, `1.29.3-trixie-otel`, `mainline-trixie-otel`, `1-trixie-otel`, `1.29-trixie-otel`, `trixie-otel`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/debian-otel/Dockerfile) + +- [`1.29.3-alpine`, `mainline-alpine`, `1-alpine`, `1.29-alpine`, `alpine`, `1.29.3-alpine3.22`, `mainline-alpine3.22`, `1-alpine3.22`, `1.29-alpine3.22`, `alpine3.22`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/alpine/Dockerfile) + +- [`1.29.3-alpine-perl`, `mainline-alpine-perl`, `1-alpine-perl`, `1.29-alpine-perl`, `alpine-perl`, `1.29.3-alpine3.22-perl`, `mainline-alpine3.22-perl`, `1-alpine3.22-perl`, `1.29-alpine3.22-perl`, `alpine3.22-perl`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/alpine-perl/Dockerfile) + +- [`1.29.3-alpine-slim`, `mainline-alpine-slim`, `1-alpine-slim`, `1.29-alpine-slim`, `alpine-slim`, `1.29.3-alpine3.22-slim`, `mainline-alpine3.22-slim`, `1-alpine3.22-slim`, `1.29-alpine3.22-slim`, `alpine3.22-slim`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/alpine-slim/Dockerfile) + +- [`1.29.3-alpine-otel`, `mainline-alpine-otel`, `1-alpine-otel`, `1.29-alpine-otel`, `alpine-otel`, `1.29.3-alpine3.22-otel`, `mainline-alpine3.22-otel`, `1-alpine3.22-otel`, `1.29-alpine3.22-otel`, `alpine3.22-otel`](https://github.com/nginx/docker-nginx/blob/e4d5453581d9d3618f77c4aeccf2e6171a1cd6ff/mainline/alpine-otel/Dockerfile) + +- [`1.28.0`, `stable`, `1.28`, `1.28.0-bookworm`, `stable-bookworm`, `1.28-bookworm`](https://github.com/nginx/docker-nginx/blob/9b549fdf936778810dbe95a4813899c60444ef1c/stable/debian/Dockerfile) + +- [`1.28.0-perl`, `stable-perl`, `1.28-perl`, `1.28.0-bookworm-perl`, `stable-bookworm-perl`, `1.28-bookworm-perl`](https://github.com/nginx/docker-nginx/blob/7f1d49f6f222f7e588a9066fd53a0ce43c3466a5/stable/debian-perl/Dockerfile) + +- [`1.28.0-otel`, `stable-otel`, `1.28-otel`, `1.28.0-bookworm-otel`, `stable-bookworm-otel`, `1.28-bookworm-otel`](https://github.com/nginx/docker-nginx/blob/7f1d49f6f222f7e588a9066fd53a0ce43c3466a5/stable/debian-otel/Dockerfile) + +- [`1.28.0-alpine`, `stable-alpine`, `1.28-alpine`, `1.28.0-alpine3.21`, `stable-alpine3.21`, `1.28-alpine3.21`](https://github.com/nginx/docker-nginx/blob/7f1d49f6f222f7e588a9066fd53a0ce43c3466a5/stable/alpine/Dockerfile) + +- [`1.28.0-alpine-perl`, `stable-alpine-perl`, `1.28-alpine-perl`, `1.28.0-alpine3.21-perl`, `stable-alpine3.21-perl`, `1.28-alpine3.21-perl`](https://github.com/nginx/docker-nginx/blob/7f1d49f6f222f7e588a9066fd53a0ce43c3466a5/stable/alpine-perl/Dockerfile) + +- [`1.28.0-alpine-slim`, `stable-alpine-slim`, `1.28-alpine-slim`, `1.28.0-alpine3.21-slim`, `stable-alpine3.21-slim`, `1.28-alpine3.21-slim`](https://github.com/nginx/docker-nginx/blob/9b549fdf936778810dbe95a4813899c60444ef1c/stable/alpine-slim/Dockerfile) + +- [`1.28.0-alpine-otel`, `stable-alpine-otel`, `1.28-alpine-otel`, `1.28.0-alpine3.21-otel`, `stable-alpine3.21-otel`, `1.28-alpine3.21-otel`](https://github.com/nginx/docker-nginx/blob/7f1d49f6f222f7e588a9066fd53a0ce43c3466a5/stable/alpine-otel/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/nginxinc/docker-nginx/issues](https://github.com/nginxinc/docker-nginx/issues) + [https://github.com/nginxinc/docker-nginx/issues](https://github.com/nginxinc/docker-nginx/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/nginx/), [`arm32v5`](https://hub.docker.com/r/arm32v5/nginx/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nginx/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nginx/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nginx/), [`i386`](https://hub.docker.com/r/i386/nginx/), [`mips64le`](https://hub.docker.com/r/mips64le/nginx/), [`ppc64le`](https://hub.docker.com/r/ppc64le/nginx/), [`s390x`](https://hub.docker.com/r/s390x/nginx/) + [`amd64`](https://hub.docker.com/r/amd64/nginx/), [`arm32v5`](https://hub.docker.com/r/arm32v5/nginx/), [`arm32v6`](https://hub.docker.com/r/arm32v6/nginx/), [`arm32v7`](https://hub.docker.com/r/arm32v7/nginx/), [`arm64v8`](https://hub.docker.com/r/arm64v8/nginx/), [`i386`](https://hub.docker.com/r/i386/nginx/), [`mips64le`](https://hub.docker.com/r/mips64le/nginx/), [`ppc64le`](https://hub.docker.com/r/ppc64le/nginx/), [`riscv64`](https://hub.docker.com/r/riscv64/nginx/), [`s390x`](https://hub.docker.com/r/s390x/nginx/) - **Published image artifact details**: [repo-info repo's `repos/nginx/` directory](https://github.com/docker-library/repo-info/blob/master/repos/nginx) ([history](https://github.com/docker-library/repo-info/commits/master/repos/nginx)) @@ -76,9 +94,10 @@ FROM nginx COPY static-html-directory /usr/share/nginx/html ``` -Place this file in the same directory as your directory of content ("static-html-directory"), run `docker build -t some-content-nginx .`, then start your container: +Place this file in the same directory as your directory of content ("static-html-directory"), then run these commands to build and start your container: ```console +$ docker build -t some-content-nginx . $ docker run --name some-nginx -d some-content-nginx ``` @@ -90,23 +109,27 @@ $ docker run --name some-nginx -d -p 8080:80 some-content-nginx Then you can hit `http://localhost:8080` or `http://host-ip:8080` in your browser. -## Complex configuration +## Customize configuration + +You can mount your configuration file, or build a new image with it. + +If you wish to adapt the default configuration, use something like the following to get it from a running nginx container: ```console -$ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx +$ docker run --rm --entrypoint=cat nginx /etc/nginx/nginx.conf > /host/path/nginx.conf ``` +And then edit `/host/path/nginx.conf` in your host file system. + For information on the syntax of the nginx configuration files, see [the official documentation](http://nginx.org/en/docs/) (specifically the [Beginner's Guide](http://nginx.org/en/docs/beginners_guide.html#conf_structure)). -If you wish to adapt the default configuration, use something like the following to copy it from a running nginx container: +### Mount your configuration file ```console -$ docker run --name tmp-nginx-container -d nginx -$ docker cp tmp-nginx-container:/etc/nginx/nginx.conf /host/path/nginx.conf -$ docker rm -f tmp-nginx-container +$ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx ``` -This can also be accomplished more cleanly using a simple `Dockerfile` (in `/host/path/`): +### Build a new image with your configuration file ```dockerfile FROM nginx @@ -125,7 +148,7 @@ $ docker run --name my-custom-nginx-container -d custom-nginx Out-of-the-box, nginx doesn't support environment variables inside most configuration blocks. But this image has a function, which will extract environment variables before nginx starts. -Here is an example using docker-compose.yml: +Here is an example using `compose.yaml`: ```yaml web: @@ -181,7 +204,7 @@ Images since version 1.9.8 come with `nginx-debug` binary that produces verbose $ docker run --name my-nginx -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d nginx nginx-debug -g 'daemon off;' ``` -Similar configuration in docker-compose.yml may look like this: +Similar configuration in `compose.yaml` may look like this: ```yaml web: @@ -245,6 +268,8 @@ The `nginx` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. + ## `nginx:-perl` / `nginx:-alpine-perl` Starting with nginx:1.13.0 / mainline and nginx:1.12.0 / stable, the perl module has been removed from the default images. A separate `-perl` tag variant is available if you wish to use the perl module. diff --git a/nginx/content.md b/nginx/content.md index 802adcf100d9..65fb24e8c90e 100644 --- a/nginx/content.md +++ b/nginx/content.md @@ -21,9 +21,10 @@ FROM %%IMAGE%% COPY static-html-directory /usr/share/nginx/html ``` -Place this file in the same directory as your directory of content ("static-html-directory"), run `docker build -t some-content-nginx .`, then start your container: +Place this file in the same directory as your directory of content ("static-html-directory"), then run these commands to build and start your container: ```console +$ docker build -t some-content-nginx . $ docker run --name some-nginx -d some-content-nginx ``` @@ -35,23 +36,27 @@ $ docker run --name some-nginx -d -p 8080:80 some-content-nginx Then you can hit `http://localhost:8080` or `http://host-ip:8080` in your browser. -## Complex configuration +## Customize configuration + +You can mount your configuration file, or build a new image with it. + +If you wish to adapt the default configuration, use something like the following to get it from a running nginx container: ```console -$ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d %%IMAGE%% +$ docker run --rm --entrypoint=cat %%IMAGE%% /etc/nginx/nginx.conf > /host/path/nginx.conf ``` +And then edit `/host/path/nginx.conf` in your host file system. + For information on the syntax of the nginx configuration files, see [the official documentation](http://nginx.org/en/docs/) (specifically the [Beginner's Guide](http://nginx.org/en/docs/beginners_guide.html#conf_structure)). -If you wish to adapt the default configuration, use something like the following to copy it from a running nginx container: +### Mount your configuration file ```console -$ docker run --name tmp-nginx-container -d %%IMAGE%% -$ docker cp tmp-nginx-container:/etc/nginx/nginx.conf /host/path/nginx.conf -$ docker rm -f tmp-nginx-container +$ docker run --name my-custom-nginx-container -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d %%IMAGE%% ``` -This can also be accomplished more cleanly using a simple `Dockerfile` (in `/host/path/`): +### Build a new image with your configuration file ```dockerfile FROM %%IMAGE%% @@ -70,7 +75,7 @@ $ docker run --name my-custom-nginx-container -d custom-nginx Out-of-the-box, %%IMAGE%% doesn't support environment variables inside most configuration blocks. But this image has a function, which will extract environment variables before %%IMAGE%% starts. -Here is an example using docker-compose.yml: +Here is an example using `compose.yaml`: ```yaml web: @@ -126,7 +131,7 @@ Images since version 1.9.8 come with `nginx-debug` binary that produces verbose $ docker run --name my-nginx -v /host/path/nginx.conf:/etc/nginx/nginx.conf:ro -d %%IMAGE%% nginx-debug -g 'daemon off;' ``` -Similar configuration in docker-compose.yml may look like this: +Similar configuration in `compose.yaml` may look like this: ```yaml web: diff --git a/nginx/metadata.json b/nginx/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/nginx/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/node/README.md b/node/README.md index 57565d8f4bbf..bd129c76b0e3 100644 --- a/node/README.md +++ b/node/README.md @@ -24,35 +24,74 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`19-alpine3.16`, `19.4-alpine3.16`, `19.4.0-alpine3.16`, `alpine3.16`, `current-alpine3.16`](https://github.com/nodejs/docker-node/blob/28ad5e0e5d0e80df44d897c9057ffd6419a3c7a5/19/alpine3.16/Dockerfile) -- [`19-alpine`, `19-alpine3.17`, `19.4-alpine`, `19.4-alpine3.17`, `19.4.0-alpine`, `19.4.0-alpine3.17`, `alpine`, `alpine3.17`, `current-alpine`, `current-alpine3.17`](https://github.com/nodejs/docker-node/blob/28ad5e0e5d0e80df44d897c9057ffd6419a3c7a5/19/alpine3.17/Dockerfile) -- [`19`, `19-bullseye`, `19.4`, `19.4-bullseye`, `19.4.0`, `19.4.0-bullseye`, `bullseye`, `current`, `current-bullseye`, `latest`](https://github.com/nodejs/docker-node/blob/28ad5e0e5d0e80df44d897c9057ffd6419a3c7a5/19/bullseye/Dockerfile) -- [`19-bullseye-slim`, `19-slim`, `19.4-bullseye-slim`, `19.4-slim`, `19.4.0-bullseye-slim`, `19.4.0-slim`, `bullseye-slim`, `current-bullseye-slim`, `current-slim`, `slim`](https://github.com/nodejs/docker-node/blob/28ad5e0e5d0e80df44d897c9057ffd6419a3c7a5/19/bullseye-slim/Dockerfile) -- [`19-buster`, `19.4-buster`, `19.4.0-buster`, `buster`, `current-buster`](https://github.com/nodejs/docker-node/blob/28ad5e0e5d0e80df44d897c9057ffd6419a3c7a5/19/buster/Dockerfile) -- [`19-buster-slim`, `19.4-buster-slim`, `19.4.0-buster-slim`, `buster-slim`, `current-buster-slim`](https://github.com/nodejs/docker-node/blob/28ad5e0e5d0e80df44d897c9057ffd6419a3c7a5/19/buster-slim/Dockerfile) -- [`18-alpine3.16`, `18.13-alpine3.16`, `18.13.0-alpine3.16`, `hydrogen-alpine3.16`, `lts-alpine3.16`](https://github.com/nodejs/docker-node/blob/86d8b5dbad62b7c58d2146dafaa7b35086ae2eb8/18/alpine3.16/Dockerfile) -- [`18-alpine`, `18-alpine3.17`, `18.13-alpine`, `18.13-alpine3.17`, `18.13.0-alpine`, `18.13.0-alpine3.17`, `hydrogen-alpine`, `hydrogen-alpine3.17`, `lts-alpine`, `lts-alpine3.17`](https://github.com/nodejs/docker-node/blob/86d8b5dbad62b7c58d2146dafaa7b35086ae2eb8/18/alpine3.17/Dockerfile) -- [`18`, `18-bullseye`, `18.13`, `18.13-bullseye`, `18.13.0`, `18.13.0-bullseye`, `hydrogen`, `hydrogen-bullseye`, `lts`, `lts-bullseye`, `lts-hydrogen`](https://github.com/nodejs/docker-node/blob/86d8b5dbad62b7c58d2146dafaa7b35086ae2eb8/18/bullseye/Dockerfile) -- [`18-bullseye-slim`, `18-slim`, `18.13-bullseye-slim`, `18.13-slim`, `18.13.0-bullseye-slim`, `18.13.0-slim`, `hydrogen-bullseye-slim`, `hydrogen-slim`, `lts-bullseye-slim`, `lts-slim`](https://github.com/nodejs/docker-node/blob/86d8b5dbad62b7c58d2146dafaa7b35086ae2eb8/18/bullseye-slim/Dockerfile) -- [`18-buster`, `18.13-buster`, `18.13.0-buster`, `hydrogen-buster`, `lts-buster`](https://github.com/nodejs/docker-node/blob/86d8b5dbad62b7c58d2146dafaa7b35086ae2eb8/18/buster/Dockerfile) -- [`18-buster-slim`, `18.13-buster-slim`, `18.13.0-buster-slim`, `hydrogen-buster-slim`, `lts-buster-slim`](https://github.com/nodejs/docker-node/blob/86d8b5dbad62b7c58d2146dafaa7b35086ae2eb8/18/buster-slim/Dockerfile) -- [`16-alpine3.16`, `16.19-alpine3.16`, `16.19.0-alpine3.16`, `gallium-alpine3.16`](https://github.com/nodejs/docker-node/blob/2a15356c778b366621aa370a4294c59ac1df9c6a/16/alpine3.16/Dockerfile) -- [`16-alpine`, `16-alpine3.17`, `16.19-alpine`, `16.19-alpine3.17`, `16.19.0-alpine`, `16.19.0-alpine3.17`, `gallium-alpine`, `gallium-alpine3.17`](https://github.com/nodejs/docker-node/blob/2a15356c778b366621aa370a4294c59ac1df9c6a/16/alpine3.17/Dockerfile) -- [`16-bullseye`, `16.19-bullseye`, `16.19.0-bullseye`, `gallium-bullseye`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/16/bullseye/Dockerfile) -- [`16-bullseye-slim`, `16.19-bullseye-slim`, `16.19.0-bullseye-slim`, `gallium-bullseye-slim`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/16/bullseye-slim/Dockerfile) -- [`16`, `16-buster`, `16.19`, `16.19-buster`, `16.19.0`, `16.19.0-buster`, `gallium`, `gallium-buster`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/16/buster/Dockerfile) -- [`16-buster-slim`, `16-slim`, `16.19-buster-slim`, `16.19-slim`, `16.19.0-buster-slim`, `16.19.0-slim`, `gallium-buster-slim`, `gallium-slim`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/16/buster-slim/Dockerfile) -- [`14-alpine3.16`, `14.21-alpine3.16`, `14.21.2-alpine3.16`, `fermium-alpine3.16`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/14/alpine3.16/Dockerfile) -- [`14-alpine`, `14-alpine3.17`, `14.21-alpine`, `14.21-alpine3.17`, `14.21.2-alpine`, `14.21.2-alpine3.17`, `fermium-alpine`, `fermium-alpine3.17`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/14/alpine3.17/Dockerfile) -- [`14-bullseye`, `14.21-bullseye`, `14.21.2-bullseye`, `fermium-bullseye`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/14/bullseye/Dockerfile) -- [`14-bullseye-slim`, `14.21-bullseye-slim`, `14.21.2-bullseye-slim`, `fermium-bullseye-slim`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/14/bullseye-slim/Dockerfile) -- [`14`, `14-buster`, `14.21`, `14.21-buster`, `14.21.2`, `14.21.2-buster`, `fermium`, `fermium-buster`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/14/buster/Dockerfile) -- [`14-buster-slim`, `14-slim`, `14.21-buster-slim`, `14.21-slim`, `14.21.2-buster-slim`, `14.21.2-slim`, `fermium-buster-slim`, `fermium-slim`](https://github.com/nodejs/docker-node/blob/3f8018043408490439723ed3b71ab5578d69ea70/14/buster-slim/Dockerfile) +- [`25-alpine3.21`, `25.2-alpine3.21`, `25.2.0-alpine3.21`, `alpine3.21`, `current-alpine3.21`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/alpine3.21/Dockerfile) + +- [`25-alpine`, `25-alpine3.22`, `25.2-alpine`, `25.2-alpine3.22`, `25.2.0-alpine`, `25.2.0-alpine3.22`, `alpine`, `alpine3.22`, `current-alpine`, `current-alpine3.22`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/alpine3.22/Dockerfile) + +- [`25`, `25-bookworm`, `25.2`, `25.2-bookworm`, `25.2.0`, `25.2.0-bookworm`, `bookworm`, `current`, `current-bookworm`, `latest`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/bookworm/Dockerfile) + +- [`25-bookworm-slim`, `25-slim`, `25.2-bookworm-slim`, `25.2-slim`, `25.2.0-bookworm-slim`, `25.2.0-slim`, `bookworm-slim`, `current-bookworm-slim`, `current-slim`, `slim`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/bookworm-slim/Dockerfile) + +- [`25-bullseye`, `25.2-bullseye`, `25.2.0-bullseye`, `bullseye`, `current-bullseye`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/bullseye/Dockerfile) + +- [`25-bullseye-slim`, `25.2-bullseye-slim`, `25.2.0-bullseye-slim`, `bullseye-slim`, `current-bullseye-slim`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/bullseye-slim/Dockerfile) + +- [`25-trixie`, `25.2-trixie`, `25.2.0-trixie`, `current-trixie`, `trixie`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/trixie/Dockerfile) + +- [`25-trixie-slim`, `25.2-trixie-slim`, `25.2.0-trixie-slim`, `current-trixie-slim`, `trixie-slim`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/25/trixie-slim/Dockerfile) + +- [`24-alpine3.21`, `24.11-alpine3.21`, `24.11.1-alpine3.21`, `krypton-alpine3.21`, `lts-alpine3.21`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/alpine3.21/Dockerfile) + +- [`24-alpine`, `24-alpine3.22`, `24.11-alpine`, `24.11-alpine3.22`, `24.11.1-alpine`, `24.11.1-alpine3.22`, `krypton-alpine`, `krypton-alpine3.22`, `lts-alpine`, `lts-alpine3.22`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/alpine3.22/Dockerfile) + +- [`24`, `24-bookworm`, `24.11`, `24.11-bookworm`, `24.11.1`, `24.11.1-bookworm`, `krypton`, `krypton-bookworm`, `lts`, `lts-bookworm`, `lts-krypton`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/bookworm/Dockerfile) + +- [`24-bookworm-slim`, `24-slim`, `24.11-bookworm-slim`, `24.11-slim`, `24.11.1-bookworm-slim`, `24.11.1-slim`, `krypton-bookworm-slim`, `krypton-slim`, `lts-bookworm-slim`, `lts-slim`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/bookworm-slim/Dockerfile) + +- [`24-bullseye`, `24.11-bullseye`, `24.11.1-bullseye`, `krypton-bullseye`, `lts-bullseye`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/bullseye/Dockerfile) + +- [`24-bullseye-slim`, `24.11-bullseye-slim`, `24.11.1-bullseye-slim`, `krypton-bullseye-slim`, `lts-bullseye-slim`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/bullseye-slim/Dockerfile) + +- [`24-trixie`, `24.11-trixie`, `24.11.1-trixie`, `krypton-trixie`, `lts-trixie`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/trixie/Dockerfile) + +- [`24-trixie-slim`, `24.11-trixie-slim`, `24.11.1-trixie-slim`, `krypton-trixie-slim`, `lts-trixie-slim`](https://github.com/nodejs/docker-node/blob/a364e16a23fb97ea9768e5adbae36f1de63f44e9/24/trixie-slim/Dockerfile) + +- [`22-alpine3.21`, `22.21-alpine3.21`, `22.21.1-alpine3.21`, `jod-alpine3.21`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/alpine3.21/Dockerfile) + +- [`22-alpine`, `22-alpine3.22`, `22.21-alpine`, `22.21-alpine3.22`, `22.21.1-alpine`, `22.21.1-alpine3.22`, `jod-alpine`, `jod-alpine3.22`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/alpine3.22/Dockerfile) + +- [`22`, `22-bookworm`, `22.21`, `22.21-bookworm`, `22.21.1`, `22.21.1-bookworm`, `jod`, `jod-bookworm`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/bookworm/Dockerfile) + +- [`22-bookworm-slim`, `22-slim`, `22.21-bookworm-slim`, `22.21-slim`, `22.21.1-bookworm-slim`, `22.21.1-slim`, `jod-bookworm-slim`, `jod-slim`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/bookworm-slim/Dockerfile) + +- [`22-bullseye`, `22.21-bullseye`, `22.21.1-bullseye`, `jod-bullseye`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/bullseye/Dockerfile) + +- [`22-bullseye-slim`, `22.21-bullseye-slim`, `22.21.1-bullseye-slim`, `jod-bullseye-slim`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/bullseye-slim/Dockerfile) + +- [`22-trixie`, `22.21-trixie`, `22.21.1-trixie`, `jod-trixie`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/trixie/Dockerfile) + +- [`22-trixie-slim`, `22.21-trixie-slim`, `22.21.1-trixie-slim`, `jod-trixie-slim`](https://github.com/nodejs/docker-node/blob/bf78d7603fbea92cd3652edb3b2edadd6f5a3fe8/22/trixie-slim/Dockerfile) + +- [`20-alpine3.21`, `20.19-alpine3.21`, `20.19.5-alpine3.21`, `iron-alpine3.21`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/alpine3.21/Dockerfile) + +- [`20-alpine`, `20-alpine3.22`, `20.19-alpine`, `20.19-alpine3.22`, `20.19.5-alpine`, `20.19.5-alpine3.22`, `iron-alpine`, `iron-alpine3.22`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/alpine3.22/Dockerfile) + +- [`20`, `20-bookworm`, `20.19`, `20.19-bookworm`, `20.19.5`, `20.19.5-bookworm`, `iron`, `iron-bookworm`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/bookworm/Dockerfile) + +- [`20-bookworm-slim`, `20-slim`, `20.19-bookworm-slim`, `20.19-slim`, `20.19.5-bookworm-slim`, `20.19.5-slim`, `iron-bookworm-slim`, `iron-slim`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/bookworm-slim/Dockerfile) + +- [`20-bullseye`, `20.19-bullseye`, `20.19.5-bullseye`, `iron-bullseye`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/bullseye/Dockerfile) + +- [`20-bullseye-slim`, `20.19-bullseye-slim`, `20.19.5-bullseye-slim`, `iron-bullseye-slim`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/bullseye-slim/Dockerfile) + +- [`20-trixie`, `20.19-trixie`, `20.19.5-trixie`, `iron-trixie`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/trixie/Dockerfile) + +- [`20-trixie-slim`, `20.19-trixie-slim`, `20.19.5-trixie-slim`, `iron-trixie-slim`](https://github.com/nodejs/docker-node/blob/3e2f6d57af464dc2ecd21b0a295d294ec4f52640/20/trixie-slim/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/nodejs/docker-node/issues](https://github.com/nodejs/docker-node/issues) + [https://github.com/nodejs/docker-node/issues](https://github.com/nodejs/docker-node/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/node/), [`arm32v6`](https://hub.docker.com/r/arm32v6/node/), [`arm32v7`](https://hub.docker.com/r/arm32v7/node/), [`arm64v8`](https://hub.docker.com/r/arm64v8/node/), [`ppc64le`](https://hub.docker.com/r/ppc64le/node/), [`s390x`](https://hub.docker.com/r/s390x/node/) @@ -92,7 +131,7 @@ The `node` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm, bullseye, or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. diff --git a/node/metadata.json b/node/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/node/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/notary/README-short.txt b/notary/README-short.txt index 99f135d97a13..c73b1569f901 100644 --- a/notary/README-short.txt +++ b/notary/README-short.txt @@ -1 +1 @@ -Notary server and signer cooperatively handle signing and distribution of notary repositories. +DEPRECATED; Notary server and signer cooperatively handle signing and distribution diff --git a/notary/README.md b/notary/README.md index 41b75ac2b245..9fea159ddefd 100644 --- a/notary/README.md +++ b/notary/README.md @@ -14,6 +14,10 @@ WARNING: --> +# **DEPRECATION NOTICE** + +The [upstream Notary project](https://github.com/notaryproject/notary) was archived as of July 30, 2025. For more information, see [notaryproject/.github#70](https://github.com/notaryproject/.github/issues/70). + # Quick reference - **Maintained by**: @@ -24,16 +28,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`server-0.7.0`, `server`](https://github.com/docker/notary-official-images/blob/77b9b7833f8dd6be07104b214193788795a320ff/notary-server/Dockerfile) -- [`signer-0.7.0`, `signer`](https://github.com/docker/notary-official-images/blob/77b9b7833f8dd6be07104b214193788795a320ff/notary-signer/Dockerfile) +**No supported tags** # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker/notary-official-images/issues](https://github.com/docker/notary-official-images/issues) + [https://github.com/docker/notary-official-images/issues](https://github.com/docker/notary-official-images/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/notary/), [`arm32v6`](https://hub.docker.com/r/arm32v6/notary/), [`arm64v8`](https://hub.docker.com/r/arm64v8/notary/), [`i386`](https://hub.docker.com/r/i386/notary/), [`ppc64le`](https://hub.docker.com/r/ppc64le/notary/), [`s390x`](https://hub.docker.com/r/s390x/notary/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/notary/` directory](https://github.com/docker-library/repo-info/blob/master/repos/notary) ([history](https://github.com/docker-library/repo-info/commits/master/repos/notary)) diff --git a/notary/deprecated.md b/notary/deprecated.md new file mode 100644 index 000000000000..f3bc92d7224b --- /dev/null +++ b/notary/deprecated.md @@ -0,0 +1 @@ +The [upstream Notary project](https://github.com/notaryproject/notary) was archived as of July 30, 2025. For more information, see [notaryproject/.github#70](https://github.com/notaryproject/.github/issues/70). diff --git a/notary/metadata.json b/notary/metadata.json new file mode 100644 index 000000000000..f1e52700787d --- /dev/null +++ b/notary/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "security" + ] + } +} diff --git a/odoo/README.md b/odoo/README.md index 3927f30bb58a..aa5077818fbc 100644 --- a/odoo/README.md +++ b/odoo/README.md @@ -24,17 +24,19 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`16.0`, `16`, `latest`](https://github.com/odoo/docker/blob/9674beb8a5ae48981bae2266b8c373d4eb7dd5e7/16.0/Dockerfile) -- [`15.0`, `15`](https://github.com/odoo/docker/blob/9674beb8a5ae48981bae2266b8c373d4eb7dd5e7/15.0/Dockerfile) -- [`14.0`, `14`](https://github.com/odoo/docker/blob/9674beb8a5ae48981bae2266b8c373d4eb7dd5e7/14.0/Dockerfile) +- [`19.0-20251106`, `19.0`, `19`, `latest`](https://github.com/odoo/docker/blob/3ca54f4a7f7325b3b58fdb586143dd406a4863fa/19.0/Dockerfile) + +- [`18.0-20251106`, `18.0`, `18`](https://github.com/odoo/docker/blob/3ca54f4a7f7325b3b58fdb586143dd406a4863fa/18.0/Dockerfile) + +- [`17.0-20251106`, `17.0`, `17`](https://github.com/odoo/docker/blob/3ca54f4a7f7325b3b58fdb586143dd406a4863fa/17.0/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/odoo/docker/issues](https://github.com/odoo/docker/issues) + [https://github.com/odoo/docker/issues](https://github.com/odoo/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/odoo/) + [`amd64`](https://hub.docker.com/r/amd64/odoo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/odoo/), [`ppc64le`](https://hub.docker.com/r/ppc64le/odoo/) - **Published image artifact details**: [repo-info repo's `repos/odoo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/odoo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/odoo)) @@ -62,7 +64,7 @@ This image requires a running PostgreSQL server. ## Start a PostgreSQL server ```console -$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13 +$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15 ``` ## Start an Odoo instance @@ -95,7 +97,7 @@ The path `/var/lib/odoo` used as the mount point of the volume must match the od Note that the same principle applies to the Postgresql container and a named volume can be used to preserve the database when the container is removed. So the database container could be started like this (before the odoo container): ```console -$ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13 +$ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15 ``` ## Stop and restart a PostgreSQL server @@ -112,7 +114,7 @@ The default configuration file for the server (located at `/etc/odoo/odoo.conf`) $ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t odoo ``` -Please use [this configuration template](https://github.com/odoo/docker/blob/master/14.0/odoo.conf) to write your custom configuration as we already set some arguments for running Odoo inside a Docker container. +Please use [this configuration template](https://github.com/odoo/docker/blob/master/17.0/odoo.conf) to write your custom configuration as we already set some arguments for running Odoo inside a Docker container. You can also directly specify Odoo arguments inline. Those arguments must be given after the keyword `--` in the command-line, as follows @@ -128,6 +130,8 @@ You can mount your own Odoo addons within the Odoo container, at `/mnt/extra-add $ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t odoo ``` +**Note:** Altough there is no official Odoo Enterprise Docker image, the Enterprise modules can be mounted by using the above mentionned method. + ## Run multiple Odoo instances ```console @@ -135,7 +139,7 @@ $ docker run -p 8070:8069 --name odoo2 --link db:db -t odoo $ docker run -p 8071:8069 --name odoo3 --link db:db -t odoo ``` -Please note that for plain use of mails and reports functionalities, when the host and container ports differ (e.g. 8070 and 8069), one has to set, in Odoo, Settings->Parameters->System Parameters (requires technical features), web.base.url to the container port (e.g. 127.0.0.1:8069). +**Note:** For plain use of mails and reports functionalities, when the host and container ports differ (e.g. 8070 and 8069), one has to set, in Odoo, `Settings->Parameters->System Parameters` (requires technical features), web.base.url to the container port (e.g. 127.0.0.1:8069). ## Environment Variables @@ -148,19 +152,18 @@ Tweak these environment variables to easily connect to a postgres server: ## Docker Compose examples -The simplest `docker-compose.yml` file would be: +The simplest `compose.yaml` file would be: ```yml -version: '3.1' services: web: - image: odoo:14.0 + image: odoo:17.0 depends_on: - db ports: - "8069:8069" db: - image: postgres:13 + image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo @@ -170,20 +173,19 @@ services: If the default postgres credentials does not suit you, tweak the environment variables: ```yml -version: '3.1' services: web: - image: odoo:14.0 + image: odoo:17.0 depends_on: - mydb ports: - "8069:8069" environment: - - HOST=mydb - - USER=odoo - - PASSWORD=myodoo + - HOST=mydb + - USER=odoo + - PASSWORD=myodoo mydb: - image: postgres:13 + image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=myodoo @@ -198,10 +200,9 @@ Here's a last example showing you how to - use a `secrets` file named `odoo_pg_pass` that contains the postgreql password shared by both services ```yml -version: '3.1' services: web: - image: odoo:14.0 + image: odoo:17.0 depends_on: - db ports: @@ -215,7 +216,7 @@ services: secrets: - postgresql_password db: - image: postgres:13 + image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password @@ -234,29 +235,27 @@ secrets: file: odoo_pg_pass ``` -To start your Odoo instance, go in the directory of the `docker-compose.yml` file you created from the previous examples and type: +To start your Odoo instance, go in the directory of the `compose.yaml` file you created from the previous examples and type: ```console -docker-compose up -d +docker compose up -d ``` # How to upgrade this image -Odoo images are updated on a regular basis to make them use recent releases (a new release of each version of Odoo is built [every night](http://nightly.odoo.com/)). Please be aware that what follows is about upgrading from an old release to the latest one provided of the same major version, as upgrading from a major version to another is a much more complex process requiring elaborated migration scripts (see [Odoo Enterprise Upgrade page](https://upgrade.odoo.com/database/upload) or this [community project](https://doc.therp.nl/openupgrade/) which aims to write those scripts). +Odoo images are updated on a regular basis to make them use recent releases (a new release of each version of Odoo is built [every night](http://nightly.odoo.com/)). Please be aware that what follows is about upgrading from an old release to the latest one provided of the same major version, as upgrading from a major version to another is a much more complex process requiring elaborated migration scripts (see [Odoo Upgrade page](https://upgrade.odoo.com) or this [community project](https://github.com/OCA/OpenUpgrade) which aims to write those scripts). Suppose you created a database from an Odoo instance named old-odoo, and you want to access this database from a new Odoo instance named new-odoo, e.g. because you've just downloaded a newer Odoo image. -By default, Odoo 14.0 uses a filestore (located at /var/lib/odoo/filestore/) for attachments. You should restore this filestore in your new Odoo instance by running +By default, Odoo 16.0+ uses a filestore (located at `/var/lib/odoo/filestore/`) for attachments. You should restore this filestore in your new Odoo instance by running ```console $ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo ``` -You can also simply prevent Odoo from using the filestore by setting the system parameter `ir_attachment.location` to `db-storage` in Settings->Parameters->System Parameters (requires technical features). - # License -View [license information](https://raw.githubusercontent.com/odoo/odoo/14.0/LICENSE) for the software contained in this image. +View [license information](https://github.com/odoo/odoo/blob/master/LICENSE) for the software contained in this image. As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/odoo/content.md b/odoo/content.md index f9f054b55258..db07cef10dd8 100644 --- a/odoo/content.md +++ b/odoo/content.md @@ -13,7 +13,7 @@ This image requires a running PostgreSQL server. ## Start a PostgreSQL server ```console -$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13 +$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15 ``` ## Start an Odoo instance @@ -27,8 +27,8 @@ The alias of the container running Postgres must be db for Odoo to be able to co ## Stop and restart an Odoo instance ```console -$ docker stop odoo -$ docker start -a odoo +$ docker stop %%IMAGE%% +$ docker start -a %%IMAGE%% ``` ## Use named volumes to preserve data @@ -36,7 +36,7 @@ $ docker start -a odoo When the Odoo container is created like described above, the odoo filestore is created inside the container. If the container is removed, the filestore is lost. The preferred way to prevent that is by using a Docker named [volume](https://docs.docker.com/storage/volumes/). ```console -$ docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t odoo +$ docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t %%IMAGE%% ``` With the above command, the volume named `odoo-data` will persist even if the container is removed and can be re-used by issuing the same command. @@ -46,7 +46,7 @@ The path `/var/lib/odoo` used as the mount point of the volume must match the od Note that the same principle applies to the Postgresql container and a named volume can be used to preserve the database when the container is removed. So the database container could be started like this (before the odoo container): ```console -$ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13 +$ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15 ``` ## Stop and restart a PostgreSQL server @@ -63,7 +63,7 @@ The default configuration file for the server (located at `/etc/odoo/odoo.conf`) $ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t %%IMAGE%% ``` -Please use [this configuration template](https://github.com/odoo/docker/blob/master/14.0/odoo.conf) to write your custom configuration as we already set some arguments for running Odoo inside a Docker container. +Please use [this configuration template](https://github.com/odoo/docker/blob/master/17.0/odoo.conf) to write your custom configuration as we already set some arguments for running Odoo inside a Docker container. You can also directly specify Odoo arguments inline. Those arguments must be given after the keyword `--` in the command-line, as follows @@ -79,6 +79,8 @@ You can mount your own Odoo addons within the Odoo container, at `/mnt/extra-add $ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t %%IMAGE%% ``` +**Note:** Altough there is no official Odoo Enterprise Docker image, the Enterprise modules can be mounted by using the above mentionned method. + ## Run multiple Odoo instances ```console @@ -86,7 +88,7 @@ $ docker run -p 8070:8069 --name odoo2 --link db:db -t %%IMAGE%% $ docker run -p 8071:8069 --name odoo3 --link db:db -t %%IMAGE%% ``` -Please note that for plain use of mails and reports functionalities, when the host and container ports differ (e.g. 8070 and 8069), one has to set, in Odoo, Settings->Parameters->System Parameters (requires technical features), web.base.url to the container port (e.g. 127.0.0.1:8069). +**Note:** For plain use of mails and reports functionalities, when the host and container ports differ (e.g. 8070 and 8069), one has to set, in Odoo, `Settings->Parameters->System Parameters` (requires technical features), web.base.url to the container port (e.g. 127.0.0.1:8069). ## Environment Variables @@ -99,19 +101,18 @@ Tweak these environment variables to easily connect to a postgres server: ## Docker Compose examples -The simplest `docker-compose.yml` file would be: +The simplest `compose.yaml` file would be: ```yml -version: '3.1' services: web: - image: %%IMAGE%%:14.0 + image: %%IMAGE%%:17.0 depends_on: - db ports: - "8069:8069" db: - image: postgres:13 + image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo @@ -121,20 +122,19 @@ services: If the default postgres credentials does not suit you, tweak the environment variables: ```yml -version: '3.1' services: web: - image: %%IMAGE%%:14.0 + image: %%IMAGE%%:17.0 depends_on: - mydb ports: - "8069:8069" environment: - - HOST=mydb - - USER=odoo - - PASSWORD=myodoo + - HOST=mydb + - USER=odoo + - PASSWORD=myodoo mydb: - image: postgres:13 + image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=myodoo @@ -149,10 +149,9 @@ Here's a last example showing you how to - use a `secrets` file named `odoo_pg_pass` that contains the postgreql password shared by both services ```yml -version: '3.1' services: web: - image: %%IMAGE%%:14.0 + image: %%IMAGE%%:17.0 depends_on: - db ports: @@ -166,7 +165,7 @@ services: secrets: - postgresql_password db: - image: postgres:13 + image: postgres:15 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password @@ -185,22 +184,20 @@ secrets: file: odoo_pg_pass ``` -To start your Odoo instance, go in the directory of the `docker-compose.yml` file you created from the previous examples and type: +To start your Odoo instance, go in the directory of the `compose.yaml` file you created from the previous examples and type: ```console -docker-compose up -d +docker compose up -d ``` # How to upgrade this image -Odoo images are updated on a regular basis to make them use recent releases (a new release of each version of Odoo is built [every night](http://nightly.odoo.com/)). Please be aware that what follows is about upgrading from an old release to the latest one provided of the same major version, as upgrading from a major version to another is a much more complex process requiring elaborated migration scripts (see [Odoo Enterprise Upgrade page](https://upgrade.odoo.com/database/upload) or this [community project](https://doc.therp.nl/openupgrade/) which aims to write those scripts). +Odoo images are updated on a regular basis to make them use recent releases (a new release of each version of Odoo is built [every night](http://nightly.odoo.com/)). Please be aware that what follows is about upgrading from an old release to the latest one provided of the same major version, as upgrading from a major version to another is a much more complex process requiring elaborated migration scripts (see [Odoo Upgrade page](https://upgrade.odoo.com) or this [community project](https://github.com/OCA/OpenUpgrade) which aims to write those scripts). Suppose you created a database from an Odoo instance named old-odoo, and you want to access this database from a new Odoo instance named new-odoo, e.g. because you've just downloaded a newer Odoo image. -By default, Odoo 14.0 uses a filestore (located at /var/lib/odoo/filestore/) for attachments. You should restore this filestore in your new Odoo instance by running +By default, Odoo 16.0+ uses a filestore (located at `/var/lib/odoo/filestore/`) for attachments. You should restore this filestore in your new Odoo instance by running ```console $ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t %%IMAGE%% ``` - -You can also simply prevent Odoo from using the filestore by setting the system parameter `ir_attachment.location` to `db-storage` in Settings->Parameters->System Parameters (requires technical features). diff --git a/odoo/license.md b/odoo/license.md index 31c83177006d..785f6a2deac2 100644 --- a/odoo/license.md +++ b/odoo/license.md @@ -1 +1 @@ -View [license information](https://raw.githubusercontent.com/odoo/odoo/14.0/LICENSE) for the software contained in this image. +View [license information](https://github.com/odoo/odoo/blob/master/LICENSE) for the software contained in this image. diff --git a/odoo/metadata.json b/odoo/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/odoo/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/open-liberty/README-short.txt b/open-liberty/README-short.txt index 46fab7571f4c..6be691649936 100644 --- a/open-liberty/README-short.txt +++ b/open-liberty/README-short.txt @@ -1 +1 @@ -Open Liberty multi-architecture images based on Ubuntu 18.04 +Open Liberty multi-architecture images based on Ubuntu diff --git a/open-liberty/README.md b/open-liberty/README.md index 05a65280c44d..b9ebd938be6e 100644 --- a/open-liberty/README.md +++ b/open-liberty/README.md @@ -24,41 +24,79 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`beta`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/beta/Dockerfile.ubuntu.openjdk8) -- [`beta-java11`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/beta/Dockerfile.ubuntu.openjdk11) -- [`beta-java17`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/beta/Dockerfile.ubuntu.openjdk17) -- [`kernel-slim`, `kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8) -- [`kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11) -- [`kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17) -- [`full`, `full-java8-openj9`, `latest`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/full/Dockerfile.ubuntu.openjdk8) -- [`full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/full/Dockerfile.ubuntu.openjdk11) -- [`full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/latest/full/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.13-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.13/kernel-slim/Dockerfile.ubuntu.openjdk8) -- [`22.0.0.13-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.13/kernel-slim/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.13-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.13/kernel-slim/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.13-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.13/full/Dockerfile.ubuntu.openjdk8) -- [`22.0.0.13-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.13/full/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.13-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.13/full/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.12-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.12/kernel-slim/Dockerfile.ubuntu.openjdk8) -- [`22.0.0.12-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.12/kernel-slim/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.12-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.12/kernel-slim/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.12-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.12/full/Dockerfile.ubuntu.openjdk8) -- [`22.0.0.12-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.12/full/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.12-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.12/full/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.9-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk8) -- [`22.0.0.9-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.9-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.9-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.9/full/Dockerfile.ubuntu.openjdk8) -- [`22.0.0.9-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.9/full/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.9-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/e93293a50a8dd38f6c8d35dd13b3972dfb18761a/releases/22.0.0.9/full/Dockerfile.ubuntu.openjdk17) +- [`beta`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/beta/Dockerfile.ubuntu.openjdk8) + +- [`beta-java11`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/beta/Dockerfile.ubuntu.openjdk11) + +- [`beta-java17`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/beta/Dockerfile.ubuntu.openjdk17) + +- [`kernel-slim`, `kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk8) + +- [`kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk11) + +- [`kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/kernel-slim/Dockerfile.ubuntu.openjdk17) + +- [`full`, `full-java8-openj9`, `latest`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/full/Dockerfile.ubuntu.openjdk8) + +- [`full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/full/Dockerfile.ubuntu.openjdk11) + +- [`full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/latest/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.3-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.3/kernel-slim/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.3-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.3/kernel-slim/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.3-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.3/kernel-slim/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.3-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.3/full/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.3-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.3/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.3-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.3/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.6-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.6/kernel-slim/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.6-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.6/kernel-slim/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.6-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.6/kernel-slim/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.6-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.6/full/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.6-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.6/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.6-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.6/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.9-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.9-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.9-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.9/kernel-slim/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.9-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.9/full/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.9-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.9/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.9-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.9/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.11-kernel-slim-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.11/kernel-slim/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.11-kernel-slim-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.11/kernel-slim/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.11-kernel-slim-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.11/kernel-slim/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.11-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.11/full/Dockerfile.ubuntu.openjdk8) + +- [`25.0.0.11-full-java11-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.11/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.11-full-java17-openj9`](https://github.com/OpenLiberty/ci.docker/blob/7e898c31468055f564c290761b72794c50e57c74/releases/25.0.0.11/full/Dockerfile.ubuntu.openjdk17) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/OpenLiberty/ci.docker/issues](https://github.com/OpenLiberty/ci.docker/issues) + [https://github.com/OpenLiberty/ci.docker/issues](https://github.com/OpenLiberty/ci.docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/open-liberty/), [`ppc64le`](https://hub.docker.com/r/ppc64le/open-liberty/), [`s390x`](https://hub.docker.com/r/s390x/open-liberty/) + [`amd64`](https://hub.docker.com/r/amd64/open-liberty/), [`arm64v8`](https://hub.docker.com/r/arm64v8/open-liberty/), [`ppc64le`](https://hub.docker.com/r/ppc64le/open-liberty/), [`s390x`](https://hub.docker.com/r/s390x/open-liberty/) - **Published image artifact details**: [repo-info repo's `repos/open-liberty/` directory](https://github.com/docker-library/repo-info/blob/master/repos/open-liberty) ([history](https://github.com/docker-library/repo-info/commits/master/repos/open-liberty)) diff --git a/open-liberty/metadata.json b/open-liberty/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/open-liberty/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/openjdk/README.md b/openjdk/README.md index 877c15110afb..40d60fe5b2eb 100644 --- a/openjdk/README.md +++ b/openjdk/README.md @@ -42,68 +42,48 @@ The only tags which will continue to receive updates beyond July 2022 will be Ea ## Simple Tags -- [`21-ea-5-jdk-oraclelinux8`, `21-ea-5-oraclelinux8`, `21-ea-jdk-oraclelinux8`, `21-ea-oraclelinux8`, `21-jdk-oraclelinux8`, `21-oraclelinux8`, `21-ea-5-jdk-oracle`, `21-ea-5-oracle`, `21-ea-jdk-oracle`, `21-ea-oracle`, `21-jdk-oracle`, `21-oracle`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/oraclelinux8/Dockerfile) -- [`21-ea-5-jdk-oraclelinux7`, `21-ea-5-oraclelinux7`, `21-ea-jdk-oraclelinux7`, `21-ea-oraclelinux7`, `21-jdk-oraclelinux7`, `21-oraclelinux7`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/oraclelinux7/Dockerfile) -- [`21-ea-5-jdk-bullseye`, `21-ea-5-bullseye`, `21-ea-jdk-bullseye`, `21-ea-bullseye`, `21-jdk-bullseye`, `21-bullseye`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/bullseye/Dockerfile) -- [`21-ea-5-jdk-slim-bullseye`, `21-ea-5-slim-bullseye`, `21-ea-jdk-slim-bullseye`, `21-ea-slim-bullseye`, `21-jdk-slim-bullseye`, `21-slim-bullseye`, `21-ea-5-jdk-slim`, `21-ea-5-slim`, `21-ea-jdk-slim`, `21-ea-slim`, `21-jdk-slim`, `21-slim`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/slim-bullseye/Dockerfile) -- [`21-ea-5-jdk-buster`, `21-ea-5-buster`, `21-ea-jdk-buster`, `21-ea-buster`, `21-jdk-buster`, `21-buster`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/buster/Dockerfile) -- [`21-ea-5-jdk-slim-buster`, `21-ea-5-slim-buster`, `21-ea-jdk-slim-buster`, `21-ea-slim-buster`, `21-jdk-slim-buster`, `21-slim-buster`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/slim-buster/Dockerfile) -- [`21-ea-5-jdk-windowsservercore-ltsc2022`, `21-ea-5-windowsservercore-ltsc2022`, `21-ea-jdk-windowsservercore-ltsc2022`, `21-ea-windowsservercore-ltsc2022`, `21-jdk-windowsservercore-ltsc2022`, `21-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/windowsservercore-ltsc2022/Dockerfile) -- [`21-ea-5-jdk-windowsservercore-1809`, `21-ea-5-windowsservercore-1809`, `21-ea-jdk-windowsservercore-1809`, `21-ea-windowsservercore-1809`, `21-jdk-windowsservercore-1809`, `21-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/windowsservercore-1809/Dockerfile) -- [`21-ea-5-jdk-nanoserver-1809`, `21-ea-5-nanoserver-1809`, `21-ea-jdk-nanoserver-1809`, `21-ea-nanoserver-1809`, `21-jdk-nanoserver-1809`, `21-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/nanoserver-1809/Dockerfile) -- [`20-ea-31-jdk-oraclelinux8`, `20-ea-31-oraclelinux8`, `20-ea-jdk-oraclelinux8`, `20-ea-oraclelinux8`, `20-jdk-oraclelinux8`, `20-oraclelinux8`, `20-ea-31-jdk-oracle`, `20-ea-31-oracle`, `20-ea-jdk-oracle`, `20-ea-oracle`, `20-jdk-oracle`, `20-oracle`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/oraclelinux8/Dockerfile) -- [`20-ea-31-jdk-oraclelinux7`, `20-ea-31-oraclelinux7`, `20-ea-jdk-oraclelinux7`, `20-ea-oraclelinux7`, `20-jdk-oraclelinux7`, `20-oraclelinux7`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/oraclelinux7/Dockerfile) -- [`20-ea-31-jdk-bullseye`, `20-ea-31-bullseye`, `20-ea-jdk-bullseye`, `20-ea-bullseye`, `20-jdk-bullseye`, `20-bullseye`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/bullseye/Dockerfile) -- [`20-ea-31-jdk-slim-bullseye`, `20-ea-31-slim-bullseye`, `20-ea-jdk-slim-bullseye`, `20-ea-slim-bullseye`, `20-jdk-slim-bullseye`, `20-slim-bullseye`, `20-ea-31-jdk-slim`, `20-ea-31-slim`, `20-ea-jdk-slim`, `20-ea-slim`, `20-jdk-slim`, `20-slim`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/slim-bullseye/Dockerfile) -- [`20-ea-31-jdk-buster`, `20-ea-31-buster`, `20-ea-jdk-buster`, `20-ea-buster`, `20-jdk-buster`, `20-buster`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/buster/Dockerfile) -- [`20-ea-31-jdk-slim-buster`, `20-ea-31-slim-buster`, `20-ea-jdk-slim-buster`, `20-ea-slim-buster`, `20-jdk-slim-buster`, `20-slim-buster`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/slim-buster/Dockerfile) -- [`20-ea-31-jdk-windowsservercore-ltsc2022`, `20-ea-31-windowsservercore-ltsc2022`, `20-ea-jdk-windowsservercore-ltsc2022`, `20-ea-windowsservercore-ltsc2022`, `20-jdk-windowsservercore-ltsc2022`, `20-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/windowsservercore-ltsc2022/Dockerfile) -- [`20-ea-31-jdk-windowsservercore-1809`, `20-ea-31-windowsservercore-1809`, `20-ea-jdk-windowsservercore-1809`, `20-ea-windowsservercore-1809`, `20-jdk-windowsservercore-1809`, `20-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/windowsservercore-1809/Dockerfile) -- [`20-ea-31-jdk-nanoserver-1809`, `20-ea-31-nanoserver-1809`, `20-ea-jdk-nanoserver-1809`, `20-ea-nanoserver-1809`, `20-jdk-nanoserver-1809`, `20-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/nanoserver-1809/Dockerfile) -- [`18.0.2.1-jdk-oraclelinux8`, `18.0.2.1-oraclelinux8`, `18.0.2-jdk-oraclelinux8`, `18.0.2-oraclelinux8`, `18.0-jdk-oraclelinux8`, `18.0-oraclelinux8`, `18-jdk-oraclelinux8`, `18-oraclelinux8`, `jdk-oraclelinux8`, `oraclelinux8`, `18.0.2.1-jdk-oracle`, `18.0.2.1-oracle`, `18.0.2-jdk-oracle`, `18.0.2-oracle`, `18.0-jdk-oracle`, `18.0-oracle`, `18-jdk-oracle`, `18-oracle`, `jdk-oracle`, `oracle`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/oraclelinux8/Dockerfile) -- [`18.0.2.1-jdk-oraclelinux7`, `18.0.2.1-oraclelinux7`, `18.0.2-jdk-oraclelinux7`, `18.0.2-oraclelinux7`, `18.0-jdk-oraclelinux7`, `18.0-oraclelinux7`, `18-jdk-oraclelinux7`, `18-oraclelinux7`, `jdk-oraclelinux7`, `oraclelinux7`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/oraclelinux7/Dockerfile) -- [`18.0.2.1-jdk-bullseye`, `18.0.2.1-bullseye`, `18.0.2-jdk-bullseye`, `18.0.2-bullseye`, `18.0-jdk-bullseye`, `18.0-bullseye`, `18-jdk-bullseye`, `18-bullseye`, `jdk-bullseye`, `bullseye`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/bullseye/Dockerfile) -- [`18.0.2.1-jdk-slim-bullseye`, `18.0.2.1-slim-bullseye`, `18.0.2-jdk-slim-bullseye`, `18.0.2-slim-bullseye`, `18.0-jdk-slim-bullseye`, `18.0-slim-bullseye`, `18-jdk-slim-bullseye`, `18-slim-bullseye`, `jdk-slim-bullseye`, `slim-bullseye`, `18.0.2.1-jdk-slim`, `18.0.2.1-slim`, `18.0.2-jdk-slim`, `18.0.2-slim`, `18.0-jdk-slim`, `18.0-slim`, `18-jdk-slim`, `18-slim`, `jdk-slim`, `slim`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/slim-bullseye/Dockerfile) -- [`18.0.2.1-jdk-buster`, `18.0.2.1-buster`, `18.0.2-jdk-buster`, `18.0.2-buster`, `18.0-jdk-buster`, `18.0-buster`, `18-jdk-buster`, `18-buster`, `jdk-buster`, `buster`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/buster/Dockerfile) -- [`18.0.2.1-jdk-slim-buster`, `18.0.2.1-slim-buster`, `18.0.2-jdk-slim-buster`, `18.0.2-slim-buster`, `18.0-jdk-slim-buster`, `18.0-slim-buster`, `18-jdk-slim-buster`, `18-slim-buster`, `jdk-slim-buster`, `slim-buster`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/slim-buster/Dockerfile) -- [`18.0.2.1-jdk-windowsservercore-ltsc2022`, `18.0.2.1-windowsservercore-ltsc2022`, `18.0.2-jdk-windowsservercore-ltsc2022`, `18.0.2-windowsservercore-ltsc2022`, `18.0-jdk-windowsservercore-ltsc2022`, `18.0-windowsservercore-ltsc2022`, `18-jdk-windowsservercore-ltsc2022`, `18-windowsservercore-ltsc2022`, `jdk-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/windowsservercore-ltsc2022/Dockerfile) -- [`18.0.2.1-jdk-windowsservercore-1809`, `18.0.2.1-windowsservercore-1809`, `18.0.2-jdk-windowsservercore-1809`, `18.0.2-windowsservercore-1809`, `18.0-jdk-windowsservercore-1809`, `18.0-windowsservercore-1809`, `18-jdk-windowsservercore-1809`, `18-windowsservercore-1809`, `jdk-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/windowsservercore-1809/Dockerfile) -- [`18.0.2.1-jdk-nanoserver-1809`, `18.0.2.1-nanoserver-1809`, `18.0.2-jdk-nanoserver-1809`, `18.0.2-nanoserver-1809`, `18.0-jdk-nanoserver-1809`, `18.0-nanoserver-1809`, `18-jdk-nanoserver-1809`, `18-nanoserver-1809`, `jdk-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/nanoserver-1809/Dockerfile) +- [`26-ea-23-jdk-oraclelinux9`, `26-ea-23-oraclelinux9`, `26-ea-jdk-oraclelinux9`, `26-ea-oraclelinux9`, `26-ea-23-jdk-oracle`, `26-ea-23-oracle`, `26-ea-jdk-oracle`, `26-ea-oracle`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/oraclelinux9/Dockerfile) + +- [`26-ea-23-jdk-oraclelinux8`, `26-ea-23-oraclelinux8`, `26-ea-jdk-oraclelinux8`, `26-ea-oraclelinux8`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/oraclelinux8/Dockerfile) + +- [`26-ea-23-jdk-trixie`, `26-ea-23-trixie`, `26-ea-jdk-trixie`, `26-ea-trixie`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/trixie/Dockerfile) + +- [`26-ea-23-jdk-slim-trixie`, `26-ea-23-slim-trixie`, `26-ea-jdk-slim-trixie`, `26-ea-slim-trixie`, `26-ea-23-jdk-slim`, `26-ea-23-slim`, `26-ea-jdk-slim`, `26-ea-slim`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/slim-trixie/Dockerfile) + +- [`26-ea-23-jdk-bookworm`, `26-ea-23-bookworm`, `26-ea-jdk-bookworm`, `26-ea-bookworm`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/bookworm/Dockerfile) + +- [`26-ea-23-jdk-slim-bookworm`, `26-ea-23-slim-bookworm`, `26-ea-jdk-slim-bookworm`, `26-ea-slim-bookworm`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/slim-bookworm/Dockerfile) + +- [`26-ea-23-jdk-windowsservercore-ltsc2025`, `26-ea-23-windowsservercore-ltsc2025`, `26-ea-jdk-windowsservercore-ltsc2025`, `26-ea-windowsservercore-ltsc2025`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`26-ea-23-jdk-windowsservercore-ltsc2022`, `26-ea-23-windowsservercore-ltsc2022`, `26-ea-jdk-windowsservercore-ltsc2022`, `26-ea-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`26-ea-23-jdk-nanoserver-ltsc2025`, `26-ea-23-nanoserver-ltsc2025`, `26-ea-jdk-nanoserver-ltsc2025`, `26-ea-nanoserver-ltsc2025`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/nanoserver-ltsc2025/Dockerfile) + +- [`26-ea-23-jdk-nanoserver-ltsc2022`, `26-ea-23-nanoserver-ltsc2022`, `26-ea-jdk-nanoserver-ltsc2022`, `26-ea-nanoserver-ltsc2022`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/nanoserver-ltsc2022/Dockerfile) ## Shared Tags -- `21-ea-5-jdk`, `21-ea-5`, `21-ea-jdk`, `21-ea`, `21-jdk`, `21`: - - [`21-ea-5-jdk-oraclelinux8`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/oraclelinux8/Dockerfile) - - [`21-ea-5-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/windowsservercore-ltsc2022/Dockerfile) - - [`21-ea-5-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/windowsservercore-1809/Dockerfile) -- `21-ea-5-jdk-windowsservercore`, `21-ea-5-windowsservercore`, `21-ea-jdk-windowsservercore`, `21-ea-windowsservercore`, `21-jdk-windowsservercore`, `21-windowsservercore`: - - [`21-ea-5-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/windowsservercore-ltsc2022/Dockerfile) - - [`21-ea-5-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/windowsservercore-1809/Dockerfile) -- `21-ea-5-jdk-nanoserver`, `21-ea-5-nanoserver`, `21-ea-jdk-nanoserver`, `21-ea-nanoserver`, `21-jdk-nanoserver`, `21-nanoserver`: - - [`21-ea-5-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/bd86423db3e426763148dff5994388bfae7b98c6/21/jdk/windows/nanoserver-1809/Dockerfile) -- `20-ea-31-jdk`, `20-ea-31`, `20-ea-jdk`, `20-ea`, `20-jdk`, `20`: - - [`20-ea-31-jdk-oraclelinux8`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/oraclelinux8/Dockerfile) - - [`20-ea-31-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/windowsservercore-ltsc2022/Dockerfile) - - [`20-ea-31-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/windowsservercore-1809/Dockerfile) -- `20-ea-31-jdk-windowsservercore`, `20-ea-31-windowsservercore`, `20-ea-jdk-windowsservercore`, `20-ea-windowsservercore`, `20-jdk-windowsservercore`, `20-windowsservercore`: - - [`20-ea-31-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/windowsservercore-ltsc2022/Dockerfile) - - [`20-ea-31-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/windowsservercore-1809/Dockerfile) -- `20-ea-31-jdk-nanoserver`, `20-ea-31-nanoserver`, `20-ea-jdk-nanoserver`, `20-ea-nanoserver`, `20-jdk-nanoserver`, `20-nanoserver`: - - [`20-ea-31-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/144d02bdeaa6b86a548d156e40638445a1836164/20/jdk/windows/nanoserver-1809/Dockerfile) -- `18.0.2.1-jdk`, `18.0.2.1`, `18.0.2-jdk`, `18.0.2`, `18.0-jdk`, `18.0`, `18-jdk`, `18`, `jdk`, `latest`: - - [`18.0.2.1-jdk-oraclelinux8`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/oraclelinux8/Dockerfile) - - [`18.0.2.1-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/windowsservercore-ltsc2022/Dockerfile) - - [`18.0.2.1-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/windowsservercore-1809/Dockerfile) -- `18.0.2.1-jdk-windowsservercore`, `18.0.2.1-windowsservercore`, `18.0.2-jdk-windowsservercore`, `18.0.2-windowsservercore`, `18.0-jdk-windowsservercore`, `18.0-windowsservercore`, `18-jdk-windowsservercore`, `18-windowsservercore`, `jdk-windowsservercore`, `windowsservercore`: - - [`18.0.2.1-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/windowsservercore-ltsc2022/Dockerfile) - - [`18.0.2.1-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/windowsservercore-1809/Dockerfile) -- `18.0.2.1-jdk-nanoserver`, `18.0.2.1-nanoserver`, `18.0.2-jdk-nanoserver`, `18.0.2-nanoserver`, `18.0-jdk-nanoserver`, `18.0-nanoserver`, `18-jdk-nanoserver`, `18-nanoserver`, `jdk-nanoserver`, `nanoserver`: - - [`18.0.2.1-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/4b928d2e5767b0e12058d3b5eceabeb0aa48aec3/18/jdk/windows/nanoserver-1809/Dockerfile) +- `26-ea-23-jdk`, `26-ea-23`, `26-ea-jdk`, `26-ea`: + + - [`26-ea-23-jdk-oraclelinux9`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/oraclelinux9/Dockerfile) + - [`26-ea-23-jdk-windowsservercore-ltsc2025`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/windowsservercore-ltsc2025/Dockerfile) + - [`26-ea-23-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/windowsservercore-ltsc2022/Dockerfile) + +- `26-ea-23-jdk-windowsservercore`, `26-ea-23-windowsservercore`, `26-ea-jdk-windowsservercore`, `26-ea-windowsservercore`: + + - [`26-ea-23-jdk-windowsservercore-ltsc2025`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/windowsservercore-ltsc2025/Dockerfile) + - [`26-ea-23-jdk-windowsservercore-ltsc2022`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/windowsservercore-ltsc2022/Dockerfile) + +- `26-ea-23-jdk-nanoserver`, `26-ea-23-nanoserver`, `26-ea-jdk-nanoserver`, `26-ea-nanoserver`: + + - [`26-ea-23-jdk-nanoserver-ltsc2025`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/nanoserver-ltsc2025/Dockerfile) + - [`26-ea-23-jdk-nanoserver-ltsc2022`](https://github.com/docker-library/openjdk/blob/36063514b1948018de81a29ab00975d4285a1214/26/windows/nanoserver-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/openjdk/issues](https://github.com/docker-library/openjdk/issues) + [https://github.com/docker-library/openjdk/issues](https://github.com/docker-library/openjdk/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/openjdk/), [`arm64v8`](https://hub.docker.com/r/arm64v8/openjdk/), [`windows-amd64`](https://hub.docker.com/r/winamd64/openjdk/) @@ -188,7 +168,7 @@ The `openjdk` images come in many flavors, each designed for a specific use case This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `openjdk:` (from 12 onwards), `openjdk:-oracle` and `openjdk:-oraclelinux8` @@ -200,12 +180,11 @@ The OpenJDK binaries are built by Oracle and are sourced from the [OpenJDK commu ## `openjdk:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/openjdk/metadata.json b/openjdk/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/openjdk/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/oraclelinux/README.md b/oraclelinux/README.md index 068c265fb465..2916fbf09e89 100644 --- a/oraclelinux/README.md +++ b/oraclelinux/README.md @@ -24,17 +24,32 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`9`](https://github.com/oracle/container-images/blob/4205dc2e387076df43d84c44bd2617d8d0770873/9/Dockerfile) -- [`9-slim`](https://github.com/oracle/container-images/blob/4205dc2e387076df43d84c44bd2617d8d0770873/9-slim/Dockerfile) -- [`8.7`, `8`](https://github.com/oracle/container-images/blob/4205dc2e387076df43d84c44bd2617d8d0770873/8/Dockerfile) -- [`8-slim`](https://github.com/oracle/container-images/blob/4205dc2e387076df43d84c44bd2617d8d0770873/8-slim/Dockerfile) -- [`7.9`, `7`](https://github.com/oracle/container-images/blob/4205dc2e387076df43d84c44bd2617d8d0770873/7/Dockerfile) -- [`7-slim`](https://github.com/oracle/container-images/blob/4205dc2e387076df43d84c44bd2617d8d0770873/7-slim/Dockerfile) +- [`10`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/10/Dockerfile) + +- [`10-slim`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/10-slim/Dockerfile) + +- [`9`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/9/Dockerfile) + +- [`9-slim`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/9-slim/Dockerfile) + +- [`9-slim-fips`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/9-slim-fips/Dockerfile) + +- [`8.10`, `8`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/8/Dockerfile) + +- [`8-slim`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/8-slim/Dockerfile) + +- [`8-slim-fips`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/8-slim-fips/Dockerfile) + +- [`7.9`, `7`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/7/Dockerfile) + +- [`7-slim`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/7-slim/Dockerfile) + +- [`7-slim-fips`](https://github.com/oracle/container-images/blob/d5ecb8b13a55dfeaa7b60279ba07b139f6581a34/7-slim-fips/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/oracle/container-images/issues](https://github.com/oracle/container-images/issues) + [https://github.com/oracle/container-images/issues](https://github.com/oracle/container-images/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/oraclelinux/), [`arm64v8`](https://hub.docker.com/r/arm64v8/oraclelinux/) diff --git a/oraclelinux/metadata.json b/oraclelinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/oraclelinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/orientdb/README.md b/orientdb/README.md index 914ed0593d71..28665e2576c1 100644 --- a/orientdb/README.md +++ b/orientdb/README.md @@ -24,22 +24,21 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.2.14`, `3.2`, `latest`](https://github.com/orientechnologies/orientdb-docker/blob/8f7ae4b76aa72cccdb849a1d8988e15a12d875c0/release/3.2.x/3.2.14/Dockerfile) -- [`3.2.14-tp3`, `3.2-tp3`](https://github.com/orientechnologies/orientdb-docker/blob/8f7ae4b76aa72cccdb849a1d8988e15a12d875c0/release/3.2.x/3.2.14-tp3/Dockerfile) +- [`3.2.45`, `3.2`, `latest`](https://github.com/orientechnologies/orientdb-docker/blob/9bfd68a64234423574e38a7a1f5e6a2098191f6a/release/3.2.x/3.2.45/Dockerfile) + +- [`3.2.45-tp3`, `3.2-tp3`](https://github.com/orientechnologies/orientdb-docker/blob/9bfd68a64234423574e38a7a1f5e6a2098191f6a/release/3.2.x/3.2.45-tp3/Dockerfile) + - [`3.1.20`, `3.1`](https://github.com/orientechnologies/orientdb-docker/blob/a8a42acbe19dad60a051afe08ed625e66587dd37/release/3.1.x/3.1.20/Dockerfile) + - [`3.1.20-tp3`, `3.1-tp3`](https://github.com/orientechnologies/orientdb-docker/blob/a8a42acbe19dad60a051afe08ed625e66587dd37/release/3.1.x/3.1.20-tp3/Dockerfile) -- [`3.0.44`, `3.0`](https://github.com/orientechnologies/orientdb-docker/blob/a8a42acbe19dad60a051afe08ed625e66587dd37/release/3.0.x/3.0.44/Dockerfile) -- [`3.0.44-tp3`, `3.0-tp3`](https://github.com/orientechnologies/orientdb-docker/blob/a8a42acbe19dad60a051afe08ed625e66587dd37/release/3.0.x/3.0.44-tp3/Dockerfile) -- [`2.2.37`, `2.2`](https://github.com/orientechnologies/orientdb-docker/blob/a8a42acbe19dad60a051afe08ed625e66587dd37/release/2.2.x/2.2.37/Dockerfile) -- [`2.2.37-spatial`](https://github.com/orientechnologies/orientdb-docker/blob/a8a42acbe19dad60a051afe08ed625e66587dd37/release/2.2.x/2.2.37-spatial/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/orientechnologies/orientdb-docker/issues](https://github.com/orientechnologies/orientdb-docker/issues) + [https://github.com/orientechnologies/orientdb-docker/issues](https://github.com/orientechnologies/orientdb-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/orientdb/) + [`amd64`](https://hub.docker.com/r/amd64/orientdb/), [`arm32v7`](https://hub.docker.com/r/arm32v7/orientdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/orientdb/) - **Published image artifact details**: [repo-info repo's `repos/orientdb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/orientdb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/orientdb)) diff --git a/orientdb/metadata.json b/orientdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/orientdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/percona/README.md b/percona/README.md index 79a1803212c4..ea1a17558df3 100644 --- a/percona/README.md +++ b/percona/README.md @@ -24,14 +24,13 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.0.29-21-centos`, `8.0-centos`, `8-centos`, `8.0.29-21`, `8.0`, `8`, `ps-8.0.29-21`, `ps-8.0`, `ps-8`](https://github.com/percona/percona-docker/blob/f7a1ff5101f7572296fec3f4f4d0d7a666a219a8/percona-server-8.0/Dockerfile) -- [`5.7.35-centos`, `5.7-centos`, `5-centos`, `centos`, `5.7.35`, `5.7`, `5`, `ps-5.7.35`, `ps-5.7`, `ps-5`, `latest`](https://github.com/percona/percona-docker/blob/f1697b98ebb86a8d684c4192fa382b00ae1860ff/percona-server-5.7/Dockerfile-dockerhub) -- [`5.6.51-2-centos`, `5.6-centos`, `5.6.51-2`, `5.6`, `ps-5.6.51-2`, `ps-5.6`](https://github.com/percona/percona-docker/blob/4510d49bcce5cfce58a42c198d55399b144add83/percona-server-5.6/Dockerfile-dockerhub) -- [`psmdb-5.0.10`, `psmdb-5.0`](https://github.com/percona/percona-docker/blob/0003693083fc3b6a904fd83a63096705aff46cca/percona-server-mongodb-5.0/Dockerfile) -- [`psmdb-4.4.15`, `psmdb-4.4`](https://github.com/percona/percona-docker/blob/93dc9be5c30c1da42e8f2dad03da5e17e6bc89a9/percona-server-mongodb-4.4/Dockerfile) -- [`psmdb-4.2.21`, `psmdb-4.2`](https://github.com/percona/percona-docker/blob/ee35507eeade832e18041d39ac67637202733e49/percona-server-mongodb-4.2/Dockerfile) -- [`psmdb-4.0.27`, `psmdb-4.0`](https://github.com/percona/percona-docker/blob/ef97f5cd2c747905dc6d724c245cce9f3e2ce0a1/percona-server-mongodb-4.0/Dockerfile) -- [`psmdb-3.6.23`, `psmdb-3.6`](https://github.com/percona/percona-docker/blob/b32c7e632fe0d8b058ce32c0430a1783cfd557a0/percona-server-mongodb-3.6/Dockerfile) +- [`8.0.43-34-centos`, `8.0-centos`, `8-centos`, `8.0.43-34`, `8.0`, `8`, `ps-8.0.43-34`, `ps-8.0`, `ps-8`](https://github.com/percona/percona-docker/blob/1a5a6f51cda0ad561e5afcbd9b1ec9e2dd3564d1/percona-server-8.0/Dockerfile-dockerhub) + +- [`psmdb-8.0.12`, `psmdb-8.0`](https://github.com/percona/percona-docker/blob/725e757d51b83f0a0a9c3b5242f6be02066e0a9b/percona-server-mongodb-8.0/Dockerfile-dockerhub) + +- [`psmdb-7.0.24`, `psmdb-7.0`](https://github.com/percona/percona-docker/blob/725e757d51b83f0a0a9c3b5242f6be02066e0a9b/percona-server-mongodb-7.0/Dockerfile-dockerhub) + +- [`psmdb-6.0.25`, `psmdb-6.0`](https://github.com/percona/percona-docker/blob/c37d7c35b5d3ddeacdf8b6c837e7735c14ace89b/percona-server-mongodb-6.0/Dockerfile-dockerhub) # Quick reference (cont.) @@ -94,13 +93,12 @@ $ docker run -it --rm percona mysql -hsome.mysql.host -usome-mysql-user -p More information about the MySQL command line client can be found in the [MySQL documentation](http://dev.mysql.com/doc/en/mysql.html) -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `percona`: +Example `compose.yaml` for `percona`: ```yaml # Use root/example as user/password credentials -version: '3.1' services: @@ -117,9 +115,7 @@ services: - 8080:8080 ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/percona/stack.yml) - -Run `docker stack deploy -c stack.yml percona` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Container shell access and viewing MySQL logs @@ -175,7 +171,7 @@ By default, `root` can connect from anywhere. This option restricts root connect ### `MYSQL_DATABASE` -This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](http://dev.mysql.com/doc/en/adding-users.html)) to this database. +This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](https://dev.mysql.com/doc/refman/en/creating-accounts.html)) to this database. ### `MYSQL_USER`, `MYSQL_PASSWORD` @@ -189,7 +185,7 @@ This is an optional variable. Set to `yes` to allow the container to be started ### `MYSQL_RANDOM_ROOT_PASSWORD` -This is an optional variable. Set to `yes` to generate a random initial password for the root user (using `pwgen`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). +This is an optional variable. Set to `yes` to generate a random initial password for the root user (using `pwmake`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). ### `MYSQL_ONETIME_PASSWORD` @@ -217,9 +213,17 @@ $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-ro Currently, this is only supported for `MYSQL_ROOT_PASSWORD`, `MYSQL_ROOT_HOST`, `MYSQL_DATABASE`, `MYSQL_USER`, and `MYSQL_PASSWORD`. +## Telemetry + +Starting with Percona Server 8.0.35-27, telemetry will be enabled by default. If you decide not to send usage data to Percona, you can set the `PERCONA_TELEMETRY_DISABLE=1` environment variable. For example: + +```console +$ docker run --name some-mysql -e PERCONA_TELEMETRY_DISABLE=1 -d percona:tag +``` + # Initializing a fresh instance -When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. You can easily populate your `percona` services by [mounting a SQL dump into that directory](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-file-as-a-data-volume) and provide [custom images](https://docs.docker.com/reference/builder/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. +When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. You can easily populate your `percona` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. # Caveats @@ -227,8 +231,8 @@ When a container is started for the first time, a new database with the specifie Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `percona` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -243,7 +247,7 @@ The `-v /my/own/datadir:/var/lib/mysql` part of the command mounts the `/my/own/ ## No connections until MySQL init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as Docker Compose, which start several containers simultaneously. If the application you're trying to connect to MySQL does not handle MySQL downtime or waiting for MySQL to start gracefully, then a putting a connect-retry loop before the service starts might be necessary. For an example of such an implementation in the official images, see [WordPress](https://github.com/docker-library/wordpress/blob/1b48b4bccd7adb0f7ea1431c7b470a40e186f3da/docker-entrypoint.sh#L195-L235) or [Bonita](https://github.com/docker-library/docs/blob/9660a0cccb87d8db842f33bc0578d769caaf3ba9/bonita/stack.yml#L28-L44). diff --git a/percona/stack.yml b/percona/compose.yaml similarity index 94% rename from percona/stack.yml rename to percona/compose.yaml index 9390e2f93a4a..60a9ed77ba10 100644 --- a/percona/stack.yml +++ b/percona/compose.yaml @@ -1,5 +1,4 @@ # Use root/example as user/password credentials -version: '3.1' services: diff --git a/percona/content.md b/percona/content.md index 84530d3e69ec..9e02530ce86c 100644 --- a/percona/content.md +++ b/percona/content.md @@ -38,9 +38,9 @@ $ docker run -it --rm %%IMAGE%% mysql -hsome.mysql.host -usome-mysql-user -p More information about the MySQL command line client can be found in the [MySQL documentation](http://dev.mysql.com/doc/en/mysql.html) -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Container shell access and viewing MySQL logs @@ -96,7 +96,7 @@ By default, `root` can connect from anywhere. This option restricts root connect ### `MYSQL_DATABASE` -This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](http://dev.mysql.com/doc/en/adding-users.html)) to this database. +This variable is optional and allows you to specify the name of a database to be created on image startup. If a user/password was supplied (see below) then that user will be granted superuser access ([corresponding to `GRANT ALL`](https://dev.mysql.com/doc/refman/en/creating-accounts.html)) to this database. ### `MYSQL_USER`, `MYSQL_PASSWORD` @@ -110,7 +110,7 @@ This is an optional variable. Set to `yes` to allow the container to be started ### `MYSQL_RANDOM_ROOT_PASSWORD` -This is an optional variable. Set to `yes` to generate a random initial password for the root user (using `pwgen`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). +This is an optional variable. Set to `yes` to generate a random initial password for the root user (using `pwmake`). The generated root password will be printed to stdout (`GENERATED ROOT PASSWORD: .....`). ### `MYSQL_ONETIME_PASSWORD` @@ -138,9 +138,17 @@ $ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-ro Currently, this is only supported for `MYSQL_ROOT_PASSWORD`, `MYSQL_ROOT_HOST`, `MYSQL_DATABASE`, `MYSQL_USER`, and `MYSQL_PASSWORD`. +## Telemetry + +Starting with Percona Server 8.0.35-27, telemetry will be enabled by default. If you decide not to send usage data to Percona, you can set the `PERCONA_TELEMETRY_DISABLE=1` environment variable. For example: + +```console +$ docker run --name some-mysql -e PERCONA_TELEMETRY_DISABLE=1 -d %%IMAGE%%:tag +``` + # Initializing a fresh instance -When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. You can easily populate your `%%IMAGE%%` services by [mounting a SQL dump into that directory](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-file-as-a-data-volume) and provide [custom images](https://docs.docker.com/reference/builder/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. +When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. You can easily populate your `%%IMAGE%%` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MYSQL_DATABASE` variable. # Caveats @@ -148,8 +156,8 @@ When a container is started for the first time, a new database with the specifie Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%IMAGE%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -164,7 +172,7 @@ The `-v /my/own/datadir:/var/lib/mysql` part of the command mounts the `/my/own/ ## No connections until MySQL init completes -If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as `docker-compose`, which start several containers simultaneously. +If there is no database initialized when the container starts, then a default database will be created. While this is the expected behavior, this means that it will not accept incoming connections until such initialization completes. This may cause issues when using automation tools, such as Docker Compose, which start several containers simultaneously. If the application you're trying to connect to MySQL does not handle MySQL downtime or waiting for MySQL to start gracefully, then a putting a connect-retry loop before the service starts might be necessary. For an example of such an implementation in the official images, see [WordPress](https://github.com/docker-library/wordpress/blob/1b48b4bccd7adb0f7ea1431c7b470a40e186f3da/docker-entrypoint.sh#L195-L235) or [Bonita](https://github.com/docker-library/docs/blob/9660a0cccb87d8db842f33bc0578d769caaf3ba9/bonita/stack.yml#L28-L44). diff --git a/percona/metadata.json b/percona/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/percona/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/perl/README.md b/perl/README.md index 3e9acea8271d..809d978ab161 100644 --- a/perl/README.md +++ b/perl/README.md @@ -24,38 +24,109 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.36.0`, `5.36`, `5`, `latest`, `5.36.0-bullseye`, `5.36-bullseye`, `5-bullseye`, `bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-main-bullseye/Dockerfile) -- [`5.36.0-buster`, `5.36-buster`, `5-buster`, `buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-main-buster/Dockerfile) -- [`5.36.0-slim`, `5.36-slim`, `5-slim`, `slim`, `5.36.0-slim-bullseye`, `5.36-slim-bullseye`, `5-slim-bullseye`, `slim-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-slim-bullseye/Dockerfile) -- [`5.36.0-slim-buster`, `5.36-slim-buster`, `5-slim-buster`, `slim-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-slim-buster/Dockerfile) -- [`5.36.0-threaded`, `5.36-threaded`, `5-threaded`, `threaded`, `5.36.0-threaded-bullseye`, `5.36-threaded-bullseye`, `5-threaded-bullseye`, `threaded-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-main,threaded-bullseye/Dockerfile) -- [`5.36.0-threaded-buster`, `5.36-threaded-buster`, `5-threaded-buster`, `threaded-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-main,threaded-buster/Dockerfile) -- [`5.36.0-slim-threaded`, `5.36-slim-threaded`, `5-slim-threaded`, `slim-threaded`, `5.36.0-slim-threaded-bullseye`, `5.36-slim-threaded-bullseye`, `5-slim-threaded-bullseye`, `slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-slim,threaded-bullseye/Dockerfile) -- [`5.36.0-slim-threaded-buster`, `5.36-slim-threaded-buster`, `5-slim-threaded-buster`, `slim-threaded-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.036.000-slim,threaded-buster/Dockerfile) -- [`5.34.1`, `5.34`, `5.34.1-bullseye`, `5.34-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-main-bullseye/Dockerfile) -- [`5.34.1-buster`, `5.34-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-main-buster/Dockerfile) -- [`5.34.1-slim`, `5.34-slim`, `5.34.1-slim-bullseye`, `5.34-slim-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-slim-bullseye/Dockerfile) -- [`5.34.1-slim-buster`, `5.34-slim-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-slim-buster/Dockerfile) -- [`5.34.1-threaded`, `5.34-threaded`, `5.34.1-threaded-bullseye`, `5.34-threaded-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-main,threaded-bullseye/Dockerfile) -- [`5.34.1-threaded-buster`, `5.34-threaded-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-main,threaded-buster/Dockerfile) -- [`5.34.1-slim-threaded`, `5.34-slim-threaded`, `5.34.1-slim-threaded-bullseye`, `5.34-slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-slim,threaded-bullseye/Dockerfile) -- [`5.34.1-slim-threaded-buster`, `5.34-slim-threaded-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.034.001-slim,threaded-buster/Dockerfile) -- [`5.32.1`, `5.32`, `5.32.1-bullseye`, `5.32-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-main-bullseye/Dockerfile) -- [`5.32.1-buster`, `5.32-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-main-buster/Dockerfile) -- [`5.32.1-slim`, `5.32-slim`, `5.32.1-slim-bullseye`, `5.32-slim-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-slim-bullseye/Dockerfile) -- [`5.32.1-slim-buster`, `5.32-slim-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-slim-buster/Dockerfile) -- [`5.32.1-threaded`, `5.32-threaded`, `5.32.1-threaded-bullseye`, `5.32-threaded-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-main,threaded-bullseye/Dockerfile) -- [`5.32.1-threaded-buster`, `5.32-threaded-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-main,threaded-buster/Dockerfile) -- [`5.32.1-slim-threaded`, `5.32-slim-threaded`, `5.32.1-slim-threaded-bullseye`, `5.32-slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-slim,threaded-bullseye/Dockerfile) -- [`5.32.1-slim-threaded-buster`, `5.32-slim-threaded-buster`](https://github.com/perl/docker-perl/blob/f70e8ace49994efef8e90cbf730554a3e3201da7/5.032.001-slim,threaded-buster/Dockerfile) +- [`5.42.0`, `5.42`, `5`, `latest`, `stable`, `5.42.0-trixie`, `5.42-trixie`, `5-trixie`, `trixie`, `stable-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-main-trixie/Dockerfile) + +- [`5.42.0-bookworm`, `5.42-bookworm`, `5-bookworm`, `bookworm`, `stable-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-main-bookworm/Dockerfile) + +- [`5.42.0-bullseye`, `5.42-bullseye`, `5-bullseye`, `bullseye`, `stable-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-main-bullseye/Dockerfile) + +- [`5.42.0-slim`, `5.42-slim`, `5-slim`, `slim`, `stable-slim`, `5.42.0-slim-trixie`, `5.42-slim-trixie`, `5-slim-trixie`, `slim-trixie`, `stable-slim-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-slim-trixie/Dockerfile) + +- [`5.42.0-slim-bookworm`, `5.42-slim-bookworm`, `5-slim-bookworm`, `slim-bookworm`, `stable-slim-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-slim-bookworm/Dockerfile) + +- [`5.42.0-slim-bullseye`, `5.42-slim-bullseye`, `5-slim-bullseye`, `slim-bullseye`, `stable-slim-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-slim-bullseye/Dockerfile) + +- [`5.42.0-threaded`, `5.42-threaded`, `5-threaded`, `threaded`, `stable-threaded`, `5.42.0-threaded-trixie`, `5.42-threaded-trixie`, `5-threaded-trixie`, `threaded-trixie`, `stable-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-main,threaded-trixie/Dockerfile) + +- [`5.42.0-threaded-bookworm`, `5.42-threaded-bookworm`, `5-threaded-bookworm`, `threaded-bookworm`, `stable-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-main,threaded-bookworm/Dockerfile) + +- [`5.42.0-threaded-bullseye`, `5.42-threaded-bullseye`, `5-threaded-bullseye`, `threaded-bullseye`, `stable-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-main,threaded-bullseye/Dockerfile) + +- [`5.42.0-slim-threaded`, `5.42-slim-threaded`, `5-slim-threaded`, `slim-threaded`, `stable-slim-threaded`, `5.42.0-slim-threaded-trixie`, `5.42-slim-threaded-trixie`, `5-slim-threaded-trixie`, `slim-threaded-trixie`, `stable-slim-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-slim,threaded-trixie/Dockerfile) + +- [`5.42.0-slim-threaded-bookworm`, `5.42-slim-threaded-bookworm`, `5-slim-threaded-bookworm`, `slim-threaded-bookworm`, `stable-slim-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-slim,threaded-bookworm/Dockerfile) + +- [`5.42.0-slim-threaded-bullseye`, `5.42-slim-threaded-bullseye`, `5-slim-threaded-bullseye`, `slim-threaded-bullseye`, `stable-slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.042.000-slim,threaded-bullseye/Dockerfile) + +- [`5.40.3`, `5.40`, `5.40.3-trixie`, `5.40-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-main-trixie/Dockerfile) + +- [`5.40.3-bookworm`, `5.40-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-main-bookworm/Dockerfile) + +- [`5.40.3-bullseye`, `5.40-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-main-bullseye/Dockerfile) + +- [`5.40.3-slim`, `5.40-slim`, `5.40.3-slim-trixie`, `5.40-slim-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-slim-trixie/Dockerfile) + +- [`5.40.3-slim-bookworm`, `5.40-slim-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-slim-bookworm/Dockerfile) + +- [`5.40.3-slim-bullseye`, `5.40-slim-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-slim-bullseye/Dockerfile) + +- [`5.40.3-threaded`, `5.40-threaded`, `5.40.3-threaded-trixie`, `5.40-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-main,threaded-trixie/Dockerfile) + +- [`5.40.3-threaded-bookworm`, `5.40-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-main,threaded-bookworm/Dockerfile) + +- [`5.40.3-threaded-bullseye`, `5.40-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-main,threaded-bullseye/Dockerfile) + +- [`5.40.3-slim-threaded`, `5.40-slim-threaded`, `5.40.3-slim-threaded-trixie`, `5.40-slim-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-slim,threaded-trixie/Dockerfile) + +- [`5.40.3-slim-threaded-bookworm`, `5.40-slim-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-slim,threaded-bookworm/Dockerfile) + +- [`5.40.3-slim-threaded-bullseye`, `5.40-slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.040.003-slim,threaded-bullseye/Dockerfile) + +- [`5.38.5`, `5.38`, `5.38.5-trixie`, `5.38-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-main-trixie/Dockerfile) + +- [`5.38.5-bookworm`, `5.38-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-main-bookworm/Dockerfile) + +- [`5.38.5-bullseye`, `5.38-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-main-bullseye/Dockerfile) + +- [`5.38.5-slim`, `5.38-slim`, `5.38.5-slim-trixie`, `5.38-slim-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-slim-trixie/Dockerfile) + +- [`5.38.5-slim-bookworm`, `5.38-slim-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-slim-bookworm/Dockerfile) + +- [`5.38.5-slim-bullseye`, `5.38-slim-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-slim-bullseye/Dockerfile) + +- [`5.38.5-threaded`, `5.38-threaded`, `5.38.5-threaded-trixie`, `5.38-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-main,threaded-trixie/Dockerfile) + +- [`5.38.5-threaded-bookworm`, `5.38-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-main,threaded-bookworm/Dockerfile) + +- [`5.38.5-threaded-bullseye`, `5.38-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-main,threaded-bullseye/Dockerfile) + +- [`5.38.5-slim-threaded`, `5.38-slim-threaded`, `5.38.5-slim-threaded-trixie`, `5.38-slim-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-slim,threaded-trixie/Dockerfile) + +- [`5.38.5-slim-threaded-bookworm`, `5.38-slim-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-slim,threaded-bookworm/Dockerfile) + +- [`5.38.5-slim-threaded-bullseye`, `5.38-slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.038.005-slim,threaded-bullseye/Dockerfile) + +- [`5.43.4`, `5.43`, `devel`, `5.43.4-trixie`, `5.43-trixie`, `devel-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-main-trixie/Dockerfile) + +- [`5.43.4-bookworm`, `5.43-bookworm`, `devel-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-main-bookworm/Dockerfile) + +- [`5.43.4-bullseye`, `5.43-bullseye`, `devel-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-main-bullseye/Dockerfile) + +- [`5.43.4-slim`, `5.43-slim`, `devel-slim`, `5.43.4-slim-trixie`, `5.43-slim-trixie`, `devel-slim-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-slim-trixie/Dockerfile) + +- [`5.43.4-slim-bookworm`, `5.43-slim-bookworm`, `devel-slim-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-slim-bookworm/Dockerfile) + +- [`5.43.4-slim-bullseye`, `5.43-slim-bullseye`, `devel-slim-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-slim-bullseye/Dockerfile) + +- [`5.43.4-threaded`, `5.43-threaded`, `devel-threaded`, `5.43.4-threaded-trixie`, `5.43-threaded-trixie`, `devel-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-main,threaded-trixie/Dockerfile) + +- [`5.43.4-threaded-bookworm`, `5.43-threaded-bookworm`, `devel-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-main,threaded-bookworm/Dockerfile) + +- [`5.43.4-threaded-bullseye`, `5.43-threaded-bullseye`, `devel-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-main,threaded-bullseye/Dockerfile) + +- [`5.43.4-slim-threaded`, `5.43-slim-threaded`, `devel-slim-threaded`, `5.43.4-slim-threaded-trixie`, `5.43-slim-threaded-trixie`, `devel-slim-threaded-trixie`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-slim,threaded-trixie/Dockerfile) + +- [`5.43.4-slim-threaded-bookworm`, `5.43-slim-threaded-bookworm`, `devel-slim-threaded-bookworm`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-slim,threaded-bookworm/Dockerfile) + +- [`5.43.4-slim-threaded-bullseye`, `5.43-slim-threaded-bullseye`, `devel-slim-threaded-bullseye`](https://github.com/perl/docker-perl/blob/79fd7c9ca29f9852e8ce5b4029a8d60ecc350bcf/5.043.004-slim,threaded-bullseye/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/Perl/docker-perl/issues](https://github.com/Perl/docker-perl/issues) + [https://github.com/Perl/docker-perl/issues](https://github.com/Perl/docker-perl/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/perl/), [`arm32v5`](https://hub.docker.com/r/arm32v5/perl/), [`arm32v7`](https://hub.docker.com/r/arm32v7/perl/), [`arm64v8`](https://hub.docker.com/r/arm64v8/perl/), [`i386`](https://hub.docker.com/r/i386/perl/), [`mips64le`](https://hub.docker.com/r/mips64le/perl/), [`ppc64le`](https://hub.docker.com/r/ppc64le/perl/), [`s390x`](https://hub.docker.com/r/s390x/perl/) + [`amd64`](https://hub.docker.com/r/amd64/perl/), [`arm32v5`](https://hub.docker.com/r/arm32v5/perl/), [`arm32v7`](https://hub.docker.com/r/arm32v7/perl/), [`arm64v8`](https://hub.docker.com/r/arm64v8/perl/), [`i386`](https://hub.docker.com/r/i386/perl/), [`mips64le`](https://hub.docker.com/r/mips64le/perl/), [`ppc64le`](https://hub.docker.com/r/ppc64le/perl/), [`riscv64`](https://hub.docker.com/r/riscv64/perl/), [`s390x`](https://hub.docker.com/r/s390x/perl/) - **Published image artifact details**: [repo-info repo's `repos/perl/` directory](https://github.com/docker-library/repo-info/blob/master/repos/perl) ([history](https://github.com/docker-library/repo-info/commits/master/repos/perl)) @@ -112,7 +183,7 @@ See also [Perl/docker-perl#26](https://github.com/Perl/docker-perl/issues/26) fo ## Signal handling behavior notice -As Perl will run as PID 1 by default in containers (unless an [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint) is set,) special care needs to be considered when expecting to send signals (particularly SIGINT or SIGTERM) to it. For example, running +As Perl will run as PID 1 by default in containers (unless an [ENTRYPOINT](https://docs.docker.com/reference/dockerfile/#entrypoint) is set,) special care needs to be considered when expecting to send signals (particularly SIGINT or SIGTERM) to it. For example, running ```console $ docker run -it --name sleeping_beauty --rm perl:5.34 perl -E 'sleep 300' @@ -136,9 +207,15 @@ If your Perl program is expected to handle signals and fork child processes, it See also [Signals in perlipc](https://perldoc.pl/perlipc#Signals) as well as [Perl/docker-perl#44](https://github.com/Perl/docker-perl/issues/44). +### `COPY` and `WORKDIR` behavior in Debian Bookworm based images (Perl >= 5.38) + +As our Perl images are based on the standard `buildpack-deps` and `debian` images, these inherit the new [merged-usr root filesystem layout](https://wiki.debian.org/UsrMerge) introduced in Debian 12 (Bookworm) which may affect certain build contexts that `COPY` their own `bin`, `sbin`, or `lib` directories into a `WORKDIR /`. Users are encouraged to set `WORKDIR` explicitly to a path other than `/` as much as possible, such as the `/usr/src/app` shown here in the examples, though as of current release our images now default to `WORKDIR /usr/src/app`. + +See also [Perl/docker-perl#140](https://github.com/Perl/docker-perl/issues/140) for further information. + ## Example: Creating a reusable Carton image for Perl projects -Suppose you have a project that uses [Carton](https://metacpan.org/pod/Carton) to manage Perl dependencies. You can create a `perl:carton` image that makes use of the [ONBUILD](https://docs.docker.com/engine/reference/builder/#onbuild) instruction in its `Dockerfile`, like this: +Suppose you have a project that uses [Carton](https://metacpan.org/pod/Carton) to manage Perl dependencies. You can create a `perl:carton` image that makes use of the [ONBUILD](https://docs.docker.com/reference/dockerfile/#onbuild) instruction in its `Dockerfile`, like this: ```dockerfile FROM perl:5.34 @@ -157,7 +234,7 @@ Then, in your Carton project, you can now reduce your project's `Dockerfile` int Having a single `perl:carton` base image is useful especially if you have multiple Carton-based projects in development, to avoid "boilerplate" coding of installing Carton and/or copying the project source files into the derived image. Keep in mind, though, about certain things to consider when using the Perl image in this way: -- This kind of base image will hide the useful bits (such as the`COPY`/`RUN` above) in the image, separating it from more specific Dockerfiles using the base image. This might lead to confusion when creating further derived images, so be aware of how [ONBUILD triggers](https://docs.docker.com/engine/reference/builder/#onbuild) work and plan appropriately. +- This kind of base image will hide the useful bits (such as the`COPY`/`RUN` above) in the image, separating it from more specific Dockerfiles using the base image. This might lead to confusion when creating further derived images, so be aware of how [ONBUILD triggers](https://docs.docker.com/reference/dockerfile/#onbuild) work and plan appropriately. - There is the cost of maintaining an extra base image build, so if you're working on a single Carton project and/or plan to publish it, then it may be more preferable to derive directly from a versioned `perl` image instead. # Image Variants @@ -168,7 +245,7 @@ The `perl` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm, bullseye, or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. diff --git a/perl/content.md b/perl/content.md index 298e648c158b..dc1cda262c44 100644 --- a/perl/content.md +++ b/perl/content.md @@ -42,7 +42,7 @@ See also [Perl/docker-perl#26](https://github.com/Perl/docker-perl/issues/26) fo ## Signal handling behavior notice -As Perl will run as PID 1 by default in containers (unless an [ENTRYPOINT](https://docs.docker.com/engine/reference/builder/#entrypoint) is set,) special care needs to be considered when expecting to send signals (particularly SIGINT or SIGTERM) to it. For example, running +As Perl will run as PID 1 by default in containers (unless an [ENTRYPOINT](https://docs.docker.com/reference/dockerfile/#entrypoint) is set,) special care needs to be considered when expecting to send signals (particularly SIGINT or SIGTERM) to it. For example, running ```console $ docker run -it --name sleeping_beauty --rm %%IMAGE%%:5.34 perl -E 'sleep 300' @@ -66,9 +66,15 @@ If your Perl program is expected to handle signals and fork child processes, it See also [Signals in perlipc](https://perldoc.pl/perlipc#Signals) as well as [Perl/docker-perl#44](https://github.com/Perl/docker-perl/issues/44). +### `COPY` and `WORKDIR` behavior in Debian Bookworm based images (Perl >= 5.38) + +As our Perl images are based on the standard `buildpack-deps` and `debian` images, these inherit the new [merged-usr root filesystem layout](https://wiki.debian.org/UsrMerge) introduced in Debian 12 (Bookworm) which may affect certain build contexts that `COPY` their own `bin`, `sbin`, or `lib` directories into a `WORKDIR /`. Users are encouraged to set `WORKDIR` explicitly to a path other than `/` as much as possible, such as the `/usr/src/app` shown here in the examples, though as of current release our images now default to `WORKDIR /usr/src/app`. + +See also [Perl/docker-perl#140](https://github.com/Perl/docker-perl/issues/140) for further information. + ## Example: Creating a reusable Carton image for Perl projects -Suppose you have a project that uses [Carton](https://metacpan.org/pod/Carton) to manage Perl dependencies. You can create a `%%IMAGE%%:carton` image that makes use of the [ONBUILD](https://docs.docker.com/engine/reference/builder/#onbuild) instruction in its `Dockerfile`, like this: +Suppose you have a project that uses [Carton](https://metacpan.org/pod/Carton) to manage Perl dependencies. You can create a `%%IMAGE%%:carton` image that makes use of the [ONBUILD](https://docs.docker.com/reference/dockerfile/#onbuild) instruction in its `Dockerfile`, like this: ```dockerfile FROM %%IMAGE%%:5.34 @@ -87,5 +93,5 @@ Then, in your Carton project, you can now reduce your project's `Dockerfile` int Having a single `%%IMAGE%%:carton` base image is useful especially if you have multiple Carton-based projects in development, to avoid "boilerplate" coding of installing Carton and/or copying the project source files into the derived image. Keep in mind, though, about certain things to consider when using the Perl image in this way: -- This kind of base image will hide the useful bits (such as the`COPY`/`RUN` above) in the image, separating it from more specific Dockerfiles using the base image. This might lead to confusion when creating further derived images, so be aware of how [ONBUILD triggers](https://docs.docker.com/engine/reference/builder/#onbuild) work and plan appropriately. +- This kind of base image will hide the useful bits (such as the`COPY`/`RUN` above) in the image, separating it from more specific Dockerfiles using the base image. This might lead to confusion when creating further derived images, so be aware of how [ONBUILD triggers](https://docs.docker.com/reference/dockerfile/#onbuild) work and plan appropriately. - There is the cost of maintaining an extra base image build, so if you're working on a single Carton project and/or plan to publish it, then it may be more preferable to derive directly from a versioned `perl` image instead. diff --git a/perl/metadata.json b/perl/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/perl/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/photon/README.md b/photon/README.md index eadcc028bf62..637d59e6c0ce 100644 --- a/photon/README.md +++ b/photon/README.md @@ -24,14 +24,16 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`4.0`, `4.0-20230109`, `latest`](https://github.com/vmware/photon-docker-image/blob/e68ca5632dc2024988b06919cb9d38701331e0e5/docker/Dockerfile) -- [`3.0`, `3.0-20221224`](https://github.com/vmware/photon-docker-image/blob/7c169ad02494a1007e048757a55fb6f4f704449f/docker/Dockerfile) -- [`2.0`, `2.0-20221224`](https://github.com/vmware/photon-docker-image/blob/d420ffbab4ff9e1045217855073736775472694a/docker/Dockerfile) +- [`5.0`, `5.0-20251104`, `latest`](https://github.com/vmware/photon-docker-image/blob/b414885b1cdc464b3969a0b507623d631d430b78/docker/Dockerfile) + +- [`4.0`, `4.0-20251102`](https://github.com/vmware/photon-docker-image/blob/6ca925ba487203dc07c55039ebd4f8d68c094cfa/docker/Dockerfile) + +- [`3.0`, `3.0-20250316`](https://github.com/vmware/photon-docker-image/blob/f848d5df815c0afe76b42a608d49df0e87af51c2/docker/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/vmware/photon-docker-image/issues](https://github.com/vmware/photon-docker-image/issues) + [https://github.com/vmware/photon-docker-image/issues](https://github.com/vmware/photon-docker-image/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/photon/), [`arm64v8`](https://hub.docker.com/r/arm64v8/photon/) diff --git a/photon/metadata.json b/photon/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/photon/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/php-zendserver/README-short.txt b/php-zendserver/README-short.txt index af398674f42d..0f4e14743a98 100644 --- a/php-zendserver/README-short.txt +++ b/php-zendserver/README-short.txt @@ -1 +1 @@ -Zend Server - the integrated PHP application platform for mobile and web apps. +DEPRECATED; Zend Server - the integrated PHP application platform for mobile and web apps. diff --git a/php-zendserver/README.md b/php-zendserver/README.md index 6640f6f3282d..bcb614fa8271 100644 --- a/php-zendserver/README.md +++ b/php-zendserver/README.md @@ -14,6 +14,10 @@ WARNING: --> +# **DEPRECATION NOTICE** + +This image is not actively maintained (and [has not been for years](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp-zendserver)). It is highly recommended for users to seek out alternatives. + # Quick reference - **Maintained by**: @@ -24,10 +28,7 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.5`, `8.5-php5.6`, `5.6`](https://github.com/zendtech/php-zendserver-docker/blob/bcd65b82acb4f3b5b67f8c657c52f08bc52d8789/8.5/5.6/Dockerfile) -- [`9.1`](https://github.com/zendtech/php-zendserver-docker/blob/bcd65b82acb4f3b5b67f8c657c52f08bc52d8789/9.1/7.1/Dockerfile) -- [`2019.0`](https://github.com/zendtech/php-zendserver-docker/blob/bcd65b82acb4f3b5b67f8c657c52f08bc52d8789/2019.0/Dockerfile) -- [`2021.0`, `latest`](https://github.com/zendtech/php-zendserver-docker/blob/bcd65b82acb4f3b5b67f8c657c52f08bc52d8789/2021.0/Dockerfile) +**No supported tags** # Quick reference (cont.) @@ -35,7 +36,7 @@ WARNING: [Zend Support Center](https://www.zend.com/en/support-center) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/php-zendserver/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/php-zendserver/` directory](https://github.com/docker-library/repo-info/blob/master/repos/php-zendserver) ([history](https://github.com/docker-library/repo-info/commits/master/repos/php-zendserver)) @@ -54,7 +55,7 @@ Zend Server is the integrated application platform for PHP mobile and web apps. ### Boost your Development with Z-Ray -Using Zend Server Z-Ray is akin to wearing X-Ray goggles, effortlessly giving developers deep insight into how their code is running as they are developing it – all without having to change any of their habits or workflow. With Z-Ray, developers can immediately understand the impact of their code changes, enabling them to both improve quality and solve issues long before their code reaches production. In addition to the obvious benefits of this ‘Left Shifting’ – better performance, fewer production issues and faster recovery times – using Z-Ray is also downright fun! +Using Zend Server Z-Ray is akin to wearing X-Ray goggles, effortlessly giving developers deep insight into how their code is running as they are developing it – all without having to change any of their habits or workflow. With Z-Ray, developers can immediately understand the impact of their code changes, enabling them to both improve quality and solve issues long before their code reaches production. In addition to the obvious benefits of this 'Left Shifting' – better performance, fewer production issues and faster recovery times – using Z-Ray is also downright fun! ### Powering Continuous Delivery diff --git a/php-zendserver/content.md b/php-zendserver/content.md index aa2daa6f857a..8f8a96706aaa 100644 --- a/php-zendserver/content.md +++ b/php-zendserver/content.md @@ -4,7 +4,7 @@ Zend Server is the integrated application platform for PHP mobile and web apps. ### Boost your Development with Z-Ray -Using Zend Server Z-Ray is akin to wearing X-Ray goggles, effortlessly giving developers deep insight into how their code is running as they are developing it – all without having to change any of their habits or workflow. With Z-Ray, developers can immediately understand the impact of their code changes, enabling them to both improve quality and solve issues long before their code reaches production. In addition to the obvious benefits of this ‘Left Shifting’ – better performance, fewer production issues and faster recovery times – using Z-Ray is also downright fun! +Using Zend Server Z-Ray is akin to wearing X-Ray goggles, effortlessly giving developers deep insight into how their code is running as they are developing it – all without having to change any of their habits or workflow. With Z-Ray, developers can immediately understand the impact of their code changes, enabling them to both improve quality and solve issues long before their code reaches production. In addition to the obvious benefits of this 'Left Shifting' – better performance, fewer production issues and faster recovery times – using Z-Ray is also downright fun! ### Powering Continuous Delivery diff --git a/php-zendserver/deprecated.md b/php-zendserver/deprecated.md new file mode 100644 index 000000000000..3758d1cd2b10 --- /dev/null +++ b/php-zendserver/deprecated.md @@ -0,0 +1 @@ +This image is not actively maintained (and [has not been for years](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp-zendserver)). It is highly recommended for users to seek out alternatives. diff --git a/php-zendserver/metadata.json b/php-zendserver/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/php-zendserver/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/php/README.md b/php/README.md index 8e9c80ee9eaf..5630c238e0c3 100644 --- a/php/README.md +++ b/php/README.md @@ -24,53 +24,209 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.2.1-cli-bullseye`, `8.2-cli-bullseye`, `8-cli-bullseye`, `cli-bullseye`, `8.2.1-bullseye`, `8.2-bullseye`, `8-bullseye`, `bullseye`, `8.2.1-cli`, `8.2-cli`, `8-cli`, `cli`, `8.2.1`, `8.2`, `8`, `latest`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/bullseye/cli/Dockerfile) -- [`8.2.1-apache-bullseye`, `8.2-apache-bullseye`, `8-apache-bullseye`, `apache-bullseye`, `8.2.1-apache`, `8.2-apache`, `8-apache`, `apache`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/bullseye/apache/Dockerfile) -- [`8.2.1-fpm-bullseye`, `8.2-fpm-bullseye`, `8-fpm-bullseye`, `fpm-bullseye`, `8.2.1-fpm`, `8.2-fpm`, `8-fpm`, `fpm`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/bullseye/fpm/Dockerfile) -- [`8.2.1-zts-bullseye`, `8.2-zts-bullseye`, `8-zts-bullseye`, `zts-bullseye`, `8.2.1-zts`, `8.2-zts`, `8-zts`, `zts`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/bullseye/zts/Dockerfile) -- [`8.2.1-cli-buster`, `8.2-cli-buster`, `8-cli-buster`, `cli-buster`, `8.2.1-buster`, `8.2-buster`, `8-buster`, `buster`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/buster/cli/Dockerfile) -- [`8.2.1-apache-buster`, `8.2-apache-buster`, `8-apache-buster`, `apache-buster`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/buster/apache/Dockerfile) -- [`8.2.1-fpm-buster`, `8.2-fpm-buster`, `8-fpm-buster`, `fpm-buster`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/buster/fpm/Dockerfile) -- [`8.2.1-zts-buster`, `8.2-zts-buster`, `8-zts-buster`, `zts-buster`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/buster/zts/Dockerfile) -- [`8.2.1-cli-alpine3.17`, `8.2-cli-alpine3.17`, `8-cli-alpine3.17`, `cli-alpine3.17`, `8.2.1-alpine3.17`, `8.2-alpine3.17`, `8-alpine3.17`, `alpine3.17`, `8.2.1-cli-alpine`, `8.2-cli-alpine`, `8-cli-alpine`, `cli-alpine`, `8.2.1-alpine`, `8.2-alpine`, `8-alpine`, `alpine`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/alpine3.17/cli/Dockerfile) -- [`8.2.1-fpm-alpine3.17`, `8.2-fpm-alpine3.17`, `8-fpm-alpine3.17`, `fpm-alpine3.17`, `8.2.1-fpm-alpine`, `8.2-fpm-alpine`, `8-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/alpine3.17/fpm/Dockerfile) -- [`8.2.1-zts-alpine3.17`, `8.2-zts-alpine3.17`, `8-zts-alpine3.17`, `zts-alpine3.17`, `8.2.1-zts-alpine`, `8.2-zts-alpine`, `8-zts-alpine`, `zts-alpine`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/alpine3.17/zts/Dockerfile) -- [`8.2.1-cli-alpine3.16`, `8.2-cli-alpine3.16`, `8-cli-alpine3.16`, `cli-alpine3.16`, `8.2.1-alpine3.16`, `8.2-alpine3.16`, `8-alpine3.16`, `alpine3.16`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/alpine3.16/cli/Dockerfile) -- [`8.2.1-fpm-alpine3.16`, `8.2-fpm-alpine3.16`, `8-fpm-alpine3.16`, `fpm-alpine3.16`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/alpine3.16/fpm/Dockerfile) -- [`8.2.1-zts-alpine3.16`, `8.2-zts-alpine3.16`, `8-zts-alpine3.16`, `zts-alpine3.16`](https://github.com/docker-library/php/blob/fdf3f68e6132f2a339897f3a5a3e118a5bf40ded/8.2/alpine3.16/zts/Dockerfile) -- [`8.1.14-cli-bullseye`, `8.1-cli-bullseye`, `8.1.14-bullseye`, `8.1-bullseye`, `8.1.14-cli`, `8.1-cli`, `8.1.14`, `8.1`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/bullseye/cli/Dockerfile) -- [`8.1.14-apache-bullseye`, `8.1-apache-bullseye`, `8.1.14-apache`, `8.1-apache`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/bullseye/apache/Dockerfile) -- [`8.1.14-fpm-bullseye`, `8.1-fpm-bullseye`, `8.1.14-fpm`, `8.1-fpm`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/bullseye/fpm/Dockerfile) -- [`8.1.14-zts-bullseye`, `8.1-zts-bullseye`, `8.1.14-zts`, `8.1-zts`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/bullseye/zts/Dockerfile) -- [`8.1.14-cli-buster`, `8.1-cli-buster`, `8.1.14-buster`, `8.1-buster`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/buster/cli/Dockerfile) -- [`8.1.14-apache-buster`, `8.1-apache-buster`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/buster/apache/Dockerfile) -- [`8.1.14-fpm-buster`, `8.1-fpm-buster`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/buster/fpm/Dockerfile) -- [`8.1.14-zts-buster`, `8.1-zts-buster`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/buster/zts/Dockerfile) -- [`8.1.14-cli-alpine3.17`, `8.1-cli-alpine3.17`, `8.1.14-alpine3.17`, `8.1-alpine3.17`, `8.1.14-cli-alpine`, `8.1-cli-alpine`, `8.1.14-alpine`, `8.1-alpine`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/alpine3.17/cli/Dockerfile) -- [`8.1.14-fpm-alpine3.17`, `8.1-fpm-alpine3.17`, `8.1.14-fpm-alpine`, `8.1-fpm-alpine`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/alpine3.17/fpm/Dockerfile) -- [`8.1.14-zts-alpine3.17`, `8.1-zts-alpine3.17`, `8.1.14-zts-alpine`, `8.1-zts-alpine`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/alpine3.17/zts/Dockerfile) -- [`8.1.14-cli-alpine3.16`, `8.1-cli-alpine3.16`, `8.1.14-alpine3.16`, `8.1-alpine3.16`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/alpine3.16/cli/Dockerfile) -- [`8.1.14-fpm-alpine3.16`, `8.1-fpm-alpine3.16`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/alpine3.16/fpm/Dockerfile) -- [`8.1.14-zts-alpine3.16`, `8.1-zts-alpine3.16`](https://github.com/docker-library/php/blob/a4b05a8f2b992ca2e14032713b12c72cc7f545f3/8.1/alpine3.16/zts/Dockerfile) -- [`8.0.27-cli-bullseye`, `8.0-cli-bullseye`, `8.0.27-bullseye`, `8.0-bullseye`, `8.0.27-cli`, `8.0-cli`, `8.0.27`, `8.0`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/bullseye/cli/Dockerfile) -- [`8.0.27-apache-bullseye`, `8.0-apache-bullseye`, `8.0.27-apache`, `8.0-apache`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/bullseye/apache/Dockerfile) -- [`8.0.27-fpm-bullseye`, `8.0-fpm-bullseye`, `8.0.27-fpm`, `8.0-fpm`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/bullseye/fpm/Dockerfile) -- [`8.0.27-zts-bullseye`, `8.0-zts-bullseye`, `8.0.27-zts`, `8.0-zts`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/bullseye/zts/Dockerfile) -- [`8.0.27-cli-buster`, `8.0-cli-buster`, `8.0.27-buster`, `8.0-buster`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/buster/cli/Dockerfile) -- [`8.0.27-apache-buster`, `8.0-apache-buster`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/buster/apache/Dockerfile) -- [`8.0.27-fpm-buster`, `8.0-fpm-buster`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/buster/fpm/Dockerfile) -- [`8.0.27-zts-buster`, `8.0-zts-buster`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/buster/zts/Dockerfile) -- [`8.0.27-cli-alpine3.16`, `8.0-cli-alpine3.16`, `8.0.27-alpine3.16`, `8.0-alpine3.16`, `8.0.27-cli-alpine`, `8.0-cli-alpine`, `8.0.27-alpine`, `8.0-alpine`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/alpine3.16/cli/Dockerfile) -- [`8.0.27-fpm-alpine3.16`, `8.0-fpm-alpine3.16`, `8.0.27-fpm-alpine`, `8.0-fpm-alpine`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/alpine3.16/fpm/Dockerfile) -- [`8.0.27-zts-alpine3.16`, `8.0-zts-alpine3.16`, `8.0.27-zts-alpine`, `8.0-zts-alpine`](https://github.com/docker-library/php/blob/af4fd9abb0770f9dcbac5b7b8f30f20d28659c7c/8.0/alpine3.16/zts/Dockerfile) +- [`8.5.0RC5-cli-trixie`, `8.5-rc-cli-trixie`, `8.5.0RC5-trixie`, `8.5-rc-trixie`, `8.5.0RC5-cli`, `8.5-rc-cli`, `8.5.0RC5`, `8.5-rc`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/trixie/cli/Dockerfile) + +- [`8.5.0RC5-apache-trixie`, `8.5-rc-apache-trixie`, `8.5.0RC5-apache`, `8.5-rc-apache`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/trixie/apache/Dockerfile) + +- [`8.5.0RC5-fpm-trixie`, `8.5-rc-fpm-trixie`, `8.5.0RC5-fpm`, `8.5-rc-fpm`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/trixie/fpm/Dockerfile) + +- [`8.5.0RC5-zts-trixie`, `8.5-rc-zts-trixie`, `8.5.0RC5-zts`, `8.5-rc-zts`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/trixie/zts/Dockerfile) + +- [`8.5.0RC5-cli-bookworm`, `8.5-rc-cli-bookworm`, `8.5.0RC5-bookworm`, `8.5-rc-bookworm`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/bookworm/cli/Dockerfile) + +- [`8.5.0RC5-apache-bookworm`, `8.5-rc-apache-bookworm`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/bookworm/apache/Dockerfile) + +- [`8.5.0RC5-fpm-bookworm`, `8.5-rc-fpm-bookworm`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/bookworm/fpm/Dockerfile) + +- [`8.5.0RC5-zts-bookworm`, `8.5-rc-zts-bookworm`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/bookworm/zts/Dockerfile) + +- [`8.5.0RC5-cli-alpine3.22`, `8.5-rc-cli-alpine3.22`, `8.5.0RC5-alpine3.22`, `8.5-rc-alpine3.22`, `8.5.0RC5-cli-alpine`, `8.5-rc-cli-alpine`, `8.5.0RC5-alpine`, `8.5-rc-alpine`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/alpine3.22/cli/Dockerfile) + +- [`8.5.0RC5-fpm-alpine3.22`, `8.5-rc-fpm-alpine3.22`, `8.5.0RC5-fpm-alpine`, `8.5-rc-fpm-alpine`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/alpine3.22/fpm/Dockerfile) + +- [`8.5.0RC5-zts-alpine3.22`, `8.5-rc-zts-alpine3.22`, `8.5.0RC5-zts-alpine`, `8.5-rc-zts-alpine`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/alpine3.22/zts/Dockerfile) + +- [`8.5.0RC5-cli-alpine3.21`, `8.5-rc-cli-alpine3.21`, `8.5.0RC5-alpine3.21`, `8.5-rc-alpine3.21`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/alpine3.21/cli/Dockerfile) + +- [`8.5.0RC5-fpm-alpine3.21`, `8.5-rc-fpm-alpine3.21`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/alpine3.21/fpm/Dockerfile) + +- [`8.5.0RC5-zts-alpine3.21`, `8.5-rc-zts-alpine3.21`](https://github.com/docker-library/php/blob/f334abfc64cd37560135cfa20511fcb096fcfe4b/8.5-rc/alpine3.21/zts/Dockerfile) + +- [`8.4.15RC1-cli-trixie`, `8.4-rc-cli-trixie`, `8.4.15RC1-trixie`, `8.4-rc-trixie`, `8.4.15RC1-cli`, `8.4-rc-cli`, `8.4.15RC1`, `8.4-rc`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/trixie/cli/Dockerfile) + +- [`8.4.15RC1-apache-trixie`, `8.4-rc-apache-trixie`, `8.4.15RC1-apache`, `8.4-rc-apache`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/trixie/apache/Dockerfile) + +- [`8.4.15RC1-fpm-trixie`, `8.4-rc-fpm-trixie`, `8.4.15RC1-fpm`, `8.4-rc-fpm`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/trixie/fpm/Dockerfile) + +- [`8.4.15RC1-zts-trixie`, `8.4-rc-zts-trixie`, `8.4.15RC1-zts`, `8.4-rc-zts`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/trixie/zts/Dockerfile) + +- [`8.4.15RC1-cli-bookworm`, `8.4-rc-cli-bookworm`, `8.4.15RC1-bookworm`, `8.4-rc-bookworm`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/bookworm/cli/Dockerfile) + +- [`8.4.15RC1-apache-bookworm`, `8.4-rc-apache-bookworm`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/bookworm/apache/Dockerfile) + +- [`8.4.15RC1-fpm-bookworm`, `8.4-rc-fpm-bookworm`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/bookworm/fpm/Dockerfile) + +- [`8.4.15RC1-zts-bookworm`, `8.4-rc-zts-bookworm`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/bookworm/zts/Dockerfile) + +- [`8.4.15RC1-cli-alpine3.22`, `8.4-rc-cli-alpine3.22`, `8.4.15RC1-alpine3.22`, `8.4-rc-alpine3.22`, `8.4.15RC1-cli-alpine`, `8.4-rc-cli-alpine`, `8.4.15RC1-alpine`, `8.4-rc-alpine`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/alpine3.22/cli/Dockerfile) + +- [`8.4.15RC1-fpm-alpine3.22`, `8.4-rc-fpm-alpine3.22`, `8.4.15RC1-fpm-alpine`, `8.4-rc-fpm-alpine`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/alpine3.22/fpm/Dockerfile) + +- [`8.4.15RC1-zts-alpine3.22`, `8.4-rc-zts-alpine3.22`, `8.4.15RC1-zts-alpine`, `8.4-rc-zts-alpine`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/alpine3.22/zts/Dockerfile) + +- [`8.4.15RC1-cli-alpine3.21`, `8.4-rc-cli-alpine3.21`, `8.4.15RC1-alpine3.21`, `8.4-rc-alpine3.21`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/alpine3.21/cli/Dockerfile) + +- [`8.4.15RC1-fpm-alpine3.21`, `8.4-rc-fpm-alpine3.21`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/alpine3.21/fpm/Dockerfile) + +- [`8.4.15RC1-zts-alpine3.21`, `8.4-rc-zts-alpine3.21`](https://github.com/docker-library/php/blob/cc62281af8a607681805f1c0f82175f9e65bd9d4/8.4-rc/alpine3.21/zts/Dockerfile) + +- [`8.4.14-cli-trixie`, `8.4-cli-trixie`, `8-cli-trixie`, `cli-trixie`, `8.4.14-trixie`, `8.4-trixie`, `8-trixie`, `trixie`, `8.4.14-cli`, `8.4-cli`, `8-cli`, `cli`, `8.4.14`, `8.4`, `8`, `latest`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/trixie/cli/Dockerfile) + +- [`8.4.14-apache-trixie`, `8.4-apache-trixie`, `8-apache-trixie`, `apache-trixie`, `8.4.14-apache`, `8.4-apache`, `8-apache`, `apache`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/trixie/apache/Dockerfile) + +- [`8.4.14-fpm-trixie`, `8.4-fpm-trixie`, `8-fpm-trixie`, `fpm-trixie`, `8.4.14-fpm`, `8.4-fpm`, `8-fpm`, `fpm`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/trixie/fpm/Dockerfile) + +- [`8.4.14-zts-trixie`, `8.4-zts-trixie`, `8-zts-trixie`, `zts-trixie`, `8.4.14-zts`, `8.4-zts`, `8-zts`, `zts`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/trixie/zts/Dockerfile) + +- [`8.4.14-cli-bookworm`, `8.4-cli-bookworm`, `8-cli-bookworm`, `cli-bookworm`, `8.4.14-bookworm`, `8.4-bookworm`, `8-bookworm`, `bookworm`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/bookworm/cli/Dockerfile) + +- [`8.4.14-apache-bookworm`, `8.4-apache-bookworm`, `8-apache-bookworm`, `apache-bookworm`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/bookworm/apache/Dockerfile) + +- [`8.4.14-fpm-bookworm`, `8.4-fpm-bookworm`, `8-fpm-bookworm`, `fpm-bookworm`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/bookworm/fpm/Dockerfile) + +- [`8.4.14-zts-bookworm`, `8.4-zts-bookworm`, `8-zts-bookworm`, `zts-bookworm`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/bookworm/zts/Dockerfile) + +- [`8.4.14-cli-alpine3.22`, `8.4-cli-alpine3.22`, `8-cli-alpine3.22`, `cli-alpine3.22`, `8.4.14-alpine3.22`, `8.4-alpine3.22`, `8-alpine3.22`, `alpine3.22`, `8.4.14-cli-alpine`, `8.4-cli-alpine`, `8-cli-alpine`, `cli-alpine`, `8.4.14-alpine`, `8.4-alpine`, `8-alpine`, `alpine`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/alpine3.22/cli/Dockerfile) + +- [`8.4.14-fpm-alpine3.22`, `8.4-fpm-alpine3.22`, `8-fpm-alpine3.22`, `fpm-alpine3.22`, `8.4.14-fpm-alpine`, `8.4-fpm-alpine`, `8-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/alpine3.22/fpm/Dockerfile) + +- [`8.4.14-zts-alpine3.22`, `8.4-zts-alpine3.22`, `8-zts-alpine3.22`, `zts-alpine3.22`, `8.4.14-zts-alpine`, `8.4-zts-alpine`, `8-zts-alpine`, `zts-alpine`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/alpine3.22/zts/Dockerfile) + +- [`8.4.14-cli-alpine3.21`, `8.4-cli-alpine3.21`, `8-cli-alpine3.21`, `cli-alpine3.21`, `8.4.14-alpine3.21`, `8.4-alpine3.21`, `8-alpine3.21`, `alpine3.21`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/alpine3.21/cli/Dockerfile) + +- [`8.4.14-fpm-alpine3.21`, `8.4-fpm-alpine3.21`, `8-fpm-alpine3.21`, `fpm-alpine3.21`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/alpine3.21/fpm/Dockerfile) + +- [`8.4.14-zts-alpine3.21`, `8.4-zts-alpine3.21`, `8-zts-alpine3.21`, `zts-alpine3.21`](https://github.com/docker-library/php/blob/d8ae43743e4c314e4363d8865818de4e7b619d63/8.4/alpine3.21/zts/Dockerfile) + +- [`8.3.28RC1-cli-trixie`, `8.3-rc-cli-trixie`, `8.3.28RC1-trixie`, `8.3-rc-trixie`, `8.3.28RC1-cli`, `8.3-rc-cli`, `8.3.28RC1`, `8.3-rc`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/trixie/cli/Dockerfile) + +- [`8.3.28RC1-apache-trixie`, `8.3-rc-apache-trixie`, `8.3.28RC1-apache`, `8.3-rc-apache`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/trixie/apache/Dockerfile) + +- [`8.3.28RC1-fpm-trixie`, `8.3-rc-fpm-trixie`, `8.3.28RC1-fpm`, `8.3-rc-fpm`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/trixie/fpm/Dockerfile) + +- [`8.3.28RC1-zts-trixie`, `8.3-rc-zts-trixie`, `8.3.28RC1-zts`, `8.3-rc-zts`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/trixie/zts/Dockerfile) + +- [`8.3.28RC1-cli-bookworm`, `8.3-rc-cli-bookworm`, `8.3.28RC1-bookworm`, `8.3-rc-bookworm`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/bookworm/cli/Dockerfile) + +- [`8.3.28RC1-apache-bookworm`, `8.3-rc-apache-bookworm`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/bookworm/apache/Dockerfile) + +- [`8.3.28RC1-fpm-bookworm`, `8.3-rc-fpm-bookworm`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/bookworm/fpm/Dockerfile) + +- [`8.3.28RC1-zts-bookworm`, `8.3-rc-zts-bookworm`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/bookworm/zts/Dockerfile) + +- [`8.3.28RC1-cli-alpine3.22`, `8.3-rc-cli-alpine3.22`, `8.3.28RC1-alpine3.22`, `8.3-rc-alpine3.22`, `8.3.28RC1-cli-alpine`, `8.3-rc-cli-alpine`, `8.3.28RC1-alpine`, `8.3-rc-alpine`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/alpine3.22/cli/Dockerfile) + +- [`8.3.28RC1-fpm-alpine3.22`, `8.3-rc-fpm-alpine3.22`, `8.3.28RC1-fpm-alpine`, `8.3-rc-fpm-alpine`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/alpine3.22/fpm/Dockerfile) + +- [`8.3.28RC1-zts-alpine3.22`, `8.3-rc-zts-alpine3.22`, `8.3.28RC1-zts-alpine`, `8.3-rc-zts-alpine`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/alpine3.22/zts/Dockerfile) + +- [`8.3.28RC1-cli-alpine3.21`, `8.3-rc-cli-alpine3.21`, `8.3.28RC1-alpine3.21`, `8.3-rc-alpine3.21`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/alpine3.21/cli/Dockerfile) + +- [`8.3.28RC1-fpm-alpine3.21`, `8.3-rc-fpm-alpine3.21`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/alpine3.21/fpm/Dockerfile) + +- [`8.3.28RC1-zts-alpine3.21`, `8.3-rc-zts-alpine3.21`](https://github.com/docker-library/php/blob/80245dacccf5ba76d4daed9b3dfc86a57652ca3f/8.3-rc/alpine3.21/zts/Dockerfile) + +- [`8.3.27-cli-trixie`, `8.3-cli-trixie`, `8.3.27-trixie`, `8.3-trixie`, `8.3.27-cli`, `8.3-cli`, `8.3.27`, `8.3`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/trixie/cli/Dockerfile) + +- [`8.3.27-apache-trixie`, `8.3-apache-trixie`, `8.3.27-apache`, `8.3-apache`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/trixie/apache/Dockerfile) + +- [`8.3.27-fpm-trixie`, `8.3-fpm-trixie`, `8.3.27-fpm`, `8.3-fpm`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/trixie/fpm/Dockerfile) + +- [`8.3.27-zts-trixie`, `8.3-zts-trixie`, `8.3.27-zts`, `8.3-zts`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/trixie/zts/Dockerfile) + +- [`8.3.27-cli-bookworm`, `8.3-cli-bookworm`, `8.3.27-bookworm`, `8.3-bookworm`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/bookworm/cli/Dockerfile) + +- [`8.3.27-apache-bookworm`, `8.3-apache-bookworm`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/bookworm/apache/Dockerfile) + +- [`8.3.27-fpm-bookworm`, `8.3-fpm-bookworm`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/bookworm/fpm/Dockerfile) + +- [`8.3.27-zts-bookworm`, `8.3-zts-bookworm`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/bookworm/zts/Dockerfile) + +- [`8.3.27-cli-alpine3.22`, `8.3-cli-alpine3.22`, `8.3.27-alpine3.22`, `8.3-alpine3.22`, `8.3.27-cli-alpine`, `8.3-cli-alpine`, `8.3.27-alpine`, `8.3-alpine`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/alpine3.22/cli/Dockerfile) + +- [`8.3.27-fpm-alpine3.22`, `8.3-fpm-alpine3.22`, `8.3.27-fpm-alpine`, `8.3-fpm-alpine`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/alpine3.22/fpm/Dockerfile) + +- [`8.3.27-zts-alpine3.22`, `8.3-zts-alpine3.22`, `8.3.27-zts-alpine`, `8.3-zts-alpine`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/alpine3.22/zts/Dockerfile) + +- [`8.3.27-cli-alpine3.21`, `8.3-cli-alpine3.21`, `8.3.27-alpine3.21`, `8.3-alpine3.21`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/alpine3.21/cli/Dockerfile) + +- [`8.3.27-fpm-alpine3.21`, `8.3-fpm-alpine3.21`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/alpine3.21/fpm/Dockerfile) + +- [`8.3.27-zts-alpine3.21`, `8.3-zts-alpine3.21`](https://github.com/docker-library/php/blob/8e01ffe94ed4ccca7c0a37be6dcb45995cf5d93b/8.3/alpine3.21/zts/Dockerfile) + +- [`8.2.29-cli-trixie`, `8.2-cli-trixie`, `8.2.29-trixie`, `8.2-trixie`, `8.2.29-cli`, `8.2-cli`, `8.2.29`, `8.2`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/trixie/cli/Dockerfile) + +- [`8.2.29-apache-trixie`, `8.2-apache-trixie`, `8.2.29-apache`, `8.2-apache`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/trixie/apache/Dockerfile) + +- [`8.2.29-fpm-trixie`, `8.2-fpm-trixie`, `8.2.29-fpm`, `8.2-fpm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/trixie/fpm/Dockerfile) + +- [`8.2.29-zts-trixie`, `8.2-zts-trixie`, `8.2.29-zts`, `8.2-zts`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/trixie/zts/Dockerfile) + +- [`8.2.29-cli-bookworm`, `8.2-cli-bookworm`, `8.2.29-bookworm`, `8.2-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/bookworm/cli/Dockerfile) + +- [`8.2.29-apache-bookworm`, `8.2-apache-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/bookworm/apache/Dockerfile) + +- [`8.2.29-fpm-bookworm`, `8.2-fpm-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/bookworm/fpm/Dockerfile) + +- [`8.2.29-zts-bookworm`, `8.2-zts-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.2/bookworm/zts/Dockerfile) + +- [`8.2.29-cli-alpine3.22`, `8.2-cli-alpine3.22`, `8.2.29-alpine3.22`, `8.2-alpine3.22`, `8.2.29-cli-alpine`, `8.2-cli-alpine`, `8.2.29-alpine`, `8.2-alpine`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.2/alpine3.22/cli/Dockerfile) + +- [`8.2.29-fpm-alpine3.22`, `8.2-fpm-alpine3.22`, `8.2.29-fpm-alpine`, `8.2-fpm-alpine`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.2/alpine3.22/fpm/Dockerfile) + +- [`8.2.29-zts-alpine3.22`, `8.2-zts-alpine3.22`, `8.2.29-zts-alpine`, `8.2-zts-alpine`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.2/alpine3.22/zts/Dockerfile) + +- [`8.2.29-cli-alpine3.21`, `8.2-cli-alpine3.21`, `8.2.29-alpine3.21`, `8.2-alpine3.21`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.2/alpine3.21/cli/Dockerfile) + +- [`8.2.29-fpm-alpine3.21`, `8.2-fpm-alpine3.21`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.2/alpine3.21/fpm/Dockerfile) + +- [`8.2.29-zts-alpine3.21`, `8.2-zts-alpine3.21`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.2/alpine3.21/zts/Dockerfile) + +- [`8.1.33-cli-trixie`, `8.1-cli-trixie`, `8.1.33-trixie`, `8.1-trixie`, `8.1.33-cli`, `8.1-cli`, `8.1.33`, `8.1`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/trixie/cli/Dockerfile) + +- [`8.1.33-apache-trixie`, `8.1-apache-trixie`, `8.1.33-apache`, `8.1-apache`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/trixie/apache/Dockerfile) + +- [`8.1.33-fpm-trixie`, `8.1-fpm-trixie`, `8.1.33-fpm`, `8.1-fpm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/trixie/fpm/Dockerfile) + +- [`8.1.33-zts-trixie`, `8.1-zts-trixie`, `8.1.33-zts`, `8.1-zts`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/trixie/zts/Dockerfile) + +- [`8.1.33-cli-bookworm`, `8.1-cli-bookworm`, `8.1.33-bookworm`, `8.1-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/bookworm/cli/Dockerfile) + +- [`8.1.33-apache-bookworm`, `8.1-apache-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/bookworm/apache/Dockerfile) + +- [`8.1.33-fpm-bookworm`, `8.1-fpm-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/bookworm/fpm/Dockerfile) + +- [`8.1.33-zts-bookworm`, `8.1-zts-bookworm`](https://github.com/docker-library/php/blob/686f9529f8659f929509a2c3ec2df34a14a4594a/8.1/bookworm/zts/Dockerfile) + +- [`8.1.33-cli-alpine3.22`, `8.1-cli-alpine3.22`, `8.1.33-alpine3.22`, `8.1-alpine3.22`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.1/alpine3.22/cli/Dockerfile) + +- [`8.1.33-fpm-alpine3.22`, `8.1-fpm-alpine3.22`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.1/alpine3.22/fpm/Dockerfile) + +- [`8.1.33-zts-alpine3.22`, `8.1-zts-alpine3.22`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.1/alpine3.22/zts/Dockerfile) + +- [`8.1.33-cli-alpine3.21`, `8.1-cli-alpine3.21`, `8.1.33-alpine3.21`, `8.1-alpine3.21`, `8.1.33-cli-alpine`, `8.1-cli-alpine`, `8.1.33-alpine`, `8.1-alpine`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.1/alpine3.21/cli/Dockerfile) + +- [`8.1.33-fpm-alpine3.21`, `8.1-fpm-alpine3.21`, `8.1.33-fpm-alpine`, `8.1-fpm-alpine`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.1/alpine3.21/fpm/Dockerfile) + +- [`8.1.33-zts-alpine3.21`, `8.1-zts-alpine3.21`, `8.1.33-zts-alpine`, `8.1-zts-alpine`](https://github.com/docker-library/php/blob/eb7898cb9c2963997a4396833d4cc20e350a24ea/8.1/alpine3.21/zts/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/php/issues](https://github.com/docker-library/php/issues) + [https://github.com/docker-library/php/issues](https://github.com/docker-library/php/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/php/), [`arm32v5`](https://hub.docker.com/r/arm32v5/php/), [`arm32v6`](https://hub.docker.com/r/arm32v6/php/), [`arm32v7`](https://hub.docker.com/r/arm32v7/php/), [`arm64v8`](https://hub.docker.com/r/arm64v8/php/), [`i386`](https://hub.docker.com/r/i386/php/), [`mips64le`](https://hub.docker.com/r/mips64le/php/), [`ppc64le`](https://hub.docker.com/r/ppc64le/php/), [`s390x`](https://hub.docker.com/r/s390x/php/) + [`amd64`](https://hub.docker.com/r/amd64/php/), [`arm32v5`](https://hub.docker.com/r/arm32v5/php/), [`arm32v6`](https://hub.docker.com/r/arm32v6/php/), [`arm32v7`](https://hub.docker.com/r/arm32v7/php/), [`arm64v8`](https://hub.docker.com/r/arm64v8/php/), [`i386`](https://hub.docker.com/r/i386/php/), [`mips64le`](https://hub.docker.com/r/mips64le/php/), [`ppc64le`](https://hub.docker.com/r/ppc64le/php/), [`riscv64`](https://hub.docker.com/r/riscv64/php/), [`s390x`](https://hub.docker.com/r/s390x/php/) - **Published image artifact details**: [repo-info repo's `repos/php/` directory](https://github.com/docker-library/repo-info/blob/master/repos/php) ([history](https://github.com/docker-library/repo-info/commits/master/repos/php)) @@ -96,7 +252,7 @@ PHP is a server-side scripting language designed for web development, but which ### Create a `Dockerfile` in your PHP project ```dockerfile -FROM php:7.4-cli +FROM php:8.2-cli COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "php", "./your-script.php" ] @@ -114,7 +270,7 @@ $ docker run -it --rm --name my-running-app my-php-app For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a PHP script by using the PHP Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:7.4-cli php your-script.php +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:8.2-cli php your-script.php ``` ## How to install more PHP extensions @@ -126,7 +282,7 @@ We provide the helper scripts `docker-php-ext-configure`, `docker-php-ext-instal In order to keep the images smaller, PHP's source is kept in a compressed tar file. To facilitate linking of PHP's source with any extension, we also provide the helper script `docker-php-source` to easily extract the tar or delete the extracted source. Note: if you do use `docker-php-source` to extract the source, be sure to delete it in the same layer of the docker image. ```Dockerfile -FROM php:7.4-cli +FROM php:8.2-cli RUN docker-php-source extract \ # do important things \ && docker-php-source delete @@ -137,9 +293,9 @@ RUN docker-php-source extract \ For example, if you want to have a PHP-FPM image with the `gd` extension, you can inherit the base image that you like, and write your own `Dockerfile` like this: ```dockerfile -FROM php:7.4-fpm +FROM php:8.2-fpm RUN apt-get update && apt-get install -y \ - libfreetype6-dev \ + libfreetype-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ @@ -161,59 +317,57 @@ Some extensions are compiled by default. This depends on the PHP version you are Some extensions are not provided with the PHP source, but are instead available through [PECL](https://pecl.php.net/). To install a PECL extension, use `pecl install` to download and compile it, then use `docker-php-ext-enable` to enable it: ```dockerfile -FROM php:7.4-cli -RUN pecl install redis-5.1.1 \ - && pecl install xdebug-2.8.1 \ +FROM php:8.2-cli +RUN pecl install redis-5.3.7 \ + && pecl install xdebug-3.2.1 \ && docker-php-ext-enable redis xdebug ``` ```dockerfile -FROM php:5.6-cli -RUN apt-get update && apt-get install -y libmemcached-dev zlib1g-dev \ - && pecl install memcached-2.2.0 \ +FROM php:8.2-cli +RUN apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev \ + && pecl install memcached-3.2.0 \ && docker-php-ext-enable memcached ``` -It is *strongly* recommended that users use an explicit version number in their `pecl install` invocations to ensure proper PHP version compatibility (PECL does not check the PHP version compatiblity when choosing a version of the extension to install, but does when trying to install it). - -For example, `memcached-2.2.0` has no PHP version constraints (https://pecl.php.net/package/memcached/2.2.0), but `memcached-3.1.4` requires PHP 7.0.0 or newer (https://pecl.php.net/package/memcached/3.1.4). When doing `pecl install memcached` (no specific version) on PHP 5.6, PECL will try to install the latest release and fail. - -Beyond the compatibility issue, it's also a good practice to ensure you know when your dependencies receive updates and can control those updates directly. +It is *strongly* recommended that users use an explicit version number in their `pecl install` invocations to ensure proper PHP version compatibility (PECL does not check the PHP version compatibility when choosing a version of the extension to install, but does when trying to install it). Beyond the compatibility issue, it's also a good practice to ensure you know when your dependencies receive updates and can control those updates directly. -Unlike PHP core extensions, PECL extensions should be installed in series to fail properly if something went wrong. Otherwise errors are just skipped by PECL. For example, `pecl install memcached-3.1.4 && pecl install redis-5.1.1` instead of `pecl install memcached-3.1.4 redis-5.1.1`. However, `docker-php-ext-enable memcached redis` is fine to be all in one command. +Unlike PHP core extensions, PECL extensions should be installed in series to fail properly if something went wrong. Otherwise errors are just skipped by PECL. For example, `pecl install memcached-3.2.0 && pecl install redis-5.3.7` instead of `pecl install memcached-3.2.0 redis-5.3.7`. However, `docker-php-ext-enable memcached redis` is fine to be all in one command. ### Other extensions Some extensions are not provided via either Core or PECL; these can be installed too, although the process is less automated: ```dockerfile -FROM php:5.6-cli -RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \ - && mkdir -p xcache \ - && tar -xf xcache.tar.gz -C xcache --strip-components=1 \ - && rm xcache.tar.gz \ +FROM php:8.2-cli +RUN curl -fsSL '[url-to-custom-php-module]' -o module-name.tar.gz \ + && mkdir -p module-name \ + && sha256sum -c "[shasum-value] module-name.tar.gz" \ + && tar -xf module-name.tar.gz -C module-name --strip-components=1 \ + && rm module-name.tar.gz \ && ( \ - cd xcache \ + cd module-name \ && phpize \ - && ./configure --enable-xcache \ + && ./configure --enable-module-name \ && make -j "$(nproc)" \ && make install \ ) \ - && rm -r xcache \ - && docker-php-ext-enable xcache + && rm -r module-name \ + && docker-php-ext-enable module-name ``` The `docker-php-ext-*` scripts *can* accept an arbitrary path, but it must be absolute (to disambiguate from built-in extension names), so the above example could also be written as the following: ```dockerfile -FROM php:5.6-cli -RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \ - && mkdir -p /tmp/xcache \ - && tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \ - && rm xcache.tar.gz \ - && docker-php-ext-configure /tmp/xcache --enable-xcache \ - && docker-php-ext-install /tmp/xcache \ - && rm -r /tmp/xcache +FROM php:8.2-cli +RUN curl -fsSL '[url-to-custom-php-module]' -o module-name.tar.gz \ + && mkdir -p /tmp/module-name \ + && sha256sum -c "[shasum-value] module-name.tar.gz" \ + && tar -xf module-name.tar.gz -C /tmp/module-name --strip-components=1 \ + && rm module-name.tar.gz \ + && docker-php-ext-configure /tmp/module-name --enable-module-name \ + && docker-php-ext-install /tmp/module-name \ + && rm -r /tmp/module-name ``` ## Running as an arbitrary user @@ -248,7 +402,7 @@ The default config can be customized by copying configuration files into the `$P ### Example ```dockerfile -FROM php:7.4-fpm-alpine +FROM php:8.2-fpm-alpine # Use the default production configuration RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" @@ -260,7 +414,7 @@ In many production environments, it is also recommended to (build and) enable th The `php` images come in many flavors, each designed for a specific use case. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `php:-cli` @@ -313,15 +467,15 @@ A similar technique could be employed for other Apache configuration options. ## `php:-fpm` -This variant contains PHP-FPM, which is a FastCGI implementation for PHP. See [the PHP-FPM website](https://php-fpm.org/) for more information about PHP-FPM. +This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP. In order to use this image variant, some kind of reverse proxy (such as NGINX, Apache, or other tool which speaks the FastCGI protocol) will be required. Some potentially helpful resources: -- [PHP-FPM.org](https://php-fpm.org/) -- [simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) -- [very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) +- [FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php) +- [Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) +- [Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) diff --git a/php/content.md b/php/content.md index 31a1008393bf..f53d27d4f293 100644 --- a/php/content.md +++ b/php/content.md @@ -11,7 +11,7 @@ PHP is a server-side scripting language designed for web development, but which ### Create a `Dockerfile` in your PHP project ```dockerfile -FROM %%IMAGE%%:7.4-cli +FROM %%IMAGE%%:8.2-cli COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "php", "./your-script.php" ] @@ -29,7 +29,7 @@ $ docker run -it --rm --name my-running-app my-php-app For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a PHP script by using the PHP Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:7.4-cli php your-script.php +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:8.2-cli php your-script.php ``` ## How to install more PHP extensions @@ -41,7 +41,7 @@ We provide the helper scripts `docker-php-ext-configure`, `docker-php-ext-instal In order to keep the images smaller, PHP's source is kept in a compressed tar file. To facilitate linking of PHP's source with any extension, we also provide the helper script `docker-php-source` to easily extract the tar or delete the extracted source. Note: if you do use `docker-php-source` to extract the source, be sure to delete it in the same layer of the docker image. ```Dockerfile -FROM %%IMAGE%%:7.4-cli +FROM %%IMAGE%%:8.2-cli RUN docker-php-source extract \ # do important things \ && docker-php-source delete @@ -52,9 +52,9 @@ RUN docker-php-source extract \ For example, if you want to have a PHP-FPM image with the `gd` extension, you can inherit the base image that you like, and write your own `Dockerfile` like this: ```dockerfile -FROM %%IMAGE%%:7.4-fpm +FROM %%IMAGE%%:8.2-fpm RUN apt-get update && apt-get install -y \ - libfreetype6-dev \ + libfreetype-dev \ libjpeg62-turbo-dev \ libpng-dev \ && docker-php-ext-configure gd --with-freetype --with-jpeg \ @@ -76,59 +76,57 @@ Some extensions are compiled by default. This depends on the PHP version you are Some extensions are not provided with the PHP source, but are instead available through [PECL](https://pecl.php.net/). To install a PECL extension, use `pecl install` to download and compile it, then use `docker-php-ext-enable` to enable it: ```dockerfile -FROM %%IMAGE%%:7.4-cli -RUN pecl install redis-5.1.1 \ - && pecl install xdebug-2.8.1 \ +FROM %%IMAGE%%:8.2-cli +RUN pecl install redis-5.3.7 \ + && pecl install xdebug-3.2.1 \ && docker-php-ext-enable redis xdebug ``` ```dockerfile -FROM %%IMAGE%%:5.6-cli -RUN apt-get update && apt-get install -y libmemcached-dev zlib1g-dev \ - && pecl install memcached-2.2.0 \ +FROM %%IMAGE%%:8.2-cli +RUN apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev \ + && pecl install memcached-3.2.0 \ && docker-php-ext-enable memcached ``` -It is *strongly* recommended that users use an explicit version number in their `pecl install` invocations to ensure proper PHP version compatibility (PECL does not check the PHP version compatiblity when choosing a version of the extension to install, but does when trying to install it). +It is *strongly* recommended that users use an explicit version number in their `pecl install` invocations to ensure proper PHP version compatibility (PECL does not check the PHP version compatibility when choosing a version of the extension to install, but does when trying to install it). Beyond the compatibility issue, it's also a good practice to ensure you know when your dependencies receive updates and can control those updates directly. -For example, `memcached-2.2.0` has no PHP version constraints (https://pecl.php.net/package/memcached/2.2.0), but `memcached-3.1.4` requires PHP 7.0.0 or newer (https://pecl.php.net/package/memcached/3.1.4). When doing `pecl install memcached` (no specific version) on PHP 5.6, PECL will try to install the latest release and fail. - -Beyond the compatibility issue, it's also a good practice to ensure you know when your dependencies receive updates and can control those updates directly. - -Unlike PHP core extensions, PECL extensions should be installed in series to fail properly if something went wrong. Otherwise errors are just skipped by PECL. For example, `pecl install memcached-3.1.4 && pecl install redis-5.1.1` instead of `pecl install memcached-3.1.4 redis-5.1.1`. However, `docker-php-ext-enable memcached redis` is fine to be all in one command. +Unlike PHP core extensions, PECL extensions should be installed in series to fail properly if something went wrong. Otherwise errors are just skipped by PECL. For example, `pecl install memcached-3.2.0 && pecl install redis-5.3.7` instead of `pecl install memcached-3.2.0 redis-5.3.7`. However, `docker-php-ext-enable memcached redis` is fine to be all in one command. ### Other extensions Some extensions are not provided via either Core or PECL; these can be installed too, although the process is less automated: ```dockerfile -FROM %%IMAGE%%:5.6-cli -RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \ - && mkdir -p xcache \ - && tar -xf xcache.tar.gz -C xcache --strip-components=1 \ - && rm xcache.tar.gz \ +FROM %%IMAGE%%:8.2-cli +RUN curl -fsSL '[url-to-custom-php-module]' -o module-name.tar.gz \ + && mkdir -p module-name \ + && sha256sum -c "[shasum-value] module-name.tar.gz" \ + && tar -xf module-name.tar.gz -C module-name --strip-components=1 \ + && rm module-name.tar.gz \ && ( \ - cd xcache \ + cd module-name \ && phpize \ - && ./configure --enable-xcache \ + && ./configure --enable-module-name \ && make -j "$(nproc)" \ && make install \ ) \ - && rm -r xcache \ - && docker-php-ext-enable xcache + && rm -r module-name \ + && docker-php-ext-enable module-name ``` The `docker-php-ext-*` scripts *can* accept an arbitrary path, but it must be absolute (to disambiguate from built-in extension names), so the above example could also be written as the following: ```dockerfile -FROM %%IMAGE%%:5.6-cli -RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar.gz' -o xcache.tar.gz \ - && mkdir -p /tmp/xcache \ - && tar -xf xcache.tar.gz -C /tmp/xcache --strip-components=1 \ - && rm xcache.tar.gz \ - && docker-php-ext-configure /tmp/xcache --enable-xcache \ - && docker-php-ext-install /tmp/xcache \ - && rm -r /tmp/xcache +FROM %%IMAGE%%:8.2-cli +RUN curl -fsSL '[url-to-custom-php-module]' -o module-name.tar.gz \ + && mkdir -p /tmp/module-name \ + && sha256sum -c "[shasum-value] module-name.tar.gz" \ + && tar -xf module-name.tar.gz -C /tmp/module-name --strip-components=1 \ + && rm module-name.tar.gz \ + && docker-php-ext-configure /tmp/module-name --enable-module-name \ + && docker-php-ext-install /tmp/module-name \ + && rm -r /tmp/module-name ``` ## Running as an arbitrary user @@ -163,7 +161,7 @@ The default config can be customized by copying configuration files into the `$P ### Example ```dockerfile -FROM %%IMAGE%%:7.4-fpm-alpine +FROM %%IMAGE%%:8.2-fpm-alpine # Use the default production configuration RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" diff --git a/php/metadata.json b/php/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/php/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/php/variant-fpm.md b/php/variant-fpm.md index 06ba66065500..5ea228701ea5 100644 --- a/php/variant-fpm.md +++ b/php/variant-fpm.md @@ -1,14 +1,14 @@ ## `%%IMAGE%%:-fpm` -This variant contains PHP-FPM, which is a FastCGI implementation for PHP. See [the PHP-FPM website](https://php-fpm.org/) for more information about PHP-FPM. +This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP. In order to use this image variant, some kind of reverse proxy (such as NGINX, Apache, or other tool which speaks the FastCGI protocol) will be required. Some potentially helpful resources: -- [PHP-FPM.org](https://php-fpm.org/) -- [simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) -- [very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) +- [FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php) +- [Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) +- [Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) diff --git a/phpmyadmin/README.md b/phpmyadmin/README.md index 22d73f2cea93..a6c10e8811bd 100644 --- a/phpmyadmin/README.md +++ b/phpmyadmin/README.md @@ -24,17 +24,19 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.2.0-apache`, `5.2-apache`, `5-apache`, `apache`, `5.2.0`, `5.2`, `5`, `latest`](https://github.com/phpmyadmin/docker/blob/71d54acc9309c04ed53a148ca1979b6cdc10c5b9/apache/Dockerfile) -- [`5.2.0-fpm`, `5.2-fpm`, `5-fpm`, `fpm`](https://github.com/phpmyadmin/docker/blob/71d54acc9309c04ed53a148ca1979b6cdc10c5b9/fpm/Dockerfile) -- [`5.2.0-fpm-alpine`, `5.2-fpm-alpine`, `5-fpm-alpine`, `fpm-alpine`](https://github.com/phpmyadmin/docker/blob/71d54acc9309c04ed53a148ca1979b6cdc10c5b9/fpm-alpine/Dockerfile) +- [`5.2.3-apache`, `5.2-apache`, `5-apache`, `apache`, `5.2.3`, `5.2`, `5`, `latest`](https://github.com/phpmyadmin/docker/blob/452a995fe6c90b96473fc17c3d704786c33d42bc/apache/Dockerfile) + +- [`5.2.3-fpm`, `5.2-fpm`, `5-fpm`, `fpm`](https://github.com/phpmyadmin/docker/blob/452a995fe6c90b96473fc17c3d704786c33d42bc/fpm/Dockerfile) + +- [`5.2.3-fpm-alpine`, `5.2-fpm-alpine`, `5-fpm-alpine`, `fpm-alpine`](https://github.com/phpmyadmin/docker/blob/452a995fe6c90b96473fc17c3d704786c33d42bc/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/phpmyadmin/docker/issues](https://github.com/phpmyadmin/docker/issues) + [https://github.com/phpmyadmin/docker/issues](https://github.com/phpmyadmin/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/phpmyadmin/), [`arm32v5`](https://hub.docker.com/r/arm32v5/phpmyadmin/), [`arm32v6`](https://hub.docker.com/r/arm32v6/phpmyadmin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/phpmyadmin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/phpmyadmin/), [`i386`](https://hub.docker.com/r/i386/phpmyadmin/), [`mips64le`](https://hub.docker.com/r/mips64le/phpmyadmin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/phpmyadmin/), [`s390x`](https://hub.docker.com/r/s390x/phpmyadmin/) + [`amd64`](https://hub.docker.com/r/amd64/phpmyadmin/), [`arm32v5`](https://hub.docker.com/r/arm32v5/phpmyadmin/), [`arm32v6`](https://hub.docker.com/r/arm32v6/phpmyadmin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/phpmyadmin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/phpmyadmin/), [`i386`](https://hub.docker.com/r/i386/phpmyadmin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/phpmyadmin/), [`riscv64`](https://hub.docker.com/r/riscv64/phpmyadmin/), [`s390x`](https://hub.docker.com/r/s390x/phpmyadmin/) - **Published image artifact details**: [repo-info repo's `repos/phpmyadmin/` directory](https://github.com/docker-library/repo-info/blob/master/repos/phpmyadmin) ([history](https://github.com/docker-library/repo-info/commits/master/repos/phpmyadmin)) @@ -57,7 +59,7 @@ Run phpMyAdmin with Alpine, Apache and PHP FPM. # How to use this image -All of the following examples will bring you phpMyAdmin on `http://localhost:8080` where you can enjoy your happy MySQL administration. +All of the following examples will bring you phpMyAdmin on `http://localhost:8080` where you can enjoy your happy MySQL and MariaDB administration. ## Credentials @@ -111,20 +113,18 @@ You can use arbitrary servers by adding the environment variable `PMA_ARBITRARY= docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin ``` -## Usage with docker-compose and arbitrary server +## Usage with `docker compose` and an arbitrary server This will run phpMyAdmin with the arbitrary server option - allowing you to specify any MySQL/MariaDB server on the login page. -... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `phpmyadmin`: +Example `compose.yaml` for `phpmyadmin`: ```yaml -version: '3.1' - services: db: - image: mariadb:10.6 + image: mariadb:10.11 restart: always environment: MYSQL_ROOT_PASSWORD: notSecureChangeMe @@ -138,8 +138,6 @@ services: - PMA_ARBITRARY=1 ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/6372937f8f1ff823d2aaa102762be5bb5cd87f40/phpmyadmin/stack.yml) - ## Adding Custom Configuration You can add your own custom config.inc.php settings (such as Configuration Storage setup) by creating a file named `config.user.inc.php` with the various user defined settings in it, and then linking it into the container using: @@ -169,10 +167,40 @@ See the following links for config file information: - https://docs.phpmyadmin.net/en/latest/config.html#config - https://docs.phpmyadmin.net/en/latest/setup.html +## Adding custom configuration in `/etc/phpmyadmin/conf.d` + +you can also consider storing your custom configuration files in the folder `/etc/phpmyadmin/conf.d`, which is very suitable for managing multiple phpMyAdmin configuration files for different hosts,Then you can create `server-1.php`, `server-2.php`, or any file name you want, and store them in the conf.d directory mounted on the host. + +On the `docker run` line like this: + +```sh +docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/conf.d:/etc/phpmyadmin/conf.d:ro phpmyadmin +``` + ## Usage behind a reverse proxy Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.example.net/`) where the reverse proxy makes phpMyAdmin available. +## Sessions persistence + +In order to keep your sessions active between container updates you will need to mount the `/sessions` folder. + +```sh +-v /some/local/directory/sessions:/sessions:rw +``` + +## Connect to the database over SSL + +Set the variable `PMA_SSL` to `1` to enable SSL usage from phpMyAdmin to the MySQL server. The default value is `0`. The variable `PMA_SSLS` can be used as a comma seperated sequence of `0` and `1` where multiple hosts are mentioned. Values order must follow the `PMA_HOSTS` and will be computed accordingly. + +```sh +docker run --name phpmyadmin -d -e PMA_HOSTS=sslhost -e PMA_SSL=1 -p 8080:80 phpmyadmin +``` + +```sh +docker run --name phpmyadmin -d -e PMA_HOSTS='sslhost,nosslhost' -e PMA_SSLS='1,0' -p 8080:80 phpmyadmin +``` + ## Environment variables summary - `PMA_ARBITRARY` - when set to 1 connection to the arbitrary server will be allowed @@ -182,6 +210,19 @@ Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.ex - `PMA_HOSTS` - define comma separated list of address/host names of the MySQL servers - `PMA_VERBOSES` - define comma separated list of verbose names of the MySQL servers - `PMA_PORTS` - define comma separated list of ports of the MySQL servers +- `PMA_SOCKET` - define socket file for the MySQL connection +- `PMA_SOCKETS` - define comma separated list of socket files for the MySQL connections +- `PMA_SSL_DIR` - define the path used for SSL files generated from environement variables, default value is `/etc/phpmyadmin/ssl` +- `PMA_SSL` - when set to 1, defines SSL usage for the MySQL connection +- `PMA_SSLS` - comma separated list of `0` and `1` defining SSL usage for the corresponding MySQL connections +- `PMA_SSL_VERIFY` - when set to 1, enables SSL certificate verification for the MySQL connection. +- `PMA_SSL_VERIFIES` - comma-separated list of `0` and `1` to enable or disable SSL certificate verification for multiple MySQL connections. +- `PMA_SSL_CA` - in the context of mutual TLS security, allows setting your CA certificate file as a string inside the default `config.inc.php`. +- `PMA_SSL_CAS` - in the context of mutual TLS security, allows setting multiple CA certificate files as a comma-separated list of strings inside the default `config.inc.php`. +- `PMA_SSL_CERT` - in the context of mutual TLS security, allows setting your certificate file as a string inside the default `config.inc.php`. +- `PMA_SSL_CERTS` - in the context of mutual TLS security, allows setting multiple certificate files as a comma-separated list of strings inside the default `config.inc.php`. +- `PMA_SSL_KEY` - in the context of mutual TLS security, allows setting your private key file as a string inside the default `config.inc.php`. +- `PMA_SSL_KEYS` - in the context of mutual TLS security, allows setting multiple private key files as a comma-separated list of strings inside the default `config.inc.php`. - `PMA_USER` and `PMA_PASSWORD` - define username and password to use only with the `config` authentication method - `PMA_ABSOLUTE_URI` - the full URL to phpMyAdmin. Sometimes needed when used in a reverse-proxy configuration. Don't set this unless needed. See [documentation](https://docs.phpmyadmin.net/en/latest/config.html#cfg_PmaAbsoluteUri). - `PMA_CONFIG_BASE64` - if set, this option will override the default `config.inc.php` with the base64 decoded contents of the variable @@ -198,6 +239,7 @@ Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.ex - `MAX_EXECUTION_TIME` - if set, will override the maximum execution time in seconds (default 600) for phpMyAdmin ([$cfg['ExecTimeLimit']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_ExecTimeLimit)) and PHP [max_execution_time](https://www.php.net/manual/en/info.configuration.php#ini.max-execution-time) (format as `[0-9+]`) - `MEMORY_LIMIT` - if set, will override the memory limit (default 512M) for phpMyAdmin ([$cfg['MemoryLimit']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_MemoryLimit)) and PHP [memory_limit](https://www.php.net/manual/en/ini.core.php#ini.memory-limit) (format as `[0-9+](K,M,G)` where K is for Kilobytes, M for Megabytes, G for Gigabytes and 1K = 1024 bytes) - `UPLOAD_LIMIT` - if set, this option will override the default value for apache and php-fpm (format as `[0-9+](K,M,G)` default value is 2048K, this will change `upload_max_filesize` and `post_max_size` values) +- `TZ` - if defined, this option will change the default PHP `date.timezone` from `UTC`. See [documentation](https://www.php.net/manual/en/timezones.php) for supported values. - `HIDE_PHP_VERSION` - if defined, this option will hide the PHP version (`expose_php = Off`). Set to any value (such as `HIDE_PHP_VERSION=true`). - `APACHE_PORT` - if defined, this option will change the default Apache port from `80` in case you want it to run on a different port like an unprivileged port. Set to any port value (such as `APACHE_PORT=8090`) @@ -207,6 +249,19 @@ For usage with Docker secrets, appending `_FILE` to the `PMA_PASSWORD` environme docker run --name phpmyadmin -d -e PMA_PASSWORD_FILE=/run/secrets/db_password.txt -p 8080:80 phpmyadmin ``` +#### Variables that can store the file contents using `_BASE64` + +- `PMA_SSL_CA` +- `PMA_SSL_CAS` +- `PMA_SSL_KEY` +- `PMA_SSL_KEYS` +- `PMA_SSL_CERT` +- `PMA_SSL_CERTS` + +Also includes: `PMA_CONFIG_BASE64` or `PMA_USER_CONFIG_BASE64`. + +For example, the variable would be named `PMA_SSL_CA_BASE64` and the value is the base64 encoded contents of the file. + #### Variables that can be read from a file using `_FILE` - `MYSQL_ROOT_PASSWORD` diff --git a/phpmyadmin/stack.yml b/phpmyadmin/compose.yaml similarity index 84% rename from phpmyadmin/stack.yml rename to phpmyadmin/compose.yaml index 4912da59794e..56a7674306bb 100644 --- a/phpmyadmin/stack.yml +++ b/phpmyadmin/compose.yaml @@ -1,8 +1,6 @@ -version: '3.1' - services: db: - image: mariadb:10.6 + image: mariadb:10.11 restart: always environment: MYSQL_ROOT_PASSWORD: notSecureChangeMe diff --git a/phpmyadmin/content.md b/phpmyadmin/content.md index 20f8baf6d0ea..3b7c4f0f8282 100644 --- a/phpmyadmin/content.md +++ b/phpmyadmin/content.md @@ -8,7 +8,7 @@ Run phpMyAdmin with Alpine, Apache and PHP FPM. # How to use this image -All of the following examples will bring you phpMyAdmin on `http://localhost:8080` where you can enjoy your happy MySQL administration. +All of the following examples will bring you phpMyAdmin on `http://localhost:8080` where you can enjoy your happy MySQL and MariaDB administration. ## Credentials @@ -62,11 +62,11 @@ You can use arbitrary servers by adding the environment variable `PMA_ARBITRARY= docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 8080:80 %%IMAGE%% ``` -## Usage with docker-compose and arbitrary server +## Usage with `docker compose` and an arbitrary server This will run phpMyAdmin with the arbitrary server option - allowing you to specify any MySQL/MariaDB server on the login page. -%%STACK%% +%%COMPOSE%% ## Adding Custom Configuration @@ -97,10 +97,40 @@ See the following links for config file information: - https://docs.phpmyadmin.net/en/latest/config.html#config - https://docs.phpmyadmin.net/en/latest/setup.html +## Adding custom configuration in `/etc/phpmyadmin/conf.d` + +you can also consider storing your custom configuration files in the folder `/etc/phpmyadmin/conf.d`, which is very suitable for managing multiple phpMyAdmin configuration files for different hosts,Then you can create `server-1.php`, `server-2.php`, or any file name you want, and store them in the conf.d directory mounted on the host. + +On the `docker run` line like this: + +```sh +docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/conf.d:/etc/phpmyadmin/conf.d:ro %%IMAGE%% +``` + ## Usage behind a reverse proxy Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.example.net/`) where the reverse proxy makes phpMyAdmin available. +## Sessions persistence + +In order to keep your sessions active between container updates you will need to mount the `/sessions` folder. + +```sh +-v /some/local/directory/sessions:/sessions:rw +``` + +## Connect to the database over SSL + +Set the variable `PMA_SSL` to `1` to enable SSL usage from phpMyAdmin to the MySQL server. The default value is `0`. The variable `PMA_SSLS` can be used as a comma seperated sequence of `0` and `1` where multiple hosts are mentioned. Values order must follow the `PMA_HOSTS` and will be computed accordingly. + +```sh +docker run --name phpmyadmin -d -e PMA_HOSTS=sslhost -e PMA_SSL=1 -p 8080:80 %%IMAGE%% +``` + +```sh +docker run --name phpmyadmin -d -e PMA_HOSTS='sslhost,nosslhost' -e PMA_SSLS='1,0' -p 8080:80 %%IMAGE%% +``` + ## Environment variables summary - `PMA_ARBITRARY` - when set to 1 connection to the arbitrary server will be allowed @@ -110,6 +140,19 @@ Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.ex - `PMA_HOSTS` - define comma separated list of address/host names of the MySQL servers - `PMA_VERBOSES` - define comma separated list of verbose names of the MySQL servers - `PMA_PORTS` - define comma separated list of ports of the MySQL servers +- `PMA_SOCKET` - define socket file for the MySQL connection +- `PMA_SOCKETS` - define comma separated list of socket files for the MySQL connections +- `PMA_SSL_DIR` - define the path used for SSL files generated from environement variables, default value is `/etc/phpmyadmin/ssl` +- `PMA_SSL` - when set to 1, defines SSL usage for the MySQL connection +- `PMA_SSLS` - comma separated list of `0` and `1` defining SSL usage for the corresponding MySQL connections +- `PMA_SSL_VERIFY` - when set to 1, enables SSL certificate verification for the MySQL connection. +- `PMA_SSL_VERIFIES` - comma-separated list of `0` and `1` to enable or disable SSL certificate verification for multiple MySQL connections. +- `PMA_SSL_CA` - in the context of mutual TLS security, allows setting your CA certificate file as a string inside the default `config.inc.php`. +- `PMA_SSL_CAS` - in the context of mutual TLS security, allows setting multiple CA certificate files as a comma-separated list of strings inside the default `config.inc.php`. +- `PMA_SSL_CERT` - in the context of mutual TLS security, allows setting your certificate file as a string inside the default `config.inc.php`. +- `PMA_SSL_CERTS` - in the context of mutual TLS security, allows setting multiple certificate files as a comma-separated list of strings inside the default `config.inc.php`. +- `PMA_SSL_KEY` - in the context of mutual TLS security, allows setting your private key file as a string inside the default `config.inc.php`. +- `PMA_SSL_KEYS` - in the context of mutual TLS security, allows setting multiple private key files as a comma-separated list of strings inside the default `config.inc.php`. - `PMA_USER` and `PMA_PASSWORD` - define username and password to use only with the `config` authentication method - `PMA_ABSOLUTE_URI` - the full URL to phpMyAdmin. Sometimes needed when used in a reverse-proxy configuration. Don't set this unless needed. See [documentation](https://docs.phpmyadmin.net/en/latest/config.html#cfg_PmaAbsoluteUri). - `PMA_CONFIG_BASE64` - if set, this option will override the default `config.inc.php` with the base64 decoded contents of the variable @@ -126,6 +169,7 @@ Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.ex - `MAX_EXECUTION_TIME` - if set, will override the maximum execution time in seconds (default 600) for phpMyAdmin ([$cfg['ExecTimeLimit']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_ExecTimeLimit)) and PHP [max_execution_time](https://www.php.net/manual/en/info.configuration.php#ini.max-execution-time) (format as `[0-9+]`) - `MEMORY_LIMIT` - if set, will override the memory limit (default 512M) for phpMyAdmin ([$cfg['MemoryLimit']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_MemoryLimit)) and PHP [memory_limit](https://www.php.net/manual/en/ini.core.php#ini.memory-limit) (format as `[0-9+](K,M,G)` where K is for Kilobytes, M for Megabytes, G for Gigabytes and 1K = 1024 bytes) - `UPLOAD_LIMIT` - if set, this option will override the default value for apache and php-fpm (format as `[0-9+](K,M,G)` default value is 2048K, this will change `upload_max_filesize` and `post_max_size` values) +- `TZ` - if defined, this option will change the default PHP `date.timezone` from `UTC`. See [documentation](https://www.php.net/manual/en/timezones.php) for supported values. - `HIDE_PHP_VERSION` - if defined, this option will hide the PHP version (`expose_php = Off`). Set to any value (such as `HIDE_PHP_VERSION=true`). - `APACHE_PORT` - if defined, this option will change the default Apache port from `80` in case you want it to run on a different port like an unprivileged port. Set to any port value (such as `APACHE_PORT=8090`) @@ -135,6 +179,19 @@ For usage with Docker secrets, appending `_FILE` to the `PMA_PASSWORD` environme docker run --name phpmyadmin -d -e PMA_PASSWORD_FILE=/run/secrets/db_password.txt -p 8080:80 %%IMAGE%% ``` +#### Variables that can store the file contents using `_BASE64` + +- `PMA_SSL_CA` +- `PMA_SSL_CAS` +- `PMA_SSL_KEY` +- `PMA_SSL_KEYS` +- `PMA_SSL_CERT` +- `PMA_SSL_CERTS` + +Also includes: `PMA_CONFIG_BASE64` or `PMA_USER_CONFIG_BASE64`. + +For example, the variable would be named `PMA_SSL_CA_BASE64` and the value is the base64 encoded contents of the file. + #### Variables that can be read from a file using `_FILE` - `MYSQL_ROOT_PASSWORD` diff --git a/phpmyadmin/metadata.json b/phpmyadmin/metadata.json new file mode 100644 index 000000000000..68932ac9ba2d --- /dev/null +++ b/phpmyadmin/metadata.json @@ -0,0 +1,8 @@ +{ + "hub": { + "categories": [ + "databases-and-storage", + "developer-tools" + ] + } +} diff --git a/plone/README-short.txt b/plone/README-short.txt index fb0da8a942ff..6f842ce50b45 100644 --- a/plone/README-short.txt +++ b/plone/README-short.txt @@ -1 +1 @@ -Plone is a free and open source content management system built on top of Zope. +DEPRECATED. Plone is a free and open source content management system built on top of Zope. diff --git a/plone/README.md b/plone/README.md index 5fe968d6d2de..e91a9ad6af52 100644 --- a/plone/README.md +++ b/plone/README.md @@ -14,6 +14,20 @@ WARNING: --> +# ⚠️ DEPRECATION NOTICE ⚠️ + +- Plone 4.x is no longer supported. +- Plone 5.x is no longer supported. +- It is strongly recommended to migrate to the latest available Plone version. See https://plone.org/download/release-schedule for details. + +Beginning with Plone 6.x, the frontend and backend run in separate Docker images. There's also a a ZEO server Docker image. All Plone 6.0 and later images are supported by the Plone Foundation and are maintained by community volunteers. + +- [Plone Backend](https://github.com/plone/plone-backend) +- [Plone Frontend](https://github.com/plone/plone-frontend) +- [ZEO Server](https://github.com/plone/plone-zeo/) + +For Docker image usage, see [Plone 6 Documentation](https://6.docs.plone.org/install/containers/images/index.html). + # Quick reference - **Maintained by**: @@ -24,16 +38,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.2.9-python38`, `5.2-python38`, `5-python38`, `python38`, `5.2.9`, `5.2`, `5`, `latest`](https://github.com/plone/plone.docker/blob/dfb126db2d9c956d84ff381e7b1ee9f642edf716/5.2/5.2.9/debian/Dockerfile) -- [`5.2.8-python38`, `5.2.8`](https://github.com/plone/plone.docker/blob/dfb126db2d9c956d84ff381e7b1ee9f642edf716/5.2/5.2.8/debian/Dockerfile) +**No supported tags** # Quick reference (cont.) - **Where to file issues**: - [https://github.com/plone/plone.docker/issues](https://github.com/plone/plone.docker/issues) + [https://github.com/plone/plone.docker/issues](https://github.com/plone/plone.docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/plone/), [`arm64v8`](https://hub.docker.com/r/arm64v8/plone/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/plone/` directory](https://github.com/docker-library/repo-info/blob/master/repos/plone) ([history](https://github.com/docker-library/repo-info/commits/master/repos/plone)) @@ -54,11 +67,10 @@ WARNING: ## Features -- Images for Plone 5.x and Plone 4.x -- Enable add-ons via environment variables +- Enable add-ons via environment variables. - Choose between [Debian](https://www.debian.org/) or [Alpine](http://www.alpinelinux.org/) based images. -- Built-in RelStorage support, configurable via environment variables (requires Plone 5.2.4+) -- Built-in LDAP/AD support via pas.plugins.ldap (requires Plone 5.2.4+) +- Built-in RelStorage support, configurable via environment variables (requires Plone 5.2.4+). +- Built-in LDAP/AD support via `pas.plugins.ldap` (requires Plone 5.2.4+). ## Usage @@ -66,127 +78,128 @@ WARNING: This will download and start the latest Plone 5 container, based on [Debian](https://www.debian.org/). -```console -$ docker run -p 8080:8080 plone +```shell +docker run -p 8080:8080 plone ``` -This image includes `EXPOSE 8080` (the Plone port), so standard container linking will make it automatically available to the linked containers. Now you can add a Plone Site at http://localhost:8080 - default Zope user and password are `admin/admin`. +This image includes `EXPOSE 8080` (the Plone port), so standard container linking will make it automatically available to the linked containers. Now you can add a Plone Site at http://localhost:8080. The default Zope user and password are `admin/admin`. ### Start Plone within a ZEO cluster -ZEO cluster are best suited for production setups, you will **need** a loadbalancer. +A ZEO cluster is best suited for production setups. You will **need** a load balancer. -Start ZEO server in the background +Start ZEO server in the background. -```console -$ docker run --name=zeo plone zeo +```shell +docker run --name=zeo plone zeo ``` -Start 2 Plone clients (also in the background) +Start two Plone clients, also in the background. -```console -$ docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8081:8080 plone -$ docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8082:8080 plone +```shell +docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8081:8080 plone +docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8082:8080 plone ``` ### Start Plone in debug mode -You can also start Plone in debug mode (`fg`) by running +You can also start Plone in debug mode (`fg`) by running the following command. -```console -$ docker run -p 8080:8080 plone fg +```shell +docker run -p 8080:8080 plone fg ``` ### Add-ons -You can enable Plone add-ons via the `ADDONS` environment variable +You can enable Plone add-ons via the `ADDONS` environment variable. -```console -$ docker run -p 8080:8080 -e PLONE_ADDONS="eea.facetednavigation Products.PloneFormGen" plone +```shell +docker run -p 8080:8080 -e PLONE_ADDONS="eea.facetednavigation Products.PloneFormGen" plone ``` -For more information on how to extend this image with your own custom settings, adding more add-ons, building it or mounting volumes, please refer to our [documentation](https://docs.plone.org/manage/docker/docs/index.html) +For more information on how to extend this image with your own custom settings, adding more add-ons, building it, or mounting volumes, please refer to the [Plone 5 documentation](https://5.docs.plone.org/manage/docker/docs/index.html). -## Supported Environment Variables +## Supported environment variables -The Plone image uses several environment variable that allow to specify a more specific setup. +The Plone image uses several environment variables. -### For Basic Usage +### Basic usage -- `ADDONS` - Customize Plone via Plone add-ons using this environment variable -- `SITE` - Add Plone instance with this id to `Data.fs` on first run. If NOT provided, you'll have to manually add a Plone Site via web UI -- `ZEO_ADDRESS` - This environment variable allows you to run Plone image as a ZEO client. -- `VERSIONS` - Use specific versions of Plone Add-on or python libraries +- `ADDONS` - Customize Plone via Plone add-ons using this environment variable. +- `SITE` - Add a Plone instance with this ID to `Data.fs` on first run. If *not* provided, you'll have to manually add a Plone site via the web UI. +- `ZEO_ADDRESS` - This environment variable allows you to run the Plone image as a ZEO client. +- `VERSIONS` - Use specific versions of Plone add-on or Python libraries. -Run Plone and install two addons (eea.facetednavigation and collective.easyform) +Run Plone and install two add-ons (`eea.facetednavigation` and `collective.easyform`). -```console -$ docker run -p 8080:8080 -e SITE="mysite" -e ADDONS="eea.facetednavigation collective.easyform" plone +```shell +docker run -p 8080:8080 -e SITE="mysite" -e ADDONS="eea.facetednavigation collective.easyform" plone ``` -To use specific add-ons versions: +To use specific add-on versions, change the environment variable arguments as shown. -```console - -e ADDONS="eea.facetednavigation collective.easyform" \ - -e VERSIONS="eea.facetednavigation=13.3 collective.easyform=2.1.0" +```shell +-e ADDONS="eea.facetednavigation collective.easyform" \ +-e VERSIONS="eea.facetednavigation=13.3 collective.easyform=2.1.0" ``` -RestAPI: - -```console -$ docker run -p 8080:8080 -e SITE=plone plone +To use Plone REST API, start the Plone Docker image, then issue a command to `curl`. -$ curl -H 'Accept: application/json' http://localhost:8080/plone +```shell +docker run -p 8080:8080 -e SITE=plone plone +curl -H 'Accept: application/json' http://localhost:8080/plone ``` -### For Advanced Usage +### Advanced usage + +For advanced usage, the images support the following environment variables. -**Plone:** +#### Plone -- `PLONE_ADDONS`, `ADDONS` - Customize Plone via Plone add-ons using this environment variable -- `PLONE_SITE`, `SITE` - Add Plone with this id to `Data.fs` on first run. If NOT provided, you'll have to manually add a Plone Site via web UI -- `PLONE_VERSIONS`, `VERSIONS` - Use specific versions of Plone Add-on or python libraries -- `PLONE_PROFILES, PROFILES` - GenericSetup profiles to include when `SITE` environment provided. -- `PLONE_ZCML`, `ZCML` - Include custom Plone add-ons ZCML files (former `BUILDOUT_ZCML`) -- `PLONE_DEVELOP`, `DEVELOP` - Develop new or existing Plone add-ons (former `BUILDOUT_DEVELOP`) +- `PLONE_ADDONS`, `ADDONS` - Customize Plone via Plone add-ons using these environment variables. +- `PLONE_SITE`, `SITE` - Add a Plone instance with this ID to `Data.fs` on first run. If *not* provided, you'll have to manually add a Plone site via the web UI. +- `PLONE_VERSIONS`, `VERSIONS` - Use specific versions of Plone add-on or Python libraries. +- `PLONE_PROFILES, PROFILES` - GenericSetup profiles to include when the `SITE` environment is provided. +- `PLONE_ZCML`, `ZCML` - Include custom Plone add-on ZCML files (formerly `BUILDOUT_ZCML`). +- `PLONE_DEVELOP`, `DEVELOP` - Develop new or existing Plone add-ons (formerly `BUILDOUT_DEVELOP`). -**ZEO:** +#### ZEO -- `ZEO_ADDRESS` - This environment variable allows you to run Plone image as a ZEO client. +- `ZEO_ADDRESS` - This environment variable allows you to run the Plone image as a ZEO client. - `ZEO_READ_ONLY` - Run Plone as a read-only ZEO client. Defaults to `off`. - `ZEO_CLIENT_READ_ONLY_FALLBACK` - A flag indicating whether a read-only remote storage should be acceptable as a fallback when no writable storages are available. Defaults to `false`. -- `ZEO_SHARED_BLOB_DIR` - Set this to on if the ZEO server and the instance have access to the same directory. Defaults to `off`. +- `ZEO_SHARED_BLOB_DIR` - Set this to `on` if the ZEO server and the instance have access to the same directory. Defaults to `off`. - `ZEO_STORAGE` - Set the storage number of the ZEO storage. Defaults to `1`. - `ZEO_CLIENT_CACHE_SIZE` - Set the size of the ZEO client cache. Defaults to `128MB`. -- `ZEO_PACK_KEEP_OLD` - Can be set to false to disable the creation of `*.fs.old` files before the pack is run. Defaults to true. +- `ZEO_PACK_KEEP_OLD` - Can be set to `false` to disable the creation of `*.fs.old` files before the pack is run. Defaults to `true`. - `HEALTH_CHECK_TIMEOUT` - Time in seconds to wait until health check starts. Defaults to `1` second. - `HEALTH_CHECK_INTERVAL` - Interval in seconds to check that the Zope application is still healthy. Defaults to `1` second. -**CORS:** +#### CORS -- `CORS_ALLOW_ORIGIN` - Origins that are allowed access to the resource. Either a comma separated list of origins, e.g. `http://example.net,http://mydomain.com` or `*`. Defaults to `http://localhost:3000,http://127.0.0.1:3000` -- `CORS_ALLOW_METHODS` - A comma separated list of HTTP method names that are allowed by this CORS policy, e.g. `DELETE,GET,OPTIONS,PATCH,POST,PUT`. Defaults to `DELETE,GET,OPTIONS,PATCH,POST,PUT` -- `CORS_ALLOW_CREDENTIALS` - Indicates whether the resource supports user credentials in the request. Defaults to `true` -- `CORS_EXPOSE_HEADERS` - A comma separated list of response headers clients can access, e.g. `Content-Length,X-My-Header`. Defaults to `Content-Length,X-My-Header` -- `CORS_ALLOW_HEADERS` - A comma separated list of request headers allowed to be sent by the client, e.g. `X-My-Header`. Defaults to `Accept,Authorization,Content-Type,X-Custom-Header` -- `CORS_MAX_AGE` - Indicates how long the results of a preflight request can be cached. Defaults to `3600` +- `CORS_ALLOW_ORIGIN` - Origins that are allowed access to the resource. Either a comma separated list of origins, for example, `https://example.net,https://mydomain.com`, or `*`. Defaults to `http://localhost:3000,http://127.0.0.1:3000`. +- `CORS_ALLOW_METHODS` - A comma separated list of HTTP method names that are allowed by this CORS policy, for example, `DELETE,GET,OPTIONS,PATCH,POST,PUT`. Defaults to `DELETE,GET,OPTIONS,PATCH,POST,PUT`. +- `CORS_ALLOW_CREDENTIALS` - Indicates whether the resource supports user credentials in the request. Defaults to `true`. +- `CORS_EXPOSE_HEADERS` - A comma separated list of response headers clients can access, for example, `Content-Length,X-My-Header`. Defaults to `Content-Length,X-My-Header`. +- `CORS_ALLOW_HEADERS` - A comma separated list of request headers allowed to be sent by the client, for example, `X-My-Header`. Defaults to `Accept,Authorization,Content-Type,X-Custom-Header`. +- `CORS_MAX_AGE` - Indicates how long the results of a preflight request can be cached. Defaults to `3600`. -**RELSTORAGE:** +#### RelStorage -- `RELSTORAGE_ADAPTER_OPTIONS` - A comma separated list of RelStorage adapter options to set for the plone instance (using [plone.recipe.zope2instance](https://relstorage.readthedocs.io/en/latest/configure-application.html#configuring-plone)). This is required in order to use RelStorage. +- `RELSTORAGE_ADAPTER_OPTIONS` - A comma separated list of RelStorage adapter options to set for the plone instance using [`plone.recipe.zope2instance`](https://relstorage.readthedocs.io/en/latest/configure-application.html#configuring-plone). This is required to use RelStorage. All other available environment variables match exactly with RelStorage settings, according to the [settings specification available on the docs](https://relstorage.readthedocs.io/en/latest/relstorage-options.html). -- `RELSTORAGE_NAME` - **name** - The name of the storage. -- `RELSTORAGE_READ_ONLY` - **read-only** - If true, only reads may be executed against the storage. -- `RELSTORAGE_KEEP_HISTORY` - **keep-history** - If this option is set to true (the default), the adapter will create and use a history-preserving database schema (like FileStorage). -- `RELSTORAGE_BLOB_DIR` - **blob-dir** - If supplied, the storage will provide ZODB blob support; this option specifies the name of the directory to hold blob data. The directory will be created if it does not exist. If no value (or an empty value) is provided, then no blob support will be provided. Default: `/plone/instance/var/blobstorage` +- `RELSTORAGE_NAME` - `name` - The name of the storage. +- `RELSTORAGE_READ_ONLY` - `read-only` - If `true`, only reads may be executed against the storage. +- `RELSTORAGE_KEEP_HISTORY` - `keep-history` - If this option is set to `true`, the default value, then the adapter will create and use a history-preserving database schema, such as FileStorage. +- `RELSTORAGE_BLOB_DIR` - `blob-dir` - If supplied, the storage will provide ZODB BLOB support. This option specifies the name of the directory to hold BLOB data. The directory will be created if it doesn't exist. If no value, or an empty value, is provided, then no BLOB support will be provided. Defaults to `/plone/instance/var/blobstorage`. - [See more](https://relstorage.readthedocs.io/en/latest/relstorage-options.html) + [See more RelStorage options](https://relstorage.readthedocs.io/en/latest/relstorage-options.html). ## Documentation -Full documentation for end users can be found online at [docs.plone.org](https://docs.plone.org/manage/docker/docs/usage/index.html) +Full documentation for end users can be found at [5.docs.plone.org](https://5.docs.plone.org/manage/docker/docs/index.html). # License diff --git a/plone/content.md b/plone/content.md index 730d861443bb..3e77bd91ae35 100644 --- a/plone/content.md +++ b/plone/content.md @@ -6,11 +6,10 @@ ## Features -- Images for Plone 5.x and Plone 4.x -- Enable add-ons via environment variables +- Enable add-ons via environment variables. - Choose between [Debian](https://www.debian.org/) or [Alpine](http://www.alpinelinux.org/) based images. -- Built-in RelStorage support, configurable via environment variables (requires Plone 5.2.4+) -- Built-in LDAP/AD support via pas.plugins.ldap (requires Plone 5.2.4+) +- Built-in RelStorage support, configurable via environment variables (requires Plone 5.2.4+). +- Built-in LDAP/AD support via `pas.plugins.ldap` (requires Plone 5.2.4+). ## Usage @@ -18,124 +17,125 @@ This will download and start the latest Plone 5 container, based on [Debian](https://www.debian.org/). -```console -$ docker run -p 8080:8080 %%IMAGE%% +```shell +docker run -p 8080:8080 %%IMAGE%% ``` -This image includes `EXPOSE 8080` (the Plone port), so standard container linking will make it automatically available to the linked containers. Now you can add a Plone Site at http://localhost:8080 - default Zope user and password are `admin/admin`. +This image includes `EXPOSE 8080` (the Plone port), so standard container linking will make it automatically available to the linked containers. Now you can add a Plone Site at http://localhost:8080. The default Zope user and password are `admin/admin`. ### Start Plone within a ZEO cluster -ZEO cluster are best suited for production setups, you will **need** a loadbalancer. +A ZEO cluster is best suited for production setups. You will **need** a load balancer. -Start ZEO server in the background +Start ZEO server in the background. -```console -$ docker run --name=zeo %%IMAGE%% zeo +```shell +docker run --name=zeo %%IMAGE%% zeo ``` -Start 2 Plone clients (also in the background) +Start two Plone clients, also in the background. -```console -$ docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8081:8080 %%IMAGE%% -$ docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8082:8080 %%IMAGE%% +```shell +docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8081:8080 %%IMAGE%% +docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8082:8080 %%IMAGE%% ``` ### Start Plone in debug mode -You can also start Plone in debug mode (`fg`) by running +You can also start Plone in debug mode (`fg`) by running the following command. -```console -$ docker run -p 8080:8080 %%IMAGE%% fg +```shell +docker run -p 8080:8080 %%IMAGE%% fg ``` ### Add-ons -You can enable Plone add-ons via the `ADDONS` environment variable +You can enable Plone add-ons via the `ADDONS` environment variable. -```console -$ docker run -p 8080:8080 -e PLONE_ADDONS="eea.facetednavigation Products.PloneFormGen" %%IMAGE%% +```shell +docker run -p 8080:8080 -e PLONE_ADDONS="eea.facetednavigation Products.PloneFormGen" %%IMAGE%% ``` -For more information on how to extend this image with your own custom settings, adding more add-ons, building it or mounting volumes, please refer to our [documentation](https://docs.plone.org/manage/docker/docs/index.html) +For more information on how to extend this image with your own custom settings, adding more add-ons, building it, or mounting volumes, please refer to the [Plone 5 documentation](https://5.docs.plone.org/manage/docker/docs/index.html). -## Supported Environment Variables +## Supported environment variables -The Plone image uses several environment variable that allow to specify a more specific setup. +The Plone image uses several environment variables. -### For Basic Usage +### Basic usage -- `ADDONS` - Customize Plone via Plone add-ons using this environment variable -- `SITE` - Add Plone instance with this id to `Data.fs` on first run. If NOT provided, you'll have to manually add a Plone Site via web UI -- `ZEO_ADDRESS` - This environment variable allows you to run Plone image as a ZEO client. -- `VERSIONS` - Use specific versions of Plone Add-on or python libraries +- `ADDONS` - Customize Plone via Plone add-ons using this environment variable. +- `SITE` - Add a Plone instance with this ID to `Data.fs` on first run. If *not* provided, you'll have to manually add a Plone site via the web UI. +- `ZEO_ADDRESS` - This environment variable allows you to run the Plone image as a ZEO client. +- `VERSIONS` - Use specific versions of Plone add-on or Python libraries. -Run Plone and install two addons (eea.facetednavigation and collective.easyform) +Run Plone and install two add-ons (`eea.facetednavigation` and `collective.easyform`). -```console -$ docker run -p 8080:8080 -e SITE="mysite" -e ADDONS="eea.facetednavigation collective.easyform" %%IMAGE%% +```shell +docker run -p 8080:8080 -e SITE="mysite" -e ADDONS="eea.facetednavigation collective.easyform" %%IMAGE%% ``` -To use specific add-ons versions: +To use specific add-on versions, change the environment variable arguments as shown. -```console - -e ADDONS="eea.facetednavigation collective.easyform" \ - -e VERSIONS="eea.facetednavigation=13.3 collective.easyform=2.1.0" +```shell +-e ADDONS="eea.facetednavigation collective.easyform" \ +-e VERSIONS="eea.facetednavigation=13.3 collective.easyform=2.1.0" ``` -RestAPI: +To use Plone REST API, start the Plone Docker image, then issue a command to `curl`. -```console -$ docker run -p 8080:8080 -e SITE=plone %%IMAGE%% - -$ curl -H 'Accept: application/json' http://localhost:8080/plone +```shell +docker run -p 8080:8080 -e SITE=plone %%IMAGE%% +curl -H 'Accept: application/json' http://localhost:8080/plone ``` -### For Advanced Usage +### Advanced usage + +For advanced usage, the images support the following environment variables. -**Plone:** +#### Plone -- `PLONE_ADDONS`, `ADDONS` - Customize Plone via Plone add-ons using this environment variable -- `PLONE_SITE`, `SITE` - Add Plone with this id to `Data.fs` on first run. If NOT provided, you'll have to manually add a Plone Site via web UI -- `PLONE_VERSIONS`, `VERSIONS` - Use specific versions of Plone Add-on or python libraries -- `PLONE_PROFILES, PROFILES` - GenericSetup profiles to include when `SITE` environment provided. -- `PLONE_ZCML`, `ZCML` - Include custom Plone add-ons ZCML files (former `BUILDOUT_ZCML`) -- `PLONE_DEVELOP`, `DEVELOP` - Develop new or existing Plone add-ons (former `BUILDOUT_DEVELOP`) +- `PLONE_ADDONS`, `ADDONS` - Customize Plone via Plone add-ons using these environment variables. +- `PLONE_SITE`, `SITE` - Add a Plone instance with this ID to `Data.fs` on first run. If *not* provided, you'll have to manually add a Plone site via the web UI. +- `PLONE_VERSIONS`, `VERSIONS` - Use specific versions of Plone add-on or Python libraries. +- `PLONE_PROFILES, PROFILES` - GenericSetup profiles to include when the `SITE` environment is provided. +- `PLONE_ZCML`, `ZCML` - Include custom Plone add-on ZCML files (formerly `BUILDOUT_ZCML`). +- `PLONE_DEVELOP`, `DEVELOP` - Develop new or existing Plone add-ons (formerly `BUILDOUT_DEVELOP`). -**ZEO:** +#### ZEO -- `ZEO_ADDRESS` - This environment variable allows you to run Plone image as a ZEO client. +- `ZEO_ADDRESS` - This environment variable allows you to run the Plone image as a ZEO client. - `ZEO_READ_ONLY` - Run Plone as a read-only ZEO client. Defaults to `off`. - `ZEO_CLIENT_READ_ONLY_FALLBACK` - A flag indicating whether a read-only remote storage should be acceptable as a fallback when no writable storages are available. Defaults to `false`. -- `ZEO_SHARED_BLOB_DIR` - Set this to on if the ZEO server and the instance have access to the same directory. Defaults to `off`. +- `ZEO_SHARED_BLOB_DIR` - Set this to `on` if the ZEO server and the instance have access to the same directory. Defaults to `off`. - `ZEO_STORAGE` - Set the storage number of the ZEO storage. Defaults to `1`. - `ZEO_CLIENT_CACHE_SIZE` - Set the size of the ZEO client cache. Defaults to `128MB`. -- `ZEO_PACK_KEEP_OLD` - Can be set to false to disable the creation of `*.fs.old` files before the pack is run. Defaults to true. +- `ZEO_PACK_KEEP_OLD` - Can be set to `false` to disable the creation of `*.fs.old` files before the pack is run. Defaults to `true`. - `HEALTH_CHECK_TIMEOUT` - Time in seconds to wait until health check starts. Defaults to `1` second. - `HEALTH_CHECK_INTERVAL` - Interval in seconds to check that the Zope application is still healthy. Defaults to `1` second. -**CORS:** +#### CORS -- `CORS_ALLOW_ORIGIN` - Origins that are allowed access to the resource. Either a comma separated list of origins, e.g. `http://example.net,http://mydomain.com` or `*`. Defaults to `http://localhost:3000,http://127.0.0.1:3000` -- `CORS_ALLOW_METHODS` - A comma separated list of HTTP method names that are allowed by this CORS policy, e.g. `DELETE,GET,OPTIONS,PATCH,POST,PUT`. Defaults to `DELETE,GET,OPTIONS,PATCH,POST,PUT` -- `CORS_ALLOW_CREDENTIALS` - Indicates whether the resource supports user credentials in the request. Defaults to `true` -- `CORS_EXPOSE_HEADERS` - A comma separated list of response headers clients can access, e.g. `Content-Length,X-My-Header`. Defaults to `Content-Length,X-My-Header` -- `CORS_ALLOW_HEADERS` - A comma separated list of request headers allowed to be sent by the client, e.g. `X-My-Header`. Defaults to `Accept,Authorization,Content-Type,X-Custom-Header` -- `CORS_MAX_AGE` - Indicates how long the results of a preflight request can be cached. Defaults to `3600` +- `CORS_ALLOW_ORIGIN` - Origins that are allowed access to the resource. Either a comma separated list of origins, for example, `https://example.net,https://mydomain.com`, or `*`. Defaults to `http://localhost:3000,http://127.0.0.1:3000`. +- `CORS_ALLOW_METHODS` - A comma separated list of HTTP method names that are allowed by this CORS policy, for example, `DELETE,GET,OPTIONS,PATCH,POST,PUT`. Defaults to `DELETE,GET,OPTIONS,PATCH,POST,PUT`. +- `CORS_ALLOW_CREDENTIALS` - Indicates whether the resource supports user credentials in the request. Defaults to `true`. +- `CORS_EXPOSE_HEADERS` - A comma separated list of response headers clients can access, for example, `Content-Length,X-My-Header`. Defaults to `Content-Length,X-My-Header`. +- `CORS_ALLOW_HEADERS` - A comma separated list of request headers allowed to be sent by the client, for example, `X-My-Header`. Defaults to `Accept,Authorization,Content-Type,X-Custom-Header`. +- `CORS_MAX_AGE` - Indicates how long the results of a preflight request can be cached. Defaults to `3600`. -**RELSTORAGE:** +#### RelStorage -- `RELSTORAGE_ADAPTER_OPTIONS` - A comma separated list of RelStorage adapter options to set for the plone instance (using [plone.recipe.zope2instance](https://relstorage.readthedocs.io/en/latest/configure-application.html#configuring-plone)). This is required in order to use RelStorage. +- `RELSTORAGE_ADAPTER_OPTIONS` - A comma separated list of RelStorage adapter options to set for the plone instance using [`plone.recipe.zope2instance`](https://relstorage.readthedocs.io/en/latest/configure-application.html#configuring-plone). This is required to use RelStorage. All other available environment variables match exactly with RelStorage settings, according to the [settings specification available on the docs](https://relstorage.readthedocs.io/en/latest/relstorage-options.html). -- `RELSTORAGE_NAME` - **name** - The name of the storage. -- `RELSTORAGE_READ_ONLY` - **read-only** - If true, only reads may be executed against the storage. -- `RELSTORAGE_KEEP_HISTORY` - **keep-history** - If this option is set to true (the default), the adapter will create and use a history-preserving database schema (like FileStorage). -- `RELSTORAGE_BLOB_DIR` - **blob-dir** - If supplied, the storage will provide ZODB blob support; this option specifies the name of the directory to hold blob data. The directory will be created if it does not exist. If no value (or an empty value) is provided, then no blob support will be provided. Default: `/plone/instance/var/blobstorage` +- `RELSTORAGE_NAME` - `name` - The name of the storage. +- `RELSTORAGE_READ_ONLY` - `read-only` - If `true`, only reads may be executed against the storage. +- `RELSTORAGE_KEEP_HISTORY` - `keep-history` - If this option is set to `true`, the default value, then the adapter will create and use a history-preserving database schema, such as FileStorage. +- `RELSTORAGE_BLOB_DIR` - `blob-dir` - If supplied, the storage will provide ZODB BLOB support. This option specifies the name of the directory to hold BLOB data. The directory will be created if it doesn't exist. If no value, or an empty value, is provided, then no BLOB support will be provided. Defaults to `/plone/instance/var/blobstorage`. - [See more](https://relstorage.readthedocs.io/en/latest/relstorage-options.html) + [See more RelStorage options](https://relstorage.readthedocs.io/en/latest/relstorage-options.html). ## Documentation -Full documentation for end users can be found online at [docs.plone.org](https://docs.plone.org/manage/docker/docs/usage/index.html) +Full documentation for end users can be found at [5.docs.plone.org](https://5.docs.plone.org/manage/docker/docs/index.html). diff --git a/plone/deprecated.md b/plone/deprecated.md new file mode 100644 index 000000000000..fd6ead9fae68 --- /dev/null +++ b/plone/deprecated.md @@ -0,0 +1,13 @@ +# ⚠️ DEPRECATION NOTICE ⚠️ + +- Plone 4.x is no longer supported. +- Plone 5.x is no longer supported. +- It is strongly recommended to migrate to the latest available Plone version. See https://plone.org/download/release-schedule for details. + +Beginning with Plone 6.x, the frontend and backend run in separate Docker images. There's also a a ZEO server Docker image. All Plone 6.0 and later images are supported by the Plone Foundation and are maintained by community volunteers. + +- [Plone Backend](https://github.com/plone/plone-backend) +- [Plone Frontend](https://github.com/plone/plone-frontend) +- [ZEO Server](https://github.com/plone/plone-zeo/) + +For Docker image usage, see [Plone 6 Documentation](https://6.docs.plone.org/install/containers/images/index.html). diff --git a/plone/metadata.json b/plone/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/plone/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/postfixadmin/README.md b/postfixadmin/README.md index 31f14465af21..7be0c16cbfbf 100644 --- a/postfixadmin/README.md +++ b/postfixadmin/README.md @@ -24,17 +24,19 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.3.13-apache`, `3.3-apache`, `3-apache`, `apache`, `3.3.13`, `3.3`, `3`, `latest`](https://github.com/postfixadmin/docker/blob/b4307d956cb1cfe64df1402cf6d68a1369ba56de/apache/Dockerfile) -- [`3.3.13-fpm`, `3.3-fpm`, `3-fpm`, `fpm`](https://github.com/postfixadmin/docker/blob/b4307d956cb1cfe64df1402cf6d68a1369ba56de/fpm/Dockerfile) -- [`3.3.13-fpm-alpine`, `3.3-fpm-alpine`, `3-fpm-alpine`, `fpm-alpine`](https://github.com/postfixadmin/docker/blob/b4307d956cb1cfe64df1402cf6d68a1369ba56de/fpm-alpine/Dockerfile) +- [`3.3.16-apache`, `3.3-apache`, `3-apache`, `apache`, `3.3.16`, `3.3`, `3`, `latest`](https://github.com/postfixadmin/docker/blob/3253e7ee2122be4101486bd80b6356ff7e0a367a/apache/Dockerfile) + +- [`3.3.16-fpm`, `3.3-fpm`, `3-fpm`, `fpm`](https://github.com/postfixadmin/docker/blob/3253e7ee2122be4101486bd80b6356ff7e0a367a/fpm/Dockerfile) + +- [`3.3.16-fpm-alpine`, `3.3-fpm-alpine`, `3-fpm-alpine`, `fpm-alpine`](https://github.com/postfixadmin/docker/blob/3253e7ee2122be4101486bd80b6356ff7e0a367a/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/postfixadmin/docker/issues](https://github.com/postfixadmin/docker/issues) + [https://github.com/postfixadmin/docker/issues](https://github.com/postfixadmin/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/postfixadmin/), [`arm32v5`](https://hub.docker.com/r/arm32v5/postfixadmin/), [`arm32v6`](https://hub.docker.com/r/arm32v6/postfixadmin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/postfixadmin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/postfixadmin/), [`i386`](https://hub.docker.com/r/i386/postfixadmin/), [`mips64le`](https://hub.docker.com/r/mips64le/postfixadmin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/postfixadmin/), [`s390x`](https://hub.docker.com/r/s390x/postfixadmin/) + [`amd64`](https://hub.docker.com/r/amd64/postfixadmin/), [`arm32v5`](https://hub.docker.com/r/arm32v5/postfixadmin/), [`arm32v6`](https://hub.docker.com/r/arm32v6/postfixadmin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/postfixadmin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/postfixadmin/), [`i386`](https://hub.docker.com/r/i386/postfixadmin/), [`mips64le`](https://hub.docker.com/r/mips64le/postfixadmin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/postfixadmin/), [`riscv64`](https://hub.docker.com/r/riscv64/postfixadmin/), [`s390x`](https://hub.docker.com/r/s390x/postfixadmin/) - **Published image artifact details**: [repo-info repo's `repos/postfixadmin/` directory](https://github.com/docker-library/repo-info/blob/master/repos/postfixadmin) ([history](https://github.com/docker-library/repo-info/commits/master/repos/postfixadmin)) @@ -103,16 +105,14 @@ $ docker run -v /local/path/to/config.local.php:/var/www/html/config.local.php \ postfixadmin ``` -... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `postfixadmin`: +Example `compose.yaml` for `postfixadmin`: ```yaml -version: '3' - services: db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_RANDOM_ROOT_PASSWORD: 1 @@ -135,9 +135,7 @@ services: POSTFIXADMIN_DB_PASSWORD: example ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/c011eff7d5385665f43db2e0330716da4ab68e75/postfixadmin/stack.yml) - -Run docker stack deploy -c stack.yml postfixadmin (or docker-compose -f stack.yml up), wait for it to initialize completely, and visit http://swarm-ip:8080, http://localhost:8080, or http://host-ip:8080 (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). # Image Variants diff --git a/postfixadmin/stack.yml b/postfixadmin/compose.yaml similarity index 93% rename from postfixadmin/stack.yml rename to postfixadmin/compose.yaml index b40e6c5b1abc..2a8667ba534a 100644 --- a/postfixadmin/stack.yml +++ b/postfixadmin/compose.yaml @@ -1,8 +1,6 @@ -version: '3' - services: db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_RANDOM_ROOT_PASSWORD: 1 diff --git a/postfixadmin/content.md b/postfixadmin/content.md index 883d589a83b5..fcf1fdf93e96 100644 --- a/postfixadmin/content.md +++ b/postfixadmin/content.md @@ -54,6 +54,6 @@ $ docker run -v /local/path/to/config.local.php:/var/www/html/config.local.php \ %%IMAGE%% ``` -%%STACK%% +%%COMPOSE%% -Run docker stack deploy -c stack.yml %%REPO%% (or docker-compose -f stack.yml up), wait for it to initialize completely, and visit http://swarm-ip:8080, http://localhost:8080, or http://host-ip:8080 (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). diff --git a/postfixadmin/metadata.json b/postfixadmin/metadata.json new file mode 100644 index 000000000000..67e782480585 --- /dev/null +++ b/postfixadmin/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "developer-tools" + ] + } +} diff --git a/postgres/README.md b/postgres/README.md index 7071521969c1..e294b3541998 100644 --- a/postgres/README.md +++ b/postgres/README.md @@ -24,24 +24,53 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`15.1`, `15`, `latest`, `15.1-bullseye`, `15-bullseye`, `bullseye`](https://github.com/docker-library/postgres/blob/41bd7bf3f487e6dc0036fd73efaff6ccb6fbbacd/15/bullseye/Dockerfile) -- [`15.1-alpine`, `15-alpine`, `alpine`, `15.1-alpine3.17`, `15-alpine3.17`, `alpine3.17`](https://github.com/docker-library/postgres/blob/6ee0f2865b23484fefb785ba70b9d404f2bb0cd4/15/alpine/Dockerfile) -- [`14.6`, `14`, `14.6-bullseye`, `14-bullseye`](https://github.com/docker-library/postgres/blob/41bd7bf3f487e6dc0036fd73efaff6ccb6fbbacd/14/bullseye/Dockerfile) -- [`14.6-alpine`, `14-alpine`, `14.6-alpine3.17`, `14-alpine3.17`](https://github.com/docker-library/postgres/blob/6ee0f2865b23484fefb785ba70b9d404f2bb0cd4/14/alpine/Dockerfile) -- [`13.9`, `13`, `13.9-bullseye`, `13-bullseye`](https://github.com/docker-library/postgres/blob/41bd7bf3f487e6dc0036fd73efaff6ccb6fbbacd/13/bullseye/Dockerfile) -- [`13.9-alpine`, `13-alpine`, `13.9-alpine3.17`, `13-alpine3.17`](https://github.com/docker-library/postgres/blob/6ee0f2865b23484fefb785ba70b9d404f2bb0cd4/13/alpine/Dockerfile) -- [`12.13`, `12`, `12.13-bullseye`, `12-bullseye`](https://github.com/docker-library/postgres/blob/41bd7bf3f487e6dc0036fd73efaff6ccb6fbbacd/12/bullseye/Dockerfile) -- [`12.13-alpine`, `12-alpine`, `12.13-alpine3.17`, `12-alpine3.17`](https://github.com/docker-library/postgres/blob/6ee0f2865b23484fefb785ba70b9d404f2bb0cd4/12/alpine/Dockerfile) -- [`11.18-bullseye`, `11-bullseye`](https://github.com/docker-library/postgres/blob/41bd7bf3f487e6dc0036fd73efaff6ccb6fbbacd/11/bullseye/Dockerfile) -- [`11.18-alpine`, `11-alpine`, `11.18-alpine3.17`, `11-alpine3.17`](https://github.com/docker-library/postgres/blob/6ee0f2865b23484fefb785ba70b9d404f2bb0cd4/11/alpine/Dockerfile) +- [`18.1`, `18`, `latest`, `18.1-trixie`, `18-trixie`, `trixie`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/18/trixie/Dockerfile) + +- [`18.1-bookworm`, `18-bookworm`, `bookworm`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/18/bookworm/Dockerfile) + +- [`18.1-alpine3.22`, `18-alpine3.22`, `alpine3.22`, `18.1-alpine`, `18-alpine`, `alpine`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/18/alpine3.22/Dockerfile) + +- [`18.1-alpine3.21`, `18-alpine3.21`, `alpine3.21`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/18/alpine3.21/Dockerfile) + +- [`17.7`, `17`, `17.7-trixie`, `17-trixie`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/17/trixie/Dockerfile) + +- [`17.7-bookworm`, `17-bookworm`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/17/bookworm/Dockerfile) + +- [`17.7-alpine3.22`, `17-alpine3.22`, `17.7-alpine`, `17-alpine`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/17/alpine3.22/Dockerfile) + +- [`17.7-alpine3.21`, `17-alpine3.21`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/17/alpine3.21/Dockerfile) + +- [`16.11`, `16`, `16.11-trixie`, `16-trixie`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/16/trixie/Dockerfile) + +- [`16.11-bookworm`, `16-bookworm`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/16/bookworm/Dockerfile) + +- [`16.11-alpine3.22`, `16-alpine3.22`, `16.11-alpine`, `16-alpine`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/16/alpine3.22/Dockerfile) + +- [`16.11-alpine3.21`, `16-alpine3.21`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/16/alpine3.21/Dockerfile) + +- [`15.15`, `15`, `15.15-trixie`, `15-trixie`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/15/trixie/Dockerfile) + +- [`15.15-bookworm`, `15-bookworm`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/15/bookworm/Dockerfile) + +- [`15.15-alpine3.22`, `15-alpine3.22`, `15.15-alpine`, `15-alpine`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/15/alpine3.22/Dockerfile) + +- [`15.15-alpine3.21`, `15-alpine3.21`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/15/alpine3.21/Dockerfile) + +- [`14.20`, `14`, `14.20-trixie`, `14-trixie`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/14/trixie/Dockerfile) + +- [`14.20-bookworm`, `14-bookworm`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/14/bookworm/Dockerfile) + +- [`14.20-alpine3.22`, `14-alpine3.22`, `14.20-alpine`, `14-alpine`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/14/alpine3.22/Dockerfile) + +- [`14.20-alpine3.21`, `14-alpine3.21`](https://github.com/docker-library/postgres/blob/2925b19f45ceeb8ab8488eec226f2736abf297e1/14/alpine3.21/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/postgres/issues](https://github.com/docker-library/postgres/issues) + [https://github.com/docker-library/postgres/issues](https://github.com/docker-library/postgres/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/postgres/), [`arm32v5`](https://hub.docker.com/r/arm32v5/postgres/), [`arm32v6`](https://hub.docker.com/r/arm32v6/postgres/), [`arm32v7`](https://hub.docker.com/r/arm32v7/postgres/), [`arm64v8`](https://hub.docker.com/r/arm64v8/postgres/), [`i386`](https://hub.docker.com/r/i386/postgres/), [`mips64le`](https://hub.docker.com/r/mips64le/postgres/), [`ppc64le`](https://hub.docker.com/r/ppc64le/postgres/), [`s390x`](https://hub.docker.com/r/s390x/postgres/) + [`amd64`](https://hub.docker.com/r/amd64/postgres/), [`arm32v5`](https://hub.docker.com/r/arm32v5/postgres/), [`arm32v6`](https://hub.docker.com/r/arm32v6/postgres/), [`arm32v7`](https://hub.docker.com/r/arm32v7/postgres/), [`arm64v8`](https://hub.docker.com/r/arm64v8/postgres/), [`i386`](https://hub.docker.com/r/i386/postgres/), [`mips64le`](https://hub.docker.com/r/mips64le/postgres/), [`ppc64le`](https://hub.docker.com/r/ppc64le/postgres/), [`riscv64`](https://hub.docker.com/r/riscv64/postgres/), [`s390x`](https://hub.docker.com/r/s390x/postgres/) - **Published image artifact details**: [repo-info repo's `repos/postgres/` directory](https://github.com/docker-library/repo-info/blob/master/repos/postgres) ([history](https://github.com/docker-library/repo-info/commits/master/repos/postgres)) @@ -92,19 +121,26 @@ postgres=# SELECT 1; (1 row) ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `postgres`: +Example `compose.yaml` for `postgres`: ```yaml # Use postgres/example user/password credentials -version: '3.1' services: db: image: postgres restart: always + # set shared memory limit when using docker compose + shm_size: 128mb + # or set shared memory limit when deploy via swarm stack + #volumes: + # - type: tmpfs + # target: /dev/shm + # tmpfs: + # size: 134217728 # 128*2^20 bytes = 128Mb environment: POSTGRES_PASSWORD: example @@ -115,9 +151,7 @@ services: - 8080:8080 ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/postgres/stack.yml) - -Run `docker stack deploy -c stack.yml postgres` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). # How to extend this image @@ -175,20 +209,13 @@ See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/d ### `PGDATA` -This optional variable can be used to define another location - like a subdirectory - for the database files. The default is `/var/lib/postgresql/data`. If the data volume you're using is a filesystem mountpoint (like with GCE persistent disks) or remote folder that cannot be chowned to the `postgres` user (like some NFS mounts), Postgres `initdb` recommends a subdirectory be created to contain the data. +> **Important Change:** [the `PGDATA` environment variable of the image was changed to be version specific in PostgreSQL 18 and above](https://github.com/docker-library/postgres/pull/1259). For 18 it is `/var/lib/postgresql/18/docker`. Later versions will replace `18` with their respective major version (e.g., `/var/lib/postgresql/19/docker` for PostgreSQL `19.x`). The defined `VOLUME` was changed in 18 and above to `/var/lib/postgresql`. Mounts and volumes should be targeted at the updated location. This will allow users upgrading between PostgreSQL major releases to use the faster `--link` when running `pg_upgrade` and mounting `/var/lib/postgresql`. -For example: +Users who wish to opt-in to this change on older releases can do so by setting `PGDATA` explicitly (`--env PGDATA=/var/lib/postgresql/17/docker --volume some-postgres:/var/lib/postgresql`). To migrate pre-existing data, adjust the volume's folder structure appropriately first (moving all database files into a `PG_MAJOR/docker` subdirectory). -```console -$ docker run -d \ - --name some-postgres \ - -e POSTGRES_PASSWORD=mysecretpassword \ - -e PGDATA=/var/lib/postgresql/data/pgdata \ - -v /custom/mount:/var/lib/postgresql/data \ - postgres -``` +> **Important Note:** (for PostgreSQL 17 and below) Mount the data volume at `/var/lib/postgresql/data` and not at `/var/lib/postgresql` because mounts at the latter path WILL NOT PERSIST database data when the container is re-created. The Dockerfile that builds the image declares a volume at `/var/lib/postgresql/data` and if no data volume is mounted at that path then the container runtime will automatically create an [anonymous volume](https://docs.docker.com/engine/storage/#volumes) that is not reused across container re-creations. Data will be written to the anonymous volume rather than your intended data volume and won't persist when the container is deleted and re-created. -This is an environment variable that is not Docker specific. Because the variable is used by the `postgres` server binary (see the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account. +This (`PGDATA`) is an environment variable that is not Docker specific. Because the variable is used by the `postgres` server binary (see the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account. ## Docker Secrets @@ -209,7 +236,7 @@ If you would like to do additional initialization in an image derived from this For example, to add an additional user and database, add the following to `/docker-entrypoint-initdb.d/init-user-db.sh`: ```bash -#!/bin/bash +#!/usr/bin/env bash set -e psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL @@ -277,7 +304,7 @@ When using the Alpine variants, any postgres extension not listed in [postgres-c As of [docker-library/postgres#253](https://github.com/docker-library/postgres/pull/253), this image supports running as a (mostly) arbitrary user via `--user` on `docker run`. As of [docker-library/postgres#1018](https://github.com/docker-library/postgres/pull/1018), this is also the case for the Alpine variants. -The main caveat to note is that `postgres` doesn't care what UID it runs as (as long as the owner of `/var/lib/postgresql/data` matches), but `initdb` *does* care (and needs the user to exist in `/etc/passwd`): +The main caveat to note is that `postgres` doesn't care what UID it runs as (as long as the owner of `PGDATA` matches), but `initdb` *does* care (and needs the user to exist in `/etc/passwd`): ```console $ docker run -it --rm --user www-data -e POSTGRES_PASSWORD=mysecretpassword postgres @@ -303,13 +330,13 @@ The three easiest ways to get around this: 3. initialize the target directory separately from the final runtime (with a `chown` in between): ```console - $ docker volume create pgdata - $ docker run -it --rm -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword postgres + $ docker volume create pg + $ docker run -it --rm -v pg:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword postgres The files belonging to this database system will be owned by user "postgres". ... ( once it's finished initializing successfully and is waiting for connections, stop it ) - $ docker run -it --rm -v pgdata:/var/lib/postgresql/data bash chown -R 1000:1000 /var/lib/postgresql/data - $ docker run -it --rm --user 1000:1000 -v pgdata:/var/lib/postgresql/data postgres + $ docker run -it --rm -v pg:/var/lib/postgresql bash chown -R 1000:1000 /var/lib/postgresql + $ docker run -it --rm --user 1000:1000 -v pg:/var/lib/postgresql postgres LOG: database system was shut down at 2017-01-20 00:03:23 UTC LOG: MultiXact member wraparound protections are now enabled LOG: autovacuum launcher started @@ -318,9 +345,9 @@ The three easiest ways to get around this: # Caveats -If there is no database when `postgres` starts in a container, then `postgres` will create the default database for you. While this is the expected behavior of `postgres`, this means that it will not accept incoming connections during that time. This may cause issues when using automation tools, such as `docker-compose`, that start several containers simultaneously. +If there is no database when `postgres` starts in a container, then `postgres` will create the default database for you. While this is the expected behavior of `postgres`, this means that it will not accept incoming connections during that time. This may cause issues when using automation tools, such as `docker compose`, that start several containers simultaneously. -Also note that the default `/dev/shm` size for containers is 64MB. If the shared memory is exhausted you will encounter `ERROR: could not resize shared memory segment . . . : No space left on device`. You will want to pass [`--shm-size=256MB`](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources) for example to `docker run`, or alternatively in [`docker-compose`](https://docs.docker.com/compose/compose-file/#shm_size). +Also note that the default `/dev/shm` size for containers is 64MB. If the shared memory is exhausted you will encounter `ERROR: could not resize shared memory segment . . . : No space left on device`. You will want to pass [`--shm-size=256MB`](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources) for example to `docker run`, or alternatively in [`docker compose`](https://docs.docker.com/compose/compose-file/05-services/#shm_size). ## Where to Store Data @@ -335,10 +362,10 @@ The Docker documentation is a good starting point for understanding the differen 2. Start your `postgres` container like this: ```console - $ docker run --name some-postgres -v /my/own/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:tag + $ docker run --name some-postgres -v /my/own/datadir:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword -d postgres:tag ``` -The `-v /my/own/datadir:/var/lib/postgresql/data` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/postgresql/data` inside the container, where PostgreSQL by default will write its data files. +The `-v /my/own/datadir:/var/lib/postgresql` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/postgresql` inside the container, where PostgreSQL by default will write its data files. # Image Variants @@ -348,7 +375,7 @@ The `postgres` images come in many flavors, each designed for a specific use cas This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `postgres:-alpine` diff --git a/postgres/compose.yaml b/postgres/compose.yaml new file mode 100644 index 000000000000..47ca8a68a513 --- /dev/null +++ b/postgres/compose.yaml @@ -0,0 +1,23 @@ +# Use postgres/example user/password credentials + +services: + + db: + image: postgres + restart: always + # set shared memory limit when using docker compose + shm_size: 128mb + # or set shared memory limit when deploy via swarm stack + #volumes: + # - type: tmpfs + # target: /dev/shm + # tmpfs: + # size: 134217728 # 128*2^20 bytes = 128Mb + environment: + POSTGRES_PASSWORD: example + + adminer: + image: adminer + restart: always + ports: + - 8080:8080 diff --git a/postgres/content.md b/postgres/content.md index 1d2baf71a870..9e2e30f89bb8 100644 --- a/postgres/content.md +++ b/postgres/content.md @@ -36,9 +36,9 @@ postgres=# SELECT 1; (1 row) ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). # How to extend this image @@ -96,20 +96,13 @@ See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/d ### `PGDATA` -This optional variable can be used to define another location - like a subdirectory - for the database files. The default is `/var/lib/postgresql/data`. If the data volume you're using is a filesystem mountpoint (like with GCE persistent disks) or remote folder that cannot be chowned to the `postgres` user (like some NFS mounts), Postgres `initdb` recommends a subdirectory be created to contain the data. +> **Important Change:** [the `PGDATA` environment variable of the image was changed to be version specific in PostgreSQL 18 and above](https://github.com/docker-library/postgres/pull/1259). For 18 it is `/var/lib/postgresql/18/docker`. Later versions will replace `18` with their respective major version (e.g., `/var/lib/postgresql/19/docker` for PostgreSQL `19.x`). The defined `VOLUME` was changed in 18 and above to `/var/lib/postgresql`. Mounts and volumes should be targeted at the updated location. This will allow users upgrading between PostgreSQL major releases to use the faster `--link` when running `pg_upgrade` and mounting `/var/lib/postgresql`. -For example: +Users who wish to opt-in to this change on older releases can do so by setting `PGDATA` explicitly (`--env PGDATA=/var/lib/postgresql/17/docker --volume some-postgres:/var/lib/postgresql`). To migrate pre-existing data, adjust the volume's folder structure appropriately first (moving all database files into a `PG_MAJOR/docker` subdirectory). -```console -$ docker run -d \ - --name some-postgres \ - -e POSTGRES_PASSWORD=mysecretpassword \ - -e PGDATA=/var/lib/postgresql/data/pgdata \ - -v /custom/mount:/var/lib/postgresql/data \ - %%IMAGE%% -``` +> **Important Note:** (for PostgreSQL 17 and below) Mount the data volume at `/var/lib/postgresql/data` and not at `/var/lib/postgresql` because mounts at the latter path WILL NOT PERSIST database data when the container is re-created. The Dockerfile that builds the image declares a volume at `/var/lib/postgresql/data` and if no data volume is mounted at that path then the container runtime will automatically create an [anonymous volume](https://docs.docker.com/engine/storage/#volumes) that is not reused across container re-creations. Data will be written to the anonymous volume rather than your intended data volume and won't persist when the container is deleted and re-created. -This is an environment variable that is not Docker specific. Because the variable is used by the `postgres` server binary (see the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account. +This (`PGDATA`) is an environment variable that is not Docker specific. Because the variable is used by the `postgres` server binary (see the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account. ## Docker Secrets @@ -130,7 +123,7 @@ If you would like to do additional initialization in an image derived from this For example, to add an additional user and database, add the following to `/docker-entrypoint-initdb.d/init-user-db.sh`: ```bash -#!/bin/bash +#!/usr/bin/env bash set -e psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL @@ -198,7 +191,7 @@ When using the Alpine variants, any postgres extension not listed in [postgres-c As of [docker-library/postgres#253](https://github.com/docker-library/postgres/pull/253), this image supports running as a (mostly) arbitrary user via `--user` on `docker run`. As of [docker-library/postgres#1018](https://github.com/docker-library/postgres/pull/1018), this is also the case for the Alpine variants. -The main caveat to note is that `postgres` doesn't care what UID it runs as (as long as the owner of `/var/lib/postgresql/data` matches), but `initdb` *does* care (and needs the user to exist in `/etc/passwd`): +The main caveat to note is that `postgres` doesn't care what UID it runs as (as long as the owner of `PGDATA` matches), but `initdb` *does* care (and needs the user to exist in `/etc/passwd`): ```console $ docker run -it --rm --user www-data -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%% @@ -224,13 +217,13 @@ The three easiest ways to get around this: 3. initialize the target directory separately from the final runtime (with a `chown` in between): ```console - $ docker volume create pgdata - $ docker run -it --rm -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%% + $ docker volume create pg + $ docker run -it --rm -v pg:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%% The files belonging to this database system will be owned by user "postgres". ... ( once it's finished initializing successfully and is waiting for connections, stop it ) - $ docker run -it --rm -v pgdata:/var/lib/postgresql/data bash chown -R 1000:1000 /var/lib/postgresql/data - $ docker run -it --rm --user 1000:1000 -v pgdata:/var/lib/postgresql/data %%IMAGE%% + $ docker run -it --rm -v pg:/var/lib/postgresql bash chown -R 1000:1000 /var/lib/postgresql + $ docker run -it --rm --user 1000:1000 -v pg:/var/lib/postgresql %%IMAGE%% LOG: database system was shut down at 2017-01-20 00:03:23 UTC LOG: MultiXact member wraparound protections are now enabled LOG: autovacuum launcher started @@ -239,9 +232,9 @@ The three easiest ways to get around this: # Caveats -If there is no database when `postgres` starts in a container, then `postgres` will create the default database for you. While this is the expected behavior of `postgres`, this means that it will not accept incoming connections during that time. This may cause issues when using automation tools, such as `docker-compose`, that start several containers simultaneously. +If there is no database when `postgres` starts in a container, then `postgres` will create the default database for you. While this is the expected behavior of `postgres`, this means that it will not accept incoming connections during that time. This may cause issues when using automation tools, such as `docker compose`, that start several containers simultaneously. -Also note that the default `/dev/shm` size for containers is 64MB. If the shared memory is exhausted you will encounter `ERROR: could not resize shared memory segment . . . : No space left on device`. You will want to pass [`--shm-size=256MB`](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources) for example to `docker run`, or alternatively in [`docker-compose`](https://docs.docker.com/compose/compose-file/#shm_size). +Also note that the default `/dev/shm` size for containers is 64MB. If the shared memory is exhausted you will encounter `ERROR: could not resize shared memory segment . . . : No space left on device`. You will want to pass [`--shm-size=256MB`](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources) for example to `docker run`, or alternatively in [`docker compose`](https://docs.docker.com/compose/compose-file/05-services/#shm_size). ## Where to Store Data @@ -256,7 +249,7 @@ The Docker documentation is a good starting point for understanding the differen 2. Start your `%%IMAGE%%` container like this: ```console - $ docker run --name some-%%REPO%% -v /my/own/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d %%IMAGE%%:tag + $ docker run --name some-%%REPO%% -v /my/own/datadir:/var/lib/postgresql -e POSTGRES_PASSWORD=mysecretpassword -d %%IMAGE%%:tag ``` -The `-v /my/own/datadir:/var/lib/postgresql/data` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/postgresql/data` inside the container, where PostgreSQL by default will write its data files. +The `-v /my/own/datadir:/var/lib/postgresql` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/postgresql` inside the container, where PostgreSQL by default will write its data files. diff --git a/postgres/metadata.json b/postgres/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/postgres/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/postgres/stack.yml b/postgres/stack.yml deleted file mode 100644 index 3994b0c470c2..000000000000 --- a/postgres/stack.yml +++ /dev/null @@ -1,16 +0,0 @@ -# Use postgres/example user/password credentials -version: '3.1' - -services: - - db: - image: postgres - restart: always - environment: - POSTGRES_PASSWORD: example - - adminer: - image: adminer - restart: always - ports: - - 8080:8080 diff --git a/push.pl b/push.pl index 6f45a3f4b42e..ef7eee98e099 100755 --- a/push.pl +++ b/push.pl @@ -8,13 +8,16 @@ use File::Temp; use Getopt::Long; use Mojo::File; +use Mojo::JSON qw(decode_json); use Mojo::UserAgent; -use Mojo::Util qw(b64_encode decode encode trim); +use Mojo::Util qw(decode encode trim url_escape); use Term::UI; use Term::ReadLine; -my $hubLengthLimit = 25_000; +require bytes; # this is not recommended, but we *only* use "bytes::length" from it to determine whether we need to do a more correct conversion to/from bytes for trimming (see $hubLengthLimit and usages) + +my $hubLengthLimit = 25_000; # NOTE: this is *bytes*, not characters 🙃 my $githubBase = 'https://github.com/docker-library/docs/tree/master'; # TODO point this at the correct "dist-xxx" branch based on "namespace" my $username; @@ -33,7 +36,7 @@ die 'no repos specified' unless @ARGV; my $ua = Mojo::UserAgent->new->max_redirects(10); -$ua->transactor->name('Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/44.0.2403.125 Safari/537.36'); +$ua->transactor->name($ENV{DOCS_PUSH_USER_AGENT} || 'https://github.com/docker-library/docs/tree/HEAD/push.pl'); my $term = Term::ReadLine->new('docker-library-docs-push'); unless (defined $username) { @@ -43,32 +46,17 @@ $password = $term->get_reply(prompt => 'Hub Password'); # TODO hide the input? O:) } -my $login = $ua->post('https://hub.docker.com/v2/users/login/' => {} => json => { username => $username, password => $password }); -die 'login failed' unless $login->res->is_success; +my $dockerHub = 'https://hub.docker.com'; -my $token = $login->res->json->{token}; +my $login = $ua->post($dockerHub . '/v2/users/login/' => {} => json => { username => $username, password => $password }); +die 'login failed: ' . $login->res->error->{message} unless $login->res->is_success; -my $csrf; -for my $cookie (@{ $login->res->cookies }) { - if ($cookie->name eq 'csrftoken') { - $csrf = $cookie->value; - last; - } -} -die 'missing CSRF token' unless defined $csrf; - -my $attemptLogin = $ua->post('https://hub.docker.com/attempt-login/' => {} => json => { jwt => $token }); -die 'attempt-login failed' unless $attemptLogin->res->is_success; +my $token = $login->res->json->{token}; my $authorizationHeader = { Authorization => "JWT $token", - 'X-CSRFToken' => $csrf, }; -my $userData = $ua->get('https://hub.docker.com/v2/user/' => $authorizationHeader); -die 'user failed' unless $userData->res->is_success; -$userData = $userData->res->json; - my $supportedTagsRegex = qr%^(# Supported tags and respective `Dockerfile` links\n\n)(.*?\n)(?=# |\[)%ms; sub prompt_for_edit { @@ -89,12 +77,13 @@ sub prompt_for_edit { $proposedText =~ s%$supportedTagsRegex%$sponsoredLinks$1$2%; } - if ($lengthLimit > 0 && length($proposedText) > $lengthLimit) { + if ($lengthLimit > 0 && bytes::length($proposedText) > $lengthLimit) { # TODO https://github.com/docker/hub-beta-feedback/issues/238 my $fullUrl = "$githubBase/$proposedFile"; my $shortTags = "-\tSee [\"Supported tags and respective \`Dockerfile\` links\" at $fullUrl]($fullUrl#supported-tags-and-respective-dockerfile-links)\n\n"; - my $tagsNote = "**Note:** the description for this image is longer than the Hub length limit of $lengthLimit, so the \"Supported tags\" list has been trimmed to compensate. See [docker/hub-beta-feedback#238](https://github.com/docker/hub-beta-feedback/issues/238) for more information.\n\n" . $shortTags; - my $genericNote = "**Note:** the description for this image is longer than the Hub length limit of $lengthLimit, so has been trimmed. The full description can be found at [$fullUrl]($fullUrl). See [docker/hub-beta-feedback#238](https://github.com/docker/hub-beta-feedback/issues/238) for more information."; + my $seeAlso = 'See also [docker/hub-feedback#238](https://github.com/docker/hub-feedback/issues/238) and [docker/roadmap#475](https://github.com/docker/roadmap/issues/475).'; + my $tagsNote = "**Note:** the description for this image is longer than the Hub length limit of $lengthLimit, so the \"Supported tags\" list has been trimmed to compensate. $seeAlso\n\n$shortTags"; + my $genericNote = "**Note:** the description for this image is longer than the Hub length limit of $lengthLimit, so has been trimmed. The full description can be found at [$fullUrl]($fullUrl). $seeAlso"; my $startingNote = $genericNote . "\n\n"; my $endingNote = "\n\n...\n\n" . $genericNote; @@ -104,9 +93,18 @@ sub prompt_for_edit { $trimmedText =~ s%$supportedTagsRegex%$sponsoredLinks$1$tagsNote%ms; # (we scrape until the next "h1" or a line starting with a link which is likely a build status badge for an architecture-namespace) - if (length($trimmedText) > $lengthLimit) { - # ... if that doesn't do the trick, then do our older naïve description trimming - $trimmedText = $startingNote . substr $proposedText, 0, ($lengthLimit - length($startingNote . $endingNote)); + if (bytes::length($trimmedText) > $lengthLimit) { + # ... if that doesn't do the trick, then do our older naïve description trimming (respecting utf8; see https://www.perlmonks.org/?node_id=1230659 and https://perldoc.perl.org/utf8) + $trimmedText = $proposedText; + utf8::encode($trimmedText); + $trimmedText = $startingNote . substr $trimmedText, 0, ($lengthLimit - bytes::length($startingNote . $endingNote)); + # (deal with the potential of "bytes::substr" here cutting us in the middle of a unicode glyph, which is arguably a much worse problem than the markdown cutting described below 😬 again, see https://www.perlmonks.org/?node_id=1230659) + $trimmedText =~ s/(?: + [\xC0-\xDF] + | [\xE0-\xEF] [\x80-\xBF]? + | [\xF0-\xF7] [\x80-\xBF]{0,2} + )\z//x; + utf8::decode($trimmedText); # adding the "ending note" (https://github.com/docker/hub-feedback/issues/2220) is a bit more complicated as we have to deal with cutting off markdown ~cleanly so it renders correctly # TODO deal with "```foo" appropriately (so we don't drop our note in the middle of a code block) - the Hub's current markdown rendering (2022-04-07) does not auto-close a dangling block like this, so this isn't urgent @@ -174,10 +172,10 @@ sub prompt_for_edit { my $repoName = $repo; $repoName =~ s!^.*/!!; # 'hylang', 'perl', etc - my $repoUrl = 'https://hub.docker.com/v2/repositories/' . $repo . '/'; + my $repoUrl = $dockerHub . '/v2/repositories/' . $repo . '/'; if ($logos && $repo =~ m{ ^ library/ }x) { - # the "library" org images include a logo which is displayed in the Hub UI + # only DOI ("library"), DSOS, or DVP orgs can include a logo which is displayed in the Hub UI # if we have a logo file, let's update that metadata first my $repoLogo120 = $repoName . '/logo-120.png'; if (!-f $repoLogo120) { @@ -197,9 +195,10 @@ sub prompt_for_edit { ) == 0 or die "failed to convert $logoToConvert into $repoLogo120"; } } + my $logoUrlBase = $dockerHub . '/api/media/repos_logo/v1/' . url_escape($repo); if (-f $repoLogo120) { my $proposedLogo = Mojo::File->new($repoLogo120)->slurp; - my $currentLogo = $ua->get('https://d1q6f0aelx0por.cloudfront.net/product-logos/' . join('-', split(m{/}, $repo)) . '-logo.png', { 'Cache-Control' => 'no-cache' }); + my $currentLogo = $ua->get($logoUrlBase, { 'Cache-Control' => 'no-cache' }); $currentLogo = ($currentLogo->res->is_success ? $currentLogo->res->body : undef); if ($currentLogo && $currentLogo eq $proposedLogo) { @@ -207,14 +206,14 @@ sub prompt_for_edit { } else { say 'putting logo ' . $repoLogo120; - my $logoUrl = $repoUrl . 'logo'; - my $logoPut = $ua->put($logoUrl => $authorizationHeader => json => { - 'image_data' => b64_encode($proposedLogo), - 'content_type' => 'image/png', - 'file_ext' => 'png', - }); - warn 'warning: put to ' . $logoUrl . ' failed: ' . $logoPut->res->text unless $logoPut->res->is_success; + my $logoUpload = $ua->post($logoUrlBase . '/upload' => { %$authorizationHeader, 'Content-Type' => 'image/png' } => $proposedLogo); + die 'POST to ' . $logoUrlBase . '/upload failed: ' . $logoUpload->res->text unless $logoUpload->res->is_success; } + } else { + # if we had no logo file, we should send a DELETE request to the API just to be sure we're synchronizing the repo state appropriately even on complete logo removal + say 'no ' . $repoLogo120 . '; deleting logo'; + my $logoDelete = $ua->delete($logoUrlBase => $authorizationHeader); + die 'DELETE to ' . $logoUrlBase . ' failed: ' . $logoDelete->res->text unless $logoDelete->res->is_success or $logoDelete->res->code == 404; } } @@ -224,6 +223,35 @@ sub prompt_for_edit { my $repoDetails = $repoTx->res->json; $repoDetails->{description} //= ''; $repoDetails->{full_description} //= ''; + $repoDetails->{categories} //= []; + my @repoCategories = sort map { $_->{slug} } @{ $repoDetails->{categories} }; + + # read local categories from metadata.json + my $repoMetadataBytes = Mojo::File->new($repoName . '/metadata.json')->slurp; + my $repoMetadataJson = decode_json $repoMetadataBytes; + my @localRepoCategories = sort @{ $repoMetadataJson->{hub}{categories} }; + + # check if the local categories differ in length or items from the remote + my $needCat = @localRepoCategories != @repoCategories; + if (! $needCat) { + foreach my $i (0 .. @localRepoCategories) { + last if ! defined $repoCategories[$i]; # length difference already covered, so we can bail + if ($localRepoCategories[$i] ne $repoCategories[$i]) { + $needCat = 1; + last; + } + } + } + if ($needCat) { + say 'updating ' . $repoName . ' categories'; + my $catsPatch = $ua->patch($repoUrl . 'categories/' => { %$authorizationHeader, Accept => 'application/json' } => json => [ + map { { + slug => $_, + name => 'All those moments will be lost in time, like tears in rain... Time to die.', + } } @{ $repoMetadataJson->{hub}{categories} } + ]); + die 'patch to categories failed: ' . $catsPatch->res->text unless $catsPatch->res->is_success; + } my $hubShort = prompt_for_edit($repoDetails->{description}, $repoName . '/README-short.txt'); my $hubLong = prompt_for_edit($repoDetails->{full_description}, $repoName . '/README.md', $hubLengthLimit); @@ -236,5 +264,5 @@ sub prompt_for_edit { description => $hubShort, full_description => $hubLong, }); - warn 'patch to ' . $repoUrl . ' failed: ' . $repoPatch->res->text and next unless $repoPatch->res->is_success; + die 'patch to ' . $repoUrl . ' failed: ' . $repoPatch->res->text unless $repoPatch->res->is_success; } diff --git a/push.sh b/push.sh index a1e43e346ef6..92ac00f6f6df 100755 --- a/push.sh +++ b/push.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" diff --git a/pypy/README.md b/pypy/README.md index c20f4cffdca8..915bd5ec64a6 100644 --- a/pypy/README.md +++ b/pypy/README.md @@ -28,53 +28,58 @@ WARNING: ## Simple Tags -- [`3.9-7.3.11-bullseye`, `3.9-7.3-bullseye`, `3.9-7-bullseye`, `3.9-bullseye`, `3-7.3.11-bullseye`, `3-7.3-bullseye`, `3-7-bullseye`, `3-bullseye`, `bullseye`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/bullseye/Dockerfile) -- [`3.9-7.3.11-slim`, `3.9-7.3-slim`, `3.9-7-slim`, `3.9-slim`, `3-7.3.11-slim`, `3-7.3-slim`, `3-7-slim`, `3-slim`, `slim`, `3.9-7.3.11-slim-bullseye`, `3.9-7.3-slim-bullseye`, `3.9-7-slim-bullseye`, `3.9-slim-bullseye`, `3-7.3.11-slim-bullseye`, `3-7.3-slim-bullseye`, `3-7-slim-bullseye`, `3-slim-bullseye`, `slim-bullseye`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/slim-bullseye/Dockerfile) -- [`3.9-7.3.11-buster`, `3.9-7.3-buster`, `3.9-7-buster`, `3.9-buster`, `3-7.3.11-buster`, `3-7.3-buster`, `3-7-buster`, `3-buster`, `buster`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/buster/Dockerfile) -- [`3.9-7.3.11-slim-buster`, `3.9-7.3-slim-buster`, `3.9-7-slim-buster`, `3.9-slim-buster`, `3-7.3.11-slim-buster`, `3-7.3-slim-buster`, `3-7-slim-buster`, `3-slim-buster`, `slim-buster`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/slim-buster/Dockerfile) -- [`3.9-7.3.11-windowsservercore-ltsc2022`, `3.9-7.3-windowsservercore-ltsc2022`, `3.9-7-windowsservercore-ltsc2022`, `3.9-windowsservercore-ltsc2022`, `3-7.3.11-windowsservercore-ltsc2022`, `3-7.3-windowsservercore-ltsc2022`, `3-7-windowsservercore-ltsc2022`, `3-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/windows/windowsservercore-ltsc2022/Dockerfile) -- [`3.9-7.3.11-windowsservercore-1809`, `3.9-7.3-windowsservercore-1809`, `3.9-7-windowsservercore-1809`, `3.9-windowsservercore-1809`, `3-7.3.11-windowsservercore-1809`, `3-7.3-windowsservercore-1809`, `3-7-windowsservercore-1809`, `3-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/windows/windowsservercore-1809/Dockerfile) -- [`3.8-7.3.11-bullseye`, `3.8-7.3-bullseye`, `3.8-7-bullseye`, `3.8-bullseye`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/bullseye/Dockerfile) -- [`3.8-7.3.11-slim`, `3.8-7.3-slim`, `3.8-7-slim`, `3.8-slim`, `3.8-7.3.11-slim-bullseye`, `3.8-7.3-slim-bullseye`, `3.8-7-slim-bullseye`, `3.8-slim-bullseye`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/slim-bullseye/Dockerfile) -- [`3.8-7.3.11-buster`, `3.8-7.3-buster`, `3.8-7-buster`, `3.8-buster`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/buster/Dockerfile) -- [`3.8-7.3.11-slim-buster`, `3.8-7.3-slim-buster`, `3.8-7-slim-buster`, `3.8-slim-buster`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/slim-buster/Dockerfile) -- [`3.8-7.3.11-windowsservercore-ltsc2022`, `3.8-7.3-windowsservercore-ltsc2022`, `3.8-7-windowsservercore-ltsc2022`, `3.8-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/windows/windowsservercore-ltsc2022/Dockerfile) -- [`3.8-7.3.11-windowsservercore-1809`, `3.8-7.3-windowsservercore-1809`, `3.8-7-windowsservercore-1809`, `3.8-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/windows/windowsservercore-1809/Dockerfile) -- [`2.7-7.3.11-bullseye`, `2.7-7.3-bullseye`, `2.7-7-bullseye`, `2.7-bullseye`, `2-7.3.11-bullseye`, `2-7.3-bullseye`, `2-7-bullseye`, `2-bullseye`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/bullseye/Dockerfile) -- [`2.7-7.3.11-slim`, `2.7-7.3-slim`, `2.7-7-slim`, `2.7-slim`, `2-7.3.11-slim`, `2-7.3-slim`, `2-7-slim`, `2-slim`, `2.7-7.3.11-slim-bullseye`, `2.7-7.3-slim-bullseye`, `2.7-7-slim-bullseye`, `2.7-slim-bullseye`, `2-7.3.11-slim-bullseye`, `2-7.3-slim-bullseye`, `2-7-slim-bullseye`, `2-slim-bullseye`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/slim-bullseye/Dockerfile) -- [`2.7-7.3.11-buster`, `2.7-7.3-buster`, `2.7-7-buster`, `2.7-buster`, `2-7.3.11-buster`, `2-7.3-buster`, `2-7-buster`, `2-buster`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/buster/Dockerfile) -- [`2.7-7.3.11-slim-buster`, `2.7-7.3-slim-buster`, `2.7-7-slim-buster`, `2.7-slim-buster`, `2-7.3.11-slim-buster`, `2-7.3-slim-buster`, `2-7-slim-buster`, `2-slim-buster`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/slim-buster/Dockerfile) -- [`2.7-7.3.11-windowsservercore-ltsc2022`, `2.7-7.3-windowsservercore-ltsc2022`, `2.7-7-windowsservercore-ltsc2022`, `2.7-windowsservercore-ltsc2022`, `2-7.3.11-windowsservercore-ltsc2022`, `2-7.3-windowsservercore-ltsc2022`, `2-7-windowsservercore-ltsc2022`, `2-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/windows/windowsservercore-ltsc2022/Dockerfile) -- [`2.7-7.3.11-windowsservercore-1809`, `2.7-7.3-windowsservercore-1809`, `2.7-7-windowsservercore-1809`, `2.7-windowsservercore-1809`, `2-7.3.11-windowsservercore-1809`, `2-7.3-windowsservercore-1809`, `2-7-windowsservercore-1809`, `2-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/windows/windowsservercore-1809/Dockerfile) +- [`3.11-7.3.20-trixie`, `3.11-7.3-trixie`, `3.11-7-trixie`, `3.11-trixie`, `3-7.3.20-trixie`, `3-7.3-trixie`, `3-7-trixie`, `3-trixie`, `trixie`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/3.11/trixie/Dockerfile) + +- [`3.11-7.3.20-slim`, `3.11-7.3-slim`, `3.11-7-slim`, `3.11-slim`, `3-7.3.20-slim`, `3-7.3-slim`, `3-7-slim`, `3-slim`, `slim`, `3.11-7.3.20-slim-trixie`, `3.11-7.3-slim-trixie`, `3.11-7-slim-trixie`, `3.11-slim-trixie`, `3-7.3.20-slim-trixie`, `3-7.3-slim-trixie`, `3-7-slim-trixie`, `3-slim-trixie`, `slim-trixie`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/3.11/slim-trixie/Dockerfile) + +- [`3.11-7.3.20-bookworm`, `3.11-7.3-bookworm`, `3.11-7-bookworm`, `3.11-bookworm`, `3-7.3.20-bookworm`, `3-7.3-bookworm`, `3-7-bookworm`, `3-bookworm`, `bookworm`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/3.11/bookworm/Dockerfile) + +- [`3.11-7.3.20-slim-bookworm`, `3.11-7.3-slim-bookworm`, `3.11-7-slim-bookworm`, `3.11-slim-bookworm`, `3-7.3.20-slim-bookworm`, `3-7.3-slim-bookworm`, `3-7-slim-bookworm`, `3-slim-bookworm`, `slim-bookworm`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/3.11/slim-bookworm/Dockerfile) + +- [`3.11-7.3.20-windowsservercore-ltsc2025`, `3.11-7.3-windowsservercore-ltsc2025`, `3.11-7-windowsservercore-ltsc2025`, `3.11-windowsservercore-ltsc2025`, `3-7.3.20-windowsservercore-ltsc2025`, `3-7.3-windowsservercore-ltsc2025`, `3-7-windowsservercore-ltsc2025`, `3-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/pypy/blob/b32ca0567b9856e21c607610254748a24439a956/3.11/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`3.11-7.3.20-windowsservercore-ltsc2022`, `3.11-7.3-windowsservercore-ltsc2022`, `3.11-7-windowsservercore-ltsc2022`, `3.11-windowsservercore-ltsc2022`, `3-7.3.20-windowsservercore-ltsc2022`, `3-7.3-windowsservercore-ltsc2022`, `3-7-windowsservercore-ltsc2022`, `3-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/b32ca0567b9856e21c607610254748a24439a956/3.11/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`2.7-7.3.20-trixie`, `2.7-7.3-trixie`, `2.7-7-trixie`, `2.7-trixie`, `2-7.3.20-trixie`, `2-7.3-trixie`, `2-7-trixie`, `2-trixie`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/2.7/trixie/Dockerfile) + +- [`2.7-7.3.20-slim`, `2.7-7.3-slim`, `2.7-7-slim`, `2.7-slim`, `2-7.3.20-slim`, `2-7.3-slim`, `2-7-slim`, `2-slim`, `2.7-7.3.20-slim-trixie`, `2.7-7.3-slim-trixie`, `2.7-7-slim-trixie`, `2.7-slim-trixie`, `2-7.3.20-slim-trixie`, `2-7.3-slim-trixie`, `2-7-slim-trixie`, `2-slim-trixie`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/2.7/slim-trixie/Dockerfile) + +- [`2.7-7.3.20-bookworm`, `2.7-7.3-bookworm`, `2.7-7-bookworm`, `2.7-bookworm`, `2-7.3.20-bookworm`, `2-7.3-bookworm`, `2-7-bookworm`, `2-bookworm`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/2.7/bookworm/Dockerfile) + +- [`2.7-7.3.20-slim-bookworm`, `2.7-7.3-slim-bookworm`, `2.7-7-slim-bookworm`, `2.7-slim-bookworm`, `2-7.3.20-slim-bookworm`, `2-7.3-slim-bookworm`, `2-7-slim-bookworm`, `2-slim-bookworm`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/2.7/slim-bookworm/Dockerfile) + +- [`2.7-7.3.20-windowsservercore-ltsc2025`, `2.7-7.3-windowsservercore-ltsc2025`, `2.7-7-windowsservercore-ltsc2025`, `2.7-windowsservercore-ltsc2025`, `2-7.3.20-windowsservercore-ltsc2025`, `2-7.3-windowsservercore-ltsc2025`, `2-7-windowsservercore-ltsc2025`, `2-windowsservercore-ltsc2025`](https://github.com/docker-library/pypy/blob/29ecc5a68bdd0a4643ca2b5495956f541a3ceb72/2.7/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`2.7-7.3.20-windowsservercore-ltsc2022`, `2.7-7.3-windowsservercore-ltsc2022`, `2.7-7-windowsservercore-ltsc2022`, `2.7-windowsservercore-ltsc2022`, `2-7.3.20-windowsservercore-ltsc2022`, `2-7.3-windowsservercore-ltsc2022`, `2-7-windowsservercore-ltsc2022`, `2-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/29ecc5a68bdd0a4643ca2b5495956f541a3ceb72/2.7/windows/windowsservercore-ltsc2022/Dockerfile) ## Shared Tags -- `3.9-7.3.11`, `3.9-7.3`, `3.9-7`, `3.9`, `3-7.3.11`, `3-7.3`, `3-7`, `3`, `latest`: - - [`3.9-7.3.11-bullseye`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/bullseye/Dockerfile) - - [`3.9-7.3.11-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.9-7.3.11-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/windows/windowsservercore-1809/Dockerfile) -- `3.9-7.3.11-windowsservercore`, `3.9-7.3-windowsservercore`, `3.9-7-windowsservercore`, `3.9-windowsservercore`, `3-7.3.11-windowsservercore`, `3-7.3-windowsservercore`, `3-7-windowsservercore`, `3-windowsservercore`, `windowsservercore`: - - [`3.9-7.3.11-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.9-7.3.11-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/f297f09255e5a53036355e2e4135c75542099641/3.9/windows/windowsservercore-1809/Dockerfile) -- `3.8-7.3.11`, `3.8-7.3`, `3.8-7`, `3.8`: - - [`3.8-7.3.11-bullseye`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/bullseye/Dockerfile) - - [`3.8-7.3.11-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.8-7.3.11-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/windows/windowsservercore-1809/Dockerfile) -- `3.8-7.3.11-windowsservercore`, `3.8-7.3-windowsservercore`, `3.8-7-windowsservercore`, `3.8-windowsservercore`: - - [`3.8-7.3.11-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.8-7.3.11-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/86944b577ee5ad8fe08db64900a9151abd5a8e3b/3.8/windows/windowsservercore-1809/Dockerfile) -- `2.7-7.3.11`, `2.7-7.3`, `2.7-7`, `2.7`, `2-7.3.11`, `2-7.3`, `2-7`, `2`: - - [`2.7-7.3.11-bullseye`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/bullseye/Dockerfile) - - [`2.7-7.3.11-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/windows/windowsservercore-ltsc2022/Dockerfile) - - [`2.7-7.3.11-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/windows/windowsservercore-1809/Dockerfile) -- `2.7-7.3.11-windowsservercore`, `2.7-7.3-windowsservercore`, `2.7-7-windowsservercore`, `2.7-windowsservercore`, `2-7.3.11-windowsservercore`, `2-7.3-windowsservercore`, `2-7-windowsservercore`, `2-windowsservercore`: - - [`2.7-7.3.11-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/windows/windowsservercore-ltsc2022/Dockerfile) - - [`2.7-7.3.11-windowsservercore-1809`](https://github.com/docker-library/pypy/blob/6984fd15d26f75e4078da3380ba405c41f585f98/2.7/windows/windowsservercore-1809/Dockerfile) +- `3.11-7.3.20`, `3.11-7.3`, `3.11-7`, `3.11`, `3-7.3.20`, `3-7.3`, `3-7`, `3`, `latest`: + + - [`3.11-7.3.20-trixie`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/3.11/trixie/Dockerfile) + - [`3.11-7.3.20-windowsservercore-ltsc2025`](https://github.com/docker-library/pypy/blob/b32ca0567b9856e21c607610254748a24439a956/3.11/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.11-7.3.20-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/b32ca0567b9856e21c607610254748a24439a956/3.11/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.11-7.3.20-windowsservercore`, `3.11-7.3-windowsservercore`, `3.11-7-windowsservercore`, `3.11-windowsservercore`, `3-7.3.20-windowsservercore`, `3-7.3-windowsservercore`, `3-7-windowsservercore`, `3-windowsservercore`, `windowsservercore`: + + - [`3.11-7.3.20-windowsservercore-ltsc2025`](https://github.com/docker-library/pypy/blob/b32ca0567b9856e21c607610254748a24439a956/3.11/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.11-7.3.20-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/b32ca0567b9856e21c607610254748a24439a956/3.11/windows/windowsservercore-ltsc2022/Dockerfile) + +- `2.7-7.3.20`, `2.7-7.3`, `2.7-7`, `2.7`, `2-7.3.20`, `2-7.3`, `2-7`, `2`: + + - [`2.7-7.3.20-trixie`](https://github.com/docker-library/pypy/blob/8908818e3c253a09864223f7c148db765684135f/2.7/trixie/Dockerfile) + - [`2.7-7.3.20-windowsservercore-ltsc2025`](https://github.com/docker-library/pypy/blob/29ecc5a68bdd0a4643ca2b5495956f541a3ceb72/2.7/windows/windowsservercore-ltsc2025/Dockerfile) + - [`2.7-7.3.20-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/29ecc5a68bdd0a4643ca2b5495956f541a3ceb72/2.7/windows/windowsservercore-ltsc2022/Dockerfile) + +- `2.7-7.3.20-windowsservercore`, `2.7-7.3-windowsservercore`, `2.7-7-windowsservercore`, `2.7-windowsservercore`, `2-7.3.20-windowsservercore`, `2-7.3-windowsservercore`, `2-7-windowsservercore`, `2-windowsservercore`: + + - [`2.7-7.3.20-windowsservercore-ltsc2025`](https://github.com/docker-library/pypy/blob/29ecc5a68bdd0a4643ca2b5495956f541a3ceb72/2.7/windows/windowsservercore-ltsc2025/Dockerfile) + - [`2.7-7.3.20-windowsservercore-ltsc2022`](https://github.com/docker-library/pypy/blob/29ecc5a68bdd0a4643ca2b5495956f541a3ceb72/2.7/windows/windowsservercore-ltsc2022/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/pypy/issues](https://github.com/docker-library/pypy/issues) + [https://github.com/docker-library/pypy/issues](https://github.com/docker-library/pypy/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/pypy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/pypy/), [`i386`](https://hub.docker.com/r/i386/pypy/), [`windows-amd64`](https://hub.docker.com/r/winamd64/pypy/) @@ -161,7 +166,7 @@ The `pypy` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. @@ -171,12 +176,11 @@ This image does not contain the common packages contained in the default tag and ## `pypy:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/pypy/metadata.json b/pypy/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/pypy/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/python/README.md b/python/README.md index 32c3c09499fa..1b4c4fbe02ce 100644 --- a/python/README.md +++ b/python/README.md @@ -28,86 +28,144 @@ WARNING: ## Simple Tags -- [`3.12.0a4-bullseye`, `3.12-rc-bullseye`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/bullseye/Dockerfile) -- [`3.12.0a4-slim-bullseye`, `3.12-rc-slim-bullseye`, `3.12.0a4-slim`, `3.12-rc-slim`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/slim-bullseye/Dockerfile) -- [`3.12.0a4-buster`, `3.12-rc-buster`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/buster/Dockerfile) -- [`3.12.0a4-slim-buster`, `3.12-rc-slim-buster`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/slim-buster/Dockerfile) -- [`3.12.0a4-alpine3.17`, `3.12-rc-alpine3.17`, `3.12.0a4-alpine`, `3.12-rc-alpine`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/alpine3.17/Dockerfile) -- [`3.12.0a4-alpine3.16`, `3.12-rc-alpine3.16`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/alpine3.16/Dockerfile) -- [`3.12.0a4-windowsservercore-ltsc2022`, `3.12-rc-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile) -- [`3.12.0a4-windowsservercore-1809`, `3.12-rc-windowsservercore-1809`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/windows/windowsservercore-1809/Dockerfile) -- [`3.11.1-bullseye`, `3.11-bullseye`, `3-bullseye`, `bullseye`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/bullseye/Dockerfile) -- [`3.11.1-slim-bullseye`, `3.11-slim-bullseye`, `3-slim-bullseye`, `slim-bullseye`, `3.11.1-slim`, `3.11-slim`, `3-slim`, `slim`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/slim-bullseye/Dockerfile) -- [`3.11.1-buster`, `3.11-buster`, `3-buster`, `buster`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/buster/Dockerfile) -- [`3.11.1-slim-buster`, `3.11-slim-buster`, `3-slim-buster`, `slim-buster`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/slim-buster/Dockerfile) -- [`3.11.1-alpine3.17`, `3.11-alpine3.17`, `3-alpine3.17`, `alpine3.17`, `3.11.1-alpine`, `3.11-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/alpine3.17/Dockerfile) -- [`3.11.1-alpine3.16`, `3.11-alpine3.16`, `3-alpine3.16`, `alpine3.16`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/alpine3.16/Dockerfile) -- [`3.11.1-windowsservercore-ltsc2022`, `3.11-windowsservercore-ltsc2022`, `3-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/windows/windowsservercore-ltsc2022/Dockerfile) -- [`3.11.1-windowsservercore-1809`, `3.11-windowsservercore-1809`, `3-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/windows/windowsservercore-1809/Dockerfile) -- [`3.10.9-bullseye`, `3.10-bullseye`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/bullseye/Dockerfile) -- [`3.10.9-slim-bullseye`, `3.10-slim-bullseye`, `3.10.9-slim`, `3.10-slim`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/slim-bullseye/Dockerfile) -- [`3.10.9-buster`, `3.10-buster`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/buster/Dockerfile) -- [`3.10.9-slim-buster`, `3.10-slim-buster`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/slim-buster/Dockerfile) -- [`3.10.9-alpine3.17`, `3.10-alpine3.17`, `3.10.9-alpine`, `3.10-alpine`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/alpine3.17/Dockerfile) -- [`3.10.9-alpine3.16`, `3.10-alpine3.16`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/alpine3.16/Dockerfile) -- [`3.10.9-windowsservercore-ltsc2022`, `3.10-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/windows/windowsservercore-ltsc2022/Dockerfile) -- [`3.10.9-windowsservercore-1809`, `3.10-windowsservercore-1809`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/windows/windowsservercore-1809/Dockerfile) -- [`3.9.16-bullseye`, `3.9-bullseye`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/bullseye/Dockerfile) -- [`3.9.16-slim-bullseye`, `3.9-slim-bullseye`, `3.9.16-slim`, `3.9-slim`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/slim-bullseye/Dockerfile) -- [`3.9.16-buster`, `3.9-buster`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/buster/Dockerfile) -- [`3.9.16-slim-buster`, `3.9-slim-buster`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/slim-buster/Dockerfile) -- [`3.9.16-alpine3.17`, `3.9-alpine3.17`, `3.9.16-alpine`, `3.9-alpine`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/alpine3.17/Dockerfile) -- [`3.9.16-alpine3.16`, `3.9-alpine3.16`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/alpine3.16/Dockerfile) -- [`3.8.16-bullseye`, `3.8-bullseye`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/bullseye/Dockerfile) -- [`3.8.16-slim-bullseye`, `3.8-slim-bullseye`, `3.8.16-slim`, `3.8-slim`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/slim-bullseye/Dockerfile) -- [`3.8.16-buster`, `3.8-buster`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/buster/Dockerfile) -- [`3.8.16-slim-buster`, `3.8-slim-buster`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/slim-buster/Dockerfile) -- [`3.8.16-alpine3.17`, `3.8-alpine3.17`, `3.8.16-alpine`, `3.8-alpine`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/alpine3.17/Dockerfile) -- [`3.8.16-alpine3.16`, `3.8-alpine3.16`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/alpine3.16/Dockerfile) -- [`3.7.16-bullseye`, `3.7-bullseye`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/bullseye/Dockerfile) -- [`3.7.16-slim-bullseye`, `3.7-slim-bullseye`, `3.7.16-slim`, `3.7-slim`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/slim-bullseye/Dockerfile) -- [`3.7.16-buster`, `3.7-buster`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/buster/Dockerfile) -- [`3.7.16-slim-buster`, `3.7-slim-buster`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/slim-buster/Dockerfile) -- [`3.7.16-alpine3.17`, `3.7-alpine3.17`, `3.7.16-alpine`, `3.7-alpine`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/alpine3.17/Dockerfile) -- [`3.7.16-alpine3.16`, `3.7-alpine3.16`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/alpine3.16/Dockerfile) +- [`3.15.0a1-trixie`, `3.15-rc-trixie`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/trixie/Dockerfile) + +- [`3.15.0a1-slim-trixie`, `3.15-rc-slim-trixie`, `3.15.0a1-slim`, `3.15-rc-slim`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/slim-trixie/Dockerfile) + +- [`3.15.0a1-bookworm`, `3.15-rc-bookworm`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/bookworm/Dockerfile) + +- [`3.15.0a1-slim-bookworm`, `3.15-rc-slim-bookworm`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/slim-bookworm/Dockerfile) + +- [`3.15.0a1-alpine3.22`, `3.15-rc-alpine3.22`, `3.15.0a1-alpine`, `3.15-rc-alpine`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/alpine3.22/Dockerfile) + +- [`3.15.0a1-alpine3.21`, `3.15-rc-alpine3.21`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/alpine3.21/Dockerfile) + +- [`3.15.0a1-windowsservercore-ltsc2025`, `3.15-rc-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`3.15.0a1-windowsservercore-ltsc2022`, `3.15-rc-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`3.14.0-trixie`, `3.14-trixie`, `3-trixie`, `trixie`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/trixie/Dockerfile) + +- [`3.14.0-slim-trixie`, `3.14-slim-trixie`, `3-slim-trixie`, `slim-trixie`, `3.14.0-slim`, `3.14-slim`, `3-slim`, `slim`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/slim-trixie/Dockerfile) + +- [`3.14.0-bookworm`, `3.14-bookworm`, `3-bookworm`, `bookworm`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/bookworm/Dockerfile) + +- [`3.14.0-slim-bookworm`, `3.14-slim-bookworm`, `3-slim-bookworm`, `slim-bookworm`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/slim-bookworm/Dockerfile) + +- [`3.14.0-alpine3.22`, `3.14-alpine3.22`, `3-alpine3.22`, `alpine3.22`, `3.14.0-alpine`, `3.14-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/alpine3.22/Dockerfile) + +- [`3.14.0-alpine3.21`, `3.14-alpine3.21`, `3-alpine3.21`, `alpine3.21`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/alpine3.21/Dockerfile) + +- [`3.14.0-windowsservercore-ltsc2025`, `3.14-windowsservercore-ltsc2025`, `3-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/e7f6a1c7956a24dc1746d4580ed5961547016a01/3.14/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`3.14.0-windowsservercore-ltsc2022`, `3.14-windowsservercore-ltsc2022`, `3-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/e7f6a1c7956a24dc1746d4580ed5961547016a01/3.14/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`3.13.9-trixie`, `3.13-trixie`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/trixie/Dockerfile) + +- [`3.13.9-slim-trixie`, `3.13-slim-trixie`, `3.13.9-slim`, `3.13-slim`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/slim-trixie/Dockerfile) + +- [`3.13.9-bookworm`, `3.13-bookworm`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/bookworm/Dockerfile) + +- [`3.13.9-slim-bookworm`, `3.13-slim-bookworm`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/slim-bookworm/Dockerfile) + +- [`3.13.9-alpine3.22`, `3.13-alpine3.22`, `3.13.9-alpine`, `3.13-alpine`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/alpine3.22/Dockerfile) + +- [`3.13.9-alpine3.21`, `3.13-alpine3.21`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/alpine3.21/Dockerfile) + +- [`3.13.9-windowsservercore-ltsc2025`, `3.13-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/windows/windowsservercore-ltsc2025/Dockerfile) + +- [`3.13.9-windowsservercore-ltsc2022`, `3.13-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/windows/windowsservercore-ltsc2022/Dockerfile) + +- [`3.12.12-trixie`, `3.12-trixie`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/trixie/Dockerfile) + +- [`3.12.12-slim-trixie`, `3.12-slim-trixie`, `3.12.12-slim`, `3.12-slim`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/slim-trixie/Dockerfile) + +- [`3.12.12-bookworm`, `3.12-bookworm`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/bookworm/Dockerfile) + +- [`3.12.12-slim-bookworm`, `3.12-slim-bookworm`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/slim-bookworm/Dockerfile) + +- [`3.12.12-alpine3.22`, `3.12-alpine3.22`, `3.12.12-alpine`, `3.12-alpine`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/alpine3.22/Dockerfile) + +- [`3.12.12-alpine3.21`, `3.12-alpine3.21`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/alpine3.21/Dockerfile) + +- [`3.11.14-trixie`, `3.11-trixie`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/trixie/Dockerfile) + +- [`3.11.14-slim-trixie`, `3.11-slim-trixie`, `3.11.14-slim`, `3.11-slim`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/slim-trixie/Dockerfile) + +- [`3.11.14-bookworm`, `3.11-bookworm`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/bookworm/Dockerfile) + +- [`3.11.14-slim-bookworm`, `3.11-slim-bookworm`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/slim-bookworm/Dockerfile) + +- [`3.11.14-alpine3.22`, `3.11-alpine3.22`, `3.11.14-alpine`, `3.11-alpine`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/alpine3.22/Dockerfile) + +- [`3.11.14-alpine3.21`, `3.11-alpine3.21`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/alpine3.21/Dockerfile) + +- [`3.10.19-trixie`, `3.10-trixie`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/trixie/Dockerfile) + +- [`3.10.19-slim-trixie`, `3.10-slim-trixie`, `3.10.19-slim`, `3.10-slim`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/slim-trixie/Dockerfile) + +- [`3.10.19-bookworm`, `3.10-bookworm`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/bookworm/Dockerfile) + +- [`3.10.19-slim-bookworm`, `3.10-slim-bookworm`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/slim-bookworm/Dockerfile) + +- [`3.10.19-alpine3.22`, `3.10-alpine3.22`, `3.10.19-alpine`, `3.10-alpine`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/alpine3.22/Dockerfile) + +- [`3.10.19-alpine3.21`, `3.10-alpine3.21`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/alpine3.21/Dockerfile) ## Shared Tags -- `3.12.0a4`, `3.12-rc`: - - [`3.12.0a4-bullseye`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/bullseye/Dockerfile) - - [`3.12.0a4-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.12.0a4-windowsservercore-1809`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/windows/windowsservercore-1809/Dockerfile) -- `3.12.0a4-windowsservercore`, `3.12-rc-windowsservercore`: - - [`3.12.0a4-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.12.0a4-windowsservercore-1809`](https://github.com/docker-library/python/blob/bff32fbfdbd737838c16c6b01ac910fb889e0767/3.12-rc/windows/windowsservercore-1809/Dockerfile) -- `3.11.1`, `3.11`, `3`, `latest`: - - [`3.11.1-bullseye`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/bullseye/Dockerfile) - - [`3.11.1-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.11.1-windowsservercore-1809`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/windows/windowsservercore-1809/Dockerfile) -- `3.11.1-windowsservercore`, `3.11-windowsservercore`, `3-windowsservercore`, `windowsservercore`: - - [`3.11.1-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.11.1-windowsservercore-1809`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.11/windows/windowsservercore-1809/Dockerfile) -- `3.10.9`, `3.10`: - - [`3.10.9-bullseye`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/bullseye/Dockerfile) - - [`3.10.9-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.10.9-windowsservercore-1809`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/windows/windowsservercore-1809/Dockerfile) -- `3.10.9-windowsservercore`, `3.10-windowsservercore`: - - [`3.10.9-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/windows/windowsservercore-ltsc2022/Dockerfile) - - [`3.10.9-windowsservercore-1809`](https://github.com/docker-library/python/blob/046374fd6a8186a58ef8099e8b5f43946487f5fa/3.10/windows/windowsservercore-1809/Dockerfile) -- `3.9.16`, `3.9`: - - [`3.9.16-bullseye`](https://github.com/docker-library/python/blob/c65e0664a7a18ca566a744c6921eb66539337b0c/3.9/bullseye/Dockerfile) -- `3.8.16`, `3.8`: - - [`3.8.16-bullseye`](https://github.com/docker-library/python/blob/f5b7b5a332bd4d2c1518325ab9647b09bf07412f/3.8/bullseye/Dockerfile) -- `3.7.16`, `3.7`: - - [`3.7.16-bullseye`](https://github.com/docker-library/python/blob/9dacd07bff4576c2ae58c8d9302c6a43560f723d/3.7/bullseye/Dockerfile) +- `3.15.0a1`, `3.15-rc`: + + - [`3.15.0a1-trixie`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/trixie/Dockerfile) + - [`3.15.0a1-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.15.0a1-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.15.0a1-windowsservercore`, `3.15-rc-windowsservercore`: + + - [`3.15.0a1-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.15.0a1-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/303456576fd52b3e000639d5cfdf384442e730d7/3.15-rc/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.14.0`, `3.14`, `3`, `latest`: + + - [`3.14.0-trixie`](https://github.com/docker-library/python/blob/a83345bce8e75b407f283511dc3128b2062d8c1e/3.14/trixie/Dockerfile) + - [`3.14.0-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/e7f6a1c7956a24dc1746d4580ed5961547016a01/3.14/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.14.0-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/e7f6a1c7956a24dc1746d4580ed5961547016a01/3.14/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.14.0-windowsservercore`, `3.14-windowsservercore`, `3-windowsservercore`, `windowsservercore`: + + - [`3.14.0-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/e7f6a1c7956a24dc1746d4580ed5961547016a01/3.14/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.14.0-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/e7f6a1c7956a24dc1746d4580ed5961547016a01/3.14/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.13.9`, `3.13`: + + - [`3.13.9-trixie`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/trixie/Dockerfile) + - [`3.13.9-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.13.9-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.13.9-windowsservercore`, `3.13-windowsservercore`: + + - [`3.13.9-windowsservercore-ltsc2025`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/windows/windowsservercore-ltsc2025/Dockerfile) + - [`3.13.9-windowsservercore-ltsc2022`](https://github.com/docker-library/python/blob/3f2d7e4c339ab883455b81a873519f1d0f2cd80a/3.13/windows/windowsservercore-ltsc2022/Dockerfile) + +- `3.12.12`, `3.12`: + + - [`3.12.12-trixie`](https://github.com/docker-library/python/blob/e4ab0fe5ef4df797ed09883becf983a56ab97eca/3.12/trixie/Dockerfile) + +- `3.11.14`, `3.11`: + + - [`3.11.14-trixie`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.11/trixie/Dockerfile) + +- `3.10.19`, `3.10`: + + - [`3.10.19-trixie`](https://github.com/docker-library/python/blob/54a65f4ff531391810946ee17b0806accbda0fae/3.10/trixie/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/python/issues](https://github.com/docker-library/python/issues) + [https://github.com/docker-library/python/issues](https://github.com/docker-library/python/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/python/), [`arm32v5`](https://hub.docker.com/r/arm32v5/python/), [`arm32v6`](https://hub.docker.com/r/arm32v6/python/), [`arm32v7`](https://hub.docker.com/r/arm32v7/python/), [`arm64v8`](https://hub.docker.com/r/arm64v8/python/), [`i386`](https://hub.docker.com/r/i386/python/), [`mips64le`](https://hub.docker.com/r/mips64le/python/), [`ppc64le`](https://hub.docker.com/r/ppc64le/python/), [`s390x`](https://hub.docker.com/r/s390x/python/), [`windows-amd64`](https://hub.docker.com/r/winamd64/python/) + [`amd64`](https://hub.docker.com/r/amd64/python/), [`arm32v5`](https://hub.docker.com/r/arm32v5/python/), [`arm32v6`](https://hub.docker.com/r/arm32v6/python/), [`arm32v7`](https://hub.docker.com/r/arm32v7/python/), [`arm64v8`](https://hub.docker.com/r/arm64v8/python/), [`i386`](https://hub.docker.com/r/i386/python/), [`ppc64le`](https://hub.docker.com/r/ppc64le/python/), [`riscv64`](https://hub.docker.com/r/riscv64/python/), [`s390x`](https://hub.docker.com/r/s390x/python/), [`windows-amd64`](https://hub.docker.com/r/winamd64/python/) - **Published image artifact details**: [repo-info repo's `repos/python/` directory](https://github.com/docker-library/repo-info/blob/master/repos/python) ([history](https://github.com/docker-library/repo-info/commits/master/repos/python)) @@ -183,7 +241,7 @@ $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/ ## Multiple Python versions in the image -In the non `python:slim` variants there will be an additional older `python` executable at `/usr/bin/python` while the desired newer `/usr/local/bin/python` is the default choice in the `$PATH`. This is an unfortunate side-effect of using the `buildpack-deps` image in the non-slim variants +In the non-slim variants there will be an additional (distro-provided) `python` executable at `/usr/bin/python` (and/or `/usr/bin/python3`) while the desired image-provided `/usr/local/bin/python` is the default choice in the `$PATH`. This is an unfortunate side-effect of using the `buildpack-deps` image in the non-slim variants (and many distribution-provided tools being written against and likely to break with a different Python installation, so we can't safely remove/overwrite it). # Image Variants @@ -193,13 +251,18 @@ The `python` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. ## `python:-slim` -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `python`. Unless you are working in an environment where *only* the `python` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. +This image does not contain the common Debian packages contained in the default tag and only contains the minimal Debian packages needed to run `python`. Unless you are working in an environment where *only* the `python` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + +When using this image `pip install` will work if a suitable built distribution is available for the Python distribution package being installed. `pip install` may fail when installing a Python distribution package from a source distribution. This image does not contain the Debian packages required to compile extension modules written in other languages. Possible solutions if a `pip install` fails include: + +- Use this image and install any required Debian packages before running `pip install`. +- Use the default image of this repository. The default image contains the most commonly required Debian packages. The majority of arbitrary `pip install`s should be successful without additional header/development Debian packages. ## `python:-alpine` @@ -211,12 +274,11 @@ To minimize image size, it's uncommon for additional related tools (such as `git ## `python:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/python/content.md b/python/content.md index 7a8abeda0b13..007f7622bc67 100644 --- a/python/content.md +++ b/python/content.md @@ -61,4 +61,4 @@ $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/ ## Multiple Python versions in the image -In the non `python:slim` variants there will be an additional older `python` executable at `/usr/bin/python` while the desired newer `/usr/local/bin/python` is the default choice in the `$PATH`. This is an unfortunate side-effect of using the `buildpack-deps` image in the non-slim variants +In the non-slim variants there will be an additional (distro-provided) `python` executable at `/usr/bin/python` (and/or `/usr/bin/python3`) while the desired image-provided `/usr/local/bin/python` is the default choice in the `$PATH`. This is an unfortunate side-effect of using the `buildpack-deps` image in the non-slim variants (and many distribution-provided tools being written against and likely to break with a different Python installation, so we can't safely remove/overwrite it). diff --git a/python/metadata.json b/python/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/python/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/python/variant-slim.md b/python/variant-slim.md new file mode 100644 index 000000000000..f5a64e018e64 --- /dev/null +++ b/python/variant-slim.md @@ -0,0 +1,8 @@ +## `%%IMAGE%%:-slim` + +This image does not contain the common Debian packages contained in the default tag and only contains the minimal Debian packages needed to run `%%IMAGE%%`. Unless you are working in an environment where *only* the `%%IMAGE%%` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + +When using this image `pip install` will work if a suitable built distribution is available for the Python distribution package being installed. `pip install` may fail when installing a Python distribution package from a source distribution. This image does not contain the Debian packages required to compile extension modules written in other languages. Possible solutions if a `pip install` fails include: + +- Use this image and install any required Debian packages before running `pip install`. +- Use the default image of this repository. The default image contains the most commonly required Debian packages. The majority of arbitrary `pip install`s should be successful without additional header/development Debian packages. diff --git a/r-base/README.md b/r-base/README.md index 396db1c9e598..0824fd4adba7 100644 --- a/r-base/README.md +++ b/r-base/README.md @@ -24,7 +24,7 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`4.2.2`, `latest`](https://github.com/rocker-org/rocker/blob/2f92c6c8b8da7b3e61aabc44cacc0439bf267d31/r-base/4.2.2/Dockerfile) +- [`4.5.2`, `latest`](https://github.com/rocker-org/rocker/blob/446076ee8e7dc3a18bad99b84737af9dd28f0231/r-base/4.5.2/Dockerfile) # Quick reference (cont.) diff --git a/r-base/metadata.json b/r-base/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/r-base/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/rabbitmq/README.md b/rabbitmq/README.md index 961c858707be..607d157b4410 100644 --- a/rabbitmq/README.md +++ b/rabbitmq/README.md @@ -24,23 +24,42 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.11.6`, `3.11`, `3`, `latest`](https://github.com/docker-library/rabbitmq/blob/a74a786356f12d59b2b19cfe0b1c9d1c78bb6f9c/3.11/ubuntu/Dockerfile) -- [`3.11.6-management`, `3.11-management`, `3-management`, `management`](https://github.com/docker-library/rabbitmq/blob/65eb19295b7975c4614d6071fb3fc6a1b86282a1/3.11/ubuntu/management/Dockerfile) -- [`3.11.6-alpine`, `3.11-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/rabbitmq/blob/a74a786356f12d59b2b19cfe0b1c9d1c78bb6f9c/3.11/alpine/Dockerfile) -- [`3.11.6-management-alpine`, `3.11-management-alpine`, `3-management-alpine`, `management-alpine`](https://github.com/docker-library/rabbitmq/blob/65eb19295b7975c4614d6071fb3fc6a1b86282a1/3.11/alpine/management/Dockerfile) -- [`3.10.13`, `3.10`](https://github.com/docker-library/rabbitmq/blob/5d66324218c46b8e2f80487086972d24ccfae9bb/3.10/ubuntu/Dockerfile) -- [`3.10.13-management`, `3.10-management`](https://github.com/docker-library/rabbitmq/blob/6e226fe8e99702c8726d5e7d5c5864e69548048d/3.10/ubuntu/management/Dockerfile) -- [`3.10.13-alpine`, `3.10-alpine`](https://github.com/docker-library/rabbitmq/blob/5d66324218c46b8e2f80487086972d24ccfae9bb/3.10/alpine/Dockerfile) -- [`3.10.13-management-alpine`, `3.10-management-alpine`](https://github.com/docker-library/rabbitmq/blob/6e226fe8e99702c8726d5e7d5c5864e69548048d/3.10/alpine/management/Dockerfile) -- [`3.9.27`, `3.9`](https://github.com/docker-library/rabbitmq/blob/878cc31eaf717b98193d8a45113720ecd667a486/3.9/ubuntu/Dockerfile) -- [`3.9.27-management`, `3.9-management`](https://github.com/docker-library/rabbitmq/blob/b07819f873e5a68b2bb54e01f0caa41c26b277f3/3.9/ubuntu/management/Dockerfile) -- [`3.9.27-alpine`, `3.9-alpine`](https://github.com/docker-library/rabbitmq/blob/878cc31eaf717b98193d8a45113720ecd667a486/3.9/alpine/Dockerfile) -- [`3.9.27-management-alpine`, `3.9-management-alpine`](https://github.com/docker-library/rabbitmq/blob/b07819f873e5a68b2bb54e01f0caa41c26b277f3/3.9/alpine/management/Dockerfile) +- [`4.2.0`, `4.2`, `4`, `latest`](https://github.com/docker-library/rabbitmq/blob/e2e98a1455556c30fdbe06bc473c7decc2e8c9bc/4.2/ubuntu/Dockerfile) + +- [`4.2.0-management`, `4.2-management`, `4-management`, `management`](https://github.com/docker-library/rabbitmq/blob/6b8d927a4f6a170d0cf962a2dd796815b19c05c3/4.2/ubuntu/management/Dockerfile) + +- [`4.2.0-alpine`, `4.2-alpine`, `4-alpine`, `alpine`](https://github.com/docker-library/rabbitmq/blob/e2e98a1455556c30fdbe06bc473c7decc2e8c9bc/4.2/alpine/Dockerfile) + +- [`4.2.0-management-alpine`, `4.2-management-alpine`, `4-management-alpine`, `management-alpine`](https://github.com/docker-library/rabbitmq/blob/6b8d927a4f6a170d0cf962a2dd796815b19c05c3/4.2/alpine/management/Dockerfile) + +- [`4.1.5`, `4.1`](https://github.com/docker-library/rabbitmq/blob/b37c78e851e896c0eefc9bb2c04804b822825afa/4.1/ubuntu/Dockerfile) + +- [`4.1.5-management`, `4.1-management`](https://github.com/docker-library/rabbitmq/blob/01055a3ed6f0a7a40d4ff1d17d3f0758039e431f/4.1/ubuntu/management/Dockerfile) + +- [`4.1.5-alpine`, `4.1-alpine`](https://github.com/docker-library/rabbitmq/blob/b37c78e851e896c0eefc9bb2c04804b822825afa/4.1/alpine/Dockerfile) + +- [`4.1.5-management-alpine`, `4.1-management-alpine`](https://github.com/docker-library/rabbitmq/blob/01055a3ed6f0a7a40d4ff1d17d3f0758039e431f/4.1/alpine/management/Dockerfile) + +- [`4.0.9`, `4.0`](https://github.com/docker-library/rabbitmq/blob/e923d38095a4913a11e00adcbd7afb2aef4844be/4.0/ubuntu/Dockerfile) + +- [`4.0.9-management`, `4.0-management`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/4.0/ubuntu/management/Dockerfile) + +- [`4.0.9-alpine`, `4.0-alpine`](https://github.com/docker-library/rabbitmq/blob/e923d38095a4913a11e00adcbd7afb2aef4844be/4.0/alpine/Dockerfile) + +- [`4.0.9-management-alpine`, `4.0-management-alpine`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/4.0/alpine/management/Dockerfile) + +- [`3.13.7`, `3.13`, `3`](https://github.com/docker-library/rabbitmq/blob/ba1e99fb4717867192f14e283fa40c893c501275/3.13/ubuntu/Dockerfile) + +- [`3.13.7-management`, `3.13-management`, `3-management`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/3.13/ubuntu/management/Dockerfile) + +- [`3.13.7-alpine`, `3.13-alpine`, `3-alpine`](https://github.com/docker-library/rabbitmq/blob/ba1e99fb4717867192f14e283fa40c893c501275/3.13/alpine/Dockerfile) + +- [`3.13.7-management-alpine`, `3.13-management-alpine`, `3-management-alpine`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/3.13/alpine/management/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/rabbitmq/issues](https://github.com/docker-library/rabbitmq/issues) + [https://github.com/docker-library/rabbitmq/issues](https://github.com/docker-library/rabbitmq/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/rabbitmq/), [`arm32v6`](https://hub.docker.com/r/arm32v6/rabbitmq/), [`arm32v7`](https://hub.docker.com/r/arm32v7/rabbitmq/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rabbitmq/), [`i386`](https://hub.docker.com/r/i386/rabbitmq/), [`ppc64le`](https://hub.docker.com/r/ppc64le/rabbitmq/), [`riscv64`](https://hub.docker.com/r/riscv64/rabbitmq/), [`s390x`](https://hub.docker.com/r/s390x/rabbitmq/) @@ -146,7 +165,7 @@ For example, you can provide the cookie via a file (such as with [Docker Secrets docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... rabbitmq ``` -(Note that it will likely also be necessary to specify `uid=XXX,gid=XXX,mode=0600` in order for Erlang in the container to be able to read the cookie file properly. See [Docker's `--secret` documentation for more details](https://docs.docker.com/engine/reference/commandline/service_create/#create-a-service-with-secrets).) +(Note that it will likely also be necessary to specify `uid=XXX,gid=XXX,mode=0600` in order for Erlang in the container to be able to read the cookie file properly. See [Docker's `--secret` documentation for more details](https://docs.docker.com/reference/cli/docker/service/create/#secret).) ### Management Plugin diff --git a/rabbitmq/content.md b/rabbitmq/content.md index 268b74529d12..c95e8217849a 100644 --- a/rabbitmq/content.md +++ b/rabbitmq/content.md @@ -88,7 +88,7 @@ For example, you can provide the cookie via a file (such as with [Docker Secrets docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... %%IMAGE%% ``` -(Note that it will likely also be necessary to specify `uid=XXX,gid=XXX,mode=0600` in order for Erlang in the container to be able to read the cookie file properly. See [Docker's `--secret` documentation for more details](https://docs.docker.com/engine/reference/commandline/service_create/#create-a-service-with-secrets).) +(Note that it will likely also be necessary to specify `uid=XXX,gid=XXX,mode=0600` in order for Erlang in the container to be able to read the cookie file properly. See [Docker's `--secret` documentation for more details](https://docs.docker.com/reference/cli/docker/service/create/#secret).) ### Management Plugin diff --git a/rabbitmq/metadata.json b/rabbitmq/metadata.json new file mode 100644 index 000000000000..66ae22756c7e --- /dev/null +++ b/rabbitmq/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "message-queues" + ] + } +} diff --git a/rakudo-star/README.md b/rakudo-star/README.md index 093be35449dd..69446e03e95d 100644 --- a/rakudo-star/README.md +++ b/rakudo-star/README.md @@ -24,13 +24,16 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`latest`, `2022.12`](https://github.com/Raku/docker/blob/65c49addd32f616805979c6d3572f846f303a505/2022.12/bullseye/Dockerfile) -- [`alpine`, `2022.12-alpine`](https://github.com/Raku/docker/blob/65c49addd32f616805979c6d3572f846f303a505/2022.12/alpine3.17/Dockerfile) +- [`trixie`, `2025.10-trixie`, `latest`](https://github.com/rakudo/docker/blob/2d29409b26ad70c7f3e6fbf8391ff82cc62920f2/2025.10/trixie/Dockerfile) + +- [`bookworm`, `2025.10-bookworm`](https://github.com/rakudo/docker/blob/2d29409b26ad70c7f3e6fbf8391ff82cc62920f2/2025.10/bookworm/Dockerfile) + +- [`alpine`, `2025.10-alpine`](https://github.com/rakudo/docker/blob/2d29409b26ad70c7f3e6fbf8391ff82cc62920f2/2025.10/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/Raku/docker/issues](https://github.com/Raku/docker/issues) + [https://github.com/Raku/docker/issues](https://github.com/Raku/docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/rakudo-star/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rakudo-star/) @@ -88,6 +91,8 @@ The `rakudo-star` images come in many flavors, each designed for a specific use This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. + ## `rakudo-star:-alpine` This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. diff --git a/rakudo-star/metadata.json b/rakudo-star/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/rakudo-star/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/redis/README-short.txt b/redis/README-short.txt index 8d7defc5af63..0548c88f5e46 100644 --- a/redis/README-short.txt +++ b/redis/README-short.txt @@ -1 +1 @@ -Redis is an open source key-value store that functions as a data structure server. +Redis is the world’s fastest data platform for caching, vector search, and NoSQL databases. diff --git a/redis/README.md b/redis/README.md index b5511e0df734..b88587a408bc 100644 --- a/redis/README.md +++ b/redis/README.md @@ -17,27 +17,44 @@ WARNING: # Quick reference - **Maintained by**: - [the Docker Community](https://github.com/docker-library/redis) + [Redis LTD](https://redis.io/) - **Where to get help**: [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`7.0.7`, `7.0`, `7`, `latest`, `7.0.7-bullseye`, `7.0-bullseye`, `7-bullseye`, `bullseye`](https://github.com/docker-library/redis/blob/fba559d5d2ac21c7c07e0bfeba6c29cceb346689/7.0/Dockerfile) -- [`7.0.7-alpine`, `7.0-alpine`, `7-alpine`, `alpine`, `7.0.7-alpine3.17`, `7.0-alpine3.17`, `7-alpine3.17`, `alpine3.17`](https://github.com/docker-library/redis/blob/fba559d5d2ac21c7c07e0bfeba6c29cceb346689/7.0/alpine/Dockerfile) -- [`6.2.8`, `6.2`, `6`, `6.2.8-bullseye`, `6.2-bullseye`, `6-bullseye`](https://github.com/docker-library/redis/blob/e85942db00480a10a51be0971acd4b849223132d/6.2/Dockerfile) -- [`6.2.8-alpine`, `6.2-alpine`, `6-alpine`, `6.2.8-alpine3.17`, `6.2-alpine3.17`, `6-alpine3.17`](https://github.com/docker-library/redis/blob/e85942db00480a10a51be0971acd4b849223132d/6.2/alpine/Dockerfile) -- [`6.0.16`, `6.0`, `6.0.16-bullseye`, `6.0-bullseye`](https://github.com/docker-library/redis/blob/0f2bb676ab5153905089537230a732a77d26e438/6.0/Dockerfile) -- [`6.0.16-alpine`, `6.0-alpine`, `6.0.16-alpine3.17`, `6.0-alpine3.17`](https://github.com/docker-library/redis/blob/268eb1aee47ca9c7dc8913b4e8007a2c7391f5b6/6.0/alpine/Dockerfile) +- [`8.4-rc1`, `8.4-rc1-bookworm`](https://github.com/redis/docker-library-redis/blob/47386b7d1129abbe0f2ccc745903da1613977c79/debian/Dockerfile) + +- [`8.4-rc1-alpine`, `8.4-rc1-alpine3.22`](https://github.com/redis/docker-library-redis/blob/47386b7d1129abbe0f2ccc745903da1613977c79/alpine/Dockerfile) + +- [`8.2.3`, `8.2`, `8`, `8.2.3-bookworm`, `8.2-bookworm`, `8-bookworm`, `latest`, `bookworm`](https://github.com/redis/docker-library-redis/blob/bcbc692165ce2241e194035041c5b5e01d2e1a5f/debian/Dockerfile) + +- [`8.2.3-alpine`, `8.2-alpine`, `8-alpine`, `8.2.3-alpine3.22`, `8.2-alpine3.22`, `8-alpine3.22`, `alpine`, `alpine3.22`](https://github.com/redis/docker-library-redis/blob/bcbc692165ce2241e194035041c5b5e01d2e1a5f/alpine/Dockerfile) + +- [`8.0.5`, `8.0`, `8.0.5-bookworm`, `8.0-bookworm`](https://github.com/redis/docker-library-redis/blob/32adf916e545602f05e0bf031e789ab72012cf38/debian/Dockerfile) + +- [`8.0.5-alpine`, `8.0-alpine`, `8.0.5-alpine3.21`, `8.0-alpine3.21`](https://github.com/redis/docker-library-redis/blob/32adf916e545602f05e0bf031e789ab72012cf38/alpine/Dockerfile) + +- [`7.4.7`, `7.4`, `7`, `7.4.7-bookworm`, `7.4-bookworm`, `7-bookworm`](https://github.com/redis/docker-library-redis/blob/d42d7aec93b1c54dd46f37a66a92f62478456039/7.4/debian/Dockerfile) + +- [`7.4.7-alpine`, `7.4-alpine`, `7-alpine`, `7.4.7-alpine3.21`, `7.4-alpine3.21`, `7-alpine3.21`](https://github.com/redis/docker-library-redis/blob/d42d7aec93b1c54dd46f37a66a92f62478456039/7.4/alpine/Dockerfile) + +- [`7.2.12`, `7.2`, `7.2.12-bookworm`, `7.2-bookworm`](https://github.com/redis/docker-library-redis/blob/d42d7aec93b1c54dd46f37a66a92f62478456039/7.2/debian/Dockerfile) + +- [`7.2.12-alpine`, `7.2-alpine`, `7.2.12-alpine3.21`, `7.2-alpine3.21`](https://github.com/redis/docker-library-redis/blob/d42d7aec93b1c54dd46f37a66a92f62478456039/7.2/alpine/Dockerfile) + +- [`6.2.21`, `6.2`, `6`, `6.2.21-bookworm`, `6.2-bookworm`, `6-bookworm`](https://github.com/redis/docker-library-redis/blob/d42d7aec93b1c54dd46f37a66a92f62478456039/6.2/debian/Dockerfile) + +- [`6.2.21-alpine`, `6.2-alpine`, `6-alpine`, `6.2.21-alpine3.21`, `6.2-alpine3.21`, `6-alpine3.21`](https://github.com/redis/docker-library-redis/blob/d42d7aec93b1c54dd46f37a66a92f62478456039/6.2/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/redis/issues](https://github.com/docker-library/redis/issues) + [https://github.com/redis/docker-library-redis/issues](https://github.com/redis/docker-library-redis/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/redis/), [`arm32v5`](https://hub.docker.com/r/arm32v5/redis/), [`arm32v6`](https://hub.docker.com/r/arm32v6/redis/), [`arm32v7`](https://hub.docker.com/r/arm32v7/redis/), [`arm64v8`](https://hub.docker.com/r/arm64v8/redis/), [`i386`](https://hub.docker.com/r/i386/redis/), [`mips64le`](https://hub.docker.com/r/mips64le/redis/), [`ppc64le`](https://hub.docker.com/r/ppc64le/redis/), [`s390x`](https://hub.docker.com/r/s390x/redis/) + [`amd64`](https://hub.docker.com/r/amd64/redis/), [`arm32v5`](https://hub.docker.com/r/arm32v5/redis/), [`arm32v6`](https://hub.docker.com/r/arm32v6/redis/), [`arm32v7`](https://hub.docker.com/r/arm32v7/redis/), [`arm64v8`](https://hub.docker.com/r/arm64v8/redis/), [`i386`](https://hub.docker.com/r/i386/redis/), [`mips64le`](https://hub.docker.com/r/mips64le/redis/), [`ppc64le`](https://hub.docker.com/r/ppc64le/redis/), [`riscv64`](https://hub.docker.com/r/riscv64/redis/), [`s390x`](https://hub.docker.com/r/s390x/redis/) - **Published image artifact details**: [repo-info repo's `repos/redis/` directory](https://github.com/docker-library/repo-info/blob/master/repos/redis) ([history](https://github.com/docker-library/repo-info/commits/master/repos/redis)) @@ -52,29 +69,35 @@ WARNING: # What is Redis? -Redis is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. +Redis is the world’s fastest data platform. It provides cloud and on-prem solutions for caching, vector search, and NoSQL databases that seamlessly fit into any tech stack—making it simple for digital customers to build, scale, and deploy the fast apps our world runs on. -> [wikipedia.org/wiki/Redis](https://en.wikipedia.org/wiki/Redis) +> [redis.io](https://redis.io) -![logo](https://raw.githubusercontent.com/docker-library/docs/01c12653951b2fe592c1f93a13b4e289ada0e3a1/redis/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/0e42ee108b46e1ba6333e9eb44201b8f26c4032d/redis/logo.png) # Security For the ease of accessing Redis from other containers via Docker networking, the "Protected mode" is turned off by default. This means that if you expose the port outside of your host (e.g., via `-p` on `docker run`), it will be open without a password to anyone. It is **highly** recommended to set a password (by supplying a config file) if you plan on exposing your Redis instance to the internet. For further information, see the following links about Redis security: -- [Redis documentation on security](https://redis.io/topics/security) -- [Protected mode](https://redis.io/topics/security#protected-mode) +- [Redis documentation on security](https://redis.io/docs/latest/operate/oss_and_stack/management/security/) +- [Protected mode](https://redis.io/docs/latest/operate/oss_and_stack/management/security/#protected-mode) - [A few things about Redis security by antirez](http://antirez.com/news/96) +## Process User and Privileges + +By default, the Redis Docker image drops privileges by switching to the redis user and removing unnecessary capabilities. This step is skipped if Docker is run with the `--user` option or if you set the `SKIP_DROP_PRIVS=1` (since 8.0.2) environment variable. + +Note: Using `SKIP_DROP_PRIVS` is not recommended, as it reduces the container's security. + # How to use this image -## start a redis instance +## Start a redis instance ```console $ docker run --name some-redis -d redis ``` -## start with persistent storage +## Start with persistent storage ```console $ docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning @@ -82,15 +105,29 @@ $ docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warn There are several different persistence strategies to choose from. This one will save a snapshot of the DB every 60 seconds if at least 1 write operation was performed (it will also lead to more logs, so the `loglevel` option may be desirable). If persistence is enabled, data is stored in the `VOLUME /data`, which can be used with `--volumes-from some-volume-container` or `-v /docker/host/dir:/data` (see [docs.docker volumes](https://docs.docker.com/engine/tutorials/dockervolumes/)). -For more about Redis Persistence, see [http://redis.io/topics/persistence](http://redis.io/topics/persistence). +For more about Redis persistence, see [the official Redis documentation](https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/). -## connecting via `redis-cli` +### File and Directory Permissions + +Redis will attempt to correct the ownership and permissions of the data and configuration (since 8.0.2) directories and files if they are not set correctly. This adjustment is only performed in basic, default scenarios to avoid interfering with custom or user-specific configurations. + +You can skip this step by setting the `SKIP_FIX_PERMS=1`(since 8.0.2) environment variable. + +### Manually Setting File and Directory Permissions + +If you prefer to handle file permissions yourself, you can use a `docker run` command to set the correct ownership on mounted volumes. For example: + +```console +$ docker run --rm -v /your/host/path:/data redis chown -R redis:redis /data +``` + +## Connecting via `redis-cli` ```console $ docker run -it --network some-network --rm redis redis-cli -h some-redis ``` -## Additionally, If you want to use your own redis.conf ... +## Additionally, if you want to use your own redis.conf ... You can create your own Dockerfile that adds a redis.conf from the context into /data/, like so. @@ -110,18 +147,6 @@ Where `/myredis/conf/` is a local directory containing your `redis.conf` file. U The mapped directory should be writable, as depending on the configuration and mode of operation, Redis may need to create additional configuration files or rewrite existing ones. -## `32bit` variant - -This variant is *not* a 32bit image (and will not run on 32bit hardware), but includes Redis compiled as a 32bit binary, especially for users who need the decreased memory requirements associated with that. See ["Using 32 bit instances"](http://redis.io/topics/memory-optimization#using-32-bit-instances) in the Redis documentation for more information. - -# Redis Modules - -You can find the list of modules for Redis on [redis.io](https://redis.io/modules) or on [redismodules.com](http://redismodules.com). A few of the standard modules can be found here: - -- [RediSearch](https://hub.docker.com/r/redislabs/redisearch/): Search and Query with Indexing on Redis -- [ReJSON](https://hub.docker.com/r/redislabs/rejson/): Extended JSON processing for Redis -- [ReBloom](https://hub.docker.com/r/redislabs/rebloom/): Bloom Filters data type for membership/existence search on Redis - # Image Variants The `redis` images come in many flavors, each designed for a specific use case. @@ -130,7 +155,7 @@ The `redis` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `redis:-alpine` @@ -142,7 +167,9 @@ To minimize image size, it's uncommon for additional related tools (such as `git # License -View [license information](http://redis.io/topics/license) for the software contained in this image. +Starting with Redis 8.0, Redis follows a tri-licensing model with the choice of the [Redis Source Available License v2 - RSALv2](https://redis.io/legal/rsalv2-agreement/), [Server Side Public License v1 - SSPLv1](https://redis.io/legal/server-side-public-license-sspl/), or the [GNU Affero General Public License v3 - AGPLv3](https://opensource.org/license/agpl-v3). Prior versions of Redis (<=7.2.4) are licensed under [3-Clause BSD](https://opensource.org/license/bsd-3-clause)⁠, and Redis 7.4.x-7.8.x are licensed under the dual [RSALv2](https://redis.io/legal/rsalv2-agreement/) or [SSPLv1](https://redis.io/legal/server-side-public-license-sspl/) license. + +Please also view the [Redis License Overview](https://redis.io/legal/licenses/) and the [Redis Trademark Policy](https://redis.io/legal/trademark-policy/). As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/redis/content.md b/redis/content.md index f251509ff5ee..ccd86f1b87a6 100644 --- a/redis/content.md +++ b/redis/content.md @@ -1,8 +1,8 @@ # What is Redis? -Redis is an open-source, networked, in-memory, key-value data store with optional durability. It is written in ANSI C. The development of Redis is sponsored by Redis Labs today; before that, it was sponsored by Pivotal and VMware. According to the monthly ranking by DB-Engines.com, Redis is the most popular key-value store. The name Redis means REmote DIctionary Server. +Redis is the world’s fastest data platform. It provides cloud and on-prem solutions for caching, vector search, and NoSQL databases that seamlessly fit into any tech stack—making it simple for digital customers to build, scale, and deploy the fast apps our world runs on. -> [wikipedia.org/wiki/Redis](https://en.wikipedia.org/wiki/Redis) +> [redis.io](https://redis.io) %%LOGO%% @@ -10,19 +10,25 @@ Redis is an open-source, networked, in-memory, key-value data store with optiona For the ease of accessing Redis from other containers via Docker networking, the "Protected mode" is turned off by default. This means that if you expose the port outside of your host (e.g., via `-p` on `docker run`), it will be open without a password to anyone. It is **highly** recommended to set a password (by supplying a config file) if you plan on exposing your Redis instance to the internet. For further information, see the following links about Redis security: -- [Redis documentation on security](https://redis.io/topics/security) -- [Protected mode](https://redis.io/topics/security#protected-mode) +- [Redis documentation on security](https://redis.io/docs/latest/operate/oss_and_stack/management/security/) +- [Protected mode](https://redis.io/docs/latest/operate/oss_and_stack/management/security/#protected-mode) - [A few things about Redis security by antirez](http://antirez.com/news/96) +## Process User and Privileges + +By default, the Redis Docker image drops privileges by switching to the redis user and removing unnecessary capabilities. This step is skipped if Docker is run with the `--user` option or if you set the `SKIP_DROP_PRIVS=1` (since 8.0.2) environment variable. + +Note: Using `SKIP_DROP_PRIVS` is not recommended, as it reduces the container's security. + # How to use this image -## start a redis instance +## Start a redis instance ```console $ docker run --name some-redis -d %%IMAGE%% ``` -## start with persistent storage +## Start with persistent storage ```console $ docker run --name some-redis -d %%IMAGE%% redis-server --save 60 1 --loglevel warning @@ -30,15 +36,29 @@ $ docker run --name some-redis -d %%IMAGE%% redis-server --save 60 1 --loglevel There are several different persistence strategies to choose from. This one will save a snapshot of the DB every 60 seconds if at least 1 write operation was performed (it will also lead to more logs, so the `loglevel` option may be desirable). If persistence is enabled, data is stored in the `VOLUME /data`, which can be used with `--volumes-from some-volume-container` or `-v /docker/host/dir:/data` (see [docs.docker volumes](https://docs.docker.com/engine/tutorials/dockervolumes/)). -For more about Redis Persistence, see [http://redis.io/topics/persistence](http://redis.io/topics/persistence). +For more about Redis persistence, see [the official Redis documentation](https://redis.io/docs/latest/operate/oss_and_stack/management/persistence/). + +### File and Directory Permissions + +Redis will attempt to correct the ownership and permissions of the data and configuration (since 8.0.2) directories and files if they are not set correctly. This adjustment is only performed in basic, default scenarios to avoid interfering with custom or user-specific configurations. + +You can skip this step by setting the `SKIP_FIX_PERMS=1`(since 8.0.2) environment variable. + +### Manually Setting File and Directory Permissions + +If you prefer to handle file permissions yourself, you can use a `docker run` command to set the correct ownership on mounted volumes. For example: -## connecting via `redis-cli` +```console +$ docker run --rm -v /your/host/path:/data %%IMAGE%% chown -R redis:redis /data +``` + +## Connecting via `redis-cli` ```console $ docker run -it --network some-network --rm %%IMAGE%% redis-cli -h some-redis ``` -## Additionally, If you want to use your own redis.conf ... +## Additionally, if you want to use your own redis.conf ... You can create your own Dockerfile that adds a redis.conf from the context into /data/, like so. @@ -57,15 +77,3 @@ $ docker run -v /myredis/conf:/usr/local/etc/redis --name myredis %%IMAGE%% redi Where `/myredis/conf/` is a local directory containing your `redis.conf` file. Using this method means that there is no need for you to have a Dockerfile for your redis container. The mapped directory should be writable, as depending on the configuration and mode of operation, Redis may need to create additional configuration files or rewrite existing ones. - -## `32bit` variant - -This variant is *not* a 32bit image (and will not run on 32bit hardware), but includes Redis compiled as a 32bit binary, especially for users who need the decreased memory requirements associated with that. See ["Using 32 bit instances"](http://redis.io/topics/memory-optimization#using-32-bit-instances) in the Redis documentation for more information. - -# Redis Modules - -You can find the list of modules for Redis on [redis.io](https://redis.io/modules) or on [redismodules.com](http://redismodules.com). A few of the standard modules can be found here: - -- [RediSearch](https://hub.docker.com/r/redislabs/redisearch/): Search and Query with Indexing on Redis -- [ReJSON](https://hub.docker.com/r/redislabs/rejson/): Extended JSON processing for Redis -- [ReBloom](https://hub.docker.com/r/redislabs/rebloom/): Bloom Filters data type for membership/existence search on Redis diff --git a/redis/github-repo b/redis/github-repo index efe72763d478..4d13a7aeccad 100644 --- a/redis/github-repo +++ b/redis/github-repo @@ -1 +1 @@ -https://github.com/docker-library/redis +https://github.com/redis/docker-library-redis diff --git a/redis/license.md b/redis/license.md index 74cc4cc6ce3e..1343cbf6abc7 100644 --- a/redis/license.md +++ b/redis/license.md @@ -1 +1,3 @@ -View [license information](http://redis.io/topics/license) for the software contained in this image. +Starting with Redis 8.0, Redis follows a tri-licensing model with the choice of the [Redis Source Available License v2 - RSALv2](https://redis.io/legal/rsalv2-agreement/), [Server Side Public License v1 - SSPLv1](https://redis.io/legal/server-side-public-license-sspl/), or the [GNU Affero General Public License v3 - AGPLv3](https://opensource.org/license/agpl-v3). Prior versions of Redis (<=7.2.4) are licensed under [3-Clause BSD](https://opensource.org/license/bsd-3-clause)⁠, and Redis 7.4.x-7.8.x are licensed under the dual [RSALv2](https://redis.io/legal/rsalv2-agreement/) or [SSPLv1](https://redis.io/legal/server-side-public-license-sspl/) license. + +Please also view the [Redis License Overview](https://redis.io/legal/licenses/) and the [Redis Trademark Policy](https://redis.io/legal/trademark-policy/). diff --git a/redis/logo.png b/redis/logo.png index 36e37ca033ce..67e296119578 100644 Binary files a/redis/logo.png and b/redis/logo.png differ diff --git a/redis/maintainer.md b/redis/maintainer.md deleted file mode 120000 index e727ff0696ae..000000000000 --- a/redis/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-community.md \ No newline at end of file diff --git a/redis/maintainer.md b/redis/maintainer.md new file mode 100644 index 000000000000..d1e3d7a407c8 --- /dev/null +++ b/redis/maintainer.md @@ -0,0 +1 @@ +[Redis LTD](https://redis.io/) diff --git a/redis/metadata.json b/redis/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/redis/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/redmine/README.md b/redmine/README.md index de195e471616..ab7c4d4f23be 100644 --- a/redmine/README.md +++ b/redmine/README.md @@ -24,19 +24,37 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.0.4`, `5.0`, `5`, `latest`, `5.0.4-bullseye`, `5.0-bullseye`, `5-bullseye`, `bullseye`](https://github.com/docker-library/redmine/blob/8749011cf59188062efd880e64cd69e800e1d447/5.0/Dockerfile) -- [`5.0.4-alpine`, `5.0-alpine`, `5-alpine`, `alpine`, `5.0.4-alpine3.16`, `5.0-alpine3.16`, `5-alpine3.16`, `alpine3.16`](https://github.com/docker-library/redmine/blob/8749011cf59188062efd880e64cd69e800e1d447/5.0/alpine/Dockerfile) -- [`4.2.9`, `4.2`, `4`, `4.2.9-bullseye`, `4.2-bullseye`, `4-bullseye`](https://github.com/docker-library/redmine/blob/6ba68a3fdcc615faab7fa8e32e7b3bf8247a5fb8/4.2/Dockerfile) -- [`4.2.9-passenger`, `4.2-passenger`, `4-passenger`](https://github.com/docker-library/redmine/blob/79ca73df39c04878fb0d1e00401d3e790e1973b6/4.2/passenger/Dockerfile) -- [`4.2.9-alpine`, `4.2-alpine`, `4-alpine`, `4.2.9-alpine3.16`, `4.2-alpine3.16`, `4-alpine3.16`](https://github.com/docker-library/redmine/blob/6ba68a3fdcc615faab7fa8e32e7b3bf8247a5fb8/4.2/alpine/Dockerfile) +- [`6.1.0`, `6.1`, `6`, `latest`, `6.1.0-trixie`, `6.1-trixie`, `6-trixie`, `trixie`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.1/trixie/Dockerfile) + +- [`6.1.0-bookworm`, `6.1-bookworm`, `6-bookworm`, `bookworm`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.1/bookworm/Dockerfile) + +- [`6.1.0-alpine3.22`, `6.1-alpine3.22`, `6-alpine3.22`, `alpine3.22`, `6.1.0-alpine`, `6.1-alpine`, `6-alpine`, `alpine`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.1/alpine3.22/Dockerfile) + +- [`6.1.0-alpine3.21`, `6.1-alpine3.21`, `6-alpine3.21`, `alpine3.21`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.1/alpine3.21/Dockerfile) + +- [`6.0.7`, `6.0`, `6.0.7-trixie`, `6.0-trixie`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.0/trixie/Dockerfile) + +- [`6.0.7-bookworm`, `6.0-bookworm`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.0/bookworm/Dockerfile) + +- [`6.0.7-alpine3.22`, `6.0-alpine3.22`, `6.0.7-alpine`, `6.0-alpine`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.0/alpine3.22/Dockerfile) + +- [`6.0.7-alpine3.21`, `6.0-alpine3.21`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/6.0/alpine3.21/Dockerfile) + +- [`5.1.10`, `5.1`, `5`, `5.1.10-trixie`, `5.1-trixie`, `5-trixie`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/5.1/trixie/Dockerfile) + +- [`5.1.10-bookworm`, `5.1-bookworm`, `5-bookworm`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/5.1/bookworm/Dockerfile) + +- [`5.1.10-alpine3.22`, `5.1-alpine3.22`, `5-alpine3.22`, `5.1.10-alpine`, `5.1-alpine`, `5-alpine`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/5.1/alpine3.22/Dockerfile) + +- [`5.1.10-alpine3.21`, `5.1-alpine3.21`, `5-alpine3.21`](https://github.com/docker-library/redmine/blob/01d5e42cea07875240d7a6f4f6b3a1e13fdcf411/5.1/alpine3.21/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/redmine/issues](https://github.com/docker-library/redmine/issues) + [https://github.com/docker-library/redmine/issues](https://github.com/docker-library/redmine/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/redmine/), [`arm32v5`](https://hub.docker.com/r/arm32v5/redmine/), [`arm32v6`](https://hub.docker.com/r/arm32v6/redmine/), [`arm32v7`](https://hub.docker.com/r/arm32v7/redmine/), [`arm64v8`](https://hub.docker.com/r/arm64v8/redmine/), [`i386`](https://hub.docker.com/r/i386/redmine/), [`ppc64le`](https://hub.docker.com/r/ppc64le/redmine/), [`s390x`](https://hub.docker.com/r/s390x/redmine/) + [`amd64`](https://hub.docker.com/r/amd64/redmine/), [`arm32v5`](https://hub.docker.com/r/arm32v5/redmine/), [`arm32v6`](https://hub.docker.com/r/arm32v6/redmine/), [`arm32v7`](https://hub.docker.com/r/arm32v7/redmine/), [`arm64v8`](https://hub.docker.com/r/arm64v8/redmine/), [`i386`](https://hub.docker.com/r/i386/redmine/), [`mips64le`](https://hub.docker.com/r/mips64le/redmine/), [`ppc64le`](https://hub.docker.com/r/ppc64le/redmine/), [`riscv64`](https://hub.docker.com/r/riscv64/redmine/), [`s390x`](https://hub.docker.com/r/s390x/redmine/) - **Published image artifact details**: [repo-info repo's `repos/redmine/` directory](https://github.com/docker-library/repo-info/blob/master/repos/redmine) ([history](https://github.com/docker-library/repo-info/commits/master/repos/redmine)) @@ -93,13 +111,11 @@ Running Redmine with a database server is the recommended way. $ docker run -d --name some-redmine --network some-network -e REDMINE_DB_POSTGRES=some-postgres -e REDMINE_DB_USERNAME=redmine -e REDMINE_DB_PASSWORD=secret redmine ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `redmine`: +Example `compose.yaml` for `redmine`: ```yaml -version: '3.1' - services: redmine: @@ -113,20 +129,14 @@ services: REDMINE_SECRET_KEY_BASE: supersecretkey db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: redmine ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/cd78c2e058c5a648c0ef42590943736612332666/redmine/stack.yml) - -Run `docker stack deploy -c stack.yml redmine` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). - -## Alternative Web Server - -The other tags in this repository, like those with `passenger`, use the same environment and `--links` as the default tags that use Puma (`rails server`) but instead give you the option of a different web and application server. `passenger` uses [Phusion Passenger](https://www.phusionpassenger.com/). [`tini`](https://github.com/krallin/tini) is used for reaping [zombies](https://en.wikipedia.org/wiki/Zombie_process). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Accessing the Application @@ -136,8 +146,8 @@ Currently, the default user and password from upstream is admin/admin ([logging Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `redmine` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your files [by writing the files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your files [by writing the files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -194,25 +204,15 @@ This variable allows you to control if `rake redmine:plugins:migrate` is run on `redmine:plugins:migrate` will not run if you start your image with something other than the default `CMD`, like `bash`. See the current `docker-entrypoint.sh` in your image for details. -### `REDMINE_SECRET_KEY_BASE` - -This variable is required when using Docker Swarm replicas to maintain session connections when being loadbalanced between containers. It will create an initial `config/secrets.yml` and set the `secret_key_base` value, which is "used by Rails to encode cookies storing session data thus preventing their tampering. Generating a new secret token invalidates all existing sessions after restart" ([session store](https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-5-Session-store-secret-generation)). If you do not set this variable or provide a `secrets.yml` one will be generated using `rake generate_secret_token`. +### `SECRET_KEY_BASE` -## Running as an arbitrary user - -For running Redmine without Phusion Passenger you can simply use the [`--user`](https://docs.docker.com/engine/reference/run/#user) flag to `docker run` and give it a `username:group` or `UID:GID`, the user doesn't need to exist in the container - -For running the `redmine:passenger` variant as an arbitrary user you will however need the user to exist in `/etc/passwd`. Here are a few examples for doing that: +This is a general Rails environment variable. This variable is useful when using loadbalanced replicas to maintain session connections. It is "used by Rails to encode cookies storing session data thus preventing their tampering. Generating a new secret token invalidates all existing sessions after restart" ([session store](https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-5-Session-store-secret-generation)). If you do not set this variable, then the `secret_key_base` value will be generated using `rake generate_secret_token`. -1. Create the user on your host and mount `/etc/passwd:/etc/passwd:ro` +For backwards compatibility, the deprecated, Docker-specific `REDMINE_SECRET_KEY_BASE` variable will automatically fill the `SECRET_KEY_BASE` environment variable. Users should migrate their deployments to use the `SECRET_KEY_BASE` variable directly. -2. Create a Dockerfile `FROM redmine:passenger` and include something like [`RUN groupadd -r group && useradd --no-log-init -r -g group user`](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) +## Running as an arbitrary user - ```dockerfile - FROM redmine:passenger - RUN groupadd -r group && useradd --no-log-init -r -g group user - USER user - ``` +You can use the [`--user`](https://docs.docker.com/engine/reference/run/#user) flag to `docker run` and give it a `username:group` or `UID:GID`, the user doesn't need to exist in the container. ## Docker Secrets @@ -232,7 +232,7 @@ The `redmine` images come in many flavors, each designed for a specific use case This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `redmine:-alpine` diff --git a/redmine/stack.yml b/redmine/compose.yaml similarity index 89% rename from redmine/stack.yml rename to redmine/compose.yaml index 5cfe77710c4e..64ed42bb0603 100644 --- a/redmine/stack.yml +++ b/redmine/compose.yaml @@ -1,5 +1,3 @@ -version: '3.1' - services: redmine: @@ -13,7 +11,7 @@ services: REDMINE_SECRET_KEY_BASE: supersecretkey db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: example diff --git a/redmine/content.md b/redmine/content.md index feb4bb3f15c5..2d49551e9d5d 100644 --- a/redmine/content.md +++ b/redmine/content.md @@ -42,13 +42,9 @@ Running Redmine with a database server is the recommended way. $ docker run -d --name some-%%REPO%% --network some-network -e REDMINE_DB_POSTGRES=some-postgres -e REDMINE_DB_USERNAME=redmine -e REDMINE_DB_PASSWORD=secret %%IMAGE%% ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). - -## Alternative Web Server - -The other tags in this repository, like those with `passenger`, use the same environment and `--links` as the default tags that use Puma (`rails server`) but instead give you the option of a different web and application server. `passenger` uses [Phusion Passenger](https://www.phusionpassenger.com/). [`tini`](https://github.com/krallin/tini) is used for reaping [zombies](https://en.wikipedia.org/wiki/Zombie_process). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Accessing the Application @@ -58,8 +54,8 @@ Currently, the default user and password from upstream is admin/admin ([logging Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your files [by writing the files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your files [by writing the files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: @@ -116,25 +112,15 @@ This variable allows you to control if `rake redmine:plugins:migrate` is run on `redmine:plugins:migrate` will not run if you start your image with something other than the default `CMD`, like `bash`. See the current `docker-entrypoint.sh` in your image for details. -### `REDMINE_SECRET_KEY_BASE` - -This variable is required when using Docker Swarm replicas to maintain session connections when being loadbalanced between containers. It will create an initial `config/secrets.yml` and set the `secret_key_base` value, which is "used by Rails to encode cookies storing session data thus preventing their tampering. Generating a new secret token invalidates all existing sessions after restart" ([session store](https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-5-Session-store-secret-generation)). If you do not set this variable or provide a `secrets.yml` one will be generated using `rake generate_secret_token`. - -## Running as an arbitrary user - -For running Redmine without Phusion Passenger you can simply use the [`--user`](https://docs.docker.com/engine/reference/run/#user) flag to `docker run` and give it a `username:group` or `UID:GID`, the user doesn't need to exist in the container +### `SECRET_KEY_BASE` -For running the `redmine:passenger` variant as an arbitrary user you will however need the user to exist in `/etc/passwd`. Here are a few examples for doing that: +This is a general Rails environment variable. This variable is useful when using loadbalanced replicas to maintain session connections. It is "used by Rails to encode cookies storing session data thus preventing their tampering. Generating a new secret token invalidates all existing sessions after restart" ([session store](https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-5-Session-store-secret-generation)). If you do not set this variable, then the `secret_key_base` value will be generated using `rake generate_secret_token`. -1. Create the user on your host and mount `/etc/passwd:/etc/passwd:ro` +For backwards compatibility, the deprecated, Docker-specific `REDMINE_SECRET_KEY_BASE` variable will automatically fill the `SECRET_KEY_BASE` environment variable. Users should migrate their deployments to use the `SECRET_KEY_BASE` variable directly. -2. Create a Dockerfile `FROM redmine:passenger` and include something like [`RUN groupadd -r group && useradd --no-log-init -r -g group user`](https://docs.docker.com/develop/develop-images/dockerfile_best-practices/#user) +## Running as an arbitrary user - ```dockerfile - FROM redmine:passenger - RUN groupadd -r group && useradd --no-log-init -r -g group user - USER user - ``` +You can use the [`--user`](https://docs.docker.com/engine/reference/run/#user) flag to `docker run` and give it a `username:group` or `UID:GID`, the user doesn't need to exist in the container. ## Docker Secrets diff --git a/redmine/metadata.json b/redmine/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/redmine/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/registry/README-short.txt b/registry/README-short.txt index 228c924d4fea..e36e4f6e3437 100644 --- a/registry/README-short.txt +++ b/registry/README-short.txt @@ -1 +1 @@ -The Docker Registry 2.0 implementation for storing and distributing Docker images +Distribution implementation for storing and distributing of container images and artifacts diff --git a/registry/README.md b/registry/README.md index 25202c865833..3ea41bc6e25a 100644 --- a/registry/README.md +++ b/registry/README.md @@ -17,24 +17,22 @@ WARNING: # Quick reference - **Maintained by**: - [Docker, Inc.](https://github.com/docker/distribution-library-image) + [the Docker Community](https://github.com/distribution/distribution-library-image) - **Where to get help**: [CNCF community slack](https://slack.cncf.io/), or [Stack Overflow](https://stackoverflow.com/questions/tagged/docker+registry) -- **Need a free, secure hosted registry?** Try [Docker Hub](https://www.docker.com/pricing). - # Supported tags and respective `Dockerfile` links -- [`2.8.1`, `2.8`, `2`, `latest`](https://github.com/docker/distribution-library-image/blob/0be0d08b29d56bb1ef0fab93c751ca92d6976a19/Dockerfile) +- [`3.0.0`, `3.0`, `3`, `latest`](https://github.com/distribution/distribution-library-image/blob/f83883590f5afda69afafbc5aaa5fde3686f47cf/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker/distribution-library-image/issues](https://github.com/docker/distribution-library-image/issues) + [https://github.com/distribution/distribution-library-image/issues](https://github.com/distribution/distribution-library-image/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/registry/), [`arm32v6`](https://hub.docker.com/r/arm32v6/registry/), [`arm32v7`](https://hub.docker.com/r/arm32v7/registry/), [`arm64v8`](https://hub.docker.com/r/arm64v8/registry/), [`ppc64le`](https://hub.docker.com/r/ppc64le/registry/), [`s390x`](https://hub.docker.com/r/s390x/registry/) + [`amd64`](https://hub.docker.com/r/amd64/registry/), [`arm32v6`](https://hub.docker.com/r/arm32v6/registry/), [`arm32v7`](https://hub.docker.com/r/arm32v7/registry/), [`arm64v8`](https://hub.docker.com/r/arm64v8/registry/), [`ppc64le`](https://hub.docker.com/r/ppc64le/registry/), [`riscv64`](https://hub.docker.com/r/riscv64/registry/), [`s390x`](https://hub.docker.com/r/s390x/registry/) - **Published image artifact details**: [repo-info repo's `repos/registry/` directory](https://github.com/docker-library/repo-info/blob/master/repos/registry) ([history](https://github.com/docker-library/repo-info/commits/master/repos/registry)) @@ -51,12 +49,12 @@ WARNING: ![logo](https://raw.githubusercontent.com/docker-library/docs/b09c592af0d6061629e02e4f674d22848f8236e8/registry/logo.png) -This image contains an implementation of the Docker Registry HTTP API V2 for use with Docker 1.6+. See [github.com/distribution/distribution](https://github.com/distribution/distribution) for more details about what it is. +This image contains an implementation of the OCI Distribution spec. See [github.com/opencontainers/distribution-spec](https://github.com/opencontainers/distribution-spec) for more details about what it is. You can find the full source code in [github.com/distribution/distribution](https://github.com/distribution/distribution). ## Run a local registry: Quick Version ```console -$ docker run -d -p 5000:5000 --restart always --name registry registry:2 +$ docker run -d -p 5000:5000 --restart always --name registry registry:3 ``` Now, use it from within Docker: @@ -69,13 +67,13 @@ $ docker push localhost:5000/ubuntu ## Recommended Reading -The [documentation over at docs.docker.com](https://docs.docker.com/registry/) is a good place to learn more about what the registry is, how it works, and how to use it. +The [documentation](https://distribution.github.io/distribution/) is a good place to learn more about what the registry is, how it works, and how to use it. -Specifically, [the section regarding deployment](https://docs.docker.com/registry/deploying/) has pointers for more complex use cases than simply running a registry on localhost. +Specifically, [the section regarding deployment](https://distribution.github.io/distribution/about/deploying/) has pointers for more complex use cases than simply running a registry on localhost. # License -View [license information](https://github.com/docker/distribution/blob/master/LICENSE) for the software contained in this image. +View [license information](https://github.com/distribution/distribution/blob/master/LICENSE) for the software contained in this image. As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/registry/content.md b/registry/content.md index 1e37ab63a262..1250c1c5793b 100644 --- a/registry/content.md +++ b/registry/content.md @@ -2,12 +2,12 @@ %%LOGO%% -This image contains an implementation of the Docker Registry HTTP API V2 for use with Docker 1.6+. See [github.com/distribution/distribution](https://github.com/distribution/distribution) for more details about what it is. +This image contains an implementation of the OCI Distribution spec. See [github.com/opencontainers/distribution-spec](https://github.com/opencontainers/distribution-spec) for more details about what it is. You can find the full source code in [github.com/distribution/distribution](https://github.com/distribution/distribution). ## Run a local registry: Quick Version ```console -$ docker run -d -p 5000:5000 --restart always --name registry %%IMAGE%%:2 +$ docker run -d -p 5000:5000 --restart always --name registry %%IMAGE%%:3 ``` Now, use it from within Docker: @@ -20,6 +20,6 @@ $ docker push localhost:5000/ubuntu ## Recommended Reading -The [documentation over at docs.docker.com](https://docs.docker.com/registry/) is a good place to learn more about what the registry is, how it works, and how to use it. +The [documentation](https://distribution.github.io/distribution/) is a good place to learn more about what the registry is, how it works, and how to use it. -Specifically, [the section regarding deployment](https://docs.docker.com/registry/deploying/) has pointers for more complex use cases than simply running a registry on localhost. +Specifically, [the section regarding deployment](https://distribution.github.io/distribution/about/deploying/) has pointers for more complex use cases than simply running a registry on localhost. diff --git a/registry/get-help.md b/registry/get-help.md index 4d954e7f170c..b88107ba64e8 100644 --- a/registry/get-help.md +++ b/registry/get-help.md @@ -1,3 +1 @@ [CNCF community slack](https://slack.cncf.io/), or [Stack Overflow](https://stackoverflow.com/questions/tagged/docker+registry) - -- **Need a free, secure hosted registry?** Try [Docker Hub](https://www.docker.com/pricing). diff --git a/registry/github-repo b/registry/github-repo index c7a1ed75d470..a0a5cea5684e 100644 --- a/registry/github-repo +++ b/registry/github-repo @@ -1 +1 @@ -https://github.com/docker/distribution-library-image +https://github.com/distribution/distribution-library-image diff --git a/registry/license.md b/registry/license.md index 8ce5c18f7719..fc49421da5be 100644 --- a/registry/license.md +++ b/registry/license.md @@ -1 +1 @@ -View [license information](https://github.com/docker/distribution/blob/master/LICENSE) for the software contained in this image. +View [license information](https://github.com/distribution/distribution/blob/master/LICENSE) for the software contained in this image. diff --git a/registry/maintainer.md b/registry/maintainer.md index 617c4fb974a1..e727ff0696ae 120000 --- a/registry/maintainer.md +++ b/registry/maintainer.md @@ -1 +1 @@ -../.common-templates/maintainer-docker.md \ No newline at end of file +../.common-templates/maintainer-community.md \ No newline at end of file diff --git a/registry/metadata.json b/registry/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/registry/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/rethinkdb/README.md b/rethinkdb/README.md index f933a62b7c2e..34c9a8d353ed 100644 --- a/rethinkdb/README.md +++ b/rethinkdb/README.md @@ -24,12 +24,12 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`2.4.2-bullseye-slim`, `2.4-bullseye-slim`, `2-bullseye-slim`, `bullseye-slim`, `2.4.2`, `2.4`, `2`, `latest`](https://github.com/rethinkdb/rethinkdb-dockerfiles/blob/826a4193366e7d0ff176d101679385125b8fa4f1/bullseye/2.4.2/Dockerfile) +- [`2.4.4-bookworm-slim`, `2.4-bookworm-slim`, `2-bookworm-slim`, `bookworm-slim`, `2.4.3`, `2.4`, `2`, `latest`](https://github.com/rethinkdb/rethinkdb-dockerfiles/blob/48876a66c3be922c6b01c436bf78d662e53bceef/bookworm/2.4.4/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/rethinkdb/rethinkdb-dockerfiles/issues](https://github.com/rethinkdb/rethinkdb-dockerfiles/issues) + [https://github.com/rethinkdb/rethinkdb-dockerfiles/issues](https://github.com/rethinkdb/rethinkdb-dockerfiles/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/rethinkdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rethinkdb/), [`s390x`](https://hub.docker.com/r/s390x/rethinkdb/) @@ -102,7 +102,7 @@ The `rethinkdb` images come in many flavors, each designed for a specific use ca This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `rethinkdb:-slim` diff --git a/rethinkdb/metadata.json b/rethinkdb/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/rethinkdb/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/rocket.chat/README.md b/rocket.chat/README.md index c63e25f4da12..9e1d07f61f59 100644 --- a/rocket.chat/README.md +++ b/rocket.chat/README.md @@ -24,16 +24,24 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.4.0`, `5.4`, `5`, `latest`](https://github.com/RocketChat/Docker.Official.Image/blob/dbb5e8eb972d7a32f28e7bdc0b03d0d3c6f58d60/5.4/Dockerfile) -- [`5.3.5`, `5.3`](https://github.com/RocketChat/Docker.Official.Image/blob/dbb5e8eb972d7a32f28e7bdc0b03d0d3c6f58d60/5.3/Dockerfile) -- [`5.2.1`, `5.2`](https://github.com/RocketChat/Docker.Official.Image/blob/dbb5e8eb972d7a32f28e7bdc0b03d0d3c6f58d60/5.2/Dockerfile) -- [`5.1.5`, `5.1`](https://github.com/RocketChat/Docker.Official.Image/blob/dbb5e8eb972d7a32f28e7bdc0b03d0d3c6f58d60/5.1/Dockerfile) -- [`4.8.7`, `4.8`, `4`](https://github.com/RocketChat/Docker.Official.Image/blob/dbb5e8eb972d7a32f28e7bdc0b03d0d3c6f58d60/4.8/Dockerfile) +- [`7.12.1`, `7.12`, `7`, `latest`](https://github.com/RocketChat/Docker.Official.Image/blob/c673436d5d242050c176d666e62a9e6fe3ec2aa9/7.12/Dockerfile) + +- [`7.11.1`, `7.11`](https://github.com/RocketChat/Docker.Official.Image/blob/c673436d5d242050c176d666e62a9e6fe3ec2aa9/7.11/Dockerfile) + +- [`7.10.4`, `7.10`](https://github.com/RocketChat/Docker.Official.Image/blob/c673436d5d242050c176d666e62a9e6fe3ec2aa9/7.10/Dockerfile) + +- [`7.9.5`, `7.9`](https://github.com/RocketChat/Docker.Official.Image/blob/962b38b0911a42f671939098c7983897f1601521/7.9/Dockerfile) + +- [`7.8.4`, `7.8`](https://github.com/RocketChat/Docker.Official.Image/blob/dddaa7c23275b8514d1d994bdfabaafd510f0ebf/7.8/Dockerfile) + +- [`7.7.9`, `7.7`](https://github.com/RocketChat/Docker.Official.Image/blob/962b38b0911a42f671939098c7983897f1601521/7.7/Dockerfile) + +- [`7.6.6`, `7.6`](https://github.com/RocketChat/Docker.Official.Image/blob/962b38b0911a42f671939098c7983897f1601521/7.6/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/RocketChat/Docker.Official.Image/issues](https://github.com/RocketChat/Docker.Official.Image/issues) + [https://github.com/RocketChat/Docker.Official.Image/issues](https://github.com/RocketChat/Docker.Official.Image/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/rocket.chat/) diff --git a/rocket.chat/metadata.json b/rocket.chat/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/rocket.chat/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/rockylinux/README.md b/rockylinux/README.md index f1c7ba21fc2e..710780881650 100644 --- a/rockylinux/README.md +++ b/rockylinux/README.md @@ -14,6 +14,10 @@ WARNING: --> +# IMPORTANT NOTE + +The Docker team curates the Official Images program, and there are currently some technical constraints preventing Rocky Linux from publishing updates here. For the most up-to-date container images, please refer to the [Rocky Linux Docker Hub repository](https://hub.docker.com/r/rockylinux/rockylinux) for now. + # Quick reference - **Maintained by**: @@ -24,10 +28,13 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`9.1.20221221`, `9.1`, `9`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/0c5e7578276e2bd1196e340ea98fee112d305bac/Dockerfile) -- [`9.1.20221221-minimal`, `9.1-minimal`, `9-minimal`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/4925a4ada53dc186b27167d90dbe62c7d62942cc/Dockerfile) -- [`8.7.20221219`, `8.7`, `8`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/15e9cb0790bed8b6cba7b5cb2ecf3ebab6a0e6ae/Dockerfile) -- [`8.7.20221219-minimal`, `8.7-minimal`, `8-minimal`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/263f85f3cc1dfaa1824aeecfe3aee681adafe33f/Dockerfile) +- [`9.3.20231119`, `9.3`, `9`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/53416a9aaea6ac6ded18c2047d51e26983160faf/Dockerfile) + +- [`9.3.20231119-minimal`, `9.3-minimal`, `9-minimal`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/e784104b999a1ff6b66cb0aeee0408fb030c840b/Dockerfile) + +- [`8.9.20231119`, `8.9`, `8`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/2085c6419637bf970a532888141569c5865ae61f/Dockerfile) + +- [`8.9.20231119-minimal`, `8.9-minimal`, `8-minimal`](https://github.com/rocky-linux/sig-cloud-instance-images/blob/6d81e6b46e052158df83357c569c8a6773a81e78/Dockerfile) # Quick reference (cont.) diff --git a/rockylinux/deprecated.md b/rockylinux/deprecated.md new file mode 100644 index 000000000000..87abc0481f1b --- /dev/null +++ b/rockylinux/deprecated.md @@ -0,0 +1,3 @@ +# IMPORTANT NOTE + +The Docker team curates the Official Images program, and there are currently some technical constraints preventing Rocky Linux from publishing updates here. For the most up-to-date container images, please refer to the [Rocky Linux Docker Hub repository](https://hub.docker.com/r/rockylinux/rockylinux) for now. diff --git a/rockylinux/metadata.json b/rockylinux/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/rockylinux/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/ros/README.md b/ros/README.md index ba4d3a813672..5e1ecc49e86c 100644 --- a/ros/README.md +++ b/ros/README.md @@ -24,35 +24,37 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`melodic-ros-core`, `melodic-ros-core-bionic`](https://github.com/osrf/docker_images/blob/3f4fbca923d80f834f3a89b5960bad5582652519/ros/melodic/ubuntu/bionic/ros-core/Dockerfile) -- [`melodic-ros-base`, `melodic-ros-base-bionic`, `melodic`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/melodic/ubuntu/bionic/ros-base/Dockerfile) -- [`melodic-robot`, `melodic-robot-bionic`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/melodic/ubuntu/bionic/robot/Dockerfile) -- [`melodic-perception`, `melodic-perception-bionic`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/melodic/ubuntu/bionic/perception/Dockerfile) -- [`noetic-ros-core`, `noetic-ros-core-focal`](https://github.com/osrf/docker_images/blob/3f4fbca923d80f834f3a89b5960bad5582652519/ros/noetic/ubuntu/focal/ros-core/Dockerfile) -- [`noetic-ros-base`, `noetic-ros-base-focal`, `noetic`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/ubuntu/focal/ros-base/Dockerfile) -- [`noetic-robot`, `noetic-robot-focal`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/ubuntu/focal/robot/Dockerfile) -- [`noetic-perception`, `noetic-perception-focal`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/ubuntu/focal/perception/Dockerfile) -- [`noetic-ros-core-buster`](https://github.com/osrf/docker_images/blob/3f4fbca923d80f834f3a89b5960bad5582652519/ros/noetic/debian/buster/ros-core/Dockerfile) -- [`noetic-ros-base-buster`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/debian/buster/ros-base/Dockerfile) -- [`noetic-robot-buster`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/debian/buster/robot/Dockerfile) -- [`noetic-perception-buster`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/debian/buster/perception/Dockerfile) -- [`foxy-ros-core`, `foxy-ros-core-focal`](https://github.com/osrf/docker_images/blob/3f4fbca923d80f834f3a89b5960bad5582652519/ros/foxy/ubuntu/focal/ros-core/Dockerfile) -- [`foxy-ros-base`, `foxy-ros-base-focal`, `foxy`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/foxy/ubuntu/focal/ros-base/Dockerfile) -- [`foxy-ros1-bridge`, `foxy-ros1-bridge-focal`](https://github.com/osrf/docker_images/blob/905056988fc38dea40dcb73518f813b71f4f4fd6/ros/foxy/ubuntu/focal/ros1-bridge/Dockerfile) -- [`humble-ros-core`, `humble-ros-core-jammy`](https://github.com/osrf/docker_images/blob/3f4fbca923d80f834f3a89b5960bad5582652519/ros/humble/ubuntu/jammy/ros-core/Dockerfile) -- [`humble-ros-base`, `humble-ros-base-jammy`, `humble`, `latest`](https://github.com/osrf/docker_images/blob/20e3ba685bb353a3c00be9ba01c1b7a6823c9472/ros/humble/ubuntu/jammy/ros-base/Dockerfile) +- [`humble-ros-core`, `humble-ros-core-jammy`](https://github.com/osrf/docker_images/blob/eb5634cf92ba079897e44fb7541d3b78aa6cf717/ros/humble/ubuntu/jammy/ros-core/Dockerfile) + +- [`humble-ros-base`, `humble-ros-base-jammy`, `humble`](https://github.com/osrf/docker_images/blob/20e3ba685bb353a3c00be9ba01c1b7a6823c9472/ros/humble/ubuntu/jammy/ros-base/Dockerfile) + - [`humble-perception`, `humble-perception-jammy`](https://github.com/osrf/docker_images/blob/20d40c96b426b8956dec203e236abff2ec29b188/ros/humble/ubuntu/jammy/perception/Dockerfile) -- [`rolling-ros-core`, `rolling-ros-core-jammy`](https://github.com/osrf/docker_images/blob/3f4fbca923d80f834f3a89b5960bad5582652519/ros/rolling/ubuntu/jammy/ros-core/Dockerfile) -- [`rolling-ros-base`, `rolling-ros-base-jammy`, `rolling`](https://github.com/osrf/docker_images/blob/20d40c96b426b8956dec203e236abff2ec29b188/ros/rolling/ubuntu/jammy/ros-base/Dockerfile) -- [`rolling-perception`, `rolling-perception-jammy`](https://github.com/osrf/docker_images/blob/20d40c96b426b8956dec203e236abff2ec29b188/ros/rolling/ubuntu/jammy/perception/Dockerfile) + +- [`jazzy-ros-core`, `jazzy-ros-core-noble`](https://github.com/osrf/docker_images/blob/eb5634cf92ba079897e44fb7541d3b78aa6cf717/ros/jazzy/ubuntu/noble/ros-core/Dockerfile) + +- [`jazzy-ros-base`, `jazzy-ros-base-noble`, `jazzy`, `latest`](https://github.com/osrf/docker_images/blob/0038f1c3a11aa0fc573d698b39ab5c204aad5a40/ros/jazzy/ubuntu/noble/ros-base/Dockerfile) + +- [`jazzy-perception`, `jazzy-perception-noble`](https://github.com/osrf/docker_images/blob/0038f1c3a11aa0fc573d698b39ab5c204aad5a40/ros/jazzy/ubuntu/noble/perception/Dockerfile) + +- [`kilted-ros-core`, `kilted-ros-core-noble`](https://github.com/osrf/docker_images/blob/eb5634cf92ba079897e44fb7541d3b78aa6cf717/ros/kilted/ubuntu/noble/ros-core/Dockerfile) + +- [`kilted-ros-base`, `kilted-ros-base-noble`, `kilted`](https://github.com/osrf/docker_images/blob/b835a530495c0b411a0d15db858710a2748ee0a0/ros/kilted/ubuntu/noble/ros-base/Dockerfile) + +- [`kilted-perception`, `kilted-perception-noble`](https://github.com/osrf/docker_images/blob/b835a530495c0b411a0d15db858710a2748ee0a0/ros/kilted/ubuntu/noble/perception/Dockerfile) + +- [`rolling-ros-core`, `rolling-ros-core-noble`](https://github.com/osrf/docker_images/blob/8cf2903c0f8813aacd3042c71d4d2d56d5068ad5/ros/rolling/ubuntu/noble/ros-core/Dockerfile) + +- [`rolling-ros-base`, `rolling-ros-base-noble`, `rolling`](https://github.com/osrf/docker_images/blob/8cf2903c0f8813aacd3042c71d4d2d56d5068ad5/ros/rolling/ubuntu/noble/ros-base/Dockerfile) + +- [`rolling-perception`, `rolling-perception-noble`](https://github.com/osrf/docker_images/blob/8cf2903c0f8813aacd3042c71d4d2d56d5068ad5/ros/rolling/ubuntu/noble/perception/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/osrf/docker_images/issues](https://github.com/osrf/docker_images/issues) + [https://github.com/osrf/docker_images/issues](https://github.com/osrf/docker_images/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/ros/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ros/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ros/) + [`amd64`](https://hub.docker.com/r/amd64/ros/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ros/) - **Published image artifact details**: [repo-info repo's `repos/ros/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ros) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ros)) @@ -65,13 +67,13 @@ WARNING: - **Source of this description**: [docs repo's `ros/` directory](https://github.com/docker-library/docs/tree/master/ros) ([history](https://github.com/docker-library/docs/commits/master/ros)) -# What is [ROS](https://www.ros.org/)? +# What is [ROS](https://docs.ros.org/)? The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source. > [wikipedia.org/wiki/Robot_Operating_System](https://en.wikipedia.org/wiki/Robot_Operating_System) -[![logo](https://raw.githubusercontent.com/docker-library/docs/0074e9dac72a35e5058f356885121aa82572682f/ros/logo.png)](https://www.ros.org/) +[![logo](https://raw.githubusercontent.com/docker-library/docs/0074e9dac72a35e5058f356885121aa82572682f/ros/logo.png)](https://docs.ros.org/) # How to use this image @@ -80,7 +82,7 @@ The Robot Operating System (ROS) is a set of software libraries and tools that h To create your own ROS docker images and install custom packages, here's a simple example of installing the C++, Python client library demos using the official released Debian packages via apt-get. ```dockerfile -FROM ros:foxy +FROM ros:rolling-ros-core as aptgetter # install ros package RUN apt-get update && apt-get install -y \ @@ -89,14 +91,14 @@ RUN apt-get update && apt-get install -y \ rm -rf /var/lib/apt/lists/* # launch ros package -CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"] +CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"] ``` Note: all ROS images include a default entrypoint that sources the ROS environment setup before executing the configured command, in this case the demo packages launch file. You can then build and run the Docker image like so: ```console -$ docker build -t my/ros:app . -$ docker run -it --rm my/ros:app +$ docker build -t my/ros:aptgetter . +$ docker run -it --rm my/ros:aptgetter [INFO] [launch]: process[talker-1]: started with pid [813] [INFO] [launch]: process[listener-2]: started with pid [814] [INFO] [talker]: Publishing: 'Hello World: 1' @@ -111,72 +113,123 @@ $ docker run -it --rm my/ros:app To create your own ROS docker images and build custom packages, here's a simple example of installing a package's build dependencies, compiling it from source, and installing the resulting build artifacts into a final multi-stage image layer. ```dockerfile -ARG FROM_IMAGE=ros:foxy +ARG FROM_IMAGE=ros:rolling ARG OVERLAY_WS=/opt/ros/overlay_ws # multi-stage for caching FROM $FROM_IMAGE AS cacher +ARG OVERLAY_WS + +# overwrite defaults to persist minimal cache +RUN rosdep update --rosdistro $ROS_DISTRO && \ + cat < /etc/apt/apt.conf.d/docker-clean && apt-get update +APT::Install-Recommends "false"; +APT::Install-Suggests "false"; +EOF # clone overlay source -ARG OVERLAY_WS WORKDIR $OVERLAY_WS/src -RUN echo "\ -repositories: \n\ - ros2/demos: \n\ - type: git \n\ - url: https://github.com/ros2/demos.git \n\ - version: ${ROS_DISTRO} \n\ -" > ../overlay.repos -RUN vcs import ./ < ../overlay.repos - -# copy manifests for caching -WORKDIR /opt -RUN mkdir -p /tmp/opt && \ - find ./ -name "package.xml" | \ - xargs cp --parents -t /tmp/opt && \ - find ./ -name "COLCON_IGNORE" | \ - xargs cp --parents -t /tmp/opt || true +RUN cat < /tmp/${type}_debs.txt +done +EOF # multi-stage for building FROM $FROM_IMAGE AS builder - -# install overlay dependencies ARG OVERLAY_WS -WORKDIR $OVERLAY_WS -COPY --from=cacher /tmp/$OVERLAY_WS/src ./src -RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ - apt-get update && rosdep install -y \ - --from-paths \ - src/ros2/demos/demo_nodes_cpp \ - src/ros2/demos/demo_nodes_py \ - --ignore-src \ - && rm -rf /var/lib/apt/lists/* + +# install build dependencies +COPY --from=cacher /tmp/build_debs.txt /tmp/build_debs.txt +RUN --mount=type=cache,target=/etc/apt/apt.conf.d,from=cacher,source=/etc/apt/apt.conf.d \ + --mount=type=cache,target=/var/lib/apt/lists,from=cacher,source=/var/lib/apt/lists \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + < /tmp/build_debs.txt xargs apt-get install -y # build overlay source +WORKDIR $OVERLAY_WS COPY --from=cacher $OVERLAY_WS/src ./src -ARG OVERLAY_MIXINS="release" RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ colcon build \ --packages-select \ demo_nodes_cpp \ demo_nodes_py \ - --mixin $OVERLAY_MIXINS + --mixin release -# source entrypoint setup -ENV OVERLAY_WS $OVERLAY_WS +# multi-stage for running +FROM $FROM_IMAGE-ros-core AS runner +ARG OVERLAY_WS + +# install exec dependencies +COPY --from=cacher /tmp/exec_debs.txt /tmp/exec_debs.txt +RUN --mount=type=cache,target=/etc/apt/apt.conf.d,from=cacher,source=/etc/apt/apt.conf.d \ + --mount=type=cache,target=/var/lib/apt/lists,from=cacher,source=/var/lib/apt/lists \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + < /tmp/exec_debs.txt xargs apt-get install -y + +# setup overlay install +ENV OVERLAY_WS=$OVERLAY_WS +COPY --from=builder $OVERLAY_WS/install $OVERLAY_WS/install RUN sed --in-place --expression \ '$isource "$OVERLAY_WS/install/setup.bash"' \ /ros_entrypoint.sh # run launch file -CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"] +CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"] ``` -The example above starts by using [`vcstool`](https://github.com/dirk-thomas/vcstool) to clone source repos of interest into the cacher stage. One could similarly `COPY` code from the local build context into the source directory as well. Package manifest files are then cached in a temporary directory where the following builder stage may copy from to install necessary dependencies with [`rosdep`](https://github.com/ros-infrastructure/rosdep). This is done prior to copying the rest of the source files to preserve the multi-stage build cache, given unaltered manifests do not alter declared dependencies, saving time and bandwidth. The overlay is then built using [`colcon`](https://colcon.readthedocs.io/en/released/), the entrypoint updated to source the workspace, and the default command set to launch the demo. +The example above consists of three sequential stages. The `cacher` stage first updates the apt lists and ROS index, uses [`vcstool`](https://github.com/dirk-thomas/vcstool) to clone a demo repo into the workspace source directory, and derives build and runtime dependency sets using [`rosdep`](https://docs.ros.org/en/rolling/Tutorials/Intermediate/Rosdep.html). The `builder` stage installs the derived build dependencies, sources the ROS install underlay, and compiles the source in release mode using [`colcon`](https://docs.ros.org/en/rolling/Tutorials/Beginner-Client-Libraries/Colcon-Tutorial.html). Finally, the `runner` stage installs only runtime dependencies, copies the compiled workspace artifacts, and sets up the environment to launch the demo. Note the example consists of several subtle optimizations: -Note: `--from-paths` and `--packages-select` are set here as so to only install the dependencies and build for the demo C++ and Python packages, among many in the demo git repo that was cloned. To install the dependencies and build all the packages in the source workspace, merely change the scope by setting `--from-paths src/` and dropping the `--packages-select` arguments. +- Multi-Stage Build + - Dependency derivation, compilation, and runtime setup are partitioned + - Maximizes cache retention despite package source or build/runtime changes + - Greater concurrency, e.g., colcon build while runtime apt installs +- Persistent Cache Propagation + - Use of [`--mount`](https://docs.docker.com/engine/reference/builder/#run---mount) to cache temp data without bloating layers + - Maintain temporally consistent apt lists between parallel stages + - Avoid needless network I/O between stages or across Docker rebuilds +- Minimal Image Size + - Final stage builds from `ros-core` for smallest runtime image + - Builds and installs only a select few packages in the workspace + - Only workspace install artifacts are copied into final layers -For more advance examples such as daisy chaining multiple overlay workspaces to improve caching of docker image build layers, using tools such as ccache to accelerate compilation with colcon, or using buildkit to save build time and bandwidth even when dependencies change, the project `Dockerfile`s in the ROS 2 [Navigation2](https://github.com/ros-planning/navigation2) repo are excellent resources. +For comparison, the resulting `runner` image is similar in size to the earlier `aptgetter` example. This allows you to develop and distribute custom ROS packages without significantly increasing image size compared to pre-built Debian installations: + +```console +$ docker image ls my/ros --format "table {{.Tag}}\t{{.Size}}" +TAG SIZE +aptgetter 504MB +runner 510MB +builder 941MB +$ docker image ls ros --format "table {{.Tag}}\t{{.Size}}" +TAG SIZE +rolling-ros-core 489MB +rolling 876MB +``` + +For more advance examples such as daisy chaining multiple overlay workspaces to improve caching of docker image build layers, using tools such as ccache to accelerate compilation with colcon, or using buildkit to save build time and bandwidth even when dependencies change, the project `Dockerfile`s in the [Navigation2](https://github.com/ros-planning/navigation2) repo are excellent resources. ## Deployment use cases @@ -186,7 +239,7 @@ Developing such complex systems with cutting edge implementations of newly publi With the advancements and standardization of software containers, roboticists are primed to acquire a host of improved developer tooling for building and shipping software. To help alleviate the growing pains and technical challenges of adopting new practices, we have focused on providing an official resource for using ROS with these new technologies. -For a complete listing of supported architectures and base images for each ROS Distribution Release, please read the official REP on target platforms for either [ROS 1](https://www.ros.org/reps/rep-0003.html) or for [ROS 2](https://www.ros.org/reps/rep-2000.html). +For a complete listing of supported architectures and base images for each ROS Distribution Release, please read the official REP on target platforms [here](https://www.ros.org/reps/rep-2001.html). ## Deployment suggestions @@ -194,11 +247,10 @@ The available tags include supported distros along with a hierarchy tags based o - `ros-core`: minimal ROS install - `ros-base`: basic tools and libraries (also tagged with distro name with LTS version as `latest`) -- `ros1-bridge`: tools and libraries to run hybrid ROS 1 - ROS 2 systems and bridge messages between them In the interest of keeping `ros-core` tag minimal in image size, developer tools such as `rosdep`, `colcon` and `vcstools` are not shipped in `ros_core`, but in `ros-base` instead. -The rest of the common meta-packages such as `desktop` are hosted on repos under OSRF's Docker Hub profile [here](https://hub.docker.com/r/osrf/ros/). These meta-packages include graphical dependencies and hook a host of other large packages such as X11, X server, etc. So in the interest of keeping the official images lean and secure, the desktop packages are just being hosted with OSRF's profile. For an extensive list of available variants, please read the official REP on target platforms for either [ROS 1](https://ros.org/reps/rep-0150.html) or for [ROS 2](https://www.ros.org/reps/rep-2001.html). +The rest of the common meta-packages such as `desktop` are hosted on repos under OSRF's Docker Hub profile [here](https://hub.docker.com/r/osrf/ros/). These meta-packages include graphical dependencies and hook a host of other large packages such as X11, X server, etc. So in the interest of keeping the official images lean and secure, the desktop packages are just being hosted with OSRF's profile. ### Volumes @@ -224,13 +276,11 @@ Alternatively, more permissive network settings can be used to share all host ne ### Docker Compose -In this example we'll demonstrate using [`docker-compose`](https://docs.docker.com/compose/) to spawn a pair of message publisher and subscriber nodes in separate containers connected through shared software defined network. +In this example we'll demonstrate using [`docker compose`](https://docs.docker.com/compose/) to spawn a pair of message publisher and subscriber nodes in separate containers connected through shared software defined network. -> Create the directory `~/ros_demos` and add the first `Dockerfile` example from above. In the same directory, also create file `docker-compose.yml` with the following that runs a C++ publisher with a Python subscriber: +> Create the directory `~/ros_demos` and add the first `Dockerfile` example from above. In the same directory, also create file `compose.yaml` with the following that runs a C++ publisher with a Python subscriber: ```yaml -version: '3' - services: talker: build: ./ @@ -243,10 +293,10 @@ services: command: ros2 run demo_nodes_py listener ``` -> Use docker-compose inside the same directory to launch our ROS nodes. Given the containers created derive from the same docker compose project, they will coexist on shared project network: +> Use `docker compose` inside the same directory to launch our ROS nodes. Given the containers created derive from the same docker compose project, they will coexist on shared project network: ```console -$ docker-compose up -d +$ docker compose up -d ``` > Notice that a new network named `ros_demos_default` has been created, as can be shown further with: @@ -258,76 +308,25 @@ $ docker network inspect ros_demos_default > We can monitor the logged output of each container, such as the listener node like so: ```console -$ docker-compose logs listener +$ docker compose logs listener ``` -> Finally, we can stop and remove all the relevant containers using docker-compose from the same directory: +> Finally, we can stop and remove all the relevant containers using `docker compose` from the same directory: ```console -$ docker-compose stop -$ docker-compose rm -``` - -> Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker-compose down`. - -### ROS 1 Bridge - -To ease ROS 2 migration, [`ros1_bridge`](https://index.ros.org/p/ros1_bridge/github-ros2-ros1_bridge) is a ROS 2 package that provides bidirectional communication between ROS 1 and ROS 2. As a minimal example, given the ROS 2 Dockerfile above, we'll create the ROS 1 equivalent below, and name the Dockerfile appropriately. - -```dockerfile -FROM ros:noetic - -# install ros package -RUN apt-get update && apt-get install -y \ - ros-${ROS_DISTRO}-ros-tutorials \ - ros-${ROS_DISTRO}-common-tutorials && \ - rm -rf /var/lib/apt/lists/* - -# launch ros package -CMD ["roslaunch", "roscpp_tutorials", "talker_listener.launch"] +$ docker compose stop +$ docker compose rm ``` -The compose file bellow spawns services for both talker listener demos while connecting the two via a dynamic bridge. You may then view the log output from both pairs of talker and listener nodes cross talking over the `/chatter` topic. - -```yaml -version: '3' - -services: - ros1: - build: - context: ./ - dockerfile: ros1.Dockerfile - - ros2: - build: - context: ./ - dockerfile: ros2.Dockerfile - - bridge: - image: ros:foxy-ros1-bridge - environment: - - "ROS_HOSTNAME=bridge" - - "ROS_MASTER_URI=http://ros1:11311" - command: ros2 run ros1_bridge dynamic_bridge -``` +> Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker compose down`. # More Resources -[ROS.org](http://www.ros.org/): Main ROS website -[Q&A](https://answers.ros.org/questions/): Ask questions. Get answers +[Docs](https://docs.ros.org/): ROS Developer Documentation +[Q&A](https://robotics.stackexchange.com/): Ask questions. Get answers [Forums](https://discourse.ros.org/): Hear the latest discussions -[Blog](http://www.ros.org/news/): Stay up-to-date -[Packages](https://index.ros.org/packages/): Discover indexed packages -[OSRF](https://www.osrfoundation.org/): Open Source Robotics Foundation - -## ROS 2 - -[Index](https://index.ros.org/doc/ros2/): ROS 2 Documentation -[Design](https://design.ros2.org/): ROS 2 Design Articles - -## ROS 1 - -[Wiki](http://wiki.ros.org/Documentation): ROS 1 Documentation +[Packages](https://index.ros.org/?search_packages=true): Discover indexed packages +[OSRF](https://www.openrobotics.org/): Open Source Robotics Foundation # License diff --git a/ros/content.md b/ros/content.md index 2f14ee99e988..4544e8ab5141 100644 --- a/ros/content.md +++ b/ros/content.md @@ -1,10 +1,10 @@ -# What is [ROS](https://www.ros.org/)? +# What is [ROS](https://docs.ros.org/)? The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source. > [wikipedia.org/wiki/Robot_Operating_System](https://en.wikipedia.org/wiki/Robot_Operating_System) -[%%LOGO%%](https://www.ros.org/) +[%%LOGO%%](https://docs.ros.org/) # How to use this image @@ -13,7 +13,7 @@ The Robot Operating System (ROS) is a set of software libraries and tools that h To create your own ROS docker images and install custom packages, here's a simple example of installing the C++, Python client library demos using the official released Debian packages via apt-get. ```dockerfile -FROM %%IMAGE%%:foxy +FROM %%IMAGE%%:rolling-ros-core as aptgetter # install ros package RUN apt-get update && apt-get install -y \ @@ -22,14 +22,14 @@ RUN apt-get update && apt-get install -y \ rm -rf /var/lib/apt/lists/* # launch ros package -CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"] +CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"] ``` Note: all ROS images include a default entrypoint that sources the ROS environment setup before executing the configured command, in this case the demo packages launch file. You can then build and run the Docker image like so: ```console -$ docker build -t my/ros:app . -$ docker run -it --rm my/ros:app +$ docker build -t my/ros:aptgetter . +$ docker run -it --rm my/ros:aptgetter [INFO] [launch]: process[talker-1]: started with pid [813] [INFO] [launch]: process[listener-2]: started with pid [814] [INFO] [talker]: Publishing: 'Hello World: 1' @@ -44,72 +44,123 @@ $ docker run -it --rm my/ros:app To create your own ROS docker images and build custom packages, here's a simple example of installing a package's build dependencies, compiling it from source, and installing the resulting build artifacts into a final multi-stage image layer. ```dockerfile -ARG FROM_IMAGE=%%IMAGE%%:foxy +ARG FROM_IMAGE=%%IMAGE%%:rolling ARG OVERLAY_WS=/opt/ros/overlay_ws # multi-stage for caching FROM $FROM_IMAGE AS cacher +ARG OVERLAY_WS + +# overwrite defaults to persist minimal cache +RUN rosdep update --rosdistro $ROS_DISTRO && \ + cat < /etc/apt/apt.conf.d/docker-clean && apt-get update +APT::Install-Recommends "false"; +APT::Install-Suggests "false"; +EOF # clone overlay source -ARG OVERLAY_WS WORKDIR $OVERLAY_WS/src -RUN echo "\ -repositories: \n\ - ros2/demos: \n\ - type: git \n\ - url: https://github.com/ros2/demos.git \n\ - version: ${ROS_DISTRO} \n\ -" > ../overlay.repos -RUN vcs import ./ < ../overlay.repos - -# copy manifests for caching -WORKDIR /opt -RUN mkdir -p /tmp/opt && \ - find ./ -name "package.xml" | \ - xargs cp --parents -t /tmp/opt && \ - find ./ -name "COLCON_IGNORE" | \ - xargs cp --parents -t /tmp/opt || true +RUN cat < /tmp/${type}_debs.txt +done +EOF # multi-stage for building FROM $FROM_IMAGE AS builder - -# install overlay dependencies ARG OVERLAY_WS -WORKDIR $OVERLAY_WS -COPY --from=cacher /tmp/$OVERLAY_WS/src ./src -RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ - apt-get update && rosdep install -y \ - --from-paths \ - src/ros2/demos/demo_nodes_cpp \ - src/ros2/demos/demo_nodes_py \ - --ignore-src \ - && rm -rf /var/lib/apt/lists/* + +# install build dependencies +COPY --from=cacher /tmp/build_debs.txt /tmp/build_debs.txt +RUN --mount=type=cache,target=/etc/apt/apt.conf.d,from=cacher,source=/etc/apt/apt.conf.d \ + --mount=type=cache,target=/var/lib/apt/lists,from=cacher,source=/var/lib/apt/lists \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + < /tmp/build_debs.txt xargs apt-get install -y # build overlay source +WORKDIR $OVERLAY_WS COPY --from=cacher $OVERLAY_WS/src ./src -ARG OVERLAY_MIXINS="release" RUN . /opt/ros/$ROS_DISTRO/setup.sh && \ colcon build \ --packages-select \ demo_nodes_cpp \ demo_nodes_py \ - --mixin $OVERLAY_MIXINS + --mixin release + +# multi-stage for running +FROM $FROM_IMAGE-ros-core AS runner +ARG OVERLAY_WS -# source entrypoint setup -ENV OVERLAY_WS $OVERLAY_WS +# install exec dependencies +COPY --from=cacher /tmp/exec_debs.txt /tmp/exec_debs.txt +RUN --mount=type=cache,target=/etc/apt/apt.conf.d,from=cacher,source=/etc/apt/apt.conf.d \ + --mount=type=cache,target=/var/lib/apt/lists,from=cacher,source=/var/lib/apt/lists \ + --mount=type=cache,target=/var/cache/apt,sharing=locked \ + < /tmp/exec_debs.txt xargs apt-get install -y + +# setup overlay install +ENV OVERLAY_WS=$OVERLAY_WS +COPY --from=builder $OVERLAY_WS/install $OVERLAY_WS/install RUN sed --in-place --expression \ '$isource "$OVERLAY_WS/install/setup.bash"' \ /ros_entrypoint.sh # run launch file -CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"] +CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"] ``` -The example above starts by using [`vcstool`](https://github.com/dirk-thomas/vcstool) to clone source repos of interest into the cacher stage. One could similarly `COPY` code from the local build context into the source directory as well. Package manifest files are then cached in a temporary directory where the following builder stage may copy from to install necessary dependencies with [`rosdep`](https://github.com/ros-infrastructure/rosdep). This is done prior to copying the rest of the source files to preserve the multi-stage build cache, given unaltered manifests do not alter declared dependencies, saving time and bandwidth. The overlay is then built using [`colcon`](https://colcon.readthedocs.io/en/released/), the entrypoint updated to source the workspace, and the default command set to launch the demo. +The example above consists of three sequential stages. The `cacher` stage first updates the apt lists and ROS index, uses [`vcstool`](https://github.com/dirk-thomas/vcstool) to clone a demo repo into the workspace source directory, and derives build and runtime dependency sets using [`rosdep`](https://docs.ros.org/en/rolling/Tutorials/Intermediate/Rosdep.html). The `builder` stage installs the derived build dependencies, sources the ROS install underlay, and compiles the source in release mode using [`colcon`](https://docs.ros.org/en/rolling/Tutorials/Beginner-Client-Libraries/Colcon-Tutorial.html). Finally, the `runner` stage installs only runtime dependencies, copies the compiled workspace artifacts, and sets up the environment to launch the demo. Note the example consists of several subtle optimizations: + +- Multi-Stage Build + - Dependency derivation, compilation, and runtime setup are partitioned + - Maximizes cache retention despite package source or build/runtime changes + - Greater concurrency, e.g., colcon build while runtime apt installs +- Persistent Cache Propagation + - Use of [`--mount`](https://docs.docker.com/engine/reference/builder/#run---mount) to cache temp data without bloating layers + - Maintain temporally consistent apt lists between parallel stages + - Avoid needless network I/O between stages or across Docker rebuilds +- Minimal Image Size + - Final stage builds from `ros-core` for smallest runtime image + - Builds and installs only a select few packages in the workspace + - Only workspace install artifacts are copied into final layers + +For comparison, the resulting `runner` image is similar in size to the earlier `aptgetter` example. This allows you to develop and distribute custom ROS packages without significantly increasing image size compared to pre-built Debian installations: -Note: `--from-paths` and `--packages-select` are set here as so to only install the dependencies and build for the demo C++ and Python packages, among many in the demo git repo that was cloned. To install the dependencies and build all the packages in the source workspace, merely change the scope by setting `--from-paths src/` and dropping the `--packages-select` arguments. +```console +$ docker image ls my/ros --format "table {{.Tag}}\t{{.Size}}" +TAG SIZE +aptgetter 504MB +runner 510MB +builder 941MB +$ docker image ls ros --format "table {{.Tag}}\t{{.Size}}" +TAG SIZE +rolling-ros-core 489MB +rolling 876MB +``` -For more advance examples such as daisy chaining multiple overlay workspaces to improve caching of docker image build layers, using tools such as ccache to accelerate compilation with colcon, or using buildkit to save build time and bandwidth even when dependencies change, the project `Dockerfile`s in the ROS 2 [Navigation2](https://github.com/ros-planning/navigation2) repo are excellent resources. +For more advance examples such as daisy chaining multiple overlay workspaces to improve caching of docker image build layers, using tools such as ccache to accelerate compilation with colcon, or using buildkit to save build time and bandwidth even when dependencies change, the project `Dockerfile`s in the [Navigation2](https://github.com/ros-planning/navigation2) repo are excellent resources. ## Deployment use cases @@ -119,7 +170,7 @@ Developing such complex systems with cutting edge implementations of newly publi With the advancements and standardization of software containers, roboticists are primed to acquire a host of improved developer tooling for building and shipping software. To help alleviate the growing pains and technical challenges of adopting new practices, we have focused on providing an official resource for using ROS with these new technologies. -For a complete listing of supported architectures and base images for each ROS Distribution Release, please read the official REP on target platforms for either [ROS 1](https://www.ros.org/reps/rep-0003.html) or for [ROS 2](https://www.ros.org/reps/rep-2000.html). +For a complete listing of supported architectures and base images for each ROS Distribution Release, please read the official REP on target platforms [here](https://www.ros.org/reps/rep-2001.html). ## Deployment suggestions @@ -127,11 +178,10 @@ The available tags include supported distros along with a hierarchy tags based o - `ros-core`: minimal ROS install - `ros-base`: basic tools and libraries (also tagged with distro name with LTS version as `latest`) -- `ros1-bridge`: tools and libraries to run hybrid ROS 1 - ROS 2 systems and bridge messages between them In the interest of keeping `ros-core` tag minimal in image size, developer tools such as `rosdep`, `colcon` and `vcstools` are not shipped in `ros_core`, but in `ros-base` instead. -The rest of the common meta-packages such as `desktop` are hosted on repos under OSRF's Docker Hub profile [here](https://hub.docker.com/r/osrf/ros/). These meta-packages include graphical dependencies and hook a host of other large packages such as X11, X server, etc. So in the interest of keeping the official images lean and secure, the desktop packages are just being hosted with OSRF's profile. For an extensive list of available variants, please read the official REP on target platforms for either [ROS 1](https://ros.org/reps/rep-0150.html) or for [ROS 2](https://www.ros.org/reps/rep-2001.html). +The rest of the common meta-packages such as `desktop` are hosted on repos under OSRF's Docker Hub profile [here](https://hub.docker.com/r/osrf/ros/). These meta-packages include graphical dependencies and hook a host of other large packages such as X11, X server, etc. So in the interest of keeping the official images lean and secure, the desktop packages are just being hosted with OSRF's profile. ### Volumes @@ -157,13 +207,11 @@ Alternatively, more permissive network settings can be used to share all host ne ### Docker Compose -In this example we'll demonstrate using [`docker-compose`](https://docs.docker.com/compose/) to spawn a pair of message publisher and subscriber nodes in separate containers connected through shared software defined network. +In this example we'll demonstrate using [`docker compose`](https://docs.docker.com/compose/) to spawn a pair of message publisher and subscriber nodes in separate containers connected through shared software defined network. -> Create the directory `~/ros_demos` and add the first `Dockerfile` example from above. In the same directory, also create file `docker-compose.yml` with the following that runs a C++ publisher with a Python subscriber: +> Create the directory `~/ros_demos` and add the first `Dockerfile` example from above. In the same directory, also create file `compose.yaml` with the following that runs a C++ publisher with a Python subscriber: ```yaml -version: '3' - services: talker: build: ./ @@ -176,10 +224,10 @@ services: command: ros2 run demo_nodes_py listener ``` -> Use docker-compose inside the same directory to launch our ROS nodes. Given the containers created derive from the same docker compose project, they will coexist on shared project network: +> Use `docker compose` inside the same directory to launch our ROS nodes. Given the containers created derive from the same docker compose project, they will coexist on shared project network: ```console -$ docker-compose up -d +$ docker compose up -d ``` > Notice that a new network named `ros_demos_default` has been created, as can be shown further with: @@ -191,73 +239,22 @@ $ docker network inspect ros_demos_default > We can monitor the logged output of each container, such as the listener node like so: ```console -$ docker-compose logs listener +$ docker compose logs listener ``` -> Finally, we can stop and remove all the relevant containers using docker-compose from the same directory: +> Finally, we can stop and remove all the relevant containers using `docker compose` from the same directory: ```console -$ docker-compose stop -$ docker-compose rm -``` - -> Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker-compose down`. - -### ROS 1 Bridge - -To ease ROS 2 migration, [`ros1_bridge`](https://index.ros.org/p/ros1_bridge/github-ros2-ros1_bridge) is a ROS 2 package that provides bidirectional communication between ROS 1 and ROS 2. As a minimal example, given the ROS 2 Dockerfile above, we'll create the ROS 1 equivalent below, and name the Dockerfile appropriately. - -```dockerfile -FROM %%IMAGE%%:noetic - -# install ros package -RUN apt-get update && apt-get install -y \ - ros-${ROS_DISTRO}-ros-tutorials \ - ros-${ROS_DISTRO}-common-tutorials && \ - rm -rf /var/lib/apt/lists/* - -# launch ros package -CMD ["roslaunch", "roscpp_tutorials", "talker_listener.launch"] +$ docker compose stop +$ docker compose rm ``` -The compose file bellow spawns services for both talker listener demos while connecting the two via a dynamic bridge. You may then view the log output from both pairs of talker and listener nodes cross talking over the `/chatter` topic. - -```yaml -version: '3' - -services: - ros1: - build: - context: ./ - dockerfile: ros1.Dockerfile - - ros2: - build: - context: ./ - dockerfile: ros2.Dockerfile - - bridge: - image: ros:foxy-ros1-bridge - environment: - - "ROS_HOSTNAME=bridge" - - "ROS_MASTER_URI=http://ros1:11311" - command: ros2 run ros1_bridge dynamic_bridge -``` +> Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker compose down`. # More Resources -[ROS.org](http://www.ros.org/): Main ROS website -[Q&A](https://answers.ros.org/questions/): Ask questions. Get answers +[Docs](https://docs.ros.org/): ROS Developer Documentation +[Q&A](https://robotics.stackexchange.com/): Ask questions. Get answers [Forums](https://discourse.ros.org/): Hear the latest discussions -[Blog](http://www.ros.org/news/): Stay up-to-date -[Packages](https://index.ros.org/packages/): Discover indexed packages -[OSRF](https://www.osrfoundation.org/): Open Source Robotics Foundation - -## ROS 2 - -[Index](https://index.ros.org/doc/ros2/): ROS 2 Documentation -[Design](https://design.ros2.org/): ROS 2 Design Articles - -## ROS 1 - -[Wiki](http://wiki.ros.org/Documentation): ROS 1 Documentation +[Packages](https://index.ros.org/?search_packages=true): Discover indexed packages +[OSRF](https://www.openrobotics.org/): Open Source Robotics Foundation diff --git a/ros/metadata.json b/ros/metadata.json new file mode 100644 index 000000000000..de234f00b76c --- /dev/null +++ b/ros/metadata.json @@ -0,0 +1,9 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks", + "machine-learning-and-ai", + "operating-systems" + ] + } +} diff --git a/ruby/README.md b/ruby/README.md index 1db0cd70ddb9..7a2d0babd01b 100644 --- a/ruby/README.md +++ b/ruby/README.md @@ -24,36 +24,61 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.2.0-bullseye`, `3.2-bullseye`, `3-bullseye`, `bullseye`, `3.2.0`, `3.2`, `3`, `latest`](https://github.com/docker-library/ruby/blob/c756b06f8cc771fb54f629d51217aa1802ba6ec2/3.2/bullseye/Dockerfile) -- [`3.2.0-slim-bullseye`, `3.2-slim-bullseye`, `3-slim-bullseye`, `slim-bullseye`, `3.2.0-slim`, `3.2-slim`, `3-slim`, `slim`](https://github.com/docker-library/ruby/blob/c756b06f8cc771fb54f629d51217aa1802ba6ec2/3.2/slim-bullseye/Dockerfile) -- [`3.2.0-buster`, `3.2-buster`, `3-buster`, `buster`](https://github.com/docker-library/ruby/blob/c756b06f8cc771fb54f629d51217aa1802ba6ec2/3.2/buster/Dockerfile) -- [`3.2.0-slim-buster`, `3.2-slim-buster`, `3-slim-buster`, `slim-buster`](https://github.com/docker-library/ruby/blob/c756b06f8cc771fb54f629d51217aa1802ba6ec2/3.2/slim-buster/Dockerfile) -- [`3.2.0-alpine3.17`, `3.2-alpine3.17`, `3-alpine3.17`, `alpine3.17`, `3.2.0-alpine`, `3.2-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/ruby/blob/c756b06f8cc771fb54f629d51217aa1802ba6ec2/3.2/alpine3.17/Dockerfile) -- [`3.2.0-alpine3.16`, `3.2-alpine3.16`, `3-alpine3.16`, `alpine3.16`](https://github.com/docker-library/ruby/blob/c756b06f8cc771fb54f629d51217aa1802ba6ec2/3.2/alpine3.16/Dockerfile) -- [`3.1.3-bullseye`, `3.1-bullseye`, `3.1.3`, `3.1`](https://github.com/docker-library/ruby/blob/9fd589661dd0e12b082336e9c6f731196fe39ba8/3.1/bullseye/Dockerfile) -- [`3.1.3-slim-bullseye`, `3.1-slim-bullseye`, `3.1.3-slim`, `3.1-slim`](https://github.com/docker-library/ruby/blob/9fd589661dd0e12b082336e9c6f731196fe39ba8/3.1/slim-bullseye/Dockerfile) -- [`3.1.3-buster`, `3.1-buster`](https://github.com/docker-library/ruby/blob/9fd589661dd0e12b082336e9c6f731196fe39ba8/3.1/buster/Dockerfile) -- [`3.1.3-slim-buster`, `3.1-slim-buster`](https://github.com/docker-library/ruby/blob/9fd589661dd0e12b082336e9c6f731196fe39ba8/3.1/slim-buster/Dockerfile) -- [`3.1.3-alpine3.17`, `3.1-alpine3.17`, `3.1.3-alpine`, `3.1-alpine`](https://github.com/docker-library/ruby/blob/a51b7da07425cc2f5a35178ef83fd908b59beb5d/3.1/alpine3.17/Dockerfile) -- [`3.1.3-alpine3.16`, `3.1-alpine3.16`](https://github.com/docker-library/ruby/blob/9fd589661dd0e12b082336e9c6f731196fe39ba8/3.1/alpine3.16/Dockerfile) -- [`3.0.5-bullseye`, `3.0-bullseye`, `3.0.5`, `3.0`](https://github.com/docker-library/ruby/blob/ece6f45d6d00b803a4e1a33cd5a55895cf928357/3.0/bullseye/Dockerfile) -- [`3.0.5-slim-bullseye`, `3.0-slim-bullseye`, `3.0.5-slim`, `3.0-slim`](https://github.com/docker-library/ruby/blob/ece6f45d6d00b803a4e1a33cd5a55895cf928357/3.0/slim-bullseye/Dockerfile) -- [`3.0.5-buster`, `3.0-buster`](https://github.com/docker-library/ruby/blob/ece6f45d6d00b803a4e1a33cd5a55895cf928357/3.0/buster/Dockerfile) -- [`3.0.5-slim-buster`, `3.0-slim-buster`](https://github.com/docker-library/ruby/blob/ece6f45d6d00b803a4e1a33cd5a55895cf928357/3.0/slim-buster/Dockerfile) -- [`3.0.5-alpine3.16`, `3.0-alpine3.16`, `3.0.5-alpine`, `3.0-alpine`](https://github.com/docker-library/ruby/blob/ece6f45d6d00b803a4e1a33cd5a55895cf928357/3.0/alpine3.16/Dockerfile) -- [`2.7.7-bullseye`, `2.7-bullseye`, `2-bullseye`, `2.7.7`, `2.7`, `2`](https://github.com/docker-library/ruby/blob/cdac1ffbc959768a5b82014dbb8c8006fe6f7880/2.7/bullseye/Dockerfile) -- [`2.7.7-slim-bullseye`, `2.7-slim-bullseye`, `2-slim-bullseye`, `2.7.7-slim`, `2.7-slim`, `2-slim`](https://github.com/docker-library/ruby/blob/cdac1ffbc959768a5b82014dbb8c8006fe6f7880/2.7/slim-bullseye/Dockerfile) -- [`2.7.7-buster`, `2.7-buster`, `2-buster`](https://github.com/docker-library/ruby/blob/cdac1ffbc959768a5b82014dbb8c8006fe6f7880/2.7/buster/Dockerfile) -- [`2.7.7-slim-buster`, `2.7-slim-buster`, `2-slim-buster`](https://github.com/docker-library/ruby/blob/cdac1ffbc959768a5b82014dbb8c8006fe6f7880/2.7/slim-buster/Dockerfile) -- [`2.7.7-alpine3.16`, `2.7-alpine3.16`, `2-alpine3.16`, `2.7.7-alpine`, `2.7-alpine`, `2-alpine`](https://github.com/docker-library/ruby/blob/cdac1ffbc959768a5b82014dbb8c8006fe6f7880/2.7/alpine3.16/Dockerfile) +- [`3.5.0-preview1-trixie`, `3.5-rc-trixie`, `3.5.0-preview1`, `3.5-rc`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.5-rc/trixie/Dockerfile) + +- [`3.5.0-preview1-slim-trixie`, `3.5-rc-slim-trixie`, `3.5.0-preview1-slim`, `3.5-rc-slim`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.5-rc/slim-trixie/Dockerfile) + +- [`3.5.0-preview1-bookworm`, `3.5-rc-bookworm`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.5-rc/bookworm/Dockerfile) + +- [`3.5.0-preview1-slim-bookworm`, `3.5-rc-slim-bookworm`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.5-rc/slim-bookworm/Dockerfile) + +- [`3.5.0-preview1-alpine3.22`, `3.5-rc-alpine3.22`, `3.5.0-preview1-alpine`, `3.5-rc-alpine`](https://github.com/docker-library/ruby/blob/7d367fd4559ed09fedea90e1184638b36cfb64d2/3.5-rc/alpine3.22/Dockerfile) + +- [`3.5.0-preview1-alpine3.21`, `3.5-rc-alpine3.21`](https://github.com/docker-library/ruby/blob/f0bf5f365387703579af740f915b6f32c4ee4c28/3.5-rc/alpine3.21/Dockerfile) + +- [`3.4.7-trixie`, `3.4-trixie`, `3-trixie`, `trixie`, `3.4.7`, `3.4`, `3`, `latest`](https://github.com/docker-library/ruby/blob/7b7c8319337974e0df7e809c2360027d873ab259/3.4/trixie/Dockerfile) + +- [`3.4.7-slim-trixie`, `3.4-slim-trixie`, `3-slim-trixie`, `slim-trixie`, `3.4.7-slim`, `3.4-slim`, `3-slim`, `slim`](https://github.com/docker-library/ruby/blob/7b7c8319337974e0df7e809c2360027d873ab259/3.4/slim-trixie/Dockerfile) + +- [`3.4.7-bookworm`, `3.4-bookworm`, `3-bookworm`, `bookworm`](https://github.com/docker-library/ruby/blob/7b7c8319337974e0df7e809c2360027d873ab259/3.4/bookworm/Dockerfile) + +- [`3.4.7-slim-bookworm`, `3.4-slim-bookworm`, `3-slim-bookworm`, `slim-bookworm`](https://github.com/docker-library/ruby/blob/7b7c8319337974e0df7e809c2360027d873ab259/3.4/slim-bookworm/Dockerfile) + +- [`3.4.7-alpine3.22`, `3.4-alpine3.22`, `3-alpine3.22`, `alpine3.22`, `3.4.7-alpine`, `3.4-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/ruby/blob/7b7c8319337974e0df7e809c2360027d873ab259/3.4/alpine3.22/Dockerfile) + +- [`3.4.7-alpine3.21`, `3.4-alpine3.21`, `3-alpine3.21`, `alpine3.21`](https://github.com/docker-library/ruby/blob/7b7c8319337974e0df7e809c2360027d873ab259/3.4/alpine3.21/Dockerfile) + +- [`3.3.10-trixie`, `3.3-trixie`, `3.3.10`, `3.3`](https://github.com/docker-library/ruby/blob/54c82927da7b67b0cb60a1bcd300d702ef565b7d/3.3/trixie/Dockerfile) + +- [`3.3.10-slim-trixie`, `3.3-slim-trixie`, `3.3.10-slim`, `3.3-slim`](https://github.com/docker-library/ruby/blob/54c82927da7b67b0cb60a1bcd300d702ef565b7d/3.3/slim-trixie/Dockerfile) + +- [`3.3.10-bookworm`, `3.3-bookworm`](https://github.com/docker-library/ruby/blob/54c82927da7b67b0cb60a1bcd300d702ef565b7d/3.3/bookworm/Dockerfile) + +- [`3.3.10-slim-bookworm`, `3.3-slim-bookworm`](https://github.com/docker-library/ruby/blob/54c82927da7b67b0cb60a1bcd300d702ef565b7d/3.3/slim-bookworm/Dockerfile) + +- [`3.3.10-alpine3.22`, `3.3-alpine3.22`, `3.3.10-alpine`, `3.3-alpine`](https://github.com/docker-library/ruby/blob/54c82927da7b67b0cb60a1bcd300d702ef565b7d/3.3/alpine3.22/Dockerfile) + +- [`3.3.10-alpine3.21`, `3.3-alpine3.21`](https://github.com/docker-library/ruby/blob/54c82927da7b67b0cb60a1bcd300d702ef565b7d/3.3/alpine3.21/Dockerfile) + +- [`3.2.9-trixie`, `3.2-trixie`, `3.2.9`, `3.2`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.2/trixie/Dockerfile) + +- [`3.2.9-slim-trixie`, `3.2-slim-trixie`, `3.2.9-slim`, `3.2-slim`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.2/slim-trixie/Dockerfile) + +- [`3.2.9-bookworm`, `3.2-bookworm`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.2/bookworm/Dockerfile) + +- [`3.2.9-slim-bookworm`, `3.2-slim-bookworm`](https://github.com/docker-library/ruby/blob/26c507eea2fc314ad774636f40acac38233bf942/3.2/slim-bookworm/Dockerfile) + +- [`3.2.9-alpine3.22`, `3.2-alpine3.22`, `3.2.9-alpine`, `3.2-alpine`](https://github.com/docker-library/ruby/blob/33e4f980322b70f078a64d9e61eae1af040df5c2/3.2/alpine3.22/Dockerfile) + +- [`3.2.9-alpine3.21`, `3.2-alpine3.21`](https://github.com/docker-library/ruby/blob/33e4f980322b70f078a64d9e61eae1af040df5c2/3.2/alpine3.21/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/ruby/issues](https://github.com/docker-library/ruby/issues) + [https://github.com/docker-library/ruby/issues](https://github.com/docker-library/ruby/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/ruby/), [`arm32v5`](https://hub.docker.com/r/arm32v5/ruby/), [`arm32v6`](https://hub.docker.com/r/arm32v6/ruby/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ruby/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ruby/), [`i386`](https://hub.docker.com/r/i386/ruby/), [`mips64le`](https://hub.docker.com/r/mips64le/ruby/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ruby/), [`s390x`](https://hub.docker.com/r/s390x/ruby/) + [`amd64`](https://hub.docker.com/r/amd64/ruby/), [`arm32v5`](https://hub.docker.com/r/arm32v5/ruby/), [`arm32v6`](https://hub.docker.com/r/arm32v6/ruby/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ruby/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ruby/), [`i386`](https://hub.docker.com/r/i386/ruby/), [`mips64le`](https://hub.docker.com/r/mips64le/ruby/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ruby/), [`riscv64`](https://hub.docker.com/r/riscv64/ruby/), [`s390x`](https://hub.docker.com/r/s390x/ruby/) - **Published image artifact details**: [repo-info repo's `repos/ruby/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ruby) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ruby)) @@ -79,7 +104,7 @@ Ruby is a dynamic, reflective, object-oriented, general-purpose, open-source pro ## Create a `Dockerfile` in your Ruby app project ```dockerfile -FROM ruby:3.0 +FROM ruby:3.3 # throw errors if Gemfile has been modified since Gemfile.lock RUN bundle config --global frozen 1 @@ -108,7 +133,7 @@ $ docker run -it --name my-running-script my-ruby-app The above example `Dockerfile` expects a `Gemfile.lock` in your app directory. This `docker run` will help you generate one. Run it in the root of your app, next to the `Gemfile`: ```console -$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:3.0 bundle install +$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:3.3 bundle install ``` ## Run a single Ruby script @@ -116,7 +141,7 @@ $ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:3.0 bundle install For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Ruby script by using the Ruby Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp ruby:3.0 ruby your-daemon-or-script.rb +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp ruby:3.3 ruby your-daemon-or-script.rb ``` ## Encoding @@ -127,7 +152,7 @@ By default, Ruby inherits the locale of the environment in which it is run. For This image sets several environment variables which change the behavior of Bundler and Gem for running a single application within a container (especially in such a way that the development sources of the application can be bind-mounted inside a container and not have `.bundle` from the host interfere with the proper functionality of the container). -The environment variables we set are canonically listed in the above-linked `Dockerfiles`, but some of them include `GEM_HOME`, `BUNDLE_PATH`, `BUNDLE_BIN`, `BUNDLE_SILENCE_ROOT_WARNING`, and `BUNDLE_APP_CONFIG`. +The environment variables we set are canonically listed in the above-linked `Dockerfiles`, but some of them include `GEM_HOME`, `BUNDLE_SILENCE_ROOT_WARNING`, and `BUNDLE_APP_CONFIG`. If these cause issues for your use case (running multiple Ruby applications in a single container, for example), setting them to the empty string *should* be sufficient for undoing their behavior. @@ -139,7 +164,7 @@ The `ruby` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. diff --git a/ruby/content.md b/ruby/content.md index 5fddf48924b4..1d19791995a9 100644 --- a/ruby/content.md +++ b/ruby/content.md @@ -11,7 +11,7 @@ Ruby is a dynamic, reflective, object-oriented, general-purpose, open-source pro ## Create a `Dockerfile` in your Ruby app project ```dockerfile -FROM %%IMAGE%%:3.0 +FROM %%IMAGE%%:3.3 # throw errors if Gemfile has been modified since Gemfile.lock RUN bundle config --global frozen 1 @@ -40,7 +40,7 @@ $ docker run -it --name my-running-script my-ruby-app The above example `Dockerfile` expects a `Gemfile.lock` in your app directory. This `docker run` will help you generate one. Run it in the root of your app, next to the `Gemfile`: ```console -$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:3.0 bundle install +$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:3.3 bundle install ``` ## Run a single Ruby script @@ -48,7 +48,7 @@ $ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:3.0 bundle in For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Ruby script by using the Ruby Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:3.0 ruby your-daemon-or-script.rb +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:3.3 ruby your-daemon-or-script.rb ``` ## Encoding @@ -59,6 +59,6 @@ By default, Ruby inherits the locale of the environment in which it is run. For This image sets several environment variables which change the behavior of Bundler and Gem for running a single application within a container (especially in such a way that the development sources of the application can be bind-mounted inside a container and not have `.bundle` from the host interfere with the proper functionality of the container). -The environment variables we set are canonically listed in the above-linked `Dockerfiles`, but some of them include `GEM_HOME`, `BUNDLE_PATH`, `BUNDLE_BIN`, `BUNDLE_SILENCE_ROOT_WARNING`, and `BUNDLE_APP_CONFIG`. +The environment variables we set are canonically listed in the above-linked `Dockerfiles`, but some of them include `GEM_HOME`, `BUNDLE_SILENCE_ROOT_WARNING`, and `BUNDLE_APP_CONFIG`. If these cause issues for your use case (running multiple Ruby applications in a single container, for example), setting them to the empty string *should* be sufficient for undoing their behavior. diff --git a/ruby/metadata.json b/ruby/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/ruby/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/rust/README.md b/rust/README.md index 1409f19e4f48..9b6132f96699 100644 --- a/rust/README.md +++ b/rust/README.md @@ -24,20 +24,31 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1-buster`, `1.66-buster`, `1.66.1-buster`, `buster`](https://github.com/rust-lang/docker-rust/blob/86cc84d5a8559719aaee3cfbdaf828815ef675d8/1.66.1/buster/Dockerfile) -- [`1-slim-buster`, `1.66-slim-buster`, `1.66.1-slim-buster`, `slim-buster`](https://github.com/rust-lang/docker-rust/blob/86cc84d5a8559719aaee3cfbdaf828815ef675d8/1.66.1/buster/slim/Dockerfile) -- [`1-bullseye`, `1.66-bullseye`, `1.66.1-bullseye`, `bullseye`, `1`, `1.66`, `1.66.1`, `latest`](https://github.com/rust-lang/docker-rust/blob/86cc84d5a8559719aaee3cfbdaf828815ef675d8/1.66.1/bullseye/Dockerfile) -- [`1-slim-bullseye`, `1.66-slim-bullseye`, `1.66.1-slim-bullseye`, `slim-bullseye`, `1-slim`, `1.66-slim`, `1.66.1-slim`, `slim`](https://github.com/rust-lang/docker-rust/blob/86cc84d5a8559719aaee3cfbdaf828815ef675d8/1.66.1/bullseye/slim/Dockerfile) -- [`1-alpine3.16`, `1.66-alpine3.16`, `1.66.1-alpine3.16`, `alpine3.16`](https://github.com/rust-lang/docker-rust/blob/86cc84d5a8559719aaee3cfbdaf828815ef675d8/1.66.1/alpine3.16/Dockerfile) -- [`1-alpine3.17`, `1.66-alpine3.17`, `1.66.1-alpine3.17`, `alpine3.17`, `1-alpine`, `1.66-alpine`, `1.66.1-alpine`, `alpine`](https://github.com/rust-lang/docker-rust/blob/86cc84d5a8559719aaee3cfbdaf828815ef675d8/1.66.1/alpine3.17/Dockerfile) +- [`1-bullseye`, `1.91-bullseye`, `1.91.1-bullseye`, `bullseye`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/bullseye/Dockerfile) + +- [`1-slim-bullseye`, `1.91-slim-bullseye`, `1.91.1-slim-bullseye`, `slim-bullseye`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/bullseye/slim/Dockerfile) + +- [`1-bookworm`, `1.91-bookworm`, `1.91.1-bookworm`, `bookworm`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/bookworm/Dockerfile) + +- [`1-slim-bookworm`, `1.91-slim-bookworm`, `1.91.1-slim-bookworm`, `slim-bookworm`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/bookworm/slim/Dockerfile) + +- [`1-trixie`, `1.91-trixie`, `1.91.1-trixie`, `trixie`, `1`, `1.91`, `1.91.1`, `latest`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/trixie/Dockerfile) + +- [`1-slim-trixie`, `1.91-slim-trixie`, `1.91.1-slim-trixie`, `slim-trixie`, `1-slim`, `1.91-slim`, `1.91.1-slim`, `slim`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/trixie/slim/Dockerfile) + +- [`1-alpine3.20`, `1.91-alpine3.20`, `1.91.1-alpine3.20`, `alpine3.20`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/alpine3.20/Dockerfile) + +- [`1-alpine3.21`, `1.91-alpine3.21`, `1.91.1-alpine3.21`, `alpine3.21`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/alpine3.21/Dockerfile) + +- [`1-alpine3.22`, `1.91-alpine3.22`, `1.91.1-alpine3.22`, `alpine3.22`, `1-alpine`, `1.91-alpine`, `1.91.1-alpine`, `alpine`](https://github.com/rust-lang/docker-rust/blob/0ad6d349fa1a5d6cc64e3bd9a27e5f6762df9abc/stable/alpine3.22/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/rust-lang/docker-rust/issues](https://github.com/rust-lang/docker-rust/issues) + [https://github.com/rust-lang/docker-rust/issues](https://github.com/rust-lang/docker-rust/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/rust/), [`arm32v7`](https://hub.docker.com/r/arm32v7/rust/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rust/), [`i386`](https://hub.docker.com/r/i386/rust/) + [`amd64`](https://hub.docker.com/r/amd64/rust/), [`arm32v7`](https://hub.docker.com/r/arm32v7/rust/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rust/), [`i386`](https://hub.docker.com/r/i386/rust/), [`ppc64le`](https://hub.docker.com/r/ppc64le/rust/), [`riscv64`](https://hub.docker.com/r/riscv64/rust/), [`s390x`](https://hub.docker.com/r/s390x/rust/) - **Published image artifact details**: [repo-info repo's `repos/rust/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rust) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rust)) @@ -65,7 +76,7 @@ Rust is a systems programming language sponsored by Mozilla Research. It is desi The most straightforward way to use this image is to use a Rust container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project: ```dockerfile -FROM rust:1.31 +FROM rust:1.67 WORKDIR /usr/src/myapp COPY . . @@ -85,12 +96,12 @@ $ docker run -it --rm --name my-running-app my-rust-app This creates an image that has all of the rust tooling for the image, which is 1.8gb. If you just want the compiled application: ```dockerfile -FROM rust:1.40 as builder +FROM rust:1.67 as builder WORKDIR /usr/src/myapp COPY . . RUN cargo install --path . -FROM debian:buster-slim +FROM debian:bullseye-slim RUN apt-get update && apt-get install -y extra-runtime-dependencies && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/cargo/bin/myapp /usr/local/bin/myapp CMD ["myapp"] @@ -120,7 +131,7 @@ The `rust` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye or buster in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm, bullseye, or trixie in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system. diff --git a/rust/content.md b/rust/content.md index ce3595d6b517..7900c61eefdf 100644 --- a/rust/content.md +++ b/rust/content.md @@ -13,7 +13,7 @@ Rust is a systems programming language sponsored by Mozilla Research. It is desi The most straightforward way to use this image is to use a Rust container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project: ```dockerfile -FROM %%IMAGE%%:1.31 +FROM %%IMAGE%%:1.67 WORKDIR /usr/src/myapp COPY . . @@ -33,12 +33,12 @@ $ docker run -it --rm --name my-running-app my-rust-app This creates an image that has all of the rust tooling for the image, which is 1.8gb. If you just want the compiled application: ```dockerfile -FROM rust:1.40 as builder +FROM rust:1.67 as builder WORKDIR /usr/src/myapp COPY . . RUN cargo install --path . -FROM debian:buster-slim +FROM debian:bullseye-slim RUN apt-get update && apt-get install -y extra-runtime-dependencies && rm -rf /var/lib/apt/lists/* COPY --from=builder /usr/local/cargo/bin/myapp /usr/local/bin/myapp CMD ["myapp"] diff --git a/rust/metadata.json b/rust/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/rust/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/sapmachine/README-short.txt b/sapmachine/README-short.txt index a925fe198de8..50a475fa886f 100644 --- a/sapmachine/README-short.txt +++ b/sapmachine/README-short.txt @@ -1 +1 @@ -Official SapMachine Docker Image. +Official SapMachine Docker Image, SAP's build of OpenJDK. diff --git a/sapmachine/README.md b/sapmachine/README.md index bedcb849a74b..2df7e94f7439 100644 --- a/sapmachine/README.md +++ b/sapmachine/README.md @@ -24,9 +24,93 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`11`, `11.0.17`](https://github.com/SAP/SapMachine-infrastructure/blob/936dab0baa76e5db609e4c0dffc632dc4f42eca8/dockerfiles/official/11/Dockerfile) -- [`17`, `17.0.5`, `lts`](https://github.com/SAP/SapMachine-infrastructure/blob/fb4f1fe1d5cb453891a95bfdec43c0196a09e324/dockerfiles/official/17/Dockerfile) -- [`19`, `19.0.1`, `latest`](https://github.com/SAP/SapMachine-infrastructure/blob/e2320c79758f23b60d17726185c9ede2a5622f54/dockerfiles/official/19/Dockerfile) +- [`latest`, `ubuntu`, `jdk`, `jdk-ubuntu`, `lts`, `lts-ubuntu`, `25`, `25-ubuntu`, `25.0.1`, `25.0.1-ubuntu`, `25-jdk`, `25-jdk-ubuntu`, `25.0.1-jdk`, `25.0.1-jdk-ubuntu`, `lts-jdk-ubuntu`, `ubuntu-noble`, `ubuntu-24.04`, `jdk-ubuntu-noble`, `jdk-ubuntu-24.04`, `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.1-ubuntu-noble`, `25.0.1-ubuntu-24.04`, `25.0.1-jdk-ubuntu-noble`, `25.0.1-jdk-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/24_04/jdk/Dockerfile) + +- [`jdk-headless`, `jdk-headless-ubuntu`, `25-jdk-headless`, `25-jdk-headless-ubuntu`, `25.0.1-jdk-headless`, `25.0.1-jdk-headless-ubuntu`, `lts-jdk-headless-ubuntu`, `jdk-headless-ubuntu-noble`, `jdk-headless-ubuntu-24.04`, `lts-jdk-headless-ubuntu-noble`, `lts-jdk-headless-ubuntu-24.04`, `25-jdk-headless-ubuntu-noble`, `25-jdk-headless-ubuntu-24.04`, `25.0.1-jdk-headless-ubuntu-noble`, `25.0.1-jdk-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/24_04/jdk-headless/Dockerfile) + +- [`jre`, `jre-ubuntu`, `25-jre`, `25-jre-ubuntu`, `25.0.1-jre`, `25.0.1-jre-ubuntu`, `lts-jre-ubuntu`, `jre-ubuntu-noble`, `jre-ubuntu-24.04`, `lts-jre-ubuntu-noble`, `lts-jre-ubuntu-24.04`, `25-jre-ubuntu-noble`, `25-jre-ubuntu-24.04`, `25.0.1-jre-ubuntu-noble`, `25.0.1-jre-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/24_04/jre/Dockerfile) + +- [`jre-headless`, `jre-headless-ubuntu`, `25-jre-headless`, `25-jre-headless-ubuntu`, `25.0.1-jre-headless`, `25.0.1-jre-headless-ubuntu`, `lts-jre-headless-ubuntu`, `jre-headless-ubuntu-noble`, `jre-headless-ubuntu-24.04`, `lts-jre-headless-ubuntu-noble`, `lts-jre-headless-ubuntu-24.04`, `25-jre-headless-ubuntu-noble`, `25-jre-headless-ubuntu-24.04`, `25.0.1-jre-headless-ubuntu-noble`, `25.0.1-jre-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/24_04/jre-headless/Dockerfile) + +- [`ubuntu-jammy`, `ubuntu-22.04`, `jdk-ubuntu-jammy`, `jdk-ubuntu-22.04`, `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.1-ubuntu-jammy`, `25.0.1-ubuntu-22.04`, `25.0.1-jdk-ubuntu-jammy`, `25.0.1-jdk-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/22_04/jdk/Dockerfile) + +- [`jdk-headless-ubuntu-jammy`, `jdk-headless-ubuntu-22.04`, `lts-jdk-headless-ubuntu-jammy`, `lts-jdk-headless-ubuntu-22.04`, `25-jdk-headless-ubuntu-jammy`, `25-jdk-headless-ubuntu-22.04`, `25.0.1-jdk-headless-ubuntu-jammy`, `25.0.1-jdk-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/22_04/jdk-headless/Dockerfile) + +- [`jre-ubuntu-jammy`, `jre-ubuntu-22.04`, `lts-jre-ubuntu-jammy`, `lts-jre-ubuntu-22.04`, `25-jre-ubuntu-jammy`, `25-jre-ubuntu-22.04`, `25.0.1-jre-ubuntu-jammy`, `25.0.1-jre-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/22_04/jre/Dockerfile) + +- [`jre-headless-ubuntu-jammy`, `jre-headless-ubuntu-22.04`, `lts-jre-headless-ubuntu-jammy`, `lts-jre-headless-ubuntu-22.04`, `25-jre-headless-ubuntu-jammy`, `25-jre-headless-ubuntu-22.04`, `25.0.1-jre-headless-ubuntu-jammy`, `25.0.1-jre-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/ubuntu/22_04/jre-headless/Dockerfile) + +- [`alpine`, `jdk-alpine`, `lts-alpine`, `25-alpine`, `25.0.1-alpine`, `lts-jdk-alpine`, `25-jdk-alpine`, `25.0.1-jdk-alpine`, `alpine-3.22`, `jdk-alpine-3.22`, `lts-alpine-3.22`, `lts-jdk-alpine-3.22`, `25-alpine-3.22`, `25-jdk-alpine-3.22`, `25.0.1-alpine-3.22`, `25.0.1-jdk-alpine-3.22`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/alpine/3_22/jdk/Dockerfile) + +- [`jre-alpine`, `lts-jre-alpine`, `25-jre-alpine`, `25.0.1-jre-alpine`, `jre-alpine-3.22`, `lts-jre-alpine-3.22`, `25-jre-alpine-3.22`, `25.0.1-jre-alpine-3.22`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/alpine/3_22/jre/Dockerfile) + +- [`alpine-3.21`, `jdk-alpine-3.21`, `lts-alpine-3.21`, `lts-jdk-alpine-3.21`, `25-alpine-3.21`, `25-jdk-alpine-3.21`, `25.0.1-alpine-3.21`, `25.0.1-jdk-alpine-3.21`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/alpine/3_21/jdk/Dockerfile) + +- [`jre-alpine-3.21`, `lts-jre-alpine-3.21`, `25-jre-alpine-3.21`, `25.0.1-jre-alpine-3.21`](https://github.com/SAP/SapMachine-infrastructure/blob/eecb8129379011a0a9eef9cc51095447e36c4fe7/dockerfiles/25/alpine/3_21/jre/Dockerfile) + +- [`21`, `21-ubuntu`, `21.0.9`, `21.0.9-ubuntu`, `21-jdk`, `21-jdk-ubuntu`, `21.0.9-jdk`, `21.0.9-jdk-ubuntu`, `21-ubuntu-noble`, `21-ubuntu-24.04`, `21-jdk-ubuntu-noble`, `21-jdk-ubuntu-24.04`, `21.0.9-ubuntu-noble`, `21.0.9-ubuntu-24.04`, `21.0.9-jdk-ubuntu-noble`, `21.0.9-jdk-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/24_04/jdk/Dockerfile) + +- [`21-jdk-headless`, `21-jdk-headless-ubuntu`, `21.0.9-jdk-headless`, `21.0.9-jdk-headless-ubuntu`, `21-jdk-headless-ubuntu-noble`, `21-jdk-headless-ubuntu-24.04`, `21.0.9-jdk-headless-ubuntu-noble`, `21.0.9-jdk-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/24_04/jdk-headless/Dockerfile) + +- [`21-jre`, `21-jre-ubuntu`, `21.0.9-jre`, `21.0.9-jre-ubuntu`, `21-jre-ubuntu-noble`, `21-jre-ubuntu-24.04`, `21.0.9-jre-ubuntu-noble`, `21.0.9-jre-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/24_04/jre/Dockerfile) + +- [`21-jre-headless`, `21-jre-headless-ubuntu`, `21.0.9-jre-headless`, `21.0.9-jre-headless-ubuntu`, `21-jre-headless-ubuntu-noble`, `21-jre-headless-ubuntu-24.04`, `21.0.9-jre-headless-ubuntu-noble`, `21.0.9-jre-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/24_04/jre-headless/Dockerfile) + +- [`21-ubuntu-jammy`, `21-ubuntu-22.04`, `21-jdk-ubuntu-jammy`, `21-jdk-ubuntu-22.04`, `21.0.9-ubuntu-jammy`, `21.0.9-ubuntu-22.04`, `21.0.9-jdk-ubuntu-jammy`, `21.0.9-jdk-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/22_04/jdk/Dockerfile) + +- [`21-jdk-headless-ubuntu-jammy`, `21-jdk-headless-ubuntu-22.04`, `21.0.9-jdk-headless-ubuntu-jammy`, `21.0.9-jdk-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/22_04/jdk-headless/Dockerfile) + +- [`21-jre-ubuntu-jammy`, `21-jre-ubuntu-22.04`, `21.0.9-jre-ubuntu-jammy`, `21.0.9-jre-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/22_04/jre/Dockerfile) + +- [`21-jre-headless-ubuntu-jammy`, `21-jre-headless-ubuntu-22.04`, `21.0.9-jre-headless-ubuntu-jammy`, `21.0.9-jre-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/ubuntu/22_04/jre-headless/Dockerfile) + +- [`21-alpine`, `21.0.9-alpine`, `21-jdk-alpine`, `21.0.9-jdk-alpine`, `21-alpine-3.22`, `21-jdk-alpine-3.22`, `21.0.9-alpine-3.22`, `21.0.9-jdk-alpine-3.22`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/alpine/3_22/jdk/Dockerfile) + +- [`21-jre-alpine`, `21.0.9-jre-alpine`, `21-jre-alpine-3.22`, `21.0.9-jre-alpine-3.22`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/alpine/3_22/jre/Dockerfile) + +- [`21-alpine-3.21`, `21-jdk-alpine-3.21`, `21.0.9-alpine-3.21`, `21.0.9-jdk-alpine-3.21`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/alpine/3_21/jdk/Dockerfile) + +- [`21-jre-alpine-3.21`, `21.0.9-jre-alpine-3.21`](https://github.com/SAP/SapMachine-infrastructure/blob/2604e69a438d534e1837e9407354f9a87a4a60e8/dockerfiles/21/alpine/3_21/jre/Dockerfile) + +- [`17`, `17-ubuntu`, `17.0.17`, `17.0.17-ubuntu`, `17-jdk`, `17-jdk-ubuntu`, `17.0.17-jdk`, `17.0.17-jdk-ubuntu`, `17-ubuntu-noble`, `17-ubuntu-24.04`, `17-jdk-ubuntu-noble`, `17-jdk-ubuntu-24.04`, `17.0.17-ubuntu-noble`, `17.0.17-ubuntu-24.04`, `17.0.17-jdk-ubuntu-noble`, `17.0.17-jdk-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/24_04/jdk/Dockerfile) + +- [`17-jdk-headless`, `17-jdk-headless-ubuntu`, `17.0.17-jdk-headless`, `17.0.17-jdk-headless-ubuntu`, `17-jdk-headless-ubuntu-noble`, `17-jdk-headless-ubuntu-24.04`, `17.0.17-jdk-headless-ubuntu-noble`, `17.0.17-jdk-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/24_04/jdk-headless/Dockerfile) + +- [`17-jre`, `17-jre-ubuntu`, `17.0.17-jre`, `17.0.17-jre-ubuntu`, `17-jre-ubuntu-noble`, `17-jre-ubuntu-24.04`, `17.0.17-jre-ubuntu-noble`, `17.0.17-jre-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/24_04/jre/Dockerfile) + +- [`17-jre-headless`, `17-jre-headless-ubuntu`, `17.0.17-jre-headless`, `17.0.17-jre-headless-ubuntu`, `17-jre-headless-ubuntu-noble`, `17-jre-headless-ubuntu-24.04`, `17.0.17-jre-headless-ubuntu-noble`, `17.0.17-jre-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/24_04/jre-headless/Dockerfile) + +- [`17-ubuntu-jammy`, `17-ubuntu-22.04`, `17-jdk-ubuntu-jammy`, `17-jdk-ubuntu-22.04`, `17.0.17-ubuntu-jammy`, `17.0.17-ubuntu-22.04`, `17.0.17-jdk-ubuntu-jammy`, `17.0.17-jdk-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/22_04/jdk/Dockerfile) + +- [`17-jdk-headless-ubuntu-jammy`, `17-jdk-headless-ubuntu-22.04`, `17.0.17-jdk-headless-ubuntu-jammy`, `17.0.17-jdk-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/22_04/jdk-headless/Dockerfile) + +- [`17-jre-ubuntu-jammy`, `17-jre-ubuntu-22.04`, `17.0.17-jre-ubuntu-jammy`, `17.0.17-jre-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/22_04/jre/Dockerfile) + +- [`17-jre-headless-ubuntu-jammy`, `17-jre-headless-ubuntu-22.04`, `17.0.17-jre-headless-ubuntu-jammy`, `17.0.17-jre-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/ubuntu/22_04/jre-headless/Dockerfile) + +- [`17-alpine`, `17.0.17-alpine`, `17-jdk-alpine`, `17.0.17-jdk-alpine`, `17-alpine-3.22`, `17-jdk-alpine-3.22`, `17.0.17-alpine-3.22`, `17.0.17-jdk-alpine-3.22`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/alpine/3_22/jdk/Dockerfile) + +- [`17-jre-alpine`, `17.0.17-jre-alpine`, `17-jre-alpine-3.22`, `17.0.17-jre-alpine-3.22`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/alpine/3_22/jre/Dockerfile) + +- [`17-alpine-3.21`, `17-jdk-alpine-3.21`, `17.0.17-alpine-3.21`, `17.0.17-jdk-alpine-3.21`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/alpine/3_21/jdk/Dockerfile) + +- [`17-jre-alpine-3.21`, `17.0.17-jre-alpine-3.21`](https://github.com/SAP/SapMachine-infrastructure/blob/c4644bb93c3d247b15c8193ed6c998e9355fbcde/dockerfiles/17/alpine/3_21/jre/Dockerfile) + +- [`11`, `11-ubuntu`, `11.0.29`, `11.0.29-ubuntu`, `11-jdk`, `11-jdk-ubuntu`, `11.0.29-jdk`, `11.0.29-jdk-ubuntu`, `11-ubuntu-noble`, `11-ubuntu-24.04`, `11-jdk-ubuntu-noble`, `11-jdk-ubuntu-24.04`, `11.0.29-ubuntu-noble`, `11.0.29-ubuntu-24.04`, `11.0.29-jdk-ubuntu-noble`, `11.0.29-jdk-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/24_04/jdk/Dockerfile) + +- [`11-jdk-headless`, `11-jdk-headless-ubuntu`, `11.0.29-jdk-headless`, `11.0.29-jdk-headless-ubuntu`, `11-jdk-headless-ubuntu-noble`, `11-jdk-headless-ubuntu-24.04`, `11.0.29-jdk-headless-ubuntu-noble`, `11.0.29-jdk-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/24_04/jdk-headless/Dockerfile) + +- [`11-jre`, `11-jre-ubuntu`, `11.0.29-jre`, `11.0.29-jre-ubuntu`, `11-jre-ubuntu-noble`, `11-jre-ubuntu-24.04`, `11.0.29-jre-ubuntu-noble`, `11.0.29-jre-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/24_04/jre/Dockerfile) + +- [`11-jre-headless`, `11-jre-headless-ubuntu`, `11.0.29-jre-headless`, `11.0.29-jre-headless-ubuntu`, `11-jre-headless-ubuntu-noble`, `11-jre-headless-ubuntu-24.04`, `11.0.29-jre-headless-ubuntu-noble`, `11.0.29-jre-headless-ubuntu-24.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/24_04/jre-headless/Dockerfile) + +- [`11-ubuntu-jammy`, `11-ubuntu-22.04`, `11-jdk-ubuntu-jammy`, `11-jdk-ubuntu-22.04`, `11.0.29-ubuntu-jammy`, `11.0.29-ubuntu-22.04`, `11.0.29-jdk-ubuntu-jammy`, `11.0.29-jdk-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/22_04/jdk/Dockerfile) + +- [`11-jdk-headless-ubuntu-jammy`, `11-jdk-headless-ubuntu-22.04`, `11.0.29-jdk-headless-ubuntu-jammy`, `11.0.29-jdk-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/22_04/jdk-headless/Dockerfile) + +- [`11-jre-ubuntu-jammy`, `11-jre-ubuntu-22.04`, `11.0.29-jre-ubuntu-jammy`, `11.0.29-jre-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/22_04/jre/Dockerfile) + +- [`11-jre-headless-ubuntu-jammy`, `11-jre-headless-ubuntu-22.04`, `11.0.29-jre-headless-ubuntu-jammy`, `11.0.29-jre-headless-ubuntu-22.04`](https://github.com/SAP/SapMachine-infrastructure/blob/e4d018e5f421f7de356040c75eba68a3de98a175/dockerfiles/11/ubuntu/22_04/jre-headless/Dockerfile) # Quick reference (cont.) @@ -49,11 +133,11 @@ WARNING: ### Overview -The image in this repository contains the SapMachine Java virtual machine (JVM). SapMachine is an OpenJDK based JVM that is build, quality tested and long-term supported by SAP. It is the default JVM on the [SAP Cloud Platform](https://cloudplatform.sap.com/index.html) and it is also supported as a [Standard JRE](https://github.com/cloudfoundry/java-buildpack/blob/master/docs/jre-sap_machine_jre.md) in the [Cloud Foundry Java Build Pack](https://github.com/cloudfoundry/java-buildpack). +SapMachine is a binary distribution of the [Open Java Development Kit (OpenJDK)](https://openjdk.org/). It is built, quality tested and long-term supported by SAP. -For more information see the [SapMachine website](https://sapmachine.io). +SapMachine is the default Java runtime for [SAP's Business Technology Platform](https://www.sap.com/products/technology-platform.html) and it is also supported as a [Standard JRE](https://github.com/cloudfoundry/java-buildpack/blob/master/docs/jre-sap_machine_jre.md) in the [Cloud Foundry Java Build Pack](https://github.com/cloudfoundry/java-buildpack). -The SapMachine image supports the x86/64 architecture. +For more information see the [SapMachine website](https://sapmachine.io). Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. @@ -84,6 +168,24 @@ docker build -t myapp . docker run -it --rm myapp ``` +# Image Variants + +The `sapmachine` images come in many flavors, each designed for a specific use case. + +## `sapmachine:` + +This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. + +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. + +## `sapmachine:-alpine` + +This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general. + +This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images. + +To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). + # License The Dockerfiles and associated scripts are licensed under the [Apache License 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). diff --git a/sapmachine/content.md b/sapmachine/content.md index 414c058bb729..fb3758f08dce 100644 --- a/sapmachine/content.md +++ b/sapmachine/content.md @@ -1,10 +1,10 @@ ### Overview -The image in this repository contains the SapMachine Java virtual machine (JVM). SapMachine is an OpenJDK based JVM that is build, quality tested and long-term supported by SAP. It is the default JVM on the [SAP Cloud Platform](https://cloudplatform.sap.com/index.html) and it is also supported as a [Standard JRE](https://github.com/cloudfoundry/java-buildpack/blob/master/docs/jre-sap_machine_jre.md) in the [Cloud Foundry Java Build Pack](https://github.com/cloudfoundry/java-buildpack). +SapMachine is a binary distribution of the [Open Java Development Kit (OpenJDK)](https://openjdk.org/). It is built, quality tested and long-term supported by SAP. -For more information see the [SapMachine website](https://sapmachine.io). +SapMachine is the default Java runtime for [SAP's Business Technology Platform](https://www.sap.com/products/technology-platform.html) and it is also supported as a [Standard JRE](https://github.com/cloudfoundry/java-buildpack/blob/master/docs/jre-sap_machine_jre.md) in the [Cloud Foundry Java Build Pack](https://github.com/cloudfoundry/java-buildpack). -The SapMachine image supports the x86/64 architecture. +For more information see the [SapMachine website](https://sapmachine.io). Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. diff --git a/sapmachine/metadata.json b/sapmachine/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/sapmachine/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/satosa/README-short.txt b/satosa/README-short.txt index 50d0e08f9866..ba958d8dfba1 100644 --- a/satosa/README-short.txt +++ b/satosa/README-short.txt @@ -1 +1 @@ -SATOSA translates between authentication protocols such as SAML2, OpenID Connect, and OAuth2. +SATOSA translates between auth protocols such as SAML2, OpenID Connect, and OAuth2. diff --git a/satosa/README.md b/satosa/README.md index 67d99b5a6e57..355c1500e94d 100644 --- a/satosa/README.md +++ b/satosa/README.md @@ -28,21 +28,23 @@ WARNING: ## Simple Tags -- [`8.2.0-bullseye`, `8.2-bullseye`, `8-bullseye`, `bullseye`](https://github.com/IdentityPython/satosa-docker/blob/a4ef0077f546b7e9be444720b14f2cba14f8f2eb/8.2/bullseye/Dockerfile) -- [`8.2.0-alpine3.16`, `8.2-alpine3.16`, `8-alpine3.16`, `alpine3.16`, `8.2.0-alpine`, `8.2-alpine`, `8-alpine`, `alpine`](https://github.com/IdentityPython/satosa-docker/blob/24aabb5cd0330eab9c8baeddf4fc8fcf0d714d3b/8.2/alpine3.16/Dockerfile) +- [`8.5.1-bookworm`, `8.5-bookworm`, `8-bookworm`, `bookworm`](https://github.com/IdentityPython/satosa-docker/blob/8420c19d43d36f132e015a981df54f30dc54980f/8.5/bookworm/Dockerfile) + +- [`8.5.1-alpine3.22`, `8.5-alpine3.22`, `8-alpine3.22`, `alpine3.22`, `8.5.1-alpine`, `8.5-alpine`, `8-alpine`, `alpine`](https://github.com/IdentityPython/satosa-docker/blob/8420c19d43d36f132e015a981df54f30dc54980f/8.5/alpine3.22/Dockerfile) ## Shared Tags -- `8.2.0`, `8.2`, `8`, `latest`: - - [`8.2.0-bullseye`](https://github.com/IdentityPython/satosa-docker/blob/a4ef0077f546b7e9be444720b14f2cba14f8f2eb/8.2/bullseye/Dockerfile) +- `8.5.1`, `8.5`, `8`, `latest`: + + - [`8.5.1-bookworm`](https://github.com/IdentityPython/satosa-docker/blob/8420c19d43d36f132e015a981df54f30dc54980f/8.5/bookworm/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/IdentityPython/satosa-docker/issues](https://github.com/IdentityPython/satosa-docker/issues) + [https://github.com/IdentityPython/satosa-docker/issues](https://github.com/IdentityPython/satosa-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/satosa/), [`arm32v5`](https://hub.docker.com/r/arm32v5/satosa/), [`arm32v6`](https://hub.docker.com/r/arm32v6/satosa/), [`arm32v7`](https://hub.docker.com/r/arm32v7/satosa/), [`arm64v8`](https://hub.docker.com/r/arm64v8/satosa/), [`i386`](https://hub.docker.com/r/i386/satosa/), [`ppc64le`](https://hub.docker.com/r/ppc64le/satosa/), [`s390x`](https://hub.docker.com/r/s390x/satosa/) + [`amd64`](https://hub.docker.com/r/amd64/satosa/), [`arm64v8`](https://hub.docker.com/r/arm64v8/satosa/) - **Published image artifact details**: [repo-info repo's `repos/satosa/` directory](https://github.com/docker-library/repo-info/blob/master/repos/satosa) ([history](https://github.com/docker-library/repo-info/commits/master/repos/satosa)) @@ -61,9 +63,7 @@ SATOSA is a configurable proxy for translating between different authentication ![logo](https://raw.githubusercontent.com/docker-library/docs/8e1f8cd99d5ce31197d5452d6d04886f791ac9c7/satosa/logo.svg?sanitize=true) -# How to use this image - -## To start a SATOSA instance +## Using This Image The basic pattern for starting a `satosa` instance is: @@ -79,8 +79,6 @@ docker run --name some-satosa -p 80:8080 -d satosa The entrypoint script outputs SAML2 metadata to the container log at start time. This metadata refers to the instance's base URL, e.g., `https://example.com`. Browsers must be able to access the instance over HTTPS. -# How to extend this image - ## Configuration files The `satosa` image stores its configuration in /etc/satosa. This configuration must persist among instances, particularly the SAML2 entity ID (derived from the proxy's base URL by default) and related keying material. [Use volumes, bind mounts, or custom images](https://docs.docker.com/storage/) to maintain this configuration. @@ -105,13 +103,13 @@ docker run -it --name some-satosa satosa bash ## Environment variables -The entrypoint script uses environment variables to generate the initial configuration, which sets SATOSA up as a SAML2 proxy between the free [SAMLtest.ID](https://samltest.id/) test service provider and test identity provider. All of the environment variables are optional. +The entrypoint script uses environment variables to generate the initial configuration, which requires customization. All of the environment variables are **OPTIONAL**. -The environment variables' values can be read from [Docker secrets](https://docs.docker.com/engine/swarm/secrets/). Append `_FILE` to the variable name (e.g., `STATE_ENCRYPTION_KEY_FILE`), and set it to the pathname of the corresponding secret (e.g., `/run/secrets/state_encryption_key`). +Environment variables' values can be read from [Docker secrets](https://docs.docker.com/engine/swarm/secrets/). Append `_FILE` to the variable name (e.g., `STATE_ENCRYPTION_KEY_FILE`), and set it to the pathname of the corresponding secret (e.g., `/run/secrets/state_encryption_key`). ### `BASE_URL` -SATOSA must be hosted at the root of the website. This environment variable optionally specifies the website's base URL, which defaults to `http://example.com`. If set, the base URL *must* be a method plus a hostname without any trailing slash or path components, e.g., `https://idproxy.example.com`, not `https://idproxy.example.com/` nor `https://idproxy.example.com/satosa`. +SATOSA **MUST** be hosted at the root of the website. This environment variable specifies the website's base URL, which defaults to `http://example.com`. If set, the base URL *must* be a method plus a hostname without any trailing slash or path components, e.g., `https://idproxy.example.com`, not `https://idproxy.example.com/` nor `https://idproxy.example.com/satosa`. ### `STATE_ENCRYPTION_KEY` @@ -119,15 +117,15 @@ SATOSA uses encrypted cookies to track the progress of an authentication flow. T ### `SAML2_BACKEND_DISCO_SRV` -When part of a SAML2 multilateral federation, SATOSA will ask the user to choose an identity provider using a SAML discovery service. This environment variable optionally sets the the discovery service URL, which defaults to [SeamlessAccess](https://seamlessaccess.org/). +When part of a SAML trust federation, SATOSA will ask the user to choose an identity provider using a SAML discovery service. This environment variable sets the discovery service URL, which defaults to [SeamlessAccess](https://seamlessaccess.org/). ### `SAML2_BACKEND_CERT` and `SAML2_BACKEND_KEY` -SATOSA's SAML2 backend acts like a service provider (relying party), requesting authentication by and attributes from the user's identity provider. It uses public key cryptography to sign authentication requests and decrypt responses. These optional environment variables hold the backend's paired public and private keys in [the PEM format](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail). If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. +SATOSA's default SAML back-end microservice acts like a service provider (relying party), requesting authentication by and attributes from the user-selected identity provider. The microservice uses public key cryptography to sign authentication requests and decrypt responses. These environment variables provide the requisite keying material in [the PEM format](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail). If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. ### `SAML2_FRONTEND_CERT` and `SAML2_FRONTEND_KEY` -SATOSA's SAML2 frontend acts like an identity provider (credential service provider), processing authentication requests from and returning user attributes to trusted websites. It uses public key cryptography to sign authentication responses. These optional environment variables hold the frontend's paired public and private keys, also in the PEM format. If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. +SATOSA's default SAML front-end microservice acts like an identity provider (credential service provider), processing authentication requests from and returning user attributes to trusted websites. It uses public key cryptography to sign authentication responses. These environment variables provide the requisite keying material, also in the PEM format. If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. # Image Variants @@ -137,7 +135,7 @@ The `satosa` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. +Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. ## `satosa:-alpine` diff --git a/satosa/content.md b/satosa/content.md index f00ab9e50c8b..bf6dbaf945ca 100644 --- a/satosa/content.md +++ b/satosa/content.md @@ -4,9 +4,7 @@ SATOSA is a configurable proxy for translating between different authentication %%LOGO%% -# How to use this image - -## To start a SATOSA instance +## Using This Image The basic pattern for starting a `%%REPO%%` instance is: @@ -22,8 +20,6 @@ docker run --name some-%%REPO%% -p 80:8080 -d %%IMAGE%% The entrypoint script outputs SAML2 metadata to the container log at start time. This metadata refers to the instance's base URL, e.g., `https://example.com`. Browsers must be able to access the instance over HTTPS. -# How to extend this image - ## Configuration files The `%%REPO%%` image stores its configuration in /etc/satosa. This configuration must persist among instances, particularly the SAML2 entity ID (derived from the proxy's base URL by default) and related keying material. [Use volumes, bind mounts, or custom images](https://docs.docker.com/storage/) to maintain this configuration. @@ -48,13 +44,13 @@ docker run -it --name some-%%REPO%% %%IMAGE%% bash ## Environment variables -The entrypoint script uses environment variables to generate the initial configuration, which sets SATOSA up as a SAML2 proxy between the free [SAMLtest.ID](https://samltest.id/) test service provider and test identity provider. All of the environment variables are optional. +The entrypoint script uses environment variables to generate the initial configuration, which requires customization. All of the environment variables are **OPTIONAL**. -The environment variables' values can be read from [Docker secrets](https://docs.docker.com/engine/swarm/secrets/). Append `_FILE` to the variable name (e.g., `STATE_ENCRYPTION_KEY_FILE`), and set it to the pathname of the corresponding secret (e.g., `/run/secrets/state_encryption_key`). +Environment variables' values can be read from [Docker secrets](https://docs.docker.com/engine/swarm/secrets/). Append `_FILE` to the variable name (e.g., `STATE_ENCRYPTION_KEY_FILE`), and set it to the pathname of the corresponding secret (e.g., `/run/secrets/state_encryption_key`). ### `BASE_URL` -SATOSA must be hosted at the root of the website. This environment variable optionally specifies the website's base URL, which defaults to `http://example.com`. If set, the base URL *must* be a method plus a hostname without any trailing slash or path components, e.g., `https://idproxy.example.com`, not `https://idproxy.example.com/` nor `https://idproxy.example.com/satosa`. +SATOSA **MUST** be hosted at the root of the website. This environment variable specifies the website's base URL, which defaults to `http://example.com`. If set, the base URL *must* be a method plus a hostname without any trailing slash or path components, e.g., `https://idproxy.example.com`, not `https://idproxy.example.com/` nor `https://idproxy.example.com/satosa`. ### `STATE_ENCRYPTION_KEY` @@ -62,12 +58,12 @@ SATOSA uses encrypted cookies to track the progress of an authentication flow. T ### `SAML2_BACKEND_DISCO_SRV` -When part of a SAML2 multilateral federation, SATOSA will ask the user to choose an identity provider using a SAML discovery service. This environment variable optionally sets the the discovery service URL, which defaults to [SeamlessAccess](https://seamlessaccess.org/). +When part of a SAML trust federation, SATOSA will ask the user to choose an identity provider using a SAML discovery service. This environment variable sets the discovery service URL, which defaults to [SeamlessAccess](https://seamlessaccess.org/). ### `SAML2_BACKEND_CERT` and `SAML2_BACKEND_KEY` -SATOSA's SAML2 backend acts like a service provider (relying party), requesting authentication by and attributes from the user's identity provider. It uses public key cryptography to sign authentication requests and decrypt responses. These optional environment variables hold the backend's paired public and private keys in [the PEM format](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail). If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. +SATOSA's default SAML back-end microservice acts like a service provider (relying party), requesting authentication by and attributes from the user-selected identity provider. The microservice uses public key cryptography to sign authentication requests and decrypt responses. These environment variables provide the requisite keying material in [the PEM format](https://en.wikipedia.org/wiki/Privacy-Enhanced_Mail). If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. ### `SAML2_FRONTEND_CERT` and `SAML2_FRONTEND_KEY` -SATOSA's SAML2 frontend acts like an identity provider (credential service provider), processing authentication requests from and returning user attributes to trusted websites. It uses public key cryptography to sign authentication responses. These optional environment variables hold the frontend's paired public and private keys, also in the PEM format. If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. +SATOSA's default SAML front-end microservice acts like an identity provider (credential service provider), processing authentication requests from and returning user attributes to trusted websites. It uses public key cryptography to sign authentication responses. These environment variables provide the requisite keying material, also in the PEM format. If not specified, a new 2048-bit RSA key-pair will be generated using the hostname part of `BASE_URL`. diff --git a/satosa/metadata.json b/satosa/metadata.json new file mode 100644 index 000000000000..538442b9d959 --- /dev/null +++ b/satosa/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "api-management" + ] + } +} diff --git a/scratch/metadata.json b/scratch/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/scratch/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/silverpeas/README.md b/silverpeas/README.md index ac78f38b4ffa..434c50544bc7 100644 --- a/silverpeas/README.md +++ b/silverpeas/README.md @@ -24,13 +24,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`6.3`, `latest`](https://github.com/Silverpeas/docker-silverpeas-prod/blob/cab21d1a3a25bf15d24f27a156d3df894123bb10/Dockerfile) -- [`6.2.3-b1`](https://github.com/Silverpeas/docker-silverpeas-prod/blob/9714dcc94eb558508f085835a329a44f5c3cb52e/Dockerfile) +- [`6.4.4`, `latest`](https://github.com/Silverpeas/docker-silverpeas-prod/blob/2094ddb26caec9820d1852a9fa2bc3c2c84a1ada/Dockerfile) + +- [`6.3.6`](https://github.com/Silverpeas/docker-silverpeas-prod/blob/fb25885d1cd43172693b3acf79e9fac056a9db34/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/Silverpeas/docker-silverpeas-prod/issues](https://github.com/Silverpeas/docker-silverpeas-prod/issues) + [https://github.com/Silverpeas/docker-silverpeas-prod/issues](https://github.com/Silverpeas/docker-silverpeas-prod/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/silverpeas/) @@ -123,7 +124,9 @@ $ docker run --name silverpeas -p 8080:8000 -d \ silverpeas ``` -By default, `database` is the default hostname used by Silverpeas for its persistence backend. So, as the PostgreSQL database is linked here under the alias `database`, we don't have to explicitly indicate its hostname with the `DB_SERVER` environment variable. The Silverpeas images expose the 8000 port and here this port is mapped to the 8080 port of the host; Silverpeas is then accessible at `http://localhost:8080/silverpeas`. You can sign in Silverpeas with the administrator account `SilverAdmin` and with as password `SilverAdmin`. +By default, `database` is the default hostname used by Silverpeas for its persistence backend. So, as the PostgreSQL database is linked here under the alias `database`, we don't have to explicitly indicate its hostname with the `DB_SERVER` environment variable. The Silverpeas images expose the 8000 port and here this port is mapped to the 8080 port of the host. + +Silverpeas is then accessible at [http://localhost:8080/silverpeas](http://localhost:8080/silverpeas). You can sign in Silverpeas with the administrator account `SilverAdmin` and with as password `SilverAdmin`. Don't forget to change the password of the administrator account. By default, some volumes are created inside the container, so that we can access them in the host. (Refers the [Docker Documentation](https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume) to locate them.) Among them `/opt/silverpeas/log` and `/opt/silverpeas/data`: the first volume contains the logs produced by Silverpeas whereas the second volume contains all the data that are created and managed by the users in Silverpeas. Because the latter has already a directories structure created at image creation, a host directory cannot be mounted into the container at `opt/silverpeas/data` without losing the volume's content (the mount point overlays the pre-existing content of the volume). In our example, in order to easily locate the two volumes, we label them explicitly with respectively the labels `silverpeas-log` and `silverpeas-data`. (Using a [Data Volume Container](https://docs.docker.com/engine/userguide/containers/dockervolumes/) to map `/opt/silverpeas/log` and `/opt/silverpeas/data` is a better solution.) @@ -245,38 +248,6 @@ $ docker create --name silverpeas-store \ /bin/true ``` -# Document conversion - -Some features in Silverpeas (export, preview, content visualization, ...) requires a document converter. The document converter isn't mandatory to use Silverpeas but it gives access to additional features. The document conversion is performed in Silverpeas by the program LibreOffice running as a daemon. So, in order to enable and to use these features, you have first to use a Data Volume Container to store all the Silverpeas data and second to run a container embbeding a LibreOffice program running as a daemon. There is no official Docker images of LibreOffice but DockerHub hosts some of unofficial images of it ([xcgd/libreoffice](https://hub.docker.com/r/xcgd/libreoffice/) for example). - -Once a Data Volume Container is created for Silverpeas as explained in the section above, you have to link it with the Docker image running LibreOffice as a daemon in order the program have access the documents to convert: - -```console -$ docker run --name libreoffice -d \ - --volumes-from silverpeas-store \ - xcgd/libreoffice -``` - -Check the port at which the LibreOffice image is listening and then defines it in the Silverpeas configuration. In our example, `xcgd/libreoffice` listens by default the port 8997. The configuration parameters to communicate with LibreOffice are defined by the two following properties: - -- `CONVERTER_HOST` is either the IP address or the name of the host in which runs LibreOffice, -- `CONVERTER_PORT` is the port number at which the LibreOffice daemon listens. - -These properties have to be defined in the Silverpeas global configuration file `config.properties` that is mounted in the Data Volume Container: - - CONVERTER_HOST=libreoffice - CONVERTER_PORT=8997 - -Then the Docker image of Silverpeas can be ran: - -```console -$ docker run --name silverpeas -p 8080:8000 -d \ - --link postgresql:database \ - --link libreoffice:libreoffice \ - --volumes-from silverpeas-store \ - silverpeas -``` - # Logs You can follow the activity of Silverpeas by watching the logs generated in the mounted `/opt/silverpeas/log` directory. diff --git a/silverpeas/content.md b/silverpeas/content.md index 1bbd0c8b5ef6..acb5eadb34fb 100644 --- a/silverpeas/content.md +++ b/silverpeas/content.md @@ -75,7 +75,9 @@ $ docker run --name silverpeas -p 8080:8000 -d \ %%IMAGE%% ``` -By default, `database` is the default hostname used by Silverpeas for its persistence backend. So, as the PostgreSQL database is linked here under the alias `database`, we don't have to explicitly indicate its hostname with the `DB_SERVER` environment variable. The Silverpeas images expose the 8000 port and here this port is mapped to the 8080 port of the host; Silverpeas is then accessible at `http://localhost:8080/silverpeas`. You can sign in Silverpeas with the administrator account `SilverAdmin` and with as password `SilverAdmin`. +By default, `database` is the default hostname used by Silverpeas for its persistence backend. So, as the PostgreSQL database is linked here under the alias `database`, we don't have to explicitly indicate its hostname with the `DB_SERVER` environment variable. The Silverpeas images expose the 8000 port and here this port is mapped to the 8080 port of the host. + +Silverpeas is then accessible at [http://localhost:8080/silverpeas](http://localhost:8080/silverpeas). You can sign in Silverpeas with the administrator account `SilverAdmin` and with as password `SilverAdmin`. Don't forget to change the password of the administrator account. By default, some volumes are created inside the container, so that we can access them in the host. (Refers the [Docker Documentation](https://docs.docker.com/engine/tutorials/dockervolumes/#locating-a-volume) to locate them.) Among them `/opt/silverpeas/log` and `/opt/silverpeas/data`: the first volume contains the logs produced by Silverpeas whereas the second volume contains all the data that are created and managed by the users in Silverpeas. Because the latter has already a directories structure created at image creation, a host directory cannot be mounted into the container at `opt/silverpeas/data` without losing the volume's content (the mount point overlays the pre-existing content of the volume). In our example, in order to easily locate the two volumes, we label them explicitly with respectively the labels `silverpeas-log` and `silverpeas-data`. (Using a [Data Volume Container](https://docs.docker.com/engine/userguide/containers/dockervolumes/) to map `/opt/silverpeas/log` and `/opt/silverpeas/data` is a better solution.) @@ -197,38 +199,6 @@ $ docker create --name silverpeas-store \ /bin/true ``` -# Document conversion - -Some features in Silverpeas (export, preview, content visualization, ...) requires a document converter. The document converter isn't mandatory to use Silverpeas but it gives access to additional features. The document conversion is performed in Silverpeas by the program LibreOffice running as a daemon. So, in order to enable and to use these features, you have first to use a Data Volume Container to store all the Silverpeas data and second to run a container embbeding a LibreOffice program running as a daemon. There is no official Docker images of LibreOffice but DockerHub hosts some of unofficial images of it ([xcgd/libreoffice](https://hub.docker.com/r/xcgd/libreoffice/) for example). - -Once a Data Volume Container is created for Silverpeas as explained in the section above, you have to link it with the Docker image running LibreOffice as a daemon in order the program have access the documents to convert: - -```console -$ docker run --name libreoffice -d \ - --volumes-from silverpeas-store \ - xcgd/libreoffice -``` - -Check the port at which the LibreOffice image is listening and then defines it in the Silverpeas configuration. In our example, `xcgd/libreoffice` listens by default the port 8997. The configuration parameters to communicate with LibreOffice are defined by the two following properties: - -- `CONVERTER_HOST` is either the IP address or the name of the host in which runs LibreOffice, -- `CONVERTER_PORT` is the port number at which the LibreOffice daemon listens. - -These properties have to be defined in the Silverpeas global configuration file `config.properties` that is mounted in the Data Volume Container: - - CONVERTER_HOST=libreoffice - CONVERTER_PORT=8997 - -Then the Docker image of Silverpeas can be ran: - -```console -$ docker run --name silverpeas -p 8080:8000 -d \ - --link postgresql:database \ - --link libreoffice:libreoffice \ - --volumes-from silverpeas-store \ - %%IMAGE%% -``` - # Logs You can follow the activity of Silverpeas by watching the logs generated in the mounted `/opt/silverpeas/log` directory. diff --git a/silverpeas/metadata.json b/silverpeas/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/silverpeas/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/sl/README-short.txt b/sl/README-short.txt deleted file mode 100644 index 76594132e25f..000000000000 --- a/sl/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Official containers for Scientific Linux(SL) diff --git a/sl/README.md b/sl/README.md deleted file mode 100644 index 981fa5d96c59..000000000000 --- a/sl/README.md +++ /dev/null @@ -1,131 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [Scientific Linux Development Team](https://github.com/scientificlinux/sl-docker) - -- **Where to get help**: - [SL Faq](https://www.scientificlinux.org/documentation/faq) or [Email Lists](https://www.scientificlinux.org/community) - -# Supported tags and respective `Dockerfile` links - -- [`7`, `latest`](https://github.com/scientificlinux/sl-docker/blob/b2ec52ef8c9e9a11d1bb4ea5441552c21f0b523b/sl7/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/scientificlinux/sl-docker/issues](https://github.com/scientificlinux/sl-docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/sl/) - -- **Published image artifact details**: - [repo-info repo's `repos/sl/` directory](https://github.com/docker-library/repo-info/blob/master/repos/sl) ([history](https://github.com/docker-library/repo-info/commits/master/repos/sl)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/sl` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fsl) - [official-images repo's `library/sl` file](https://github.com/docker-library/official-images/blob/master/library/sl) ([history](https://github.com/docker-library/official-images/commits/master/library/sl)) - -- **Source of this description**: - [docs repo's `sl/` directory](https://github.com/docker-library/docs/tree/master/sl) ([history](https://github.com/docker-library/docs/commits/master/sl)) - -# Scientific Linux - -![logo](https://raw.githubusercontent.com/docker-library/docs/9d3c9d2eb97c9558ed53dc5f7f837654d455f9e5/sl/logo.png) - -These images contain [Scientific Linux](http://www.scientificlinux.org/). - -## About Scientific Linux - -Scientific Linux is a [Fermilab](http://fnal.gov/) sponsored project. Our primary user base is within the High Energy and High Intensity Physics community. However, our users come from a wide variety of industries with various use cases all over the globe – and sometimes off of it! - -Our Mission: - -> Driven by Fermilab’s scientific mission and focusing on the changing needs of experimental facilities, Scientific Linux should provide a world class environment for scientific computing needs. - -Scientific Linux is a rebuild of Red Hat Enterprise Linux (property of Red Hat Inc. NYSE:RHT). - -Please see [About Scientific Linux](http://www.scientificlinux.org/about/) and [Why Make Scientific Linux](http://www.scientificlinux.org/about/why-make-scientific-linux/) for more information. - -## Container Tags - -A tag will be provided for each of the [maintained major releases](http://www.scientificlinux.org/downloads/sl-versions/) of Scientific Linux (`6`, `7`). - -The `latest` tag will track the highest version numbered release of Scientific Linux. - -Updated images will be released roughly once per month. - -## Build Process - -The root filesystem for these docker images is built on our internal build system. - -## Docker, overlayfs, and yum - -Recent Docker versions support the [overlayfs](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/) backend, which is enabled by default on most distros supporting it from Docker 1.13 onwards. On SL 6 and 7, that backend requires `yum-plugin-ovl` to be installed and enabled, which it is in our containers. Make it sure you retain the `plugins=1` option in `/etc/yum.conf` if you update that file; otherwise, you may encounter errors related to rpmdb checksum failure - see [Docker ticket 10180](https://github.com/docker/docker/issues/10180) for more details. - -## Example Usage - -You can try out the containers via: - -```console -$ docker pull sl -$ docker run -it sl:6 cat /etc/redhat-release -$ docker run -it sl:7 cat /etc/redhat-release -``` - -## Enabling systemd in SL7 - -The SL7 docker container ships with systemd mostly functional. You can build a SL7 systemd enabled container with the following Dockerfile. - -In order to run a container with systemd, you will need to mount the cgroups volumes from the host. - -```Dockerfile -# Example SL7 systemd Dockerfile -FROM sl:7 -ENV container docker -### This example enables httpd via systemd within the container -RUN yum -y install httpd && yum clean all && systemctl enable httpd.service -EXPOSE 80 -### End of example commands for httpd via systemd -VOLUME [ "/sys/fs/cgroup" ] -CMD ["/usr/sbin/init"] -``` - -You can build and run this example (with apache) via: - -```console -$ docker build --rm -t local/mycontainer your/path -$ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/mycontainer -``` - -Which will run systemd within the container in a limited context. - -It is recommended that you install any relevant [OCI hooks](https://www.opencontainers.org/) for your container host - such as `oci-register-machine` or `oci-systemd-hook`. - -Some container hosts must add `--tmpfs /run` to the `docker run` command. - -# License - -By default the SL docker images do not include documentation or license files. If you require them, please remove `tsflags=nodocs` from `/etc/yum.conf` and run `yum reinstall mypackage` to recieve the documentation. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `sl/` directory](https://github.com/docker-library/repo-info/tree/master/repos/sl). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/sl/content.md b/sl/content.md deleted file mode 100644 index f3ba5685dd26..000000000000 --- a/sl/content.md +++ /dev/null @@ -1,74 +0,0 @@ -# Scientific Linux - -%%LOGO%% - -These images contain [Scientific Linux](http://www.scientificlinux.org/). - -## About Scientific Linux - -Scientific Linux is a [Fermilab](http://fnal.gov/) sponsored project. Our primary user base is within the High Energy and High Intensity Physics community. However, our users come from a wide variety of industries with various use cases all over the globe – and sometimes off of it! - -Our Mission: - -> Driven by Fermilab’s scientific mission and focusing on the changing needs of experimental facilities, Scientific Linux should provide a world class environment for scientific computing needs. - -Scientific Linux is a rebuild of Red Hat Enterprise Linux (property of Red Hat Inc. NYSE:RHT). - -Please see [About Scientific Linux](http://www.scientificlinux.org/about/) and [Why Make Scientific Linux](http://www.scientificlinux.org/about/why-make-scientific-linux/) for more information. - -## Container Tags - -A tag will be provided for each of the [maintained major releases](http://www.scientificlinux.org/downloads/sl-versions/) of Scientific Linux (`6`, `7`). - -The `latest` tag will track the highest version numbered release of Scientific Linux. - -Updated images will be released roughly once per month. - -## Build Process - -The root filesystem for these docker images is built on our internal build system. - -## Docker, overlayfs, and yum - -Recent Docker versions support the [overlayfs](https://docs.docker.com/engine/userguide/storagedriver/overlayfs-driver/) backend, which is enabled by default on most distros supporting it from Docker 1.13 onwards. On SL 6 and 7, that backend requires `yum-plugin-ovl` to be installed and enabled, which it is in our containers. Make it sure you retain the `plugins=1` option in `/etc/yum.conf` if you update that file; otherwise, you may encounter errors related to rpmdb checksum failure - see [Docker ticket 10180](https://github.com/docker/docker/issues/10180) for more details. - -## Example Usage - -You can try out the containers via: - -```console -$ docker pull %%IMAGE%% -$ docker run -it %%IMAGE%%:6 cat /etc/redhat-release -$ docker run -it %%IMAGE%%:7 cat /etc/redhat-release -``` - -## Enabling systemd in SL7 - -The SL7 docker container ships with systemd mostly functional. You can build a SL7 systemd enabled container with the following Dockerfile. - -In order to run a container with systemd, you will need to mount the cgroups volumes from the host. - -```Dockerfile -# Example SL7 systemd Dockerfile -FROM %%IMAGE%%:7 -ENV container docker -### This example enables httpd via systemd within the container -RUN yum -y install httpd && yum clean all && systemctl enable httpd.service -EXPOSE 80 -### End of example commands for httpd via systemd -VOLUME [ "/sys/fs/cgroup" ] -CMD ["/usr/sbin/init"] -``` - -You can build and run this example (with apache) via: - -```console -$ docker build --rm -t local/mycontainer your/path -$ docker run -ti -v /sys/fs/cgroup:/sys/fs/cgroup:ro -p 80:80 local/mycontainer -``` - -Which will run systemd within the container in a limited context. - -It is recommended that you install any relevant [OCI hooks](https://www.opencontainers.org/) for your container host - such as `oci-register-machine` or `oci-systemd-hook`. - -Some container hosts must add `--tmpfs /run` to the `docker run` command. diff --git a/sl/get-help.md b/sl/get-help.md deleted file mode 100644 index 3f914aef77d5..000000000000 --- a/sl/get-help.md +++ /dev/null @@ -1 +0,0 @@ -[SL Faq](https://www.scientificlinux.org/documentation/faq) or [Email Lists](https://www.scientificlinux.org/community) diff --git a/sl/github-repo b/sl/github-repo deleted file mode 100644 index 54178e3a5660..000000000000 --- a/sl/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/scientificlinux/sl-docker diff --git a/sl/license.md b/sl/license.md deleted file mode 100644 index cb3f67d4196a..000000000000 --- a/sl/license.md +++ /dev/null @@ -1 +0,0 @@ -By default the SL docker images do not include documentation or license files. If you require them, please remove `tsflags=nodocs` from `/etc/yum.conf` and run `yum reinstall mypackage` to recieve the documentation. diff --git a/sl/logo.png b/sl/logo.png deleted file mode 100644 index 01ac3333cc7d..000000000000 Binary files a/sl/logo.png and /dev/null differ diff --git a/sl/maintainer.md b/sl/maintainer.md deleted file mode 100644 index 43e37b044a8d..000000000000 --- a/sl/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Scientific Linux Development Team](%%GITHUB-REPO%%) diff --git a/solr/README-short.txt b/solr/README-short.txt index 257a196c62fd..816408c133ec 100644 --- a/solr/README-short.txt +++ b/solr/README-short.txt @@ -1 +1 @@ -Apache Solr is the popular, blazing-fast, open source search platform built on Apache Lucene™. +Solr is the blazing-fast, open source, multi-modal search platform built on Apache Lucene. diff --git a/solr/README.md b/solr/README.md index 79751eae676f..d8673a2577b2 100644 --- a/solr/README.md +++ b/solr/README.md @@ -24,10 +24,13 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`9.1.0`, `9.1`, `9`, `latest`](https://github.com/apache/solr-docker/blob/c07ee789c60dd4be20d63e8172180ac8a2bd919e/9.1/Dockerfile) -- [`9.0.0`, `9.0`](https://github.com/apache/solr-docker/blob/c07ee789c60dd4be20d63e8172180ac8a2bd919e/9.0/Dockerfile) -- [`8.11.2`, `8.11`, `8`](https://github.com/apache/solr-docker/blob/c07ee789c60dd4be20d63e8172180ac8a2bd919e/8.11/Dockerfile) -- [`8.11.2-slim`, `8.11-slim`, `8-slim`](https://github.com/apache/solr-docker/blob/c07ee789c60dd4be20d63e8172180ac8a2bd919e/8.11-slim/Dockerfile) +- [`9.10.0`, `9.10`, `9`, `latest`](https://github.com/apache/solr-docker/blob/566a79e9212bc9eb117bffb338b6200b102962a7/9.10/Dockerfile) + +- [`9.10.0-slim`, `9.10-slim`, `9-slim`, `slim`](https://github.com/apache/solr-docker/blob/566a79e9212bc9eb117bffb338b6200b102962a7/9.10-slim/Dockerfile) + +- [`9.9.0`, `9.9`](https://github.com/apache/solr-docker/blob/aa51c522c3e74cd1b2886209ea249358a34d324a/9.9/Dockerfile) + +- [`9.9.0-slim`, `9.9-slim`](https://github.com/apache/solr-docker/blob/aa51c522c3e74cd1b2886209ea249358a34d324a/9.9-slim/Dockerfile) # Quick reference (cont.) @@ -35,7 +38,7 @@ WARNING: [The Solr Users mailing list](https://solr.apache.org/community.html#mailing-lists-chat) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/solr/), [`arm32v7`](https://hub.docker.com/r/arm32v7/solr/), [`arm64v8`](https://hub.docker.com/r/arm64v8/solr/), [`ppc64le`](https://hub.docker.com/r/ppc64le/solr/), [`s390x`](https://hub.docker.com/r/s390x/solr/) + [`amd64`](https://hub.docker.com/r/amd64/solr/), [`arm64v8`](https://hub.docker.com/r/arm64v8/solr/), [`ppc64le`](https://hub.docker.com/r/ppc64le/solr/), [`s390x`](https://hub.docker.com/r/s390x/solr/) - **Published image artifact details**: [repo-info repo's `repos/solr/` directory](https://github.com/docker-library/repo-info/blob/master/repos/solr) ([history](https://github.com/docker-library/repo-info/commits/master/repos/solr)) @@ -50,7 +53,7 @@ WARNING: # What is Solr? -Solr is the popular, blazing fast, open source NoSQL search platform from the Apache Lucene project. Its major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, rich document handling, and geospatial search. Solr is highly scalable, providing fault tolerant distributed search and indexing, and powers the search and navigation features of many of the world's largest internet sites. +Solr is the blazing-fast, open source, multi-modal search platform built on Apache Lucene. It powers full-text, vector, analytics, and geospatial search at many of the world's largest organizations. Other major features include Kubernetes integration, streaming, highlighting, faceting, and spellchecking. Learn more on [Apache Solr homepage](http://solr.apache.org/) and in the [Apache Solr Reference Guide](https://solr.apache.org/guide/). @@ -78,16 +81,6 @@ Please direct any usage questions to the [Solr users mailing list](https://solr. This project was started in 2015 by [Martijn Koster](https://github.com/makuk66) in the [github.com/docker-solr/docker-solr](https://github.com/docker-solr/docker-solr) repository. In 2019, the maintainership and copyright was transferred to the Apache Solr project. Many thanks to Martijn for all your contributions over the years! -# NOTE: Not vulnerable to Log4J 2 "Log4shell" - -Some Docker images *were* vulnerable to one of a pair of vulnerabilities in Log4J 2. But we have mitigated *[supported](https://hub.docker.com/_/solr?tab=tags)* images (and some others) and re-published them. You may need to re-pull the image you are using. For those images prior to 8.11.1, Solr is using a popular technique to mitigate the problem -- setting `log4j2.formatMsgNoLookups`. The Solr maintainers have deemed this adequate based specifically on how Solr uses logging; it won't be adequate for all projects that use Log4J. Scanning software might alert you to the presence of an older Log4J JAR file, however it can't know if your software (Solr) uses the artifacts in a vulnerable way. To validate the mitigation being in place, look for `-Dlog4j2.formatMsgNoLookups` in the Args section of Solr's front admin screen. As of Solr 8.11.1, Solr is using Log4J 2.16.0. - -References: - -- [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228): Solr *was* vulnerable to this. -- [CVE-2021-45046](https://nvd.nist.gov/vuln/detail/CVE-2021-45046): Solr *never was* vulnerable to this. -- [Solr security bulletin](https://solr.apache.org/security.html#apache-solr-affected-by-apache-log4j-cve-2021-44228) - # Image Variants The `solr` images come in many flavors, each designed for a specific use case. diff --git a/solr/content.md b/solr/content.md index 2bc885d95d65..3333462df5b4 100644 --- a/solr/content.md +++ b/solr/content.md @@ -1,6 +1,6 @@ # What is Solr? -Solr is the popular, blazing fast, open source NoSQL search platform from the Apache Lucene project. Its major features include powerful full-text search, hit highlighting, faceted search, dynamic clustering, database integration, rich document handling, and geospatial search. Solr is highly scalable, providing fault tolerant distributed search and indexing, and powers the search and navigation features of many of the world's largest internet sites. +Solr is the blazing-fast, open source, multi-modal search platform built on Apache Lucene. It powers full-text, vector, analytics, and geospatial search at many of the world's largest organizations. Other major features include Kubernetes integration, streaming, highlighting, faceting, and spellchecking. Learn more on [Apache Solr homepage](http://solr.apache.org/) and in the [Apache Solr Reference Guide](https://solr.apache.org/guide/). @@ -27,13 +27,3 @@ Please direct any usage questions to the [Solr users mailing list](https://solr. # History This project was started in 2015 by [Martijn Koster](https://github.com/makuk66) in the [github.com/docker-solr/docker-solr](https://github.com/docker-solr/docker-solr) repository. In 2019, the maintainership and copyright was transferred to the Apache Solr project. Many thanks to Martijn for all your contributions over the years! - -# NOTE: Not vulnerable to Log4J 2 "Log4shell" - -Some Docker images *were* vulnerable to one of a pair of vulnerabilities in Log4J 2. But we have mitigated *[supported](https://hub.docker.com/_/solr?tab=tags)* images (and some others) and re-published them. You may need to re-pull the image you are using. For those images prior to 8.11.1, Solr is using a popular technique to mitigate the problem -- setting `log4j2.formatMsgNoLookups`. The Solr maintainers have deemed this adequate based specifically on how Solr uses logging; it won't be adequate for all projects that use Log4J. Scanning software might alert you to the presence of an older Log4J JAR file, however it can't know if your software (Solr) uses the artifacts in a vulnerable way. To validate the mitigation being in place, look for `-Dlog4j2.formatMsgNoLookups` in the Args section of Solr's front admin screen. As of Solr 8.11.1, Solr is using Log4J 2.16.0. - -References: - -- [CVE-2021-44228](https://nvd.nist.gov/vuln/detail/CVE-2021-44228): Solr *was* vulnerable to this. -- [CVE-2021-45046](https://nvd.nist.gov/vuln/detail/CVE-2021-45046): Solr *never was* vulnerable to this. -- [Solr security bulletin](https://solr.apache.org/security.html#apache-solr-affected-by-apache-log4j-cve-2021-44228) diff --git a/solr/metadata.json b/solr/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/solr/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +} diff --git a/sonarqube/README-short.txt b/sonarqube/README-short.txt index d1147e9c9c88..bf41551a0a53 100644 --- a/sonarqube/README-short.txt +++ b/sonarqube/README-short.txt @@ -1 +1 @@ -SonarQube is an open source platform for continuous inspection of code quality. \ No newline at end of file +Official images for SonarQube, code analysis tool for code quality and security diff --git a/sonarqube/README.md b/sonarqube/README.md index cf4d06ef3cb6..985bda0378ce 100644 --- a/sonarqube/README.md +++ b/sonarqube/README.md @@ -24,24 +24,39 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.9.10-community`, `8.9-community`, `8-community`, `lts`, `lts-community`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/8/community/Dockerfile) -- [`8.9.10-developer`, `8.9-developer`, `8-developer`, `lts-developer`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/8/developer/Dockerfile) -- [`8.9.10-enterprise`, `8.9-enterprise`, `8-enterprise`, `lts-enterprise`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/8/enterprise/Dockerfile) -- [`8.9.10-datacenter-app`, `8.9-datacenter-app`, `8-datacenter-app`, `lts-datacenter-app`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/8/datacenter/app/Dockerfile) -- [`8.9.10-datacenter-search`, `8.9-datacenter-search`, `8-datacenter-search`, `lts-datacenter-search`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/8/datacenter/search/Dockerfile) -- [`9.8.0-community`, `9.8-community`, `9-community`, `community`, `latest`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/9/community/Dockerfile) -- [`9.8.0-developer`, `9.8-developer`, `9-developer`, `developer`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/9/developer/Dockerfile) -- [`9.8.0-enterprise`, `9.8-enterprise`, `9-enterprise`, `enterprise`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/9/enterprise/Dockerfile) -- [`9.8.0-datacenter-app`, `9.8-datacenter-app`, `9-datacenter-app`, `datacenter-app`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/9/datacenter/app/Dockerfile) -- [`9.8.0-datacenter-search`, `9.8-datacenter-search`, `9-datacenter-search`, `datacenter-search`](https://github.com/SonarSource/docker-sonarqube/blob/6e6bd428f38d5ba5b6169fd15d29ce8dbe00921f/9/datacenter/search/Dockerfile) +- [`2025.5.0-developer`, `2025.5-developer`, `developer`](https://github.com/SonarSource/docker-sonarqube/blob/2d77476619099afc3df0129af7ebbf372fb72336/commercial-editions/developer/Dockerfile) + +- [`2025.5.0-enterprise`, `2025.5-enterprise`, `enterprise`](https://github.com/SonarSource/docker-sonarqube/blob/2d77476619099afc3df0129af7ebbf372fb72336/commercial-editions/enterprise/Dockerfile) + +- [`2025.5.0-datacenter-app`, `2025.5-datacenter-app`, `datacenter-app`](https://github.com/SonarSource/docker-sonarqube/blob/2d77476619099afc3df0129af7ebbf372fb72336/commercial-editions/datacenter/app/Dockerfile) + +- [`2025.5.0-datacenter-search`, `2025.5-datacenter-search`, `datacenter-search`](https://github.com/SonarSource/docker-sonarqube/blob/2d77476619099afc3df0129af7ebbf372fb72336/commercial-editions/datacenter/search/Dockerfile) + +- [`2025.4.3-developer`, `2025.4-developer`, `2025.4-lta-developer`](https://github.com/SonarSource/docker-sonarqube/blob/ef0050f30ef75089692a0808b6a002359083fb5a/commercial-editions/developer/Dockerfile) + +- [`2025.4.3-enterprise`, `2025.4-enterprise`, `2025.4-lta-enterprise`](https://github.com/SonarSource/docker-sonarqube/blob/ef0050f30ef75089692a0808b6a002359083fb5a/commercial-editions/enterprise/Dockerfile) + +- [`2025.4.3-datacenter-app`, `2025.4-datacenter-app`, `2025.4-lta-datacenter-app`](https://github.com/SonarSource/docker-sonarqube/blob/ef0050f30ef75089692a0808b6a002359083fb5a/commercial-editions/datacenter/app/Dockerfile) + +- [`2025.4.3-datacenter-search`, `2025.4-datacenter-search`, `2025.4-lta-datacenter-search`](https://github.com/SonarSource/docker-sonarqube/blob/ef0050f30ef75089692a0808b6a002359083fb5a/commercial-editions/datacenter/search/Dockerfile) + +- [`2025.1.4-developer`, `2025.1-developer`, `2025-lta-developer`](https://github.com/SonarSource/docker-sonarqube/blob/5e2621e56095f67b6a28edd3016ef2f10bca2947/commercial-editions/developer/Dockerfile) + +- [`2025.1.4-enterprise`, `2025.1-enterprise`, `2025-lta-enterprise`](https://github.com/SonarSource/docker-sonarqube/blob/5e2621e56095f67b6a28edd3016ef2f10bca2947/commercial-editions/enterprise/Dockerfile) + +- [`2025.1.4-datacenter-app`, `2025.1-datacenter-app`, `2025-lta-datacenter-app`](https://github.com/SonarSource/docker-sonarqube/blob/5e2621e56095f67b6a28edd3016ef2f10bca2947/commercial-editions/datacenter/app/Dockerfile) + +- [`2025.1.4-datacenter-search`, `2025.1-datacenter-search`, `2025-lta-datacenter-search`](https://github.com/SonarSource/docker-sonarqube/blob/5e2621e56095f67b6a28edd3016ef2f10bca2947/commercial-editions/datacenter/search/Dockerfile) + +- [`25.11.0.114957-community`, `community`, `latest`](https://github.com/SonarSource/docker-sonarqube/blob/2d77476619099afc3df0129af7ebbf372fb72336/community-build/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/SonarSource/docker-sonarqube/issues](https://github.com/SonarSource/docker-sonarqube/issues) + [https://github.com/SonarSource/docker-sonarqube/issues](https://github.com/SonarSource/docker-sonarqube/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/sonarqube/) + [`amd64`](https://hub.docker.com/r/amd64/sonarqube/), [`arm64v8`](https://hub.docker.com/r/arm64v8/sonarqube/) - **Published image artifact details**: [repo-info repo's `repos/sonarqube/` directory](https://github.com/docker-library/repo-info/blob/master/repos/sonarqube) ([history](https://github.com/docker-library/repo-info/commits/master/repos/sonarqube)) @@ -54,15 +69,17 @@ WARNING: - **Source of this description**: [docs repo's `sonarqube/` directory](https://github.com/docker-library/docs/tree/master/sonarqube) ([history](https://github.com/docker-library/docs/commits/master/sonarqube)) -# What is SonarQube? +# What is `sonarqube`? + +`sonarqube` Docker repository stores the official Sonar images for SonarQube Server and SonarQube Community Build. -[SonarQube](https://www.sonarqube.org/) is the leading tool for continuously inspecting the Code Quality and Security of your codebases, and guiding development teams during Code Reviews. Covering 27 programming languages, while pairing-up with your existing software pipeline, SonarQube provides clear remediation guidance for developers to understand and fix issues, and for teams overall to deliver better and safer software. With over 225,000 deployments helping small development teams as well as global organizations, SonarQube provides the means for all teams and companies around the world to own and impact their Code Quality and Security. +[SonarQube Server](https://www.sonarsource.com/products/sonarqube/) (formerly SonarQube) is an on-premise analysis tool designed to detect quality and security issues in 30+ languages, frameworks, and IaC platforms. The solution also provides fix recommendations leveraging AI with Sonar's AI CodeFix capability. By integrating directly with your CI pipeline or on one of the supported DevOps platforms, your code is checked against an extensive set of rules that cover many attributes of code, such as maintainability, reliability, and security issues on each merge/pull request. -![logo](https://raw.githubusercontent.com/docker-library/docs/84479f149eb7d748d5dc057665eb96f923e60dc1/sonarqube/logo.png) +[SonarQube Community Build](https://www.sonarsource.com/open-source-editions/sonarqube-community-edition/) (formerly SonarQube Community) is Sonar's self-managed free offering, released on a monthly schedule. It includes the latest core capabilities available in open source, providing essential features such as bug detection, identification of code smells, and basic security issue analysis across 21 programming languages and frameworks. For advanced security analysis, enterprise-grade integrations, and scalability features, the commercial version, SonarQube Server, is available. -# How to use this image +## How to use this image -Here you'll find the Docker images for the Community Edition, Developer Edition, Enterprise Edition, and Data Center Edition of SonarQube. +Here, you'll find the Docker images for the SonarQube Server (Developer Edition, Enterprise Edition, and Data Center Edition), as well as for SonarQube Community Build. ## Docker Host Requirements @@ -77,25 +94,41 @@ ulimit -n 131072 ulimit -u 8192 ``` -## Try Out SonarQube +## Demo -To quickly run a demo instance, see Using Docker on the [Try Out SonarQube](https://docs.sonarqube.org/latest/setup/get-started-2-minutes/) page. When you are ready to move to a more sustainable setup, take some time to read the **Installation** and **Configuration** sections below. +To quickly run a demo instance, see Using Docker on the [Try Out SonarQube](https://docs.sonarsource.com/sonarqube-server/latest/try-out-sonarqube/) page. When you are ready to move to a more sustainable setup, take some time to read the **Installation** and **Configuration** sections below. ## Installation -For installation instructions, see Installing the Server from the Docker Image on the [Install the Server](https://docs.sonarqube.org/latest/setup/install-server/) page. +> **Multi-platform support**: Starting from SonarQube `9.9`, the docker images support running both on `amd64` architecture and `arm64`-based Apple Silicon (M1). + +For installation instructions, see Installing the Server from the Docker Image on the [Install the Server](https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server/installing-sonarqube-from-docker/) page. -To run a cluster with the Data Center Edition, please refer to Installing SonarQube from the Docker Image on the [Install the Server as a Cluster](https://docs.sonarqube.org/latest/setup/install-cluster/) page. +To run a cluster with the SonarQube Server Data Center Edition, please refer to Installing SonarQube Server from the Docker Image on the [Install the Server as a Cluster](https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server-as-a-cluster/) page. + +### Long-Term Active (LTA) versions + +[LTA](https://www.sonarsource.com/products/sonarqube/downloads/lta/) refers to the version of SonarQube Server that will stay active for a longer period of time. Currently, `2025.4` is the latest LTA version and should be used when LTA version is preferred. To install the latest LTA, you can pull one of the `2025.4-lta-` tags. ## Configuration +### Port binding + +By default, the server running within the container will listen on port 9000. You can expose the container port 9000 to the host port 9000 with the `-p 9000:9000` argument to `docker run`, like the command below: + +```console +docker run --name sonarqube-custom -p 9000:9000 sonarqube:community +``` + +You can then browse to `http://localhost:9000` or `http://host-ip:9000` in your web browser to access the web interface. + ### Database By default, the image will use an embedded H2 database that is not suited for production. -> **Warning:** Only a single instance of SonarQube can connect to a database schema. If you're using a Docker Swarm or Kubernetes, make sure that multiple SonarQube instances are never running on the same database schema simultaneously. This will cause SonarQube to behave unpredictably and data will be corrupted. There is no safeguard until [SONAR-10362](https://jira.sonarsource.com/browse/SONAR-10362). The Data Center Edition has the same limitation in that only one cluster can connect to one database schema at the same time. +> **Warning:** Only a single instance of SonarQube Server or SonarQube Community Build can connect to a database schema. If you're using a Docker Swarm or Kubernetes, make sure that multiple instances are never running on the same database schema simultaneously. This will cause the SonarQube to behave unpredictably, and data will be corrupted. There is no safeguard, as described on [SONAR-10362](https://jira.sonarsource.com/browse/SONAR-10362). The SonarQube Server Data Center Edition has the same limitation in that only one cluster can connect to one database schema at the same time. -Set up a database by following the "Installing the Database" section of https://docs.sonarqube.org/latest/setup/install-server/. +Set up a database by following the ["Installing the Database"](https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server/installing-the-database/) section. ### Use volumes @@ -109,7 +142,7 @@ We recommend creating volumes for the following directories: ## Upgrading -For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade the Server](https://docs.sonarqube.org/latest/setup/upgrading/) page. +For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade the Server](https://docs.sonarsource.com/sonarqube-server/latest/server-upgrade-and-maintenance/upgrade/upgrade/) page. ## Advanced configuration @@ -118,7 +151,7 @@ For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade th In some environments, it may make more sense to prepare a custom image containing your configuration. A `Dockerfile` to achieve this may be as simple as: ```dockerfile -FROM sonarqube:8.9-community +FROM sonarqube:community COPY sonar-custom-plugin-1.0.jar /opt/sonarqube/extensions/ ``` @@ -129,9 +162,9 @@ $ docker build --tag=sonarqube-custom . $ docker run -ti sonarqube-custom ``` -### Avoid hard termination of SonarQube +### Avoid hard termination -A SonarQube instance will stop gracefully, waiting for any tasks in progress to finish. Waiting for in-progress tasks to finish can take a large amount of time which the docker does not expect by default when stopping. To avoid having the SonarQube instance killed by the Docker daemon after 10 seconds, it is best to configure a timeout to stop the container with `--stop-timeout`. For example: +The instance will stop gracefully, waiting for any tasks in progress to finish. Waiting for in-progress tasks to finish can take a large amount of time, which the docker does not expect by default when stopping. To avoid having the instance killed by the Docker daemon after 10 seconds, it is best to configure a timeout to stop the container with `--stop-timeout`. For example: ```console docker run --stop-timeout 3600 sonarqube @@ -139,11 +172,11 @@ docker run --stop-timeout 3600 sonarqube ## Administration -The administration guide can be found [here](https://redirect.sonarsource.com/doc/administration-guide.html). +Information about administering your instance of SonarQube Server begins [here](https://docs.sonarsource.com/sonarqube-server/latest/instance-administration/overview/). # License -SonarQube Community Edition is licensed under [GNU Lesser General Public License, Version 3.0](http://www.gnu.org/licenses/lgpl.txt). SonarQube Developer, Enterprise, and Data Center Editions are licensed under [SonarSource Terms and Conditions](https://www.sonarsource.com/docs/sonarsource_terms_and_conditions.pdf). +SonarQube Community Build is licensed under [GNU Lesser General Public License, Version 3.0](http://www.gnu.org/licenses/lgpl.txt). SonarQube Server Developer, Enterprise, and Data Center Editions are licensed under [SonarSource Terms and Condition](https://www.sonarsource.com/docs/sonarsource_terms_and_conditions.pdf). As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/sonarqube/content.md b/sonarqube/content.md index 03386a25d96a..ba3ca31cef8f 100644 --- a/sonarqube/content.md +++ b/sonarqube/content.md @@ -1,12 +1,14 @@ -# What is SonarQube? +# What is `sonarqube`? -[SonarQube](https://www.sonarqube.org/) is the leading tool for continuously inspecting the Code Quality and Security of your codebases, and guiding development teams during Code Reviews. Covering 27 programming languages, while pairing-up with your existing software pipeline, SonarQube provides clear remediation guidance for developers to understand and fix issues, and for teams overall to deliver better and safer software. With over 225,000 deployments helping small development teams as well as global organizations, SonarQube provides the means for all teams and companies around the world to own and impact their Code Quality and Security. +`sonarqube` Docker repository stores the official Sonar images for SonarQube Server and SonarQube Community Build. -%%LOGO%% +[SonarQube Server](https://www.sonarsource.com/products/sonarqube/) (formerly SonarQube) is an on-premise analysis tool designed to detect quality and security issues in 30+ languages, frameworks, and IaC platforms. The solution also provides fix recommendations leveraging AI with Sonar's AI CodeFix capability. By integrating directly with your CI pipeline or on one of the supported DevOps platforms, your code is checked against an extensive set of rules that cover many attributes of code, such as maintainability, reliability, and security issues on each merge/pull request. -# How to use this image +[SonarQube Community Build](https://www.sonarsource.com/open-source-editions/sonarqube-community-edition/) (formerly SonarQube Community) is Sonar's self-managed free offering, released on a monthly schedule. It includes the latest core capabilities available in open source, providing essential features such as bug detection, identification of code smells, and basic security issue analysis across 21 programming languages and frameworks. For advanced security analysis, enterprise-grade integrations, and scalability features, the commercial version, SonarQube Server, is available. -Here you'll find the Docker images for the Community Edition, Developer Edition, Enterprise Edition, and Data Center Edition of SonarQube. +## How to use this image + +Here, you'll find the Docker images for the SonarQube Server (Developer Edition, Enterprise Edition, and Data Center Edition), as well as for SonarQube Community Build. ## Docker Host Requirements @@ -21,25 +23,41 @@ ulimit -n 131072 ulimit -u 8192 ``` -## Try Out SonarQube +## Demo -To quickly run a demo instance, see Using Docker on the [Try Out SonarQube](https://docs.sonarqube.org/latest/setup/get-started-2-minutes/) page. When you are ready to move to a more sustainable setup, take some time to read the **Installation** and **Configuration** sections below. +To quickly run a demo instance, see Using Docker on the [Try Out SonarQube](https://docs.sonarsource.com/sonarqube-server/latest/try-out-sonarqube/) page. When you are ready to move to a more sustainable setup, take some time to read the **Installation** and **Configuration** sections below. ## Installation -For installation instructions, see Installing the Server from the Docker Image on the [Install the Server](https://docs.sonarqube.org/latest/setup/install-server/) page. +> **Multi-platform support**: Starting from SonarQube `9.9`, the docker images support running both on `amd64` architecture and `arm64`-based Apple Silicon (M1). + +For installation instructions, see Installing the Server from the Docker Image on the [Install the Server](https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server/installing-sonarqube-from-docker/) page. + +To run a cluster with the SonarQube Server Data Center Edition, please refer to Installing SonarQube Server from the Docker Image on the [Install the Server as a Cluster](https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server-as-a-cluster/) page. -To run a cluster with the Data Center Edition, please refer to Installing SonarQube from the Docker Image on the [Install the Server as a Cluster](https://docs.sonarqube.org/latest/setup/install-cluster/) page. +### Long-Term Active (LTA) versions + +[LTA](https://www.sonarsource.com/products/sonarqube/downloads/lta/) refers to the version of SonarQube Server that will stay active for a longer period of time. Currently, `2025.4` is the latest LTA version and should be used when LTA version is preferred. To install the latest LTA, you can pull one of the `2025.4-lta-` tags. ## Configuration +### Port binding + +By default, the server running within the container will listen on port 9000. You can expose the container port 9000 to the host port 9000 with the `-p 9000:9000` argument to `docker run`, like the command below: + +```console +docker run --name sonarqube-custom -p 9000:9000 %%IMAGE%%:community +``` + +You can then browse to `http://localhost:9000` or `http://host-ip:9000` in your web browser to access the web interface. + ### Database By default, the image will use an embedded H2 database that is not suited for production. -> **Warning:** Only a single instance of SonarQube can connect to a database schema. If you're using a Docker Swarm or Kubernetes, make sure that multiple SonarQube instances are never running on the same database schema simultaneously. This will cause SonarQube to behave unpredictably and data will be corrupted. There is no safeguard until [SONAR-10362](https://jira.sonarsource.com/browse/SONAR-10362). The Data Center Edition has the same limitation in that only one cluster can connect to one database schema at the same time. +> **Warning:** Only a single instance of SonarQube Server or SonarQube Community Build can connect to a database schema. If you're using a Docker Swarm or Kubernetes, make sure that multiple instances are never running on the same database schema simultaneously. This will cause the SonarQube to behave unpredictably, and data will be corrupted. There is no safeguard, as described on [SONAR-10362](https://jira.sonarsource.com/browse/SONAR-10362). The SonarQube Server Data Center Edition has the same limitation in that only one cluster can connect to one database schema at the same time. -Set up a database by following the "Installing the Database" section of https://docs.sonarqube.org/latest/setup/install-server/. +Set up a database by following the ["Installing the Database"](https://docs.sonarsource.com/sonarqube-server/latest/setup-and-upgrade/install-the-server/installing-the-database/) section. ### Use volumes @@ -53,7 +71,7 @@ We recommend creating volumes for the following directories: ## Upgrading -For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade the Server](https://docs.sonarqube.org/latest/setup/upgrading/) page. +For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade the Server](https://docs.sonarsource.com/sonarqube-server/latest/server-upgrade-and-maintenance/upgrade/upgrade/) page. ## Advanced configuration @@ -62,7 +80,7 @@ For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade th In some environments, it may make more sense to prepare a custom image containing your configuration. A `Dockerfile` to achieve this may be as simple as: ```dockerfile -FROM sonarqube:8.9-community +FROM %%IMAGE%%:community COPY sonar-custom-plugin-1.0.jar /opt/sonarqube/extensions/ ``` @@ -73,9 +91,9 @@ $ docker build --tag=sonarqube-custom . $ docker run -ti sonarqube-custom ``` -### Avoid hard termination of SonarQube +### Avoid hard termination -A SonarQube instance will stop gracefully, waiting for any tasks in progress to finish. Waiting for in-progress tasks to finish can take a large amount of time which the docker does not expect by default when stopping. To avoid having the SonarQube instance killed by the Docker daemon after 10 seconds, it is best to configure a timeout to stop the container with `--stop-timeout`. For example: +The instance will stop gracefully, waiting for any tasks in progress to finish. Waiting for in-progress tasks to finish can take a large amount of time, which the docker does not expect by default when stopping. To avoid having the instance killed by the Docker daemon after 10 seconds, it is best to configure a timeout to stop the container with `--stop-timeout`. For example: ```console docker run --stop-timeout 3600 %%IMAGE%% @@ -83,4 +101,4 @@ docker run --stop-timeout 3600 %%IMAGE%% ## Administration -The administration guide can be found [here](https://redirect.sonarsource.com/doc/administration-guide.html). +Information about administering your instance of SonarQube Server begins [here](https://docs.sonarsource.com/sonarqube-server/latest/instance-administration/overview/). diff --git a/sonarqube/license.md b/sonarqube/license.md index bc16166651ad..542e24334751 100644 --- a/sonarqube/license.md +++ b/sonarqube/license.md @@ -1 +1 @@ -SonarQube Community Edition is licensed under [GNU Lesser General Public License, Version 3.0](http://www.gnu.org/licenses/lgpl.txt). SonarQube Developer, Enterprise, and Data Center Editions are licensed under [SonarSource Terms and Conditions](https://www.sonarsource.com/docs/sonarsource_terms_and_conditions.pdf). +SonarQube Community Build is licensed under [GNU Lesser General Public License, Version 3.0](http://www.gnu.org/licenses/lgpl.txt). SonarQube Server Developer, Enterprise, and Data Center Editions are licensed under [SonarSource Terms and Condition](https://www.sonarsource.com/docs/sonarsource_terms_and_conditions.pdf). diff --git a/sonarqube/logo.png b/sonarqube/logo.png index c17679b539e3..ef9dd66d53c9 100644 Binary files a/sonarqube/logo.png and b/sonarqube/logo.png differ diff --git a/sonarqube/metadata.json b/sonarqube/metadata.json new file mode 100644 index 000000000000..4e2e34b2be0e --- /dev/null +++ b/sonarqube/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "integration-and-delivery" + ] + } +} diff --git a/spark/README-short.txt b/spark/README-short.txt new file mode 100644 index 000000000000..1b5f8f525ce4 --- /dev/null +++ b/spark/README-short.txt @@ -0,0 +1 @@ +Apache Spark - A unified analytics engine for large-scale data processing diff --git a/spark/README.md b/spark/README.md new file mode 100644 index 000000000000..3eff6baafa37 --- /dev/null +++ b/spark/README.md @@ -0,0 +1,142 @@ + + +# Quick reference + +- **Maintained by**: + [Apache Spark](https://spark.apache.org/committers.html) + +- **Where to get help**: + [Apache Spark™ community](https://spark.apache.org/community.html) + +# Supported tags and respective `Dockerfile` links + +- [`4.0.1-scala2.13-java21-python3-ubuntu`, `4.0.1-java21-python3`, `4.0.1-java21`, `python3`, `latest`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java21-python3-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java21-r-ubuntu`, `4.0.1-java21-r`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java21-r-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java21-ubuntu`, `4.0.1-java21-scala`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java21-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java21-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java21-python3-r-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java17-python3-ubuntu`, `4.0.1-python3`, `4.0.1`, `python3-java17`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java17-python3-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java17-r-ubuntu`, `4.0.1-r`, `r`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java17-r-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java17-ubuntu`, `4.0.1-scala`, `scala`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java17-ubuntu/Dockerfile) + +- [`4.0.1-scala2.13-java17-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/a5edefc5f796902d5cc15f7d840bb6335f283797/4.0.1/scala2.13-java17-python3-r-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java17-python3-ubuntu`, `3.5.7-java17-python3`, `3.5.7-java17`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java17-python3-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java17-r-ubuntu`, `3.5.7-java17-r`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java17-r-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java17-ubuntu`, `3.5.7-java17-scala`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java17-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java17-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java17-python3-r-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java11-python3-ubuntu`, `3.5.7-python3`, `3.5.7`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java11-python3-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java11-r-ubuntu`, `3.5.7-r`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java11-r-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java11-ubuntu`, `3.5.7-scala`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java11-ubuntu/Dockerfile) + +- [`3.5.7-scala2.12-java11-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/2ebf694ad45fee6f4beeeb4204bcdb01d73c988f/3.5.7/scala2.12-java11-python3-r-ubuntu/Dockerfile) + +# Quick reference (cont.) + +- **Where to file issues**: + https://issues.apache.org/jira/browse/SPARK + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/spark/), [`arm64v8`](https://hub.docker.com/r/arm64v8/spark/) + +- **Published image artifact details**: + [repo-info repo's `repos/spark/` directory](https://github.com/docker-library/repo-info/blob/master/repos/spark) ([history](https://github.com/docker-library/repo-info/commits/master/repos/spark)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/spark` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fspark) + [official-images repo's `library/spark` file](https://github.com/docker-library/official-images/blob/master/library/spark) ([history](https://github.com/docker-library/official-images/commits/master/library/spark)) + +- **Source of this description**: + [docs repo's `spark/` directory](https://github.com/docker-library/docs/tree/master/spark) ([history](https://github.com/docker-library/docs/commits/master/spark)) + +# What is Apache Spark™? + +Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that supports general computation graphs for data analysis. It also supports a rich set of higher-level tools including Spark SQL for SQL and DataFrames, pandas API on Spark for pandas workloads, MLlib for machine learning, GraphX for graph processing, and Structured Streaming for stream processing. + +![logo](https://raw.githubusercontent.com/docker-library/docs/a16cd1ae80c04193c029a686d3006c95edb81594/spark/logo.png) + +## Online Documentation + +You can find the latest Spark documentation, including a programming guide, on the [project web page](https://spark.apache.org/documentation.html). This README file only contains basic setup instructions. + +## Interactive Scala Shell + +The easiest way to start using Spark is through the Scala shell: + +```console +docker run -it spark /opt/spark/bin/spark-shell +``` + +Try the following command, which should return 1,000,000,000: + +```scala +scala> spark.range(1000 * 1000 * 1000).count() +``` + +## Interactive Python Shell + +The easiest way to start using PySpark is through the Python shell: + +```console +docker run -it spark:python3 /opt/spark/bin/pyspark +``` + +And run the following command, which should also return 1,000,000,000: + +```python +>>> spark.range(1000 * 1000 * 1000).count() +``` + +## Interactive R Shell + +The easiest way to start using R on Spark is through the R shell: + +```console +docker run -it spark:r /opt/spark/bin/sparkR +``` + +## Running Spark on Kubernetes + +https://spark.apache.org/docs/latest/running-on-kubernetes.html + +## Configuration and environment variables + +See more in https://github.com/apache/spark-docker/blob/master/OVERVIEW.md#environment-variable + +# License + +Apache Spark, Spark, Apache, the Apache feather logo, and the Apache Spark project logo are trademarks of The Apache Software Foundation. + +Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). + +As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). + +Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `spark/` directory](https://github.com/docker-library/repo-info/tree/master/repos/spark). + +As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/spark/content.md b/spark/content.md new file mode 100644 index 000000000000..380ac1aa61a9 --- /dev/null +++ b/spark/content.md @@ -0,0 +1,53 @@ +# What is Apache Spark™? + +Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that supports general computation graphs for data analysis. It also supports a rich set of higher-level tools including Spark SQL for SQL and DataFrames, pandas API on Spark for pandas workloads, MLlib for machine learning, GraphX for graph processing, and Structured Streaming for stream processing. + +%%LOGO%% + +## Online Documentation + +You can find the latest Spark documentation, including a programming guide, on the [project web page](https://spark.apache.org/documentation.html). This README file only contains basic setup instructions. + +## Interactive Scala Shell + +The easiest way to start using Spark is through the Scala shell: + +```console +docker run -it %%IMAGE%% /opt/spark/bin/spark-shell +``` + +Try the following command, which should return 1,000,000,000: + +```scala +scala> spark.range(1000 * 1000 * 1000).count() +``` + +## Interactive Python Shell + +The easiest way to start using PySpark is through the Python shell: + +```console +docker run -it %%IMAGE%%:python3 /opt/spark/bin/pyspark +``` + +And run the following command, which should also return 1,000,000,000: + +```python +>>> spark.range(1000 * 1000 * 1000).count() +``` + +## Interactive R Shell + +The easiest way to start using R on Spark is through the R shell: + +```console +docker run -it %%IMAGE%%:r /opt/spark/bin/sparkR +``` + +## Running Spark on Kubernetes + +https://spark.apache.org/docs/latest/running-on-kubernetes.html + +## Configuration and environment variables + +See more in https://github.com/apache/spark-docker/blob/master/OVERVIEW.md#environment-variable diff --git a/spark/get-help.md b/spark/get-help.md new file mode 100644 index 000000000000..f4569f26217e --- /dev/null +++ b/spark/get-help.md @@ -0,0 +1 @@ +[Apache Spark™ community](https://spark.apache.org/community.html) diff --git a/spark/github-repo b/spark/github-repo new file mode 100644 index 000000000000..56646b9d2bad --- /dev/null +++ b/spark/github-repo @@ -0,0 +1 @@ +https://github.com/apache/spark-docker diff --git a/spark/issues.md b/spark/issues.md new file mode 100644 index 000000000000..3222af653397 --- /dev/null +++ b/spark/issues.md @@ -0,0 +1 @@ +https://issues.apache.org/jira/browse/SPARK diff --git a/spark/license.md b/spark/license.md new file mode 100644 index 000000000000..4170f253279c --- /dev/null +++ b/spark/license.md @@ -0,0 +1,3 @@ +Apache Spark, Spark, Apache, the Apache feather logo, and the Apache Spark project logo are trademarks of The Apache Software Foundation. + +Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). diff --git a/spark/logo.png b/spark/logo.png new file mode 100644 index 000000000000..464eda547ba9 Binary files /dev/null and b/spark/logo.png differ diff --git a/spark/maintainer.md b/spark/maintainer.md new file mode 100644 index 000000000000..e4ef7ed7aebd --- /dev/null +++ b/spark/maintainer.md @@ -0,0 +1 @@ +[Apache Spark](https://spark.apache.org/committers.html) diff --git a/spark/metadata.json b/spark/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/spark/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/spiped/README.md b/spiped/README.md index 5aa0db6599ca..629a01481a03 100644 --- a/spiped/README.md +++ b/spiped/README.md @@ -24,16 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.6.2`, `1.6`, `1`, `latest`](https://github.com/TimWolla/docker-spiped/blob/2673ea4c6a442d939ab23834aaf2a64c5d916139/1.6/Dockerfile) -- [`1.6.2-alpine`, `1.6-alpine`, `1-alpine`, `alpine`](https://github.com/TimWolla/docker-spiped/blob/32bffc38a1a3efcf0ce6817953230bf352bfb7a8/1.6/alpine/Dockerfile) +- [`1.6.4`, `1.6`, `1`, `latest`](https://github.com/TimWolla/docker-spiped/blob/f7100845a437d5e72c79d384113cd657ca6f93de/1.6/Dockerfile) + +- [`1.6.4-alpine`, `1.6-alpine`, `1-alpine`, `alpine`](https://github.com/TimWolla/docker-spiped/blob/2a6429d25e5ebccc2a8075cb8ec85d5dd951579e/1.6/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/TimWolla/docker-spiped/issues](https://github.com/TimWolla/docker-spiped/issues) + [https://github.com/TimWolla/docker-spiped/issues](https://github.com/TimWolla/docker-spiped/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/spiped/), [`arm32v5`](https://hub.docker.com/r/arm32v5/spiped/), [`arm32v6`](https://hub.docker.com/r/arm32v6/spiped/), [`arm32v7`](https://hub.docker.com/r/arm32v7/spiped/), [`arm64v8`](https://hub.docker.com/r/arm64v8/spiped/), [`i386`](https://hub.docker.com/r/i386/spiped/), [`mips64le`](https://hub.docker.com/r/mips64le/spiped/), [`ppc64le`](https://hub.docker.com/r/ppc64le/spiped/), [`s390x`](https://hub.docker.com/r/s390x/spiped/) + [`amd64`](https://hub.docker.com/r/amd64/spiped/), [`arm32v5`](https://hub.docker.com/r/arm32v5/spiped/), [`arm32v6`](https://hub.docker.com/r/arm32v6/spiped/), [`arm32v7`](https://hub.docker.com/r/arm32v7/spiped/), [`arm64v8`](https://hub.docker.com/r/arm64v8/spiped/), [`i386`](https://hub.docker.com/r/i386/spiped/), [`ppc64le`](https://hub.docker.com/r/ppc64le/spiped/), [`riscv64`](https://hub.docker.com/r/riscv64/spiped/), [`s390x`](https://hub.docker.com/r/s390x/spiped/) - **Published image artifact details**: [repo-info repo's `repos/spiped/` directory](https://github.com/docker-library/repo-info/blob/master/repos/spiped) ([history](https://github.com/docker-library/repo-info/commits/master/repos/spiped)) @@ -77,7 +78,7 @@ Usually you would combine this image with another linked container. The followin $ docker run -d -v /path/to/keyfile:/spiped/key:ro -p 9200:9200 --link elasticsearch:elasticsearch --init spiped -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' ``` -If you don’t need any to bind to a privileged port you can pass `--user spiped` to make *spiped* run as an unprivileged user: +If you don't need any to bind to a privileged port you can pass `--user spiped` to make *spiped* run as an unprivileged user: ```console $ docker run -d -v /path/to/keyfile:/spiped/key:ro --user spiped -p 9200:9200 --link elasticsearch:elasticsearch --init spiped -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' diff --git a/spiped/content.md b/spiped/content.md index deb5bd87b14a..3e013c925489 100644 --- a/spiped/content.md +++ b/spiped/content.md @@ -29,7 +29,7 @@ Usually you would combine this image with another linked container. The followin $ docker run -d -v /path/to/keyfile:/spiped/key:ro -p 9200:9200 --link elasticsearch:elasticsearch --init %%IMAGE%% -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' ``` -If you don’t need any to bind to a privileged port you can pass `--user spiped` to make *spiped* run as an unprivileged user: +If you don't need any to bind to a privileged port you can pass `--user spiped` to make *spiped* run as an unprivileged user: ```console $ docker run -d -v /path/to/keyfile:/spiped/key:ro --user spiped -p 9200:9200 --link elasticsearch:elasticsearch --init %%IMAGE%% -d -s '[0.0.0.0]:9200' -t 'elasticsearch:9200' diff --git a/spiped/metadata.json b/spiped/metadata.json new file mode 100644 index 000000000000..f1e52700787d --- /dev/null +++ b/spiped/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "security" + ] + } +} diff --git a/storm/README.md b/storm/README.md index d121c280c7c3..d073a39c3150 100644 --- a/storm/README.md +++ b/storm/README.md @@ -17,25 +17,24 @@ WARNING: # Quick reference - **Maintained by**: - [the Docker Community](https://github.com/31z4/storm-docker) + [Apache Storm](https://storm.apache.org/contribute/People.html) - **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) + [Apache Storm™ community](https://storm.apache.org/getting-help.html) # Supported tags and respective `Dockerfile` links -- [`1.2.4`, `1.2`](https://github.com/31z4/storm-docker/blob/f72658afa5e9c4ee4d4d5ef5cf9b32b226d0ed19/1.2.4/Dockerfile) -- [`1.2.4-temurin`, `1.2-temurin`](https://github.com/31z4/storm-docker/blob/14c749848c8ff7c955f2b29c57e327ae80fbbb7e/1.2.4/Dockerfile) -- [`2.4.0`, `2.4`](https://github.com/31z4/storm-docker/blob/f72658afa5e9c4ee4d4d5ef5cf9b32b226d0ed19/2.4.0/Dockerfile) -- [`2.4.0-temurin`, `2.4-temurin`, `latest`](https://github.com/31z4/storm-docker/blob/14c749848c8ff7c955f2b29c57e327ae80fbbb7e/2.4.0/Dockerfile) +- [`2.8.3-jre17`, `2.8-jre17`, `2.8.3`, `2.8`, `latest`](https://github.com/apache/storm-docker/blob/78e73fe01431a2b3fe35071fcaaaa1726a0e3736/2.8.3/Dockerfile) + +- [`2.8.3-jre21`, `2.8-jre21`](https://github.com/apache/storm-docker/blob/78e73fe01431a2b3fe35071fcaaaa1726a0e3736/2.8.3-jre21/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/31z4/storm-docker/issues](https://github.com/31z4/storm-docker/issues) + https://issues.apache.org/jira/browse/STORM - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/storm/) + [`amd64`](https://hub.docker.com/r/amd64/storm/), [`arm64v8`](https://hub.docker.com/r/arm64v8/storm/) - **Published image artifact details**: [repo-info repo's `repos/storm/` directory](https://github.com/docker-library/repo-info/blob/master/repos/storm) ([history](https://github.com/docker-library/repo-info/commits/master/repos/storm)) @@ -50,7 +49,11 @@ WARNING: # What is Apache Storm? -Apache Storm is a distributed computation framework written predominantly in the Clojure programming language. Originally created by Nathan Marz and team at BackType, the project was open sourced after being acquired by Twitter. It uses custom created "spouts" and "bolts" to define information sources and manipulations to allow batch, distributed processing of streaming data. The initial release was on 17 September 2011. +Apache Storm is a free and open source distributed realtime computation system. Apache Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Apache Storm is simple, can be used with any programming language, and is a lot of fun to use! + +Apache Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Apache Storm is fast: a benchmark clocked it at over a million tuples processed per second per node. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate. + +Apache Storm integrates with the queueing and database technologies you already use. An Apache Storm topology consumes streams of data and processes those streams in arbitrarily complex ways, repartitioning the streams between each stage of the computation however needed. > [wikipedia.org/wiki/Storm_(event_processor)](https://en.wikipedia.org/wiki/Storm_(event_processor)) @@ -98,13 +101,11 @@ $ docker run -it -v $(pwd)/topology.jar:/topology.jar storm storm jar /topology. $ docker run -d -p 8080:8080 --restart always --name ui --link some-nimbus:nimbus storm storm ui ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `storm`: +Example `compose.yaml` for `storm`: ```yaml -version: '3.1' - services: zookeeper: image: zookeeper @@ -136,9 +137,7 @@ services: restart: always ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/9efeec18b6b2ed232cf0fbd3914b6211e16e242c/storm/stack.yml) - -Run `docker stack deploy -c stack.yml storm` (or `docker-compose -f stack.yml up`) and wait for it to initialize completely. The Nimbus will be available at `http://swarm-ip:6627`, `http://localhost:6627`, or `http://host-ip:6627` (as appropriate). +Run `docker compose up` and wait for it to initialize completely. The Nimbus will be available at `http://localhost:6627` or `http://host-ip:6627` (as appropriate). ## Configuration @@ -172,7 +171,11 @@ $ docker run -it -v /logs -v /data storm storm nimbus # License -View [license information](http://storm.apache.org/about/free-and-open-source.html) for the software contained in this image. +Apache Storm, Storm, Apache, the Apache feather logo, and the Apache Storm project logo are trademarks of The Apache Software Foundation. + +Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). + +See [license information](http://storm.apache.org/about/free-and-open-source.html). As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). diff --git a/storm/stack.yml b/storm/compose.yaml similarity index 96% rename from storm/stack.yml rename to storm/compose.yaml index a1da43b6efa6..e2cd56c82afb 100644 --- a/storm/stack.yml +++ b/storm/compose.yaml @@ -1,5 +1,3 @@ -version: '3.1' - services: zookeeper: image: zookeeper diff --git a/storm/content.md b/storm/content.md index 901567c666eb..345ad75bf345 100644 --- a/storm/content.md +++ b/storm/content.md @@ -1,6 +1,10 @@ # What is Apache Storm? -Apache Storm is a distributed computation framework written predominantly in the Clojure programming language. Originally created by Nathan Marz and team at BackType, the project was open sourced after being acquired by Twitter. It uses custom created "spouts" and "bolts" to define information sources and manipulations to allow batch, distributed processing of streaming data. The initial release was on 17 September 2011. +Apache Storm is a free and open source distributed realtime computation system. Apache Storm makes it easy to reliably process unbounded streams of data, doing for realtime processing what Hadoop did for batch processing. Apache Storm is simple, can be used with any programming language, and is a lot of fun to use! + +Apache Storm has many use cases: realtime analytics, online machine learning, continuous computation, distributed RPC, ETL, and more. Apache Storm is fast: a benchmark clocked it at over a million tuples processed per second per node. It is scalable, fault-tolerant, guarantees your data will be processed, and is easy to set up and operate. + +Apache Storm integrates with the queueing and database technologies you already use. An Apache Storm topology consumes streams of data and processes those streams in arbitrarily complex ways, repartitioning the streams between each stage of the computation however needed. > [wikipedia.org/wiki/Storm_(event_processor)](https://en.wikipedia.org/wiki/Storm_(event_processor)) @@ -48,9 +52,9 @@ $ docker run -it -v $(pwd)/topology.jar:/topology.jar %%IMAGE%% storm jar /topol $ docker run -d -p 8080:8080 --restart always --name ui --link some-nimbus:nimbus %%IMAGE%% storm ui ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml storm` (or `docker-compose -f stack.yml up`) and wait for it to initialize completely. The Nimbus will be available at `http://swarm-ip:6627`, `http://localhost:6627`, or `http://host-ip:6627` (as appropriate). +Run `docker compose up` and wait for it to initialize completely. The Nimbus will be available at `http://localhost:6627` or `http://host-ip:6627` (as appropriate). ## Configuration diff --git a/storm/get-help.md b/storm/get-help.md new file mode 100644 index 000000000000..53940808e59c --- /dev/null +++ b/storm/get-help.md @@ -0,0 +1 @@ +[Apache Storm™ community](https://storm.apache.org/getting-help.html) diff --git a/storm/github-repo b/storm/github-repo index a8b88815d9ba..0ff0b8656974 100644 --- a/storm/github-repo +++ b/storm/github-repo @@ -1 +1 @@ -https://github.com/31z4/storm-docker +https://github.com/apache/storm-docker diff --git a/storm/issues.md b/storm/issues.md new file mode 100644 index 000000000000..d7535f9de99c --- /dev/null +++ b/storm/issues.md @@ -0,0 +1 @@ +https://issues.apache.org/jira/browse/STORM diff --git a/storm/license.md b/storm/license.md index 995b917aadc5..4a6432f0ce75 100644 --- a/storm/license.md +++ b/storm/license.md @@ -1 +1,5 @@ -View [license information](http://storm.apache.org/about/free-and-open-source.html) for the software contained in this image. +Apache Storm, Storm, Apache, the Apache feather logo, and the Apache Storm project logo are trademarks of The Apache Software Foundation. + +Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). + +See [license information](http://storm.apache.org/about/free-and-open-source.html). diff --git a/storm/maintainer.md b/storm/maintainer.md deleted file mode 120000 index e727ff0696ae..000000000000 --- a/storm/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-community.md \ No newline at end of file diff --git a/storm/maintainer.md b/storm/maintainer.md new file mode 100644 index 000000000000..a08decbc7bfa --- /dev/null +++ b/storm/maintainer.md @@ -0,0 +1 @@ +[Apache Storm](https://storm.apache.org/contribute/People.html) diff --git a/storm/metadata.json b/storm/metadata.json new file mode 100644 index 000000000000..2b3b7cd7c11f --- /dev/null +++ b/storm/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "data-science" + ] + } +} diff --git a/swift/README.md b/swift/README.md index 20c25758d4a7..4bb0ccdd84e5 100644 --- a/swift/README.md +++ b/swift/README.md @@ -24,73 +24,87 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.7.2`, `5.7`, `5.7.2-jammy`, `5.7-jammy`, `jammy`, `latest`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/ubuntu/22.04/Dockerfile) -- [`5.7.2-slim`, `5.7-slim`, `5.7.2-jammy-slim`, `5.7-jammy-slim`, `jammy-slim`, `slim`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/ubuntu/22.04/slim/Dockerfile) -- [`5.7.2-bionic`, `5.7-bionic`, `bionic`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/ubuntu/18.04/Dockerfile) -- [`5.7.2-bionic-slim`, `5.7-bionic-slim`, `bionic-slim`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/ubuntu/18.04/slim/Dockerfile) -- [`5.7.2-focal-slim`, `5.7-focal-slim`, `focal-slim`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/ubuntu/20.04/slim/Dockerfile) -- [`5.7.2-focal`, `5.7-focal`, `focal`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/ubuntu/20.04/Dockerfile) -- [`5.7.2-amazonlinux2`, `5.7-amazonlinux2`, `amazonlinux2`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/amazonlinux/2/Dockerfile) -- [`5.7.2-amazonlinux2-slim`, `5.7-amazonlinux2-slim`, `amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/amazonlinux/2/slim/Dockerfile) -- [`5.7.2-centos7`, `5.7-centos7`, `centos7`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/centos/7/Dockerfile) -- [`5.7.2-centos7-slim`, `5.7-centos7-slim`, `centos7-slim`](https://github.com/apple/swift-docker/blob/59e3cc2532e57bb75b406bb9c589b62bd12edd5c/5.7/centos/7/slim/Dockerfile) -- [`5.6.3`, `5.6`, `5.6.3-bionic`, `5.6-bionic`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/ubuntu/18.04/Dockerfile) -- [`5.6.3-slim`, `5.6-slim`, `5.6.3-bionic-slim`, `5.6-bionic-slim`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/ubuntu/18.04/slim/Dockerfile) -- [`5.6.3-focal-slim`, `5.6-focal-slim`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/ubuntu/20.04/slim/Dockerfile) -- [`5.6.3-focal`, `5.6-focal`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/ubuntu/20.04/Dockerfile) -- [`5.6.3-amazonlinux2`, `5.6-amazonlinux2`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/amazonlinux/2/Dockerfile) -- [`5.6.3-amazonlinux2-slim`, `5.6-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/amazonlinux/2/slim/Dockerfile) -- [`5.6.3-centos7`, `5.6-centos7`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/centos/7/Dockerfile) -- [`5.6.3-centos7-slim`, `5.6-centos7-slim`](https://github.com/apple/swift-docker/blob/1188cc86d15f9e98d90db9f98de3598d5d5f7bb2/5.6/centos/7/slim/Dockerfile) -- [`5.5.3`, `5.5`, `5.5.3-bionic`, `5.5-bionic`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/ubuntu/18.04/Dockerfile) -- [`5.5.3-xenial`, `5.5-xenial`, `xenial`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/ubuntu/16.04/Dockerfile) -- [`5.5.3-slim`, `5.5-slim`, `5.5.3-bionic-slim`, `5.5-bionic-slim`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/ubuntu/18.04/slim/Dockerfile) -- [`5.5.3-xenial-slim`, `5.5-xenial-slim`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/ubuntu/16.04/slim/Dockerfile) -- [`5.5.3-focal-slim`, `5.5-focal-slim`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/ubuntu/20.04/slim/Dockerfile) -- [`5.5.3-focal`, `5.5-focal`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/ubuntu/20.04/Dockerfile) -- [`5.5.3-amazonlinux2`, `5.5-amazonlinux2`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/amazonlinux/2/Dockerfile) -- [`5.5.3-amazonlinux2-slim`, `5.5-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/amazonlinux/2/slim/Dockerfile) -- [`5.5.3-centos7`, `5.5-centos7`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/centos/7/Dockerfile) -- [`5.5.3-centos7-slim`, `5.5-centos7-slim`](https://github.com/apple/swift-docker/blob/9394b31e064cf0d80eaab08b692a2886c7aea8fe/5.5/centos/7/slim/Dockerfile) -- [`5.4.3`, `5.4`, `5.4.3-bionic`, `5.4-bionic`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/ubuntu/18.04/Dockerfile) -- [`5.4.3-xenial`, `5.4-xenial`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/ubuntu/16.04/Dockerfile) -- [`5.4.3-slim`, `5.4-slim`, `5.4.3-bionic-slim`, `5.4-bionic-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/ubuntu/18.04/slim/Dockerfile) -- [`5.4.3-xenial-slim`, `5.4-xenial-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/ubuntu/16.04/slim/Dockerfile) -- [`5.4.3-focal-slim`, `5.4-focal-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/ubuntu/20.04/slim/Dockerfile) -- [`5.4.3-focal`, `5.4-focal`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/ubuntu/20.04/Dockerfile) -- [`5.4.3-amazonlinux2`, `5.4-amazonlinux2`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/amazonlinux/2/Dockerfile) -- [`5.4.3-amazonlinux2-slim`, `5.4-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/amazonlinux/2/slim/Dockerfile) -- [`5.4.3-centos7`, `5.4-centos7`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/centos/7/Dockerfile) -- [`5.4.3-centos7-slim`, `5.4-centos7-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.4/centos/7/slim/Dockerfile) -- [`5.3.3`, `5.3`, `5.3.3-bionic`, `5.3-bionic`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/ubuntu/18.04/Dockerfile) -- [`5.3.3-xenial`, `5.3-xenial`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/ubuntu/16.04/Dockerfile) -- [`5.3.3-slim`, `5.3-slim`, `5.3.3-bionic-slim`, `5.3-bionic-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/ubuntu/18.04/slim/Dockerfile) -- [`5.3.3-xenial-slim`, `5.3-xenial-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/ubuntu/16.04/slim/Dockerfile) -- [`5.3.3-focal-slim`, `5.3-focal-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/ubuntu/20.04/slim/Dockerfile) -- [`5.3.3-focal`, `5.3-focal`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/ubuntu/20.04/Dockerfile) -- [`5.3.3-amazonlinux2`, `5.3-amazonlinux2`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/amazonlinux/2/Dockerfile) -- [`5.3.3-amazonlinux2-slim`, `5.3-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/amazonlinux/2/slim/Dockerfile) -- [`5.3.3-centos7`, `5.3-centos7`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/centos/7/Dockerfile) -- [`5.3.3-centos7-slim`, `5.3-centos7-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.3/centos/7/slim/Dockerfile) -- [`5.2.5`, `5.2`, `5.2.5-bionic`, `5.2-bionic`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/ubuntu/18.04/Dockerfile) -- [`5.2.5-xenial`, `5.2-xenial`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/ubuntu/16.04/Dockerfile) -- [`5.2.5-slim`, `5.2-slim`, `5.2.5-bionic-slim`, `5.2-bionic-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/ubuntu/18.04/slim/Dockerfile) -- [`5.2.5-xenial-slim`, `5.2-xenial-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/ubuntu/16.04/slim/Dockerfile) -- [`5.2.5-focal-slim`, `5.2-focal-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/ubuntu/20.04/slim/Dockerfile) -- [`5.2.5-focal`, `5.2-focal`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/ubuntu/20.04/Dockerfile) -- [`5.2.5-amazonlinux2`, `5.2-amazonlinux2`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/amazonlinux/2/Dockerfile) -- [`5.2.5-amazonlinux2-slim`, `5.2-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/amazonlinux/2/slim/Dockerfile) -- [`5.2.5-centos7`, `5.2-centos7`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/centos/7/Dockerfile) -- [`5.2.5-centos7-slim`, `5.2-centos7-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.2/centos/7/slim/Dockerfile) -- [`5.1.5`, `5.1`, `5.1.5-bionic`, `5.1-bionic`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.1/ubuntu/18.04/Dockerfile) -- [`5.1.5-xenial`, `5.1-xenial`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.1/ubuntu/16.04/Dockerfile) -- [`5.1.5-slim`, `5.1-slim`, `5.1.5-bionic-sim`, `5.1-bionic-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.1/ubuntu/18.04/slim/Dockerfile) -- [`5.1.5-xenial-slim`, `5.1-xenial-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.1/ubuntu/16.04/slim/Dockerfile) -- [`5.0.3`, `5.0`, `5.0.3-bionic`, `5.0-bionic`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.0/ubuntu/18.04/Dockerfile) -- [`5.0.3-xenial`, `5.0-xenial`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.0/ubuntu/16.04/Dockerfile) -- [`5.0.3-slim`, `5.0-slim`, `5.0.3-bionic-slim`, `5.0-bionic-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.0/ubuntu/18.04/slim/Dockerfile) -- [`5.0.3-xenial-slim`, `5.0-xenial-slim`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/5.0/ubuntu/16.04/slim/Dockerfile) -- [`4.2.4`, `4.2`, `4`](https://github.com/apple/swift-docker/blob/2d2c2fb89fe6ecfd8885157eb1666ed2686503a0/4.2/ubuntu/16.04/Dockerfile) +- [`6.2.1`, `6.2`, `6.2.1-noble`, `6.2-noble`, `noble`, `latest`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/ubuntu/24.04/Dockerfile) + +- [`6.2.1-slim`, `6.2-slim`, `6.2.1-noble-slim`, `6.2-noble-slim`, `noble-slim`, `slim`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/ubuntu/24.04/slim/Dockerfile) + +- [`6.2.1-jammy`, `6.2-jammy`, `jammy`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/ubuntu/22.04/Dockerfile) + +- [`6.2.1-jammy-slim`, `6.2-jammy-slim`, `jammy-slim`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/ubuntu/22.04/slim/Dockerfile) + +- [`6.2.1-bookworm`, `6.2-bookworm`, `bookworm`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/debian/12/Dockerfile) + +- [`6.2.1-bookworm-slim`, `6.2-bookworm-slim`, `bookworm-slim`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/debian/12/slim/Dockerfile) + +- [`6.2.1-amazonlinux2`, `6.2-amazonlinux2`, `amazonlinux2`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/amazonlinux/2/Dockerfile) + +- [`6.2.1-amazonlinux2-slim`, `6.2-amazonlinux2-slim`, `amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/amazonlinux/2/slim/Dockerfile) + +- [`6.2.1-rhel-ubi9`, `6.2-rhel-ubi9`, `rhel-ubi9`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/rhel-ubi/9/Dockerfile) + +- [`6.2.1-rhel-ubi9-slim`, `6.2-rhel-ubi9-slim`, `rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/rhel-ubi/9/slim/Dockerfile) + +- [`6.2.1-windowsservercore-ltsc2022`, `6.2-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/fbd3db5e85aef93ac0dc7adec266bf22b8f4d705/6.2/windows/LTSC2022/Dockerfile) + +- [`6.1.3`, `6.1`, `6.1.3-noble`, `6.1-noble`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/24.04/Dockerfile) + +- [`6.1.3-slim`, `6.1-slim`, `6.1.3-noble-slim`, `6.1-noble-slim`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/24.04/slim/Dockerfile) + +- [`6.1.3-jammy`, `6.1-jammy`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/22.04/Dockerfile) + +- [`6.1.3-jammy-slim`, `6.1-jammy-slim`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/ubuntu/22.04/slim/Dockerfile) + +- [`6.1.3-bookworm`, `6.1-bookworm`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/debian/12/Dockerfile) + +- [`6.1.3-amazonlinux2`, `6.1-amazonlinux2`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/amazonlinux/2/Dockerfile) + +- [`6.1.3-amazonlinux2-slim`, `6.1-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/amazonlinux/2/slim/Dockerfile) + +- [`6.1.3-rhel-ubi9`, `6.1-rhel-ubi9`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/rhel-ubi/9/Dockerfile) + +- [`6.1.3-rhel-ubi9-slim`, `6.1-rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/rhel-ubi/9/slim/Dockerfile) + +- [`6.1.3-windowsservercore-ltsc2022`, `6.1-windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/5750fff0ede55c8223a8cb52e4f8da105b8b3d07/6.1/windows/LTSC2022/Dockerfile) + +- [`6.0.3`, `6.0`, `6.0.3-noble`, `6.0-noble`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/24.04/Dockerfile) + +- [`6.0.3-slim`, `6.0-slim`, `6.0.3-noble-slim`, `6.0-noble-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/24.04/slim/Dockerfile) + +- [`6.0.3-jammy`, `6.0-jammy`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/22.04/Dockerfile) + +- [`6.0.3-jammy-slim`, `6.0-jammy-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/22.04/slim/Dockerfile) + +- [`6.0.3-bookworm`, `6.0-bookworm`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/debian/12/Dockerfile) + +- [`6.0.3-amazonlinux2`, `6.0-amazonlinux2`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/amazonlinux/2/Dockerfile) + +- [`6.0.3-amazonlinux2-slim`, `6.0-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/amazonlinux/2/slim/Dockerfile) + +- [`6.0.3-rhel-ubi9`, `6.0-rhel-ubi9`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/rhel-ubi/9/Dockerfile) + +- [`6.0.3-rhel-ubi9-slim`, `6.0-rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/rhel-ubi/9/slim/Dockerfile) + +- [`6.0.3-windowsservercore-ltsc2022`, `6.0-windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/windows/LTSC2022/Dockerfile) + +- [`5.10.1`, `5.10`, `5.10.1-jammy`, `5.10-jammy`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/22.04/Dockerfile) + +- [`5.10.1-slim`, `5.10-slim`, `5.10.1-jammy-slim`, `5.10-jammy-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/22.04/slim/Dockerfile) + +- [`5.10.1-noble`, `5.10-noble`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/24.04/Dockerfile) + +- [`5.10.1-noble-slim`, `5.10-noble-slim`](https://github.com/apple/swift-docker/blob/38e4244ebab3d6a4e702fb30449827d6c28ee1fd/5.10/ubuntu/24.04/slim/Dockerfile) + +- [`5.10.1-bookworm`, `5.10-bookworm`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/debian/12/Dockerfile) + +- [`5.10.1-amazonlinux2`, `5.10-amazonlinux2`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/amazonlinux/2/Dockerfile) + +- [`5.10.1-amazonlinux2-slim`, `5.10-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/amazonlinux/2/slim/Dockerfile) + +- [`5.10.1-rhel-ubi9`, `5.10-rhel-ubi9`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/rhel-ubi/9/Dockerfile) + +- [`5.10.1-rhel-ubi9-slim`, `5.10-rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/rhel-ubi/9/slim/Dockerfile) + +- [`5.10.1-windowsservercore-ltsc2022`, `5.10-windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/90888735fac23a3a5cd8f798d1d7de89bb5d47bb/5.10/windows/LTSC2022/Dockerfile) # Quick reference (cont.) @@ -98,7 +112,7 @@ WARNING: [https://bugs.swift.org](https://bugs.swift.org) Component: Docker - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/swift/), [`arm64v8`](https://hub.docker.com/r/arm64v8/swift/) + [`amd64`](https://hub.docker.com/r/amd64/swift/), [`arm64v8`](https://hub.docker.com/r/arm64v8/swift/), [`windows-amd64`](https://hub.docker.com/r/winamd64/swift/) - **Published image artifact details**: [repo-info repo's `repos/swift/` directory](https://github.com/docker-library/repo-info/blob/master/repos/swift) ([history](https://github.com/docker-library/repo-info/commits/master/repos/swift)) @@ -168,12 +182,22 @@ The `swift` images come in many flavors, each designed for a specific use case. This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of. -Some of these tags may have names like bionic, focal, jammy, or xenial in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. +Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian. + +Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu. ## `swift:-slim` This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `swift`. Unless you are working in an environment where *only* the `swift` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. +## `swift:-windowsservercore` + +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. + +For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: + +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) + # License View [license information](https://swift.org/LICENSE.txt) for the software contained in this image. diff --git a/swift/metadata.json b/swift/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/swift/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/swipl/README.md b/swipl/README.md index 627edbde2ec6..dbb513519ae3 100644 --- a/swipl/README.md +++ b/swipl/README.md @@ -20,17 +20,18 @@ WARNING: [the SWI-Prolog community](https://github.com/SWI-Prolog/docker-swipl) - **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) + [the Docker Community Slack](https://dockr.ly/comm-slack), [SWI-Prolog home](https://www.swi-prolog.org), [SWI-Prolog forum](https://swi-prolog.discourse.group/), [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`latest`, `9.1.1`](https://github.com/SWI-Prolog/docker-swipl/blob/d74a1b64f53d54d7ed6e74b3c36e5c6799e8964e/9.1.1/bullseye/Dockerfile) -- [`stable`, `9.0.2`](https://github.com/SWI-Prolog/docker-swipl/blob/d74a1b64f53d54d7ed6e74b3c36e5c6799e8964e/9.0.2/bullseye/Dockerfile) +- [`latest`, `9.3.34`](https://github.com/SWI-Prolog/docker-swipl/blob/d3fa517447ac842ec77670b917ebfb578ebe6e28/9.3.34/bookworm/Dockerfile) + +- [`stable`, `9.2.9`](https://github.com/SWI-Prolog/docker-swipl/blob/d3fa517447ac842ec77670b917ebfb578ebe6e28/9.2.9/bookworm/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/SWI-Prolog/docker-swipl/issues](https://github.com/SWI-Prolog/docker-swipl/issues) + [https://github.com/SWI-Prolog/docker-swipl/issues](https://github.com/SWI-Prolog/docker-swipl/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/swipl/), [`arm32v7`](https://hub.docker.com/r/arm32v7/swipl/), [`arm64v8`](https://hub.docker.com/r/arm64v8/swipl/) diff --git a/swipl/get-help.md b/swipl/get-help.md new file mode 100644 index 000000000000..505b42ef46b1 --- /dev/null +++ b/swipl/get-help.md @@ -0,0 +1 @@ +[the Docker Community Slack](https://dockr.ly/comm-slack), [SWI-Prolog home](https://www.swi-prolog.org), [SWI-Prolog forum](https://swi-prolog.discourse.group/), [Stack Overflow](https://stackoverflow.com/help/on-topic) diff --git a/swipl/metadata.json b/swipl/metadata.json new file mode 100644 index 000000000000..39ac749c7f11 --- /dev/null +++ b/swipl/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "languages-and-frameworks" + ] + } +} diff --git a/teamspeak/README.md b/teamspeak/README.md index 8331accb8073..87517278e4ef 100644 --- a/teamspeak/README.md +++ b/teamspeak/README.md @@ -24,15 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.13`, `3.13.7`, `latest`](https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/blob/e1cd2cd1de40103c20adfe40079f2b6282215e72/alpine/Dockerfile) +**No supported tags** # Quick reference (cont.) - **Where to file issues**: - [https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/issues](https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/issues) + [https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/issues](https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/teamspeak/) + **No supported architectures** - **Published image artifact details**: [repo-info repo's `repos/teamspeak/` directory](https://github.com/docker-library/repo-info/blob/master/repos/teamspeak) ([history](https://github.com/docker-library/repo-info/commits/master/repos/teamspeak)) @@ -83,12 +83,11 @@ The TeamSpeak server log is available through Docker's container log: $ docker logs some-teamspeak ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `teamspeak`: +Example `compose.yaml` for `teamspeak`: ```yaml -version: '3.1' services: teamspeak: image: teamspeak @@ -114,9 +113,7 @@ services: MYSQL_DATABASE: teamspeak ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/0975c9ae2481c3f988c17d01d62075c9bf772ebb/teamspeak/stack.yml) - -Run `docker stack deploy -c stack.yml teamspeak` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `swarm-ip:9987`, `localhost:9987`, or `host-ip:9987` (as appropriate) with a TeamSpeak client. +Run `docker compose up`, wait for it to initialize completely, and visit `localhost:9987` or `host-ip:9987` (as appropriate) with a TeamSpeak client. ## Environment Variables @@ -198,8 +195,8 @@ When the whole data directory (`/var/ts3server/`) has been mounted somewhere, th Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `teamspeak` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: diff --git a/teamspeak/stack.yml b/teamspeak/compose.yaml similarity index 97% rename from teamspeak/stack.yml rename to teamspeak/compose.yaml index 5b1287a6eb5b..930cfdf7a50a 100644 --- a/teamspeak/stack.yml +++ b/teamspeak/compose.yaml @@ -1,4 +1,3 @@ -version: '3.1' services: teamspeak: image: teamspeak diff --git a/teamspeak/content.md b/teamspeak/content.md index eb3aa7d34373..f7b372c185bc 100644 --- a/teamspeak/content.md +++ b/teamspeak/content.md @@ -36,9 +36,9 @@ The TeamSpeak server log is available through Docker's container log: $ docker logs some-%%REPO%% ``` -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `swarm-ip:9987`, `localhost:9987`, or `host-ip:9987` (as appropriate) with a TeamSpeak client. +Run `docker compose up`, wait for it to initialize completely, and visit `localhost:9987` or `host-ip:9987` (as appropriate) with a TeamSpeak client. ## Environment Variables @@ -120,8 +120,8 @@ When the whole data directory (`/var/ts3server/`) has been mounted somewhere, th Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including: -- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/engine/tutorials/dockervolumes/#adding-a-data-volume). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. -- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/engine/tutorials/dockervolumes/#mount-a-host-directory-as-a-data-volume). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. +- Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers. +- Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly. The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above: diff --git a/teamspeak/metadata.json b/teamspeak/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/teamspeak/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/telegraf/README.md b/telegraf/README.md index 9b4a5366015a..cf3c260fbd92 100644 --- a/telegraf/README.md +++ b/telegraf/README.md @@ -24,17 +24,22 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.23`, `1.23.4`](https://github.com/influxdata/influxdata-docker/blob/dbc42012042db536190ddd0686327a3a9e59a0e3/telegraf/1.23/Dockerfile) -- [`1.23-alpine`, `1.23.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/dbc42012042db536190ddd0686327a3a9e59a0e3/telegraf/1.23/alpine/Dockerfile) -- [`1.24`, `1.24.4`](https://github.com/influxdata/influxdata-docker/blob/dbc42012042db536190ddd0686327a3a9e59a0e3/telegraf/1.24/Dockerfile) -- [`1.24-alpine`, `1.24.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/dbc42012042db536190ddd0686327a3a9e59a0e3/telegraf/1.24/alpine/Dockerfile) -- [`1.25`, `1.25.0`, `latest`](https://github.com/influxdata/influxdata-docker/blob/dbc42012042db536190ddd0686327a3a9e59a0e3/telegraf/1.25/Dockerfile) -- [`1.25-alpine`, `1.25.0-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/dbc42012042db536190ddd0686327a3a9e59a0e3/telegraf/1.25/alpine/Dockerfile) +- [`1.34`, `1.34.4`](https://github.com/influxdata/influxdata-docker/blob/9214a8a246e3cd00adb808098ea2191032f6fe8d/telegraf/1.34/Dockerfile) + +- [`1.34-alpine`, `1.34.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/9214a8a246e3cd00adb808098ea2191032f6fe8d/telegraf/1.34/alpine/Dockerfile) + +- [`1.35`, `1.35.4`](https://github.com/influxdata/influxdata-docker/blob/9214a8a246e3cd00adb808098ea2191032f6fe8d/telegraf/1.35/Dockerfile) + +- [`1.35-alpine`, `1.35.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/9214a8a246e3cd00adb808098ea2191032f6fe8d/telegraf/1.35/alpine/Dockerfile) + +- [`1.36`, `1.36.3`, `latest`](https://github.com/influxdata/influxdata-docker/blob/9214a8a246e3cd00adb808098ea2191032f6fe8d/telegraf/1.36/Dockerfile) + +- [`1.36-alpine`, `1.36.3-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/9214a8a246e3cd00adb808098ea2191032f6fe8d/telegraf/1.36/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues) + [https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/telegraf/), [`arm32v7`](https://hub.docker.com/r/arm32v7/telegraf/), [`arm64v8`](https://hub.docker.com/r/arm64v8/telegraf/) @@ -50,47 +55,42 @@ WARNING: - **Source of this description**: [docs repo's `telegraf/` directory](https://github.com/docker-library/docs/tree/master/telegraf) ([history](https://github.com/docker-library/docs/commits/master/telegraf)) -# Telegraf +# What is telegraf? + +Telegraf is an open source agent for collecting, processing, aggregating, and writing metrics. Based on a plugin system to enable developers in the community to easily add support for additional metric collection. There are five distinct types of plugins: -Telegraf is an open source agent written in Go for collecting metrics and data on the system it's running on or from other services. Telegraf writes data it collects to InfluxDB in the correct format. +- Input plugins collect metrics from the system, services, or 3rd party APIs +- Output plugins write metrics to various destinations +- Processor plugins transform, decorate, and/or filter metrics +- Aggregator plugins create aggregate metrics (e.g. mean, min, max, quantiles, etc.) +- Secret Store plugins are used to hide secrets from the configuration file -[Telegraf Official Docs](https://docs.influxdata.com/telegraf/latest/introduction/getting-started/) +[Telegraf Official Docs](https://docs.influxdata.com/telegraf/latest/get_started/) -![logo](https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/telegraf/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/7b128c7411e3e8375d9639e6455e47874940f012/telegraf/logo.png) -## Using this image +# How to use this image -### Exposed Ports +## Exposed Ports -- 8125 StatsD +- 8125 UDP - 8092 UDP - 8094 TCP -### Using the default configuration +## Configuration file -The default configuration requires a running InfluxDB instance as an output plugin. Ensure that InfluxDB is running on port 8086 before starting the Telegraf container. +The user is required to provide a valid configuration to use the image. A valid configuration has at least one input and one output plugin specified. The following will walk through the general steps to get going. -Minimal example to start an InfluxDB container: +### Basic Example -```console -$ docker run -d --name influxdb -p 8086:8086 influxdb -``` - -Starting Telegraf using the default config, which connects to InfluxDB at `http://localhost:8086/`: +Configuration files are TOML-based files that declare which plugins to use. A very simple configuration file, `telegraf.conf`, that collects metrics from the system CPU and outputs the metrics to stdout looks like the following: -```console -$ docker run --net=container:influxdb telegraf -``` - -### Using a custom config file - -First, generate a sample configuration and save it as `telegraf.conf` on the host: - -```console -$ docker run --rm telegraf telegraf config > telegraf.conf +```toml +[[inputs.cpu]] +[[outputs.file]] ``` -Once you've customized `telegraf.conf`, you can run the Telegraf container with it mounted in the expected location: +Once a user has a customized configuration file, they can launch a Telegraf container with it mounted in the expected location: ```console $ docker run -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro telegraf @@ -100,131 +100,26 @@ Modify `$PWD` to the directory where you want to store the configuration file. Read more about the Telegraf configuration [here](https://docs.influxdata.com/telegraf/latest/administration/configuration/). -### Using the container with input plugins - -These examples assume you are using a custom configuration file that takes advantage of Docker's built-in service discovery capability. In order to do so, we'll first create a new network: - -```console -$ docker network create influxdb -``` - -Next, we'll start our InfluxDB container named `influxdb`: - -```console -$ docker run -d --name=influxdb \ - --net=influxdb \ - influxdb -``` - -The `telegraf.conf` configuration can now resolve the `influxdb` container by name: - -```toml -[[outputs.influxdb]] - urls = ["http://influxdb:8086"] -``` - -Finally, we start our Telegraf container and verify functionality: - -```console -$ docker run -d --name=telegraf \ - --net=influxdb \ - -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ - telegraf -$ docker logs -f telegraf -``` - -#### Aerospike - -Start an instance of aerospike: +### Sample Configuration -```console -$ docker run -d --name aerospike \ - --net=influxdb \ - -p 3000-3003:3000-3003 \ - aerospike -``` - -Edit your Telegraf config file and set the correct connection parameter for Aerospike: - -```toml -[[inputs.aerospike]] - servers = ["aerospike:3000"] -``` - -Restart your `telegraf` container to pick up the changes: +Users can generate a sample configuration using the `config` subcommand. This will provide the user with a basic config that has a handful of input plugins enabled that collect data from the system. However, the user will still need to configure at least one output before the file is ready for use: ```console -$ docker restart telegraf -``` - -#### Nginx - -Create an `nginx_status.conf` configuration file to expose metric data: - -```nginx -server { - listen 8090; - location /nginx_status { - stub_status; - access_log off; - } -} -``` - -Start an Nginx container utilizing it: - -```console -$ docker run -d --name=nginx \ - --net=influxdb \ - -p 8090:8090 -p 8080:80 \ - -v $PWD/nginx_status.conf:/etc/nginx/conf.d/nginx_status.conf:ro \ - nginx -``` - -Verify the status page: [http://localhost:8090/nginx_status](http://localhost:8090/nginx_status). - -Configure the nginx input plugin in your Telegraf configuration file: - -```toml -[[inputs.nginx]] - urls = ["http://nginx:8090/nginx_status"] -``` - -Restart your `telegraf` container to pick up the changes: - -```console -$ docker restart telegraf -``` - -#### StatsD - -Telegraf has a StatsD plugin, allowing Telegraf to run as a StatsD server that metrics can be sent to. In order for this to work, you must first configure the [StatsD plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/statsd) in your config file. - -Run Telegraf with the UDP port 8125 exposed: - -```console -$ docker run -d --name=telegraf \ - --net=influxdb \ - -p 8125:8125/udp \ - -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ - telegraf -``` - -Send Mock StatsD data: - -```console -$ for i in {1..50}; do echo $i;echo "foo:1|c" | nc -u -w0 127.0.0.1 8125; done +$ docker run --rm telegraf telegraf config > telegraf.conf ``` -Check that the measurement `foo` is added in the DB. +## Supported Plugins Reference -### Supported Plugins Reference +The following are links to the various plugins that are available in Telegraf: -- [Input Plugins](https://docs.influxdata.com/telegraf/latest/plugins/inputs/) +- [Input Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#input-plugins) +- [Output Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#output-plugins) +- [Processor Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#processor-plugins) +- [Aggregator Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#aggregator-plugins) -- [Output Plugins](https://docs.influxdata.com/telegraf/latest/plugins/outputs/) +# Examples -### Monitoring the Docker Engine Host +## Monitoring the Docker Engine Host One common use case for Telegraf is to monitor the Docker Engine Host from within a container. The recommended technique is to mount the host filesystems into the container and use environment variables to instruct Telegraf where to locate the filesystems. @@ -243,7 +138,7 @@ $ docker run -d --name=telegraf \ telegraf ``` -### Monitoring docker containers +## Monitoring docker containers To monitor other docker containers, you can use the docker plugin and mount the docker socket into the container. An example configuration is below: @@ -264,7 +159,7 @@ $ docker run -d --name=telegraf \ Refer to the docker [plugin documentation](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/docker/README.md) for more information. -### Install Additional Packages +## Install Additional Packages Some plugins require additional packages to be installed. For example, the `ntpq` plugin requires `ntpq` command. It is recommended to create a custom derivative image to install any needed commands. diff --git a/telegraf/content.md b/telegraf/content.md index ee1a59af74f6..fd76add97103 100644 --- a/telegraf/content.md +++ b/telegraf/content.md @@ -1,44 +1,39 @@ -# Telegraf +# What is telegraf? -Telegraf is an open source agent written in Go for collecting metrics and data on the system it's running on or from other services. Telegraf writes data it collects to InfluxDB in the correct format. +Telegraf is an open source agent for collecting, processing, aggregating, and writing metrics. Based on a plugin system to enable developers in the community to easily add support for additional metric collection. There are five distinct types of plugins: -[Telegraf Official Docs](https://docs.influxdata.com/telegraf/latest/introduction/getting-started/) +- Input plugins collect metrics from the system, services, or 3rd party APIs +- Output plugins write metrics to various destinations +- Processor plugins transform, decorate, and/or filter metrics +- Aggregator plugins create aggregate metrics (e.g. mean, min, max, quantiles, etc.) +- Secret Store plugins are used to hide secrets from the configuration file + +[Telegraf Official Docs](https://docs.influxdata.com/telegraf/latest/get_started/) %%LOGO%% -## Using this image +# How to use this image -### Exposed Ports +## Exposed Ports -- 8125 StatsD +- 8125 UDP - 8092 UDP - 8094 TCP -### Using the default configuration - -The default configuration requires a running InfluxDB instance as an output plugin. Ensure that InfluxDB is running on port 8086 before starting the Telegraf container. - -Minimal example to start an InfluxDB container: - -```console -$ docker run -d --name influxdb -p 8086:8086 influxdb -``` - -Starting Telegraf using the default config, which connects to InfluxDB at `http://localhost:8086/`: +## Configuration file -```console -$ docker run --net=container:influxdb %%IMAGE%% -``` +The user is required to provide a valid configuration to use the image. A valid configuration has at least one input and one output plugin specified. The following will walk through the general steps to get going. -### Using a custom config file +### Basic Example -First, generate a sample configuration and save it as `telegraf.conf` on the host: +Configuration files are TOML-based files that declare which plugins to use. A very simple configuration file, `telegraf.conf`, that collects metrics from the system CPU and outputs the metrics to stdout looks like the following: -```console -$ docker run --rm %%IMAGE%% telegraf config > telegraf.conf +```toml +[[inputs.cpu]] +[[outputs.file]] ``` -Once you've customized `telegraf.conf`, you can run the Telegraf container with it mounted in the expected location: +Once a user has a customized configuration file, they can launch a Telegraf container with it mounted in the expected location: ```console $ docker run -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro %%IMAGE%% @@ -48,131 +43,26 @@ Modify `$PWD` to the directory where you want to store the configuration file. Read more about the Telegraf configuration [here](https://docs.influxdata.com/telegraf/latest/administration/configuration/). -### Using the container with input plugins - -These examples assume you are using a custom configuration file that takes advantage of Docker's built-in service discovery capability. In order to do so, we'll first create a new network: - -```console -$ docker network create influxdb -``` +### Sample Configuration -Next, we'll start our InfluxDB container named `influxdb`: +Users can generate a sample configuration using the `config` subcommand. This will provide the user with a basic config that has a handful of input plugins enabled that collect data from the system. However, the user will still need to configure at least one output before the file is ready for use: ```console -$ docker run -d --name=influxdb \ - --net=influxdb \ - influxdb -``` - -The `telegraf.conf` configuration can now resolve the `influxdb` container by name: - -```toml -[[outputs.influxdb]] - urls = ["http://influxdb:8086"] -``` - -Finally, we start our Telegraf container and verify functionality: - -```console -$ docker run -d --name=telegraf \ - --net=influxdb \ - -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ - %%IMAGE%% -$ docker logs -f telegraf -``` - -#### Aerospike - -Start an instance of aerospike: - -```console -$ docker run -d --name aerospike \ - --net=influxdb \ - -p 3000-3003:3000-3003 \ - aerospike -``` - -Edit your Telegraf config file and set the correct connection parameter for Aerospike: - -```toml -[[inputs.aerospike]] - servers = ["aerospike:3000"] -``` - -Restart your `telegraf` container to pick up the changes: - -```console -$ docker restart telegraf -``` - -#### Nginx - -Create an `nginx_status.conf` configuration file to expose metric data: - -```nginx -server { - listen 8090; - location /nginx_status { - stub_status; - access_log off; - } -} -``` - -Start an Nginx container utilizing it: - -```console -$ docker run -d --name=nginx \ - --net=influxdb \ - -p 8090:8090 -p 8080:80 \ - -v $PWD/nginx_status.conf:/etc/nginx/conf.d/nginx_status.conf:ro \ - nginx -``` - -Verify the status page: [http://localhost:8090/nginx_status](http://localhost:8090/nginx_status). - -Configure the nginx input plugin in your Telegraf configuration file: - -```toml -[[inputs.nginx]] - urls = ["http://nginx:8090/nginx_status"] -``` - -Restart your `telegraf` container to pick up the changes: - -```console -$ docker restart telegraf -``` - -#### StatsD - -Telegraf has a StatsD plugin, allowing Telegraf to run as a StatsD server that metrics can be sent to. In order for this to work, you must first configure the [StatsD plugin](https://github.com/influxdata/telegraf/tree/master/plugins/inputs/statsd) in your config file. - -Run Telegraf with the UDP port 8125 exposed: - -```console -$ docker run -d --name=telegraf \ - --net=influxdb \ - -p 8125:8125/udp \ - -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ - %%IMAGE%% -``` - -Send Mock StatsD data: - -```console -$ for i in {1..50}; do echo $i;echo "foo:1|c" | nc -u -w0 127.0.0.1 8125; done +$ docker run --rm %%IMAGE%% telegraf config > telegraf.conf ``` -Check that the measurement `foo` is added in the DB. +## Supported Plugins Reference -### Supported Plugins Reference +The following are links to the various plugins that are available in Telegraf: -- [Input Plugins](https://docs.influxdata.com/telegraf/latest/plugins/inputs/) +- [Input Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#input-plugins) +- [Output Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#output-plugins) +- [Processor Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#processor-plugins) +- [Aggregator Plugins](https://docs.influxdata.com/telegraf/latest/plugins/#aggregator-plugins) -- [Output Plugins](https://docs.influxdata.com/telegraf/latest/plugins/outputs/) +# Examples -### Monitoring the Docker Engine Host +## Monitoring the Docker Engine Host One common use case for Telegraf is to monitor the Docker Engine Host from within a container. The recommended technique is to mount the host filesystems into the container and use environment variables to instruct Telegraf where to locate the filesystems. @@ -191,7 +81,7 @@ $ docker run -d --name=telegraf \ %%IMAGE%% ``` -### Monitoring docker containers +## Monitoring docker containers To monitor other docker containers, you can use the docker plugin and mount the docker socket into the container. An example configuration is below: @@ -212,7 +102,7 @@ $ docker run -d --name=telegraf \ Refer to the docker [plugin documentation](https://github.com/influxdata/telegraf/blob/master/plugins/inputs/docker/README.md) for more information. -### Install Additional Packages +## Install Additional Packages Some plugins require additional packages to be installed. For example, the `ntpq` plugin requires `ntpq` command. It is recommended to create a custom derivative image to install any needed commands. diff --git a/telegraf/logo.png b/telegraf/logo.png index 814b2d78b596..79a22fa97edd 100644 Binary files a/telegraf/logo.png and b/telegraf/logo.png differ diff --git a/telegraf/metadata.json b/telegraf/metadata.json new file mode 100644 index 000000000000..5f9ae9afb8e1 --- /dev/null +++ b/telegraf/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "monitoring-and-observability" + ] + } +} diff --git a/tomcat/README.md b/tomcat/README.md index 936013036483..7231b931262c 100644 --- a/tomcat/README.md +++ b/tomcat/README.md @@ -24,52 +24,117 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`11.0.0-M1-jdk17-temurin-jammy`, `11.0.0-jdk17-temurin-jammy`, `11.0-jdk17-temurin-jammy`, `11.0.0-M1-jdk17-temurin`, `11.0.0-jdk17-temurin`, `11.0-jdk17-temurin`, `11.0.0-M1-jdk17`, `11.0.0-jdk17`, `11.0-jdk17`, `11.0.0-M1`, `11.0.0`, `11.0`](https://github.com/docker-library/tomcat/blob/f413ee3c1b5be50b58db8cd1e9caff62a040b868/11.0/jdk17/temurin-jammy/Dockerfile) -- [`11.0.0-M1-jre17-temurin-jammy`, `11.0.0-jre17-temurin-jammy`, `11.0-jre17-temurin-jammy`, `11.0.0-M1-jre17-temurin`, `11.0.0-jre17-temurin`, `11.0-jre17-temurin`, `11.0.0-M1-jre17`, `11.0.0-jre17`, `11.0-jre17`](https://github.com/docker-library/tomcat/blob/f413ee3c1b5be50b58db8cd1e9caff62a040b868/11.0/jre17/temurin-jammy/Dockerfile) -- [`11.0.0-M1-jdk11-temurin-jammy`, `11.0.0-jdk11-temurin-jammy`, `11.0-jdk11-temurin-jammy`, `11.0.0-M1-jdk11-temurin`, `11.0.0-jdk11-temurin`, `11.0-jdk11-temurin`, `11.0.0-M1-jdk11`, `11.0.0-jdk11`, `11.0-jdk11`](https://github.com/docker-library/tomcat/blob/f413ee3c1b5be50b58db8cd1e9caff62a040b868/11.0/jdk11/temurin-jammy/Dockerfile) -- [`11.0.0-M1-jre11-temurin-jammy`, `11.0.0-jre11-temurin-jammy`, `11.0-jre11-temurin-jammy`, `11.0.0-M1-jre11-temurin`, `11.0.0-jre11-temurin`, `11.0-jre11-temurin`, `11.0.0-M1-jre11`, `11.0.0-jre11`, `11.0-jre11`](https://github.com/docker-library/tomcat/blob/f413ee3c1b5be50b58db8cd1e9caff62a040b868/11.0/jre11/temurin-jammy/Dockerfile) -- [`10.1.5-jdk17-temurin-jammy`, `10.1-jdk17-temurin-jammy`, `10-jdk17-temurin-jammy`, `jdk17-temurin-jammy`, `10.1.5-jdk17-temurin`, `10.1-jdk17-temurin`, `10-jdk17-temurin`, `jdk17-temurin`, `10.1.5-jdk17`, `10.1-jdk17`, `10-jdk17`, `jdk17`, `10.1.5`, `10.1`, `10`, `latest`](https://github.com/docker-library/tomcat/blob/09fae3d6a2967a4f78a2135bbd092e067a5fa3ec/10.1/jdk17/temurin-jammy/Dockerfile) -- [`10.1.5-jre17-temurin-jammy`, `10.1-jre17-temurin-jammy`, `10-jre17-temurin-jammy`, `jre17-temurin-jammy`, `10.1.5-jre17-temurin`, `10.1-jre17-temurin`, `10-jre17-temurin`, `jre17-temurin`, `10.1.5-jre17`, `10.1-jre17`, `10-jre17`, `jre17`](https://github.com/docker-library/tomcat/blob/09fae3d6a2967a4f78a2135bbd092e067a5fa3ec/10.1/jre17/temurin-jammy/Dockerfile) -- [`10.1.5-jdk11-temurin-jammy`, `10.1-jdk11-temurin-jammy`, `10-jdk11-temurin-jammy`, `jdk11-temurin-jammy`, `10.1.5-jdk11-temurin`, `10.1-jdk11-temurin`, `10-jdk11-temurin`, `jdk11-temurin`, `10.1.5-jdk11`, `10.1-jdk11`, `10-jdk11`, `jdk11`](https://github.com/docker-library/tomcat/blob/09fae3d6a2967a4f78a2135bbd092e067a5fa3ec/10.1/jdk11/temurin-jammy/Dockerfile) -- [`10.1.5-jre11-temurin-jammy`, `10.1-jre11-temurin-jammy`, `10-jre11-temurin-jammy`, `jre11-temurin-jammy`, `10.1.5-jre11-temurin`, `10.1-jre11-temurin`, `10-jre11-temurin`, `jre11-temurin`, `10.1.5-jre11`, `10.1-jre11`, `10-jre11`, `jre11`](https://github.com/docker-library/tomcat/blob/09fae3d6a2967a4f78a2135bbd092e067a5fa3ec/10.1/jre11/temurin-jammy/Dockerfile) -- [`9.0.71-jdk17-temurin-jammy`, `9.0-jdk17-temurin-jammy`, `9-jdk17-temurin-jammy`, `9.0.71-jdk17-temurin`, `9.0-jdk17-temurin`, `9-jdk17-temurin`, `9.0.71-jdk17`, `9.0-jdk17`, `9-jdk17`, `9.0.71`, `9.0`, `9`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk17/temurin-jammy/Dockerfile) -- [`9.0.71-jre17-temurin-jammy`, `9.0-jre17-temurin-jammy`, `9-jre17-temurin-jammy`, `9.0.71-jre17-temurin`, `9.0-jre17-temurin`, `9-jre17-temurin`, `9.0.71-jre17`, `9.0-jre17`, `9-jre17`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jre17/temurin-jammy/Dockerfile) -- [`9.0.71-jdk17-temurin-focal`, `9.0-jdk17-temurin-focal`, `9-jdk17-temurin-focal`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk17/temurin-focal/Dockerfile) -- [`9.0.71-jre17-temurin-focal`, `9.0-jre17-temurin-focal`, `9-jre17-temurin-focal`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jre17/temurin-focal/Dockerfile) -- [`9.0.71-jdk17-corretto-al2`, `9.0-jdk17-corretto-al2`, `9-jdk17-corretto-al2`, `9.0.71-jdk17-corretto`, `9.0-jdk17-corretto`, `9-jdk17-corretto`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk17/corretto-al2/Dockerfile) -- [`9.0.71-jdk11-temurin-jammy`, `9.0-jdk11-temurin-jammy`, `9-jdk11-temurin-jammy`, `9.0.71-jdk11-temurin`, `9.0-jdk11-temurin`, `9-jdk11-temurin`, `9.0.71-jdk11`, `9.0-jdk11`, `9-jdk11`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk11/temurin-jammy/Dockerfile) -- [`9.0.71-jre11-temurin-jammy`, `9.0-jre11-temurin-jammy`, `9-jre11-temurin-jammy`, `9.0.71-jre11-temurin`, `9.0-jre11-temurin`, `9-jre11-temurin`, `9.0.71-jre11`, `9.0-jre11`, `9-jre11`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jre11/temurin-jammy/Dockerfile) -- [`9.0.71-jdk11-temurin-focal`, `9.0-jdk11-temurin-focal`, `9-jdk11-temurin-focal`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk11/temurin-focal/Dockerfile) -- [`9.0.71-jre11-temurin-focal`, `9.0-jre11-temurin-focal`, `9-jre11-temurin-focal`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jre11/temurin-focal/Dockerfile) -- [`9.0.71-jdk11-corretto-al2`, `9.0-jdk11-corretto-al2`, `9-jdk11-corretto-al2`, `9.0.71-jdk11-corretto`, `9.0-jdk11-corretto`, `9-jdk11-corretto`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk11/corretto-al2/Dockerfile) -- [`9.0.71-jdk8-temurin-jammy`, `9.0-jdk8-temurin-jammy`, `9-jdk8-temurin-jammy`, `9.0.71-jdk8-temurin`, `9.0-jdk8-temurin`, `9-jdk8-temurin`, `9.0.71-jdk8`, `9.0-jdk8`, `9-jdk8`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk8/temurin-jammy/Dockerfile) -- [`9.0.71-jre8-temurin-jammy`, `9.0-jre8-temurin-jammy`, `9-jre8-temurin-jammy`, `9.0.71-jre8-temurin`, `9.0-jre8-temurin`, `9-jre8-temurin`, `9.0.71-jre8`, `9.0-jre8`, `9-jre8`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jre8/temurin-jammy/Dockerfile) -- [`9.0.71-jdk8-temurin-focal`, `9.0-jdk8-temurin-focal`, `9-jdk8-temurin-focal`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk8/temurin-focal/Dockerfile) -- [`9.0.71-jre8-temurin-focal`, `9.0-jre8-temurin-focal`, `9-jre8-temurin-focal`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jre8/temurin-focal/Dockerfile) -- [`9.0.71-jdk8-corretto-al2`, `9.0-jdk8-corretto-al2`, `9-jdk8-corretto-al2`, `9.0.71-jdk8-corretto`, `9.0-jdk8-corretto`, `9-jdk8-corretto`](https://github.com/docker-library/tomcat/blob/2fe063250eb12b5a1a49e91dbb8e69f4a4127e45/9.0/jdk8/corretto-al2/Dockerfile) -- [`8.5.84-jdk17-temurin-jammy`, `8.5-jdk17-temurin-jammy`, `8-jdk17-temurin-jammy`, `8.5.84-jdk17-temurin`, `8.5-jdk17-temurin`, `8-jdk17-temurin`, `8.5.84-jdk17`, `8.5-jdk17`, `8-jdk17`, `8.5.84`, `8.5`, `8`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk17/temurin-jammy/Dockerfile) -- [`8.5.84-jre17-temurin-jammy`, `8.5-jre17-temurin-jammy`, `8-jre17-temurin-jammy`, `8.5.84-jre17-temurin`, `8.5-jre17-temurin`, `8-jre17-temurin`, `8.5.84-jre17`, `8.5-jre17`, `8-jre17`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jre17/temurin-jammy/Dockerfile) -- [`8.5.84-jdk17-temurin-focal`, `8.5-jdk17-temurin-focal`, `8-jdk17-temurin-focal`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk17/temurin-focal/Dockerfile) -- [`8.5.84-jre17-temurin-focal`, `8.5-jre17-temurin-focal`, `8-jre17-temurin-focal`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jre17/temurin-focal/Dockerfile) -- [`8.5.84-jdk17-corretto-al2`, `8.5-jdk17-corretto-al2`, `8-jdk17-corretto-al2`, `8.5.84-jdk17-corretto`, `8.5-jdk17-corretto`, `8-jdk17-corretto`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk17/corretto-al2/Dockerfile) -- [`8.5.84-jdk11-temurin-jammy`, `8.5-jdk11-temurin-jammy`, `8-jdk11-temurin-jammy`, `8.5.84-jdk11-temurin`, `8.5-jdk11-temurin`, `8-jdk11-temurin`, `8.5.84-jdk11`, `8.5-jdk11`, `8-jdk11`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk11/temurin-jammy/Dockerfile) -- [`8.5.84-jre11-temurin-jammy`, `8.5-jre11-temurin-jammy`, `8-jre11-temurin-jammy`, `8.5.84-jre11-temurin`, `8.5-jre11-temurin`, `8-jre11-temurin`, `8.5.84-jre11`, `8.5-jre11`, `8-jre11`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jre11/temurin-jammy/Dockerfile) -- [`8.5.84-jdk11-temurin-focal`, `8.5-jdk11-temurin-focal`, `8-jdk11-temurin-focal`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk11/temurin-focal/Dockerfile) -- [`8.5.84-jre11-temurin-focal`, `8.5-jre11-temurin-focal`, `8-jre11-temurin-focal`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jre11/temurin-focal/Dockerfile) -- [`8.5.84-jdk11-corretto-al2`, `8.5-jdk11-corretto-al2`, `8-jdk11-corretto-al2`, `8.5.84-jdk11-corretto`, `8.5-jdk11-corretto`, `8-jdk11-corretto`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk11/corretto-al2/Dockerfile) -- [`8.5.84-jdk8-temurin-jammy`, `8.5-jdk8-temurin-jammy`, `8-jdk8-temurin-jammy`, `8.5.84-jdk8-temurin`, `8.5-jdk8-temurin`, `8-jdk8-temurin`, `8.5.84-jdk8`, `8.5-jdk8`, `8-jdk8`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk8/temurin-jammy/Dockerfile) -- [`8.5.84-jre8-temurin-jammy`, `8.5-jre8-temurin-jammy`, `8-jre8-temurin-jammy`, `8.5.84-jre8-temurin`, `8.5-jre8-temurin`, `8-jre8-temurin`, `8.5.84-jre8`, `8.5-jre8`, `8-jre8`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jre8/temurin-jammy/Dockerfile) -- [`8.5.84-jdk8-temurin-focal`, `8.5-jdk8-temurin-focal`, `8-jdk8-temurin-focal`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk8/temurin-focal/Dockerfile) -- [`8.5.84-jre8-temurin-focal`, `8.5-jre8-temurin-focal`, `8-jre8-temurin-focal`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jre8/temurin-focal/Dockerfile) -- [`8.5.84-jdk8-corretto-al2`, `8.5-jdk8-corretto-al2`, `8-jdk8-corretto-al2`, `8.5.84-jdk8-corretto`, `8.5-jdk8-corretto`, `8-jdk8-corretto`](https://github.com/docker-library/tomcat/blob/9cad4b1a880782d3504d7c8723fccc667965cf29/8.5/jdk8/corretto-al2/Dockerfile) +- [`11.0.14-jdk25-temurin-noble`, `11.0-jdk25-temurin-noble`, `11-jdk25-temurin-noble`, `jdk25-temurin-noble`, `11.0.14-jdk25-temurin`, `11.0-jdk25-temurin`, `11-jdk25-temurin`, `jdk25-temurin`, `11.0.14-jdk25`, `11.0-jdk25`, `11-jdk25`, `jdk25`, `11.0.14`, `11.0`, `11`, `latest`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jdk25/temurin-noble/Dockerfile) + +- [`11.0.14-jre25-temurin-noble`, `11.0-jre25-temurin-noble`, `11-jre25-temurin-noble`, `jre25-temurin-noble`, `11.0.14-jre25-temurin`, `11.0-jre25-temurin`, `11-jre25-temurin`, `jre25-temurin`, `11.0.14-jre25`, `11.0-jre25`, `11-jre25`, `jre25`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jre25/temurin-noble/Dockerfile) + +- [`11.0.14-jdk25-temurin-jammy`, `11.0-jdk25-temurin-jammy`, `11-jdk25-temurin-jammy`, `jdk25-temurin-jammy`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jdk25/temurin-jammy/Dockerfile) + +- [`11.0.14-jre25-temurin-jammy`, `11.0-jre25-temurin-jammy`, `11-jre25-temurin-jammy`, `jre25-temurin-jammy`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jre25/temurin-jammy/Dockerfile) + +- [`11.0.14-jdk21-temurin-noble`, `11.0-jdk21-temurin-noble`, `11-jdk21-temurin-noble`, `jdk21-temurin-noble`, `11.0.14-jdk21-temurin`, `11.0-jdk21-temurin`, `11-jdk21-temurin`, `jdk21-temurin`, `11.0.14-jdk21`, `11.0-jdk21`, `11-jdk21`, `jdk21`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jdk21/temurin-noble/Dockerfile) + +- [`11.0.14-jre21-temurin-noble`, `11.0-jre21-temurin-noble`, `11-jre21-temurin-noble`, `jre21-temurin-noble`, `11.0.14-jre21-temurin`, `11.0-jre21-temurin`, `11-jre21-temurin`, `jre21-temurin`, `11.0.14-jre21`, `11.0-jre21`, `11-jre21`, `jre21`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jre21/temurin-noble/Dockerfile) + +- [`11.0.14-jdk21-temurin-jammy`, `11.0-jdk21-temurin-jammy`, `11-jdk21-temurin-jammy`, `jdk21-temurin-jammy`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jdk21/temurin-jammy/Dockerfile) + +- [`11.0.14-jre21-temurin-jammy`, `11.0-jre21-temurin-jammy`, `11-jre21-temurin-jammy`, `jre21-temurin-jammy`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jre21/temurin-jammy/Dockerfile) + +- [`11.0.14-jdk17-temurin-noble`, `11.0-jdk17-temurin-noble`, `11-jdk17-temurin-noble`, `jdk17-temurin-noble`, `11.0.14-jdk17-temurin`, `11.0-jdk17-temurin`, `11-jdk17-temurin`, `jdk17-temurin`, `11.0.14-jdk17`, `11.0-jdk17`, `11-jdk17`, `jdk17`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jdk17/temurin-noble/Dockerfile) + +- [`11.0.14-jre17-temurin-noble`, `11.0-jre17-temurin-noble`, `11-jre17-temurin-noble`, `jre17-temurin-noble`, `11.0.14-jre17-temurin`, `11.0-jre17-temurin`, `11-jre17-temurin`, `jre17-temurin`, `11.0.14-jre17`, `11.0-jre17`, `11-jre17`, `jre17`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jre17/temurin-noble/Dockerfile) + +- [`11.0.14-jdk17-temurin-jammy`, `11.0-jdk17-temurin-jammy`, `11-jdk17-temurin-jammy`, `jdk17-temurin-jammy`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jdk17/temurin-jammy/Dockerfile) + +- [`11.0.14-jre17-temurin-jammy`, `11.0-jre17-temurin-jammy`, `11-jre17-temurin-jammy`, `jre17-temurin-jammy`](https://github.com/docker-library/tomcat/blob/9d4b3677fa27c45855813375487d531591202deb/11.0/jre17/temurin-jammy/Dockerfile) + +- [`10.1.49-jdk25-temurin-noble`, `10.1-jdk25-temurin-noble`, `10-jdk25-temurin-noble`, `10.1.49-jdk25-temurin`, `10.1-jdk25-temurin`, `10-jdk25-temurin`, `10.1.49-jdk25`, `10.1-jdk25`, `10-jdk25`, `10.1.49`, `10.1`, `10`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk25/temurin-noble/Dockerfile) + +- [`10.1.49-jre25-temurin-noble`, `10.1-jre25-temurin-noble`, `10-jre25-temurin-noble`, `10.1.49-jre25-temurin`, `10.1-jre25-temurin`, `10-jre25-temurin`, `10.1.49-jre25`, `10.1-jre25`, `10-jre25`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre25/temurin-noble/Dockerfile) + +- [`10.1.49-jdk25-temurin-jammy`, `10.1-jdk25-temurin-jammy`, `10-jdk25-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk25/temurin-jammy/Dockerfile) + +- [`10.1.49-jre25-temurin-jammy`, `10.1-jre25-temurin-jammy`, `10-jre25-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre25/temurin-jammy/Dockerfile) + +- [`10.1.49-jdk21-temurin-noble`, `10.1-jdk21-temurin-noble`, `10-jdk21-temurin-noble`, `10.1.49-jdk21-temurin`, `10.1-jdk21-temurin`, `10-jdk21-temurin`, `10.1.49-jdk21`, `10.1-jdk21`, `10-jdk21`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk21/temurin-noble/Dockerfile) + +- [`10.1.49-jre21-temurin-noble`, `10.1-jre21-temurin-noble`, `10-jre21-temurin-noble`, `10.1.49-jre21-temurin`, `10.1-jre21-temurin`, `10-jre21-temurin`, `10.1.49-jre21`, `10.1-jre21`, `10-jre21`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre21/temurin-noble/Dockerfile) + +- [`10.1.49-jdk21-temurin-jammy`, `10.1-jdk21-temurin-jammy`, `10-jdk21-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk21/temurin-jammy/Dockerfile) + +- [`10.1.49-jre21-temurin-jammy`, `10.1-jre21-temurin-jammy`, `10-jre21-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre21/temurin-jammy/Dockerfile) + +- [`10.1.49-jdk17-temurin-noble`, `10.1-jdk17-temurin-noble`, `10-jdk17-temurin-noble`, `10.1.49-jdk17-temurin`, `10.1-jdk17-temurin`, `10-jdk17-temurin`, `10.1.49-jdk17`, `10.1-jdk17`, `10-jdk17`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk17/temurin-noble/Dockerfile) + +- [`10.1.49-jre17-temurin-noble`, `10.1-jre17-temurin-noble`, `10-jre17-temurin-noble`, `10.1.49-jre17-temurin`, `10.1-jre17-temurin`, `10-jre17-temurin`, `10.1.49-jre17`, `10.1-jre17`, `10-jre17`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre17/temurin-noble/Dockerfile) + +- [`10.1.49-jdk17-temurin-jammy`, `10.1-jdk17-temurin-jammy`, `10-jdk17-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk17/temurin-jammy/Dockerfile) + +- [`10.1.49-jre17-temurin-jammy`, `10.1-jre17-temurin-jammy`, `10-jre17-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre17/temurin-jammy/Dockerfile) + +- [`10.1.49-jdk11-temurin-noble`, `10.1-jdk11-temurin-noble`, `10-jdk11-temurin-noble`, `10.1.49-jdk11-temurin`, `10.1-jdk11-temurin`, `10-jdk11-temurin`, `10.1.49-jdk11`, `10.1-jdk11`, `10-jdk11`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk11/temurin-noble/Dockerfile) + +- [`10.1.49-jre11-temurin-noble`, `10.1-jre11-temurin-noble`, `10-jre11-temurin-noble`, `10.1.49-jre11-temurin`, `10.1-jre11-temurin`, `10-jre11-temurin`, `10.1.49-jre11`, `10.1-jre11`, `10-jre11`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre11/temurin-noble/Dockerfile) + +- [`10.1.49-jdk11-temurin-jammy`, `10.1-jdk11-temurin-jammy`, `10-jdk11-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jdk11/temurin-jammy/Dockerfile) + +- [`10.1.49-jre11-temurin-jammy`, `10.1-jre11-temurin-jammy`, `10-jre11-temurin-jammy`](https://github.com/docker-library/tomcat/blob/c792d903e012130436884197adcdfb8018c5f426/10.1/jre11/temurin-jammy/Dockerfile) + +- [`9.0.112-jdk25-temurin-noble`, `9.0-jdk25-temurin-noble`, `9-jdk25-temurin-noble`, `9.0.112-jdk25-temurin`, `9.0-jdk25-temurin`, `9-jdk25-temurin`, `9.0.112-jdk25`, `9.0-jdk25`, `9-jdk25`, `9.0.112`, `9.0`, `9`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk25/temurin-noble/Dockerfile) + +- [`9.0.112-jre25-temurin-noble`, `9.0-jre25-temurin-noble`, `9-jre25-temurin-noble`, `9.0.112-jre25-temurin`, `9.0-jre25-temurin`, `9-jre25-temurin`, `9.0.112-jre25`, `9.0-jre25`, `9-jre25`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre25/temurin-noble/Dockerfile) + +- [`9.0.112-jdk25-temurin-jammy`, `9.0-jdk25-temurin-jammy`, `9-jdk25-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk25/temurin-jammy/Dockerfile) + +- [`9.0.112-jre25-temurin-jammy`, `9.0-jre25-temurin-jammy`, `9-jre25-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre25/temurin-jammy/Dockerfile) + +- [`9.0.112-jdk21-temurin-noble`, `9.0-jdk21-temurin-noble`, `9-jdk21-temurin-noble`, `9.0.112-jdk21-temurin`, `9.0-jdk21-temurin`, `9-jdk21-temurin`, `9.0.112-jdk21`, `9.0-jdk21`, `9-jdk21`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk21/temurin-noble/Dockerfile) + +- [`9.0.112-jre21-temurin-noble`, `9.0-jre21-temurin-noble`, `9-jre21-temurin-noble`, `9.0.112-jre21-temurin`, `9.0-jre21-temurin`, `9-jre21-temurin`, `9.0.112-jre21`, `9.0-jre21`, `9-jre21`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre21/temurin-noble/Dockerfile) + +- [`9.0.112-jdk21-temurin-jammy`, `9.0-jdk21-temurin-jammy`, `9-jdk21-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk21/temurin-jammy/Dockerfile) + +- [`9.0.112-jre21-temurin-jammy`, `9.0-jre21-temurin-jammy`, `9-jre21-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre21/temurin-jammy/Dockerfile) + +- [`9.0.112-jdk21-corretto-al2`, `9.0-jdk21-corretto-al2`, `9-jdk21-corretto-al2`, `9.0.112-jdk21-corretto`, `9.0-jdk21-corretto`, `9-jdk21-corretto`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk21/corretto-al2/Dockerfile) + +- [`9.0.112-jdk17-temurin-noble`, `9.0-jdk17-temurin-noble`, `9-jdk17-temurin-noble`, `9.0.112-jdk17-temurin`, `9.0-jdk17-temurin`, `9-jdk17-temurin`, `9.0.112-jdk17`, `9.0-jdk17`, `9-jdk17`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk17/temurin-noble/Dockerfile) + +- [`9.0.112-jre17-temurin-noble`, `9.0-jre17-temurin-noble`, `9-jre17-temurin-noble`, `9.0.112-jre17-temurin`, `9.0-jre17-temurin`, `9-jre17-temurin`, `9.0.112-jre17`, `9.0-jre17`, `9-jre17`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre17/temurin-noble/Dockerfile) + +- [`9.0.112-jdk17-temurin-jammy`, `9.0-jdk17-temurin-jammy`, `9-jdk17-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk17/temurin-jammy/Dockerfile) + +- [`9.0.112-jre17-temurin-jammy`, `9.0-jre17-temurin-jammy`, `9-jre17-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre17/temurin-jammy/Dockerfile) + +- [`9.0.112-jdk17-corretto-al2`, `9.0-jdk17-corretto-al2`, `9-jdk17-corretto-al2`, `9.0.112-jdk17-corretto`, `9.0-jdk17-corretto`, `9-jdk17-corretto`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk17/corretto-al2/Dockerfile) + +- [`9.0.112-jdk11-temurin-noble`, `9.0-jdk11-temurin-noble`, `9-jdk11-temurin-noble`, `9.0.112-jdk11-temurin`, `9.0-jdk11-temurin`, `9-jdk11-temurin`, `9.0.112-jdk11`, `9.0-jdk11`, `9-jdk11`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk11/temurin-noble/Dockerfile) + +- [`9.0.112-jre11-temurin-noble`, `9.0-jre11-temurin-noble`, `9-jre11-temurin-noble`, `9.0.112-jre11-temurin`, `9.0-jre11-temurin`, `9-jre11-temurin`, `9.0.112-jre11`, `9.0-jre11`, `9-jre11`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre11/temurin-noble/Dockerfile) + +- [`9.0.112-jdk11-temurin-jammy`, `9.0-jdk11-temurin-jammy`, `9-jdk11-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk11/temurin-jammy/Dockerfile) + +- [`9.0.112-jre11-temurin-jammy`, `9.0-jre11-temurin-jammy`, `9-jre11-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre11/temurin-jammy/Dockerfile) + +- [`9.0.112-jdk11-corretto-al2`, `9.0-jdk11-corretto-al2`, `9-jdk11-corretto-al2`, `9.0.112-jdk11-corretto`, `9.0-jdk11-corretto`, `9-jdk11-corretto`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk11/corretto-al2/Dockerfile) + +- [`9.0.112-jdk8-temurin-noble`, `9.0-jdk8-temurin-noble`, `9-jdk8-temurin-noble`, `9.0.112-jdk8-temurin`, `9.0-jdk8-temurin`, `9-jdk8-temurin`, `9.0.112-jdk8`, `9.0-jdk8`, `9-jdk8`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk8/temurin-noble/Dockerfile) + +- [`9.0.112-jre8-temurin-noble`, `9.0-jre8-temurin-noble`, `9-jre8-temurin-noble`, `9.0.112-jre8-temurin`, `9.0-jre8-temurin`, `9-jre8-temurin`, `9.0.112-jre8`, `9.0-jre8`, `9-jre8`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre8/temurin-noble/Dockerfile) + +- [`9.0.112-jdk8-temurin-jammy`, `9.0-jdk8-temurin-jammy`, `9-jdk8-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk8/temurin-jammy/Dockerfile) + +- [`9.0.112-jre8-temurin-jammy`, `9.0-jre8-temurin-jammy`, `9-jre8-temurin-jammy`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jre8/temurin-jammy/Dockerfile) + +- [`9.0.112-jdk8-corretto-al2`, `9.0-jdk8-corretto-al2`, `9-jdk8-corretto-al2`, `9.0.112-jdk8-corretto`, `9.0-jdk8-corretto`, `9-jdk8-corretto`](https://github.com/docker-library/tomcat/blob/a8e9ad4c755bcfe2d72e9a1a01dd1ef8d3495e2e/9.0/jdk8/corretto-al2/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/tomcat/issues](https://github.com/docker-library/tomcat/issues) + [https://github.com/docker-library/tomcat/issues](https://github.com/docker-library/tomcat/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/tomcat/), [`arm32v7`](https://hub.docker.com/r/arm32v7/tomcat/), [`arm64v8`](https://hub.docker.com/r/arm64v8/tomcat/), [`ppc64le`](https://hub.docker.com/r/ppc64le/tomcat/), [`s390x`](https://hub.docker.com/r/s390x/tomcat/) + [`amd64`](https://hub.docker.com/r/amd64/tomcat/), [`arm32v7`](https://hub.docker.com/r/arm32v7/tomcat/), [`arm64v8`](https://hub.docker.com/r/arm64v8/tomcat/), [`ppc64le`](https://hub.docker.com/r/ppc64le/tomcat/), [`riscv64`](https://hub.docker.com/r/riscv64/tomcat/), [`s390x`](https://hub.docker.com/r/s390x/tomcat/) - **Published image artifact details**: [repo-info repo's `repos/tomcat/` directory](https://github.com/docker-library/repo-info/blob/master/repos/tomcat) ([history](https://github.com/docker-library/repo-info/commits/master/repos/tomcat)) diff --git a/tomcat/metadata.json b/tomcat/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/tomcat/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/tomee/README.md b/tomee/README.md index 37f23153294d..f1ab1f575516 100644 --- a/tomee/README.md +++ b/tomee/README.md @@ -24,67 +24,82 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8.0.13-jre17-Temurin-ubuntu-webprofile`, `8.0.13-Temurin-ubuntu-webprofile`, `8.0.13-jre17-ubuntu-webprofile`, `8.0.13-ubuntu-webprofile`, `8.0.13-jre17-Temurin-webprofile`, `8.0.13-Temurin-webprofile`, `8.0.13-jre17-webprofile`, `8.0.13-webprofile`, `8.0.13-jre17-Temurin-ubuntu`, `8.0.13-Temurin-ubuntu`, `8.0.13-jre17-ubuntu`, `8.0.13-ubuntu`, `8.0.13-jre17-Temurin`, `8.0.13-Temurin`, `8.0.13-jre17`, `8.0.13`, `8.0-jre17-Temurin-ubuntu-webprofile`, `8.0-Temurin-ubuntu-webprofile`, `8.0-jre17-ubuntu-webprofile`, `8.0-ubuntu-webprofile`, `8.0-jre17-Temurin-webprofile`, `8.0-Temurin-webprofile`, `8.0-jre17-webprofile`, `8.0-webprofile`, `8.0-jre17-Temurin-ubuntu`, `8.0-Temurin-ubuntu`, `8.0-jre17-ubuntu`, `8.0-ubuntu`, `8.0-jre17-Temurin`, `8.0-Temurin`, `8.0-jre17`, `8.0`, `8-jre17-Temurin-ubuntu-webprofile`, `8-Temurin-ubuntu-webprofile`, `8-jre17-ubuntu-webprofile`, `8-ubuntu-webprofile`, `8-jre17-Temurin-webprofile`, `8-Temurin-webprofile`, `8-jre17-webprofile`, `8-webprofile`, `8-jre17-Temurin-ubuntu`, `8-Temurin-ubuntu`, `8-jre17-ubuntu`, `8-ubuntu`, `8-jre17-Temurin`, `8-Temurin`, `8-jre17`, `8`, `jre17-Temurin-ubuntu-webprofile`, `Temurin-ubuntu-webprofile`, `jre17-ubuntu-webprofile`, `ubuntu-webprofile`, `jre17-Temurin-webprofile`, `Temurin-webprofile`, `jre17-webprofile`, `webprofile`, `jre17-Temurin-ubuntu`, `Temurin-ubuntu`, `jre17-ubuntu`, `ubuntu`, `jre17-Temurin`, `Temurin`, `jre17`, `latest`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/ubuntu/webprofile/Dockerfile) -- [`8.0.13-jre17-Temurin-ubuntu-microprofile`, `8.0.13-Temurin-ubuntu-microprofile`, `8.0.13-jre17-ubuntu-microprofile`, `8.0.13-ubuntu-microprofile`, `8.0.13-jre17-Temurin-microprofile`, `8.0.13-Temurin-microprofile`, `8.0.13-jre17-microprofile`, `8.0.13-microprofile`, `8.0-jre17-Temurin-ubuntu-microprofile`, `8.0-Temurin-ubuntu-microprofile`, `8.0-jre17-ubuntu-microprofile`, `8.0-ubuntu-microprofile`, `8.0-jre17-Temurin-microprofile`, `8.0-Temurin-microprofile`, `8.0-jre17-microprofile`, `8.0-microprofile`, `8-jre17-Temurin-ubuntu-microprofile`, `8-Temurin-ubuntu-microprofile`, `8-jre17-ubuntu-microprofile`, `8-ubuntu-microprofile`, `8-jre17-Temurin-microprofile`, `8-Temurin-microprofile`, `8-jre17-microprofile`, `8-microprofile`, `jre17-Temurin-ubuntu-microprofile`, `Temurin-ubuntu-microprofile`, `jre17-ubuntu-microprofile`, `ubuntu-microprofile`, `jre17-Temurin-microprofile`, `Temurin-microprofile`, `jre17-microprofile`, `microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/ubuntu/microprofile/Dockerfile) -- [`8.0.13-jre17-Temurin-ubuntu-plume`, `8.0.13-Temurin-ubuntu-plume`, `8.0.13-jre17-ubuntu-plume`, `8.0.13-ubuntu-plume`, `8.0.13-jre17-Temurin-plume`, `8.0.13-Temurin-plume`, `8.0.13-jre17-plume`, `8.0.13-plume`, `8.0-jre17-Temurin-ubuntu-plume`, `8.0-Temurin-ubuntu-plume`, `8.0-jre17-ubuntu-plume`, `8.0-ubuntu-plume`, `8.0-jre17-Temurin-plume`, `8.0-Temurin-plume`, `8.0-jre17-plume`, `8.0-plume`, `8-jre17-Temurin-ubuntu-plume`, `8-Temurin-ubuntu-plume`, `8-jre17-ubuntu-plume`, `8-ubuntu-plume`, `8-jre17-Temurin-plume`, `8-Temurin-plume`, `8-jre17-plume`, `8-plume`, `jre17-Temurin-ubuntu-plume`, `Temurin-ubuntu-plume`, `jre17-ubuntu-plume`, `ubuntu-plume`, `jre17-Temurin-plume`, `Temurin-plume`, `jre17-plume`, `plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/ubuntu/plume/Dockerfile) -- [`8.0.13-jre17-Temurin-ubuntu-plus`, `8.0.13-Temurin-ubuntu-plus`, `8.0.13-jre17-ubuntu-plus`, `8.0.13-ubuntu-plus`, `8.0.13-jre17-Temurin-plus`, `8.0.13-Temurin-plus`, `8.0.13-jre17-plus`, `8.0.13-plus`, `8.0-jre17-Temurin-ubuntu-plus`, `8.0-Temurin-ubuntu-plus`, `8.0-jre17-ubuntu-plus`, `8.0-ubuntu-plus`, `8.0-jre17-Temurin-plus`, `8.0-Temurin-plus`, `8.0-jre17-plus`, `8.0-plus`, `8-jre17-Temurin-ubuntu-plus`, `8-Temurin-ubuntu-plus`, `8-jre17-ubuntu-plus`, `8-ubuntu-plus`, `8-jre17-Temurin-plus`, `8-Temurin-plus`, `8-jre17-plus`, `8-plus`, `jre17-Temurin-ubuntu-plus`, `Temurin-ubuntu-plus`, `jre17-ubuntu-plus`, `ubuntu-plus`, `jre17-Temurin-plus`, `Temurin-plus`, `jre17-plus`, `plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/ubuntu/plus/Dockerfile) -- [`8.0.13-jre17-Temurin-alpine-webprofile`, `8.0.13-Temurin-alpine-webprofile`, `8.0.13-jre17-alpine-webprofile`, `8.0.13-alpine-webprofile`, `8.0.13-jre17-Temurin-alpine`, `8.0.13-Temurin-alpine`, `8.0.13-jre17-alpine`, `8.0.13-alpine`, `8.0-jre17-Temurin-alpine-webprofile`, `8.0-Temurin-alpine-webprofile`, `8.0-jre17-alpine-webprofile`, `8.0-alpine-webprofile`, `8.0-jre17-Temurin-alpine`, `8.0-Temurin-alpine`, `8.0-jre17-alpine`, `8.0-alpine`, `8-jre17-Temurin-alpine-webprofile`, `8-Temurin-alpine-webprofile`, `8-jre17-alpine-webprofile`, `8-alpine-webprofile`, `8-jre17-Temurin-alpine`, `8-Temurin-alpine`, `8-jre17-alpine`, `8-alpine`, `jre17-Temurin-alpine-webprofile`, `Temurin-alpine-webprofile`, `jre17-alpine-webprofile`, `alpine-webprofile`, `jre17-Temurin-alpine`, `Temurin-alpine`, `jre17-alpine`, `alpine`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/alpine/webprofile/Dockerfile) -- [`8.0.13-jre17-Temurin-alpine-microprofile`, `8.0.13-Temurin-alpine-microprofile`, `8.0.13-jre17-alpine-microprofile`, `8.0.13-alpine-microprofile`, `8.0-jre17-Temurin-alpine-microprofile`, `8.0-Temurin-alpine-microprofile`, `8.0-jre17-alpine-microprofile`, `8.0-alpine-microprofile`, `8-jre17-Temurin-alpine-microprofile`, `8-Temurin-alpine-microprofile`, `8-jre17-alpine-microprofile`, `8-alpine-microprofile`, `jre17-Temurin-alpine-microprofile`, `Temurin-alpine-microprofile`, `jre17-alpine-microprofile`, `alpine-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/alpine/microprofile/Dockerfile) -- [`8.0.13-jre17-Temurin-alpine-plume`, `8.0.13-Temurin-alpine-plume`, `8.0.13-jre17-alpine-plume`, `8.0.13-alpine-plume`, `8.0-jre17-Temurin-alpine-plume`, `8.0-Temurin-alpine-plume`, `8.0-jre17-alpine-plume`, `8.0-alpine-plume`, `8-jre17-Temurin-alpine-plume`, `8-Temurin-alpine-plume`, `8-jre17-alpine-plume`, `8-alpine-plume`, `jre17-Temurin-alpine-plume`, `Temurin-alpine-plume`, `jre17-alpine-plume`, `alpine-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/alpine/plume/Dockerfile) -- [`8.0.13-jre17-Temurin-alpine-plus`, `8.0.13-Temurin-alpine-plus`, `8.0.13-jre17-alpine-plus`, `8.0.13-alpine-plus`, `8.0-jre17-Temurin-alpine-plus`, `8.0-Temurin-alpine-plus`, `8.0-jre17-alpine-plus`, `8.0-alpine-plus`, `8-jre17-Temurin-alpine-plus`, `8-Temurin-alpine-plus`, `8-jre17-alpine-plus`, `8-alpine-plus`, `jre17-Temurin-alpine-plus`, `Temurin-alpine-plus`, `jre17-alpine-plus`, `alpine-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Temurin/alpine/plus/Dockerfile) -- [`8.0.13-jre11-Temurin-ubuntu-webprofile`, `8.0.13-jre11-ubuntu-webprofile`, `8.0.13-jre11-Temurin-webprofile`, `8.0.13-jre11-webprofile`, `8.0.13-jre11-Temurin-ubuntu`, `8.0.13-jre11-ubuntu`, `8.0.13-jre11-Temurin`, `8.0.13-jre11`, `8.0-jre11-Temurin-ubuntu-webprofile`, `8.0-jre11-ubuntu-webprofile`, `8.0-jre11-Temurin-webprofile`, `8.0-jre11-webprofile`, `8.0-jre11-Temurin-ubuntu`, `8.0-jre11-ubuntu`, `8.0-jre11-Temurin`, `8.0-jre11`, `8-jre11-Temurin-ubuntu-webprofile`, `8-jre11-ubuntu-webprofile`, `8-jre11-Temurin-webprofile`, `8-jre11-webprofile`, `8-jre11-Temurin-ubuntu`, `8-jre11-ubuntu`, `8-jre11-Temurin`, `8-jre11`, `jre11-Temurin-ubuntu-webprofile`, `jre11-ubuntu-webprofile`, `jre11-Temurin-webprofile`, `jre11-webprofile`, `jre11-Temurin-ubuntu`, `jre11-ubuntu`, `jre11-Temurin`, `jre11`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/ubuntu/webprofile/Dockerfile) -- [`8.0.13-jre11-Temurin-ubuntu-microprofile`, `8.0.13-jre11-ubuntu-microprofile`, `8.0.13-jre11-Temurin-microprofile`, `8.0.13-jre11-microprofile`, `8.0-jre11-Temurin-ubuntu-microprofile`, `8.0-jre11-ubuntu-microprofile`, `8.0-jre11-Temurin-microprofile`, `8.0-jre11-microprofile`, `8-jre11-Temurin-ubuntu-microprofile`, `8-jre11-ubuntu-microprofile`, `8-jre11-Temurin-microprofile`, `8-jre11-microprofile`, `jre11-Temurin-ubuntu-microprofile`, `jre11-ubuntu-microprofile`, `jre11-Temurin-microprofile`, `jre11-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/ubuntu/microprofile/Dockerfile) -- [`8.0.13-jre11-Temurin-ubuntu-plume`, `8.0.13-jre11-ubuntu-plume`, `8.0.13-jre11-Temurin-plume`, `8.0.13-jre11-plume`, `8.0-jre11-Temurin-ubuntu-plume`, `8.0-jre11-ubuntu-plume`, `8.0-jre11-Temurin-plume`, `8.0-jre11-plume`, `8-jre11-Temurin-ubuntu-plume`, `8-jre11-ubuntu-plume`, `8-jre11-Temurin-plume`, `8-jre11-plume`, `jre11-Temurin-ubuntu-plume`, `jre11-ubuntu-plume`, `jre11-Temurin-plume`, `jre11-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/ubuntu/plume/Dockerfile) -- [`8.0.13-jre11-Temurin-ubuntu-plus`, `8.0.13-jre11-ubuntu-plus`, `8.0.13-jre11-Temurin-plus`, `8.0.13-jre11-plus`, `8.0-jre11-Temurin-ubuntu-plus`, `8.0-jre11-ubuntu-plus`, `8.0-jre11-Temurin-plus`, `8.0-jre11-plus`, `8-jre11-Temurin-ubuntu-plus`, `8-jre11-ubuntu-plus`, `8-jre11-Temurin-plus`, `8-jre11-plus`, `jre11-Temurin-ubuntu-plus`, `jre11-ubuntu-plus`, `jre11-Temurin-plus`, `jre11-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/ubuntu/plus/Dockerfile) -- [`8.0.13-jre11-Temurin-alpine-webprofile`, `8.0.13-jre11-alpine-webprofile`, `8.0.13-jre11-Temurin-alpine`, `8.0.13-jre11-alpine`, `8.0-jre11-Temurin-alpine-webprofile`, `8.0-jre11-alpine-webprofile`, `8.0-jre11-Temurin-alpine`, `8.0-jre11-alpine`, `8-jre11-Temurin-alpine-webprofile`, `8-jre11-alpine-webprofile`, `8-jre11-Temurin-alpine`, `8-jre11-alpine`, `jre11-Temurin-alpine-webprofile`, `jre11-alpine-webprofile`, `jre11-Temurin-alpine`, `jre11-alpine`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/alpine/webprofile/Dockerfile) -- [`8.0.13-jre11-Temurin-alpine-microprofile`, `8.0.13-jre11-alpine-microprofile`, `8.0-jre11-Temurin-alpine-microprofile`, `8.0-jre11-alpine-microprofile`, `8-jre11-Temurin-alpine-microprofile`, `8-jre11-alpine-microprofile`, `jre11-Temurin-alpine-microprofile`, `jre11-alpine-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/alpine/microprofile/Dockerfile) -- [`8.0.13-jre11-Temurin-alpine-plume`, `8.0.13-jre11-alpine-plume`, `8.0-jre11-Temurin-alpine-plume`, `8.0-jre11-alpine-plume`, `8-jre11-Temurin-alpine-plume`, `8-jre11-alpine-plume`, `jre11-Temurin-alpine-plume`, `jre11-alpine-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/alpine/plume/Dockerfile) -- [`8.0.13-jre11-Temurin-alpine-plus`, `8.0.13-jre11-alpine-plus`, `8.0-jre11-Temurin-alpine-plus`, `8.0-jre11-alpine-plus`, `8-jre11-Temurin-alpine-plus`, `8-jre11-alpine-plus`, `jre11-Temurin-alpine-plus`, `jre11-alpine-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Temurin/alpine/plus/Dockerfile) -- [`8.0.13-jre8-Temurin-ubuntu-webprofile`, `8.0.13-jre8-ubuntu-webprofile`, `8.0.13-jre8-Temurin-webprofile`, `8.0.13-jre8-webprofile`, `8.0.13-jre8-Temurin-ubuntu`, `8.0.13-jre8-ubuntu`, `8.0.13-jre8-Temurin`, `8.0.13-jre8`, `8.0-jre8-Temurin-ubuntu-webprofile`, `8.0-jre8-ubuntu-webprofile`, `8.0-jre8-Temurin-webprofile`, `8.0-jre8-webprofile`, `8.0-jre8-Temurin-ubuntu`, `8.0-jre8-ubuntu`, `8.0-jre8-Temurin`, `8.0-jre8`, `8-jre8-Temurin-ubuntu-webprofile`, `8-jre8-ubuntu-webprofile`, `8-jre8-Temurin-webprofile`, `8-jre8-webprofile`, `8-jre8-Temurin-ubuntu`, `8-jre8-ubuntu`, `8-jre8-Temurin`, `8-jre8`, `jre8-Temurin-ubuntu-webprofile`, `jre8-ubuntu-webprofile`, `jre8-Temurin-webprofile`, `jre8-webprofile`, `jre8-Temurin-ubuntu`, `jre8-ubuntu`, `jre8-Temurin`, `jre8`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/ubuntu/webprofile/Dockerfile) -- [`8.0.13-jre8-Temurin-ubuntu-microprofile`, `8.0.13-jre8-ubuntu-microprofile`, `8.0.13-jre8-Temurin-microprofile`, `8.0.13-jre8-microprofile`, `8.0-jre8-Temurin-ubuntu-microprofile`, `8.0-jre8-ubuntu-microprofile`, `8.0-jre8-Temurin-microprofile`, `8.0-jre8-microprofile`, `8-jre8-Temurin-ubuntu-microprofile`, `8-jre8-ubuntu-microprofile`, `8-jre8-Temurin-microprofile`, `8-jre8-microprofile`, `jre8-Temurin-ubuntu-microprofile`, `jre8-ubuntu-microprofile`, `jre8-Temurin-microprofile`, `jre8-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/ubuntu/microprofile/Dockerfile) -- [`8.0.13-jre8-Temurin-ubuntu-plume`, `8.0.13-jre8-ubuntu-plume`, `8.0.13-jre8-Temurin-plume`, `8.0.13-jre8-plume`, `8.0-jre8-Temurin-ubuntu-plume`, `8.0-jre8-ubuntu-plume`, `8.0-jre8-Temurin-plume`, `8.0-jre8-plume`, `8-jre8-Temurin-ubuntu-plume`, `8-jre8-ubuntu-plume`, `8-jre8-Temurin-plume`, `8-jre8-plume`, `jre8-Temurin-ubuntu-plume`, `jre8-ubuntu-plume`, `jre8-Temurin-plume`, `jre8-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/ubuntu/plume/Dockerfile) -- [`8.0.13-jre8-Temurin-ubuntu-plus`, `8.0.13-jre8-ubuntu-plus`, `8.0.13-jre8-Temurin-plus`, `8.0.13-jre8-plus`, `8.0-jre8-Temurin-ubuntu-plus`, `8.0-jre8-ubuntu-plus`, `8.0-jre8-Temurin-plus`, `8.0-jre8-plus`, `8-jre8-Temurin-ubuntu-plus`, `8-jre8-ubuntu-plus`, `8-jre8-Temurin-plus`, `8-jre8-plus`, `jre8-Temurin-ubuntu-plus`, `jre8-ubuntu-plus`, `jre8-Temurin-plus`, `jre8-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/ubuntu/plus/Dockerfile) -- [`8.0.13-jre8-Temurin-alpine-webprofile`, `8.0.13-jre8-alpine-webprofile`, `8.0.13-jre8-Temurin-alpine`, `8.0.13-jre8-alpine`, `8.0-jre8-Temurin-alpine-webprofile`, `8.0-jre8-alpine-webprofile`, `8.0-jre8-Temurin-alpine`, `8.0-jre8-alpine`, `8-jre8-Temurin-alpine-webprofile`, `8-jre8-alpine-webprofile`, `8-jre8-Temurin-alpine`, `8-jre8-alpine`, `jre8-Temurin-alpine-webprofile`, `jre8-alpine-webprofile`, `jre8-Temurin-alpine`, `jre8-alpine`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/alpine/webprofile/Dockerfile) -- [`8.0.13-jre8-Temurin-alpine-microprofile`, `8.0.13-jre8-alpine-microprofile`, `8.0-jre8-Temurin-alpine-microprofile`, `8.0-jre8-alpine-microprofile`, `8-jre8-Temurin-alpine-microprofile`, `8-jre8-alpine-microprofile`, `jre8-Temurin-alpine-microprofile`, `jre8-alpine-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/alpine/microprofile/Dockerfile) -- [`8.0.13-jre8-Temurin-alpine-plume`, `8.0.13-jre8-alpine-plume`, `8.0-jre8-Temurin-alpine-plume`, `8.0-jre8-alpine-plume`, `8-jre8-Temurin-alpine-plume`, `8-jre8-alpine-plume`, `jre8-Temurin-alpine-plume`, `jre8-alpine-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/alpine/plume/Dockerfile) -- [`8.0.13-jre8-Temurin-alpine-plus`, `8.0.13-jre8-alpine-plus`, `8.0-jre8-Temurin-alpine-plus`, `8.0-jre8-alpine-plus`, `8-jre8-Temurin-alpine-plus`, `8-jre8-alpine-plus`, `jre8-Temurin-alpine-plus`, `jre8-alpine-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre8/Temurin/alpine/plus/Dockerfile) -- [`8.0.13-jre17-Semeru-ubuntu-webprofile`, `8.0.13-Semeru-ubuntu-webprofile`, `8.0.13-jre17-Semeru-webprofile`, `8.0.13-Semeru-webprofile`, `8.0.13-jre17-Semeru-ubuntu`, `8.0.13-Semeru-ubuntu`, `8.0.13-jre17-Semeru`, `8.0.13-Semeru`, `8.0-jre17-Semeru-ubuntu-webprofile`, `8.0-Semeru-ubuntu-webprofile`, `8.0-jre17-Semeru-webprofile`, `8.0-Semeru-webprofile`, `8.0-jre17-Semeru-ubuntu`, `8.0-Semeru-ubuntu`, `8.0-jre17-Semeru`, `8.0-Semeru`, `8-jre17-Semeru-ubuntu-webprofile`, `8-Semeru-ubuntu-webprofile`, `8-jre17-Semeru-webprofile`, `8-Semeru-webprofile`, `8-jre17-Semeru-ubuntu`, `8-Semeru-ubuntu`, `8-jre17-Semeru`, `8-Semeru`, `jre17-Semeru-ubuntu-webprofile`, `Semeru-ubuntu-webprofile`, `jre17-Semeru-webprofile`, `Semeru-webprofile`, `jre17-Semeru-ubuntu`, `Semeru-ubuntu`, `jre17-Semeru`, `Semeru`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Semeru/ubuntu/webprofile/Dockerfile) -- [`8.0.13-jre17-Semeru-ubuntu-microprofile`, `8.0.13-Semeru-ubuntu-microprofile`, `8.0.13-jre17-Semeru-microprofile`, `8.0.13-Semeru-microprofile`, `8.0-jre17-Semeru-ubuntu-microprofile`, `8.0-Semeru-ubuntu-microprofile`, `8.0-jre17-Semeru-microprofile`, `8.0-Semeru-microprofile`, `8-jre17-Semeru-ubuntu-microprofile`, `8-Semeru-ubuntu-microprofile`, `8-jre17-Semeru-microprofile`, `8-Semeru-microprofile`, `jre17-Semeru-ubuntu-microprofile`, `Semeru-ubuntu-microprofile`, `jre17-Semeru-microprofile`, `Semeru-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Semeru/ubuntu/microprofile/Dockerfile) -- [`8.0.13-jre17-Semeru-ubuntu-plume`, `8.0.13-Semeru-ubuntu-plume`, `8.0.13-jre17-Semeru-plume`, `8.0.13-Semeru-plume`, `8.0-jre17-Semeru-ubuntu-plume`, `8.0-Semeru-ubuntu-plume`, `8.0-jre17-Semeru-plume`, `8.0-Semeru-plume`, `8-jre17-Semeru-ubuntu-plume`, `8-Semeru-ubuntu-plume`, `8-jre17-Semeru-plume`, `8-Semeru-plume`, `jre17-Semeru-ubuntu-plume`, `Semeru-ubuntu-plume`, `jre17-Semeru-plume`, `Semeru-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Semeru/ubuntu/plume/Dockerfile) -- [`8.0.13-jre17-Semeru-ubuntu-plus`, `8.0.13-Semeru-ubuntu-plus`, `8.0.13-jre17-Semeru-plus`, `8.0.13-Semeru-plus`, `8.0-jre17-Semeru-ubuntu-plus`, `8.0-Semeru-ubuntu-plus`, `8.0-jre17-Semeru-plus`, `8.0-Semeru-plus`, `8-jre17-Semeru-ubuntu-plus`, `8-Semeru-ubuntu-plus`, `8-jre17-Semeru-plus`, `8-Semeru-plus`, `jre17-Semeru-ubuntu-plus`, `Semeru-ubuntu-plus`, `jre17-Semeru-plus`, `Semeru-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre17/Semeru/ubuntu/plus/Dockerfile) -- [`8.0.13-jre11-Semeru-ubuntu-webprofile`, `8.0.13-jre11-Semeru-webprofile`, `8.0.13-jre11-Semeru-ubuntu`, `8.0.13-jre11-Semeru`, `8.0-jre11-Semeru-ubuntu-webprofile`, `8.0-jre11-Semeru-webprofile`, `8.0-jre11-Semeru-ubuntu`, `8.0-jre11-Semeru`, `8-jre11-Semeru-ubuntu-webprofile`, `8-jre11-Semeru-webprofile`, `8-jre11-Semeru-ubuntu`, `8-jre11-Semeru`, `jre11-Semeru-ubuntu-webprofile`, `jre11-Semeru-webprofile`, `jre11-Semeru-ubuntu`, `jre11-Semeru`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Semeru/ubuntu/webprofile/Dockerfile) -- [`8.0.13-jre11-Semeru-ubuntu-microprofile`, `8.0.13-jre11-Semeru-microprofile`, `8.0-jre11-Semeru-ubuntu-microprofile`, `8.0-jre11-Semeru-microprofile`, `8-jre11-Semeru-ubuntu-microprofile`, `8-jre11-Semeru-microprofile`, `jre11-Semeru-ubuntu-microprofile`, `jre11-Semeru-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Semeru/ubuntu/microprofile/Dockerfile) -- [`8.0.13-jre11-Semeru-ubuntu-plume`, `8.0.13-jre11-Semeru-plume`, `8.0-jre11-Semeru-ubuntu-plume`, `8.0-jre11-Semeru-plume`, `8-jre11-Semeru-ubuntu-plume`, `8-jre11-Semeru-plume`, `jre11-Semeru-ubuntu-plume`, `jre11-Semeru-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Semeru/ubuntu/plume/Dockerfile) -- [`8.0.13-jre11-Semeru-ubuntu-plus`, `8.0.13-jre11-Semeru-plus`, `8.0-jre11-Semeru-ubuntu-plus`, `8.0-jre11-Semeru-plus`, `8-jre11-Semeru-ubuntu-plus`, `8-jre11-Semeru-plus`, `jre11-Semeru-ubuntu-plus`, `jre11-Semeru-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-8.0/jre11/Semeru/ubuntu/plus/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-ubuntu-webprofile`, `9.0.0.RC1-Temurin-ubuntu-webprofile`, `9.0.0.RC1-jre17-ubuntu-webprofile`, `9.0.0.RC1-ubuntu-webprofile`, `9.0.0.RC1-jre17-Temurin-webprofile`, `9.0.0.RC1-Temurin-webprofile`, `9.0.0.RC1-jre17-webprofile`, `9.0.0.RC1-webprofile`, `9.0.0.RC1-jre17-Temurin-ubuntu`, `9.0.0.RC1-Temurin-ubuntu`, `9.0.0.RC1-jre17-ubuntu`, `9.0.0.RC1-ubuntu`, `9.0.0.RC1-jre17-Temurin`, `9.0.0.RC1-Temurin`, `9.0.0.RC1-jre17`, `9.0.0.RC1`, `9.0-jre17-Temurin-ubuntu-webprofile`, `9.0-Temurin-ubuntu-webprofile`, `9.0-jre17-ubuntu-webprofile`, `9.0-ubuntu-webprofile`, `9.0-jre17-Temurin-webprofile`, `9.0-Temurin-webprofile`, `9.0-jre17-webprofile`, `9.0-webprofile`, `9.0-jre17-Temurin-ubuntu`, `9.0-Temurin-ubuntu`, `9.0-jre17-ubuntu`, `9.0-ubuntu`, `9.0-jre17-Temurin`, `9.0-Temurin`, `9.0-jre17`, `9.0`, `9-jre17-Temurin-ubuntu-webprofile`, `9-Temurin-ubuntu-webprofile`, `9-jre17-ubuntu-webprofile`, `9-ubuntu-webprofile`, `9-jre17-Temurin-webprofile`, `9-Temurin-webprofile`, `9-jre17-webprofile`, `9-webprofile`, `9-jre17-Temurin-ubuntu`, `9-Temurin-ubuntu`, `9-jre17-ubuntu`, `9-ubuntu`, `9-jre17-Temurin`, `9-Temurin`, `9-jre17`, `9`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/ubuntu/webprofile/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-ubuntu-microprofile`, `9.0.0.RC1-Temurin-ubuntu-microprofile`, `9.0.0.RC1-jre17-ubuntu-microprofile`, `9.0.0.RC1-ubuntu-microprofile`, `9.0.0.RC1-jre17-Temurin-microprofile`, `9.0.0.RC1-Temurin-microprofile`, `9.0.0.RC1-jre17-microprofile`, `9.0.0.RC1-microprofile`, `9.0-jre17-Temurin-ubuntu-microprofile`, `9.0-Temurin-ubuntu-microprofile`, `9.0-jre17-ubuntu-microprofile`, `9.0-ubuntu-microprofile`, `9.0-jre17-Temurin-microprofile`, `9.0-Temurin-microprofile`, `9.0-jre17-microprofile`, `9.0-microprofile`, `9-jre17-Temurin-ubuntu-microprofile`, `9-Temurin-ubuntu-microprofile`, `9-jre17-ubuntu-microprofile`, `9-ubuntu-microprofile`, `9-jre17-Temurin-microprofile`, `9-Temurin-microprofile`, `9-jre17-microprofile`, `9-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/ubuntu/microprofile/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-ubuntu-plume`, `9.0.0.RC1-Temurin-ubuntu-plume`, `9.0.0.RC1-jre17-ubuntu-plume`, `9.0.0.RC1-ubuntu-plume`, `9.0.0.RC1-jre17-Temurin-plume`, `9.0.0.RC1-Temurin-plume`, `9.0.0.RC1-jre17-plume`, `9.0.0.RC1-plume`, `9.0-jre17-Temurin-ubuntu-plume`, `9.0-Temurin-ubuntu-plume`, `9.0-jre17-ubuntu-plume`, `9.0-ubuntu-plume`, `9.0-jre17-Temurin-plume`, `9.0-Temurin-plume`, `9.0-jre17-plume`, `9.0-plume`, `9-jre17-Temurin-ubuntu-plume`, `9-Temurin-ubuntu-plume`, `9-jre17-ubuntu-plume`, `9-ubuntu-plume`, `9-jre17-Temurin-plume`, `9-Temurin-plume`, `9-jre17-plume`, `9-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/ubuntu/plume/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-ubuntu-plus`, `9.0.0.RC1-Temurin-ubuntu-plus`, `9.0.0.RC1-jre17-ubuntu-plus`, `9.0.0.RC1-ubuntu-plus`, `9.0.0.RC1-jre17-Temurin-plus`, `9.0.0.RC1-Temurin-plus`, `9.0.0.RC1-jre17-plus`, `9.0.0.RC1-plus`, `9.0-jre17-Temurin-ubuntu-plus`, `9.0-Temurin-ubuntu-plus`, `9.0-jre17-ubuntu-plus`, `9.0-ubuntu-plus`, `9.0-jre17-Temurin-plus`, `9.0-Temurin-plus`, `9.0-jre17-plus`, `9.0-plus`, `9-jre17-Temurin-ubuntu-plus`, `9-Temurin-ubuntu-plus`, `9-jre17-ubuntu-plus`, `9-ubuntu-plus`, `9-jre17-Temurin-plus`, `9-Temurin-plus`, `9-jre17-plus`, `9-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/ubuntu/plus/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-alpine-webprofile`, `9.0.0.RC1-Temurin-alpine-webprofile`, `9.0.0.RC1-jre17-alpine-webprofile`, `9.0.0.RC1-alpine-webprofile`, `9.0.0.RC1-jre17-Temurin-alpine`, `9.0.0.RC1-Temurin-alpine`, `9.0.0.RC1-jre17-alpine`, `9.0.0.RC1-alpine`, `9.0-jre17-Temurin-alpine-webprofile`, `9.0-Temurin-alpine-webprofile`, `9.0-jre17-alpine-webprofile`, `9.0-alpine-webprofile`, `9.0-jre17-Temurin-alpine`, `9.0-Temurin-alpine`, `9.0-jre17-alpine`, `9.0-alpine`, `9-jre17-Temurin-alpine-webprofile`, `9-Temurin-alpine-webprofile`, `9-jre17-alpine-webprofile`, `9-alpine-webprofile`, `9-jre17-Temurin-alpine`, `9-Temurin-alpine`, `9-jre17-alpine`, `9-alpine`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/alpine/webprofile/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-alpine-microprofile`, `9.0.0.RC1-Temurin-alpine-microprofile`, `9.0.0.RC1-jre17-alpine-microprofile`, `9.0.0.RC1-alpine-microprofile`, `9.0-jre17-Temurin-alpine-microprofile`, `9.0-Temurin-alpine-microprofile`, `9.0-jre17-alpine-microprofile`, `9.0-alpine-microprofile`, `9-jre17-Temurin-alpine-microprofile`, `9-Temurin-alpine-microprofile`, `9-jre17-alpine-microprofile`, `9-alpine-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/alpine/microprofile/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-alpine-plume`, `9.0.0.RC1-Temurin-alpine-plume`, `9.0.0.RC1-jre17-alpine-plume`, `9.0.0.RC1-alpine-plume`, `9.0-jre17-Temurin-alpine-plume`, `9.0-Temurin-alpine-plume`, `9.0-jre17-alpine-plume`, `9.0-alpine-plume`, `9-jre17-Temurin-alpine-plume`, `9-Temurin-alpine-plume`, `9-jre17-alpine-plume`, `9-alpine-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/alpine/plume/Dockerfile) -- [`9.0.0.RC1-jre17-Temurin-alpine-plus`, `9.0.0.RC1-Temurin-alpine-plus`, `9.0.0.RC1-jre17-alpine-plus`, `9.0.0.RC1-alpine-plus`, `9.0-jre17-Temurin-alpine-plus`, `9.0-Temurin-alpine-plus`, `9.0-jre17-alpine-plus`, `9.0-alpine-plus`, `9-jre17-Temurin-alpine-plus`, `9-Temurin-alpine-plus`, `9-jre17-alpine-plus`, `9-alpine-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Temurin/alpine/plus/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-ubuntu-webprofile`, `9.0.0.RC1-jre11-ubuntu-webprofile`, `9.0.0.RC1-jre11-Temurin-webprofile`, `9.0.0.RC1-jre11-webprofile`, `9.0.0.RC1-jre11-Temurin-ubuntu`, `9.0.0.RC1-jre11-ubuntu`, `9.0.0.RC1-jre11-Temurin`, `9.0.0.RC1-jre11`, `9.0-jre11-Temurin-ubuntu-webprofile`, `9.0-jre11-ubuntu-webprofile`, `9.0-jre11-Temurin-webprofile`, `9.0-jre11-webprofile`, `9.0-jre11-Temurin-ubuntu`, `9.0-jre11-ubuntu`, `9.0-jre11-Temurin`, `9.0-jre11`, `9-jre11-Temurin-ubuntu-webprofile`, `9-jre11-ubuntu-webprofile`, `9-jre11-Temurin-webprofile`, `9-jre11-webprofile`, `9-jre11-Temurin-ubuntu`, `9-jre11-ubuntu`, `9-jre11-Temurin`, `9-jre11`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/ubuntu/webprofile/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-ubuntu-microprofile`, `9.0.0.RC1-jre11-ubuntu-microprofile`, `9.0.0.RC1-jre11-Temurin-microprofile`, `9.0.0.RC1-jre11-microprofile`, `9.0-jre11-Temurin-ubuntu-microprofile`, `9.0-jre11-ubuntu-microprofile`, `9.0-jre11-Temurin-microprofile`, `9.0-jre11-microprofile`, `9-jre11-Temurin-ubuntu-microprofile`, `9-jre11-ubuntu-microprofile`, `9-jre11-Temurin-microprofile`, `9-jre11-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/ubuntu/microprofile/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-ubuntu-plume`, `9.0.0.RC1-jre11-ubuntu-plume`, `9.0.0.RC1-jre11-Temurin-plume`, `9.0.0.RC1-jre11-plume`, `9.0-jre11-Temurin-ubuntu-plume`, `9.0-jre11-ubuntu-plume`, `9.0-jre11-Temurin-plume`, `9.0-jre11-plume`, `9-jre11-Temurin-ubuntu-plume`, `9-jre11-ubuntu-plume`, `9-jre11-Temurin-plume`, `9-jre11-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/ubuntu/plume/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-ubuntu-plus`, `9.0.0.RC1-jre11-ubuntu-plus`, `9.0.0.RC1-jre11-Temurin-plus`, `9.0.0.RC1-jre11-plus`, `9.0-jre11-Temurin-ubuntu-plus`, `9.0-jre11-ubuntu-plus`, `9.0-jre11-Temurin-plus`, `9.0-jre11-plus`, `9-jre11-Temurin-ubuntu-plus`, `9-jre11-ubuntu-plus`, `9-jre11-Temurin-plus`, `9-jre11-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/ubuntu/plus/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-alpine-webprofile`, `9.0.0.RC1-jre11-alpine-webprofile`, `9.0.0.RC1-jre11-Temurin-alpine`, `9.0.0.RC1-jre11-alpine`, `9.0-jre11-Temurin-alpine-webprofile`, `9.0-jre11-alpine-webprofile`, `9.0-jre11-Temurin-alpine`, `9.0-jre11-alpine`, `9-jre11-Temurin-alpine-webprofile`, `9-jre11-alpine-webprofile`, `9-jre11-Temurin-alpine`, `9-jre11-alpine`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/alpine/webprofile/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-alpine-microprofile`, `9.0.0.RC1-jre11-alpine-microprofile`, `9.0-jre11-Temurin-alpine-microprofile`, `9.0-jre11-alpine-microprofile`, `9-jre11-Temurin-alpine-microprofile`, `9-jre11-alpine-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/alpine/microprofile/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-alpine-plume`, `9.0.0.RC1-jre11-alpine-plume`, `9.0-jre11-Temurin-alpine-plume`, `9.0-jre11-alpine-plume`, `9-jre11-Temurin-alpine-plume`, `9-jre11-alpine-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/alpine/plume/Dockerfile) -- [`9.0.0.RC1-jre11-Temurin-alpine-plus`, `9.0.0.RC1-jre11-alpine-plus`, `9.0-jre11-Temurin-alpine-plus`, `9.0-jre11-alpine-plus`, `9-jre11-Temurin-alpine-plus`, `9-jre11-alpine-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Temurin/alpine/plus/Dockerfile) -- [`9.0.0.RC1-jre17-Semeru-ubuntu-webprofile`, `9.0.0.RC1-Semeru-ubuntu-webprofile`, `9.0.0.RC1-jre17-Semeru-webprofile`, `9.0.0.RC1-Semeru-webprofile`, `9.0.0.RC1-jre17-Semeru-ubuntu`, `9.0.0.RC1-Semeru-ubuntu`, `9.0.0.RC1-jre17-Semeru`, `9.0.0.RC1-Semeru`, `9.0-jre17-Semeru-ubuntu-webprofile`, `9.0-Semeru-ubuntu-webprofile`, `9.0-jre17-Semeru-webprofile`, `9.0-Semeru-webprofile`, `9.0-jre17-Semeru-ubuntu`, `9.0-Semeru-ubuntu`, `9.0-jre17-Semeru`, `9.0-Semeru`, `9-jre17-Semeru-ubuntu-webprofile`, `9-Semeru-ubuntu-webprofile`, `9-jre17-Semeru-webprofile`, `9-Semeru-webprofile`, `9-jre17-Semeru-ubuntu`, `9-Semeru-ubuntu`, `9-jre17-Semeru`, `9-Semeru`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Semeru/ubuntu/webprofile/Dockerfile) -- [`9.0.0.RC1-jre17-Semeru-ubuntu-microprofile`, `9.0.0.RC1-Semeru-ubuntu-microprofile`, `9.0.0.RC1-jre17-Semeru-microprofile`, `9.0.0.RC1-Semeru-microprofile`, `9.0-jre17-Semeru-ubuntu-microprofile`, `9.0-Semeru-ubuntu-microprofile`, `9.0-jre17-Semeru-microprofile`, `9.0-Semeru-microprofile`, `9-jre17-Semeru-ubuntu-microprofile`, `9-Semeru-ubuntu-microprofile`, `9-jre17-Semeru-microprofile`, `9-Semeru-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Semeru/ubuntu/microprofile/Dockerfile) -- [`9.0.0.RC1-jre17-Semeru-ubuntu-plume`, `9.0.0.RC1-Semeru-ubuntu-plume`, `9.0.0.RC1-jre17-Semeru-plume`, `9.0.0.RC1-Semeru-plume`, `9.0-jre17-Semeru-ubuntu-plume`, `9.0-Semeru-ubuntu-plume`, `9.0-jre17-Semeru-plume`, `9.0-Semeru-plume`, `9-jre17-Semeru-ubuntu-plume`, `9-Semeru-ubuntu-plume`, `9-jre17-Semeru-plume`, `9-Semeru-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Semeru/ubuntu/plume/Dockerfile) -- [`9.0.0.RC1-jre17-Semeru-ubuntu-plus`, `9.0.0.RC1-Semeru-ubuntu-plus`, `9.0.0.RC1-jre17-Semeru-plus`, `9.0.0.RC1-Semeru-plus`, `9.0-jre17-Semeru-ubuntu-plus`, `9.0-Semeru-ubuntu-plus`, `9.0-jre17-Semeru-plus`, `9.0-Semeru-plus`, `9-jre17-Semeru-ubuntu-plus`, `9-Semeru-ubuntu-plus`, `9-jre17-Semeru-plus`, `9-Semeru-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre17/Semeru/ubuntu/plus/Dockerfile) -- [`9.0.0.RC1-jre11-Semeru-ubuntu-webprofile`, `9.0.0.RC1-jre11-Semeru-webprofile`, `9.0.0.RC1-jre11-Semeru-ubuntu`, `9.0.0.RC1-jre11-Semeru`, `9.0-jre11-Semeru-ubuntu-webprofile`, `9.0-jre11-Semeru-webprofile`, `9.0-jre11-Semeru-ubuntu`, `9.0-jre11-Semeru`, `9-jre11-Semeru-ubuntu-webprofile`, `9-jre11-Semeru-webprofile`, `9-jre11-Semeru-ubuntu`, `9-jre11-Semeru`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Semeru/ubuntu/webprofile/Dockerfile) -- [`9.0.0.RC1-jre11-Semeru-ubuntu-microprofile`, `9.0.0.RC1-jre11-Semeru-microprofile`, `9.0-jre11-Semeru-ubuntu-microprofile`, `9.0-jre11-Semeru-microprofile`, `9-jre11-Semeru-ubuntu-microprofile`, `9-jre11-Semeru-microprofile`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Semeru/ubuntu/microprofile/Dockerfile) -- [`9.0.0.RC1-jre11-Semeru-ubuntu-plume`, `9.0.0.RC1-jre11-Semeru-plume`, `9.0-jre11-Semeru-ubuntu-plume`, `9.0-jre11-Semeru-plume`, `9-jre11-Semeru-ubuntu-plume`, `9-jre11-Semeru-plume`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Semeru/ubuntu/plume/Dockerfile) -- [`9.0.0.RC1-jre11-Semeru-ubuntu-plus`, `9.0.0.RC1-jre11-Semeru-plus`, `9.0-jre11-Semeru-ubuntu-plus`, `9.0-jre11-Semeru-plus`, `9-jre11-Semeru-ubuntu-plus`, `9-jre11-Semeru-plus`](https://github.com/tomitribe/docker-tomee/blob/3ca8b3bbd8e7c1c6762a6786241144b424b58573/TomEE-9.0/jre11/Semeru/ubuntu/plus/Dockerfile) +- [`10.1.2-jre25-Temurin-ubuntu-microprofile`, `10.1.2-Temurin-ubuntu-microprofile`, `10.1.2-jre25-ubuntu-microprofile`, `10.1.2-ubuntu-microprofile`, `10.1.2-jre25-Temurin-microprofile`, `10.1.2-Temurin-microprofile`, `10.1.2-jre25-microprofile`, `10.1.2-microprofile`, `10.1.2-jre25-Temurin-ubuntu`, `10.1.2-Temurin-ubuntu`, `10.1.2-jre25-ubuntu`, `10.1.2-ubuntu`, `10.1.2-jre25-Temurin`, `10.1.2-Temurin`, `10.1.2-jre25`, `10.1.2`, `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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/ubuntu/microprofile/Dockerfile) + +- [`10.1.2-jre25-Temurin-ubuntu-plume`, `10.1.2-Temurin-ubuntu-plume`, `10.1.2-jre25-ubuntu-plume`, `10.1.2-ubuntu-plume`, `10.1.2-jre25-Temurin-plume`, `10.1.2-Temurin-plume`, `10.1.2-jre25-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/ubuntu/plume/Dockerfile) + +- [`10.1.2-jre25-Temurin-ubuntu-plus`, `10.1.2-Temurin-ubuntu-plus`, `10.1.2-jre25-ubuntu-plus`, `10.1.2-ubuntu-plus`, `10.1.2-jre25-Temurin-plus`, `10.1.2-Temurin-plus`, `10.1.2-jre25-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/ubuntu/plus/Dockerfile) + +- [`10.1.2-jre25-Temurin-ubuntu-webprofile`, `10.1.2-Temurin-ubuntu-webprofile`, `10.1.2-jre25-ubuntu-webprofile`, `10.1.2-ubuntu-webprofile`, `10.1.2-jre25-Temurin-webprofile`, `10.1.2-Temurin-webprofile`, `10.1.2-jre25-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/ubuntu/webprofile/Dockerfile) + +- [`10.1.2-jre25-Temurin-alpine-microprofile`, `10.1.2-Temurin-alpine-microprofile`, `10.1.2-jre25-alpine-microprofile`, `10.1.2-alpine-microprofile`, `10.1.2-jre25-Temurin-alpine`, `10.1.2-Temurin-alpine`, `10.1.2-jre25-alpine`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/alpine/microprofile/Dockerfile) + +- [`10.1.2-jre25-Temurin-alpine-plume`, `10.1.2-Temurin-alpine-plume`, `10.1.2-jre25-alpine-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/alpine/plume/Dockerfile) + +- [`10.1.2-jre25-Temurin-alpine-plus`, `10.1.2-Temurin-alpine-plus`, `10.1.2-jre25-alpine-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/alpine/plus/Dockerfile) + +- [`10.1.2-jre25-Temurin-alpine-webprofile`, `10.1.2-Temurin-alpine-webprofile`, `10.1.2-jre25-alpine-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Temurin/alpine/webprofile/Dockerfile) + +- [`10.1.2-jre25-Semeru-ubuntu-microprofile`, `10.1.2-Semeru-ubuntu-microprofile`, `10.1.2-jre25-Semeru-microprofile`, `10.1.2-Semeru-microprofile`, `10.1.2-jre25-Semeru-ubuntu`, `10.1.2-Semeru-ubuntu`, `10.1.2-jre25-Semeru`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Semeru/ubuntu/microprofile/Dockerfile) + +- [`10.1.2-jre25-Semeru-ubuntu-plume`, `10.1.2-Semeru-ubuntu-plume`, `10.1.2-jre25-Semeru-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Semeru/ubuntu/plume/Dockerfile) + +- [`10.1.2-jre25-Semeru-ubuntu-plus`, `10.1.2-Semeru-ubuntu-plus`, `10.1.2-jre25-Semeru-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Semeru/ubuntu/plus/Dockerfile) + +- [`10.1.2-jre25-Semeru-ubuntu-webprofile`, `10.1.2-Semeru-ubuntu-webprofile`, `10.1.2-jre25-Semeru-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre25/Semeru/ubuntu/webprofile/Dockerfile) + +- [`10.1.2-jre21-Temurin-ubuntu-microprofile`, `10.1.2-jre21-ubuntu-microprofile`, `10.1.2-jre21-Temurin-microprofile`, `10.1.2-jre21-microprofile`, `10.1.2-jre21-Temurin-ubuntu`, `10.1.2-jre21-ubuntu`, `10.1.2-jre21-Temurin`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/ubuntu/microprofile/Dockerfile) + +- [`10.1.2-jre21-Temurin-ubuntu-plume`, `10.1.2-jre21-ubuntu-plume`, `10.1.2-jre21-Temurin-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/ubuntu/plume/Dockerfile) + +- [`10.1.2-jre21-Temurin-ubuntu-plus`, `10.1.2-jre21-ubuntu-plus`, `10.1.2-jre21-Temurin-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/ubuntu/plus/Dockerfile) + +- [`10.1.2-jre21-Temurin-ubuntu-webprofile`, `10.1.2-jre21-ubuntu-webprofile`, `10.1.2-jre21-Temurin-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/ubuntu/webprofile/Dockerfile) + +- [`10.1.2-jre21-Temurin-alpine-microprofile`, `10.1.2-jre21-alpine-microprofile`, `10.1.2-jre21-Temurin-alpine`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/alpine/microprofile/Dockerfile) + +- [`10.1.2-jre21-Temurin-alpine-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/alpine/plume/Dockerfile) + +- [`10.1.2-jre21-Temurin-alpine-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/alpine/plus/Dockerfile) + +- [`10.1.2-jre21-Temurin-alpine-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Temurin/alpine/webprofile/Dockerfile) + +- [`10.1.2-jre21-Semeru-ubuntu-microprofile`, `10.1.2-jre21-Semeru-microprofile`, `10.1.2-jre21-Semeru-ubuntu`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Semeru/ubuntu/microprofile/Dockerfile) + +- [`10.1.2-jre21-Semeru-ubuntu-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Semeru/ubuntu/plume/Dockerfile) + +- [`10.1.2-jre21-Semeru-ubuntu-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Semeru/ubuntu/plus/Dockerfile) + +- [`10.1.2-jre21-Semeru-ubuntu-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre21/Semeru/ubuntu/webprofile/Dockerfile) + +- [`10.1.2-jre17-Temurin-ubuntu-microprofile`, `10.1.2-jre17-ubuntu-microprofile`, `10.1.2-jre17-Temurin-microprofile`, `10.1.2-jre17-microprofile`, `10.1.2-jre17-Temurin-ubuntu`, `10.1.2-jre17-ubuntu`, `10.1.2-jre17-Temurin`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/ubuntu/microprofile/Dockerfile) + +- [`10.1.2-jre17-Temurin-ubuntu-plume`, `10.1.2-jre17-ubuntu-plume`, `10.1.2-jre17-Temurin-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/ubuntu/plume/Dockerfile) + +- [`10.1.2-jre17-Temurin-ubuntu-plus`, `10.1.2-jre17-ubuntu-plus`, `10.1.2-jre17-Temurin-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/ubuntu/plus/Dockerfile) + +- [`10.1.2-jre17-Temurin-ubuntu-webprofile`, `10.1.2-jre17-ubuntu-webprofile`, `10.1.2-jre17-Temurin-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/ubuntu/webprofile/Dockerfile) + +- [`10.1.2-jre17-Temurin-alpine-microprofile`, `10.1.2-jre17-alpine-microprofile`, `10.1.2-jre17-Temurin-alpine`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/alpine/microprofile/Dockerfile) + +- [`10.1.2-jre17-Temurin-alpine-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/alpine/plume/Dockerfile) + +- [`10.1.2-jre17-Temurin-alpine-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/alpine/plus/Dockerfile) + +- [`10.1.2-jre17-Temurin-alpine-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Temurin/alpine/webprofile/Dockerfile) + +- [`10.1.2-jre17-Semeru-ubuntu-microprofile`, `10.1.2-jre17-Semeru-microprofile`, `10.1.2-jre17-Semeru-ubuntu`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Semeru/ubuntu/microprofile/Dockerfile) + +- [`10.1.2-jre17-Semeru-ubuntu-plume`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Semeru/ubuntu/plume/Dockerfile) + +- [`10.1.2-jre17-Semeru-ubuntu-plus`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Semeru/ubuntu/plus/Dockerfile) + +- [`10.1.2-jre17-Semeru-ubuntu-webprofile`, `10.1.2-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`](https://github.com/tomitribe/docker-tomee/blob/b0ef61b6732f6634f75dfae62b0f9eaec0d6918b/TomEE-10.1/jre17/Semeru/ubuntu/webprofile/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/tomitribe/docker-tomee/issues](https://github.com/tomitribe/docker-tomee/issues) + [https://github.com/tomitribe/docker-tomee/issues](https://github.com/tomitribe/docker-tomee/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/tomee/), [`arm64v8`](https://hub.docker.com/r/arm64v8/tomee/) diff --git a/tomee/metadata.json b/tomee/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/tomee/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/traefik/README.md b/traefik/README.md index 257cdbbbcb42..a189c6dd3fec 100644 --- a/traefik/README.md +++ b/traefik/README.md @@ -24,21 +24,25 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`v3.0.0-beta2-windowsservercore-1809`, `3.0.0-beta2-windowsservercore-1809`, `v3.0-windowsservercore-1809`, `3.0-windowsservercore-1809`, `beaufort-windowsservercore-1809`](https://github.com/traefik/traefik-library-image/blob/e2fc89bcccd185a9e332deae22a71e209aca1fb3/windows/1809/Dockerfile) -- [`v3.0.0-beta2`, `3.0.0-beta2`, `v3.0`, `3.0`, `beaufort`](https://github.com/traefik/traefik-library-image/blob/e2fc89bcccd185a9e332deae22a71e209aca1fb3/alpine/Dockerfile) -- [`v2.9.6-windowsservercore-1809`, `2.9.6-windowsservercore-1809`, `v2.9-windowsservercore-1809`, `2.9-windowsservercore-1809`, `banon-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/traefik/traefik-library-image/blob/940d317751fabafc8b2a99b4a9b23b14c5b8bdc9/windows/1809/Dockerfile) -- [`v2.9.6`, `2.9.6`, `v2.9`, `2.9`, `banon`, `latest`](https://github.com/traefik/traefik-library-image/blob/940d317751fabafc8b2a99b4a9b23b14c5b8bdc9/alpine/Dockerfile) -- [`v1.7.34-windowsservercore-1809`, `1.7.34-windowsservercore-1809`, `v1.7-windowsservercore-1809`, `1.7-windowsservercore-1809`, `maroilles-windowsservercore-1809`](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/windows/1809/Dockerfile) -- [`v1.7.34-alpine`, `1.7.34-alpine`, `v1.7-alpine`, `1.7-alpine`, `maroilles-alpine`](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/alpine/Dockerfile) -- [`v1.7.34`, `1.7.34`, `v1.7`, `1.7`, `maroilles`](https://github.com/traefik/traefik-library-image/blob/4434758cf14bbd1ec9511b3f2a37b0a6ce846db6/scratch/Dockerfile) +- [`v3.6.1-windowsservercore-ltsc2022`, `3.6.1-windowsservercore-ltsc2022`, `v3.6-windowsservercore-ltsc2022`, `3.6-windowsservercore-ltsc2022`, `v3-windowsservercore-ltsc2022`, `3-windowsservercore-ltsc2022`, `ramequin-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/traefik/traefik-library-image/blob/119b382b07da098c6d4d7f341d08326f656730dd/v3.6/windows/servercore-ltsc2022/Dockerfile) + +- [`v3.6.1-nanoserver-ltsc2022`, `3.6.1-nanoserver-ltsc2022`, `v3.6-nanoserver-ltsc2022`, `3.6-nanoserver-ltsc2022`, `v3-nanoserver-ltsc2022`, `3-nanoserver-ltsc2022`, `ramequin-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/traefik/traefik-library-image/blob/119b382b07da098c6d4d7f341d08326f656730dd/v3.6/windows/nanoserver-ltsc2022/Dockerfile) + +- [`v3.6.1`, `3.6.1`, `v3.6`, `3.6`, `v3`, `3`, `ramequin`, `latest`](https://github.com/traefik/traefik-library-image/blob/119b382b07da098c6d4d7f341d08326f656730dd/v3.6/alpine/Dockerfile) + +- [`v2.11.31-windowsservercore-ltsc2022`, `2.11.31-windowsservercore-ltsc2022`, `v2.11-windowsservercore-ltsc2022`, `2.11-windowsservercore-ltsc2022`, `v2-windowsservercore-ltsc2022`, `2-windowsservercore-ltsc2022`, `mimolette-windowsservercore-ltsc2022`](https://github.com/traefik/traefik-library-image/blob/9a3eca893d22ccb8b76fd9254483c930e424dee7/v2.11/windows/servercore-ltsc2022/Dockerfile) + +- [`v2.11.31-nanoserver-ltsc2022`, `2.11.31-nanoserver-ltsc2022`, `v2.11-nanoserver-ltsc2022`, `2.11-nanoserver-ltsc2022`, `v2-nanoserver-ltsc2022`, `2-nanoserver-ltsc2022`, `mimolette-nanoserver-ltsc2022`](https://github.com/traefik/traefik-library-image/blob/9a3eca893d22ccb8b76fd9254483c930e424dee7/v2.11/windows/nanoserver-ltsc2022/Dockerfile) + +- [`v2.11.31`, `2.11.31`, `v2.11`, `2.11`, `v2`, `2`, `mimolette`](https://github.com/traefik/traefik-library-image/blob/9a3eca893d22ccb8b76fd9254483c930e424dee7/v2.11/alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/traefik/traefik-library-image/issues](https://github.com/traefik/traefik-library-image/issues) + [https://github.com/traefik/traefik-library-image/issues](https://github.com/traefik/traefik-library-image/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/traefik/), [`arm32v6`](https://hub.docker.com/r/arm32v6/traefik/), [`arm64v8`](https://hub.docker.com/r/arm64v8/traefik/), [`s390x`](https://hub.docker.com/r/s390x/traefik/), [`windows-amd64`](https://hub.docker.com/r/winamd64/traefik/) + [`amd64`](https://hub.docker.com/r/amd64/traefik/), [`arm32v6`](https://hub.docker.com/r/arm32v6/traefik/), [`arm64v8`](https://hub.docker.com/r/arm64v8/traefik/), [`ppc64le`](https://hub.docker.com/r/ppc64le/traefik/), [`riscv64`](https://hub.docker.com/r/riscv64/traefik/), [`s390x`](https://hub.docker.com/r/s390x/traefik/), [`windows-amd64`](https://hub.docker.com/r/winamd64/traefik/) - **Published image artifact details**: [repo-info repo's `repos/traefik/` directory](https://github.com/docker-library/repo-info/blob/master/repos/traefik) ([history](https://github.com/docker-library/repo-info/commits/master/repos/traefik)) @@ -53,15 +57,15 @@ WARNING: ![logo](https://raw.githubusercontent.com/docker-library/docs/a6cc2c5f4bc6658168f2a0abbb0307acaefff80e/traefik/logo.png) -[Traefik](https://traefik.io) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. +[Traefik](https://traefik.io) is a modern HTTP reverse proxy and ingress controller that makes deploying microservices easy. -Traefik integrates with your existing infrastructure components ([Docker](https://www.docker.com/), [Swarm mode](https://docs.docker.com/engine/swarm/), [Kubernetes](https://kubernetes.io), [Marathon](https://mesosphere.github.io/marathon/), [Consul](https://www.consul.io/), [Etcd](https://coreos.com/etcd/), [Rancher](https://rancher.com), [Amazon ECS](https://aws.amazon.com/ecs), ...) and configures itself automatically and dynamically. +Traefik integrates with your existing infrastructure components ([Kubernetes](https://kubernetes.io), [Docker](https://www.docker.com/), [Swarm](https://docs.docker.com/engine/swarm/), [Consul](https://www.consul.io/), [Nomad](https://www.nomadproject.io/), [etcd](https://coreos.com/etcd/), [Amazon ECS](https://aws.amazon.com/ecs), ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the *only* configuration step you need. -# Traefik v2 - Example usage +## Traefik v3 - Example usage -Enable `docker` provider and web UI: +Enable `docker` provider and dashboard UI: ```yml ## traefik.yml @@ -76,112 +80,116 @@ api: insecure: true ``` -Start Traefik: +Start Traefik v3: -```bash +```sh docker run -d -p 8080:8080 -p 80:80 \ --v $PWD/traefik.yml:/etc/traefik/traefik.yml \ --v /var/run/docker.sock:/var/run/docker.sock \ -traefik:v2.5 + -v $PWD/traefik.yml:/etc/traefik/traefik.yml \ + -v /var/run/docker.sock:/var/run/docker.sock \ + traefik:v3 ``` -Start a backend server, named `test`: +Start a backend server using the `traefik/whoami` image: -```bash +```sh docker run -d --name test traefik/whoami ``` -And finally, you can access to your `whoami` server throught Traefik, on the domain name `test.docker.localhost`: +Access the whoami service through Traefik via the defined rule `test.docker.localhost`: ```console -# $ curl --header 'Host:test.docker.localhost' 'http://localhost:80/' $ curl test.docker.localhost -Hostname: 390a880bdfab +Hostname: 0693100b16de IP: 127.0.0.1 -IP: 172.17.0.3 +IP: ::1 +IP: 192.168.215.4 +RemoteAddr: 192.168.215.3:57618 GET / HTTP/1.1 Host: test.docker.localhost -User-Agent: curl/7.65.3 +User-Agent: curl/8.7.1 Accept: */* Accept-Encoding: gzip -X-Forwarded-For: 172.17.0.1 +X-Forwarded-For: 192.168.215.1 X-Forwarded-Host: test.docker.localhost X-Forwarded-Port: 80 X-Forwarded-Proto: http -X-Forwarded-Server: 7e073cb54211 -X-Real-Ip: 172.17.0.1 +X-Forwarded-Server: 8a37fd4f35fb +X-Real-Ip: 192.168.215.1 ``` -The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the routers, services, and middlewares. +Access the Traefik Dashboard: -![Web UI](https://raw.githubusercontent.com/traefik/traefik/v2.5/docs/content/assets/img/webui-dashboard.png) +Open your web browser and navigate to `http://localhost:8080` to access the Traefik dashboard. This will provide an overview of routers, services, and middlewares. -# Traefik v1 - Example usage +![Dashboard UI](https://raw.githubusercontent.com/traefik/traefik/v3.2/docs/content/assets/img/webui-dashboard.png) -Grab a [sample configuration file](https://raw.githubusercontent.com/traefik/traefik/v1.7/traefik.sample.toml) and rename it to `traefik.toml`. Enable `docker` provider and web UI: +## Traefik v2 - Example usage -```toml -## traefik.toml +Enable `docker` provider and dashboard UI: -# API and dashboard configuration -[api] +```yml +## traefik.yml # Docker configuration backend -[docker] - domain = "docker.localhost" +providers: + docker: + defaultRule: "Host(`{{ trimPrefix `/` .Name }}.docker.localhost`)" + +# API and dashboard configuration +api: + insecure: true ``` -Start Traefik: +Start Traefik v2: -```bash +```sh docker run -d -p 8080:8080 -p 80:80 \ --v $PWD/traefik.toml:/etc/traefik/traefik.toml \ +-v $PWD/traefik.yml:/etc/traefik/traefik.yml \ -v /var/run/docker.sock:/var/run/docker.sock \ -traefik:v1.7 +traefik:v2.11 ``` -Start a backend server, named `test`: +Start a backend server using the `traefik/whoami` image: -```bash +```sh docker run -d --name test traefik/whoami ``` -And finally, you can access to your `whoami` server throught Traefik, on the domain name `{containerName}.{configuredDomain}` (`test.docker.localhost`): +Access the whoami service through Traefik via the defined rule `test.docker.localhost`: ```console -# $ curl --header 'Host:test.docker.localhost' 'http://localhost:80/' -$ curl 'http://test.docker.localhost' -Hostname: 117c5530934d +$ curl test.docker.localhost +Hostname: 390a880bdfab IP: 127.0.0.1 -IP: ::1 IP: 172.17.0.3 -IP: fe80::42:acff:fe11:3 GET / HTTP/1.1 Host: test.docker.localhost -User-Agent: curl/7.35.0 +User-Agent: curl/7.65.3 Accept: */* Accept-Encoding: gzip X-Forwarded-For: 172.17.0.1 -X-Forwarded-Host: 172.17.0.3:80 +X-Forwarded-Host: test.docker.localhost +X-Forwarded-Port: 80 X-Forwarded-Proto: http -X-Forwarded-Server: f2e05c433120 +X-Forwarded-Server: 7e073cb54211 +X-Real-Ip: 172.17.0.1 ``` -The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the frontends/backends and also a health dashboard. +Access the Traefik Dashboard: -![Web UI Providers](https://raw.githubusercontent.com/traefik/traefik/v1.7/docs/img/web.frontend.png) +Open your web browser and navigate to `http://localhost:8080` to access the Traefik dashboard. This will provide an overview of routers, services, and middlewares. -# Documentation +![Dashboard UI](https://raw.githubusercontent.com/traefik/traefik/v2.0/docs/content/assets/img/webui-dashboard.png) + +## Documentation You can find the complete documentation: -- for [v2.x](https://doc.traefik.io/traefik/) -- for [v1.7](https://doc.traefik.io/traefik/v1.7) +- for [v3.x](https://doc.traefik.io/traefik/) +- for [v2.11](https://doc.traefik.io/traefik/v2.11) A community support is available at [https://community.traefik.io](https://community.traefik.io) -A collection of contributions around Traefik can be found at [https://awesome.traefik.io](https://awesome.traefik.io). - # Image Variants The `traefik` images come in many flavors, each designed for a specific use case. @@ -192,12 +200,11 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `traefik:-windowsservercore` -This image is based on [Windows Server Core (`microsoft/windowsservercore`)](https://hub.docker.com/r/microsoft/windowsservercore/). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. +This image is based on [Windows Server Core (`mcr.microsoft.com/windows/servercore`)](https://hub.docker.com/r/microsoft/windows-servercore). As such, it only works in places which that image does, such as Windows 10 Professional/Enterprise (Anniversary Edition) or Windows Server 2016. For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft: -- [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server) -- [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10) +- [Windows Containers Quick Start](https://learn.microsoft.com/en-us/virtualization/windowscontainers/quick-start/set-up-environment?tabs=dockerce) # License diff --git a/traefik/content.md b/traefik/content.md index e51dfd914812..bc6c593c8dd5 100644 --- a/traefik/content.md +++ b/traefik/content.md @@ -1,14 +1,14 @@ %%LOGO%% -[Traefik](https://traefik.io) is a modern HTTP reverse proxy and load balancer that makes deploying microservices easy. +[Traefik](https://traefik.io) is a modern HTTP reverse proxy and ingress controller that makes deploying microservices easy. -Traefik integrates with your existing infrastructure components ([Docker](https://www.docker.com/), [Swarm mode](https://docs.docker.com/engine/swarm/), [Kubernetes](https://kubernetes.io), [Marathon](https://mesosphere.github.io/marathon/), [Consul](https://www.consul.io/), [Etcd](https://coreos.com/etcd/), [Rancher](https://rancher.com), [Amazon ECS](https://aws.amazon.com/ecs), ...) and configures itself automatically and dynamically. +Traefik integrates with your existing infrastructure components ([Kubernetes](https://kubernetes.io), [Docker](https://www.docker.com/), [Swarm](https://docs.docker.com/engine/swarm/), [Consul](https://www.consul.io/), [Nomad](https://www.nomadproject.io/), [etcd](https://coreos.com/etcd/), [Amazon ECS](https://aws.amazon.com/ecs), ...) and configures itself automatically and dynamically. Pointing Traefik at your orchestrator should be the *only* configuration step you need. -# Traefik v2 - Example usage +## Traefik v3 - Example usage -Enable `docker` provider and web UI: +Enable `docker` provider and dashboard UI: ```yml ## traefik.yml @@ -23,108 +23,112 @@ api: insecure: true ``` -Start Traefik: +Start Traefik v3: -```bash +```sh docker run -d -p 8080:8080 -p 80:80 \ --v $PWD/traefik.yml:/etc/traefik/traefik.yml \ --v /var/run/docker.sock:/var/run/docker.sock \ -traefik:v2.5 + -v $PWD/traefik.yml:/etc/traefik/traefik.yml \ + -v /var/run/docker.sock:/var/run/docker.sock \ + %%IMAGE%%:v3 ``` -Start a backend server, named `test`: +Start a backend server using the `traefik/whoami` image: -```bash +```sh docker run -d --name test traefik/whoami ``` -And finally, you can access to your `whoami` server throught Traefik, on the domain name `test.docker.localhost`: +Access the whoami service through Traefik via the defined rule `test.docker.localhost`: ```console -# $ curl --header 'Host:test.docker.localhost' 'http://localhost:80/' $ curl test.docker.localhost -Hostname: 390a880bdfab +Hostname: 0693100b16de IP: 127.0.0.1 -IP: 172.17.0.3 +IP: ::1 +IP: 192.168.215.4 +RemoteAddr: 192.168.215.3:57618 GET / HTTP/1.1 Host: test.docker.localhost -User-Agent: curl/7.65.3 +User-Agent: curl/8.7.1 Accept: */* Accept-Encoding: gzip -X-Forwarded-For: 172.17.0.1 +X-Forwarded-For: 192.168.215.1 X-Forwarded-Host: test.docker.localhost X-Forwarded-Port: 80 X-Forwarded-Proto: http -X-Forwarded-Server: 7e073cb54211 -X-Real-Ip: 172.17.0.1 +X-Forwarded-Server: 8a37fd4f35fb +X-Real-Ip: 192.168.215.1 ``` -The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the routers, services, and middlewares. +Access the Traefik Dashboard: -![Web UI](https://raw.githubusercontent.com/traefik/traefik/v2.5/docs/content/assets/img/webui-dashboard.png) +Open your web browser and navigate to `http://localhost:8080` to access the Traefik dashboard. This will provide an overview of routers, services, and middlewares. -# Traefik v1 - Example usage +![Dashboard UI](https://raw.githubusercontent.com/traefik/traefik/v3.2/docs/content/assets/img/webui-dashboard.png) -Grab a [sample configuration file](https://raw.githubusercontent.com/traefik/traefik/v1.7/traefik.sample.toml) and rename it to `traefik.toml`. Enable `docker` provider and web UI: +## Traefik v2 - Example usage -```toml -## traefik.toml +Enable `docker` provider and dashboard UI: -# API and dashboard configuration -[api] +```yml +## traefik.yml # Docker configuration backend -[docker] - domain = "docker.localhost" +providers: + docker: + defaultRule: "Host(`{{ trimPrefix `/` .Name }}.docker.localhost`)" + +# API and dashboard configuration +api: + insecure: true ``` -Start Traefik: +Start Traefik v2: -```bash +```sh docker run -d -p 8080:8080 -p 80:80 \ --v $PWD/traefik.toml:/etc/traefik/traefik.toml \ +-v $PWD/traefik.yml:/etc/traefik/traefik.yml \ -v /var/run/docker.sock:/var/run/docker.sock \ -traefik:v1.7 +%%IMAGE%%:v2.11 ``` -Start a backend server, named `test`: +Start a backend server using the `traefik/whoami` image: -```bash +```sh docker run -d --name test traefik/whoami ``` -And finally, you can access to your `whoami` server throught Traefik, on the domain name `{containerName}.{configuredDomain}` (`test.docker.localhost`): +Access the whoami service through Traefik via the defined rule `test.docker.localhost`: ```console -# $ curl --header 'Host:test.docker.localhost' 'http://localhost:80/' -$ curl 'http://test.docker.localhost' -Hostname: 117c5530934d +$ curl test.docker.localhost +Hostname: 390a880bdfab IP: 127.0.0.1 -IP: ::1 IP: 172.17.0.3 -IP: fe80::42:acff:fe11:3 GET / HTTP/1.1 Host: test.docker.localhost -User-Agent: curl/7.35.0 +User-Agent: curl/7.65.3 Accept: */* Accept-Encoding: gzip X-Forwarded-For: 172.17.0.1 -X-Forwarded-Host: 172.17.0.3:80 +X-Forwarded-Host: test.docker.localhost +X-Forwarded-Port: 80 X-Forwarded-Proto: http -X-Forwarded-Server: f2e05c433120 +X-Forwarded-Server: 7e073cb54211 +X-Real-Ip: 172.17.0.1 ``` -The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the frontends/backends and also a health dashboard. +Access the Traefik Dashboard: + +Open your web browser and navigate to `http://localhost:8080` to access the Traefik dashboard. This will provide an overview of routers, services, and middlewares. -![Web UI Providers](https://raw.githubusercontent.com/traefik/traefik/v1.7/docs/img/web.frontend.png) +![Dashboard UI](https://raw.githubusercontent.com/traefik/traefik/v2.0/docs/content/assets/img/webui-dashboard.png) -# Documentation +## Documentation You can find the complete documentation: -- for [v2.x](https://doc.traefik.io/traefik/) -- for [v1.7](https://doc.traefik.io/traefik/v1.7) +- for [v3.x](https://doc.traefik.io/traefik/) +- for [v2.11](https://doc.traefik.io/traefik/v2.11) A community support is available at [https://community.traefik.io](https://community.traefik.io) - -A collection of contributions around Traefik can be found at [https://awesome.traefik.io](https://awesome.traefik.io). diff --git a/traefik/metadata.json b/traefik/metadata.json new file mode 100644 index 000000000000..296c4ec2a848 --- /dev/null +++ b/traefik/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "networking" + ] + } +} diff --git a/ubuntu/README.md b/ubuntu/README.md index baf7ec070f12..d1739a9afaa4 100644 --- a/ubuntu/README.md +++ b/ubuntu/README.md @@ -17,20 +17,22 @@ WARNING: # Quick reference - **Maintained by**: - [Canonical](https://launchpad.net/cloud-images) and [Tianon (Debian Developer)](https://git.launchpad.net/cloud-images/+oci/ubuntu-base) + [Canonical](https://launchpad.net/cloud-images) - **Where to get help**: [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`18.04`, `bionic-20221215`, `bionic`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-bionic-amd64-20221215&id=0ae8196fe7299a6f6954b5f0208f57f170f12c35) -- [`20.04`, `focal-20221130`, `focal`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-focal-amd64-20221130&id=0373f3064197249345734f2db985a32bced5c541) -- [`22.04`, `jammy-20221130`, `jammy`, `latest`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-jammy-amd64-20221130&id=5107d90663ceb24789a9fa19136b0753c5651aa0) -- [`22.10`, `kinetic-20221130`, `kinetic`, `rolling`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-kinetic-amd64-20221130&id=28c4e64ea84b6e9bcd1352e81cf71dbb47f259cc) -- [`23.04`, `lunar-20221216`, `lunar`, `devel`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-lunar-amd64-20221216&id=cbaec25db5166d7e31cf418cc5efb5000ffaaf88) -- [`14.04`, `trusty-20191217`, `trusty`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-trusty-amd64-20191217&id=131f6d8ad3ff6875f210766c88b463f96992b5ab) -- [`16.04`, `xenial-20210804`, `xenial`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/Dockerfile?h=refs/tags/dist-xenial-amd64-20210804&id=45e83e2e11f641ba2fea381e705ededbd2778f16) +- [`22.04`, `jammy-20251013`, `jammy`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/oci/index.json?h=refs/tags/dist-jammy-amd64-20251013-b40e3010&id=b40e301002ccc279d4014443ac99c4a4bf12bc9e) + +- [`24.04`, `noble-20251013`, `noble`, `latest`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/oci/index.json?h=refs/tags/dist-noble-amd64-20251013-6177ca63&id=6177ca63f5beee0b6d2993721a62850b9146e474) + +- [`25.04`, `plucky-20251001`, `plucky`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/oci/index.json?h=refs/tags/dist-plucky-amd64-20251001-547c400a&id=547c400a291828191316040f3e41e24b971efb8e) + +- [`25.10`, `questing-20251007`, `questing`, `rolling`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/oci/index.json?h=refs/tags/dist-questing-amd64-20251007-2012176a&id=2012176ad7653cd1c95d622cbcb2744f24237be3) + +- [`26.04`, `resolute-20251101`, `resolute`, `devel`](https://git.launchpad.net/cloud-images/+oci/ubuntu-base/tree/oci/index.json?h=refs/tags/dist-resolute-amd64-20251101-d25af05a&id=d25af05a6e71703d30d1f744828173db415e1c14) # Quick reference (cont.) @@ -38,7 +40,7 @@ WARNING: [the cloud-images bug tracker](https://bugs.launchpad.net/cloud-images) (include the `docker` tag) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/ubuntu/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ubuntu/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ubuntu/), [`i386`](https://hub.docker.com/r/i386/ubuntu/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ubuntu/), [`riscv64`](https://hub.docker.com/r/riscv64/ubuntu/), [`s390x`](https://hub.docker.com/r/s390x/ubuntu/) + [`amd64`](https://hub.docker.com/r/amd64/ubuntu/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ubuntu/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ubuntu/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ubuntu/), [`riscv64`](https://hub.docker.com/r/riscv64/ubuntu/), [`s390x`](https://hub.docker.com/r/s390x/ubuntu/) - **Published image artifact details**: [repo-info repo's `repos/ubuntu/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ubuntu) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ubuntu)) @@ -57,9 +59,9 @@ Ubuntu is a Debian-based Linux operating system that runs from the desktop to th Development of Ubuntu is led by Canonical Ltd. Canonical generates revenue through the sale of technical support and other services related to Ubuntu. The Ubuntu project is publicly committed to the principles of open-source software development; people are encouraged to use free software, study how it works, improve upon it, and distribute it. -> [wikipedia.org/wiki/Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) +> [ubuntu.com](https://ubuntu.com) -![logo](https://raw.githubusercontent.com/docker-library/docs/01c12653951b2fe592c1f93a13b4e289ada0e3a1/ubuntu/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/2ac3caaf21dfba9734f20518971983edc617c77c/ubuntu/logo.png) # What's in this image? @@ -81,15 +83,18 @@ RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* ENV LANG en_US.utf8 ``` +## Unminimize + +Starting from [Ubuntu 24.10 "Oracular Oriole"](https://discourse.ubuntu.com/t/oracular-oriole-release-notes/44878#unminimize), the `unminimize` command will no longer be shipped by default on minimal images. It has now been moved to a dedicated package which can be installed via `apt-get install -y unminimize`. + # How is the rootfs built? The tarballs published by Canonical, referenced by `dist-*` tags in https://git.launchpad.net/cloud-images/+oci/ubuntu-base Git repository, are built from scripts that live in [the livecd-rootfs project](https://code.launchpad.net/~ubuntu-core-dev/livecd-rootfs/+git/livecd-rootfs/+ref/ubuntu/master), especially `live-build/auto/build`. The builds are run on Launchpad. For build history see `livefs` build pages of individual releases on Launchpad: -- [Bionic](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/bionic/ubuntu-oci) -- [Focal](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/focal/ubuntu-oci) - [Jammy](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/jammy/ubuntu-oci) -- [Kinetic](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/kinetic/ubuntu-oci) -- [Lunar](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/lunar/ubuntu-oci) +- [Noble](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/noble/ubuntu-oci) +- [Plucky](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/plucky/ubuntu-oci) +- [Questing](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/questing/ubuntu-oci) # License diff --git a/ubuntu/content.md b/ubuntu/content.md index d8c2e37c6143..0fc13a5773b1 100644 --- a/ubuntu/content.md +++ b/ubuntu/content.md @@ -4,7 +4,7 @@ Ubuntu is a Debian-based Linux operating system that runs from the desktop to th Development of Ubuntu is led by Canonical Ltd. Canonical generates revenue through the sale of technical support and other services related to Ubuntu. The Ubuntu project is publicly committed to the principles of open-source software development; people are encouraged to use free software, study how it works, improve upon it, and distribute it. -> [wikipedia.org/wiki/Ubuntu](https://en.wikipedia.org/wiki/Ubuntu) +> [ubuntu.com](https://ubuntu.com) %%LOGO%% @@ -28,12 +28,15 @@ RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* ENV LANG en_US.utf8 ``` +## Unminimize + +Starting from [Ubuntu 24.10 "Oracular Oriole"](https://discourse.ubuntu.com/t/oracular-oriole-release-notes/44878#unminimize), the `unminimize` command will no longer be shipped by default on minimal images. It has now been moved to a dedicated package which can be installed via `apt-get install -y unminimize`. + # How is the rootfs built? The tarballs published by Canonical, referenced by `dist-*` tags in https://git.launchpad.net/cloud-images/+oci/ubuntu-base Git repository, are built from scripts that live in [the livecd-rootfs project](https://code.launchpad.net/~ubuntu-core-dev/livecd-rootfs/+git/livecd-rootfs/+ref/ubuntu/master), especially `live-build/auto/build`. The builds are run on Launchpad. For build history see `livefs` build pages of individual releases on Launchpad: -- [Bionic](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/bionic/ubuntu-oci) -- [Focal](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/focal/ubuntu-oci) - [Jammy](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/jammy/ubuntu-oci) -- [Kinetic](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/kinetic/ubuntu-oci) -- [Lunar](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/lunar/ubuntu-oci) +- [Noble](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/noble/ubuntu-oci) +- [Plucky](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/plucky/ubuntu-oci) +- [Questing](https://launchpad.net/~cloud-images-release-managers/+livefs/ubuntu/questing/ubuntu-oci) diff --git a/ubuntu/logo.png b/ubuntu/logo.png index d92660b2839a..591ecae4f8e8 100644 Binary files a/ubuntu/logo.png and b/ubuntu/logo.png differ diff --git a/ubuntu/maintainer.md b/ubuntu/maintainer.md index 541c9f2f5909..16c36b91b6ec 100644 --- a/ubuntu/maintainer.md +++ b/ubuntu/maintainer.md @@ -1 +1 @@ -[Canonical](https://launchpad.net/cloud-images) and [Tianon (Debian Developer)](%%GITHUB-REPO%%) +[Canonical](https://launchpad.net/cloud-images) diff --git a/ubuntu/metadata.json b/ubuntu/metadata.json new file mode 100644 index 000000000000..df07586b5b35 --- /dev/null +++ b/ubuntu/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "operating-systems" + ] + } +} diff --git a/unit/README-short.txt b/unit/README-short.txt new file mode 100644 index 000000000000..2a770bfc5270 --- /dev/null +++ b/unit/README-short.txt @@ -0,0 +1 @@ +DEPRECATED; Official build of NGINX Unit: Universal Web App Server diff --git a/unit/README.md b/unit/README.md new file mode 100644 index 000000000000..735a50c9919b --- /dev/null +++ b/unit/README.md @@ -0,0 +1,78 @@ + + +# **DEPRECATION NOTICE** + +As of October 2025, NGINX Unit is archived and unmaintained. The images will not receive release or security updates. + +https://github.com/nginx/unit?tab=readme-ov-file#note-this-repository-has-been-archived-there-will-likely-be-no-further-development-at-this-repo-and-security-vulnerabilities-may-be-unaddressed + +# Quick reference + +- **Maintained by**: + [the Unit Docker Maintainers](https://github.com/nginx/unit) + +- **Where to get help**: + the [GitHub issues page](https://github.com/nginx/unit/issues), the [NGINX Community Slack](https://community.nginx.org/joinslack) + +# Supported tags and respective `Dockerfile` links + +**No supported tags** + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/nginx/unit/issues](https://github.com/nginx/unit/issues?q=) + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + **No supported architectures** + +- **Published image artifact details**: + [repo-info repo's `repos/unit/` directory](https://github.com/docker-library/repo-info/blob/master/repos/unit) ([history](https://github.com/docker-library/repo-info/commits/master/repos/unit)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/unit` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Funit) + [official-images repo's `library/unit` file](https://github.com/docker-library/official-images/blob/master/library/unit) ([history](https://github.com/docker-library/official-images/commits/master/library/unit)) + +- **Source of this description**: + [docs repo's `unit/` directory](https://github.com/docker-library/docs/tree/master/unit) ([history](https://github.com/docker-library/docs/commits/master/unit)) + +# What is Unit? + +NGINX Unit is a lightweight and versatile application runtime that provides the essential components for your web application as a single open-source server: running application code, serving static assets, handling TLS and request routing. + +For more information, check out [Key Features](https://unit.nginx.org/keyfeatures). + +![logo](https://raw.githubusercontent.com/docker-library/docs/d6e69ebb56fe6890bd6ec587295ff1d67e2849fe/unit/logo.svg?sanitize=true) + +# Available tags + +Please see [Unit's website](https://unit.nginx.org/installation/#docker-images) for details. + +# How to use this image + +Please check the [Initial Configuration](https://unit.nginx.org/installation/#initial-configuration) section on Unit's website. Additionally, our [Docker howto](https://unit.nginx.org/howto/docker/) can be of help. + +# License + +View [license information](https://raw.githubusercontent.com/nginx/unit/master/LICENSE) for the software contained in this image. + +As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). + +Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `unit/` directory](https://github.com/docker-library/repo-info/tree/master/repos/unit). + +As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/unit/content.md b/unit/content.md new file mode 100644 index 000000000000..286fc69a5ac1 --- /dev/null +++ b/unit/content.md @@ -0,0 +1,15 @@ +# What is Unit? + +NGINX Unit is a lightweight and versatile application runtime that provides the essential components for your web application as a single open-source server: running application code, serving static assets, handling TLS and request routing. + +For more information, check out [Key Features](https://unit.nginx.org/keyfeatures). + +%%LOGO%% + +# Available tags + +Please see [Unit's website](https://unit.nginx.org/installation/#docker-images) for details. + +# How to use this image + +Please check the [Initial Configuration](https://unit.nginx.org/installation/#initial-configuration) section on Unit's website. Additionally, our [Docker howto](https://unit.nginx.org/howto/docker/) can be of help. diff --git a/unit/deprecated.md b/unit/deprecated.md new file mode 100644 index 000000000000..2acd8bfd6833 --- /dev/null +++ b/unit/deprecated.md @@ -0,0 +1,3 @@ +As of October 2025, NGINX Unit is archived and unmaintained. The images will not receive release or security updates. + +https://github.com/nginx/unit?tab=readme-ov-file#note-this-repository-has-been-archived-there-will-likely-be-no-further-development-at-this-repo-and-security-vulnerabilities-may-be-unaddressed diff --git a/unit/get-help.md b/unit/get-help.md new file mode 100644 index 000000000000..95f22075b65a --- /dev/null +++ b/unit/get-help.md @@ -0,0 +1 @@ +the [GitHub issues page](https://github.com/nginx/unit/issues), the [NGINX Community Slack](https://community.nginx.org/joinslack) diff --git a/unit/github-repo b/unit/github-repo new file mode 100644 index 000000000000..18f0d0ef59c8 --- /dev/null +++ b/unit/github-repo @@ -0,0 +1 @@ +https://github.com/nginx/unit diff --git a/unit/license.md b/unit/license.md new file mode 100644 index 000000000000..d7cd7032647e --- /dev/null +++ b/unit/license.md @@ -0,0 +1 @@ +View [license information](https://raw.githubusercontent.com/nginx/unit/master/LICENSE) for the software contained in this image. diff --git a/unit/logo.svg b/unit/logo.svg new file mode 100644 index 000000000000..e25d3667c4da --- /dev/null +++ b/unit/logo.svg @@ -0,0 +1 @@ + diff --git a/unit/maintainer.md b/unit/maintainer.md new file mode 100644 index 000000000000..dd92020606b6 --- /dev/null +++ b/unit/maintainer.md @@ -0,0 +1 @@ +[the Unit Docker Maintainers](%%GITHUB-REPO%%) diff --git a/unit/metadata.json b/unit/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/unit/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/update.sh b/update.sh index 0b73bf051ba3..a4744445695e 100755 --- a/update.sh +++ b/update.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -Eeuo pipefail cd "$(dirname "$(readlink -f "$BASH_SOURCE")")" @@ -86,22 +86,11 @@ for image in "${images[@]}"; do logo="![logo]($logoUrl)" fi - stack= - stackYml= - stackUrl= - if [ -f "$repo/stack.yml" ]; then - stack="$(cat "$repo/stack.md" 2>/dev/null || cat "$helperDir/stack.md")" - stackYml=$'```yaml\n'"$(cat "$repo/stack.yml")"$'\n```' - stackCommit="$(git log -1 --format='format:%H' -- "$repo/stack.yml" 2>/dev/null || true)" - [ "$stackCommit" ] || stackCommit='master' - stackUrl="https://raw.githubusercontent.com/docker-library/docs/$stackCommit/$repo/stack.yml" - fi - compose= - composeYml= - if [ -f "$repo/docker-compose.yml" ]; then + composeYaml= + if [ -f "$repo/compose.yaml" ]; then compose="$(cat "$repo/compose.md" 2>/dev/null || cat "$helperDir/compose.md")" - composeYml=$'```yaml\n'"$(cat "$repo/docker-compose.yml")"$'\n```' + composeYaml=$'```yaml\n'"$(cat "$repo/compose.yaml")"$'\n```' fi deprecated= @@ -145,10 +134,6 @@ for image in "${images[@]}"; do # opensuse, etc partial='**No supported tags**' fi - elif [ -n "$ARCH_SPECIFIC_DOCS" ]; then - jenkinsJobUrl="https://doi-janky.infosiftr.net/job/multiarch/job/$BASHBREW_ARCH/job/$repo/" - jenkinsImageUrl="https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/$BASHBREW_ARCH/job/$repo.svg?label=%%IMAGE%%%20%20build%20job" - partial+=$'\n\n''[![%%IMAGE%% build status badge]('"$jenkinsImageUrl"')]('"$jenkinsJobUrl"')' fi replace_field "$targetFile" 'TAGS' "$partial" @@ -167,17 +152,10 @@ for image in "${images[@]}"; do echo " LOGO => $logo" replace_field "$targetFile" 'LOGO' "$logo" '\s*' - echo ' STACK => '"$repo"'/stack.md' - replace_field "$targetFile" 'STACK' "$stack" - echo ' STACK-YML => '"$repo"'/stack.yml' - replace_field "$targetFile" 'STACK-YML' "$stackYml" - echo ' STACK-URL => '"$repo"'/stack.yml' - replace_field "$targetFile" 'STACK-URL' "$stackUrl" - echo ' COMPOSE => '"$repo"'/compose.md' replace_field "$targetFile" 'COMPOSE' "$compose" - echo ' COMPOSE-YML => '"$repo"'/docker-compose.yml' - replace_field "$targetFile" 'COMPOSE-YML' "$composeYml" + echo ' COMPOSE-YAML => '"$repo"'/compose.yaml' + replace_field "$targetFile" 'COMPOSE-YAML' "$composeYaml" echo ' LICENSE => '"$repo"'/license.md' replace_field "$targetFile" 'LICENSE' "$license" diff --git a/varnish/README.md b/varnish/README.md index d23cefc79802..1b98a2e873d7 100644 --- a/varnish/README.md +++ b/varnish/README.md @@ -24,16 +24,20 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`fresh`, `7.2.1`, `7.2`, `latest`](https://github.com/varnish/docker-varnish/blob/b62a2443a5f1b821fbb096aea9d349f0de20b0a3/fresh/debian/Dockerfile) -- [`fresh-alpine`, `7.2.1-alpine`, `7.2-alpine`, `alpine`](https://github.com/varnish/docker-varnish/blob/b62a2443a5f1b821fbb096aea9d349f0de20b0a3/fresh/alpine/Dockerfile) -- [`old`, `7.1.2`, `7.1`](https://github.com/varnish/docker-varnish/blob/e7acf36bd4afd05427bc3fb251ae4b3374168f27/old/debian/Dockerfile) -- [`old-alpine`, `7.1.2-alpine`, `7.1-alpine`](https://github.com/varnish/docker-varnish/blob/e7acf36bd4afd05427bc3fb251ae4b3374168f27/old/alpine/Dockerfile) -- [`stable`, `6.0.11`, `6.0`](https://github.com/varnish/docker-varnish/blob/e7acf36bd4afd05427bc3fb251ae4b3374168f27/stable/debian/Dockerfile) +- [`fresh`, `8.0.0`, `8`, `8.0`, `latest`](https://github.com/varnish/docker-varnish/blob/ec128addad8eb92680ac7adb2f00f6a679a48be5/fresh/debian/Dockerfile) + +- [`fresh-alpine`, `8.0.0-alpine`, `8-alpine`, `8.0-alpine`, `alpine`](https://github.com/varnish/docker-varnish/blob/ec128addad8eb92680ac7adb2f00f6a679a48be5/fresh/alpine/Dockerfile) + +- [`old`, `7.7.3`, `7.7`](https://github.com/varnish/docker-varnish/blob/ec128addad8eb92680ac7adb2f00f6a679a48be5/old/debian/Dockerfile) + +- [`old-alpine`, `7.7.3-alpine`, `7.7-alpine`](https://github.com/varnish/docker-varnish/blob/ec128addad8eb92680ac7adb2f00f6a679a48be5/old/alpine/Dockerfile) + +- [`stable`, `6.0.16`, `6.0`](https://github.com/varnish/docker-varnish/blob/2c2b9d92008b7623bd837cbb542ae02061d9a598/stable/debian/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/varnish/docker-varnish/issues](https://github.com/varnish/docker-varnish/issues) + [https://github.com/varnish/docker-varnish/issues](https://github.com/varnish/docker-varnish/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/varnish/), [`arm32v7`](https://hub.docker.com/r/arm32v7/varnish/), [`arm64v8`](https://hub.docker.com/r/arm64v8/varnish/), [`i386`](https://hub.docker.com/r/i386/varnish/), [`ppc64le`](https://hub.docker.com/r/ppc64le/varnish/), [`s390x`](https://hub.docker.com/r/s390x/varnish/) @@ -61,34 +65,26 @@ Varnish is an HTTP accelerator designed for content-heavy dynamic web sites as w ## Basic usage -Create a `default.vcl` file: - -```vcl -# specify the VCL syntax version to use -vcl 4.1; +### Using `VARNISH_BACKEND_HOST` and `VARNISH_BACKEND_PORT` -# import vmod_dynamic for better backend name resolution -import dynamic; +You just need to know where your backend (the server that Varnish will accelerate) is: -# we won't use any static backend, but Varnish still need a default one -backend default none; +```console +# we define VARNISH_BACKEND_HOST/VARNISH_BACKEND_PORT +# our workdir has to be mounted as tmpfs to avoid disk I/O, +# and we'll use port 8080 to talk to our container (internally listening on 80) +$ docker run \ + -e VARNISH_BACKEND_HOST=example.com -e VARNISH_BACKEND_PORT=80 \ + --tmpfs /var/lib/varnish/varnishd:exec \ + -p 8080:80 \ + varnish +``` -# set up a dynamic director -# for more info, see https://github.com/nigoroll/libvmod-dynamic/blob/master/src/vmod_dynamic.vcc -sub vcl_init { - new d = dynamic.director(port = "80"); -} +From there, you can visit `localhost:8080` in your browser and see the example.com homepage. -sub vcl_recv { - # force the host header to match the backend (not all backends need it, - # but example.com does) - set req.http.host = "example.com"; - # set the backend - set req.backend_hint = d.backend("example.com"); -} -``` +### Using a VCL file -Then run: +If you already have a VCL file, you can directly mount it as `/etc/varnish/default.vcl`: ```console # we need the configuration file at /etc/varnish/default.vcl, @@ -101,9 +97,7 @@ $ docker run \ varnish ``` -From there, you can visit `localhost:8080` in your browser and see the example.com homepage. - -Alternatively, a simple `Dockerfile` can be used to generate a new image that includes the necessary `default.vcl` (which is a much cleaner solution than the bind mount above): +Alternatively, a simple `Dockerfile` can be used to generate a new image that includes the necessary `default.vcl`: ```dockerfile FROM varnish @@ -153,6 +147,10 @@ Varnish will listen to HTTP traffic on port `80`, and this can be overridden by $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:7777 -e VARNISH_HTTP_PORT=7777 varnish ``` +### VCL file path + +The default Varnish configuration file is `/etc/varnish/default.vcl`, but this can be overridden with the `VARNISH_VCL_FILE` environment variable. This is useful if you want a single image that can be deployed with different configurations baked in it. + ### Extra arguments Additionally, you can add arguments to `docker run` after `varnish`, if the first argument starts with a `-`, the whole list will be appendend to the [default command](https://github.com/varnish/docker-varnish/blob/master/fresh/debian/scripts/docker-varnish-entrypoint): diff --git a/varnish/content.md b/varnish/content.md index b76c7937e2f0..1548654f89d8 100644 --- a/varnish/content.md +++ b/varnish/content.md @@ -10,34 +10,26 @@ Varnish is an HTTP accelerator designed for content-heavy dynamic web sites as w ## Basic usage -Create a `default.vcl` file: - -```vcl -# specify the VCL syntax version to use -vcl 4.1; - -# import vmod_dynamic for better backend name resolution -import dynamic; - -# we won't use any static backend, but Varnish still need a default one -backend default none; - -# set up a dynamic director -# for more info, see https://github.com/nigoroll/libvmod-dynamic/blob/master/src/vmod_dynamic.vcc -sub vcl_init { - new d = dynamic.director(port = "80"); -} - -sub vcl_recv { - # force the host header to match the backend (not all backends need it, - # but example.com does) - set req.http.host = "example.com"; - # set the backend - set req.backend_hint = d.backend("example.com"); -} +### Using `VARNISH_BACKEND_HOST` and `VARNISH_BACKEND_PORT` + +You just need to know where your backend (the server that Varnish will accelerate) is: + +```console +# we define VARNISH_BACKEND_HOST/VARNISH_BACKEND_PORT +# our workdir has to be mounted as tmpfs to avoid disk I/O, +# and we'll use port 8080 to talk to our container (internally listening on 80) +$ docker run \ + -e VARNISH_BACKEND_HOST=example.com -e VARNISH_BACKEND_PORT=80 \ + --tmpfs /var/lib/varnish/varnishd:exec \ + -p 8080:80 \ + %%IMAGE%% ``` -Then run: +From there, you can visit `localhost:8080` in your browser and see the example.com homepage. + +### Using a VCL file + +If you already have a VCL file, you can directly mount it as `/etc/varnish/default.vcl`: ```console # we need the configuration file at /etc/varnish/default.vcl, @@ -50,9 +42,7 @@ $ docker run \ %%IMAGE%% ``` -From there, you can visit `localhost:8080` in your browser and see the example.com homepage. - -Alternatively, a simple `Dockerfile` can be used to generate a new image that includes the necessary `default.vcl` (which is a much cleaner solution than the bind mount above): +Alternatively, a simple `Dockerfile` can be used to generate a new image that includes the necessary `default.vcl`: ```dockerfile FROM %%IMAGE%% @@ -102,6 +92,10 @@ Varnish will listen to HTTP traffic on port `80`, and this can be overridden by $ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:7777 -e VARNISH_HTTP_PORT=7777 %%IMAGE%% ``` +### VCL file path + +The default Varnish configuration file is `/etc/varnish/default.vcl`, but this can be overridden with the `VARNISH_VCL_FILE` environment variable. This is useful if you want a single image that can be deployed with different configurations baked in it. + ### Extra arguments Additionally, you can add arguments to `docker run` after `%%IMAGE%%`, if the first argument starts with a `-`, the whole list will be appendend to the [default command](https://github.com/varnish/docker-varnish/blob/master/fresh/debian/scripts/docker-varnish-entrypoint): diff --git a/varnish/metadata.json b/varnish/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/varnish/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/vault/README-short.txt b/vault/README-short.txt deleted file mode 100644 index 62cc264925d0..000000000000 --- a/vault/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Vault is a tool for securely accessing secrets via a unified interface and tight access control. diff --git a/vault/README.md b/vault/README.md deleted file mode 100644 index bb41736f1ebe..000000000000 --- a/vault/README.md +++ /dev/null @@ -1,128 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [HashiCorp](https://github.com/hashicorp/docker-vault) - -- **Where to get help**: - [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) - -# Supported tags and respective `Dockerfile` links - -- [`1.12.2`, `latest`](https://github.com/hashicorp/docker-vault/blob/2cba27a16dc7bea0857561ab0424de1bb6e0ffd3/0.X/Dockerfile) -- [`1.11.6`](https://github.com/hashicorp/docker-vault/blob/a7bb73b2f1c8ed40ca8baf5ba2a4c2191e70d506/0.X/Dockerfile) -- [`1.10.9`](https://github.com/hashicorp/docker-vault/blob/cfafe61e0b2679ca8aa24d8ea457767acccb3e1d/0.X/Dockerfile) -- [`1.9.10`](https://github.com/hashicorp/docker-vault/blob/62322ee96a690b07cdc669eb9876fc05e073ff2c/0.X/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/hashicorp/docker-vault/issues](https://github.com/hashicorp/docker-vault/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/vault/), [`arm32v6`](https://hub.docker.com/r/arm32v6/vault/), [`arm64v8`](https://hub.docker.com/r/arm64v8/vault/), [`i386`](https://hub.docker.com/r/i386/vault/) - -- **Published image artifact details**: - [repo-info repo's `repos/vault/` directory](https://github.com/docker-library/repo-info/blob/master/repos/vault) ([history](https://github.com/docker-library/repo-info/commits/master/repos/vault)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images repo's `library/vault` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fvault) - [official-images repo's `library/vault` file](https://github.com/docker-library/official-images/blob/master/library/vault) ([history](https://github.com/docker-library/official-images/commits/master/library/vault)) - -- **Source of this description**: - [docs repo's `vault/` directory](https://github.com/docker-library/docs/tree/master/vault) ([history](https://github.com/docker-library/docs/commits/master/vault)) - -# Vault - -Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log. For more information, please see: - -- [Vault documentation](https://www.vaultproject.io/) -- [Vault on GitHub](https://github.com/hashicorp/vault) - -![logo](https://raw.githubusercontent.com/docker-library/docs/90d4d43bdfccd5cb21e5fd964d32b0074af0f357/vault/logo.svg?sanitize=true) - -# Using the Container - -We chose Alpine as a lightweight base with a reasonably small surface area for security concerns, but with enough functionality for development and interactive debugging. - -Vault always runs under [dumb-init](https://github.com/Yelp/dumb-init), which handles reaping zombie processes and forwards signals on to all processes running in the container. This binary is built by HashiCorp and signed with our [GPG key](https://www.hashicorp.com/security.html), so you can verify the signed package used to build a given base image. - -Running the Vault container with no arguments will give you a Vault server in [development mode](https://www.vaultproject.io/docs/concepts/dev-server.html). The provided entry point script will also look for Vault subcommands and run `vault` with that subcommand. For example, you can execute `docker run vault status` and it will run the `vault status` command inside the container. The entry point also adds some special configuration options as detailed in the sections below when running the `server` subcommand. Any other command gets `exec`-ed inside the container under `dumb-init`. - -The container exposes two optional `VOLUME`s: - -- `/vault/logs`, to use for writing persistent audit logs. By default nothing is written here; the `file` audit backend must be enabled with a path under this directory. -- `/vault/file`, to use for writing persistent storage data when using the`file` data storage plugin. By default nothing is written here (a `dev` server uses an in-memory data store); the `file` data storage backend must be enabled in Vault's configuration before the container is started. - -The container has a Vault configuration directory set up at `/vault/config` and the server will load any HCL or JSON configuration files placed here by binding a volume or by composing a new image and adding files. Alternatively, configuration can be added by passing the configuration JSON via environment variable `VAULT_LOCAL_CONFIG`. - -## Memory Locking and 'setcap' - -The container will attempt to lock memory to prevent sensitive values from being swapped to disk and as a result must have `--cap-add=IPC_LOCK` provided to `docker run`. Since the Vault binary runs as a non-root user, `setcap` is used to give the binary the ability to lock memory. With some Docker storage plugins in some distributions this call will not work correctly; it seems to fail most often with AUFS. The memory locking behavior can be disabled by setting the `SKIP_SETCAP` environment variable to any non-empty value. - -## Running Vault for Development - -```console -$ docker run --cap-add=IPC_LOCK -d --name=dev-vault vault -``` - -This runs a completely in-memory Vault server, which is useful for development but should not be used in production. - -When running in development mode, two additional options can be set via environment variables: - -- `VAULT_DEV_ROOT_TOKEN_ID`: This sets the ID of the initial generated root token to the given value -- `VAULT_DEV_LISTEN_ADDRESS`: This sets the IP:port of the development server listener (defaults to 0.0.0.0:8200) - -As an example: - -```console -$ docker run --cap-add=IPC_LOCK -e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' -e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:1234' vault -``` - -## Running Vault in Server Mode for Development - -```console -$ docker run --cap-add=IPC_LOCK -e 'VAULT_LOCAL_CONFIG={"storage": {"file": {"path": "/vault/file"}}, "listener": [{"tcp": { "address": "0.0.0.0:8200", "tls_disable": true}}], "default_lease_ttl": "168h", "max_lease_ttl": "720h", "ui": true}' -p 8200:8200 vault server -``` - -This runs a Vault server with TLS disabled, the `file` storage backend at path `/vault/file` and a default secret lease duration of one week and a maximum of 30 days. Disabling TLS and using the `file` storage backend are not recommended for production use. - -Note the `--cap-add=IPC_LOCK`: this is required in order for Vault to lock memory, which prevents it from being swapped to disk. This is highly recommended. In a non-development environment, if you do not wish to use this functionality, you must add `"disable_mlock: true"` to the configuration information. - -At startup, the server will read configuration HCL and JSON files from `/vault/config` (any information passed into `VAULT_LOCAL_CONFIG` is written into `local.json` in this directory and read as part of reading the directory for configuration files). Please see Vault's [configuration documentation](https://www.vaultproject.io/docs/config/index.html) for a full list of options. - -We suggest volume mounting a directory into the Docker image in order to give both the configuration and TLS certificates to Vault. You can accomplish this with: - -```console -$ docker run --volume config/:/vault/config.d ... -``` - -For more scalability and reliability, we suggest running containerized Vault in an orchestration environment like k8s or OpenShift. - -Since 0.6.3 this container also supports the `VAULT_REDIRECT_INTERFACE` and `VAULT_CLUSTER_INTERFACE` environment variables. If set, the IP addresses used for the redirect and cluster addresses in Vault's configuration will be the address of the named interface inside the container (e.g. `eth0`). - -# License - -View [license information](https://raw.githubusercontent.com/hashicorp/vault/master/LICENSE) for the software contained in this image. - -As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained). - -Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `vault/` directory](https://github.com/docker-library/repo-info/tree/master/repos/vault). - -As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within. diff --git a/vault/content.md b/vault/content.md deleted file mode 100644 index d3a27503d7e0..000000000000 --- a/vault/content.md +++ /dev/null @@ -1,68 +0,0 @@ -# Vault - -Vault is a tool for securely accessing secrets. A secret is anything that you want to tightly control access to, such as API keys, passwords, certificates, and more. Vault provides a unified interface to any secret, while providing tight access control and recording a detailed audit log. For more information, please see: - -- [Vault documentation](https://www.vaultproject.io/) -- [Vault on GitHub](https://github.com/hashicorp/vault) - -%%LOGO%% - -# Using the Container - -We chose Alpine as a lightweight base with a reasonably small surface area for security concerns, but with enough functionality for development and interactive debugging. - -Vault always runs under [dumb-init](https://github.com/Yelp/dumb-init), which handles reaping zombie processes and forwards signals on to all processes running in the container. This binary is built by HashiCorp and signed with our [GPG key](https://www.hashicorp.com/security.html), so you can verify the signed package used to build a given base image. - -Running the Vault container with no arguments will give you a Vault server in [development mode](https://www.vaultproject.io/docs/concepts/dev-server.html). The provided entry point script will also look for Vault subcommands and run `vault` with that subcommand. For example, you can execute `docker run vault status` and it will run the `vault status` command inside the container. The entry point also adds some special configuration options as detailed in the sections below when running the `server` subcommand. Any other command gets `exec`-ed inside the container under `dumb-init`. - -The container exposes two optional `VOLUME`s: - -- `/vault/logs`, to use for writing persistent audit logs. By default nothing is written here; the `file` audit backend must be enabled with a path under this directory. -- `/vault/file`, to use for writing persistent storage data when using the`file` data storage plugin. By default nothing is written here (a `dev` server uses an in-memory data store); the `file` data storage backend must be enabled in Vault's configuration before the container is started. - -The container has a Vault configuration directory set up at `/vault/config` and the server will load any HCL or JSON configuration files placed here by binding a volume or by composing a new image and adding files. Alternatively, configuration can be added by passing the configuration JSON via environment variable `VAULT_LOCAL_CONFIG`. - -## Memory Locking and 'setcap' - -The container will attempt to lock memory to prevent sensitive values from being swapped to disk and as a result must have `--cap-add=IPC_LOCK` provided to `docker run`. Since the Vault binary runs as a non-root user, `setcap` is used to give the binary the ability to lock memory. With some Docker storage plugins in some distributions this call will not work correctly; it seems to fail most often with AUFS. The memory locking behavior can be disabled by setting the `SKIP_SETCAP` environment variable to any non-empty value. - -## Running Vault for Development - -```console -$ docker run --cap-add=IPC_LOCK -d --name=dev-vault %%IMAGE%% -``` - -This runs a completely in-memory Vault server, which is useful for development but should not be used in production. - -When running in development mode, two additional options can be set via environment variables: - -- `VAULT_DEV_ROOT_TOKEN_ID`: This sets the ID of the initial generated root token to the given value -- `VAULT_DEV_LISTEN_ADDRESS`: This sets the IP:port of the development server listener (defaults to 0.0.0.0:8200) - -As an example: - -```console -$ docker run --cap-add=IPC_LOCK -e 'VAULT_DEV_ROOT_TOKEN_ID=myroot' -e 'VAULT_DEV_LISTEN_ADDRESS=0.0.0.0:1234' %%IMAGE%% -``` - -## Running Vault in Server Mode for Development - -```console -$ docker run --cap-add=IPC_LOCK -e 'VAULT_LOCAL_CONFIG={"storage": {"file": {"path": "/vault/file"}}, "listener": [{"tcp": { "address": "0.0.0.0:8200", "tls_disable": true}}], "default_lease_ttl": "168h", "max_lease_ttl": "720h", "ui": true}' -p 8200:8200 %%IMAGE%% server -``` - -This runs a Vault server with TLS disabled, the `file` storage backend at path `/vault/file` and a default secret lease duration of one week and a maximum of 30 days. Disabling TLS and using the `file` storage backend are not recommended for production use. - -Note the `--cap-add=IPC_LOCK`: this is required in order for Vault to lock memory, which prevents it from being swapped to disk. This is highly recommended. In a non-development environment, if you do not wish to use this functionality, you must add `"disable_mlock: true"` to the configuration information. - -At startup, the server will read configuration HCL and JSON files from `/vault/config` (any information passed into `VAULT_LOCAL_CONFIG` is written into `local.json` in this directory and read as part of reading the directory for configuration files). Please see Vault's [configuration documentation](https://www.vaultproject.io/docs/config/index.html) for a full list of options. - -We suggest volume mounting a directory into the Docker image in order to give both the configuration and TLS certificates to Vault. You can accomplish this with: - -```console -$ docker run --volume config/:/vault/config.d ... -``` - -For more scalability and reliability, we suggest running containerized Vault in an orchestration environment like k8s or OpenShift. - -Since 0.6.3 this container also supports the `VAULT_REDIRECT_INTERFACE` and `VAULT_CLUSTER_INTERFACE` environment variables. If set, the IP addresses used for the redirect and cluster addresses in Vault's configuration will be the address of the named interface inside the container (e.g. `eth0`). diff --git a/vault/github-repo b/vault/github-repo deleted file mode 100644 index a4a1b4c45f2e..000000000000 --- a/vault/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/hashicorp/docker-vault diff --git a/vault/license.md b/vault/license.md deleted file mode 100644 index 2111daccf7f8..000000000000 --- a/vault/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://raw.githubusercontent.com/hashicorp/vault/master/LICENSE) for the software contained in this image. diff --git a/vault/logo.svg b/vault/logo.svg deleted file mode 100644 index 86094d3162f5..000000000000 --- a/vault/logo.svg +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/vault/maintainer.md b/vault/maintainer.md deleted file mode 120000 index ef4100e019a3..000000000000 --- a/vault/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-hashicorp.md \ No newline at end of file diff --git a/websphere-liberty/README-short.txt b/websphere-liberty/README-short.txt index e5e2c189ce77..c6a5d34389b2 100644 --- a/websphere-liberty/README-short.txt +++ b/websphere-liberty/README-short.txt @@ -1 +1 @@ -WebSphere Liberty multi-architecture images based on Ubuntu 18.04 +WebSphere Liberty multi-architecture images based on Ubuntu diff --git a/websphere-liberty/README.md b/websphere-liberty/README.md index 9ee844159d50..bedba5aef66d 100644 --- a/websphere-liberty/README.md +++ b/websphere-liberty/README.md @@ -24,38 +24,73 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`kernel`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/latest/kernel/Dockerfile.ubuntu.ibmjava8) -- [`kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/latest/kernel/Dockerfile.ubuntu.openjdk11) -- [`kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/latest/kernel/Dockerfile.ubuntu.openjdk17) -- [`full`, `latest`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/latest/full/Dockerfile.ubuntu.ibmjava8) -- [`full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/latest/full/Dockerfile.ubuntu.openjdk11) -- [`full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/latest/full/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.13-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.13/kernel/Dockerfile.ubuntu.ibmjava8) -- [`22.0.0.13-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.13/kernel/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.13-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.13/kernel/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.13-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.13/full/Dockerfile.ubuntu.ibmjava8) -- [`22.0.0.13-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.13/full/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.13-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.13/full/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.12-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.12/kernel/Dockerfile.ubuntu.ibmjava8) -- [`22.0.0.12-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.12/kernel/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.12-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.12/kernel/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.12-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.12/full/Dockerfile.ubuntu.ibmjava8) -- [`22.0.0.12-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.12/full/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.12-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.12/full/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.9-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.9/kernel/Dockerfile.ubuntu.ibmjava8) -- [`22.0.0.9-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.9/kernel/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.9-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.9/kernel/Dockerfile.ubuntu.openjdk17) -- [`22.0.0.9-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.9/full/Dockerfile.ubuntu.ibmjava8) -- [`22.0.0.9-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.9/full/Dockerfile.ubuntu.openjdk11) -- [`22.0.0.9-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f8d0a6782d41a5606b2668cea9042e57cedece00/ga/22.0.0.9/full/Dockerfile.ubuntu.openjdk17) +- [`kernel`, `kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/latest/kernel/Dockerfile.ubuntu.ibmjava8) + +- [`kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/latest/kernel/Dockerfile.ubuntu.openjdk11) + +- [`kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/latest/kernel/Dockerfile.ubuntu.openjdk17) + +- [`full`, `latest`, `full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/latest/full/Dockerfile.ubuntu.ibmjava8) + +- [`full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/latest/full/Dockerfile.ubuntu.openjdk11) + +- [`full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/latest/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.3-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.3/kernel/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.3-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.3/kernel/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.3-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.3/kernel/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.3-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.3/full/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.3-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.3/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.3-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.3/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.6-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.6/kernel/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.6-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.6/kernel/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.6-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.6/kernel/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.6-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.6/full/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.6-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.6/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.6-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.6/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.9-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.9/kernel/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.9-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.9/kernel/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.9-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.9/kernel/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.9-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.9/full/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.9-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.9/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.9-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.9/full/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.11-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.11/kernel/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.11-kernel-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.11/kernel/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.11-kernel-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.11/kernel/Dockerfile.ubuntu.openjdk17) + +- [`25.0.0.11-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.11/full/Dockerfile.ubuntu.ibmjava8) + +- [`25.0.0.11-full-java11-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.11/full/Dockerfile.ubuntu.openjdk11) + +- [`25.0.0.11-full-java17-openj9`](https://github.com/WASdev/ci.docker/blob/f4ab95228698fe71240dea3c8d91a4e46372fc0c/ga/25.0.0.11/full/Dockerfile.ubuntu.openjdk17) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/WASdev/ci.docker/issues](https://github.com/WASdev/ci.docker/issues) + [https://github.com/WASdev/ci.docker/issues](https://github.com/WASdev/ci.docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/websphere-liberty/), [`ppc64le`](https://hub.docker.com/r/ppc64le/websphere-liberty/), [`s390x`](https://hub.docker.com/r/s390x/websphere-liberty/) + [`amd64`](https://hub.docker.com/r/amd64/websphere-liberty/), [`arm64v8`](https://hub.docker.com/r/arm64v8/websphere-liberty/), [`ppc64le`](https://hub.docker.com/r/ppc64le/websphere-liberty/), [`s390x`](https://hub.docker.com/r/s390x/websphere-liberty/) - **Published image artifact details**: [repo-info repo's `repos/websphere-liberty/` directory](https://github.com/docker-library/repo-info/blob/master/repos/websphere-liberty) ([history](https://github.com/docker-library/repo-info/commits/master/repos/websphere-liberty)) diff --git a/websphere-liberty/metadata.json b/websphere-liberty/metadata.json new file mode 100644 index 000000000000..1f306a0037fd --- /dev/null +++ b/websphere-liberty/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "web-servers" + ] + } +} diff --git a/wordpress/README.md b/wordpress/README.md index afbb28f10ae4..cc50ad1f51a2 100644 --- a/wordpress/README.md +++ b/wordpress/README.md @@ -24,26 +24,69 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`6.1.1-apache`, `6.1-apache`, `6-apache`, `apache`, `6.1.1`, `6.1`, `6`, `latest`, `6.1.1-php8.0-apache`, `6.1-php8.0-apache`, `6-php8.0-apache`, `php8.0-apache`, `6.1.1-php8.0`, `6.1-php8.0`, `6-php8.0`, `php8.0`](https://github.com/docker-library/wordpress/blob/97f75b51f909fbd9894d128ea6893120cfd23979/latest/php8.0/apache/Dockerfile) -- [`6.1.1-fpm`, `6.1-fpm`, `6-fpm`, `fpm`, `6.1.1-php8.0-fpm`, `6.1-php8.0-fpm`, `6-php8.0-fpm`, `php8.0-fpm`](https://github.com/docker-library/wordpress/blob/97f75b51f909fbd9894d128ea6893120cfd23979/latest/php8.0/fpm/Dockerfile) -- [`6.1.1-fpm-alpine`, `6.1-fpm-alpine`, `6-fpm-alpine`, `fpm-alpine`, `6.1.1-php8.0-fpm-alpine`, `6.1-php8.0-fpm-alpine`, `6-php8.0-fpm-alpine`, `php8.0-fpm-alpine`](https://github.com/docker-library/wordpress/blob/97f75b51f909fbd9894d128ea6893120cfd23979/latest/php8.0/fpm-alpine/Dockerfile) -- [`6.1.1-php8.1-apache`, `6.1-php8.1-apache`, `6-php8.1-apache`, `php8.1-apache`, `6.1.1-php8.1`, `6.1-php8.1`, `6-php8.1`, `php8.1`](https://github.com/docker-library/wordpress/blob/97f75b51f909fbd9894d128ea6893120cfd23979/latest/php8.1/apache/Dockerfile) -- [`6.1.1-php8.1-fpm`, `6.1-php8.1-fpm`, `6-php8.1-fpm`, `php8.1-fpm`](https://github.com/docker-library/wordpress/blob/97f75b51f909fbd9894d128ea6893120cfd23979/latest/php8.1/fpm/Dockerfile) -- [`6.1.1-php8.1-fpm-alpine`, `6.1-php8.1-fpm-alpine`, `6-php8.1-fpm-alpine`, `php8.1-fpm-alpine`](https://github.com/docker-library/wordpress/blob/97f75b51f909fbd9894d128ea6893120cfd23979/latest/php8.1/fpm-alpine/Dockerfile) -- [`6.1.1-php8.2-apache`, `6.1-php8.2-apache`, `6-php8.2-apache`, `php8.2-apache`, `6.1.1-php8.2`, `6.1-php8.2`, `6-php8.2`, `php8.2`](https://github.com/docker-library/wordpress/blob/6569609b4db94cdf0c2eac852456049ac7eacea5/latest/php8.2/apache/Dockerfile) -- [`6.1.1-php8.2-fpm`, `6.1-php8.2-fpm`, `6-php8.2-fpm`, `php8.2-fpm`](https://github.com/docker-library/wordpress/blob/6569609b4db94cdf0c2eac852456049ac7eacea5/latest/php8.2/fpm/Dockerfile) -- [`6.1.1-php8.2-fpm-alpine`, `6.1-php8.2-fpm-alpine`, `6-php8.2-fpm-alpine`, `php8.2-fpm-alpine`](https://github.com/docker-library/wordpress/blob/6569609b4db94cdf0c2eac852456049ac7eacea5/latest/php8.2/fpm-alpine/Dockerfile) -- [`cli-2.7.1`, `cli-2.7`, `cli-2`, `cli`, `cli-2.7.1-php8.0`, `cli-2.7-php8.0`, `cli-2-php8.0`, `cli-php8.0`](https://github.com/docker-library/wordpress/blob/b95184001fd181d86d4a409a4ae26b23795bb0d4/cli/php8.0/alpine/Dockerfile) -- [`cli-2.7.1-php8.1`, `cli-2.7-php8.1`, `cli-2-php8.1`, `cli-php8.1`](https://github.com/docker-library/wordpress/blob/b95184001fd181d86d4a409a4ae26b23795bb0d4/cli/php8.1/alpine/Dockerfile) -- [`cli-2.7.1-php8.2`, `cli-2.7-php8.2`, `cli-2-php8.2`, `cli-php8.2`](https://github.com/docker-library/wordpress/blob/6569609b4db94cdf0c2eac852456049ac7eacea5/cli/php8.2/alpine/Dockerfile) +- [`6.8.3-php8.1-apache`, `6.8-php8.1-apache`, `6-php8.1-apache`, `php8.1-apache`, `6.8.3-php8.1`, `6.8-php8.1`, `6-php8.1`, `php8.1`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.1/apache/Dockerfile) + +- [`6.8.3-php8.1-fpm`, `6.8-php8.1-fpm`, `6-php8.1-fpm`, `php8.1-fpm`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.1/fpm/Dockerfile) + +- [`6.8.3-php8.1-fpm-alpine`, `6.8-php8.1-fpm-alpine`, `6-php8.1-fpm-alpine`, `php8.1-fpm-alpine`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.1/fpm-alpine/Dockerfile) + +- [`6.8.3-php8.2-apache`, `6.8-php8.2-apache`, `6-php8.2-apache`, `php8.2-apache`, `6.8.3-php8.2`, `6.8-php8.2`, `6-php8.2`, `php8.2`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.2/apache/Dockerfile) + +- [`6.8.3-php8.2-fpm`, `6.8-php8.2-fpm`, `6-php8.2-fpm`, `php8.2-fpm`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.2/fpm/Dockerfile) + +- [`6.8.3-php8.2-fpm-alpine`, `6.8-php8.2-fpm-alpine`, `6-php8.2-fpm-alpine`, `php8.2-fpm-alpine`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.2/fpm-alpine/Dockerfile) + +- [`6.8.3-apache`, `6.8-apache`, `6-apache`, `apache`, `6.8.3`, `6.8`, `6`, `latest`, `6.8.3-php8.3-apache`, `6.8-php8.3-apache`, `6-php8.3-apache`, `php8.3-apache`, `6.8.3-php8.3`, `6.8-php8.3`, `6-php8.3`, `php8.3`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.3/apache/Dockerfile) + +- [`6.8.3-fpm`, `6.8-fpm`, `6-fpm`, `fpm`, `6.8.3-php8.3-fpm`, `6.8-php8.3-fpm`, `6-php8.3-fpm`, `php8.3-fpm`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.3/fpm/Dockerfile) + +- [`6.8.3-fpm-alpine`, `6.8-fpm-alpine`, `6-fpm-alpine`, `fpm-alpine`, `6.8.3-php8.3-fpm-alpine`, `6.8-php8.3-fpm-alpine`, `6-php8.3-fpm-alpine`, `php8.3-fpm-alpine`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.3/fpm-alpine/Dockerfile) + +- [`6.8.3-php8.4-apache`, `6.8-php8.4-apache`, `6-php8.4-apache`, `php8.4-apache`, `6.8.3-php8.4`, `6.8-php8.4`, `6-php8.4`, `php8.4`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.4/apache/Dockerfile) + +- [`6.8.3-php8.4-fpm`, `6.8-php8.4-fpm`, `6-php8.4-fpm`, `php8.4-fpm`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.4/fpm/Dockerfile) + +- [`6.8.3-php8.4-fpm-alpine`, `6.8-php8.4-fpm-alpine`, `6-php8.4-fpm-alpine`, `php8.4-fpm-alpine`](https://github.com/docker-library/wordpress/blob/f143dd4b24dcefc3b633e4a10ed3534d92b91c23/latest/php8.4/fpm-alpine/Dockerfile) + +- [`cli-2.12.0-php8.1`, `cli-2.12-php8.1`, `cli-2-php8.1`, `cli-php8.1`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.1/alpine/Dockerfile) + +- [`cli-2.12.0-php8.2`, `cli-2.12-php8.2`, `cli-2-php8.2`, `cli-php8.2`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.2/alpine/Dockerfile) + +- [`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`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.3/alpine/Dockerfile) + +- [`cli-2.12.0-php8.4`, `cli-2.12-php8.4`, `cli-2-php8.4`, `cli-php8.4`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.4/alpine/Dockerfile) + +- [`beta-6.9-RC1-php8.1-apache`, `beta-6.9-php8.1-apache`, `beta-6-php8.1-apache`, `beta-php8.1-apache`, `beta-6.9-RC1-php8.1`, `beta-6.9-php8.1`, `beta-6-php8.1`, `beta-php8.1`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.1/apache/Dockerfile) + +- [`beta-6.9-RC1-php8.1-fpm`, `beta-6.9-php8.1-fpm`, `beta-6-php8.1-fpm`, `beta-php8.1-fpm`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.1/fpm/Dockerfile) + +- [`beta-6.9-RC1-php8.1-fpm-alpine`, `beta-6.9-php8.1-fpm-alpine`, `beta-6-php8.1-fpm-alpine`, `beta-php8.1-fpm-alpine`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.1/fpm-alpine/Dockerfile) + +- [`beta-6.9-RC1-php8.2-apache`, `beta-6.9-php8.2-apache`, `beta-6-php8.2-apache`, `beta-php8.2-apache`, `beta-6.9-RC1-php8.2`, `beta-6.9-php8.2`, `beta-6-php8.2`, `beta-php8.2`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.2/apache/Dockerfile) + +- [`beta-6.9-RC1-php8.2-fpm`, `beta-6.9-php8.2-fpm`, `beta-6-php8.2-fpm`, `beta-php8.2-fpm`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.2/fpm/Dockerfile) + +- [`beta-6.9-RC1-php8.2-fpm-alpine`, `beta-6.9-php8.2-fpm-alpine`, `beta-6-php8.2-fpm-alpine`, `beta-php8.2-fpm-alpine`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.2/fpm-alpine/Dockerfile) + +- [`beta-6.9-RC1-apache`, `beta-6.9-apache`, `beta-6-apache`, `beta-apache`, `beta-6.9-RC1`, `beta-6.9`, `beta-6`, `beta`, `beta-6.9-RC1-php8.3-apache`, `beta-6.9-php8.3-apache`, `beta-6-php8.3-apache`, `beta-php8.3-apache`, `beta-6.9-RC1-php8.3`, `beta-6.9-php8.3`, `beta-6-php8.3`, `beta-php8.3`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.3/apache/Dockerfile) + +- [`beta-6.9-RC1-fpm`, `beta-6.9-fpm`, `beta-6-fpm`, `beta-fpm`, `beta-6.9-RC1-php8.3-fpm`, `beta-6.9-php8.3-fpm`, `beta-6-php8.3-fpm`, `beta-php8.3-fpm`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.3/fpm/Dockerfile) + +- [`beta-6.9-RC1-fpm-alpine`, `beta-6.9-fpm-alpine`, `beta-6-fpm-alpine`, `beta-fpm-alpine`, `beta-6.9-RC1-php8.3-fpm-alpine`, `beta-6.9-php8.3-fpm-alpine`, `beta-6-php8.3-fpm-alpine`, `beta-php8.3-fpm-alpine`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.3/fpm-alpine/Dockerfile) + +- [`beta-6.9-RC1-php8.4-apache`, `beta-6.9-php8.4-apache`, `beta-6-php8.4-apache`, `beta-php8.4-apache`, `beta-6.9-RC1-php8.4`, `beta-6.9-php8.4`, `beta-6-php8.4`, `beta-php8.4`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.4/apache/Dockerfile) + +- [`beta-6.9-RC1-php8.4-fpm`, `beta-6.9-php8.4-fpm`, `beta-6-php8.4-fpm`, `beta-php8.4-fpm`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.4/fpm/Dockerfile) + +- [`beta-6.9-RC1-php8.4-fpm-alpine`, `beta-6.9-php8.4-fpm-alpine`, `beta-6-php8.4-fpm-alpine`, `beta-php8.4-fpm-alpine`](https://github.com/docker-library/wordpress/blob/95f27645eab38bcdfb6ac8a532a614b778035a79/beta/php8.4/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/wordpress/issues](https://github.com/docker-library/wordpress/issues) + [https://github.com/docker-library/wordpress/issues](https://github.com/docker-library/wordpress/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/wordpress/), [`arm32v5`](https://hub.docker.com/r/arm32v5/wordpress/), [`arm32v6`](https://hub.docker.com/r/arm32v6/wordpress/), [`arm32v7`](https://hub.docker.com/r/arm32v7/wordpress/), [`arm64v8`](https://hub.docker.com/r/arm64v8/wordpress/), [`i386`](https://hub.docker.com/r/i386/wordpress/), [`mips64le`](https://hub.docker.com/r/mips64le/wordpress/), [`ppc64le`](https://hub.docker.com/r/ppc64le/wordpress/), [`s390x`](https://hub.docker.com/r/s390x/wordpress/) + [`amd64`](https://hub.docker.com/r/amd64/wordpress/), [`arm32v5`](https://hub.docker.com/r/arm32v5/wordpress/), [`arm32v6`](https://hub.docker.com/r/arm32v6/wordpress/), [`arm32v7`](https://hub.docker.com/r/arm32v7/wordpress/), [`arm64v8`](https://hub.docker.com/r/arm64v8/wordpress/), [`i386`](https://hub.docker.com/r/i386/wordpress/), [`ppc64le`](https://hub.docker.com/r/ppc64le/wordpress/), [`riscv64`](https://hub.docker.com/r/riscv64/wordpress/), [`s390x`](https://hub.docker.com/r/s390x/wordpress/) - **Published image artifact details**: [repo-info repo's `repos/wordpress/` directory](https://github.com/docker-library/repo-info/blob/master/repos/wordpress) ([history](https://github.com/docker-library/repo-info/commits/master/repos/wordpress)) @@ -79,7 +122,7 @@ The following environment variables are also honored for configuring your WordPr - `-e WORDPRESS_TABLE_PREFIX=...` - `-e WORDPRESS_AUTH_KEY=...`, `-e WORDPRESS_SECURE_AUTH_KEY=...`, `-e WORDPRESS_LOGGED_IN_KEY=...`, `-e WORDPRESS_NONCE_KEY=...`, `-e WORDPRESS_AUTH_SALT=...`, `-e WORDPRESS_SECURE_AUTH_SALT=...`, `-e WORDPRESS_LOGGED_IN_SALT=...`, `-e WORDPRESS_NONCE_SALT=...` (default to unique random SHA1s, but only if other environment variable configuration is provided) - `-e WORDPRESS_DEBUG=1` (defaults to disabled, non-empty value will enable `WP_DEBUG` in `wp-config.php`) -- `-e WORDPRESS_CONFIG_EXTRA=...` (defaults to nothing, non-empty value will be embedded verbatim inside `wp-config.php` -- especially useful for applying extra configuration values this image does not provide by default such as `WP_ALLOW_MULTISITE`; see [docker-library/wordpress#142](https://github.com/docker-library/wordpress/pull/142) for more details) +- `-e WORDPRESS_CONFIG_EXTRA=...` (defaults to nothing, the value will be evaluated by the `eval()` function in `wp-config.php`. This variable is especially useful for applying extra configuration values this image does not provide by default such as `WP_ALLOW_MULTISITE`; see [docker-library/wordpress#142](https://github.com/docker-library/wordpress/pull/142) for more details) The `WORDPRESS_DB_NAME` needs to already exist on the given MySQL server; it will not be created by the `wordpress` container. @@ -105,13 +148,11 @@ $ docker run --name some-wordpress -e WORDPRESS_DB_PASSWORD_FILE=/run/secrets/my Currently, this is supported for `WORDPRESS_DB_HOST`, `WORDPRESS_DB_USER`, `WORDPRESS_DB_PASSWORD`, `WORDPRESS_DB_NAME`, `WORDPRESS_AUTH_KEY`, `WORDPRESS_SECURE_AUTH_KEY`, `WORDPRESS_LOGGED_IN_KEY`, `WORDPRESS_NONCE_KEY`, `WORDPRESS_AUTH_SALT`, `WORDPRESS_SECURE_AUTH_SALT`, `WORDPRESS_LOGGED_IN_SALT`, `WORDPRESS_NONCE_SALT`, `WORDPRESS_TABLE_PREFIX`, and `WORDPRESS_DEBUG`. -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `wordpress`: +Example `compose.yaml` for `wordpress`: ```yaml -version: '3.1' - services: wordpress: @@ -128,7 +169,7 @@ services: - wordpress:/var/www/html db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_DATABASE: exampledb @@ -143,9 +184,7 @@ volumes: db: ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/456252a739783650c79bd1f6a7a19101fbecfc65/wordpress/stack.yml) - -Run `docker stack deploy -c stack.yml wordpress` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Adding additional libraries / extensions @@ -224,15 +263,15 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `wordpress:-fpm` -This variant contains PHP-FPM, which is a FastCGI implementation for PHP. See [the PHP-FPM website](https://php-fpm.org/) for more information about PHP-FPM. +This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP. In order to use this image variant, some kind of reverse proxy (such as NGINX, Apache, or other tool which speaks the FastCGI protocol) will be required. Some potentially helpful resources: -- [PHP-FPM.org](https://php-fpm.org/) -- [simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) -- [very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) +- [FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php) +- [Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) +- [Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) diff --git a/wordpress/stack.yml b/wordpress/compose.yaml similarity index 93% rename from wordpress/stack.yml rename to wordpress/compose.yaml index 68198d1ed648..3fac6b715464 100644 --- a/wordpress/stack.yml +++ b/wordpress/compose.yaml @@ -1,5 +1,3 @@ -version: '3.1' - services: wordpress: @@ -16,7 +14,7 @@ services: - wordpress:/var/www/html db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_DATABASE: exampledb diff --git a/wordpress/content.md b/wordpress/content.md index 3f60fe112d1c..2559aad5836e 100644 --- a/wordpress/content.md +++ b/wordpress/content.md @@ -21,7 +21,7 @@ The following environment variables are also honored for configuring your WordPr - `-e WORDPRESS_TABLE_PREFIX=...` - `-e WORDPRESS_AUTH_KEY=...`, `-e WORDPRESS_SECURE_AUTH_KEY=...`, `-e WORDPRESS_LOGGED_IN_KEY=...`, `-e WORDPRESS_NONCE_KEY=...`, `-e WORDPRESS_AUTH_SALT=...`, `-e WORDPRESS_SECURE_AUTH_SALT=...`, `-e WORDPRESS_LOGGED_IN_SALT=...`, `-e WORDPRESS_NONCE_SALT=...` (default to unique random SHA1s, but only if other environment variable configuration is provided) - `-e WORDPRESS_DEBUG=1` (defaults to disabled, non-empty value will enable `WP_DEBUG` in `wp-config.php`) -- `-e WORDPRESS_CONFIG_EXTRA=...` (defaults to nothing, non-empty value will be embedded verbatim inside `wp-config.php` -- especially useful for applying extra configuration values this image does not provide by default such as `WP_ALLOW_MULTISITE`; see [docker-library/wordpress#142](https://github.com/docker-library/wordpress/pull/142) for more details) +- `-e WORDPRESS_CONFIG_EXTRA=...` (defaults to nothing, the value will be evaluated by the `eval()` function in `wp-config.php`. This variable is especially useful for applying extra configuration values this image does not provide by default such as `WP_ALLOW_MULTISITE`; see [docker-library/wordpress#142](https://github.com/docker-library/wordpress/pull/142) for more details) The `WORDPRESS_DB_NAME` needs to already exist on the given MySQL server; it will not be created by the `%%REPO%%` container. @@ -47,9 +47,9 @@ $ docker run --name some-%%REPO%% -e WORDPRESS_DB_PASSWORD_FILE=/run/secrets/mys Currently, this is supported for `WORDPRESS_DB_HOST`, `WORDPRESS_DB_USER`, `WORDPRESS_DB_PASSWORD`, `WORDPRESS_DB_NAME`, `WORDPRESS_AUTH_KEY`, `WORDPRESS_SECURE_AUTH_KEY`, `WORDPRESS_LOGGED_IN_KEY`, `WORDPRESS_NONCE_KEY`, `WORDPRESS_AUTH_SALT`, `WORDPRESS_SECURE_AUTH_SALT`, `WORDPRESS_LOGGED_IN_SALT`, `WORDPRESS_NONCE_SALT`, `WORDPRESS_TABLE_PREFIX`, and `WORDPRESS_DEBUG`. -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080`, `http://localhost:8080`, or `http://host-ip:8080` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate). ## Adding additional libraries / extensions diff --git a/wordpress/metadata.json b/wordpress/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/wordpress/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/xwiki/README.md b/xwiki/README.md index eabbdcf4c373..062dbd9b21db 100644 --- a/xwiki/README.md +++ b/xwiki/README.md @@ -24,15 +24,23 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`14`, `14.10`, `14.10.3`, `14-mysql-tomcat`, `14.10-mysql-tomcat`, `14.10.3-mysql-tomcat`, `mysql-tomcat`, `stable-mysql-tomcat`, `stable-mysql`, `stable`, `latest`, `lts-mysql-tomcat`, `lts-mysql`, `lts`](https://github.com/xwiki-contrib/docker-xwiki/blob/572e93824b7c86ad545db1460c70fca7c9203e4a/14/mysql-tomcat/Dockerfile) -- [`14-postgres-tomcat`, `14.10-postgres-tomcat`, `14.10.3-postgres-tomcat`, `postgres-tomcat`, `stable-postgres-tomcat`, `stable-postgres`, `lts-postgres-tomcat`, `lts-postgres`](https://github.com/xwiki-contrib/docker-xwiki/blob/572e93824b7c86ad545db1460c70fca7c9203e4a/14/postgres-tomcat/Dockerfile) -- [`14-mariadb-tomcat`, `14.10-mariadb-tomcat`, `14.10.3-mariadb-tomcat`, `mariadb-tomcat`, `stable-mariadb-tomcat`, `stable-mariadb`, `lts-mariadb-tomcat`, `lts-mariadb`](https://github.com/xwiki-contrib/docker-xwiki/blob/572e93824b7c86ad545db1460c70fca7c9203e4a/14/mariadb-tomcat/Dockerfile) -- [`14.4`, `14.4.7`, `14.4-mysql-tomcat`, `14.4.7-mysql-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/2afb800f554f08f7ada9b1ab09f9140fca737177/14.4/mysql-tomcat/Dockerfile) -- [`14.4-postgres-tomcat`, `14.4.7-postgres-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/2afb800f554f08f7ada9b1ab09f9140fca737177/14.4/postgres-tomcat/Dockerfile) -- [`14.4-mariadb-tomcat`, `14.4.7-mariadb-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/2afb800f554f08f7ada9b1ab09f9140fca737177/14.4/mariadb-tomcat/Dockerfile) -- [`13`, `13.10`, `13.10.11`, `13-mysql-tomcat`, `13.10-mysql-tomcat`, `13.10.11-mysql-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/cd1487dfd967742d686a60f48f07e984b8f263a3/13/mysql-tomcat/Dockerfile) -- [`13-postgres-tomcat`, `13.10-postgres-tomcat`, `13.10.11-postgres-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/cd1487dfd967742d686a60f48f07e984b8f263a3/13/postgres-tomcat/Dockerfile) -- [`13-mariadb-tomcat`, `13.10-mariadb-tomcat`, `13.10.11-mariadb-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/cd1487dfd967742d686a60f48f07e984b8f263a3/13/mariadb-tomcat/Dockerfile) +- [`17`, `17.9`, `17.9.0`, `17-mysql-tomcat`, `17.9-mysql-tomcat`, `17.9.0-mysql-tomcat`, `mysql-tomcat`, `stable-mysql-tomcat`, `stable-mysql`, `stable`, `latest`](https://github.com/xwiki-contrib/docker-xwiki/blob/0e8c29920c8f4853e4cb8152f9a3d04e0b164abb/17/mysql-tomcat/Dockerfile) + +- [`17-postgres-tomcat`, `17.9-postgres-tomcat`, `17.9.0-postgres-tomcat`, `postgres-tomcat`, `stable-postgres-tomcat`, `stable-postgres`](https://github.com/xwiki-contrib/docker-xwiki/blob/0e8c29920c8f4853e4cb8152f9a3d04e0b164abb/17/postgres-tomcat/Dockerfile) + +- [`17-mariadb-tomcat`, `17.9-mariadb-tomcat`, `17.9.0-mariadb-tomcat`, `mariadb-tomcat`, `stable-mariadb-tomcat`, `stable-mariadb`](https://github.com/xwiki-contrib/docker-xwiki/blob/0e8c29920c8f4853e4cb8152f9a3d04e0b164abb/17/mariadb-tomcat/Dockerfile) + +- [`17.4`, `17.4.7`, `17.4-mysql-tomcat`, `17.4.7-mysql-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/f5b8a93c46ec436d3540c59f64ad0b7488cdc413/17.4/mysql-tomcat/Dockerfile) + +- [`17.4-postgres-tomcat`, `17.4.7-postgres-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/f5b8a93c46ec436d3540c59f64ad0b7488cdc413/17.4/postgres-tomcat/Dockerfile) + +- [`17.4-mariadb-tomcat`, `17.4.7-mariadb-tomcat`](https://github.com/xwiki-contrib/docker-xwiki/blob/f5b8a93c46ec436d3540c59f64ad0b7488cdc413/17.4/mariadb-tomcat/Dockerfile) + +- [`16`, `16.10`, `16.10.14`, `16-mysql-tomcat`, `16.10-mysql-tomcat`, `16.10.14-mysql-tomcat`, `lts-mysql-tomcat`, `lts-mysql`, `lts`](https://github.com/xwiki-contrib/docker-xwiki/blob/62a954917dc052a551a79ffb0cc2b5397fa0c4ea/16/mysql-tomcat/Dockerfile) + +- [`16-postgres-tomcat`, `16.10-postgres-tomcat`, `16.10.14-postgres-tomcat`, `lts-postgres-tomcat`, `lts-postgres`](https://github.com/xwiki-contrib/docker-xwiki/blob/62a954917dc052a551a79ffb0cc2b5397fa0c4ea/16/postgres-tomcat/Dockerfile) + +- [`16-mariadb-tomcat`, `16.10-mariadb-tomcat`, `16.10.14-mariadb-tomcat`, `lts-mariadb-tomcat`, `lts-mariadb`](https://github.com/xwiki-contrib/docker-xwiki/blob/62a954917dc052a551a79ffb0cc2b5397fa0c4ea/16/mariadb-tomcat/Dockerfile) # Quick reference (cont.) diff --git a/xwiki/metadata.json b/xwiki/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/xwiki/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/ymlfmt.sh b/ymlfmt.sh index a83bbeb4c2d9..8ab8b937ba1a 100755 --- a/ymlfmt.sh +++ b/ymlfmt.sh @@ -1,4 +1,4 @@ -#!/bin/bash +#!/usr/bin/env bash set -e exec docker run -i --rm -v "$PWD":/scratch -w /scratch -u "$(id -u):$(id -g)" tianon/ymlfmt ymlfmt "$@" diff --git a/yourls/README.md b/yourls/README.md index bb82dc0d2e08..712f2dd1c438 100644 --- a/yourls/README.md +++ b/yourls/README.md @@ -17,24 +17,26 @@ WARNING: # Quick reference - **Maintained by**: - [YOURLS](https://github.com/YOURLS/docker) + [YOURLS](https://github.com/YOURLS/containers) - **Where to get help**: [the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic) # Supported tags and respective `Dockerfile` links -- [`1.9.1-apache`, `1.9-apache`, `1-apache`, `apache`, `1.9.1`, `1.9`, `1`, `latest`](https://github.com/YOURLS/docker/blob/38f550a34a4eb96419d9d3ebabe802c439103218/apache/Dockerfile) -- [`1.9.1-fpm`, `1.9-fpm`, `1-fpm`, `fpm`](https://github.com/YOURLS/docker/blob/38f550a34a4eb96419d9d3ebabe802c439103218/fpm/Dockerfile) -- [`1.9.1-fpm-alpine`, `1.9-fpm-alpine`, `1-fpm-alpine`, `fpm-alpine`](https://github.com/YOURLS/docker/blob/38f550a34a4eb96419d9d3ebabe802c439103218/fpm-alpine/Dockerfile) +- [`1.10.2-apache`, `1.10-apache`, `1-apache`, `apache`, `1.10.2`, `1.10`, `1`, `latest`](https://github.com/YOURLS/containers/blob/b3463cd1fe9b9de202a2a220d1ffa502e791ede8/apache/Dockerfile) + +- [`1.10.2-fpm`, `1.10-fpm`, `1-fpm`, `fpm`](https://github.com/YOURLS/containers/blob/b3463cd1fe9b9de202a2a220d1ffa502e791ede8/fpm/Dockerfile) + +- [`1.10.2-fpm-alpine`, `1.10-fpm-alpine`, `1-fpm-alpine`, `fpm-alpine`](https://github.com/YOURLS/containers/blob/b3463cd1fe9b9de202a2a220d1ffa502e791ede8/fpm-alpine/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/YOURLS/docker/issues](https://github.com/YOURLS/docker/issues) + [https://github.com/YOURLS/containers/issues](https://github.com/YOURLS/containers/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/yourls/), [`arm32v5`](https://hub.docker.com/r/arm32v5/yourls/), [`arm32v6`](https://hub.docker.com/r/arm32v6/yourls/), [`arm32v7`](https://hub.docker.com/r/arm32v7/yourls/), [`arm64v8`](https://hub.docker.com/r/arm64v8/yourls/), [`i386`](https://hub.docker.com/r/i386/yourls/), [`mips64le`](https://hub.docker.com/r/mips64le/yourls/), [`ppc64le`](https://hub.docker.com/r/ppc64le/yourls/), [`s390x`](https://hub.docker.com/r/s390x/yourls/) + [`amd64`](https://hub.docker.com/r/amd64/yourls/), [`arm32v5`](https://hub.docker.com/r/arm32v5/yourls/), [`arm32v6`](https://hub.docker.com/r/arm32v6/yourls/), [`arm32v7`](https://hub.docker.com/r/arm32v7/yourls/), [`arm64v8`](https://hub.docker.com/r/arm64v8/yourls/), [`i386`](https://hub.docker.com/r/i386/yourls/), [`ppc64le`](https://hub.docker.com/r/ppc64le/yourls/), [`riscv64`](https://hub.docker.com/r/riscv64/yourls/), [`s390x`](https://hub.docker.com/r/s390x/yourls/) - **Published image artifact details**: [repo-info repo's `repos/yourls/` directory](https://github.com/docker-library/repo-info/blob/master/repos/yourls) ([history](https://github.com/docker-library/repo-info/commits/master/repos/yourls)) @@ -59,29 +61,42 @@ YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener ## Start a `yourls` server instance -```console -$ docker run --name some-yourls --link some-mysql:mysql \ - -e YOURLS_SITE="https://example.com" \ - -e YOURLS_USER="example_username" \ - -e YOURLS_PASS="example_password" \ - -d yourls +```bash +docker run \ + --name some-yourls \ + --detach \ + --network some-network \ + --env YOURLS_SITE="https://example.com" \ + --env YOURLS_USER="example_username" \ + --env YOURLS_PASS="example_password" \ + yourls ``` The YOURLS instance accepts a number of environment variables for configuration, see *Environment Variables* section below. -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `YOURLS_DB_HOST` along with the password in `YOURLS_DB_PASS` and the username in `YOURLS_DB_USER` (if it is something other than `root`): +If you'd like to use an external database instead of a `mysql` container, specify the hostname and port with `YOURLS_DB_HOST` along with the password in `YOURLS_DB_PASS` and the username in `YOURLS_DB_USER` (if it is something other than `root`): -```console -$ docker run --name some-yourlss -e YOURLS_DB_HOST=10.1.2.3:3306 \ - -e YOURLS_DB_USER=... -e YOURLS_DB_PASS=... -d yourls +```bash +docker run \ + --name some-yourls \ + --detach \ + --env YOURLS_DB_HOST=... \ + --env YOURLS_DB_USER=... \ + --env YOURLS_DB_PASS=... \ + yourls ``` ## Connect to the YOURLS administration interface If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: -```console -$ docker run --name some-yourls --link some-mysql:mysql -p 8080:80 -d yourls +```bash +docker run \ + --name some-yourls \ + --detach \ + --network some-network \ + --publish 8080:8080 \ + yourls ``` Then, access it via `http://localhost:8080/admin/` or `http://:8080/admin/` in a browser. @@ -90,8 +105,8 @@ Then, access it via `http://localhost:8080/admin/` or `http://:8080/adm ## Environment Variables -When you start the `yourls` image, you can adjust the configuration of the YOURLS instance by passing one or more environment variables on the `docker run` command line. -The YOURLS instance accepts [a number of environment variables for configuration](https://yourls.org/#Config). +When you start the `yourls` image, you can adjust the configuration of the YOURLS instance by passing one or more environment variables on the `docker run` command-line. +The YOURLS instance accepts [a number of environment variables for configuration](https://yourls.org/docs/guide/essentials/configuration). A few notable/important examples for using this Docker image include the following. ### `YOURLS_SITE` @@ -135,43 +150,46 @@ Database tables prefix, defaults to `yourls_`. Only set this when you need to ov As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: -```console -$ docker run --name some-yourls -e YOURLS_DB_PASS_FILE=/run/secrets/mysql-root ... -d yourls:tag +```bash +docker run \ + --name some-yourls \ + --detach \ + --env YOURLS_DB_PASS_FILE=/run/secrets/mysql-root \ + yourls ``` Currently, this is supported for `YOURLS_DB_HOST`, `YOURLS_DB_USER`, `YOURLS_DB_PASS`, `YOURLS_DB_NAME`, `YOURLS_DB_PREFIX`, `YOURLS_SITE`, `YOURLS_USER`, and `YOURLS_PASS`. -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `yourls`: +Example `compose.yaml` for `yourls`: ```yaml -version: '3.1' - +name: yourls services: - yourls: image: yourls restart: always + depends_on: + - mysql ports: - - 8080:80 + - 8080:8080 environment: YOURLS_DB_PASS: example YOURLS_SITE: https://example.com YOURLS_USER: example_username YOURLS_PASS: example_password - mysql: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: yourls + volumes: + - db:/var/lib/mysql ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/6dba1507190ff91149046ce4bcbac43529d76bd4/yourls/stack.yml) - -Run `docker stack deploy -c stack.yml yourls` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080/admin/`, `http://localhost:8080/admin/`, or `http://:8080/admin/` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080/admin/`, or `http://:8080/admin/` (as appropriate). ## Adding additional libraries / extensions @@ -179,9 +197,15 @@ This image does not provide any additional PHP extensions or other libraries, ev If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. -The following Docker Hub features can help with the task of keeping your dependent images up-to-date: +## Include persistent user-content + +Mount the volume containing your plugins, pages or languages to the proper directory; and then apply them through the "admin" UI. Ensure read/write/execute permissions are in place for the user: + +- Plugins go in a subdirectory in `/var/www/html/user/plugins/` +- Pages go in a subdirectory in `/var/www/html/user/pages/` +- Languages go in a subdirectory in `/var/www/html/user/languages/` -- [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it. +If you wish to provide additional content in an image for deploying in multiple installations, place it in the same directories under `/usr/src/yourls/` instead (which gets copied to `/var/www/html/` on the container's initial startup). # Image Variants @@ -193,15 +217,15 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `yourls:-fpm` -This variant contains PHP-FPM, which is a FastCGI implementation for PHP. See [the PHP-FPM website](https://php-fpm.org/) for more information about PHP-FPM. +This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP. In order to use this image variant, some kind of reverse proxy (such as NGINX, Apache, or other tool which speaks the FastCGI protocol) will be required. Some potentially helpful resources: -- [PHP-FPM.org](https://php-fpm.org/) -- [simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) -- [very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) +- [FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php) +- [Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0) +- [Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/) - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) diff --git a/yourls/stack.yml b/yourls/compose.yaml similarity index 77% rename from yourls/stack.yml rename to yourls/compose.yaml index 2c467f98effd..f07816e8285e 100644 --- a/yourls/stack.yml +++ b/yourls/compose.yaml @@ -1,21 +1,22 @@ -version: '3.1' - +name: yourls services: - yourls: image: yourls restart: always + depends_on: + - mysql ports: - - 8080:80 + - 8080:8080 environment: YOURLS_DB_PASS: example YOURLS_SITE: https://example.com YOURLS_USER: example_username YOURLS_PASS: example_password - mysql: image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: example MYSQL_DATABASE: yourls + volumes: + - db:/var/lib/mysql diff --git a/yourls/content.md b/yourls/content.md index 404ab6d96da2..541bd27aa006 100644 --- a/yourls/content.md +++ b/yourls/content.md @@ -10,29 +10,42 @@ YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener ## Start a `%%IMAGE%%` server instance -```console -$ docker run --name some-%%REPO%% --link some-mysql:mysql \ - -e YOURLS_SITE="https://example.com" \ - -e YOURLS_USER="example_username" \ - -e YOURLS_PASS="example_password" \ - -d %%IMAGE%% +```bash +docker run \ + --name some-%%REPO%% \ + --detach \ + --network some-network \ + --env YOURLS_SITE="https://example.com" \ + --env YOURLS_USER="example_username" \ + --env YOURLS_PASS="example_password" \ + %%IMAGE%% ``` The YOURLS instance accepts a number of environment variables for configuration, see *Environment Variables* section below. -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `YOURLS_DB_HOST` along with the password in `YOURLS_DB_PASS` and the username in `YOURLS_DB_USER` (if it is something other than `root`): +If you'd like to use an external database instead of a `mysql` container, specify the hostname and port with `YOURLS_DB_HOST` along with the password in `YOURLS_DB_PASS` and the username in `YOURLS_DB_USER` (if it is something other than `root`): -```console -$ docker run --name some-%%REPO%%s -e YOURLS_DB_HOST=10.1.2.3:3306 \ - -e YOURLS_DB_USER=... -e YOURLS_DB_PASS=... -d %%IMAGE%% +```bash +docker run \ + --name some-%%REPO%% \ + --detach \ + --env YOURLS_DB_HOST=... \ + --env YOURLS_DB_USER=... \ + --env YOURLS_DB_PASS=... \ + %%IMAGE%% ``` ## Connect to the YOURLS administration interface If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used: -```console -$ docker run --name some-%%REPO%% --link some-mysql:mysql -p 8080:80 -d %%IMAGE%% +```bash +docker run \ + --name some-%%REPO%% \ + --detach \ + --network some-network \ + --publish 8080:8080 \ + %%IMAGE%% ``` Then, access it via `http://localhost:8080/admin/` or `http://:8080/admin/` in a browser. @@ -41,8 +54,8 @@ Then, access it via `http://localhost:8080/admin/` or `http://:8080/adm ## Environment Variables -When you start the `yourls` image, you can adjust the configuration of the YOURLS instance by passing one or more environment variables on the `docker run` command line. -The YOURLS instance accepts [a number of environment variables for configuration](https://yourls.org/#Config). +When you start the `yourls` image, you can adjust the configuration of the YOURLS instance by passing one or more environment variables on the `docker run` command-line. +The YOURLS instance accepts [a number of environment variables for configuration](https://yourls.org/docs/guide/essentials/configuration). A few notable/important examples for using this Docker image include the following. ### `YOURLS_SITE` @@ -86,15 +99,19 @@ Database tables prefix, defaults to `yourls_`. Only set this when you need to ov As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/` files. For example: -```console -$ docker run --name some-%%REPO%% -e YOURLS_DB_PASS_FILE=/run/secrets/mysql-root ... -d %%IMAGE%%:tag +```bash +docker run \ + --name some-%%REPO%% \ + --detach \ + --env YOURLS_DB_PASS_FILE=/run/secrets/mysql-root \ + %%IMAGE%% ``` Currently, this is supported for `YOURLS_DB_HOST`, `YOURLS_DB_USER`, `YOURLS_DB_PASS`, `YOURLS_DB_NAME`, `YOURLS_DB_PREFIX`, `YOURLS_SITE`, `YOURLS_USER`, and `YOURLS_PASS`. -## %%STACK%% +## %%COMPOSE%% -Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`), wait for it to initialize completely, and visit `http://swarm-ip:8080/admin/`, `http://localhost:8080/admin/`, or `http://:8080/admin/` (as appropriate). +Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080/admin/`, or `http://:8080/admin/` (as appropriate). ## Adding additional libraries / extensions @@ -102,6 +119,12 @@ This image does not provide any additional PHP extensions or other libraries, ev If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. -The following Docker Hub features can help with the task of keeping your dependent images up-to-date: +## Include persistent user-content -- [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it. +Mount the volume containing your plugins, pages or languages to the proper directory; and then apply them through the "admin" UI. Ensure read/write/execute permissions are in place for the user: + +- Plugins go in a subdirectory in `/var/www/html/user/plugins/` +- Pages go in a subdirectory in `/var/www/html/user/pages/` +- Languages go in a subdirectory in `/var/www/html/user/languages/` + +If you wish to provide additional content in an image for deploying in multiple installations, place it in the same directories under `/usr/src/yourls/` instead (which gets copied to `/var/www/html/` on the container's initial startup). diff --git a/yourls/github-repo b/yourls/github-repo index 8f03e3682b1e..291559eac2d3 100644 --- a/yourls/github-repo +++ b/yourls/github-repo @@ -1 +1 @@ -https://github.com/YOURLS/docker +https://github.com/YOURLS/containers diff --git a/yourls/metadata.json b/yourls/metadata.json new file mode 100644 index 000000000000..180157012a86 --- /dev/null +++ b/yourls/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "content-management-system" + ] + } +} diff --git a/znc/README.md b/znc/README.md index 91fb9aebe8e0..53918f4c6628 100644 --- a/znc/README.md +++ b/znc/README.md @@ -24,13 +24,14 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`1.8.2`, `1.8`, `latest`](https://github.com/znc/znc-docker/blob/d5bb727806f238f95bc74fcc182042932cd60c11/full/Dockerfile) -- [`1.8.2-slim`, `1.8-slim`, `slim`](https://github.com/znc/znc-docker/blob/d5bb727806f238f95bc74fcc182042932cd60c11/slim/Dockerfile) +- [`1.10.1`, `1.10`, `latest`](https://github.com/znc/znc-docker/blob/079544b1c9bfefeed964c7b35b49222ca05cb018/full/Dockerfile) + +- [`1.10.1-slim`, `1.10-slim`, `slim`](https://github.com/znc/znc-docker/blob/079544b1c9bfefeed964c7b35b49222ca05cb018/slim/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/znc/znc-docker/issues](https://github.com/znc/znc-docker/issues) + [https://github.com/znc/znc-docker/issues](https://github.com/znc/znc-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/znc/), [`arm32v6`](https://hub.docker.com/r/arm32v6/znc/), [`arm64v8`](https://hub.docker.com/r/arm64v8/znc/) diff --git a/znc/metadata.json b/znc/metadata.json new file mode 100644 index 000000000000..e90624aca4ca --- /dev/null +++ b/znc/metadata.json @@ -0,0 +1,5 @@ +{ + "hub": { + "categories": [] + } +} diff --git a/zookeeper/README.md b/zookeeper/README.md index 0e92437ec62e..bc0846ed9a71 100644 --- a/zookeeper/README.md +++ b/zookeeper/README.md @@ -24,22 +24,17 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`3.5.9`, `3.5`](https://github.com/31z4/zookeeper-docker/blob/060f64d28d1780373f90ac152bd2538abcf1924c/3.5.9/Dockerfile) -- [`3.5.9-temurin`, `3.5-temurin`](https://github.com/31z4/zookeeper-docker/blob/5cf119d9c5d61024fdba66f7be707413513a8b0d/3.5.9/Dockerfile) -- [`3.6.3`, `3.6`](https://github.com/31z4/zookeeper-docker/blob/060f64d28d1780373f90ac152bd2538abcf1924c/3.6.3/Dockerfile) -- [`3.6.3-temurin`, `3.6-temurin`](https://github.com/31z4/zookeeper-docker/blob/5cf119d9c5d61024fdba66f7be707413513a8b0d/3.6.3/Dockerfile) -- [`3.7.1`, `3.7`](https://github.com/31z4/zookeeper-docker/blob/060f64d28d1780373f90ac152bd2538abcf1924c/3.7.1/Dockerfile) -- [`3.7.1-temurin`, `3.7-temurin`](https://github.com/31z4/zookeeper-docker/blob/5cf119d9c5d61024fdba66f7be707413513a8b0d/3.7.1/Dockerfile) -- [`3.8.0`, `3.8`](https://github.com/31z4/zookeeper-docker/blob/060f64d28d1780373f90ac152bd2538abcf1924c/3.8.0/Dockerfile) -- [`3.8.0-temurin`, `3.8-temurin`, `latest`](https://github.com/31z4/zookeeper-docker/blob/5cf119d9c5d61024fdba66f7be707413513a8b0d/3.8.0/Dockerfile) +- [`3.8.4`, `3.8`, `3.8.4-jre-17`, `3.8-jre-17`](https://github.com/31z4/zookeeper-docker/blob/ec1050affd761a7886c1f1f5d18165c19d3143e8/3.8.4/Dockerfile) + +- [`3.9.4`, `3.9`, `3.9.4-jre-17`, `3.9-jre-17`, `latest`](https://github.com/31z4/zookeeper-docker/blob/c56b077b4858f22bfc5014cfb3c570d78c56a71d/3.9.4/Dockerfile) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/31z4/zookeeper-docker/issues](https://github.com/31z4/zookeeper-docker/issues) + [https://github.com/31z4/zookeeper-docker/issues](https://github.com/31z4/zookeeper-docker/issues?q=) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/zookeeper/), [`arm64v8`](https://hub.docker.com/r/arm64v8/zookeeper/) + [`amd64`](https://hub.docker.com/r/amd64/zookeeper/), [`arm64v8`](https://hub.docker.com/r/arm64v8/zookeeper/), [`ppc64le`](https://hub.docker.com/r/ppc64le/zookeeper/), [`s390x`](https://hub.docker.com/r/s390x/zookeeper/) - **Published image artifact details**: [repo-info repo's `repos/zookeeper/` directory](https://github.com/docker-library/repo-info/blob/master/repos/zookeeper) ([history](https://github.com/docker-library/repo-info/commits/master/repos/zookeeper)) @@ -82,13 +77,11 @@ $ docker run --name some-app --link some-zookeeper:zookeeper -d application-that $ docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper ``` -## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) +## ... via [`docker compose`](https://github.com/docker/compose) -Example `stack.yml` for `zookeeper`: +Example `compose.yaml` for `zookeeper`: ```yaml -version: '3.1' - services: zoo1: image: zookeeper @@ -121,9 +114,7 @@ services: ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 ``` -[![Try in PWD](https://github.com/play-with-docker/stacks/raw/cff22438cb4195ace27f9b15784bbb497047afa7/assets/images/button.png)](http://play-with-docker.com?stack=https://raw.githubusercontent.com/docker-library/docs/fb51d93e6bb1e8b773a728d297a45b834f04d3d1/zookeeper/stack.yml) - -This will start Zookeeper in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Run `docker stack deploy -c stack.yml zookeeper` (or `docker-compose -f stack.yml up`) and wait for it to initialize completely. Ports `2181-2183` will be exposed. +This will start Zookeeper in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Run `docker compose up` and wait for it to initialize completely. Ports `2181-2183` will be exposed. > Please be aware that setting up multiple servers on a single machine will not create any redundancy. If something were to happen which caused the machine to die, all of the zookeeper servers would be offline. Full redundancy requires that each server have its own machine. It must be a completely separate physical server. Multiple virtual machines on the same physical host are still vulnerable to the complete failure of that host. @@ -245,15 +236,23 @@ This image is configured with volumes at `/data` and `/datalog` to hold the Zook ## How to configure logging -By default, ZooKeeper redirects stdout/stderr outputs to the console. You can redirect to a file located in `/logs` by passing environment variable `ZOO_LOG4J_PROP` as follows: +By default, ZooKeeper redirects stdout/stderr outputs to the console. Since 3.8 ZooKeeper is shipped with [LOGBack](https://logback.qos.ch/) as the logging backend. The ZooKeeper default `logback.xml` file resides in the `/conf` directory. To override default logging configuration mount your custom config as a volume: ```console -$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" zookeeper +$ docker run --name some-zookeeper --restart always -d -v $(pwd)/logback.xml:/conf/logback.xml zookeeper ``` -This will write logs to `/logs/zookeeper.log`. Check [ZooKeeper Logging](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_logging) for more details. +Check [ZooKeeper Logging](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_logging) for more details. + +### Logging in 3.7 + +You can redirect to a file located in `/logs` by passing environment variable `ZOO_LOG4J_PROP` as follows: + +```console +$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" zookeeper +``` -This image is configured with a volume at `/logs` for your convenience. +This will write logs to `/logs/zookeeper.log`. This image is configured with a volume at `/logs` for your convenience. # License diff --git a/zookeeper/stack.yml b/zookeeper/compose.yaml similarity index 97% rename from zookeeper/stack.yml rename to zookeeper/compose.yaml index cec88f0dce55..9cbbeb2085ab 100644 --- a/zookeeper/stack.yml +++ b/zookeeper/compose.yaml @@ -1,5 +1,3 @@ -version: '3.1' - services: zoo1: image: zookeeper diff --git a/zookeeper/content.md b/zookeeper/content.md index 96a332509060..c63bfee4b82c 100644 --- a/zookeeper/content.md +++ b/zookeeper/content.md @@ -28,9 +28,9 @@ $ docker run --name some-app --link some-zookeeper:zookeeper -d application-that $ docker run -it --rm --link some-zookeeper:zookeeper %%IMAGE%% zkCli.sh -server zookeeper ``` -## %%STACK%% +## %%COMPOSE%% -This will start Zookeeper in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml up`) and wait for it to initialize completely. Ports `2181-2183` will be exposed. +This will start Zookeeper in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Run `docker compose up` and wait for it to initialize completely. Ports `2181-2183` will be exposed. > Please be aware that setting up multiple servers on a single machine will not create any redundancy. If something were to happen which caused the machine to die, all of the zookeeper servers would be offline. Full redundancy requires that each server have its own machine. It must be a completely separate physical server. Multiple virtual machines on the same physical host are still vulnerable to the complete failure of that host. @@ -152,12 +152,20 @@ This image is configured with volumes at `/data` and `/datalog` to hold the Zook ## How to configure logging -By default, ZooKeeper redirects stdout/stderr outputs to the console. You can redirect to a file located in `/logs` by passing environment variable `ZOO_LOG4J_PROP` as follows: +By default, ZooKeeper redirects stdout/stderr outputs to the console. Since 3.8 ZooKeeper is shipped with [LOGBack](https://logback.qos.ch/) as the logging backend. The ZooKeeper default `logback.xml` file resides in the `/conf` directory. To override default logging configuration mount your custom config as a volume: ```console -$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" %%IMAGE%% +$ docker run --name some-zookeeper --restart always -d -v $(pwd)/logback.xml:/conf/logback.xml %%IMAGE%% ``` -This will write logs to `/logs/zookeeper.log`. Check [ZooKeeper Logging](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_logging) for more details. +Check [ZooKeeper Logging](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_logging) for more details. + +### Logging in 3.7 + +You can redirect to a file located in `/logs` by passing environment variable `ZOO_LOG4J_PROP` as follows: + +```console +$ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" %%IMAGE%% +``` -This image is configured with a volume at `/logs` for your convenience. +This will write logs to `/logs/zookeeper.log`. This image is configured with a volume at `/logs` for your convenience. diff --git a/zookeeper/metadata.json b/zookeeper/metadata.json new file mode 100644 index 000000000000..3d3937b21fb1 --- /dev/null +++ b/zookeeper/metadata.json @@ -0,0 +1,7 @@ +{ + "hub": { + "categories": [ + "databases-and-storage" + ] + } +}