diff --git a/.ci/check-pr-no-readme.sh b/.ci/check-pr-no-readme.sh index 6ffe4f25b03c..5f74c2c30ab5 100755 --- a/.ci/check-pr-no-readme.sh +++ b/.ci/check-pr-no-readme.sh @@ -4,11 +4,12 @@ set -Eeuo pipefail cd "$(dirname "$(readlink -f "$BASH_SOURCE")")/.." git fetch -q https://github.com/docker-library/docs.git master -if [ -n "$(git diff --numstat FETCH_HEAD...HEAD -- '*/README.md')" ]; then +numstat="$(git diff --numstat FETCH_HEAD...HEAD -- '*/README.md')" +if [ -n "$numstat" ]; then echo >&2 'Error: at least one repo README.md has changed' echo >&2 'These files are autogenerated, so it is unnecessary to modify them' echo >&2 'Please update content.md and docker-library-bot will take care of README.md' - echo >&2 'See: https://github.com/docker-library/docs/#image-namereadmemd' + echo >&2 'See: https://github.com/docker-library/docs/#readmemd' echo >&2 exit 1 fi diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 3c42274bd017..130d1c4e7cdc 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -1,5 +1,8 @@ name: GitHub CI +permissions: + contents: read + on: pull_request: push: @@ -16,28 +19,30 @@ jobs: markdownfmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: docker pull tianon/markdownfmt - run: .ci/check-markdownfmt.sh ymlfmt: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: docker pull tianon/ymlfmt - run: .ci/check-ymlfmt.sh short: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: .ci/check-short.sh required-files: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 - run: .ci/check-required-files.sh no-readme: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v2 + - uses: actions/checkout@v3 + with: + fetch-depth: 0 - run: .ci/check-pr-no-readme.sh if: ${{ github.event_name == 'pull_request' }} diff --git a/.template-helpers/generate-dockerfile-links-partial.tmpl b/.template-helpers/generate-dockerfile-links-partial.tmpl index 1426e00277e0..2889640fb4ce 100644 --- a/.template-helpers/generate-dockerfile-links-partial.tmpl +++ b/.template-helpers/generate-dockerfile-links-partial.tmpl @@ -21,22 +21,26 @@ This template defines the "Supported tags and Dockerfile links" portion of an im {{- $froms := $.ArchDockerFroms $arch $e -}} {{- $gitRepo := $e.ArchGitRepo $arch -}} + {{- $gitCommit := $e.ArchGitCommit $arch -}} + {{- $dir := .ArchDirectory $arch -}} + {{- $dockerfile := .ArchFile $arch -}} + {{- $dockerfilePath := eq $dir "." | ternary $dockerfile (join "/" $dir $dockerfile) -}} {{- $repoUrlBase := $gitRepo | replace "git://" "https://" | trimSuffixes ".git" -}} - {{- $isGitHub := hasPrefix "https://github.com/" $repoUrlBase -}} + {{- $url := hasPrefix "https://github.com/" $repoUrlBase | ternary (join "/" $repoUrlBase "blob" $gitCommit $dockerfilePath) "" -}} + {{- /* handle https://gitlab.../.../... style URLs (by reasonably assuming they're a gitlab instance) */ -}} + {{- $url = $url | ternary $url (hasPrefix "https://gitlab." $repoUrlBase | ternary (join "/" $repoUrlBase "-/blob" $gitCommit $dockerfilePath) "") -}} + {{- /* handle https://git.launchpad.net/ URLs */ -}} + {{- $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 $isGitHub -}} [ {{- end -}} - {{- $dir := .ArchDirectory $arch -}} - {{- $dockerfile := .ArchFile $arch -}} - {{- $dockerfilePath := eq $dir "." | ternary $dockerfile (join "/" $dir $dockerfile) -}} + {{- if $url -}} [ {{- end -}} ` {{- $e.Tags | join "`, `" -}} ` - {{- $gitCommit := $e.ArchGitCommit $arch -}} - {{- if $isGitHub -}} ]( {{- $repoUrlBase -}} /blob/ {{- $gitCommit -}} / {{- $dockerfilePath -}} ) {{- end -}} - {{- /* TODO decide what to do (if anything) about non-GitHub repos with respect to URL */ -}} + {{- if $url -}} ]( {{- $url -}} ) {{- end -}} {{- end -}} {{- "\n\n" -}} @@ -58,18 +62,22 @@ This template defines the "Supported tags and Dockerfile links" portion of an im {{- $froms := $.ArchDockerFroms $arch $e -}} {{- $gitRepo := $e.ArchGitRepo $arch -}} - {{- $repoUrlBase := $gitRepo | replace "git://" "https://" | trimSuffixes ".git" -}} - {{- $isGitHub := hasPrefix "https://github.com/" $repoUrlBase -}} - - {{- "\t-\t" -}} - {{- if $isGitHub -}} [ {{- end -}} + {{- $gitCommit := $e.ArchGitCommit $arch -}} {{- $dir := .ArchDirectory $arch -}} {{- $dockerfile := .ArchFile $arch -}} {{- $dockerfilePath := eq $dir "." | ternary $dockerfile (join "/" $dir $dockerfile) -}} + {{- $repoUrlBase := $gitRepo | replace "git://" "https://" | trimSuffixes ".git" -}} + {{- $url := hasPrefix "https://github.com/" $repoUrlBase | ternary (join "/" $repoUrlBase "blob" $gitCommit $dockerfilePath) "" -}} + {{- /* handle https://gitlab.../.../... style URLs (by reasonably assuming they're a gitlab instance) */ -}} + {{- $url = $url | ternary $url (hasPrefix "https://gitlab." $repoUrlBase | ternary (join "/" $repoUrlBase "-/blob" $gitCommit $dockerfilePath) "") -}} + {{- /* handle https://git.launchpad.net/ URLs */ -}} + {{- $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 */ -}} + + {{- "\t-\t" -}} + {{- if $url -}} [ {{- end -}} ` {{- $e.Tags | first -}} ` - {{- $gitCommit := $e.ArchGitCommit $arch -}} - {{- if $isGitHub -}} ]( {{- $repoUrlBase -}} /blob/ {{- $gitCommit -}} / {{- $dockerfilePath -}} ) {{- end -}} - {{- /* TODO decide what to do (if anything) about non-GitHub repos with respect to URL */ -}} + {{- if $url -}} ]( {{- $url -}} ) {{- end -}} {{- "\n" -}} {{- end -}} diff --git a/.template-helpers/get-help.md b/.template-helpers/get-help.md index b5896e3f2e7d..f9d0b5d2fecd 100644 --- a/.template-helpers/get-help.md +++ b/.template-helpers/get-help.md @@ -1 +1 @@ -[the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) +[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) diff --git a/.template-helpers/template.md b/.template-helpers/template.md index 987374943304..b2f9618678f9 100644 --- a/.template-helpers/template.md +++ b/.template-helpers/template.md @@ -23,7 +23,7 @@ (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/%%REPO%%`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2F%%REPO%%) + [official-images repo's `library/%%REPO%%` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2F%%REPO%%) [official-images repo's `library/%%REPO%%` file](https://github.com/docker-library/official-images/blob/master/library/%%REPO%%) ([history](https://github.com/docker-library/official-images/commits/master/library/%%REPO%%)) - **Source of this description**: diff --git a/.template-helpers/variant-alpine.md b/.template-helpers/variant-alpine.md index 5debddb77465..e04f87e1de5a 100644 --- a/.template-helpers/variant-alpine.md +++ b/.template-helpers/variant-alpine.md @@ -1,7 +1,7 @@ ## `%%IMAGE%%:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/.template-helpers/variant.sh b/.template-helpers/variant.sh index 79c88853241c..dd802ec5c82d 100755 --- a/.template-helpers/variant.sh +++ b/.template-helpers/variant.sh @@ -102,7 +102,7 @@ if [ -n "$text" ]; then default+=$'\n' # parameter expansion eats the trailing newline if [ "$repo" != 'debian' ] && [ "$repo" != 'ubuntu' ]; then - # what is 'jessie', 'stretch' and 'sid' + # what is 'bullseye', 'buster' and 'sid' # https://github.com/docker-library/python/issues/343 debian=( $(bashbrew list --uniq "$(_repo 'debian')" | grep -vE 'stable|slim|backports|experimental|testing' | cut -d: -f2) ) ubuntu=( $(bashbrew list "$(_repo 'ubuntu')" | grep -vE 'devel|latest|[0-9]' | cut -d: -f2) ) diff --git a/README.md b/README.md index 52fb627f70c3..fd46f6562c67 100644 --- a/README.md +++ b/README.md @@ -1,10 +1,10 @@ # What is this? -This repository contains the image documentation for each of the official images. See [docker-library/official-images](https://github.com/docker-library/official-images) for more information about the program in general. +This repository contains the image documentation for each of the Docker Official Images. See [docker-library/official-images](https://github.com/docker-library/official-images) for more information about the program in general. -All Markdown files here are run through [tianon's fork of `markdownfmt`](https://github.com/tianon/markdownfmt) (only forked to add some smaller-diff preference and minor DockerHub-compatibility changes), and verified as formatted correctly via GitHub Actions. +All Markdown files here are run through [tianon's fork of `markdownfmt`](https://github.com/tianon/markdownfmt), and verified as formatted correctly via GitHub Actions. -- [![GitHub CI status badge](https://img.shields.io/github/workflow/status/docker-library/docs/GitHub%20CI/master?label=GitHub%20CI)](https://github.com/docker-library/docs/actions?query=workflow%3A%22GitHub+CI%22+branch%3Amaster) +- [![GitHub CI status badge](https://img.shields.io/github/actions/workflow/status/docker-library/docs/ci.yml?branch=master&label=GitHub%20CI)](https://github.com/docker-library/docs/actions?query=workflow%3A%22GitHub+CI%22+branch%3Amaster) - [![library update.sh status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/docs/job/library.svg?label=Automated%20library%20update.sh)](https://doi-janky.infosiftr.net/job/docs/job/library/) - [![amd64 update.sh status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/docs/job/amd64.svg?label=Automated%20amd64%20update.sh)](https://doi-janky.infosiftr.net/job/docs/job/amd64/) - [![arm32v5 update.sh status badge](https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/docs/job/arm32v5.svg?label=Automated%20arm32v5%20update.sh)](https://doi-janky.infosiftr.net/job/docs/job/arm32v5/) @@ -22,82 +22,68 @@ All Markdown files here are run through [tianon's fork of `markdownfmt`](https:/ 1. [What is this?](#what-is-this) 1. [Table of Contents](#table-of-contents) -2. [How do I add a new image's docs](#how-do-i-add-a-new-images-docs) -3. [How do I update an image's docs](#how-do-i-update-an-images-docs) -4. [What are all these files?](#what-are-all-these-files) +2. [How do I update an image's docs](#how-do-i-update-an-images-docs) +3. [How do I add a new image's docs](#how-do-i-add-a-new-images-docs) +4. [Files related to an image's docs](#files-related-to-an-images-docs) + 1. [folder ``](#folder-image-name) + 2. [`README.md`](#readmemd) + 3. [`content.md`](#contentmd) + 4. [`get-help.md`](#get-helpmd) + 5. [`github-repo`](#github-repo) + 6. [`license.md`](#licensemd) + 7. [`logo.png`](#logopng) + 8. [`maintainer.md`](#maintainermd) + 9. [`README-short.txt`](#readme-shorttxt) + 10. [`stack.yml`](#stackyml) +5. [Files for main Docs repo](#files-for-main-docs-repo) 1. [`update.sh`](#updatesh) - 2. [`generate-repo-stub-readme.sh`](#generate-repo-stub-readmesh) - 3. [`push.pl`](#pushpl) - 4. [`.template-helpers/generate-dockerfile-links-partial.sh`](#template-helpersgenerate-dockerfile-links-partialsh) - 5. [`.template-helpers/template.md` and `.template-helpers/user-feedback.md`](#template-helperstemplatemd-and-template-helpersuser-feedbackmd) - 6. [folder ``](#folder-image-name) - 7. [`/README.md`](#image-namereadmemd) - 8. [`/content.md`](#image-namecontentmd) - 9. [`/README-short.txt`](#image-namereadme-shorttxt) - 10. [`/logo.png`](#image-namelogopng) - 11. [`/license.md`](#image-namelicensemd) - 12. [`/maintainer.md`](#image-namemaintainermd) - 13. [`/github-repo`](#image-namegithub-repo) - 14. [`/user-feedback.md`](#image-nameuser-feedbackmd) -5. [Issues and Contributing](#issues-and-contributing) + 2. [`markdownfmt.sh` and `ymlfmt.sh`](#markdownfmtsh-and-ymlfmtsh) + 3. [`.template-helpers/generate-dockerfile-links-partial.sh`](#template-helpersgenerate-dockerfile-links-partialsh) + 4. [`.template-helpers/`](#template-helpers) +6. [Scripts unrelated to templates](#scripts-unrelated-to-templates) + 1. [`generate-repo-stub-readme.sh`](#generate-repo-stub-readmesh) + 2. [`push.pl` and `push.sh`](#pushpl-and-pushsh) +7. [Issues and Contributing](#issues-and-contributing) -# How do I add a new image's docs - -- create a folder for my image: `mkdir myimage` -- create a `README-short.txt` (required, 100 char max) -- create a `content.md` (required) -- create a `license.md` (required) -- create a `maintainer.md` (required) -- create a `github-repo` (required) -- add a `logo.png` (recommended) - -Optionally: - -- run `./markdownfmt.sh -l myimage` to verify whether format of your markdown files is compliant to `tianon/markdownfmt`. In case you see any file names, markdownfmt detected some issues, which might result in a failed build during continuous integration. run `./markdownfmt.sh -d myimage` to see a diff of changes required to pass. -- run `./update.sh myimage` to generate `myimage/README.md` for manual review of the generated copy. - **Note:** do not actually commit the `README.md` file; it is automatically generated/committed before being uploaded to Docker Hub. - # How do I update an image's docs -To update `README.md` for a specific image do not edit `README.md` directly. Please edit `content.md` or another appropriate file within the folder. To see the changes, run `./update.sh myimage` from the repo root, but do not add the `README.md` changes to your pull request. See also `markdownfmt.sh` point [above](#how-do-i-add-a-new-images-docs). - -# What are all these files? - -## `update.sh` - -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 (see below on what customizations are available). 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). - -## `generate-repo-stub-readme.sh` - -This is used to generate a simple `README.md` to put in the image's repo. Argument is the name of the image, like `golang` and it then outputs the readme to standard out. +Edit the `content.md` for an image; not the `README.md` as it's auto-generated from the contents of the other files in that repo. To see the changes to the `README.md`, run `./update.sh myimage` from the repo root, but do not add the `README.md` changes to your pull request. See also `markdownfmt.sh` point [below](#how-do-i-add-a-new-images-docs). -## `push.pl` +After opening your Pull Request the changes will be checked by an automated `markdownfmt.sh` before it can be merged. A common issue is incorrect spacing such as with two lines missing an empty line between them (double-spaced). -This is used by us to push the actual content of the READMEs to the Docker Hub as special access is required to modify the Hub description contents. +# How do I add a new image's docs -## `.template-helpers/generate-dockerfile-links-partial.sh` +- Create a folder for my image: `mkdir myimage` +- Create a `README-short.txt` (required, 100 char max) +- Create a `content.md` (required) +- Create a `license.md` (required) +- Create a `maintainer.md` (required) +- Create a `github-repo` (required) +- Add a `logo.png` (recommended) -This script is used by `update.sh` to create the "Supported tags and respective `Dockerfile` links" section of each generated `README.md` from the information in the [official-images `library/` manifests](https://github.com/docker-library/official-images/tree/master/library). +Optionally: -## `.template-helpers/template.md` and `.template-helpers/user-feedback.md` +- Run `./markdownfmt.sh -l myimage` to list any files that are non-compliant to [`tianon/markdownfmt`](https://hub.docker.com/r/tianon/markdownfmt). + Any files in the list will result in a failed build during continuous integration. + - run `./markdownfmt.sh -d myimage` to see a diff of changes required to pass. +- Run `./update.sh myimage` to generate `myimage/README.md` for manual review of the generated copy. + **Note:** do not actually commit the `README.md` file; it is automatically generated/committed before being uploaded to Docker Hub. -These files are the templates used in building the `/README.md` file, in combination with the individual image's files. +# Files related to an image's docs ## folder `` -This is where all the partial and generated files for a given image reside, (ex: `golang/`). +This is where all the partial (e.g. `content.md`) and generated files (e.g. `README.md`) for a given image reside, (e.g. `golang/`). It must match the name of the image used in `docker-library/official-images`. -## `/README.md` +## `README.md` -This file is generated using `update.sh`. +This file is generated using `update.sh`. Do not commit or edit this file; it is regenerated periodically by a bot. -## `/content.md` +## `content.md` -This file contains the main content of your image's long description. The basic parts you should have are a "What Is" section and a "How To" section. See the doc on [Official Repos](https://docs.docker.com/docker-hub/official_repos/#a-long-description) for more information on long description. The issues and contribution section is generated by the script but can be overridden. The following is a basic layout: +This file contains the main content of your image's long description. The basic parts you should have are a "What Is" section and a "How To" section. The following is a basic layout: ```markdown # What is XYZ? @@ -112,17 +98,19 @@ This file contains the main content of your image's long description. The basic // make use of subsections as necessary ``` -## `/README-short.txt` +## `get-help.md` -This is the short description for the docker hub, limited to 100 characters in a single line. +This file is an optional override of the default `get-help.md`. This is the content of the "Where to get help" part of the "Quick reference" at the top of the generated README. We recommend linking to the best places for community support like forums, chat rooms, or mailing lists. -> Go (golang) is a general purpose, higher-level, imperative programming language. +## `github-repo` -## `/logo.png` +This file should contain the URL to the GitHub repository for the Dockerfiles that become the images. The file should be in a single line ending in a newline with no extraneous whitespace. Only one GitHub repo per image repository is supported. It is used in generating links. Here is an example for `golang`: -Logo for the contained software. While there are not hard rules on formatting, most existing logos are square or landscape and stay within a few hundred pixels of width. +```text +https://github.com/docker-library/golang +``` -## `/license.md` +## `license.md` This file should contain a link to the license for the main software in the image. Here is an example for `golang`: @@ -130,24 +118,60 @@ This file should contain a link to the license for the main software in the imag View [license information](http://golang.org/LICENSE) for the software contained in this image. ``` -## `/maintainer.md` +## `logo.png` + +Logo for the contained software. While there are not hard rules on formatting, most existing logos are square or landscape and stay within a few hundred pixels of width. Alternatively, a `logo.svg` can be used instead, but only one logo file will apply. To use it within `content.md`, put `%%LOGO%%` as shown above in the basic `content.md` layout. + +The image is automatically scaled to a 120 pixel square for the top of the Docker Hub page and Hub search results. + +## `maintainer.md` This file should contain a link to the maintainers of the Dockerfile. -## `/github-repo` +## `README-short.txt` -This file should contain the URL to the GitHub repository for the Dockerfiles that become the images. The file should be in a single line ending in a newline with no extraneous whitespace. Only one GitHub repo per image repository is supported. It is used in generating links. Here is an example for `golang`: +This is the short description for the Docker Hub, limited to 100 characters in a single line. -```text -https://github.com/docker-library/golang -``` +> Go (golang) is a general purpose, higher-level, imperative programming language. + +## `stack.yml` + +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/). + +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. + +# Files for main Docs repo + +## `update.sh` + +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). + +## `markdownfmt.sh` and `ymlfmt.sh` + +These two scripts are for verifying the formatting of Markdown (`.md`) and YAML (`.yml`) files, respectively. `markdownfmt.sh` uses the [`tianon/markdownfmt`](https://hub.docker.com/r/tianon/markdownfmt) image and `ymlfmt.sh` uses the [`tianon/ymlfmt`](https://hub.docker.com/r/tianon/ymlfmt) image. + +## `.template-helpers/generate-dockerfile-links-partial.sh` + +This script is used by `update.sh` to create the "Supported tags and respective `Dockerfile` links" section of each generated `README.md` from the information in the [official-images `library/` manifests](https://github.com/docker-library/official-images/tree/master/library). + +## `.template-helpers/` + +The scripts and Markdown files in here are used in building an image's `README.md` file in combination with its individual files. + +# Scripts unrelated to templates + +## `generate-repo-stub-readme.sh` + +This is used to generate a simple `README.md` to put in the image's repo. We use this in Git repositories within https://github.com/docker-library to simplify our maintenance, but it is not required for anyone else. The only argument is the name of the image (or repo), like `golang` and it then outputs the readme to standard out. -## `/user-feedback.md` +## `push.pl` and `push.sh` -This file is an optional override of the default `user-feedback.md` for those repositories with different issue and contributing policies. +These are used by us to push the actual content of the READMEs to the Docker Hub as special access is required to modify the Hub description contents. The `Dockerfile` is used to create a suitable environment for `push.pl`. # Issues and Contributing If you would like to make a new Official Image, be sure to follow the [guidelines](https://docs.docker.com/docker-hub/official_repos/). -Feel free to make a pull request for fixes and improvements to current documentation. For questions or problems on this repo come talk to us via the `#docker-library` IRC channel on [Freenode](https://freenode.net) or open up an issue. +Feel free to make a pull request for fixes and improvements to current documentation. For questions or problems on this repo come talk to us via the `#docker-library` IRC channel on [Libera.Chat](https://libera.chat/) or open up an issue. diff --git a/adminer/README.md b/adminer/README.md index 3897e0c88f02..030a6cd24f0e 100644 --- a/adminer/README.md +++ b/adminer/README.md @@ -20,12 +20,12 @@ WARNING: [Tim Düsterhus (of the Docker Community)](https://github.com/TimWolla/docker-adminer) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.7.7-standalone`, `4.7-standalone`, `4-standalone`, `standalone`, `4.7.7`, `4.7`, `4`, `latest`](https://github.com/TimWolla/docker-adminer/blob/18344428b4b12907f82ab8c03e865094d1ae0663/4/Dockerfile) -- [`4.7.7-fastcgi`, `4.7-fastcgi`, `4-fastcgi`, `fastcgi`](https://github.com/TimWolla/docker-adminer/blob/18344428b4b12907f82ab8c03e865094d1ae0663/4/fastcgi/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +33,14 @@ WARNING: [https://github.com/TimWolla/docker-adminer/issues](https://github.com/TimWolla/docker-adminer/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`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/), [`s390x`](https://hub.docker.com/r/s390x/adminer/) + [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/adminer`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fadminer) + [official-images repo's `library/adminer` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fadminer) [official-images repo's `library/adminer` file](https://github.com/docker-library/official-images/blob/master/library/adminer) ([history](https://github.com/docker-library/official-images/commits/master/library/adminer)) - **Source of this description**: @@ -116,7 +116,7 @@ To load plugins you can pass a list of filenames in `ADMINER_PLUGINS`: $ docker run --link some_database:db -p 8080:8080 -e ADMINER_PLUGINS='tables-filter tinymce' adminer ``` -If a plugin *requires* parameters to work correctly you will need to add a custom file to the container: +If a plugin *requires* parameters to work correctly instead of adding the plugin to `ADMINER_PLUGINS`, you need to add a custom file to the container: ```console $ docker run --link some_database:db -p 8080:8080 -e ADMINER_PLUGINS='login-servers' adminer diff --git a/adminer/content.md b/adminer/content.md index 9257e20e9fcf..8ff1691833a8 100644 --- a/adminer/content.md +++ b/adminer/content.md @@ -44,7 +44,7 @@ To load plugins you can pass a list of filenames in `ADMINER_PLUGINS`: $ docker run --link some_database:db -p 8080:8080 -e ADMINER_PLUGINS='tables-filter tinymce' %%IMAGE%% ``` -If a plugin *requires* parameters to work correctly you will need to add a custom file to the container: +If a plugin *requires* parameters to work correctly instead of adding the plugin to `ADMINER_PLUGINS`, you need to add a custom file to the container: ```console $ docker run --link some_database:db -p 8080:8080 -e ADMINER_PLUGINS='login-servers' %%IMAGE%% diff --git a/adoptopenjdk/README-short.txt b/adoptopenjdk/README-short.txt deleted file mode 100644 index 7a7122b65803..000000000000 --- a/adoptopenjdk/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Official Images for OpenJDK + HotSpot and OpenJDK + Eclipse OpenJ9 binaries built by AdoptOpenJDK. diff --git a/adoptopenjdk/README.md b/adoptopenjdk/README.md deleted file mode 100644 index 3e0e2581736e..000000000000 --- a/adoptopenjdk/README.md +++ /dev/null @@ -1,352 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [AdoptOpenJDK](https://github.com/AdoptOpenJDK/openjdk-docker) - -- **Where to get help**: - [AdoptOpenJDK Slack](https://adoptopenjdk.net/slack.html); [AdoptOpenJDK Mailing List](https://mail.openjdk.java.net/mailman/listinfo/adoption-discuss); [Eclipse OpenJ9 Slack](https://www.eclipse.org/openj9/oj9_joinslack.html); [Eclipse OpenJ9 Mailing List](https://dev.eclipse.org/mailman/listinfo/openj9-dev) - -# 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 - -- [`8u252-b09-jdk-hotspot-bionic`, `8-jdk-hotspot-bionic`, `8-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- [`8u252-b09.1-jdk-hotspot-windowsservercore-ltsc2016`, `8-jdk-hotspot-windowsservercore-ltsc2016`, `8-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`8u252-b09.1-jdk-hotspot-windowsservercore-1809`, `8-jdk-hotspot-windowsservercore-1809`, `8-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`8u252-b09-jre-hotspot-bionic`, `8-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jre/ubuntu/Dockerfile.hotspot.releases.full) -- [`8u252-b09.1-jre-hotspot-windowsservercore-ltsc2016`, `8-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`8u252-b09.1-jre-hotspot-windowsservercore-1809`, `8-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`11.0.7_10-jdk-hotspot-bionic`, `11-jdk-hotspot-bionic`, `11-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- [`11.0.7_10.1-jdk-hotspot-windowsservercore-ltsc2016`, `11-jdk-hotspot-windowsservercore-ltsc2016`, `11-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`11.0.7_10.1-jdk-hotspot-windowsservercore-1809`, `11-jdk-hotspot-windowsservercore-1809`, `11-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`11.0.7_10-jre-hotspot-bionic`, `11-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jre/ubuntu/Dockerfile.hotspot.releases.full) -- [`11.0.7_10.1-jre-hotspot-windowsservercore-ltsc2016`, `11-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`11.0.7_10.1-jre-hotspot-windowsservercore-1809`, `11-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`13.0.2_8-jdk-hotspot-bionic`, `13-jdk-hotspot-bionic`, `13-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- [`13.0.2_8-jdk-hotspot-windowsservercore-ltsc2016`, `13-jdk-hotspot-windowsservercore-ltsc2016`, `13-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`13.0.2_8-jdk-hotspot-windowsservercore-1809`, `13-jdk-hotspot-windowsservercore-1809`, `13-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`13.0.2_8-jre-hotspot-bionic`, `13-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/ubuntu/Dockerfile.hotspot.releases.full) -- [`13.0.2_8-jre-hotspot-windowsservercore-ltsc2016`, `13-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`13.0.2_8-jre-hotspot-windowsservercore-1809`, `13-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`14.0.1_7-jdk-hotspot-bionic`, `14-jdk-hotspot-bionic`, `14-hotspot-bionic`, `hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/2fb3fcc43ea049fd4bd020910e23ecdf492deb58/14/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- [`14.0.1_7.1-jdk-hotspot-windowsservercore-ltsc2016`, `14-jdk-hotspot-windowsservercore-ltsc2016`, `14-hotspot-windowsservercore-ltsc2016`, `hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`14.0.1_7.1-jdk-hotspot-windowsservercore-1809`, `14-jdk-hotspot-windowsservercore-1809`, `14-hotspot-windowsservercore-1809`, `hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`14.0.1_7-jre-hotspot-bionic`, `14-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/2fb3fcc43ea049fd4bd020910e23ecdf492deb58/14/jre/ubuntu/Dockerfile.hotspot.releases.full) -- [`14.0.1_7.1-jre-hotspot-windowsservercore-ltsc2016`, `14-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) -- [`14.0.1_7.1-jre-hotspot-windowsservercore-1809`, `14-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- [`8u252-b09-jdk-openj9-0.20.0-bionic`, `8-jdk-openj9-bionic`, `8-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jdk/ubuntu/Dockerfile.openj9.releases.full) -- [`8u252-b09.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`, `8-jdk-openj9-windowsservercore-ltsc2016`, `8-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`8u252-b09.1-jdk-openj9-0.20.0-windowsservercore-1809`, `8-jdk-openj9-windowsservercore-1809`, `8-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`8u252-b09-jre-openj9-0.20.0-bionic`, `8-jre-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jre/ubuntu/Dockerfile.openj9.releases.full) -- [`8u252-b09.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`, `8-jre-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`8u252-b09.1-jre-openj9-0.20.0-windowsservercore-1809`, `8-jre-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`11.0.7_10-jdk-openj9-0.20.0-bionic`, `11-jdk-openj9-bionic`, `11-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jdk/ubuntu/Dockerfile.openj9.releases.full) -- [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`, `11-jdk-openj9-windowsservercore-ltsc2016`, `11-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-1809`, `11-jdk-openj9-windowsservercore-1809`, `11-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`11.0.7_10-jre-openj9-0.20.0-bionic`, `11-jre-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jre/ubuntu/Dockerfile.openj9.releases.full) -- [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`, `11-jre-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-1809`, `11-jre-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`13.0.2_8-jdk-openj9-0.18.0-bionic`, `13-jdk-openj9-bionic`, `13-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/ubuntu/Dockerfile.openj9.releases.full) -- [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-ltsc2016`, `13-jdk-openj9-windowsservercore-ltsc2016`, `13-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-1809`, `13-jdk-openj9-windowsservercore-1809`, `13-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`13.0.2_8-jre-openj9-0.18.0-bionic`, `13-jre-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/ubuntu/Dockerfile.openj9.releases.full) -- [`13.0.2_8-jre-openj9-0.18.0-windowsservercore-ltsc2016`, `13-jre-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`13.0.2_8-jre-openj9-0.18.0-windowsservercore-1809`, `13-jre-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`14.0.1_7-jdk-openj9-0.20.0-bionic`, `14-jdk-openj9-bionic`, `14-openj9-bionic`, `openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/14/jdk/ubuntu/Dockerfile.openj9.releases.full) -- [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`, `14-jdk-openj9-windowsservercore-ltsc2016`, `14-openj9-windowsservercore-ltsc2016`, `openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-1809`, `14-jdk-openj9-windowsservercore-1809`, `14-openj9-windowsservercore-1809`, `openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- [`14.0.1_7-jre-openj9-0.20.0-bionic`, `14-jre-openj9-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/14/jre/ubuntu/Dockerfile.openj9.releases.full) -- [`14.0.1_7.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`, `14-jre-openj9-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- [`14.0.1_7.1-jre-openj9-0.20.0-windowsservercore-1809`, `14-jre-openj9-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) - -## Shared Tags - -- `8u252-b09-jdk-hotspot`: - - [`8u252-b09-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- `8-jdk-hotspot`, `8-hotspot`: - - [`8u252-b09-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jdk/ubuntu/Dockerfile.hotspot.releases.full) - - [`8u252-b09.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`8u252-b09.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `8u252-b09.1-jdk-hotspot-windowsservercore`, `8-jdk-hotspot-windowsservercore`, `8-hotspot-windowsservercore`, `8u252-b09.1-jdk-hotspot`: - - [`8u252-b09.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`8u252-b09.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `8u252-b09-jre-hotspot`: - - [`8u252-b09-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jre/ubuntu/Dockerfile.hotspot.releases.full) -- `8-jre-hotspot`: - - [`8u252-b09-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jre/ubuntu/Dockerfile.hotspot.releases.full) - - [`8u252-b09.1-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`8u252-b09.1-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `8u252-b09.1-jre-hotspot-windowsservercore`, `8-jre-hotspot-windowsservercore`, `8u252-b09.1-jre-hotspot`: - - [`8u252-b09.1-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`8u252-b09.1-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `11.0.7_10-jdk-hotspot`: - - [`11.0.7_10-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- `11-jdk-hotspot`, `11-hotspot`: - - [`11.0.7_10-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jdk/ubuntu/Dockerfile.hotspot.releases.full) - - [`11.0.7_10.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`11.0.7_10.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `11.0.7_10.1-jdk-hotspot-windowsservercore`, `11-jdk-hotspot-windowsservercore`, `11-hotspot-windowsservercore`, `11.0.7_10.1-jdk-hotspot`: - - [`11.0.7_10.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`11.0.7_10.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `11.0.7_10-jre-hotspot`: - - [`11.0.7_10-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jre/ubuntu/Dockerfile.hotspot.releases.full) -- `11-jre-hotspot`: - - [`11.0.7_10-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jre/ubuntu/Dockerfile.hotspot.releases.full) - - [`11.0.7_10.1-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`11.0.7_10.1-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `11.0.7_10.1-jre-hotspot-windowsservercore`, `11-jre-hotspot-windowsservercore`, `11.0.7_10.1-jre-hotspot`: - - [`11.0.7_10.1-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`11.0.7_10.1-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `13.0.2_8-jdk-hotspot`, `13-jdk-hotspot`, `13-hotspot`: - - [`13.0.2_8-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/ubuntu/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `13.0.2_8-jdk-hotspot-windowsservercore`, `13-jdk-hotspot-windowsservercore`, `13-hotspot-windowsservercore`: - - [`13.0.2_8-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `hotspot-windowsservercore`: - - [`13.0.2_8-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `13.0.2_8-jre-hotspot`, `13-jre-hotspot`: - - [`13.0.2_8-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/ubuntu/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `13.0.2_8-jre-hotspot-windowsservercore`, `13-jre-hotspot-windowsservercore`: - - [`13.0.2_8-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`13.0.2_8-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `14.0.1_7-jdk-hotspot`: - - [`14.0.1_7-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/2fb3fcc43ea049fd4bd020910e23ecdf492deb58/14/jdk/ubuntu/Dockerfile.hotspot.releases.full) -- `14-jdk-hotspot`, `14-hotspot`, `hotspot`, `latest`: - - [`14.0.1_7-jdk-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/2fb3fcc43ea049fd4bd020910e23ecdf492deb58/14/jdk/ubuntu/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `14.0.1_7.1-jdk-hotspot-windowsservercore`, `14-jdk-hotspot-windowsservercore`, `14-hotspot-windowsservercore`, `14.0.1_7.1-jdk-hotspot`: - - [`14.0.1_7.1-jdk-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jdk-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `14.0.1_7-jre-hotspot`: - - [`14.0.1_7-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/2fb3fcc43ea049fd4bd020910e23ecdf492deb58/14/jre/ubuntu/Dockerfile.hotspot.releases.full) -- `14-jre-hotspot`: - - [`14.0.1_7-jre-hotspot-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/2fb3fcc43ea049fd4bd020910e23ecdf492deb58/14/jre/ubuntu/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `14.0.1_7.1-jre-hotspot-windowsservercore`, `14-jre-hotspot-windowsservercore`, `14.0.1_7.1-jre-hotspot`: - - [`14.0.1_7.1-jre-hotspot-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-ltsc2016/Dockerfile.hotspot.releases.full) - - [`14.0.1_7.1-jre-hotspot-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-1809/Dockerfile.hotspot.releases.full) -- `8u252-b09-jdk-openj9-0.20.0`: - - [`8u252-b09-jdk-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jdk/ubuntu/Dockerfile.openj9.releases.full) -- `8-jdk-openj9`, `8-openj9`: - - [`8u252-b09-jdk-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jdk/ubuntu/Dockerfile.openj9.releases.full) - - [`8u252-b09.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`8u252-b09.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `8u252-b09.1-jdk-openj9-0.20.0-windowsservercore`, `8-jdk-openj9-windowsservercore`, `8-openj9-windowsservercore`, `8u252-b09.1-jdk-openj9-0.20.0`: - - [`8u252-b09.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`8u252-b09.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `8u252-b09-jre-openj9-0.20.0`: - - [`8u252-b09-jre-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jre/ubuntu/Dockerfile.openj9.releases.full) -- `8-jre-openj9`: - - [`8u252-b09-jre-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/8/jre/ubuntu/Dockerfile.openj9.releases.full) - - [`8u252-b09.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`8u252-b09.1-jre-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `8u252-b09.1-jre-openj9-0.20.0-windowsservercore`, `8-jre-openj9-windowsservercore`, `8u252-b09.1-jre-openj9-0.20.0`: - - [`8u252-b09.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`8u252-b09.1-jre-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/8/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `11.0.7_10-jdk-openj9-0.20.0`: - - [`11.0.7_10-jdk-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jdk/ubuntu/Dockerfile.openj9.releases.full) -- `11-jdk-openj9`, `11-openj9`: - - [`11.0.7_10-jdk-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jdk/ubuntu/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore`, `11-jdk-openj9-windowsservercore`, `11.0.7_10.1-jdk-openj9-0.20.0`: - - [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `11-openj9-windowsservercore`: - - [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) -- `11.0.7_10-jre-openj9-0.20.0`: - - [`11.0.7_10-jre-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jre/ubuntu/Dockerfile.openj9.releases.full) -- `11-jre-openj9`: - - [`11.0.7_10-jre-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/11/jre/ubuntu/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `11.0.7_10.1-jre-openj9-0.20.0-windowsservercore`, `11-jre-openj9-windowsservercore`, `11.0.7_10.1-jre-openj9-0.20.0`: - - [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`11.0.7_10.1-jre-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/11/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `13.0.2_8-jdk-openj9-0.18.0`, `13-jdk-openj9`, `13-openj9`: - - [`13.0.2_8-jdk-openj9-0.18.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/ubuntu/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `13.0.2_8-jdk-openj9-0.18.0-windowsservercore`, `13-jdk-openj9-windowsservercore`, `13-openj9-windowsservercore`: - - [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `openj9-windowsservercore`: - - [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jdk-openj9-0.18.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `13.0.2_8-jre-openj9-0.18.0`, `13-jre-openj9`: - - [`13.0.2_8-jre-openj9-0.18.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/ubuntu/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jre-openj9-0.18.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jre-openj9-0.18.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `13.0.2_8-jre-openj9-0.18.0-windowsservercore`, `13-jre-openj9-windowsservercore`: - - [`13.0.2_8-jre-openj9-0.18.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`13.0.2_8-jre-openj9-0.18.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/3b28dd3fb7230f208ed49da507432a01741b1259/13/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `14.0.1_7-jdk-openj9-0.20.0`: - - [`14.0.1_7-jdk-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/14/jdk/ubuntu/Dockerfile.openj9.releases.full) -- `14-jdk-openj9`, `14-openj9`, `openj9`: - - [`14.0.1_7-jdk-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/14/jdk/ubuntu/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore`, `14-jdk-openj9-windowsservercore`, `14-openj9-windowsservercore`, `14.0.1_7.1-jdk-openj9-0.20.0`: - - [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jdk-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jdk/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `14.0.1_7-jre-openj9-0.20.0`: - - [`14.0.1_7-jre-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/14/jre/ubuntu/Dockerfile.openj9.releases.full) -- `14-jre-openj9`: - - [`14.0.1_7-jre-openj9-0.20.0-bionic`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/f104ef0fd80dc1d8e2b796a80f00512ab06a1465/14/jre/ubuntu/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jre-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) -- `14.0.1_7.1-jre-openj9-0.20.0-windowsservercore`, `14-jre-openj9-windowsservercore`, `14.0.1_7.1-jre-openj9-0.20.0`: - - [`14.0.1_7.1-jre-openj9-0.20.0-windowsservercore-ltsc2016`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-ltsc2016/Dockerfile.openj9.releases.full) - - [`14.0.1_7.1-jre-openj9-0.20.0-windowsservercore-1809`](https://github.com/AdoptOpenJDK/openjdk-docker/blob/facb9fef4e720ca5e037862e19ca8ac5b883cc48/14/jre/windows/windowsservercore-1809/Dockerfile.openj9.releases.full) - -# Quick reference (cont.) - -- **Where to file issues**: - [GitHub](https://github.com/AdoptOpenJDK/openjdk-docker/issues); The [adoptopenjdk support](https://adoptopenjdk.net/support.html) page has more information on quality, roadmap and support levels for AdoptOpenJDK builds; - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/adoptopenjdk/), [`arm32v7`](https://hub.docker.com/r/arm32v7/adoptopenjdk/), [`arm64v8`](https://hub.docker.com/r/arm64v8/adoptopenjdk/), [`ppc64le`](https://hub.docker.com/r/ppc64le/adoptopenjdk/), [`s390x`](https://hub.docker.com/r/s390x/adoptopenjdk/), [`windows-amd64`](https://hub.docker.com/r/winamd64/adoptopenjdk/) - -- **Published image artifact details**: - [repo-info repo's `repos/adoptopenjdk/` directory](https://github.com/docker-library/repo-info/blob/master/repos/adoptopenjdk) ([history](https://github.com/docker-library/repo-info/commits/master/repos/adoptopenjdk)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/adoptopenjdk`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fadoptopenjdk) - [official-images repo's `library/adoptopenjdk` file](https://github.com/docker-library/official-images/blob/master/library/adoptopenjdk) ([history](https://github.com/docker-library/official-images/commits/master/library/adoptopenjdk)) - -- **Source of this description**: - [docs repo's `adoptopenjdk/` directory](https://github.com/docker-library/docs/tree/master/adoptopenjdk) ([history](https://github.com/docker-library/docs/commits/master/adoptopenjdk)) - -## Overview - -The images in this repository contain OpenJDK binaries that are built by AdoptOpenJDK and contain both HotSpot and Eclipse OpenJ9 JVMs. - -# What is AdoptOpenJDK ? - -[AdoptOpenJDK](https://adoptopenjdk.net/) is a community of Java™ user group members, Java developers and vendors who are advocates of OpenJDK, the open source project which forms the basis of the Java programming language and platform. AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. AdoptOpenJDK builds and tests binaries for different source code streams based upon OpenJDK. Our binaries undergo extensive testing, and the Releases have passed all the available OpenJDK test suites and our additional tests (donated by the community), ensuring the best quality binary available. - -Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. - -![logo](https://raw.githubusercontent.com/docker-library/docs/0db0af87e256d941bf011e3b5b06ca4a8edb6b84/adoptopenjdk/logo.png) - -# What is Eclipse OpenJ9 ? - -[Eclipse OpenJ9](https://www.eclipse.org/openj9/) is a high performance, scalable, Java virtual machine (JVM) implementation that has a proven track record of running Java applications in production environments. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications. OpenJDK binaries that include Eclipse OpenJ9 are available through AdoptOpenJDK. - -# Images - -There are two types of Docker images here: the Java Development Kit (JDK) and the Java Runtime Environment (JRE). These images can be used as the basis for custom built images for running your applications. - -### Multi-Arch Image - -Docker Images for the following architectures are now available: - -- HotSpot - - `amd64`, `arm32v7`, `arm64v8`, `ppc64le`, `s390x`, `windows-amd64` -- Eclipse OpenJ9 - - `amd64`, `ppc64le`, `s390x`, `windows-amd64` - -# How to use this Image - -To run a pre-built jar file with the latest OpenJDK 11 with HotSpot JRE image, use the following Dockerfile: - -```dockerfile -FROM adoptopenjdk:11-jre-hotspot -RUN mkdir /opt/app -COPY japp.jar /opt/app -CMD ["java", "-jar", "/opt/app/japp.jar"] -``` - -To do the same with the latest OpenJDK 11 with Eclipse OpenJ9 JRE image, use the following Dockerfile: - -```dockerfile -FROM adoptopenjdk:11-jre-openj9 -RUN mkdir /opt/app -COPY japp.jar /opt/app -CMD ["java", "-jar", "/opt/app/japp.jar"] -``` - -You can build and run the Docker Image as shown in the following example: - -```console -docker build -t japp . -docker run -it --rm japp -``` - -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 adoptopenjdk:12.0.1_12-jdk-openj9-0.14.1 -CMD ["java", "-jar", "/opt/app/japp.jar"] -``` - -```console -docker build -t japp . -docker run -it -v /path/on/host/system/jars:/opt/app japp -``` - -# Image Variants - -The `adoptopenjdk` images come in many flavors, each designed for a specific use case. - -## `adoptopenjdk:` - -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 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. - -## `adoptopenjdk:-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 - -The Dockerfiles and associated scripts are licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). - -Licenses for the products installed within the images: - -- Eclipse OpenJ9 + OpenJDK: The combined works license is [GNU GPL v2 with Classpath Exception](http://openjdk.java.net/legal/gplv2+ce.html). -- OpenJDK: The project license is GNU GPL v2 with Classpath Exception. - -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 `adoptopenjdk/` directory](https://github.com/docker-library/repo-info/tree/master/repos/adoptopenjdk). - -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/adoptopenjdk/content.md b/adoptopenjdk/content.md deleted file mode 100644 index 332d9072ed86..000000000000 --- a/adoptopenjdk/content.md +++ /dev/null @@ -1,67 +0,0 @@ -## Overview - -The images in this repository contain OpenJDK binaries that are built by AdoptOpenJDK and contain both HotSpot and Eclipse OpenJ9 JVMs. - -# What is AdoptOpenJDK ? - -[AdoptOpenJDK](https://adoptopenjdk.net/) is a community of Java™ user group members, Java developers and vendors who are advocates of OpenJDK, the open source project which forms the basis of the Java programming language and platform. AdoptOpenJDK provides prebuilt OpenJDK binaries from a fully open source set of build scripts and infrastructure. AdoptOpenJDK builds and tests binaries for different source code streams based upon OpenJDK. Our binaries undergo extensive testing, and the Releases have passed all the available OpenJDK test suites and our additional tests (donated by the community), ensuring the best quality binary available. - -Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. - -%%LOGO%% - -# What is Eclipse OpenJ9 ? - -[Eclipse OpenJ9](https://www.eclipse.org/openj9/) is a high performance, scalable, Java virtual machine (JVM) implementation that has a proven track record of running Java applications in production environments. Contributed to the Eclipse project by IBM, the OpenJ9 JVM underpins the IBM SDK, Java Technology Edition product that is a core component of many IBM Enterprise software products. Continued development of OpenJ9 at the Eclipse foundation ensures wider collaboration, fresh innovation, and the opportunity to influence the development of OpenJ9 for the next generation of Java applications. OpenJDK binaries that include Eclipse OpenJ9 are available through AdoptOpenJDK. - -# Images - -There are two types of Docker images here: the Java Development Kit (JDK) and the Java Runtime Environment (JRE). These images can be used as the basis for custom built images for running your applications. - -### Multi-Arch Image - -Docker Images for the following architectures are now available: - -- HotSpot - - `amd64`, `arm32v7`, `arm64v8`, `ppc64le`, `s390x`, `windows-amd64` -- Eclipse OpenJ9 - - `amd64`, `ppc64le`, `s390x`, `windows-amd64` - -# How to use this Image - -To run a pre-built jar file with the latest OpenJDK 11 with HotSpot JRE image, use the following Dockerfile: - -```dockerfile -FROM %%IMAGE%%:11-jre-hotspot -RUN mkdir /opt/app -COPY japp.jar /opt/app -CMD ["java", "-jar", "/opt/app/japp.jar"] -``` - -To do the same with the latest OpenJDK 11 with Eclipse OpenJ9 JRE image, use the following Dockerfile: - -```dockerfile -FROM %%IMAGE%%:11-jre-openj9 -RUN mkdir /opt/app -COPY japp.jar /opt/app -CMD ["java", "-jar", "/opt/app/japp.jar"] -``` - -You can build and run the Docker Image as shown in the following example: - -```console -docker build -t japp . -docker run -it --rm japp -``` - -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%%:12.0.1_12-jdk-openj9-0.14.1 -CMD ["java", "-jar", "/opt/app/japp.jar"] -``` - -```console -docker build -t japp . -docker run -it -v /path/on/host/system/jars:/opt/app japp -``` diff --git a/adoptopenjdk/get-help.md b/adoptopenjdk/get-help.md deleted file mode 100644 index 9cacfabc88be..000000000000 --- a/adoptopenjdk/get-help.md +++ /dev/null @@ -1 +0,0 @@ -[AdoptOpenJDK Slack](https://adoptopenjdk.net/slack.html); [AdoptOpenJDK Mailing List](https://mail.openjdk.java.net/mailman/listinfo/adoption-discuss); [Eclipse OpenJ9 Slack](https://www.eclipse.org/openj9/oj9_joinslack.html); [Eclipse OpenJ9 Mailing List](https://dev.eclipse.org/mailman/listinfo/openj9-dev) diff --git a/adoptopenjdk/github-repo b/adoptopenjdk/github-repo deleted file mode 100644 index 5d1ed261f0f1..000000000000 --- a/adoptopenjdk/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/AdoptOpenJDK/openjdk-docker diff --git a/adoptopenjdk/issues.md b/adoptopenjdk/issues.md deleted file mode 100644 index 41dc82f40b3c..000000000000 --- a/adoptopenjdk/issues.md +++ /dev/null @@ -1 +0,0 @@ -[GitHub](%%GITHUB-REPO%%/issues); The [adoptopenjdk support](https://adoptopenjdk.net/support.html) page has more information on quality, roadmap and support levels for AdoptOpenJDK builds; diff --git a/adoptopenjdk/logo.png b/adoptopenjdk/logo.png deleted file mode 100644 index ce19fd82520d..000000000000 Binary files a/adoptopenjdk/logo.png and /dev/null differ diff --git a/adoptopenjdk/maintainer.md b/adoptopenjdk/maintainer.md deleted file mode 100644 index 246c88ce351d..000000000000 --- a/adoptopenjdk/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[AdoptOpenJDK](%%GITHUB-REPO%%) diff --git a/aerospike/README.md b/aerospike/README.md index 2e533b505583..1412be72a97b 100644 --- a/aerospike/README.md +++ b/aerospike/README.md @@ -17,124 +17,235 @@ WARNING: # Quick reference - **Maintained by**: - [Aerospike, Inc.](https://github.com/aerospike/aerospike-server.docker) + [Aerospike, Inc.](https://github.com/aerospike/aerospike-server-enterprise.docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.8.0.9`](https://github.com/aerospike/aerospike-server.docker/blob/b30a98d9b80357fd50ac3fa254a7f11ca1ebbb67/Dockerfile) -- [`4.9.0.7`](https://github.com/aerospike/aerospike-server.docker/blob/21d402a4d704b8bb2548afb65200d9a140ee2c65/Dockerfile) -- [`5.0.0.3`, `latest`](https://github.com/aerospike/aerospike-server.docker/blob/eb51bd55b94f42a240735b52ec1d9b5c783ae3b1/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [the Aerospike Forums](https://discuss.aerospike.com) or [GitHub](https://github.com/aerospike/aerospike-server.docker/issues) + [the Aerospike Forums](https://discuss.aerospike.com) or [GitHub](https://github.com/aerospike/aerospike-server-enterprise.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/) + [`amd64`](https://hub.docker.com/r/amd64/aerospike/), [`arm64v8`](https://hub.docker.com/r/arm64v8/aerospike/) - **Published image artifact details**: [repo-info repo's `repos/aerospike/` directory](https://github.com/docker-library/repo-info/blob/master/repos/aerospike) ([history](https://github.com/docker-library/repo-info/commits/master/repos/aerospike)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/aerospike`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Faerospike) + [official-images repo's `library/aerospike` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Faerospike) [official-images repo's `library/aerospike` file](https://github.com/docker-library/official-images/blob/master/library/aerospike) ([history](https://github.com/docker-library/official-images/commits/master/library/aerospike)) - **Source of this description**: [docs repo's `aerospike/` directory](https://github.com/docker-library/docs/tree/master/aerospike) ([history](https://github.com/docker-library/docs/commits/master/aerospike)) -# Aerospike +# Aerospike Database Docker Images -Aerospike is an open source distributed database. Aerospike is built on a "shared nothing" architecture designed to reliably store terabytes of data with automatic fail-over, replication and cross data-center synchronization. +## What is Aerospike? + +[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) -Documentation for Aerospike is available at [http://aerospike.com/docs](https://www.aerospike.com/docs). +## Getting Started + +Aerospike Enterprise Edition requires a feature key file to start and to ungate certain features in the database, such as compression. Enterprise customers can use their production or development keys. -# Using this Image +Anyone can [sign up](https://www.aerospike.com/lp/try-now/) to get an evaluation feature key file for a full-featured, single-node Aerospike Enterprise Edition. -The following will run `asd` with all the exposed ports forwarded to the host machine. +Aerospike Community Edition supports the same developer APIs as Aerospike Enterprise Edition, and differs in ease of operation and enterprise features. See the [product matrix](https://www.aerospike.com/products/product-matrix/) for more. + +### Running an Aerospike EE node with a feature key file in a mapped directory ```console -$ docker run -d --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike +docker run -d -v DIR:/opt/aerospike/etc/ -e "FEATURE_KEY_FILE=/opt/aerospike/etc/features.conf" --name aerospike -p 3000-3002:3000-3002 aerospike:ee-[version] ``` -**NOTE** Although this is the simplest method to getting Aerospike up and running, but it is not the preferred method. To properly run the container, please specify a **custom configuration** with the **access-address** defined. +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. -## Custom Aerospike Configuration +### Running an Aerospike EE node with a feature key file in a mapped directory -By default, `asd` will use the configuration file at `/etc/aerospike/aerospike.conf`, which is added to the directory by the Dockerfile. To provide a custom configuration, you should first mount a directory containing the custom aerospike.conf file using the `-v` option for `docker`: +```console +FEATKEY=$(base64 ~/Desktop/evaluation-features.conf) +docker run -d -e "FEATURES=$FEATKEY" -e "FEATURE_KEY_FILE=env-b64:FEATURES" --name aerospike -p 3000-3002:3000-3002 aerospike:ee-[version] +``` - -v :/opt/aerospike/etc +### Running an Aerospike CE node -Where `` is the path to a directory containing your custom aerospike.conf file. Next, you will want to tell `asd` to use the configuration file that was just mounted by using the `--config-file` option for `aerospike`: +```console +docker run -d --name aerospike -p 3000-3002:3000-3002 aerospike:ce-[version] +``` - --config-file /opt/aerospike/etc/aerospike.conf +## Advanced Configuration -This will tell `asd` to use the config file at `/opt/aerospike/etc/aerospike.conf`, which is mapped from `/aerospike.conf`. +The Aerospike Docker image has a default configuration file template that can be populated with individual configuration parameters, as we did before with `FEATURE_KEY_FILE`. Alternatively, it can be replaced with a custom configuration file. -A full example: +The following sections describe both advanced options. + +### Injecting configuration parameters + +You can inject parameters into the configuration template using container-side environment variables with the `-e` flag. + +For example, to set the default [namespace](https://www.aerospike.com/docs/architecture/data-model.html) name to *demo*: ```console -$ docker run -d -v :/opt/aerospike/etc --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike asd --foreground --config-file /opt/aerospike/etc/aerospike.conf +docker run -d --name aerospike -e "NAMESPACE=demo" -p 3000-3002:3000-3002 -v /my/dir:/opt/aerospike/etc/ -e "FEATURE_KEY_FILE=/opt/aerospike/etc/features.conf" aerospike:ee-[version] ``` -### access-address Configuration +Injecting configuration parameters into the configuration template isn't compatible with using a custom configuration file. You can use one or the other. + +#### List of template variables + +- `FEATURE_KEY_FILE` - the [`feature_key_file`](https://www.aerospike.com/docs/reference/configuration/index.html#feature-key-file) is only required for the EE image. Default: /etc/aerospike/features.conf +- `SERVICE_THREADS` - the [`service_threads`](https://www.aerospike.com/docs/reference/configuration/index.html#service-threads). Default: Number of vCPUs +- `LOGFILE` - the [`file`](https://www.aerospike.com/docs/reference/configuration/index.html#file) param of the `logging` context. Default: /dev/null, do not log to file, log to stdout +- `SERVICE_ADDRESS` - the bind [`address`](https://www.aerospike.com/docs/reference/configuration/index.html#address) of the `networking.service` subcontext. Default: any +- `SERVICE_PORT` - the [`port`](https://www.aerospike.com/docs/reference/configuration/index.html#port) of the `networking.service` subcontext. Default: 3000 +- `HB_ADDRESS` - the `networking.heartbeat` [`address`](https://www.aerospike.com/docs/reference/configuration/index.html#address) for cross cluster mesh. Default: any +- `HB_PORT` - the [`port`](https://www.aerospike.com/docs/reference/configuration/index.html#port) for `networking.heartbeat` communications. Default: 3002 +- `FABRIC_ADDRESS` - the [`address`](https://www.aerospike.com/docs/reference/configuration/index.html#address) of the `networking.fabric` subcontext. Default: any +- `FABRIC_PORT` - the [`port`](https://www.aerospike.com/docs/reference/configuration/index.html#port) of the `networking.fabric` subcontext. Default: 3001 + +The single preconfigured namespace is [in-memory with filesystem persistence](https://www.aerospike.com/docs/operations/configure/namespace/storage/#recipe-for-a-hdd-storage-engine-with-data-in-index-engine) -In order for Aerospike to properly broadcast its address to the cluster or applications, the **access-address** needs to be set in the configuration file. If it is not set, then the IP address within the container will be used, which is not accessible to other nodes. +- `NAMESPACE` - the name of the namespace. Default: test +- `REPL_FACTOR` - the namespace [`replication-factor`](https://www.aerospike.com/docs/reference/configuration/index.html#replication-factor). Default: 2 +- `MEM_GB` - the namespace [`memory-size`](https://www.aerospike.com/docs/reference/configuration/index.html#memory-size). Default: 1, the unit is always `G` (GB) +- `DEFAULT_TTL` - the namespace [`default-ttl`](https://www.aerospike.com/docs/reference/configuration/index.html#default-ttl). Default: 30d +- `STORAGE_GB` - the namespace persistence `file` size. Default: 4, the unit is always `G` (GB) +- `NSUP_PERIOD` - the namespace [`nsup-period`](https://www.aerospike.com/docs/reference/configuration/index.html#nsup-period). Default: 120 , nsup-period in seconds -To specify **access-address** in aerospike.conf: +### Using a custom configuration file + +You can override the use of the configuration file template by providing your own aerospike.conf, as described in [Configuring Aerospike Database](https://www.aerospike.com/docs/operations/configure/index.html). + +You should first `-v` map a local directory, which Docker will bind mount. Next, drop your aerospike.conf file into this directory. Finally, use the `--config-file` option to tell Aerospike where in the container the configuration file is (the default path is /etc/aerospike/aerospike.conf). Remember that the feature key file is required, so use `feature-key-file` in your config file to point to a mounted path (such as /opt/aerospike/etc/feature.conf). + +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 +``` + +### Persistent Data Directory + +With Docker, the files within the container are not persisted past the life of the container. To persist data, you will want to mount a directory from the host to the container's /opt/aerospike/data using the `-v` option: + +For example: + +```console +docker run -d -v /opt/aerospike/data:/opt/aerospike/data -v /opt/aerospike/etc:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 -e "FEATURE_KEY_FILE=/opt/aerospike/etc/features.conf" aerospike:ee-[version] +``` - network { - service { - address any # Listening IP Address - port 3000 # Listening Port - access-address 192.168.1.100 # IP Address to be used by applications and other nodes in the cluster. +The example above uses the configuration template, where the single defined namespace is in-memory with file-based persistence. Just mounting the predefined /opt/aerospike/data directory enables the data to be persisted on the host. + +Alternatively, a custom configuration file is used with the parameter `file` set to be a file in the mounted /opt/aerospike/data, such as in the following config snippet: + + namespace test { + # : + storage-engine device { + file /opt/aerospike/data/test.dat + filesize 4G + data-in-memory true } - ... + } + +In this example we also mount the data directory in a similar way, using a custom configuration file. + +```console +docker run -d -v /opt/aerospike/data:/opt/aerospike/data -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 +### Block Storage -With Docker, the files within the container are not persisted. To persist the data, you will want to mount a directory from the host to the guest's `/opt/aerospike/data` using the `-v` option: +Docker provides an ability to expose a host's block devices to a running container. The `--device` option can be used to map a host block device within a container. - -v :/opt/aerospike/data +Update the `storage-engine device` section of the namespace in the custom aerospike configuration file. -Where `` is the path to a directory containing your data files. + namespace test { + # : + storage-engine device { + device /dev/xvdc + write-block-size 128k + } + } -A full example: +Now to map a host drive /dev/sdc to /dev/xvdc on a container ```console -$ docker run -d -v :/opt/aerospike/data --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 aerospike +docker run -d --device '/dev/sdc:/dev/xvdc' -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 Lua Cache + +Upon restart, your lua cache will become emptied. To persist the cache, you will want to mount a directory from the host to the container's `/opt/aerospike/usr/udf/lua` using the `-v` option: + +```sh +docker run -d -v /opt/aerospike/lua:/opt/aerospike/usr/udf/lua -v /opt/aerospike/data:/opt/aerospike/data --name aerospike -p 3000-3002:3000-3002 -e "FEATURE_KEY_FILE=/opt/etc/aerospike/features.conf" aerospike:ee-[version] ``` ## Clustering -Aerospike recommends using Mesh Clustering. Mesh uses TCP point to point connections for heartbeats. Each node in the cluster maintains a heartbeat connection to all other nodes. Please see [http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat) +Developers using the Aerospike EE single-node evaluation, and most others using Docker Desktop on their machine for development, will not need to configure the node for clustering. If you're interested in using clustering and have a feature key file without a single node limit, read the following sections. + +### Configuring the node's access address + +In order for the Aerospike node to properly broadcast its address to the cluster and applications, the [`access-address`](https://www.aerospike.com/docs/reference/configuration/index.html#access-address) configuration parameter needs to be set in the configuration file. If it is not set, then the IP address within the container will be used, which is not accessible to other nodes. + + network { + service { + address any # Listening IP Address + port 3000 # Listening Port + access-address 192.168.1.100 # IP Address used by cluster nodes and applications + } ### Mesh Clustering Mesh networking requires setting up links between each node in the cluster. This can be achieved in two ways: -1. Define a configuration for each node in the cluster, as defined in [Network Heartbeat Configuration](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat). +1. Add a configuration for each node in the cluster, as defined in [Network Heartbeat Configuration](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat). 2. Use `asinfo` to send the `tip` command, to make the node aware of another node, as defined in [tip command in asinfo](http://www.aerospike.com/docs/tools/asinfo/#tip). -For more details and examples of clustering Aerospike in Docker, please see [Deploying Aerospike clusters with Docker](http://www.aerospike.com/docs/deploy_guides/docker/). +For more, see [How do I get a 2 nodes Aerospike cluster running quickly in Docker without editing a single file?](https://medium.com/aerospike-developer-blog/how-do-i-get-a-2-node-aerospike-cluster-running-quickly-in-docker-without-editing-a-single-file-1c2a94564a99?source=friends_link&sk=4ff6a22f0106596c42aa4b77d6cdc3a5) + +## Image Versions + +These images are based on [debian:strech-slim](https://hub.docker.com/_/debian). + +### ee-[version] + +These tags are for Aerospike EE images, and will require a feature key file, such as the one you get with the single-node EE evaluation, or one associated with a commercial enterprise license agreement. -## Sending Performance Data to Aerospike +### ce-[version] -Aerospike Telemetry is a feature that allows us to collect certain use data – not the database data – on your Aerospike Community Edition server use. We'd like to know when clusters are created and destroyed, cluster size, cluster workload, how often queries are run, whether instances are deployed purely in-memory or with Flash. Aerospike Telemetry collects information from running Community Edition server instances every 10 minutes. The data helps us to understand how the product is being used, identify issues, and create a better experience for the end user. [More Info](http://www.aerospike.com/aerospike-telemetry/) +These tags are for Aerospike CE images, and do not require a feature key file to start. As mentioned above, the developer API for both is the same, but the editions differ in operational features. + +## Reporting Issues + +If you have any problems with or questions about this image, please post on the [Aerospike discussion forum](https://discuss.aerospike.com). + +Enterprise customers are welcome to participate in the community forum, but can also report issues through the enterprise support system. + +Aerospike EE evaluation users can open an issue in [aerospike/aerospike-server-enterprise.docker](https://github.com/aerospike/aerospike-server-enterprise.docker/issues). + +Aerospike CE users can open an issue in [aerospike/aerospike-server.docker](https://github.com/aerospike/aerospike-server.docker/issues). # License -Copyright 2014-2015 Aerospike, Inc. +Copyright 2019-2021 Aerospike, Inc. + +If you are using a feature key file you received as part of your commercial enterprise license, you are operating under the [Aerospike Master License Agreement](https://www.aerospike.com/forms/master-license-agreement/). -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0). +If you are using the Aerospike Database EE evaluation feature key file, you are operating under the [Aerospike Evaluation License Agreement](https://www.aerospike.com/forms/evaluation-license-agreement/). -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +If you are using Aerospike Database CE refer to the license information in the [aerospike/aerospike-server](https://github.com/aerospike/aerospike-server) repository. 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/aerospike/content.md b/aerospike/content.md index b0200fde16c8..35650ff23744 100644 --- a/aerospike/content.md +++ b/aerospike/content.md @@ -1,80 +1,190 @@ -# Aerospike +# Aerospike Database Docker Images -Aerospike is an open source distributed database. Aerospike is built on a "shared nothing" architecture designed to reliably store terabytes of data with automatic fail-over, replication and cross data-center synchronization. +## What is Aerospike? + +[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%% -Documentation for Aerospike is available at [http://aerospike.com/docs](https://www.aerospike.com/docs). +## Getting Started + +Aerospike Enterprise Edition requires a feature key file to start and to ungate certain features in the database, such as compression. Enterprise customers can use their production or development keys. + +Anyone can [sign up](https://www.aerospike.com/lp/try-now/) to get an evaluation feature key file for a full-featured, single-node Aerospike Enterprise Edition. + +Aerospike Community Edition supports the same developer APIs as Aerospike Enterprise Edition, and differs in ease of operation and enterprise features. See the [product matrix](https://www.aerospike.com/products/product-matrix/) for more. + +### Running an Aerospike EE node with a feature key file in a mapped directory + +```console +docker run -d -v DIR:/opt/aerospike/etc/ -e "FEATURE_KEY_FILE=/opt/aerospike/etc/features.conf" --name aerospike -p 3000-3002:3000-3002 %%IMAGE%%:ee-[version] +``` + +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 + +```console +FEATKEY=$(base64 ~/Desktop/evaluation-features.conf) +docker run -d -e "FEATURES=$FEATKEY" -e "FEATURE_KEY_FILE=env-b64:FEATURES" --name aerospike -p 3000-3002:3000-3002 %%IMAGE%%:ee-[version] +``` + +### Running an Aerospike CE node + +```console +docker run -d --name aerospike -p 3000-3002:3000-3002 %%IMAGE%%:ce-[version] +``` + +## Advanced Configuration -# Using this Image +The Aerospike Docker image has a default configuration file template that can be populated with individual configuration parameters, as we did before with `FEATURE_KEY_FILE`. Alternatively, it can be replaced with a custom configuration file. -The following will run `asd` with all the exposed ports forwarded to the host machine. +The following sections describe both advanced options. + +### Injecting configuration parameters + +You can inject parameters into the configuration template using container-side environment variables with the `-e` flag. + +For example, to set the default [namespace](https://www.aerospike.com/docs/architecture/data-model.html) name to *demo*: ```console -$ docker run -d --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 %%IMAGE%% +docker run -d --name aerospike -e "NAMESPACE=demo" -p 3000-3002:3000-3002 -v /my/dir:/opt/aerospike/etc/ -e "FEATURE_KEY_FILE=/opt/aerospike/etc/features.conf" %%IMAGE%%:ee-[version] ``` -**NOTE** Although this is the simplest method to getting Aerospike up and running, but it is not the preferred method. To properly run the container, please specify a **custom configuration** with the **access-address** defined. +Injecting configuration parameters into the configuration template isn't compatible with using a custom configuration file. You can use one or the other. -## Custom Aerospike Configuration +#### List of template variables -By default, `asd` will use the configuration file at `/etc/aerospike/aerospike.conf`, which is added to the directory by the Dockerfile. To provide a custom configuration, you should first mount a directory containing the custom aerospike.conf file using the `-v` option for `docker`: +- `FEATURE_KEY_FILE` - the [`feature_key_file`](https://www.aerospike.com/docs/reference/configuration/index.html#feature-key-file) is only required for the EE image. Default: /etc/aerospike/features.conf +- `SERVICE_THREADS` - the [`service_threads`](https://www.aerospike.com/docs/reference/configuration/index.html#service-threads). Default: Number of vCPUs +- `LOGFILE` - the [`file`](https://www.aerospike.com/docs/reference/configuration/index.html#file) param of the `logging` context. Default: /dev/null, do not log to file, log to stdout +- `SERVICE_ADDRESS` - the bind [`address`](https://www.aerospike.com/docs/reference/configuration/index.html#address) of the `networking.service` subcontext. Default: any +- `SERVICE_PORT` - the [`port`](https://www.aerospike.com/docs/reference/configuration/index.html#port) of the `networking.service` subcontext. Default: 3000 +- `HB_ADDRESS` - the `networking.heartbeat` [`address`](https://www.aerospike.com/docs/reference/configuration/index.html#address) for cross cluster mesh. Default: any +- `HB_PORT` - the [`port`](https://www.aerospike.com/docs/reference/configuration/index.html#port) for `networking.heartbeat` communications. Default: 3002 +- `FABRIC_ADDRESS` - the [`address`](https://www.aerospike.com/docs/reference/configuration/index.html#address) of the `networking.fabric` subcontext. Default: any +- `FABRIC_PORT` - the [`port`](https://www.aerospike.com/docs/reference/configuration/index.html#port) of the `networking.fabric` subcontext. Default: 3001 - -v :/opt/aerospike/etc +The single preconfigured namespace is [in-memory with filesystem persistence](https://www.aerospike.com/docs/operations/configure/namespace/storage/#recipe-for-a-hdd-storage-engine-with-data-in-index-engine) -Where `` is the path to a directory containing your custom aerospike.conf file. Next, you will want to tell `asd` to use the configuration file that was just mounted by using the `--config-file` option for `%%IMAGE%%`: +- `NAMESPACE` - the name of the namespace. Default: test +- `REPL_FACTOR` - the namespace [`replication-factor`](https://www.aerospike.com/docs/reference/configuration/index.html#replication-factor). Default: 2 +- `MEM_GB` - the namespace [`memory-size`](https://www.aerospike.com/docs/reference/configuration/index.html#memory-size). Default: 1, the unit is always `G` (GB) +- `DEFAULT_TTL` - the namespace [`default-ttl`](https://www.aerospike.com/docs/reference/configuration/index.html#default-ttl). Default: 30d +- `STORAGE_GB` - the namespace persistence `file` size. Default: 4, the unit is always `G` (GB) +- `NSUP_PERIOD` - the namespace [`nsup-period`](https://www.aerospike.com/docs/reference/configuration/index.html#nsup-period). Default: 120 , nsup-period in seconds - --config-file /opt/aerospike/etc/aerospike.conf +### Using a custom configuration file -This will tell `asd` to use the config file at `/opt/aerospike/etc/aerospike.conf`, which is mapped from `/aerospike.conf`. +You can override the use of the configuration file template by providing your own aerospike.conf, as described in [Configuring Aerospike Database](https://www.aerospike.com/docs/operations/configure/index.html). -A full example: +You should first `-v` map a local directory, which Docker will bind mount. Next, drop your aerospike.conf file into this directory. Finally, use the `--config-file` option to tell Aerospike where in the container the configuration file is (the default path is /etc/aerospike/aerospike.conf). Remember that the feature key file is required, so use `feature-key-file` in your config file to point to a mounted path (such as /opt/aerospike/etc/feature.conf). + +For example: ```console -$ docker run -d -v :/opt/aerospike/etc --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 %%IMAGE%% asd --foreground --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 ``` -### access-address Configuration +### Persistent Data Directory + +With Docker, the files within the container are not persisted past the life of the container. To persist data, you will want to mount a directory from the host to the container's /opt/aerospike/data using the `-v` option: + +For example: -In order for Aerospike to properly broadcast its address to the cluster or applications, the **access-address** needs to be set in the configuration file. If it is not set, then the IP address within the container will be used, which is not accessible to other nodes. +```console +docker run -d -v /opt/aerospike/data:/opt/aerospike/data -v /opt/aerospike/etc:/opt/aerospike/etc/ --name aerospike -p 3000-3002:3000-3002 -e "FEATURE_KEY_FILE=/opt/aerospike/etc/features.conf" %%IMAGE%%:ee-[version] +``` + +The example above uses the configuration template, where the single defined namespace is in-memory with file-based persistence. Just mounting the predefined /opt/aerospike/data directory enables the data to be persisted on the host. -To specify **access-address** in aerospike.conf: +Alternatively, a custom configuration file is used with the parameter `file` set to be a file in the mounted /opt/aerospike/data, such as in the following config snippet: - network { - service { - address any # Listening IP Address - port 3000 # Listening Port - access-address 192.168.1.100 # IP Address to be used by applications and other nodes in the cluster. + namespace test { + # : + storage-engine device { + file /opt/aerospike/data/test.dat + filesize 4G + data-in-memory true } - ... + } + +In this example we also mount the data directory in a similar way, using a custom configuration file. + +```console +docker run -d -v /opt/aerospike/data:/opt/aerospike/data -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 +### Block Storage -With Docker, the files within the container are not persisted. To persist the data, you will want to mount a directory from the host to the guest's `/opt/aerospike/data` using the `-v` option: +Docker provides an ability to expose a host's block devices to a running container. The `--device` option can be used to map a host block device within a container. - -v :/opt/aerospike/data +Update the `storage-engine device` section of the namespace in the custom aerospike configuration file. -Where `` is the path to a directory containing your data files. + namespace test { + # : + storage-engine device { + device /dev/xvdc + write-block-size 128k + } + } -A full example: +Now to map a host drive /dev/sdc to /dev/xvdc on a container ```console -$ docker run -d -v :/opt/aerospike/data --name aerospike -p 3000:3000 -p 3001:3001 -p 3002:3002 -p 3003:3003 %%IMAGE%% +docker run -d --device '/dev/sdc:/dev/xvdc' -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 Lua Cache + +Upon restart, your lua cache will become emptied. To persist the cache, you will want to mount a directory from the host to the container's `/opt/aerospike/usr/udf/lua` using the `-v` option: + +```sh +docker run -d -v /opt/aerospike/lua:/opt/aerospike/usr/udf/lua -v /opt/aerospike/data:/opt/aerospike/data --name aerospike -p 3000-3002:3000-3002 -e "FEATURE_KEY_FILE=/opt/etc/aerospike/features.conf" %%IMAGE%%:ee-[version] ``` ## Clustering -Aerospike recommends using Mesh Clustering. Mesh uses TCP point to point connections for heartbeats. Each node in the cluster maintains a heartbeat connection to all other nodes. Please see [http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat) +Developers using the Aerospike EE single-node evaluation, and most others using Docker Desktop on their machine for development, will not need to configure the node for clustering. If you're interested in using clustering and have a feature key file without a single node limit, read the following sections. + +### Configuring the node's access address + +In order for the Aerospike node to properly broadcast its address to the cluster and applications, the [`access-address`](https://www.aerospike.com/docs/reference/configuration/index.html#access-address) configuration parameter needs to be set in the configuration file. If it is not set, then the IP address within the container will be used, which is not accessible to other nodes. + + network { + service { + address any # Listening IP Address + port 3000 # Listening Port + access-address 192.168.1.100 # IP Address used by cluster nodes and applications + } ### Mesh Clustering Mesh networking requires setting up links between each node in the cluster. This can be achieved in two ways: -1. Define a configuration for each node in the cluster, as defined in [Network Heartbeat Configuration](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat). +1. Add a configuration for each node in the cluster, as defined in [Network Heartbeat Configuration](http://www.aerospike.com/docs/operations/configure/network/heartbeat/#mesh-unicast-heartbeat). 2. Use `asinfo` to send the `tip` command, to make the node aware of another node, as defined in [tip command in asinfo](http://www.aerospike.com/docs/tools/asinfo/#tip). -For more details and examples of clustering Aerospike in Docker, please see [Deploying Aerospike clusters with Docker](http://www.aerospike.com/docs/deploy_guides/docker/). +For more, see [How do I get a 2 nodes Aerospike cluster running quickly in Docker without editing a single file?](https://medium.com/aerospike-developer-blog/how-do-i-get-a-2-node-aerospike-cluster-running-quickly-in-docker-without-editing-a-single-file-1c2a94564a99?source=friends_link&sk=4ff6a22f0106596c42aa4b77d6cdc3a5) + +## Image Versions + +These images are based on [debian:strech-slim](https://hub.docker.com/_/debian). + +### ee-[version] + +These tags are for Aerospike EE images, and will require a feature key file, such as the one you get with the single-node EE evaluation, or one associated with a commercial enterprise license agreement. + +### ce-[version] + +These tags are for Aerospike CE images, and do not require a feature key file to start. As mentioned above, the developer API for both is the same, but the editions differ in operational features. + +## Reporting Issues + +If you have any problems with or questions about this image, please post on the [Aerospike discussion forum](https://discuss.aerospike.com). + +Enterprise customers are welcome to participate in the community forum, but can also report issues through the enterprise support system. -## Sending Performance Data to Aerospike +Aerospike EE evaluation users can open an issue in [aerospike/aerospike-server-enterprise.docker](https://github.com/aerospike/aerospike-server-enterprise.docker/issues). -Aerospike Telemetry is a feature that allows us to collect certain use data – not the database data – on your Aerospike Community Edition server use. We'd like to know when clusters are created and destroyed, cluster size, cluster workload, how often queries are run, whether instances are deployed purely in-memory or with Flash. Aerospike Telemetry collects information from running Community Edition server instances every 10 minutes. The data helps us to understand how the product is being used, identify issues, and create a better experience for the end user. [More Info](http://www.aerospike.com/aerospike-telemetry/) +Aerospike CE users can open an issue in [aerospike/aerospike-server.docker](https://github.com/aerospike/aerospike-server.docker/issues). diff --git a/aerospike/github-repo b/aerospike/github-repo index 91cf2ac3e131..bfe29fcaf8f4 100644 --- a/aerospike/github-repo +++ b/aerospike/github-repo @@ -1 +1 @@ -https://github.com/aerospike/aerospike-server.docker +https://github.com/aerospike/aerospike-server-enterprise.docker diff --git a/aerospike/license.md b/aerospike/license.md index e7ba65d90444..f7db53b12ae0 100644 --- a/aerospike/license.md +++ b/aerospike/license.md @@ -1,5 +1,7 @@ -Copyright 2014-2015 Aerospike, Inc. +Copyright 2019-2021 Aerospike, Inc. -Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at [http://www.apache.org/licenses/LICENSE-2.0](http://www.apache.org/licenses/LICENSE-2.0). +If you are using a feature key file you received as part of your commercial enterprise license, you are operating under the [Aerospike Master License Agreement](https://www.aerospike.com/forms/master-license-agreement/). -Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License. +If you are using the Aerospike Database EE evaluation feature key file, you are operating under the [Aerospike Evaluation License Agreement](https://www.aerospike.com/forms/evaluation-license-agreement/). + +If you are using Aerospike Database CE refer to the license information in the [aerospike/aerospike-server](https://github.com/aerospike/aerospike-server) repository. diff --git a/almalinux/README-short.txt b/almalinux/README-short.txt new file mode 100644 index 000000000000..8514523813fd --- /dev/null +++ b/almalinux/README-short.txt @@ -0,0 +1 @@ +The official build of AlmaLinux OS. diff --git a/almalinux/README.md b/almalinux/README.md new file mode 100644 index 000000000000..a71a0facc5d1 --- /dev/null +++ b/almalinux/README.md @@ -0,0 +1,87 @@ + + +# Quick reference + +- **Maintained by**: + [The AlmaLinux OS Foundation](https://github.com/AlmaLinux/docker-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 + +- [`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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://bugs.almalinux.org](https://bugs.almalinux.org) or [GitHub](https://github.com/AlmaLinux/docker-images/issues) + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/almalinux/), [`arm64v8`](https://hub.docker.com/r/arm64v8/almalinux/), [`ppc64le`](https://hub.docker.com/r/ppc64le/almalinux/), [`s390x`](https://hub.docker.com/r/s390x/almalinux/) + +- **Published image artifact details**: + [repo-info repo's `repos/almalinux/` directory](https://github.com/docker-library/repo-info/blob/master/repos/almalinux) ([history](https://github.com/docker-library/repo-info/commits/master/repos/almalinux)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/almalinux` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Falmalinux) + [official-images repo's `library/almalinux` file](https://github.com/docker-library/official-images/blob/master/library/almalinux) ([history](https://github.com/docker-library/official-images/commits/master/library/almalinux)) + +- **Source of this description**: + [docs repo's `almalinux/` directory](https://github.com/docker-library/docs/tree/master/almalinux) ([history](https://github.com/docker-library/docs/commits/master/almalinux)) + +# 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). + +![logo](https://raw.githubusercontent.com/docker-library/docs/23547f3e976bc000d1a01a47241000f72aec9a40/almalinux/logo.png) + +# About this image + +## Platform image + +The default (platform) image is a general-purpose image with a full DNF stack and basic tools like find, tar, vi, etc. + +The `almalinux:latest` tag will always point to the latest stable release of the default image. Major releases and minor releases are also tagged with their version (e.g. `almalinux:8` or `almalinux:8.4`). + +## Minimal image + +The minimal image is a stripped-down image that uses the microdnf package manager and contains a very limited package set. It is designed for applications that come with their own dependencies bundled (e.g. NodeJS, Python). + +The `almalinux:minimal` tag always points to the most recent version of the minimal image. Tags for major (e.g. `almalinux:8-minimal`) and minor (e.g. `almalinux:8.4-minimal`) releases are also available. + +### Upgrade policy + +All images for supported releases will be updated monthly or as needed for security fixes. + +## How It's Made + +The rootfs tarballs for this image are built using the [livemedia-creator tool](http://weldr.io/lorax/livemedia-creator.html). The build script and kickstart files are available in the [AlmaLinux/docker-images](https://github.com/AlmaLinux/docker-images) git repository. + +# License + +View [license information](https://almalinux.org/legal/licensing-policy/) 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 `almalinux/` directory](https://github.com/docker-library/repo-info/tree/master/repos/almalinux). + +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/almalinux/content.md b/almalinux/content.md new file mode 100644 index 000000000000..15219c47fa42 --- /dev/null +++ b/almalinux/content.md @@ -0,0 +1,27 @@ +# 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). + +%%LOGO%% + +# About this image + +## Platform image + +The default (platform) image is a general-purpose image with a full DNF stack and basic tools like find, tar, vi, etc. + +The `%%IMAGE%%:latest` tag will always point to the latest stable release of the default image. Major releases and minor releases are also tagged with their version (e.g. `%%IMAGE%%:8` or `%%IMAGE%%:8.4`). + +## Minimal image + +The minimal image is a stripped-down image that uses the microdnf package manager and contains a very limited package set. It is designed for applications that come with their own dependencies bundled (e.g. NodeJS, Python). + +The `%%IMAGE%%:minimal` tag always points to the most recent version of the minimal image. Tags for major (e.g. `%%IMAGE%%:8-minimal`) and minor (e.g. `%%IMAGE%%:8.4-minimal`) releases are also available. + +### Upgrade policy + +All images for supported releases will be updated monthly or as needed for security fixes. + +## How It's Made + +The rootfs tarballs for this image are built using the [livemedia-creator tool](http://weldr.io/lorax/livemedia-creator.html). The build script and kickstart files are available in the [AlmaLinux/docker-images](https://github.com/AlmaLinux/docker-images) git repository. diff --git a/almalinux/github-repo b/almalinux/github-repo new file mode 100644 index 000000000000..d86cf1bfc5e9 --- /dev/null +++ b/almalinux/github-repo @@ -0,0 +1 @@ +https://github.com/AlmaLinux/docker-images diff --git a/almalinux/issues.md b/almalinux/issues.md new file mode 100644 index 000000000000..cddb326015d9 --- /dev/null +++ b/almalinux/issues.md @@ -0,0 +1 @@ +[https://bugs.almalinux.org](https://bugs.almalinux.org) or [GitHub](%%GITHUB-REPO%%/issues) diff --git a/almalinux/license.md b/almalinux/license.md new file mode 100644 index 000000000000..265b3c423845 --- /dev/null +++ b/almalinux/license.md @@ -0,0 +1 @@ +View [license information](https://almalinux.org/legal/licensing-policy/) for the software contained in this image. diff --git a/almalinux/logo.png b/almalinux/logo.png new file mode 100644 index 000000000000..74553c9d7ea0 Binary files /dev/null and b/almalinux/logo.png differ diff --git a/almalinux/maintainer.md b/almalinux/maintainer.md new file mode 100644 index 000000000000..1ee9e9284fff --- /dev/null +++ b/almalinux/maintainer.md @@ -0,0 +1 @@ +[The AlmaLinux OS Foundation](%%GITHUB-REPO%%) diff --git a/alpine/README.md b/alpine/README.md index 5f87aee52caf..1cd2334d9e64 100644 --- a/alpine/README.md +++ b/alpine/README.md @@ -20,15 +20,15 @@ WARNING: [Natanael Copa](https://github.com/alpinelinux/docker-alpine) (an Alpine Linux maintainer) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`20200428`, `edge`](https://github.com/alpinelinux/docker-alpine/blob/38e5f8a8728204d1b8c3ab62cbf28c2110f8a544/x86_64/Dockerfile) -- [`3.11.6`, `3.11`, `3`, `latest`](https://github.com/alpinelinux/docker-alpine/blob/c5510d5b1d2546d133f7b0938690c3c1e2cd9549/x86_64/Dockerfile) -- [`3.10.5`, `3.10`](https://github.com/alpinelinux/docker-alpine/blob/a02be1f7da059d74c0743792b41d17626128c2a3/x86_64/Dockerfile) -- [`3.9.6`, `3.9`](https://github.com/alpinelinux/docker-alpine/blob/d7eb97a39abbdfe6ba73236f844cb80b756280d1/x86_64/Dockerfile) -- [`3.8.5`, `3.8`](https://github.com/alpinelinux/docker-alpine/blob/c0919567e0350f0128fcad803d8e79c4ecfdf258/x86_64/Dockerfile) +- [`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) # Quick reference (cont.) @@ -36,14 +36,14 @@ WARNING: [https://github.com/alpinelinux/docker-alpine/issues](https://github.com/alpinelinux/docker-alpine/issues) - **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/), [`s390x`](https://hub.docker.com/r/s390x/alpine/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/alpine/` directory](https://github.com/docker-library/repo-info/blob/master/repos/alpine) ([history](https://github.com/docker-library/repo-info/commits/master/repos/alpine)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/alpine`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Falpine) + [official-images repo's `library/alpine` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Falpine) [official-images repo's `library/alpine` file](https://github.com/docker-library/official-images/blob/master/library/alpine) ([history](https://github.com/docker-library/official-images/commits/master/library/alpine)) - **Source of this description**: @@ -62,7 +62,7 @@ WARNING: Use like you would any other base image: ```dockerfile -FROM alpine:3.7 +FROM alpine:3.14 RUN apk add --no-cache mysql-client ENTRYPOINT ["mysql"] ``` @@ -70,7 +70,7 @@ ENTRYPOINT ["mysql"] This example has a virtual image size of only 36.8MB. Compare that to our good friend Ubuntu: ```dockerfile -FROM ubuntu:18.04 +FROM ubuntu:20.04 RUN apt-get update \ && apt-get install -y --no-install-recommends mysql-client \ && rm -rf /var/lib/apt/lists/* diff --git a/alpine/content.md b/alpine/content.md index 8ed8ab3065c8..7aac46438fd2 100644 --- a/alpine/content.md +++ b/alpine/content.md @@ -11,7 +11,7 @@ Use like you would any other base image: ```dockerfile -FROM %%IMAGE%%:3.7 +FROM %%IMAGE%%:3.14 RUN apk add --no-cache mysql-client ENTRYPOINT ["mysql"] ``` @@ -19,7 +19,7 @@ ENTRYPOINT ["mysql"] This example has a virtual image size of only 36.8MB. Compare that to our good friend Ubuntu: ```dockerfile -FROM ubuntu:18.04 +FROM ubuntu:20.04 RUN apt-get update \ && apt-get install -y --no-install-recommends mysql-client \ && rm -rf /var/lib/apt/lists/* diff --git a/alt/README.md b/alt/README.md index 0070aa9323a1..5007fdd6c37a 100644 --- a/alt/README.md +++ b/alt/README.md @@ -20,13 +20,13 @@ WARNING: [The ALT Linux Team Cloud](https://github.com/alt-cloud/docker-brew-alt) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`p9`, `latest`](https://github.com/alt-cloud/docker-brew-alt/blob/c3c1f444708cc0ce980ed2d13b877a4faf8ffe6e/x86_64/Dockerfile) -- [`p8`](https://github.com/alt-cloud/docker-brew-alt/blob/b7c6a1e701ad6454d2644f57bbb20e22a1db9c64/x86_64/Dockerfile) -- [`sisyphus`](https://github.com/alt-cloud/docker-brew-alt/blob/52b1dc24145fd5fd93cec6851ac91faea799cf94/x86_64/Dockerfile) +- [`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) # Quick reference (cont.) @@ -36,14 +36,14 @@ 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/), [`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/), [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/alt`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Falt) + [official-images repo's `library/alt` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Falt) [official-images repo's `library/alt` file](https://github.com/docker-library/official-images/blob/master/library/alt) ([history](https://github.com/docker-library/official-images/commits/master/library/alt)) - **Source of this description**: diff --git a/amazoncorretto/README.md b/amazoncorretto/README.md index 0ef9e7e68363..7ec2862c3d75 100644 --- a/amazoncorretto/README.md +++ b/amazoncorretto/README.md @@ -17,20 +17,49 @@ WARNING: # Quick reference - **Maintained by**: - [the AWS JDK team](https://github.com/corretto/corretto-8-docker) + [the AWS JDK team](https://github.com/corretto/corretto-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8`, `8u252`, `8-al2-full`, `latest`](https://github.com/corretto/corretto-8-docker/blob/a1e2c7e4fb1d00430b76963020aa2861bba7658f/Dockerfile) -- [`11`, `11.0.7`, `11-al2-full`](https://github.com/corretto/corretto-11-docker/blob/6ae94c922f550dfd3d9d08b04c10f6c114ee0e51/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/corretto/corretto-8-docker/issues](https://github.com/corretto/corretto-8-docker/issues) + [https://github.com/corretto/corretto-docker/issues](https://github.com/corretto/corretto-docker/issues) - **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/) @@ -40,7 +69,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/amazoncorretto`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Famazoncorretto) + [official-images repo's `library/amazoncorretto` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Famazoncorretto) [official-images repo's `library/amazoncorretto` file](https://github.com/docker-library/official-images/blob/master/library/amazoncorretto) ([history](https://github.com/docker-library/official-images/commits/master/library/amazoncorretto)) - **Source of this description**: @@ -76,6 +105,34 @@ Amazon will provide security updates for Corretto 8 until at least June 2023. Up Corretto is designed as a drop-in replacement for all Java SE distributions unless you are using features (e.g., Java Flight Recorder) not available in OpenJDK. Once Corretto binaries are installed on a host and correctly invoked to run your Java applications (e.g., using the alternatives command on Linux), existing command-line options, tuning parameters, monitoring, and anything else in place will continue to work as before. +### Why does security scanner show that a docker image has a CVE? + +If a security scanner reports that an amazoncorretto image includes a CVE, the first recommended action is to pull an updated version of this image. + +If no updated image is available, run the appropriate command to update packages for the platform, ie. run "apk -U upgrade" for Alpine or "yum update -y --security" for AmazonLinux in your Dockerfiles or systems to resolve the issue immediately. + +If no updated package is available, please treat this as a potential security issue and follow [these instructions](https://aws.amazon.com/security/vulnerability-reporting/) or email AWS security directly at [aws-security@amazon.com](mailto:aws-security@amazon.com). + +It is the responsibility of the base docker image supplier to provide timely security updates to images and packages. The amazoncorretto images are automatically rebuilt when a new base image is made available, but we do not make changes to our Dockerfiles to pull in one-off package updates. If a new base image has not yet been made generally available by a base docker image maintainer, please contact that maintainer to request that the issue be addressed. + +Note that there are multiple reasons why a CVE may appear to be present in a docker image, as explained in the [docker library FAQs](https://github.com/docker-library/faq/tree/73f10b0daf2fb8e7b38efaccc0e90b3510919d51#why-does-my-security-scanner-show-that-an-image-has-cves). + +# Image Variants + +The `amazoncorretto` images come in many flavors, each designed for a specific use case. + +## `amazoncorretto:` + +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. + +## `amazoncorretto:-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 Amazon Corretto is released under the same open source license as OpenJDK, which is licensed under the GNU Public License version 2 with the Class Path Exception ([GPLv2 with CPE](https://openjdk.java.net/legal/gplv2+ce.html)). diff --git a/amazoncorretto/content.md b/amazoncorretto/content.md index 783d33684c83..26cca78fc8d3 100644 --- a/amazoncorretto/content.md +++ b/amazoncorretto/content.md @@ -27,3 +27,15 @@ Amazon will provide security updates for Corretto 8 until at least June 2023. Up ### Can I use Corretto as a drop-in replacement for other JDKs? Corretto is designed as a drop-in replacement for all Java SE distributions unless you are using features (e.g., Java Flight Recorder) not available in OpenJDK. Once Corretto binaries are installed on a host and correctly invoked to run your Java applications (e.g., using the alternatives command on Linux), existing command-line options, tuning parameters, monitoring, and anything else in place will continue to work as before. + +### Why does security scanner show that a docker image has a CVE? + +If a security scanner reports that an amazoncorretto image includes a CVE, the first recommended action is to pull an updated version of this image. + +If no updated image is available, run the appropriate command to update packages for the platform, ie. run "apk -U upgrade" for Alpine or "yum update -y --security" for AmazonLinux in your Dockerfiles or systems to resolve the issue immediately. + +If no updated package is available, please treat this as a potential security issue and follow [these instructions](https://aws.amazon.com/security/vulnerability-reporting/) or email AWS security directly at [aws-security@amazon.com](mailto:aws-security@amazon.com). + +It is the responsibility of the base docker image supplier to provide timely security updates to images and packages. The amazoncorretto images are automatically rebuilt when a new base image is made available, but we do not make changes to our Dockerfiles to pull in one-off package updates. If a new base image has not yet been made generally available by a base docker image maintainer, please contact that maintainer to request that the issue be addressed. + +Note that there are multiple reasons why a CVE may appear to be present in a docker image, as explained in the [docker library FAQs](https://github.com/docker-library/faq/tree/73f10b0daf2fb8e7b38efaccc0e90b3510919d51#why-does-my-security-scanner-show-that-an-image-has-cves). diff --git a/amazoncorretto/github-repo b/amazoncorretto/github-repo index 9b9c270daeb0..960f5798efbe 100644 --- a/amazoncorretto/github-repo +++ b/amazoncorretto/github-repo @@ -1 +1 @@ -https://github.com/corretto/corretto-8-docker +https://github.com/corretto/corretto-docker diff --git a/amazonlinux/README.md b/amazonlinux/README.md index bc75ac053333..22e03c32da20 100644 --- a/amazonlinux/README.md +++ b/amazonlinux/README.md @@ -20,14 +20,16 @@ WARNING: [the Amazon Linux Team](https://github.com/aws/amazon-linux-docker-images) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.0.20200406.0`, `2`, `latest`](https://github.com/amazonlinux/container-images/blob/92466cbdf8600e425701459dba31a31aa53415e7/Dockerfile) -- [`2.0.20200406.0-with-sources`, `2-with-sources`, `with-sources`](https://github.com/amazonlinux/container-images/blob/d686ee33d867fddd67595fb5d0df581b23ebfdfe/Dockerfile) -- [`2018.03.0.20200318.1`, `2018.03`, `1`](https://github.com/amazonlinux/container-images/blob/3209338a28f4fa5f0a189e517c0809d095c777d8/Dockerfile) -- [`2018.03.0.20200318.1-with-sources`, `2018.03-with-sources`, `1-with-sources`](https://github.com/amazonlinux/container-images/blob/4f52cd2aa92456ef8f867fb6fa8ac63aab2d462f/Dockerfile) +- [`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) # Quick reference (cont.) @@ -42,7 +44,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/amazonlinux`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Famazonlinux) + [official-images repo's `library/amazonlinux` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Famazonlinux) [official-images repo's `library/amazonlinux` file](https://github.com/docker-library/official-images/blob/master/library/amazonlinux) ([history](https://github.com/docker-library/official-images/commits/master/library/amazonlinux)) - **Source of this description**: @@ -56,6 +58,8 @@ The Amazon Linux container image contains a minimal set of packages. To install 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.** + 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. ![logo](https://raw.githubusercontent.com/docker-library/docs/9ca9202567ccc25ce110f98bbeb6c929844e05d0/amazonlinux/logo.png) diff --git a/amazonlinux/content.md b/amazonlinux/content.md index c222b8167f3e..e71ac1c4486f 100644 --- a/amazonlinux/content.md +++ b/amazonlinux/content.md @@ -6,6 +6,8 @@ The Amazon Linux container image contains a minimal set of packages. To install 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.** + 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. %%LOGO%% diff --git a/api-firewall/README-short.txt b/api-firewall/README-short.txt new file mode 100644 index 000000000000..d27fd67af142 --- /dev/null +++ b/api-firewall/README-short.txt @@ -0,0 +1 @@ +A light-weighted API Firewall to protect your API endpoints with API Schema validation. \ No newline at end of file diff --git a/api-firewall/README.md b/api-firewall/README.md new file mode 100644 index 000000000000..431889b086cc --- /dev/null +++ b/api-firewall/README.md @@ -0,0 +1,153 @@ + + +# Quick reference + +- **Maintained by**: + The Wallarm Team + +- **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 + +- [`0.6.9`, `latest`](https://github.com/wallarm/api-firewall-docker/blob/c2b622e7f59546d9fb338c81fa82d405a8767485/0.6.10/Dockerfile) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/wallarm/api-firewall/issues](https://github.com/wallarm/api-firewall/issues) + +- **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/) + +- **Published image artifact details**: + [repo-info repo's `repos/api-firewall/` directory](https://github.com/docker-library/repo-info/blob/master/repos/api-firewall) ([history](https://github.com/docker-library/repo-info/commits/master/repos/api-firewall)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/api-firewall` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fapi-firewall) + [official-images repo's `library/api-firewall` file](https://github.com/docker-library/official-images/blob/master/library/api-firewall) ([history](https://github.com/docker-library/official-images/commits/master/library/api-firewall)) + +- **Source of this description**: + [docs repo's `api-firewall/` directory](https://github.com/docker-library/docs/tree/master/api-firewall) ([history](https://github.com/docker-library/docs/commits/master/api-firewall)) + +![logo](https://raw.githubusercontent.com/docker-library/docs/61dec2a536d996ed45a71f3fad57cc9d24d6ad69/api-firewall/logo.svg?sanitize=true) + +# What is API Firewall? + +Wallarm API Firewall is an open-source light-weighted proxy designed to protect REST API endpoints in cloud-native environments by hardening based on a strict OpenAPI/Swagger schema validation. Wallarm API Firewall relies on a positive security model allowing calls that match a predefined API specification for requests and responses, while rejecting everything else. + +The **key features** of API Firewall are: + +- Protect REST API endpoints by blocking requests and responses that do not match the OAS/Swagger schema +- Discover Shadow API endpoints +- If using OAuth 2.0 protocol-based authentication, validate access tokens +- Quick and easy deployment and configuration +- Customization of request and response processing modes, response codes and log format + +# Use cases + +- Block abnormal requests and responses that do not match the OpenAPI 3.0 specification (if running API Firewall in the blocking mode) +- Discover Shadow APIs and undocumented endpoints (if running API Firewall in the logging mode) +- Log abnormal requests and responses that do not match the OpenAPI 3.0 specification (if running API Firewall in the logging mode) + +# API schema validation and positive security model + +When starting API Firewall, you should provide the [OpenAPI 3.0 specification](https://swagger.io/specification/) of the application to be protected with API Firewall. The started API Firewall will operate as a reverse proxy and validate whether requests and responses match the schema defined in the specification. + +The traffic that does not match the schema will be logged using the [`STDOUT` and `STDERR` Docker services](https://docs.docker.com/config/containers/logging/) or blocked (depending on the configured API Firewall operation mode). If operating in the logging mode and detecting the traffic on endpoints that are not included in the specification, API Firewall also logs these endpoints as the shadow ones (except for endpoints returning the code `404`). + +![API Firewall scheme](https://github.com/wallarm/api-firewall/blob/2ace2714ac5777694bde85c8cdbb1308e98a7fea/images/firewall-as-proxy.png?raw=true) + +Provided API schema should be described using the [OpenAPI 3.0 specification](https://swagger.io/specification/) in the YAML or JSON file (`.yaml`, `.yml`, `.json` file extensions). + +By allowing you to set the traffic requirements with the OpenAPI 3.0 specification, Wallarm API Firewall relies on a positive security model. + +# Technical characteristics + +API Firewall works as a reverse proxy with a built-in OpenAPI 3.0 request and response validator. The validator is written in Go and optimized for extreme performance and near-zero added latency. + +# Starting API Firewall + +To download, install, and start Wallarm API Firewall on Docker, see the [instructions](https://docs.wallarm.com/api-firewall/installation-guides/docker-container/). + +# Demos + +You can try API Firewall by running the demo environment that deploys an example application protected with Wallarm API Firewall. There are two available demo environments: + +- [Wallarm API Firewall demo with Docker Compose](https://github.com/wallarm/api-firewall/tree/main/demo/docker-compose) +- [Wallarm API Firewall demo with Kubernetes](https://github.com/wallarm/api-firewall/tree/main/demo/kubernetes) + +# Wallarm's blog articles related to API Firewall + +- [Discovering Shadow APIs with API Firewall](https://lab.wallarm.com/discovering-shadow-apis-with-a-api-firewall/) +- [Wallarm API Firewall outperforms NGINX in a production environment](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/) + +# Performance + +When creating API Firewall, we prioritized speed and efficiency to ensure that our customers would have the fastest APIs possible. Our latest tests demonstrate that the average time required for API Firewall to process one request is 1.339 ms: + +```console +$ ab -c 200 -n 10000 -p ./large.json -T application/json http://127.0.0.1:8282/test/signup + +Document Path: /test/signup +Document Length: 20 bytes + +Concurrency Level: 200 +Time taken for tests: 0.769 seconds +Complete requests: 10000 +Failed requests: 0 +Total transferred: 2150000 bytes +Total body sent: 283770000 +HTML transferred: 200000 bytes +Requests per second: 13005.81 [#/sec] (mean) +Time per request: 15.378 [ms] (mean) +Time per request: 0.077 [ms] (mean, across all concurrent requests) +Transfer rate: 2730.71 [Kbytes/sec] received + 360415.95 kb/s sent + 363146.67 kb/s total + +Connection Times (ms) + min mean[+/-sd] median max +Connect: 0 5 1.6 5 12 +Processing: 2 10 5.4 9 59 +Waiting: 2 8 5.2 7 56 +Total: 3 15 5.7 14 68 + +Percentage of the requests served within a certain time (ms) + 50% 14 + 66% 15 + 75% 16 + 80% 17 + 90% 18 + 95% 23 + 98% 36 + 99% 44 + 100% 68 (longest request) +``` + +These performance results are not the only ones we have got during API Firewall testing. Other results along with the methods used to improve API Firewall performance are described in this [Wallarm's blog article](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/). + +# License + +View [license information](https://www.mozilla.org/en-US/MPL/2.0/) 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 `api-firewall/` directory](https://github.com/docker-library/repo-info/tree/master/repos/api-firewall). + +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/api-firewall/content.md b/api-firewall/content.md new file mode 100644 index 000000000000..26515e7924f2 --- /dev/null +++ b/api-firewall/content.md @@ -0,0 +1,96 @@ +%%LOGO%% + +# What is API Firewall? + +Wallarm API Firewall is an open-source light-weighted proxy designed to protect REST API endpoints in cloud-native environments by hardening based on a strict OpenAPI/Swagger schema validation. Wallarm API Firewall relies on a positive security model allowing calls that match a predefined API specification for requests and responses, while rejecting everything else. + +The **key features** of API Firewall are: + +- Protect REST API endpoints by blocking requests and responses that do not match the OAS/Swagger schema +- Discover Shadow API endpoints +- If using OAuth 2.0 protocol-based authentication, validate access tokens +- Quick and easy deployment and configuration +- Customization of request and response processing modes, response codes and log format + +# Use cases + +- Block abnormal requests and responses that do not match the OpenAPI 3.0 specification (if running API Firewall in the blocking mode) +- Discover Shadow APIs and undocumented endpoints (if running API Firewall in the logging mode) +- Log abnormal requests and responses that do not match the OpenAPI 3.0 specification (if running API Firewall in the logging mode) + +# API schema validation and positive security model + +When starting API Firewall, you should provide the [OpenAPI 3.0 specification](https://swagger.io/specification/) of the application to be protected with API Firewall. The started API Firewall will operate as a reverse proxy and validate whether requests and responses match the schema defined in the specification. + +The traffic that does not match the schema will be logged using the [`STDOUT` and `STDERR` Docker services](https://docs.docker.com/config/containers/logging/) or blocked (depending on the configured API Firewall operation mode). If operating in the logging mode and detecting the traffic on endpoints that are not included in the specification, API Firewall also logs these endpoints as the shadow ones (except for endpoints returning the code `404`). + +![API Firewall scheme](https://github.com/wallarm/api-firewall/blob/2ace2714ac5777694bde85c8cdbb1308e98a7fea/images/firewall-as-proxy.png?raw=true) + +Provided API schema should be described using the [OpenAPI 3.0 specification](https://swagger.io/specification/) in the YAML or JSON file (`.yaml`, `.yml`, `.json` file extensions). + +By allowing you to set the traffic requirements with the OpenAPI 3.0 specification, Wallarm API Firewall relies on a positive security model. + +# Technical characteristics + +API Firewall works as a reverse proxy with a built-in OpenAPI 3.0 request and response validator. The validator is written in Go and optimized for extreme performance and near-zero added latency. + +# Starting API Firewall + +To download, install, and start Wallarm API Firewall on Docker, see the [instructions](https://docs.wallarm.com/api-firewall/installation-guides/docker-container/). + +# Demos + +You can try API Firewall by running the demo environment that deploys an example application protected with Wallarm API Firewall. There are two available demo environments: + +- [Wallarm API Firewall demo with Docker Compose](https://github.com/wallarm/api-firewall/tree/main/demo/docker-compose) +- [Wallarm API Firewall demo with Kubernetes](https://github.com/wallarm/api-firewall/tree/main/demo/kubernetes) + +# Wallarm's blog articles related to API Firewall + +- [Discovering Shadow APIs with API Firewall](https://lab.wallarm.com/discovering-shadow-apis-with-a-api-firewall/) +- [Wallarm API Firewall outperforms NGINX in a production environment](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/) + +# Performance + +When creating API Firewall, we prioritized speed and efficiency to ensure that our customers would have the fastest APIs possible. Our latest tests demonstrate that the average time required for API Firewall to process one request is 1.339 ms: + +```console +$ ab -c 200 -n 10000 -p ./large.json -T application/json http://127.0.0.1:8282/test/signup + +Document Path: /test/signup +Document Length: 20 bytes + +Concurrency Level: 200 +Time taken for tests: 0.769 seconds +Complete requests: 10000 +Failed requests: 0 +Total transferred: 2150000 bytes +Total body sent: 283770000 +HTML transferred: 200000 bytes +Requests per second: 13005.81 [#/sec] (mean) +Time per request: 15.378 [ms] (mean) +Time per request: 0.077 [ms] (mean, across all concurrent requests) +Transfer rate: 2730.71 [Kbytes/sec] received + 360415.95 kb/s sent + 363146.67 kb/s total + +Connection Times (ms) + min mean[+/-sd] median max +Connect: 0 5 1.6 5 12 +Processing: 2 10 5.4 9 59 +Waiting: 2 8 5.2 7 56 +Total: 3 15 5.7 14 68 + +Percentage of the requests served within a certain time (ms) + 50% 14 + 66% 15 + 75% 16 + 80% 17 + 90% 18 + 95% 23 + 98% 36 + 99% 44 + 100% 68 (longest request) +``` + +These performance results are not the only ones we have got during API Firewall testing. Other results along with the methods used to improve API Firewall performance are described in this [Wallarm's blog article](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/). diff --git a/api-firewall/github-repo b/api-firewall/github-repo new file mode 100644 index 000000000000..7594bc60947b --- /dev/null +++ b/api-firewall/github-repo @@ -0,0 +1 @@ +https://github.com/wallarm/api-firewall \ No newline at end of file diff --git a/api-firewall/license.md b/api-firewall/license.md new file mode 100644 index 000000000000..fd11e071a1f0 --- /dev/null +++ b/api-firewall/license.md @@ -0,0 +1 @@ +View [license information](https://www.mozilla.org/en-US/MPL/2.0/) for the software contained in this image. diff --git a/api-firewall/logo.svg b/api-firewall/logo.svg new file mode 100644 index 000000000000..d0a2e7e1301c --- /dev/null +++ b/api-firewall/logo.svg @@ -0,0 +1,22 @@ + + + + + + + diff --git a/api-firewall/maintainer.md b/api-firewall/maintainer.md new file mode 100644 index 000000000000..f160178bb259 --- /dev/null +++ b/api-firewall/maintainer.md @@ -0,0 +1 @@ +The Wallarm Team diff --git a/arangodb/README.md b/arangodb/README.md index 5ebe65462608..64b51426e61b 100644 --- a/arangodb/README.md +++ b/arangodb/README.md @@ -20,13 +20,13 @@ WARNING: [ArangoDB](https://github.com/arangodb/arangodb-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.4`, `3.4.10`](https://github.com/arangodb/arangodb-docker/blob/63dc866beb0546ba3b172e76f64759abfe1a0a28/alpine/3.4.10/Dockerfile) -- [`3.5`, `3.5.5`](https://github.com/arangodb/arangodb-docker/blob/8690d4d6c3f3f0aaea34af72455a2c78a5669149/alpine/3.5.5.1/Dockerfile) -- [`3.6`, `3.6.3`, `latest`](https://github.com/arangodb/arangodb-docker/blob/63dc866beb0546ba3b172e76f64759abfe1a0a28/alpine/3.6.3.1/Dockerfile) +- [`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) # Quick reference (cont.) @@ -34,14 +34,14 @@ WARNING: [https://github.com/arangodb/arangodb-docker/issues](https://github.com/arangodb/arangodb-docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/arangodb/) + [`amd64`](https://hub.docker.com/r/amd64/arangodb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/arangodb/) - **Published image artifact details**: [repo-info repo's `repos/arangodb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/arangodb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/arangodb)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/arangodb`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Farangodb) + [official-images repo's `library/arangodb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Farangodb) [official-images repo's `library/arangodb` file](https://github.com/docker-library/official-images/blob/master/library/arangodb) ([history](https://github.com/docker-library/official-images/commits/master/library/arangodb)) - **Source of this description**: @@ -49,9 +49,9 @@ 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 with a few mouse clicks. +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 runs everywhere: On-prem, in the cloud and also on [ArangoDBs Cloud Service Oasis](https://cloud.arangodb.com/home). +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. @@ -175,13 +175,34 @@ unix> docker exec -it jolly_joker arangosh See more information about [Configuration](https://www.arangodb.com/docs/stable/administration-configuration.html) -## Persistent Data +### Limiting resource utilization + +`arangod` checks the following environment variables, which can be used to restrict how much memory and how many CPU cores it should use: + +- `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` *(introduced in v3.6.3)* + + This variable can be used to override the automatic detection of the total amount of RAM present on the system. One can specify a decimal number (in bytes). Furthermore, if `G` or `g` is appended, the value is multiplied by `2^30`. If `M` or `m` is appended, the value is multiplied by `2^20`. If `K` or `k` is appended, the value is multiplied by `2^10`. That is, `64G` means 64 gigabytes. + + The total amount of RAM detected is logged as an INFO message at server start. If the variable is set, the overridden value is shown. Various default sizes are calculated based on this value (e.g. RocksDB buffer cache size). + + Setting this option can in particular be useful in two cases: -ArangoDB supports two different storage engines as of ArangoDB 3.2. You can choose them while instantiating the container with the environment variable `ARANGO_STORAGE_ENGINE`. With `mmfiles` you choose the classic storage engine, `rocksdb` will choose the newly introduced storage engine based on [RocksDB](http://rocksdb.org/). The default choice is `mmfiles`. + 1. If `arangod` is running in a container and its cgroup has a RAM limitation, then one should specify this limitation in this environment variable, since it is currently not automatically detected. + 2. If `arangod` is running alongside other services on the same machine and thus sharing the RAM with them, one should limit the amount of memory using this environment variable. + +- `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` *(introduced in v3.7.1)* + + This variable can be used to override the automatic detection of the number of CPU cores present on the system. + + The number of CPU cores detected is logged as an INFO message at server start. If the variable is set, the overridden value is shown. Various default values for threading are calculated based on this value. + + Setting this option is useful if `arangod` is running in a container or alongside other services on the same machine and shall not use all available CPUs. + +## Persistent Data -ArangoDB use 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. +ArangoDB supports two different storage engines from version 3.2 to 3.6. You can choose them while instantiating the container with the environment variable `ARANGO_STORAGE_ENGINE`. With `mmfiles` you choose the classic storage engine (not available in 3.7 and later), `rocksdb` will choose the storage engine based on [RocksDB](http://rocksdb.org/). The default choice is `rocksdb` from version 3.4 on. -Please note that the old version 2.x used `/var/lib/arangodb` and `/var/lib/arangodb-apps`. We will refer to the 3.x variant in this document. In case you are starting a 2.x image just replace it with the 2.x variant. +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. @@ -232,7 +253,7 @@ When deriving the image, you can control the instantiation via putting files int # 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). +[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). 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 576949ed55aa..935d90487510 100644 --- a/arangodb/content.md +++ b/arangodb/content.md @@ -1,8 +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 with a few mouse clicks. +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 runs everywhere: On-prem, in the cloud and also on [ArangoDBs Cloud Service Oasis](https://cloud.arangodb.com/home). +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. @@ -126,13 +126,34 @@ unix> docker exec -it jolly_joker arangosh See more information about [Configuration](https://www.arangodb.com/docs/stable/administration-configuration.html) -## Persistent Data +### Limiting resource utilization + +`arangod` checks the following environment variables, which can be used to restrict how much memory and how many CPU cores it should use: + +- `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` *(introduced in v3.6.3)* + + This variable can be used to override the automatic detection of the total amount of RAM present on the system. One can specify a decimal number (in bytes). Furthermore, if `G` or `g` is appended, the value is multiplied by `2^30`. If `M` or `m` is appended, the value is multiplied by `2^20`. If `K` or `k` is appended, the value is multiplied by `2^10`. That is, `64G` means 64 gigabytes. + + The total amount of RAM detected is logged as an INFO message at server start. If the variable is set, the overridden value is shown. Various default sizes are calculated based on this value (e.g. RocksDB buffer cache size). + + Setting this option can in particular be useful in two cases: -ArangoDB supports two different storage engines as of ArangoDB 3.2. You can choose them while instantiating the container with the environment variable `ARANGO_STORAGE_ENGINE`. With `mmfiles` you choose the classic storage engine, `rocksdb` will choose the newly introduced storage engine based on [RocksDB](http://rocksdb.org/). The default choice is `mmfiles`. + 1. If `arangod` is running in a container and its cgroup has a RAM limitation, then one should specify this limitation in this environment variable, since it is currently not automatically detected. + 2. If `arangod` is running alongside other services on the same machine and thus sharing the RAM with them, one should limit the amount of memory using this environment variable. + +- `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` *(introduced in v3.7.1)* + + This variable can be used to override the automatic detection of the number of CPU cores present on the system. + + The number of CPU cores detected is logged as an INFO message at server start. If the variable is set, the overridden value is shown. Various default values for threading are calculated based on this value. + + Setting this option is useful if `arangod` is running in a container or alongside other services on the same machine and shall not use all available CPUs. + +## Persistent Data -ArangoDB use 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. +ArangoDB supports two different storage engines from version 3.2 to 3.6. You can choose them while instantiating the container with the environment variable `ARANGO_STORAGE_ENGINE`. With `mmfiles` you choose the classic storage engine (not available in 3.7 and later), `rocksdb` will choose the storage engine based on [RocksDB](http://rocksdb.org/). The default choice is `rocksdb` from version 3.4 on. -Please note that the old version 2.x used `/var/lib/arangodb` and `/var/lib/arangodb-apps`. We will refer to the 3.x variant in this document. In case you are starting a 2.x image just replace it with the 2.x variant. +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. diff --git a/arangodb/license.md b/arangodb/license.md index a54be7f1daff..50e704672fa9 100644 --- a/arangodb/license.md +++ b/arangodb/license.md @@ -1 +1 @@ -[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). +[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). diff --git a/archlinux/README.md b/archlinux/README.md index 0f0e5c908211..571f17fc0cc2 100644 --- a/archlinux/README.md +++ b/archlinux/README.md @@ -17,26 +17,20 @@ WARNING: # Quick reference - **Maintained by**: - Arch Linux trusted users [Santiago Torres-Arias](https://www.archlinux.org/people/trusted-users/#sangy) and [Christian Rebischke](https://www.archlinux.org/people/trusted-users/#shibumi) as well as Arch Linux developer [Pierre Schmitz](https://www.archlinux.org/people/developers/#pierre). + Arch Linux trusted users [Santiago Torres-Arias](https://www.archlinux.org/people/trusted-users/#sangy), [Christian Rebischke](https://www.archlinux.org/people/trusted-users/#shibumi) and [Justin Kromlinger](https://www.archlinux.org/people/trusted-users/#hashworks) as well as Arch Linux developer [Pierre Schmitz](https://www.archlinux.org/people/developers/#pierre). - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `20200505`](https://github.com/archlinux/archlinux-docker/blob/dd03495526350f45138b21be43f2a93c1649453a/Dockerfile) -- [`20200407`](https://github.com/archlinux/archlinux-docker/blob/c136f3e502204c8d61fbfb48c2c64fa76c4f143c/Dockerfile) -- [`20200306`](https://github.com/archlinux/archlinux-docker/blob/7cc3899f3be9e2da0bc3c03f82f0f570df9ce908/Dockerfile) -- [`20200205`](https://github.com/archlinux/archlinux-docker/blob/38da0535b738f00ec3beeb18fef27758744b7f13/Dockerfile) -- [`20200106`](https://github.com/archlinux/archlinux-docker/blob/5cda6709af009df0c1db0022629b45a2ddc9f717/Dockerfile) -- [`20191205`](https://github.com/archlinux/archlinux-docker/blob/b285a662b4fb81b8614f8705d7ddd7681b8d530b/Dockerfile) -- [`20191105`](https://github.com/archlinux/archlinux-docker/blob/15a9a3997aa8e571a8ce2a019b65b5eb698919ec/Dockerfile) -- [`20191006`](https://github.com/archlinux/archlinux-docker/blob/ed18f615efd16f3a39b2c3eeed79a1f0c6a1dfca/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/archlinux/archlinux-docker/issues](https://github.com/archlinux/archlinux-docker/issues) + https://gitlab.archlinux.org/archlinux/archlinux-docker/issues - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) [`amd64`](https://hub.docker.com/r/amd64/archlinux/) @@ -46,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/archlinux`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Farchlinux) + [official-images repo's `library/archlinux` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Farchlinux) [official-images repo's `library/archlinux` file](https://github.com/docker-library/official-images/blob/master/library/archlinux) ([history](https://github.com/docker-library/official-images/commits/master/library/archlinux)) - **Source of this description**: @@ -56,34 +50,38 @@ WARNING: Arch Linux, is a lightweight and flexible Linux® distribution that tries to Keep It Simple. -Currently we have official packages optimized for the x86-64 architecture. We complement our official package sets with a community-operated package repository that grows in size and quality each and every day. +Currently, we have official packages optimized for the x86-64 architecture. We complement our official package sets with a community-operated package repository that grows in size and quality each and every day. -Our strong community is diverse and helpful, and we pride ourselves on the range of skillsets and uses for Arch that stem from it. Please check out our forums and mailing lists to get your feet wet. Also glance through our [wiki](https://wiki.archlinux.org) if you want to learn more about Arch. +Our strong community is diverse and helpful, and we pride ourselves on the range of skill sets and uses for Arch that stem from it. Please check out our forums and mailing lists to get your feet wet. Also glance through our [wiki](https://wiki.archlinux.org) if you want to learn more about Arch. ![logo](https://raw.githubusercontent.com/docker-library/docs/ccacad8fa355ebf38dcfd8c216855ab55f981f17/archlinux/logo.png) # About this image -The base filesystem tarball for this image is auto-generated in Arch Linux infrastructure at the beginning of each month. Given the rolling-release nature of Arch Linux, images are tagged with the timestamp of the date they were generated. For example, `archlinux:20191006` was generated the Sixth of October of 2019. The latest tag will contain the latest build always. +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. + +Besides `base` we also provide images for the `base-devel` package group. This image is intended to serve the following goals: - Provide the Arch experience in a Docker Image -- Provide the most simple but complete image to base every other upon -- pacman needs to work out of the box +- Provide simplest but complete image to base every other upon +- `pacman` needs to work out of the box - All installed packages have to be kept unmodified -## Base packages +> ⚠️⚠️⚠️ 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. ⚠️⚠️⚠️ + +## Availability -Given that that the image is intended to be light-weight several packages of the `base` group have been removed. Please take a look at the [packages](https://github.com/archlinux/archlinux-docker/blob/master/packages) file to see what packages are included on this release. +Root filesystem tarballs are [provided by our GitLab](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/releases) for at least two months. ## Updating -Arch Linux is a rolling release distribution, so a full update is recommended when installing new packages. In other words, we suggest to either execute `RUN pacman -Syu` immediately after your `FROM` statement or as soon as you docker run into a container. +Arch Linux is a rolling release distribution, so a full update is recommended when installing new packages. In other words, we suggest to either execute `RUN pacman -Syu` immediately after your `FROM` statement or as soon as you `docker run` into a container. ## How It's Made -You can build this image with the tools on the [Github repository](https://github.com/archlinux/archlinux-docker) using the included makefile. +You can build this image with the tools on the [Arch Linux GitLab repository](https://gitlab.archlinux.org/archlinux/archlinux-docker) using the included makefile. # License diff --git a/archlinux/content.md b/archlinux/content.md index 4ed80731fe15..0e66b1fea0f4 100644 --- a/archlinux/content.md +++ b/archlinux/content.md @@ -2,31 +2,35 @@ Arch Linux, is a lightweight and flexible Linux® distribution that tries to Keep It Simple. -Currently we have official packages optimized for the x86-64 architecture. We complement our official package sets with a community-operated package repository that grows in size and quality each and every day. +Currently, we have official packages optimized for the x86-64 architecture. We complement our official package sets with a community-operated package repository that grows in size and quality each and every day. -Our strong community is diverse and helpful, and we pride ourselves on the range of skillsets and uses for Arch that stem from it. Please check out our forums and mailing lists to get your feet wet. Also glance through our [wiki](https://wiki.archlinux.org) if you want to learn more about Arch. +Our strong community is diverse and helpful, and we pride ourselves on the range of skill sets and uses for Arch that stem from it. Please check out our forums and mailing lists to get your feet wet. Also glance through our [wiki](https://wiki.archlinux.org) if you want to learn more about Arch. %%LOGO%% # About this image -The base filesystem tarball for this image is auto-generated in Arch Linux infrastructure at the beginning of each month. Given the rolling-release nature of Arch Linux, images are tagged with the timestamp of the date they were generated. For example, `%%IMAGE%%:20191006` was generated the Sixth of October of 2019. The latest tag will contain the latest build always. +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. + +Besides `base` we also provide images for the `base-devel` package group. This image is intended to serve the following goals: - Provide the Arch experience in a Docker Image -- Provide the most simple but complete image to base every other upon -- pacman needs to work out of the box +- Provide simplest but complete image to base every other upon +- `pacman` needs to work out of the box - All installed packages have to be kept unmodified -## Base packages +> ⚠️⚠️⚠️ 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. ⚠️⚠️⚠️ + +## Availability -Given that that the image is intended to be light-weight several packages of the `base` group have been removed. Please take a look at the [packages](https://github.com/archlinux/archlinux-docker/blob/master/packages) file to see what packages are included on this release. +Root filesystem tarballs are [provided by our GitLab](https://gitlab.archlinux.org/archlinux/archlinux-docker/-/releases) for at least two months. ## Updating -Arch Linux is a rolling release distribution, so a full update is recommended when installing new packages. In other words, we suggest to either execute `RUN pacman -Syu` immediately after your `FROM` statement or as soon as you docker run into a container. +Arch Linux is a rolling release distribution, so a full update is recommended when installing new packages. In other words, we suggest to either execute `RUN pacman -Syu` immediately after your `FROM` statement or as soon as you `docker run` into a container. ## How It's Made -You can build this image with the tools on the [Github repository](%%GITHUB-REPO%%) using the included makefile. +You can build this image with the tools on the [Arch Linux GitLab repository](https://gitlab.archlinux.org/archlinux/archlinux-docker) using the included makefile. diff --git a/archlinux/issues.md b/archlinux/issues.md new file mode 100644 index 000000000000..d36ff968878a --- /dev/null +++ b/archlinux/issues.md @@ -0,0 +1 @@ +https://gitlab.archlinux.org/archlinux/archlinux-docker/issues diff --git a/archlinux/maintainer.md b/archlinux/maintainer.md index a8205cb8b724..d3a3bb1f192d 100644 --- a/archlinux/maintainer.md +++ b/archlinux/maintainer.md @@ -1 +1 @@ -Arch Linux trusted users [Santiago Torres-Arias](https://www.archlinux.org/people/trusted-users/#sangy) and [Christian Rebischke](https://www.archlinux.org/people/trusted-users/#shibumi) as well as Arch Linux developer [Pierre Schmitz](https://www.archlinux.org/people/developers/#pierre). +Arch Linux trusted users [Santiago Torres-Arias](https://www.archlinux.org/people/trusted-users/#sangy), [Christian Rebischke](https://www.archlinux.org/people/trusted-users/#shibumi) and [Justin Kromlinger](https://www.archlinux.org/people/trusted-users/#hashworks) as well as Arch Linux developer [Pierre Schmitz](https://www.archlinux.org/people/developers/#pierre). diff --git a/backdrop/README.md b/backdrop/README.md index b070535e03ed..a7b1892d8b0d 100644 --- a/backdrop/README.md +++ b/backdrop/README.md @@ -20,12 +20,12 @@ WARNING: [Backdrop Ops](https://github.com/backdrop-ops/backdrop-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.13.2`, `1.13`, `1`, `1.13.2-apache`, `1.13-apache`, `1-apache`, `apache`, `latest`](https://github.com/backdrop-ops/backdrop-docker/blob/1c82e369b6bf1b8ab45becda7f9f9777fe7f6a7f/1/apache/Dockerfile) -- [`1.13.2-fpm`, `1.13-fpm`, `1-fpm`, `fpm`](https://github.com/backdrop-ops/backdrop-docker/blob/1c82e369b6bf1b8ab45becda7f9f9777fe7f6a7f/1/fpm/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/backdrop`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fbackdrop) + [official-images repo's `library/backdrop` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbackdrop) [official-images repo's `library/backdrop` file](https://github.com/docker-library/official-images/blob/master/library/backdrop) ([history](https://github.com/docker-library/official-images/commits/master/library/backdrop)) - **Source of this description**: @@ -111,7 +111,6 @@ db: 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`. diff --git a/backdrop/content.md b/backdrop/content.md index 8e95c84cea5b..9de55cd372fb 100644 --- a/backdrop/content.md +++ b/backdrop/content.md @@ -63,7 +63,6 @@ db: MYSQL_PASSWORD: %%REPO%% MYSQL_ALLOW_EMPTY_PASSWORD: 'yes' MYSQL_DATABASE: %%REPO%% - ``` Run `docker-compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080`. diff --git a/bash/README.md b/bash/README.md index d86f20ba74ee..517e650943dd 100644 --- a/bash/README.md +++ b/bash/README.md @@ -20,20 +20,22 @@ WARNING: [Tianon (of the Docker Community)](https://github.com/tianon/docker-bash), [with Chet's support (from Bash upstream)](https://github.com/docker-library/official-images/pull/2217#issue-181031192) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`devel-20200512`, `devel`](https://github.com/tianon/docker-bash/blob/f1678429fe4f9547d0ea426bb59f46a5e05a8b73/devel/Dockerfile) -- [`5.0.17`, `5.0`, `5`, `latest`](https://github.com/tianon/docker-bash/blob/bdb65fba59b806a9987f3b8e9d4522d5f4d49a92/5.0/Dockerfile) -- [`4.4.23`, `4.4`, `4`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/4.4/Dockerfile) -- [`4.3.48`, `4.3`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/4.3/Dockerfile) -- [`4.2.53`, `4.2`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/4.2/Dockerfile) -- [`4.1.17`, `4.1`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/4.1/Dockerfile) -- [`4.0.44`, `4.0`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/4.0/Dockerfile) -- [`3.2.57`, `3.2`, `3`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/3.2/Dockerfile) -- [`3.1.23`, `3.1`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/3.1/Dockerfile) -- [`3.0.22`, `3.0`](https://github.com/tianon/docker-bash/blob/f55ec52c6bb3a9a1b942a775f848002826b58b8a/3.0/Dockerfile) +- [`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) # Quick reference (cont.) @@ -48,7 +50,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/bash`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fbash) + [official-images repo's `library/bash` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbash) [official-images repo's `library/bash` file](https://github.com/docker-library/official-images/blob/master/library/bash) ([history](https://github.com/docker-library/official-images/commits/master/library/bash)) - **Source of this description**: diff --git a/bonita/README.md b/bonita/README.md index a8a51a73f1af..fc3e2a7ae36e 100644 --- a/bonita/README.md +++ b/bonita/README.md @@ -17,20 +17,22 @@ WARNING: # Quick reference - **Maintained by**: - [Bonitasoft Community](https://github.com/Bonitasoft-Community/docker_bonita) + [Bonitasoft Community](https://github.com/bonitasoft/bonita-distrib) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [Bonita official documentation](https://documentation.bonitasoft.com), [StackOverflow](https://stackoverflow.com/tags/bonita), [Bonitasoft Community forum](https://community.bonitasoft.com/questions-and-answers) # Supported tags and respective `Dockerfile` links -- [`7.9.5`, `7.9`](https://github.com/Bonitasoft-Community/docker_bonita/blob/b58b05d989055ca3521fc92211d10ff640b4028f/7.9/Dockerfile) -- [`7.10.4`, `7.10`, `latest`](https://github.com/Bonitasoft-Community/docker_bonita/blob/c25c0b161fe2f5ec620122822317e4985cc3b6f2/7.10/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/Bonitasoft-Community/docker_bonita/issues](https://github.com/Bonitasoft-Community/docker_bonita/issues) + [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/) @@ -40,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/bonita`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fbonita) + [official-images repo's `library/bonita` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbonita) [official-images repo's `library/bonita` file](https://github.com/docker-library/official-images/blob/master/library/bonita) ([history](https://github.com/docker-library/official-images/commits/master/library/bonita)) - **Source of this description**: @@ -48,7 +50,7 @@ WARNING: # What is Bonita? -Bonita (called Bonita BPM till 7.5) is an open-source business process management and workflow suite created in 2001. It was started in France National Institute for Research in Computer Science, and then had incubated several years inside of the French computer science company Groupe Bull. Since 2009, the development of Bonita is supported by a company dedicated to this activity: Bonitasoft. +Bonita is an open-source business process management and workflow suite created in 2001. It was started in France National Institute for Research in Computer Science, and then had incubated several years inside the French computer science company Groupe Bull. Since 2009, the development of Bonita is supported by a company dedicated to this activity: Bonitasoft. > [wikipedia.org/wiki/Bonita_BPM](http://en.wikipedia.org/wiki/Bonita_BPM) @@ -62,82 +64,38 @@ Bonita (called Bonita BPM till 7.5) is an open-source business process managemen $ docker run --name bonita -d -p 8080:8080 bonita ``` -This will start a container running [Bonita runtime](https://documentation.bonitasoft.com/bonita/7.10/tomcat-bundle): a Tomcat bundle with Bonita Engine + Bonita Portal. With no environment variables specified, it's as like if you have launched the bundle on your host using startup.{sh|bat} (with security hardening on REST and HTTP APIs, cf Security part). Bonita uses a H2 database here. +This will start a container running [Bonita runtime](https://documentation.bonitasoft.com/bonita/latest/tomcat-bundle): a Tomcat bundle with Bonita Engine + Bonita Portal. With no environment variables specified, it's as if you have launched the bundle on your host using startup.{sh|bat} (with security hardening on REST and HTTP APIs, cf Security part). Bonita uses a H2 database here. You can access the Bonita Portal on http://localhost:8080/bonita and login using the default credentials: install / install ## Link Bonita to a database -### PostgreSQL +The H2 database allows the Bonita container to work out of the box, but it is not recommended outside a development environment. -PostgreSQL is the recommended database. +As PostgreSQL is the recommended database for qualification and production environments, follow one of these next sections to configure your Bonita container to run on PostgreSQL database. You can work with either a PostgreSQL Container, or PostgreSQL as an installed service. -[Set max_prepared_transactions to 100](https://documentation.bonitasoft.com/bonita/7.10/database-configuration#toc5): +### PostgreSQL Container -```console -$ mkdir -p custom_postgres -$ echo '#!/bin/bash' > custom_postgres/bonita.sh -$ echo 'sed -i "s/^.*max_prepared_transactions\s*=\s*\(.*\)$/max_prepared_transactions = 100/" "$PGDATA"/postgresql.conf' >> custom_postgres/bonita.sh -$ chmod +x custom_postgres/bonita.sh -``` - -Mount that directory location as /docker-entrypoint-initdb.d inside the PostgreSQL container: - -```console -$ docker run --name mydbpostgres -v "$PWD"/custom_postgres/:/docker-entrypoint-initdb.d -e POSTGRES_PASSWORD=mysecretpassword -d postgres:11 -``` - -See the [official PostgreSQL documentation](https://hub.docker.com/_/postgres/) for more details. - -```console -$ docker run --name bonita_postgres --link mydbpostgres:postgres -d -p 8080:8080 bonita -``` - -### MySQL - -There are known issues with the management of XA transactions by MySQL engine and driver: see MySQL bugs [17343](http://bugs.mysql.com/bug.php?id=17343) and [12161](http://bugs.mysql.com/bug.php?id=12161) for more details. Thus, using MySQL database in a production environment is not recommended. +From Bonita 2022.1 onwards, the Bonita docker image does not include configuration scripts to automatically create databases and users anymore. -[Increase the packet size](https://documentation.bonitasoft.com/bonita/7.10/database-configuration#toc5) which is set by default to 1M: +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: -```console -$ mkdir -p custom_mysql -$ echo "[mysqld]" > custom_mysql/bonita.cnf -$ echo "max_allowed_packet=16M" >> custom_mysql/bonita.cnf +```bash +docker run --name mydbpostgres -h -d bonitasoft/bonita-postgres:12.6 ``` -Mount that directory location as /etc/mysql/conf.d inside the MySQL container: - -```console -$ docker run --name mydbmysql -v "$PWD"/custom_mysql/:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql:8.0 -``` - -See the [official MySQL documentation](https://hub.docker.com/_/mysql/) for more details. - -Start your application container to link it to the MySQL container: - -```console -$ docker run --name bonita_mysql --link mydbmysql:mysql -d -p 8080:8080 bonita -``` - -## Modify default credentials - -```console -$ docker run --name=bonita -e "TENANT_LOGIN=tech_user" -e "TENANT_PASSWORD=secret" -e "PLATFORM_LOGIN=pfadmin" -e "PLATFORM_PASSWORD=pfsecret" -d -p 8080:8080 bonita -``` - -Now you can access the Bonita Portal on localhost:8080/bonita and login using: `tech_user` / `secret` +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. ## ... 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 `bonita`: ```yaml -# Use tech_user/secret as user/password credentials version: '3' services: db: - image: postgres:9.3 + image: bonitasoft/bonita-postgres:12.6 environment: POSTGRES_PASSWORD: example restart: always @@ -145,13 +103,20 @@ services: - -c - max_prepared_transactions=100 bonita: - image: bonita + image: bonita:7.14.0 + hostname: custom-hostname.example.com ports: - 8080:8080 environment: - - POSTGRES_ENV_POSTGRES_PASSWORD=example - 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 @@ -164,350 +129,272 @@ services: - -c - | set -e - echo 'Waiting for Postgres to be available' - export PGPASSWORD="$$POSTGRES_ENV_POSTGRES_PASSWORD" + echo 'Waiting for PostgreSQL to be available' maxTries=10 - while [ "$$maxTries" -gt 0 ] && ! psql -h "$$DB_HOST" -U 'postgres' -c '\l'; do - let maxTries-- + while [ "$$maxTries" -gt 0 ] && [ $$(echo 'QUIT' | nc -w 1 "$$DB_HOST" 5432; echo "$$?") -gt 0 ]; do sleep 1 + let maxTries-- done - echo if [ "$$maxTries" -le 0 ]; then echo >&2 'error: unable to contact Postgres after 10 tries' exit 1 fi - exec /opt/files/startup.sh + exec /opt/files/startup.sh /opt/bonita/server/bin/catalina.sh run ``` -[![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/d7f952b15103e355727ad55d428e55c84383aca9/bonita/stack.yml) +[![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). -## Where to store data - -Most of the data are stored in a database and can be stored outside the Bonita container as described above using the PostgreSQL or MySQL container. However, some data remains inside the Bonita bundle. Bonita Home is a folder, called `bonita`, which contains configuration, working, and temporary folders and files. There are also log files inside the `logs` folder till Bonita 7.8. - -Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `bonita` images to familiarize themselves with the options available, including: - -- Let Docker manage the storage of your data [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 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 `bonita` container like this: - - docker run --name some-bonita -v /my/own/datadir:/opt/bonita -d -p 8080:8080 bonita:tag - -The `-v /my/own/datadir:/opt/bonita` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/opt/bonita` inside the container, where Bonita will deploy the bundle and write data files by default. +- Replace `` with the one used in the licence generation command +- leave double `$$` untouched -## Migrate from an earlier version of Bonita +### PostgreSQL as an installed service -- Stop the container to perform a backup +If you don't want to run your database in a docker container, the following `env.txt` file needs to be configured and provided to the docker run command: - ```console - $ docker stop bonita_7.9.5_postgres - ``` - -- For containers < 7.3.0 : - - - Check where your data are stored - - ```console - $ docker inspect bonita_7.2.3_postgres - [...] - "Mounts": [ - { - "Source": "/home/user/Documents/Docker/Volumes/bonita_7.2.3_postgres", - "Destination": "/opt/bonita", - "Mode": "", - "RW": true - } - ], - [...] - ``` - - - Copy data from the filesystem - - ```console - $ cp -r bonita_7.2.3_postgres bonita_migration - ``` - -- Retrieve the DB container IP - - ```console - $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' mydbpostgres - 172.17.0.26 - ``` +```properties +DB_VENDOR=postgres +DB_HOST=172.17.0.2 +DB_PORT=5432 +DB_NAME=custombonitadb +DB_USER=custombonitauser +DB_PASS=custombonitapass +BIZ_DB_NAME=custombusinessdb +BIZ_DB_USER=custombusinessuser +BIZ_DB_PASS=custombusinesspass +``` -- Dump the database +```bash +docker run --name=bonita -h --env-file=env.txt -d -p 8080:8080 bonita +``` - ```console - $ export PGPASSWORD=mysecretpassword - $ pg_dump -O -x -h 172.17.0.26 -U postgres bonitadb > /tmp/bonitadb.sql - ``` +## Start Bonita with custom security credentials - Note that businessdb won't be updated with the migration tool but you may want to also backup/move it. +```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 +``` -- Load the dump +Now you can access the Bonita Runtime on localhost:8080/bonita and login using: tech_user / secret - ```console - $ export PGPASSWORD=mysecretpassword - $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE USER newbonitauser WITH PASSWORD 'newbonitapass';" - $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE DATABASE newbonitadb OWNER newbonitauser;" - $ export PGPASSWORD=newbonitapass - $ cat /tmp/bonitadb.sql | psql -U newbonitauser -h 172.17.0.26 newbonitadb - ``` +## Where data are stored -- Retrieve the last migration tool +Bonita uses tomcat that writes file to a working directory and a temp directory. - - If you migrate to a version < 7.3.0 +It can be a good practice to mount the following folders into volumes - - get also the target version of the Bonita bundle +- `/opt/bonita/server/temp` +- `/opt/bonita/server/work` - ```console - cd bonita_migration - wget https://release.ow2.org/bonita/bonita-migration-distrib-2.50.0.zip - wget https://download.forge.ow2.org/bonita/BonitaBPMCommunity-7.2.4-Tomcat-7.0.67.zip - unzip bonita-migration-distrib-2.50.0.zip - unzip BonitaBPMCommunity-7.2.4-Tomcat-7.0.67.zip - ``` +## Environment variables - - Move the previous Home into the new bundle +When you start the bonita image, you can adjust the configuration of the Bonita instance by passing one or more environment variables on the docker run command line. - ```console - mv BonitaBPMCommunity-7.2.4-Tomcat-7.0.67/bonita/ BonitaBPMCommunity-7.2.4-Tomcat-7.0.67/bonita.orig - cp -r BonitaBPMCommunity-7.2.3-Tomcat-7.0.67/bonita/ BonitaBPMCommunity-7.2.4-Tomcat-7.0.67/bonita/ - ``` +### PLATFORM_LOGIN - - If you migrate to a version >= 7.3.0 +This optional environment variable is used in conjunction with PLATFORM_PASSWORD to define the username for the platform administrator. If it is not specified, the default username `platformAdmin` will be used. - ```console - cd bonita_migration - wget https://release.ow2.org/bonita/bonita-migration-distrib-2.50.0.zip - unzip bonita-migration-distrib-2.50.0.zip - ``` +### PLATFORM_PASSWORD -- Configure the migration tool +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. - ```console - $ cd bonita-migration-distrib-2.50.0 - ``` +### TENANT_LOGIN - edit the migration tool config to point towards the copy of bonita home and db +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. - ```console - $ vim Config.properties - ``` +### TENANT_PASSWORD - For example : +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. - db.vendor=postgres - db.url=jdbc:postgresql://172.17.0.26:5432/newbonitadb - db.driverClass=org.postgresql.Driver - db.user=newbonitauser - db.password=newbonitapass - # location of the bonita home (only useful when migration from version before 7.3.0) - bonita.home=/home/user/Documents/Docker/Volumes/bonita_migration/BonitaBPMCommunity-7.2.3-Tomcat-7.0.67/bonita +### MONITORING_USERNAME -- Launch the migration +This optional environment variable is used in conjunction with `MONITORING_PASSWORD` to define the access to endpoints protected with [BASIC Auth access](https://en.wikipedia.org/wiki/Basic_access_authentication): it is used for the JMX remote access. If it is not specified, the default monitoring username `monitoring` will be used. - ```console - $ cd bin - $ ./bonita-migration-distrib - ``` +### MONITORING_PASSWORD -- Launch the new container pointing towards the copy of DB and filesystem +This optional environment variable is used in conjunction with `MONITORING_USERNAME` to define the access to endpoints protected with [BASIC Auth access](https://en.wikipedia.org/wiki/Basic_access_authentication): it is used for the JMX remote access. If it is not specified, the default monitoring password `mon1tor1ng_adm1n` will be used. - - If < 7.3.0 +### HTTP_API - ```console - $ docker run --name=bonita_7.2.4_postgres --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -v "$PWD"/bonita_migration:/opt/bonita/ -d -p 8081:8080 bonita:7.2.4 - ``` +This optional environment variable is used to enable/disable the Bonita HTTP API. The default value is false, which will deactivate the HTTP API. From Bonita 2022.1, HTTP API is protected with [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). See the following 2 parameters to configure Basic access authentication. - - If >= 7.3.0 +### HTTP_API_USERNAME - ```console - $ docker run --name=bonita_7.10.4_postgres --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -d -p 8081:8080 bonita:7.10.4 - ``` +This optional environment variable is used to configure the HTTP API Basic access authentication username. The default value is `http-api`. -- Reapply specific configuration if needed, for example with a version >= 7.3.0 : +### HTTP_API_PASSWORD - ```console - $ docker exec -ti bonita_7.10.4_postgres /bin/bash - ``` +This optional environment variable is used to configure the HTTP API Basic access authentication password. There is no default value, and providing a value is mandatory if `HTTP_API=true`. - ```console - $ cd /opt/bonita/BonitaCommunity-7.10.4/setup - $ ./setup.sh pull - $ TENANT_LOGIN=tech_user - $ TENANT_PASSWORD=secret - $ PLATFORM_LOGIN=pfadmin - $ PLATFORM_PASSWORD=pfsecret - $ sed -e 's/^#userName\s*=.*/'"userName=${TENANT_LOGIN}"'/' \ - -e 's/^#userPassword\s*=.*/'"userPassword=${TENANT_PASSWORD}"'/' \ - -i platform_conf/current/tenants/1/tenant_engine/bonita-tenant-community-custom.properties - $ sed -e 's/^platform.tenant.default.username\s*=.*/'"platform.tenant.default.username=${TENANT_LOGIN}"'/' \ - -e 's/^platform.tenant.default.password\s*=.*/'"platform.tenant.default.password=${TENANT_PASSWORD}"'/' \ - -i platform_conf/current/platform_portal/platform-tenant-config.properties - $ sed -e 's/^#platformAdminUsername\s*=.*/'"platformAdminUsername=${PLATFORM_LOGIN}"'/' \ - -e 's/^#platformAdminPassword\s*=.*/'"platformAdminPassword=${PLATFORM_PASSWORD}"'/' \ - -i platform_conf/current/platform_engine/bonita-platform-community-custom.properties - $ sed -i -e 's/^#GET|/GET|/' -e 's/^#POST|/POST|/' -e 's/^#PUT|/PUT|/' -e 's/^#DELETE|/DELETE|/' -i platform_conf/current/tenants/1/tenant_portal/dynamic-permissions-checks.properties - $ ./setup.sh push - ``` +### JMX_REMOTE_ACCESS - ```console - $ docker restart bonita_7.10.4_postgres - ``` +This optional environment variable is used to enable/disable the access to the [JMX console](https://docs.oracle.com/en/java/javase/11/management/using-jconsole.html) from a remote machine. + Default value is `false`. + The host to connect to is the name / IP address of the bonita server, the port to connect to is 9000. + The credentials to connect are the environment variables [MONITORING_USERNAME](#MONITORING_USERNAME), [MONITORING_PASSWORD](#MONITORING_PASSWORD). -- Specific consideration regarding migration to Java 11 in Bonita 7.9 +### REMOTE_IP_VALVE_ENABLED - Bonita 7.9 docker image runs with Java 11. If you are migrating from an earlier version which runs Java 8, you should validate on a test environment that your custom code is compatible. Aside from just code incompatibility, special attention has to be given to the dependencies of the custom code, as they might not work in Java 11. +This optional environment variable allows to activate/deactivate [reverse proxy redirection](https://documentation.bonitasoft.com/bonita/latest/runtime/reverse-proxy-configuration). Default value is `false`. -For more details regarding Bonita migration, see the [documentation](https://documentation.bonitasoft.com/bonita/7.10/migrate-from-an-earlier-version-of-bonita-bpm). +### ACCESSLOGS_STDOUT_ENABLED -## Security +This optional environment variable allows to activate/deactivate writing Tomcat access logs to standard output. Default value is `false`. -This Docker image activates both static and dynamic authorization checks by default on REST API. To be consistent, it also deactivates the HTTP API. +### ACCESSLOGS_FILES_ENABLED -- REST API authorization +This optional environment variable allows to activate/deactivate writing Tomcat access logs to a specific file. When activated, will write those logs to `/opt/bonita/logs/` *inside* the docker container. In practice, it is only useful when mounting a volume to the aforementioned directory. Default value is `false`. - - [Static authorization checking](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc1) +### ACCESSLOGS_PATH - - [Dynamic authorization checking](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc2) +If `ACCESSLOGS_FILES_ENABLED=true`, this optional environment variable overrides the default path to the access log files. Default value is `/opt/bonita/logs`. -- [HTTP API](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc10) +### ACCESSLOGS_PATH_APPEND_HOSTNAME -For specific needs you can override this behavior by setting HTTP_API to true and REST_API_DYN_AUTH_CHECKS to false: +If `ACCESSLOGS_FILES_ENABLED=true`, this optional environment variable allows to append a subdirectory with the *hostname* to the full path of the directory to put access log files into. Default value is `false`. -```console -$ docker run -e HTTP_API=true -e REST_API_DYN_AUTH_CHECKS=false --name bonita -d -p 8080:8080 bonita -``` +### ACCESSLOGS_MAX_DAYS -## Environment variables +If `ACCESSLOGS_FILES_ENABLED=true`, this optional environment variable allows to automatically delete access log files after a certain number of days. Default value is `30`. -When you start the `bonita` image, you can adjust the configuration of the Bonita instance by passing one or more environment variables on the `docker run` command line. +### HTTP_MAX_THREADS -### `PLATFORM_PASSWORD` +This optional environment variable allows to specify the maximum Http thread number Tomcat will use to serve HTTP/1.1 requests. Directly modifies the *maxThreads* parameter in the *server.xml* file of the Tomcat inside the docker container. More information on the usefulness of this parameter can be found [here](https://tomcat.apache.org/tomcat-9.0-doc/config/http.html). Default value is `20`. -This environment variable [is recommended](https://documentation.bonitasoft.com/bonita/7.10/tomcat-bundle#toc3) 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. +### JAVA_OPTS -### `PLATFORM_LOGIN` +This optional environment variable is used to customize JAVA_OPTS. The default value is -Xms1024m -Xmx1024m -XX:MaxPermSize=256m. The syntax to use is `-e JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=1024m"` -This optional environment variable is used in conjunction with `PLATFORM_PASSWORD` to define the username for the platform administrator. If it is not specified, the default user `platformAdmin` will be used. +### DB_VENDOR -### `TENANT_PASSWORD` +This environment variable is automatically set to postgres or mysql if the Bonita container is linked to a PostgreSQL or MySQL database using --link. The default value is h2. It can be overridden if you don't use the --link capability. -This environment variable [is recommended](https://documentation.bonitasoft.com/bonita/7.10/tomcat-bundle#toc3) 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. +### DB_HOST, DB_PORT -### `TENANT_LOGIN` +These variables are optional, used in conjunction to configure the bonita image to reach the database instance. There are automatically set if --link is used to run the container. -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 user of `install` will be used. +### DB_NAME, DB_USER, DB_PASS -### `REST_API_DYN_AUTH_CHECKS` +These variables are used in conjunction to define how Bonita should access its database for internal functioning. -This optional environment variable is used to enable/disable [dynamic authorization checking](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc2) on Bonita REST API. The default value is `true`, which will activate dynamic authorization checking. +`DB_NAME` default value is bonitadb. -### `HTTP_API` +`DB_USER` default value is bonitauser. -This optional environment variable is used to enable/disable the Bonita HTTP API. The default value is `false`, which will deactivate the HTTP API. +`DB_PASS` default value is bonitapass. -### `JAVA_OPTS` +### BIZ_DB_NAME, BIZ_DB_USER, BIZ_DB_PASS -This optional environment variable is used to customize JAVA_OPTS. The default value is `-Xms1024m -Xmx1024m -XX:MaxPermSize=256m`. +These variables are used in conjunction to define how Bonita should access the [Business Data](https://documentation.bonitasoft.com/bonita/latest/data/define-and-deploy-the-bdm) database. -### `ENSURE_DB_CHECK_AND_CREATION` +`BIZ_DB_NAME` default value is businessdb. -This optional environment variable is used to allow/disallow the SQL queries to automatically check and create the databases using the database administrator credentials. The default value is `true`. +`BIZ_DB_USER` default value is businessuser. -### `DB_VENDOR` +`BIZ_DB_PASS` default value is businesspass. -This environment variable is automatically set to `postgres` or `mysql` if the Bonita container is linked to a PostgreSQL or MySQL database using `--link`. The default value is `h2`. It can be overridden if you don't use the `--link` capability. +## Logger configuration -### `DB_HOST`, `DB_PORT` +**Since 2022.1** -These variables are optional, used in conjunction to configure the `bonita` image to reach the database instance. There are automatically set if `--link` is used to run the container. +The logger can be configured by mounting a volume on folder `/opt/bonita/conf/logs` containing the configuration files. -### `DB_NAME`, `DB_USER`, `DB_PASS` +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) -These variables are used in conjunction to create a new user, set that user's password, and create the `bonita` database. +Any change made to one of this 2 files is automatically hot-reloaded and taken into account immediately. -`DB_NAME` default value is `bonitadb`. +## Security -`DB_USER` default value is `bonitauser`. +This Docker image activates both static and dynamic authorization checks by default on REST API. To be consistent, it also deactivates the HTTP API. -`DB_PASS` default value is `bonitapass`. +- REST API authorization -### `BIZ_DB_NAME`, `BIZ_DB_USER`, `BIZ_DB_PASS` + - [Static authorization checking](https://documentation.bonitasoft.com/bonita/latest/rest-api-authorization#static_authorization) -These variables are used in conjunction to create a new user, set that user's password and create the `bonita` [business database](https://documentation.bonitasoft.com/bonita/7.10/define-and-deploy-the-bdm#toc1). +- [HTTP API](https://documentation.bonitasoft.com/bonita/latest/rest-api-authorization#_activating_and_deactivating_authorization) -`BIZ_DB_NAME` default value is `businessdb`. +For specific needs you can override this behavior by setting HTTP_API to true: -`BIZ_DB_USER` default value is `businessuser`. +```console +$ docker run -e HTTP_API=true -e HTTP_API_PASSWORD="My-Cust0m_S3cR3T" --name bonita -d -p 8080:8080 bonita +``` -`BIZ_DB_PASS` default value is `businesspass`. +## Update from an earlier version of Bonita -### `DB_ADMIN_USER`, `DB_ADMIN_PASS` +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) -These variables are optional, and used in conjunction to create users and databases through the administrator account used on the database instance. +- Stop the container to perform a database backup -`DB_ADMIN_USER` if no value is provided, this is automatically set to `root` with MySQL or `postgres` with PostgreSQL. + ```console + $ docker stop bonita + ``` -`DB_ADMIN_PASS` if no value is provided, this is automatically set using the value from the linked container: `MYSQL_ENV_MYSQL_ROOT_PASSWORD` or `POSTGRES_ENV_POSTGRES_PASSWORD`. +- Retrieve the DB container IP -### `DB_DROP_EXISTING`, `BIZ_DB_DROP_EXISTING` + ```console + $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' mydbpostgres + 172.17.0.26 + ``` -`DB_DROP_EXISTING` and `BIZ_DB_DROP_EXISTING` can be used to drop existing databases in order to reuse an existing database instance. +- Dump the database -`DB_DROP_EXISTING` default value is `N`. + ```console + $ export PGPASSWORD=mysecretpassword + $ pg_dump -O -x -h 172.17.0.26 -U postgres bonitadb > /tmp/bonitadb.sql + ``` -`BIZ_DB_DROP_EXISTING` default value is `N`. + Note that businessdb won't be updated by the update tool but you may want to also backup/move it. -### `BONITA_SERVER_LOGGING_FILE`, `BONITA_SETUP_LOGGING_FILE` +- Load the dump -Since Bonita 7.9 `BONITA_SERVER_LOGGING_FILE` and `BONITA_SETUP_LOGGING_FILE` can be used to update logging configuration. + ```console + $ export PGPASSWORD=mysecretpassword + $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE USER newbonitauser WITH PASSWORD 'newbonitapass';" + $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE DATABASE newbonitadb OWNER newbonitauser;" + $ export PGPASSWORD=newbonitapass + $ cat /tmp/bonitadb.sql | psql -U newbonitauser -h 172.17.0.26 newbonitadb + ``` -`BONITA_SERVER_LOGGING_FILE` default value is `/opt/bonita/BonitaSubscription-${BONITA_VERSION}/server/conf/logging.properties`. +- Retrieve the last update tool -`BONITA_SETUP_LOGGING_FILE` default value is `/opt/bonita/BonitaSubscription-${BONITA_VERSION}/setup/logback.xml`. + ```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 + ``` -# How to extend this image +- Configure the update tool -If you would like to do additional initialization, you can add a `*.sh` script under `/opt/custom-init.d`. The `startup.sh` file will source any `*.sh` script found in this directory to do further initialization before starting the service. + ```console + $ cd bonita-update-tool-3.0.0 + ``` -For example, you can increase the log level : + edit the update tool configuration file `Config.properties` to point towards the database. -```console -$ mkdir -p custom_bonita -$ echo '#!/bin/bash' > custom_bonita/bonita.sh -$ echo 'sed -i "s/^org.bonitasoft.level = WARNING$/org.bonitasoft.level = FINEST/" /opt/bonita/BonitaCommunity-7.10.4/server/conf/logging.properties' >> custom_bonita/bonita.sh -$ chmod +x custom_bonita/bonita.sh + ```console + $ vim Config.properties + ``` -$ docker run --name bonita_custom -v "$PWD"/custom_bonita/:/opt/custom-init.d -d -p 8080:8080 bonita -``` + For example : -Since Bonita 7.9 you can also apply a custom `logging.properties` file like this : + ```properties + db.vendor=postgres + db.url=jdbc:postgresql://172.17.0.26:5432/newbonitadb + db.driverClass=org.postgresql.Driver + db.user=newbonitauser + db.password=newbonitapass + ``` -```console -docker run --name bonita \ - -v /path/to/logging.properties:/etc/logging.properties -e BONITA_SERVER_LOGGING_FILE=/etc/logging.properties \ - -d -p 8080:8080 bonita -``` +- Launch the update tool -Note: There are several ways to check the `bonita` logs. Till Bonita 7.8, one of them is + ```console + $ cd bin + $ ./bonita-update-tool + ``` -```console -$ docker exec -ti bonita_custom /bin/bash -tail -f /opt/bonita/BonitaCommunity-7.10.4/server/logs/bonita.`date +%Y-%m-%d`.log -``` +- Launch the new container pointing towards the copy of the database. -Since Bonita 7.9 bonita logs are redirected towards standard output and directly accessible using + ```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 + ``` -```console -$ docker logs -f bonita -``` +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). # License diff --git a/bonita/content.md b/bonita/content.md index 4aa547b37a87..2c5302ab259c 100644 --- a/bonita/content.md +++ b/bonita/content.md @@ -1,6 +1,6 @@ # What is Bonita? -Bonita (called Bonita BPM till 7.5) is an open-source business process management and workflow suite created in 2001. It was started in France National Institute for Research in Computer Science, and then had incubated several years inside of the French computer science company Groupe Bull. Since 2009, the development of Bonita is supported by a company dedicated to this activity: Bonitasoft. +Bonita is an open-source business process management and workflow suite created in 2001. It was started in France National Institute for Research in Computer Science, and then had incubated several years inside the French computer science company Groupe Bull. Since 2009, the development of Bonita is supported by a company dedicated to this activity: Bonitasoft. > [wikipedia.org/wiki/Bonita_BPM](http://en.wikipedia.org/wiki/Bonita_BPM) @@ -14,397 +14,278 @@ Bonita (called Bonita BPM till 7.5) is an open-source business process managemen $ docker run --name bonita -d -p 8080:8080 %%IMAGE%% ``` -This will start a container running [Bonita runtime](https://documentation.bonitasoft.com/bonita/7.10/tomcat-bundle): a Tomcat bundle with Bonita Engine + Bonita Portal. With no environment variables specified, it's as like if you have launched the bundle on your host using startup.{sh|bat} (with security hardening on REST and HTTP APIs, cf Security part). Bonita uses a H2 database here. +This will start a container running [Bonita runtime](https://documentation.bonitasoft.com/bonita/latest/tomcat-bundle): a Tomcat bundle with Bonita Engine + Bonita Portal. With no environment variables specified, it's as if you have launched the bundle on your host using startup.{sh|bat} (with security hardening on REST and HTTP APIs, cf Security part). Bonita uses a H2 database here. You can access the Bonita Portal on http://localhost:8080/bonita and login using the default credentials: install / install ## Link Bonita to a database -### PostgreSQL +The H2 database allows the Bonita container to work out of the box, but it is not recommended outside a development environment. -PostgreSQL is the recommended database. +As PostgreSQL is the recommended database for qualification and production environments, follow one of these next sections to configure your Bonita container to run on PostgreSQL database. You can work with either a PostgreSQL Container, or PostgreSQL as an installed service. -[Set max_prepared_transactions to 100](https://documentation.bonitasoft.com/bonita/7.10/database-configuration#toc5): +### PostgreSQL Container -```console -$ mkdir -p custom_postgres -$ echo '#!/bin/bash' > custom_postgres/bonita.sh -$ echo 'sed -i "s/^.*max_prepared_transactions\s*=\s*\(.*\)$/max_prepared_transactions = 100/" "$PGDATA"/postgresql.conf' >> custom_postgres/bonita.sh -$ chmod +x custom_postgres/bonita.sh -``` +From Bonita 2022.1 onwards, the Bonita docker image does not include configuration scripts to automatically create databases and users anymore. -Mount that directory location as /docker-entrypoint-initdb.d inside the PostgreSQL container: +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: -```console -$ docker run --name mydbpostgres -v "$PWD"/custom_postgres/:/docker-entrypoint-initdb.d -e POSTGRES_PASSWORD=mysecretpassword -d postgres:11 +```bash +docker run --name mydbpostgres -h -d bonitasoft/bonita-postgres:12.6 ``` -See the [official PostgreSQL documentation](https://hub.docker.com/_/postgres/) for more details. +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. -```console -$ docker run --name bonita_postgres --link mydbpostgres:postgres -d -p 8080:8080 %%IMAGE%% -``` +## %%STACK%% -### MySQL +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). -There are known issues with the management of XA transactions by MySQL engine and driver: see MySQL bugs [17343](http://bugs.mysql.com/bug.php?id=17343) and [12161](http://bugs.mysql.com/bug.php?id=12161) for more details. Thus, using MySQL database in a production environment is not recommended. +- Replace `` with the one used in the licence generation command +- leave double `$$` untouched -[Increase the packet size](https://documentation.bonitasoft.com/bonita/7.10/database-configuration#toc5) which is set by default to 1M: +### PostgreSQL as an installed service -```console -$ mkdir -p custom_mysql -$ echo "[mysqld]" > custom_mysql/bonita.cnf -$ echo "max_allowed_packet=16M" >> custom_mysql/bonita.cnf -``` +If you don't want to run your database in a docker container, the following `env.txt` file needs to be configured and provided to the docker run command: -Mount that directory location as /etc/mysql/conf.d inside the MySQL container: - -```console -$ docker run --name mydbmysql -v "$PWD"/custom_mysql/:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=mysecretpassword -d mysql:8.0 +```properties +DB_VENDOR=postgres +DB_HOST=172.17.0.2 +DB_PORT=5432 +DB_NAME=custombonitadb +DB_USER=custombonitauser +DB_PASS=custombonitapass +BIZ_DB_NAME=custombusinessdb +BIZ_DB_USER=custombusinessuser +BIZ_DB_PASS=custombusinesspass ``` -See the [official MySQL documentation](https://hub.docker.com/_/mysql/) for more details. - -Start your application container to link it to the MySQL container: - -```console -$ docker run --name bonita_mysql --link mydbmysql:mysql -d -p 8080:8080 %%IMAGE%% +```bash +docker run --name=bonita -h --env-file=env.txt -d -p 8080:8080 %%IMAGE%% ``` -## Modify default credentials +## Start Bonita with custom security credentials -```console -$ docker run --name=bonita -e "TENANT_LOGIN=tech_user" -e "TENANT_PASSWORD=secret" -e "PLATFORM_LOGIN=pfadmin" -e "PLATFORM_PASSWORD=pfsecret" -d -p 8080:8080 %%IMAGE%% +```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%% ``` -Now you can access the Bonita Portal on localhost:8080/bonita and login using: `tech_user` / `secret` - -## %%STACK%% - -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). - -## Where to store data - -Most of the data are stored in a database and can be stored outside the Bonita container as described above using the PostgreSQL or MySQL container. However, some data remains inside the Bonita bundle. Bonita Home is a folder, called `bonita`, which contains configuration, working, and temporary folders and files. There are also log files inside the `logs` folder till Bonita 7.8. - -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: +Now you can access the Bonita Runtime on localhost:8080/bonita and login using: tech_user / secret -- Let Docker manage the storage of your data [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 directory permissions and other security mechanisms on the host system are set up correctly. +## Where data are stored -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: +Bonita uses tomcat that writes file to a working directory and a temp directory. -1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`. -2. Start your `%%REPO%%` container like this: +It can be a good practice to mount the following folders into volumes - docker run --name some-%%REPO%% -v /my/own/datadir:/opt/bonita -d -p 8080:8080 %%IMAGE%%:tag +- `/opt/bonita/server/temp` +- `/opt/bonita/server/work` -The `-v /my/own/datadir:/opt/bonita` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/opt/bonita` inside the container, where Bonita will deploy the bundle and write data files by default. - -## Migrate from an earlier version of Bonita - -- Stop the container to perform a backup - - ```console - $ docker stop bonita_7.9.5_postgres - ``` - -- For containers < 7.3.0 : - - - Check where your data are stored - - ```console - $ docker inspect bonita_7.2.3_postgres - [...] - "Mounts": [ - { - "Source": "/home/user/Documents/Docker/Volumes/bonita_7.2.3_postgres", - "Destination": "/opt/bonita", - "Mode": "", - "RW": true - } - ], - [...] - ``` - - - Copy data from the filesystem - - ```console - $ cp -r bonita_7.2.3_postgres bonita_migration - ``` - -- Retrieve the DB container IP - - ```console - $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' mydbpostgres - 172.17.0.26 - ``` - -- Dump the database - - ```console - $ export PGPASSWORD=mysecretpassword - $ pg_dump -O -x -h 172.17.0.26 -U postgres bonitadb > /tmp/bonitadb.sql - ``` - - Note that businessdb won't be updated with the migration tool but you may want to also backup/move it. - -- Load the dump - - ```console - $ export PGPASSWORD=mysecretpassword - $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE USER newbonitauser WITH PASSWORD 'newbonitapass';" - $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE DATABASE newbonitadb OWNER newbonitauser;" - $ export PGPASSWORD=newbonitapass - $ cat /tmp/bonitadb.sql | psql -U newbonitauser -h 172.17.0.26 newbonitadb - ``` - -- Retrieve the last migration tool - - - If you migrate to a version < 7.3.0 - - - get also the target version of the Bonita bundle - - ```console - cd bonita_migration - wget https://release.ow2.org/bonita/bonita-migration-distrib-2.50.0.zip - wget https://download.forge.ow2.org/bonita/BonitaBPMCommunity-7.2.4-Tomcat-7.0.67.zip - unzip bonita-migration-distrib-2.50.0.zip - unzip BonitaBPMCommunity-7.2.4-Tomcat-7.0.67.zip - ``` +## Environment variables - - Move the previous Home into the new bundle +When you start the bonita image, you can adjust the configuration of the Bonita instance by passing one or more environment variables on the docker run command line. - ```console - mv BonitaBPMCommunity-7.2.4-Tomcat-7.0.67/bonita/ BonitaBPMCommunity-7.2.4-Tomcat-7.0.67/bonita.orig - cp -r BonitaBPMCommunity-7.2.3-Tomcat-7.0.67/bonita/ BonitaBPMCommunity-7.2.4-Tomcat-7.0.67/bonita/ - ``` +### PLATFORM_LOGIN - - If you migrate to a version >= 7.3.0 +This optional environment variable is used in conjunction with PLATFORM_PASSWORD to define the username for the platform administrator. If it is not specified, the default username `platformAdmin` will be used. - ```console - cd bonita_migration - wget https://release.ow2.org/bonita/bonita-migration-distrib-2.50.0.zip - unzip bonita-migration-distrib-2.50.0.zip - ``` +### PLATFORM_PASSWORD -- Configure the migration tool +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. - ```console - $ cd bonita-migration-distrib-2.50.0 - ``` +### TENANT_LOGIN - edit the migration tool config to point towards the copy of bonita home and db +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. - ```console - $ vim Config.properties - ``` +### TENANT_PASSWORD - For example : +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. - db.vendor=postgres - db.url=jdbc:postgresql://172.17.0.26:5432/newbonitadb - db.driverClass=org.postgresql.Driver - db.user=newbonitauser - db.password=newbonitapass - # location of the bonita home (only useful when migration from version before 7.3.0) - bonita.home=/home/user/Documents/Docker/Volumes/bonita_migration/BonitaBPMCommunity-7.2.3-Tomcat-7.0.67/bonita +### MONITORING_USERNAME -- Launch the migration +This optional environment variable is used in conjunction with `MONITORING_PASSWORD` to define the access to endpoints protected with [BASIC Auth access](https://en.wikipedia.org/wiki/Basic_access_authentication): it is used for the JMX remote access. If it is not specified, the default monitoring username `monitoring` will be used. - ```console - $ cd bin - $ ./bonita-migration-distrib - ``` +### MONITORING_PASSWORD -- Launch the new container pointing towards the copy of DB and filesystem +This optional environment variable is used in conjunction with `MONITORING_USERNAME` to define the access to endpoints protected with [BASIC Auth access](https://en.wikipedia.org/wiki/Basic_access_authentication): it is used for the JMX remote access. If it is not specified, the default monitoring password `mon1tor1ng_adm1n` will be used. - - If < 7.3.0 +### HTTP_API - ```console - $ docker run --name=bonita_7.2.4_postgres --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -v "$PWD"/bonita_migration:/opt/bonita/ -d -p 8081:8080 %%IMAGE%%:7.2.4 - ``` +This optional environment variable is used to enable/disable the Bonita HTTP API. The default value is false, which will deactivate the HTTP API. From Bonita 2022.1, HTTP API is protected with [Basic access authentication](https://en.wikipedia.org/wiki/Basic_access_authentication). See the following 2 parameters to configure Basic access authentication. - - If >= 7.3.0 +### HTTP_API_USERNAME - ```console - $ docker run --name=bonita_7.10.4_postgres --link mydbpostgres:postgres -e "DB_NAME=newbonitadb" -e "DB_USER=newbonitauser" -e "DB_PASS=newbonitapass" -d -p 8081:8080 %%IMAGE%%:7.10.4 - ``` +This optional environment variable is used to configure the HTTP API Basic access authentication username. The default value is `http-api`. -- Reapply specific configuration if needed, for example with a version >= 7.3.0 : +### HTTP_API_PASSWORD - ```console - $ docker exec -ti bonita_7.10.4_postgres /bin/bash - ``` +This optional environment variable is used to configure the HTTP API Basic access authentication password. There is no default value, and providing a value is mandatory if `HTTP_API=true`. - ```console - $ cd /opt/bonita/BonitaCommunity-7.10.4/setup - $ ./setup.sh pull - $ TENANT_LOGIN=tech_user - $ TENANT_PASSWORD=secret - $ PLATFORM_LOGIN=pfadmin - $ PLATFORM_PASSWORD=pfsecret - $ sed -e 's/^#userName\s*=.*/'"userName=${TENANT_LOGIN}"'/' \ - -e 's/^#userPassword\s*=.*/'"userPassword=${TENANT_PASSWORD}"'/' \ - -i platform_conf/current/tenants/1/tenant_engine/bonita-tenant-community-custom.properties - $ sed -e 's/^platform.tenant.default.username\s*=.*/'"platform.tenant.default.username=${TENANT_LOGIN}"'/' \ - -e 's/^platform.tenant.default.password\s*=.*/'"platform.tenant.default.password=${TENANT_PASSWORD}"'/' \ - -i platform_conf/current/platform_portal/platform-tenant-config.properties - $ sed -e 's/^#platformAdminUsername\s*=.*/'"platformAdminUsername=${PLATFORM_LOGIN}"'/' \ - -e 's/^#platformAdminPassword\s*=.*/'"platformAdminPassword=${PLATFORM_PASSWORD}"'/' \ - -i platform_conf/current/platform_engine/bonita-platform-community-custom.properties - $ sed -i -e 's/^#GET|/GET|/' -e 's/^#POST|/POST|/' -e 's/^#PUT|/PUT|/' -e 's/^#DELETE|/DELETE|/' -i platform_conf/current/tenants/1/tenant_portal/dynamic-permissions-checks.properties - $ ./setup.sh push - ``` +### JMX_REMOTE_ACCESS - ```console - $ docker restart bonita_7.10.4_postgres - ``` +This optional environment variable is used to enable/disable the access to the [JMX console](https://docs.oracle.com/en/java/javase/11/management/using-jconsole.html) from a remote machine. + Default value is `false`. + The host to connect to is the name / IP address of the bonita server, the port to connect to is 9000. + The credentials to connect are the environment variables [MONITORING_USERNAME](#MONITORING_USERNAME), [MONITORING_PASSWORD](#MONITORING_PASSWORD). -- Specific consideration regarding migration to Java 11 in Bonita 7.9 +### REMOTE_IP_VALVE_ENABLED - Bonita 7.9 docker image runs with Java 11. If you are migrating from an earlier version which runs Java 8, you should validate on a test environment that your custom code is compatible. Aside from just code incompatibility, special attention has to be given to the dependencies of the custom code, as they might not work in Java 11. +This optional environment variable allows to activate/deactivate [reverse proxy redirection](https://documentation.bonitasoft.com/bonita/latest/runtime/reverse-proxy-configuration). Default value is `false`. -For more details regarding Bonita migration, see the [documentation](https://documentation.bonitasoft.com/bonita/7.10/migrate-from-an-earlier-version-of-bonita-bpm). +### ACCESSLOGS_STDOUT_ENABLED -## Security +This optional environment variable allows to activate/deactivate writing Tomcat access logs to standard output. Default value is `false`. -This Docker image activates both static and dynamic authorization checks by default on REST API. To be consistent, it also deactivates the HTTP API. +### ACCESSLOGS_FILES_ENABLED -- REST API authorization +This optional environment variable allows to activate/deactivate writing Tomcat access logs to a specific file. When activated, will write those logs to `/opt/bonita/logs/` *inside* the docker container. In practice, it is only useful when mounting a volume to the aforementioned directory. Default value is `false`. - - [Static authorization checking](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc1) +### ACCESSLOGS_PATH - - [Dynamic authorization checking](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc2) +If `ACCESSLOGS_FILES_ENABLED=true`, this optional environment variable overrides the default path to the access log files. Default value is `/opt/bonita/logs`. -- [HTTP API](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc10) +### ACCESSLOGS_PATH_APPEND_HOSTNAME -For specific needs you can override this behavior by setting HTTP_API to true and REST_API_DYN_AUTH_CHECKS to false: +If `ACCESSLOGS_FILES_ENABLED=true`, this optional environment variable allows to append a subdirectory with the *hostname* to the full path of the directory to put access log files into. Default value is `false`. -```console -$ docker run -e HTTP_API=true -e REST_API_DYN_AUTH_CHECKS=false --name bonita -d -p 8080:8080 %%IMAGE%% -``` +### ACCESSLOGS_MAX_DAYS -## Environment variables +If `ACCESSLOGS_FILES_ENABLED=true`, this optional environment variable allows to automatically delete access log files after a certain number of days. Default value is `30`. -When you start the `bonita` image, you can adjust the configuration of the Bonita instance by passing one or more environment variables on the `docker run` command line. +### HTTP_MAX_THREADS -### `PLATFORM_PASSWORD` +This optional environment variable allows to specify the maximum Http thread number Tomcat will use to serve HTTP/1.1 requests. Directly modifies the *maxThreads* parameter in the *server.xml* file of the Tomcat inside the docker container. More information on the usefulness of this parameter can be found [here](https://tomcat.apache.org/tomcat-9.0-doc/config/http.html). Default value is `20`. -This environment variable [is recommended](https://documentation.bonitasoft.com/bonita/7.10/tomcat-bundle#toc3) 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. +### JAVA_OPTS -### `PLATFORM_LOGIN` +This optional environment variable is used to customize JAVA_OPTS. The default value is -Xms1024m -Xmx1024m -XX:MaxPermSize=256m. The syntax to use is `-e JAVA_OPTS="-Xms2048m -Xmx2048m -XX:MaxPermSize=1024m"` -This optional environment variable is used in conjunction with `PLATFORM_PASSWORD` to define the username for the platform administrator. If it is not specified, the default user `platformAdmin` will be used. +### DB_VENDOR -### `TENANT_PASSWORD` +This environment variable is automatically set to postgres or mysql if the Bonita container is linked to a PostgreSQL or MySQL database using --link. The default value is h2. It can be overridden if you don't use the --link capability. -This environment variable [is recommended](https://documentation.bonitasoft.com/bonita/7.10/tomcat-bundle#toc3) 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. +### DB_HOST, DB_PORT -### `TENANT_LOGIN` +These variables are optional, used in conjunction to configure the bonita image to reach the database instance. There are automatically set if --link is used to run the container. -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 user of `install` will be used. +### DB_NAME, DB_USER, DB_PASS -### `REST_API_DYN_AUTH_CHECKS` +These variables are used in conjunction to define how Bonita should access its database for internal functioning. -This optional environment variable is used to enable/disable [dynamic authorization checking](https://documentation.bonitasoft.com/bonita/7.10/rest-api-authorization#toc2) on Bonita REST API. The default value is `true`, which will activate dynamic authorization checking. +`DB_NAME` default value is bonitadb. -### `HTTP_API` +`DB_USER` default value is bonitauser. -This optional environment variable is used to enable/disable the Bonita HTTP API. The default value is `false`, which will deactivate the HTTP API. +`DB_PASS` default value is bonitapass. -### `JAVA_OPTS` +### BIZ_DB_NAME, BIZ_DB_USER, BIZ_DB_PASS -This optional environment variable is used to customize JAVA_OPTS. The default value is `-Xms1024m -Xmx1024m -XX:MaxPermSize=256m`. +These variables are used in conjunction to define how Bonita should access the [Business Data](https://documentation.bonitasoft.com/bonita/latest/data/define-and-deploy-the-bdm) database. -### `ENSURE_DB_CHECK_AND_CREATION` +`BIZ_DB_NAME` default value is businessdb. -This optional environment variable is used to allow/disallow the SQL queries to automatically check and create the databases using the database administrator credentials. The default value is `true`. +`BIZ_DB_USER` default value is businessuser. -### `DB_VENDOR` +`BIZ_DB_PASS` default value is businesspass. -This environment variable is automatically set to `postgres` or `mysql` if the Bonita container is linked to a PostgreSQL or MySQL database using `--link`. The default value is `h2`. It can be overridden if you don't use the `--link` capability. +## Logger configuration -### `DB_HOST`, `DB_PORT` +**Since 2022.1** -These variables are optional, used in conjunction to configure the `bonita` image to reach the database instance. There are automatically set if `--link` is used to run the container. +The logger can be configured by mounting a volume on folder `/opt/bonita/conf/logs` containing the configuration files. -### `DB_NAME`, `DB_USER`, `DB_PASS` +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) -These variables are used in conjunction to create a new user, set that user's password, and create the `bonita` database. +Any change made to one of this 2 files is automatically hot-reloaded and taken into account immediately. -`DB_NAME` default value is `bonitadb`. +## Security -`DB_USER` default value is `bonitauser`. +This Docker image activates both static and dynamic authorization checks by default on REST API. To be consistent, it also deactivates the HTTP API. -`DB_PASS` default value is `bonitapass`. +- REST API authorization -### `BIZ_DB_NAME`, `BIZ_DB_USER`, `BIZ_DB_PASS` + - [Static authorization checking](https://documentation.bonitasoft.com/bonita/latest/rest-api-authorization#static_authorization) -These variables are used in conjunction to create a new user, set that user's password and create the `bonita` [business database](https://documentation.bonitasoft.com/bonita/7.10/define-and-deploy-the-bdm#toc1). +- [HTTP API](https://documentation.bonitasoft.com/bonita/latest/rest-api-authorization#_activating_and_deactivating_authorization) -`BIZ_DB_NAME` default value is `businessdb`. +For specific needs you can override this behavior by setting HTTP_API to true: -`BIZ_DB_USER` default value is `businessuser`. +```console +$ docker run -e HTTP_API=true -e HTTP_API_PASSWORD="My-Cust0m_S3cR3T" --name bonita -d -p 8080:8080 %%IMAGE%% +``` -`BIZ_DB_PASS` default value is `businesspass`. +## Update from an earlier version of Bonita -### `DB_ADMIN_USER`, `DB_ADMIN_PASS` +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) -These variables are optional, and used in conjunction to create users and databases through the administrator account used on the database instance. +- Stop the container to perform a database backup -`DB_ADMIN_USER` if no value is provided, this is automatically set to `root` with MySQL or `postgres` with PostgreSQL. + ```console + $ docker stop bonita + ``` -`DB_ADMIN_PASS` if no value is provided, this is automatically set using the value from the linked container: `MYSQL_ENV_MYSQL_ROOT_PASSWORD` or `POSTGRES_ENV_POSTGRES_PASSWORD`. +- Retrieve the DB container IP -### `DB_DROP_EXISTING`, `BIZ_DB_DROP_EXISTING` + ```console + $ docker inspect --format '{{ .NetworkSettings.IPAddress }}' mydbpostgres + 172.17.0.26 + ``` -`DB_DROP_EXISTING` and `BIZ_DB_DROP_EXISTING` can be used to drop existing databases in order to reuse an existing database instance. +- Dump the database -`DB_DROP_EXISTING` default value is `N`. + ```console + $ export PGPASSWORD=mysecretpassword + $ pg_dump -O -x -h 172.17.0.26 -U postgres bonitadb > /tmp/bonitadb.sql + ``` -`BIZ_DB_DROP_EXISTING` default value is `N`. + Note that businessdb won't be updated by the update tool but you may want to also backup/move it. -### `BONITA_SERVER_LOGGING_FILE`, `BONITA_SETUP_LOGGING_FILE` +- Load the dump -Since Bonita 7.9 `BONITA_SERVER_LOGGING_FILE` and `BONITA_SETUP_LOGGING_FILE` can be used to update logging configuration. + ```console + $ export PGPASSWORD=mysecretpassword + $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE USER newbonitauser WITH PASSWORD 'newbonitapass';" + $ psql -U postgres -h 172.17.0.26 -d postgres -c "CREATE DATABASE newbonitadb OWNER newbonitauser;" + $ export PGPASSWORD=newbonitapass + $ cat /tmp/bonitadb.sql | psql -U newbonitauser -h 172.17.0.26 newbonitadb + ``` -`BONITA_SERVER_LOGGING_FILE` default value is `/opt/bonita/BonitaSubscription-${BONITA_VERSION}/server/conf/logging.properties`. +- Retrieve the last update tool -`BONITA_SETUP_LOGGING_FILE` default value is `/opt/bonita/BonitaSubscription-${BONITA_VERSION}/setup/logback.xml`. + ```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 + ``` -# How to extend this image +- Configure the update tool -If you would like to do additional initialization, you can add a `*.sh` script under `/opt/custom-init.d`. The `startup.sh` file will source any `*.sh` script found in this directory to do further initialization before starting the service. + ```console + $ cd bonita-update-tool-3.0.0 + ``` -For example, you can increase the log level : + edit the update tool configuration file `Config.properties` to point towards the database. -```console -$ mkdir -p custom_bonita -$ echo '#!/bin/bash' > custom_bonita/bonita.sh -$ echo 'sed -i "s/^org.bonitasoft.level = WARNING$/org.bonitasoft.level = FINEST/" /opt/bonita/BonitaCommunity-7.10.4/server/conf/logging.properties' >> custom_bonita/bonita.sh -$ chmod +x custom_bonita/bonita.sh + ```console + $ vim Config.properties + ``` -$ docker run --name bonita_custom -v "$PWD"/custom_bonita/:/opt/custom-init.d -d -p 8080:8080 %%IMAGE%% -``` + For example : -Since Bonita 7.9 you can also apply a custom `logging.properties` file like this : + ```properties + db.vendor=postgres + db.url=jdbc:postgresql://172.17.0.26:5432/newbonitadb + db.driverClass=org.postgresql.Driver + db.user=newbonitauser + db.password=newbonitapass + ``` -```console -docker run --name bonita \ - -v /path/to/logging.properties:/etc/logging.properties -e BONITA_SERVER_LOGGING_FILE=/etc/logging.properties \ - -d -p 8080:8080 %%IMAGE%% -``` +- Launch the update tool -Note: There are several ways to check the `bonita` logs. Till Bonita 7.8, one of them is + ```console + $ cd bin + $ ./bonita-update-tool + ``` -```console -$ docker exec -ti bonita_custom /bin/bash -tail -f /opt/bonita/BonitaCommunity-7.10.4/server/logs/bonita.`date +%Y-%m-%d`.log -``` +- Launch the new container pointing towards the copy of the database. -Since Bonita 7.9 bonita logs are redirected towards standard output and directly accessible using + ```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 + ``` -```console -$ docker logs -f bonita -``` +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/get-help.md b/bonita/get-help.md new file mode 100644 index 000000000000..bd3e101b6d44 --- /dev/null +++ b/bonita/get-help.md @@ -0,0 +1 @@ +[Bonita official documentation](https://documentation.bonitasoft.com), [StackOverflow](https://stackoverflow.com/tags/bonita), [Bonitasoft Community forum](https://community.bonitasoft.com/questions-and-answers) diff --git a/bonita/github-repo b/bonita/github-repo index 04263d6a0f6f..f685042384c3 100644 --- a/bonita/github-repo +++ b/bonita/github-repo @@ -1 +1 @@ -https://github.com/Bonitasoft-Community/docker_bonita +https://github.com/bonitasoft/bonita-distrib diff --git a/bonita/issues.md b/bonita/issues.md new file mode 100644 index 000000000000..4836b72c7133 --- /dev/null +++ b/bonita/issues.md @@ -0,0 +1 @@ +[Jira](https://bonita.atlassian.net/jira/software/c/projects/BBPMC/issues) diff --git a/bonita/stack.yml b/bonita/stack.yml index 6c75dfdf831f..97994e559a26 100644 --- a/bonita/stack.yml +++ b/bonita/stack.yml @@ -1,9 +1,8 @@ -# Use tech_user/secret as user/password credentials version: '3' services: db: - image: postgres:9.3 + image: bonitasoft/bonita-postgres:12.6 environment: POSTGRES_PASSWORD: example restart: always @@ -11,13 +10,20 @@ services: - -c - max_prepared_transactions=100 bonita: - image: bonita + image: bonita:7.14.0 + hostname: custom-hostname.example.com ports: - 8080:8080 environment: - - POSTGRES_ENV_POSTGRES_PASSWORD=example - 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 @@ -30,16 +36,14 @@ services: - -c - | set -e - echo 'Waiting for Postgres to be available' - export PGPASSWORD="$$POSTGRES_ENV_POSTGRES_PASSWORD" + echo 'Waiting for PostgreSQL to be available' maxTries=10 - while [ "$$maxTries" -gt 0 ] && ! psql -h "$$DB_HOST" -U 'postgres' -c '\l'; do - let maxTries-- + while [ "$$maxTries" -gt 0 ] && [ $$(echo 'QUIT' | nc -w 1 "$$DB_HOST" 5432; echo "$$?") -gt 0 ]; do sleep 1 + let maxTries-- done - echo if [ "$$maxTries" -le 0 ]; then echo >&2 'error: unable to contact Postgres after 10 tries' exit 1 fi - exec /opt/files/startup.sh + 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 e64269672d9e..1a3300509b49 100644 --- a/buildpack-deps/README.md +++ b/buildpack-deps/README.md @@ -20,40 +20,40 @@ WARNING: [the Docker Community](https://github.com/docker-library/buildpack-deps) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`bullseye-curl`, `testing-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/bullseye/curl/Dockerfile) -- [`bullseye-scm`, `testing-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/bullseye/scm/Dockerfile) -- [`bullseye`, `testing`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/bullseye/Dockerfile) -- [`buster-curl`, `stable-curl`, `curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/buster/curl/Dockerfile) -- [`buster-scm`, `stable-scm`, `scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/buster/scm/Dockerfile) -- [`buster`, `stable`, `latest`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/buster/Dockerfile) -- [`jessie-curl`, `oldoldstable-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/jessie/curl/Dockerfile) -- [`jessie-scm`, `oldoldstable-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/jessie/scm/Dockerfile) -- [`jessie`, `oldoldstable`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/jessie/Dockerfile) -- [`sid-curl`, `unstable-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/sid/curl/Dockerfile) -- [`sid-scm`, `unstable-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/sid/scm/Dockerfile) -- [`sid`, `unstable`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/sid/Dockerfile) -- [`stretch-curl`, `oldstable-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/stretch/curl/Dockerfile) -- [`stretch-scm`, `oldstable-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/stretch/scm/Dockerfile) -- [`stretch`, `oldstable`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/debian/stretch/Dockerfile) -- [`bionic-curl`, `18.04-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/bionic/curl/Dockerfile) -- [`bionic-scm`, `18.04-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/bionic/scm/Dockerfile) -- [`bionic`, `18.04`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/bionic/Dockerfile) -- [`eoan-curl`, `19.10-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/eoan/curl/Dockerfile) -- [`eoan-scm`, `19.10-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/eoan/scm/Dockerfile) -- [`eoan`, `19.10`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/eoan/Dockerfile) -- [`focal-curl`, `20.04-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/focal/curl/Dockerfile) -- [`focal-scm`, `20.04-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/focal/scm/Dockerfile) -- [`focal`, `20.04`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/focal/Dockerfile) -- [`groovy-curl`, `20.10-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/groovy/curl/Dockerfile) -- [`groovy-scm`, `20.10-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/groovy/scm/Dockerfile) -- [`groovy`, `20.10`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/groovy/Dockerfile) -- [`xenial-curl`, `16.04-curl`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/xenial/curl/Dockerfile) -- [`xenial-scm`, `16.04-scm`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/xenial/scm/Dockerfile) -- [`xenial`, `16.04`](https://github.com/docker-library/buildpack-deps/blob/f84f6184d79f2cb7ab94c365ac4f47915e7ca2a8/ubuntu/xenial/Dockerfile) +- [`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) # Quick reference (cont.) @@ -61,14 +61,14 @@ WARNING: [https://github.com/docker-library/buildpack-deps/issues](https://github.com/docker-library/buildpack-deps/issues) - **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/), [`s390x`](https://hub.docker.com/r/s390x/buildpack-deps/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/buildpack-deps/` directory](https://github.com/docker-library/repo-info/blob/master/repos/buildpack-deps) ([history](https://github.com/docker-library/repo-info/commits/master/repos/buildpack-deps)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/buildpack-deps`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fbuildpack-deps) + [official-images repo's `library/buildpack-deps` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbuildpack-deps) [official-images repo's `library/buildpack-deps` file](https://github.com/docker-library/official-images/blob/master/library/buildpack-deps) ([history](https://github.com/docker-library/official-images/commits/master/library/buildpack-deps)) - **Source of this description**: diff --git a/busybox/README.md b/busybox/README.md index d186e433ab4a..3a282dc5f504 100644 --- a/busybox/README.md +++ b/busybox/README.md @@ -20,14 +20,18 @@ WARNING: [the Docker Community](https://github.com/docker-library/busybox) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.31.1-uclibc`, `1.31-uclibc`, `1-uclibc`, `uclibc`](https://github.com/docker-library/busybox/blob/7c3206169c4d32ae0afbb36b90cb9f9b77011f7a/uclibc/Dockerfile) -- [`1.31.1-glibc`, `1.31-glibc`, `1-glibc`, `glibc`](https://github.com/docker-library/busybox/blob/7c3206169c4d32ae0afbb36b90cb9f9b77011f7a/glibc/Dockerfile) -- [`1.31.1-musl`, `1.31-musl`, `1-musl`, `musl`](https://github.com/docker-library/busybox/blob/7c3206169c4d32ae0afbb36b90cb9f9b77011f7a/musl/Dockerfile) -- [`1.31.1`, `1.31`, `1`, `latest`](https://github.com/docker-library/busybox/blob/7c3206169c4d32ae0afbb36b90cb9f9b77011f7a/uclibc/Dockerfile) +- [`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) # Quick reference (cont.) @@ -35,14 +39,14 @@ WARNING: [https://github.com/docker-library/busybox/issues](https://github.com/docker-library/busybox/issues) - **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/), [`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/), [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/busybox`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fbusybox) + [official-images repo's `library/busybox` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbusybox) [official-images repo's `library/busybox` file](https://github.com/docker-library/official-images/blob/master/library/busybox) ([history](https://github.com/docker-library/official-images/commits/master/library/busybox)) - **Source of this description**: @@ -84,14 +88,14 @@ The `busybox` images contain BusyBox built against various "libc" variants (for For more information about the specific particulars of the build process for each variant, see `Dockerfile.builder` in the same directory as each variant's `Dockerfile` (see links above). -## `busybox:uclibc` - -- [uClibc](https://uclibc.org) via [Buildroot](https://buildroot.org) (statically compiled) - ## `busybox:glibc` - [glibc from Debian](https://packages.debian.org/search?searchon=names&exact=1&suite=all§ion=all&keywords=libc6) (which is then included in the image) +## `busybox:uclibc` + +- [uClibc](https://uclibc.org) via [Buildroot](https://buildroot.org) (statically compiled) + ## `busybox:musl` - [musl from Alpine](https://pkgs.alpinelinux.org/packages?name=musl) (statically compiled) diff --git a/caddy/README.md b/caddy/README.md index 05e9dcddf236..65b8c9ddb182 100644 --- a/caddy/README.md +++ b/caddy/README.md @@ -20,7 +20,7 @@ WARNING: [the Caddy Docker Maintainers](https://github.com/caddyserver/caddy-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [the Caddy Community Forums](https://caddy.community) # Supported tags and respective `Dockerfile` links @@ -28,20 +28,26 @@ WARNING: ## Simple Tags -- [`2.0.0-alpine`, `2-alpine`, `alpine`](https://github.com/caddyserver/caddy-docker/blob/c09e27ca73c56565d4526eef27adbac9ba57575c/alpine/Dockerfile) -- [`2.0.0-builder`, `2-builder`, `builder`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/builder/Dockerfile) -- [`2.0.0-windowsservercore-1809`, `2-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/windows/1809/Dockerfile) -- [`2.0.0-windowsservercore-ltsc2016`, `2-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/windows/ltsc2016/Dockerfile) +- [`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) ## Shared Tags -- `2.0.0`, `2`, `latest`: - - [`2.0.0-alpine`](https://github.com/caddyserver/caddy-docker/blob/c09e27ca73c56565d4526eef27adbac9ba57575c/alpine/Dockerfile) - - [`2.0.0-windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/windows/1809/Dockerfile) - - [`2.0.0-windowsservercore-ltsc2016`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/windows/ltsc2016/Dockerfile) -- `2.0.0-windowsservercore`, `2-windowsservercore`, `windowsservercore`: - - [`2.0.0-windowsservercore-1809`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/windows/1809/Dockerfile) - - [`2.0.0-windowsservercore-ltsc2016`](https://github.com/caddyserver/caddy-docker/blob/d9baf11b7abb9343891bb9c28f8cc7137ae94b68/windows/ltsc2016/Dockerfile) +- `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) # Quick reference (cont.) @@ -56,7 +62,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/caddy`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcaddy) + [official-images repo's `library/caddy` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcaddy) [official-images repo's `library/caddy` file](https://github.com/docker-library/official-images/blob/master/library/caddy) ([history](https://github.com/docker-library/official-images/commits/master/library/caddy)) - **Source of this description**: @@ -113,8 +119,8 @@ $ docker run -d -p 80:80 \ 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 \ - -v /site:/usr/share/caddy \ +$ docker run -d -p 80:80 -p 443:443 -p 443:443/udp \ + -v /site:/srv \ -v caddy_data:/data \ -v caddy_config:/config \ caddy caddy file-server --domain example.com @@ -130,33 +136,33 @@ Most users deploying production sites will not want to rely on mounting files in ```Dockerfile # note: never use the :latest tag in a production site -FROM caddy:2.0.0 +FROM caddy: COPY Caddyfile /etc/caddy/Caddyfile -COPY site /site +COPY site /srv ``` #### Adding custom Caddy modules -Caddy is extendable through the use of "modules". See https://caddyserver.com/docs/extending-caddy for full details. +Caddy is extendable through the use of "modules". See https://caddyserver.com/docs/extending-caddy for full details. You can find a list of available modules on [the Caddy website's download page](https://caddyserver.com/download). You can use the `:builder` image as a short-cut to building a new Caddy binary: ```Dockerfile -FROM caddy:2.0.0-builder AS builder +FROM caddy:-builder AS builder -RUN caddy-builder \ - github.com/caddyserver/nginx-adapter \ - github.com/hairyhenderson/caddy-teapot-module@v0.0.1 +RUN xcaddy build \ + --with github.com/caddyserver/nginx-adapter \ + --with github.com/hairyhenderson/caddy-teapot-module@v0.0.3-0 -FROM caddy:2.0.0 +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. -The `caddy-builder` script is used to [build a new Caddy entrypoint](https://github.com/caddyserver/caddy/blob/71e81d262bc34545f73f1380bc5d078d83d1570f/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 `@`). +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). Note that the "standard" Caddy modules ([`github.com/caddyserver/caddy/master/modules/standard`](https://github.com/caddyserver/caddy/tree/master/modules/standard)) are always included. @@ -166,13 +172,42 @@ Caddy does not require a full restart when configuration is changed. Caddy comes When running Caddy in Docker, the recommended way to trigger a config reload is by executing the `caddy reload` command in the running container. -First, you'll need to determine your container ID or name. Then, pass the container ID to `docker exec`. +First, you'll need to determine your container ID or name. Then, pass the container ID to `docker exec`. The working directory is set to `/etc/caddy` so Caddy can find your Caddyfile without additional arguments. ```console $ caddy_container_id=$(docker ps | grep caddy | awk '{print $1;}') -$ docker exec $caddy_container_id caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile +$ docker exec -w /etc/caddy $caddy_container_id caddy reload ``` +### Docker Compose example + +If you prefer to use `docker-compoose` to run your stack, here's a sample service definition. + +```yaml +version: "3.7" + +services: + caddy: + image: caddy: + restart: unless-stopped + ports: + - "80:80" + - "443:443" + - "443:443/udp" + volumes: + - $PWD/Caddyfile:/etc/caddy/Caddyfile + - $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`. + # Image Variants The `caddy` images come in many flavors, each designed for a specific use case. @@ -183,9 +218,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `caddy:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/caddy/content.md b/caddy/content.md index 6c0bbb7bebdb..9762a34459c7 100644 --- a/caddy/content.md +++ b/caddy/content.md @@ -49,8 +49,8 @@ $ docker run -d -p 80:80 \ 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 \ - -v /site:/usr/share/caddy \ +$ docker run -d -p 80:80 -p 443:443 -p 443:443/udp \ + -v /site:/srv \ -v caddy_data:/data \ -v caddy_config:/config \ %%IMAGE%% caddy file-server --domain example.com @@ -66,33 +66,33 @@ Most users deploying production sites will not want to rely on mounting files in ```Dockerfile # note: never use the :latest tag in a production site -FROM %%IMAGE%%:2.0.0 +FROM %%IMAGE%%: COPY Caddyfile /etc/caddy/Caddyfile -COPY site /site +COPY site /srv ``` #### Adding custom Caddy modules -Caddy is extendable through the use of "modules". See https://caddyserver.com/docs/extending-caddy for full details. +Caddy is extendable through the use of "modules". See https://caddyserver.com/docs/extending-caddy for full details. You can find a list of available modules on [the Caddy website's download page](https://caddyserver.com/download). You can use the `:builder` image as a short-cut to building a new Caddy binary: ```Dockerfile -FROM %%IMAGE%%:2.0.0-builder AS builder +FROM %%IMAGE%%:-builder AS builder -RUN caddy-builder \ - github.com/caddyserver/nginx-adapter \ - github.com/hairyhenderson/caddy-teapot-module@v0.0.1 +RUN xcaddy build \ + --with github.com/caddyserver/nginx-adapter \ + --with github.com/hairyhenderson/caddy-teapot-module@v0.0.3-0 -FROM %%IMAGE%%:2.0.0 +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. -The `caddy-builder` script is used to [build a new Caddy entrypoint](https://github.com/caddyserver/caddy/blob/71e81d262bc34545f73f1380bc5d078d83d1570f/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 `@`). +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). Note that the "standard" Caddy modules ([`github.com/caddyserver/caddy/master/modules/standard`](https://github.com/caddyserver/caddy/tree/master/modules/standard)) are always included. @@ -102,9 +102,38 @@ Caddy does not require a full restart when configuration is changed. Caddy comes When running Caddy in Docker, the recommended way to trigger a config reload is by executing the `caddy reload` command in the running container. -First, you'll need to determine your container ID or name. Then, pass the container ID to `docker exec`. +First, you'll need to determine your container ID or name. Then, pass the container ID to `docker exec`. The working directory is set to `/etc/caddy` so Caddy can find your Caddyfile without additional arguments. ```console $ caddy_container_id=$(docker ps | grep caddy | awk '{print $1;}') -$ docker exec $caddy_container_id caddy reload --config /etc/caddy/Caddyfile --adapter caddyfile +$ docker exec -w /etc/caddy $caddy_container_id caddy reload ``` + +### Docker Compose example + +If you prefer to use `docker-compoose` to run your stack, here's a sample service definition. + +```yaml +version: "3.7" + +services: + caddy: + image: %%IMAGE%%: + restart: unless-stopped + ports: + - "80:80" + - "443:443" + - "443:443/udp" + volumes: + - $PWD/Caddyfile:/etc/caddy/Caddyfile + - $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`. diff --git a/caddy/get-help.md b/caddy/get-help.md new file mode 100644 index 000000000000..982fbdf10126 --- /dev/null +++ b/caddy/get-help.md @@ -0,0 +1 @@ +[the Caddy Community Forums](https://caddy.community) diff --git a/cassandra/README.md b/cassandra/README.md index 30f47be9434c..61211ed6d1bd 100644 --- a/cassandra/README.md +++ b/cassandra/README.md @@ -20,14 +20,14 @@ WARNING: [the Docker Community](https://github.com/docker-library/cassandra) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.1.21`, `2.1`](https://github.com/docker-library/cassandra/blob/4c146a91f56dc3043284c817f1d61f152199482c/2.1/Dockerfile) -- [`2.2.16`, `2.2`, `2`](https://github.com/docker-library/cassandra/blob/4c146a91f56dc3043284c817f1d61f152199482c/2.2/Dockerfile) -- [`3.0.20`, `3.0`](https://github.com/docker-library/cassandra/blob/4c146a91f56dc3043284c817f1d61f152199482c/3.0/Dockerfile) -- [`3.11.6`, `3.11`, `3`, `latest`](https://github.com/docker-library/cassandra/blob/4c146a91f56dc3043284c817f1d61f152199482c/3.11/Dockerfile) +- [`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) # Quick reference (cont.) @@ -35,14 +35,14 @@ WARNING: [https://github.com/docker-library/cassandra/issues](https://github.com/docker-library/cassandra/issues) - **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/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/cassandra/` directory](https://github.com/docker-library/repo-info/blob/master/repos/cassandra) ([history](https://github.com/docker-library/repo-info/commits/master/repos/cassandra)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/cassandra`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcassandra) + [official-images repo's `library/cassandra` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcassandra) [official-images repo's `library/cassandra` file](https://github.com/docker-library/official-images/blob/master/library/cassandra) ([history](https://github.com/docker-library/official-images/commits/master/library/cassandra)) - **Source of this description**: diff --git a/centos/README-short.txt b/centos/README-short.txt index 8bb99ba846ca..8783972e1d40 100644 --- a/centos/README-short.txt +++ b/centos/README-short.txt @@ -1 +1 @@ -The official build of CentOS. +DEPRECATED; The official build of CentOS. diff --git a/centos/README.md b/centos/README.md index c1e018eed3b1..495133cefec6 100644 --- a/centos/README.md +++ b/centos/README.md @@ -14,33 +14,21 @@ WARNING: --> +# **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 Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `centos8`, `8`, `centos8.1.1911`, `8.1.1911`](https://github.com/CentOS/sig-cloud-instance-images/blob/52cc14a6dd2efc45265417a4690964d32cf13857/docker/Dockerfile) -- [`centos7`, `7`](https://github.com/CentOS/sig-cloud-instance-images/blob/b521221b5c8ac3ac88698e77941a2414ce6e778d/docker/Dockerfile) -- [`centos6`, `6`](https://github.com/CentOS/sig-cloud-instance-images/blob/23b05f6a35520ebf338e4df918e4952830da068b/docker/Dockerfile) -- [`centos7.8.2003`, `7.8.2003`](https://github.com/CentOS/sig-cloud-instance-images/blob/216a920c467977bbd0f456d3bc381100a88b3768/docker/Dockerfile) -- [`centos7.7.1908`, `7.7.1908`](https://github.com/CentOS/sig-cloud-instance-images/blob/dcf7932cbda6dd9865d50bfe969927e3e1f0c671/docker/Dockerfile) -- [`centos7.6.1810`, `7.6.1810`](https://github.com/CentOS/sig-cloud-instance-images/blob/7c2e214edced0b2f22e663ab4175a80fc93acaa9/docker/Dockerfile) -- [`centos7.5.1804`, `7.5.1804`](https://github.com/CentOS/sig-cloud-instance-images/blob/0cea32a0018ac2d874960d9378a9745bf92affd2/docker/Dockerfile) -- [`centos7.4.1708`, `7.4.1708`](https://github.com/CentOS/sig-cloud-instance-images/blob/66add29c188e42d4d855f4d4acdb2b73d547edb6/docker/Dockerfile) -- [`centos7.3.1611`, `7.3.1611`](https://github.com/CentOS/sig-cloud-instance-images/blob/5bbaef9f60ab9e3eeb61acec631c2d91f8714fff/docker/Dockerfile) -- [`centos7.2.1511`, `7.2.1511`](https://github.com/CentOS/sig-cloud-instance-images/blob/a3c59bd4e98a7f9c063d993955c8ec19c5b1ceff/docker/Dockerfile) -- [`centos7.1.1503`, `7.1.1503`](https://github.com/CentOS/sig-cloud-instance-images/blob/bc561dfdd671d612dbb9f92e7e17dd8009befc44/docker/Dockerfile) -- [`centos7.0.1406`, `7.0.1406`](https://github.com/CentOS/sig-cloud-instance-images/blob/f1d1e0bd83baef08e257da50e6fb446e4dd1b90c/docker/Dockerfile) -- [`centos6.10`, `6.10`](https://github.com/CentOS/sig-cloud-instance-images/blob/da050e2fc6c28d8d72d8bf78c49537247b5ddf76/docker/Dockerfile) -- [`centos6.9`, `6.9`](https://github.com/CentOS/sig-cloud-instance-images/blob/4f329fe087b0152df26344cecee9ba30b03b1a7b/docker/Dockerfile) -- [`centos6.8`, `6.8`](https://github.com/CentOS/sig-cloud-instance-images/blob/f32666d2af356ed6835942ed753a4970e18bca94/docker/Dockerfile) -- [`centos6.7`, `6.7`](https://github.com/CentOS/sig-cloud-instance-images/blob/d0b72df83f49da844f88aabebe3826372f675370/docker/Dockerfile) -- [`centos6.6`, `6.6`](https://github.com/CentOS/sig-cloud-instance-images/blob/8911843d9a6cc71aadd81e491f94618aded94f30/docker/Dockerfile) +- [`centos7`, `7`, `centos7.9.2009`, `7.9.2009`](https://github.com/CentOS/sig-cloud-instance-images/blob/b2d195220e1c5b181427c3172829c23ab9cd27eb/docker/Dockerfile) # Quick reference (cont.) @@ -55,7 +43,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/centos`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcentos) + [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**: diff --git a/centos/deprecated.md b/centos/deprecated.md new file mode 100644 index 000000000000..0d421de8a845 --- /dev/null +++ b/centos/deprecated.md @@ -0,0 +1 @@ +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/chronograf/README.md b/chronograf/README.md index cd5c5c6a64e9..3aa0f2958b9e 100644 --- a/chronograf/README.md +++ b/chronograf/README.md @@ -20,16 +20,18 @@ WARNING: [InfluxData](https://github.com/influxdata/influxdata-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.6`, `1.6.2`](https://github.com/influxdata/influxdata-docker/blob/4fc3aa594c3b78d07b5b1f0e8a2e9168a22b6d01/chronograf/1.6/Dockerfile) -- [`1.6-alpine`, `1.6.2-alpine`](https://github.com/influxdata/influxdata-docker/blob/4fc3aa594c3b78d07b5b1f0e8a2e9168a22b6d01/chronograf/1.6/alpine/Dockerfile) -- [`1.7`, `1.7.17`](https://github.com/influxdata/influxdata-docker/blob/4fc3aa594c3b78d07b5b1f0e8a2e9168a22b6d01/chronograf/1.7/Dockerfile) -- [`1.7-alpine`, `1.7.17-alpine`](https://github.com/influxdata/influxdata-docker/blob/4fc3aa594c3b78d07b5b1f0e8a2e9168a22b6d01/chronograf/1.7/alpine/Dockerfile) -- [`1.8`, `1.8.4`, `latest`](https://github.com/influxdata/influxdata-docker/blob/4fc3aa594c3b78d07b5b1f0e8a2e9168a22b6d01/chronograf/1.8/Dockerfile) -- [`1.8-alpine`, `1.8.4-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/4fc3aa594c3b78d07b5b1f0e8a2e9168a22b6d01/chronograf/1.8/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +46,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/chronograf`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fchronograf) + [official-images repo's `library/chronograf` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fchronograf) [official-images repo's `library/chronograf` file](https://github.com/docker-library/official-images/blob/master/library/chronograf) ([history](https://github.com/docker-library/official-images/commits/master/library/chronograf)) - **Source of this description**: @@ -126,9 +128,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `chronograf:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/cirros/README.md b/cirros/README.md index 15b3068920af..45fc1814604d 100644 --- a/cirros/README.md +++ b/cirros/README.md @@ -20,11 +20,11 @@ WARNING: [the Docker Community](https://github.com/tianon/docker-brew-cirros) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`0.5.1`, `0.5`, `0`, `latest`](https://github.com/tianon/docker-brew-cirros/blob/0f4ac5ae1e2b7bbff60b81b554f7578be1caec3b/arches/amd64/Dockerfile) +- [`0.6.1`, `0.6`, `0`, `latest`](https://github.com/tianon/docker-brew-cirros/blob/84bfc9d0e4cc631d043410d602bf5f8876ed6575/arches/amd64/Dockerfile) # Quick reference (cont.) @@ -32,14 +32,14 @@ WARNING: [https://github.com/tianon/docker-brew-cirros/issues](https://github.com/tianon/docker-brew-cirros/issues) - **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/), [`i386`](https://hub.docker.com/r/i386/cirros/), [`ppc64le`](https://hub.docker.com/r/ppc64le/cirros/) + [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/cirros`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcirros) + [official-images repo's `library/cirros` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcirros) [official-images repo's `library/cirros` file](https://github.com/docker-library/official-images/blob/master/library/cirros) ([history](https://github.com/docker-library/official-images/commits/master/library/cirros)) - **Source of this description**: diff --git a/clearlinux/README.md b/clearlinux/README.md index d7d713f5f4dc..8c6e97fb3f8d 100644 --- a/clearlinux/README.md +++ b/clearlinux/README.md @@ -20,11 +20,11 @@ WARNING: [Intel Corporation](https://github.com/clearlinux/docker-brew-clearlinux) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `base`](https://github.com/clearlinux/docker-brew-clearlinux/blob/e97035148569e007f5bcd5134237cb5e552c2678/Dockerfile) +- [`latest`, `base`](https://github.com/clearlinux/docker-brew-clearlinux/blob/cf0b677798f83a0d241f6c3c32e8a6e96e008049/Dockerfile) # Quick reference (cont.) @@ -39,7 +39,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/clearlinux`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fclearlinux) + [official-images repo's `library/clearlinux` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fclearlinux) [official-images repo's `library/clearlinux` file](https://github.com/docker-library/official-images/blob/master/library/clearlinux) ([history](https://github.com/docker-library/official-images/commits/master/library/clearlinux)) - **Source of this description**: diff --git a/clefos/README.md b/clefos/README.md index 7624d57e65fb..de51147b6539 100644 --- a/clefos/README.md +++ b/clefos/README.md @@ -20,7 +20,7 @@ WARNING: [The ClefOS Project](https://github.com/nealef/clefos) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -39,7 +39,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/clefos`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fclefos) + [official-images repo's `library/clefos` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fclefos) [official-images repo's `library/clefos` file](https://github.com/docker-library/official-images/blob/master/library/clefos) ([history](https://github.com/docker-library/official-images/commits/master/library/clefos)) - **Source of this description**: diff --git a/clojure/README.md b/clojure/README.md index ccb3927fde59..f3db7c17b4d8 100644 --- a/clojure/README.md +++ b/clojure/README.md @@ -20,37 +20,70 @@ WARNING: [the Docker Community](https://github.com/Quantisan/docker-clojure) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`openjdk-8`, `openjdk-8-lein`, `openjdk-8-lein-2.9.1`, `openjdk-8-stretch`, `openjdk-8-lein-stretch`, `openjdk-8-lein-2.9.1-stretch`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-8-stretch/lein/Dockerfile) -- [`openjdk-8-slim-buster`, `openjdk-8-lein-slim-buster`, `openjdk-8-lein-2.9.1-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-8-slim-buster/lein/Dockerfile) -- [`openjdk-8-boot`, `openjdk-8-boot-2.8.3`, `openjdk-8-boot-stretch`, `openjdk-8-boot-2.8.3-stretch`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-8-stretch/boot/Dockerfile) -- [`openjdk-8-boot-slim-buster`, `openjdk-8-boot-2.8.3-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-8-slim-buster/boot/Dockerfile) -- [`openjdk-8-tools-deps`, `openjdk-8-tools-deps-1.10.1.502`, `openjdk-8-tools-deps-stretch`, `openjdk-8-tools-deps-1.10.1.502-stretch`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-8-stretch/tools-deps/Dockerfile) -- [`openjdk-8-tools-deps-slim-buster`, `openjdk-8-tools-deps-1.10.1.502-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-8-slim-buster/tools-deps/Dockerfile) -- [`openjdk-11`, `openjdk-11-lein`, `openjdk-11-lein-2.9.1`, `lein`, `lein-2.9.1`, `openjdk-11-stretch`, `openjdk-11-lein-stretch`, `openjdk-11-lein-2.9.1-stretch`, `lein-stretch`, `lein-2.9.1-stretch`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-11-stretch/lein/Dockerfile) -- [`openjdk-11-lein-slim-buster`, `openjdk-11-slim-buster`, `openjdk-11-lein-2.9.1-slim-buster`, `slim-buster`, `lein-slim-buster`, `lein-2.9.1-slim-buster`, `latest`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-11-slim-buster/lein/Dockerfile) -- [`openjdk-11-boot`, `openjdk-11-boot-2.8.3`, `boot`, `boot-2.8.3`, `openjdk-11-boot-stretch`, `openjdk-11-boot-2.8.3-stretch`, `boot-stretch`, `boot-2.8.3-stretch`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-11-stretch/boot/Dockerfile) -- [`openjdk-11-boot-slim-buster`, `openjdk-11-boot-2.8.3-slim-buster`, `boot-slim-buster`, `boot-2.8.3-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-11-slim-buster/boot/Dockerfile) -- [`openjdk-11-tools-deps`, `openjdk-11-tools-deps-1.10.1.502`, `tools-deps`, `tools-deps-1.10.1.502`, `openjdk-11-tools-deps-stretch`, `openjdk-11-tools-deps-1.10.1.502-stretch`, `tools-deps-stretch`, `tools-deps-1.10.1.502-stretch`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-11-stretch/tools-deps/Dockerfile) -- [`openjdk-11-tools-deps-slim-buster`, `openjdk-11-tools-deps-1.10.1.502-slim-buster`, `tools-deps-1.10.1.502-slim-buster`, `tools-deps-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-11-slim-buster/tools-deps/Dockerfile) -- [`openjdk-13`, `openjdk-13-lein`, `openjdk-13-lein-2.9.1`, `openjdk-13-slim-buster`, `openjdk-13-lein-slim-buster`, `openjdk-13-lein-2.9.1-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-13-slim-buster/lein/Dockerfile) -- [`openjdk-13-buster`, `openjdk-13-lein-buster`, `openjdk-13-lein-2.9.1-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-13-buster/lein/Dockerfile) -- [`openjdk-13-boot`, `openjdk-13-boot-2.8.3`, `openjdk-13-boot-slim-buster`, `openjdk-13-boot-2.8.3-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-13-slim-buster/boot/Dockerfile) -- [`openjdk-13-boot-buster`, `openjdk-13-boot-2.8.3-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-13-buster/boot/Dockerfile) -- [`openjdk-13-tools-deps`, `openjdk-13-tools-deps-1.10.1.502`, `openjdk-13-tools-deps-slim-buster`, `openjdk-13-tools-deps-1.10.1.502-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-13-slim-buster/tools-deps/Dockerfile) -- [`openjdk-13-tools-deps-buster`, `openjdk-13-tools-deps-1.10.1.502-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-13-buster/tools-deps/Dockerfile) -- [`openjdk-14`, `openjdk-14-lein`, `openjdk-14-lein-2.9.1`, `openjdk-14-slim-buster`, `openjdk-14-lein-slim-buster`, `openjdk-14-lein-2.9.1-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-slim-buster/lein/Dockerfile) -- [`openjdk-14-buster`, `openjdk-14-lein-buster`, `openjdk-14-lein-2.9.1-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-buster/lein/Dockerfile) -- [`openjdk-14-boot`, `openjdk-14-boot-2.8.3`, `openjdk-14-boot-slim-buster`, `openjdk-14-boot-2.8.3-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-slim-buster/boot/Dockerfile) -- [`openjdk-14-boot-buster`, `openjdk-14-boot-2.8.3-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-buster/boot/Dockerfile) -- [`openjdk-14-tools-deps`, `openjdk-14-tools-deps-1.10.1.502`, `openjdk-14-tools-deps-slim-buster`, `openjdk-14-tools-deps-1.10.1.502-slim-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-slim-buster/tools-deps/Dockerfile) -- [`openjdk-14-tools-deps-buster`, `openjdk-14-tools-deps-1.10.1.502-buster`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-buster/tools-deps/Dockerfile) -- [`openjdk-14-alpine`, `openjdk-14-lein-alpine`, `openjdk-14-lein-2.9.1-alpine`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-alpine/lein/Dockerfile) -- [`openjdk-14-boot-alpine`, `openjdk-14-boot-2.8.3-alpine`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-alpine/boot/Dockerfile) -- [`openjdk-14-tools-deps-alpine`, `openjdk-14-tools-deps-1.10.1.502-alpine`](https://github.com/Quantisan/docker-clojure/blob/e96f6249cac065855a40a9f36ba88949e0a52d7d/target/openjdk-14-alpine/tools-deps/Dockerfile) +- [`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) # Quick reference (cont.) @@ -65,7 +98,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/clojure`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fclojure) + [official-images repo's `library/clojure` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fclojure) [official-images repo's `library/clojure` file](https://github.com/docker-library/official-images/blob/master/library/clojure) ([history](https://github.com/docker-library/official-images/commits/master/library/clojure)) - **Source of this description**: @@ -157,7 +190,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 buster or stretch 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 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` @@ -165,9 +200,9 @@ This image does not contain the common packages contained in the default tag and ## `clojure:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/composer/README.md b/composer/README.md index e646be63c01e..784ffabddb36 100644 --- a/composer/README.md +++ b/composer/README.md @@ -20,12 +20,15 @@ WARNING: [Rob Bast](https://github.com/alcohol), with [contributions](https://github.com/composer/docker/graphs/contributors) from the community. - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.10.6`, `1.10`, `1`, `latest`](https://github.com/composer/docker/blob/719eb94597f3608c4933fd781d2a8448f840d277/1.10/Dockerfile) -- [`1.9.3`, `1.9`](https://github.com/composer/docker/blob/6deedc6a8c89b17c9a6ca61a28c8b206513c76f8/1.9/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +43,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/composer`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcomposer) + [official-images repo's `library/composer` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcomposer) [official-images repo's `library/composer` file](https://github.com/docker-library/official-images/blob/master/library/composer) ([history](https://github.com/docker-library/official-images/commits/master/library/composer)) - **Source of this description**: @@ -58,15 +61,13 @@ You can read more about Composer in our [official documentation](https://getcomp ### Basic usage -Running the `composer` image is as simple as follows: - ```console $ docker run --rm --interactive --tty \ --volume $PWD:/app \ - composer install + composer ``` -### Persistent cache / global configuration +### Persist cache / global configuration You can bind mount the Composer home directory from your host to the container to enable a persistent cache or share global configuration: @@ -74,12 +75,12 @@ You can bind mount the Composer home directory from your host to the container t $ docker run --rm --interactive --tty \ --volume $PWD:/app \ --volume ${COMPOSER_HOME:-$HOME/.composer}:/tmp \ - composer install + composer ``` **Note:** this relies on the fact that the `COMPOSER_HOME` value is set to `/tmp` in the image by default. -Or if you are following the XDG specification: +Or if your environment follows the XDG specification: ```console $ docker run --rm --interactive --tty \ @@ -88,7 +89,7 @@ $ docker run --rm --interactive --tty \ --volume ${COMPOSER_HOME:-$HOME/.config/composer}:$COMPOSER_HOME \ --volume ${COMPOSER_CACHE_DIR:-$HOME/.cache/composer}:$COMPOSER_CACHE_DIR \ --volume $PWD:/app \ - composer install + composer ``` ### Filesystem permissions @@ -99,9 +100,13 @@ By default, Composer runs as root inside the container. This can lead to permiss $ docker run --rm --interactive --tty \ --volume $PWD:/app \ --user $(id -u):$(id -g) \ - composer install + composer ``` +See: https://docs.docker.com/engine/reference/run/#user for details. + +> Note: Docker for Mac behaves differently and this tip might not apply to Docker for Mac users. + ### Private repositories / SSH agent When you need to access private repositories, you will either need to share your configured credentials, or mount your `ssh-agent` socket inside the running container: @@ -112,12 +117,12 @@ $ eval $(ssh-agent); \ --volume $PWD:/app \ --volume $SSH_AUTH_SOCK:/ssh-auth.sock \ --env SSH_AUTH_SOCK=/ssh-auth.sock \ - composer install + composer ``` **Note:** On OSX this requires Docker For Mac v2.2.0.0 or later, see [docker/for-mac#410](https://github.com/docker/for-mac/issues/410). -When combining the use of private repositories with running Composer as another user, you might run into non-existent user errors (thrown by ssh). To work around this, simply mount the host passwd and group files (read-only) into the container: +When combining the use of private repositories with running Composer as another user, you can run into non-existent user errors (thrown by ssh). To work around this, bind mount the host passwd and group files (read-only) into the container: ```console $ eval $(ssh-agent); \ @@ -128,7 +133,7 @@ $ eval $(ssh-agent); \ --volume /etc/group:/etc/group:ro \ --env SSH_AUTH_SOCK=/ssh-auth.sock \ --user $(id -u):$(id -g) \ - composer install + composer ``` # Troubleshooting @@ -156,7 +161,7 @@ Suggestions: "config": { "platform": { "php": "MAJOR.MINOR.PATCH", - "ext-something": "1" + "ext-something": "MAJOR.MINOR.PATCH" } } } diff --git a/composer/content.md b/composer/content.md index 5965d1ccfc7a..048898e45768 100644 --- a/composer/content.md +++ b/composer/content.md @@ -10,15 +10,13 @@ You can read more about Composer in our [official documentation](https://getcomp ### Basic usage -Running the `composer` image is as simple as follows: - ```console $ docker run --rm --interactive --tty \ --volume $PWD:/app \ - %%IMAGE%% install + %%IMAGE%% ``` -### Persistent cache / global configuration +### Persist cache / global configuration You can bind mount the Composer home directory from your host to the container to enable a persistent cache or share global configuration: @@ -26,12 +24,12 @@ You can bind mount the Composer home directory from your host to the container t $ docker run --rm --interactive --tty \ --volume $PWD:/app \ --volume ${COMPOSER_HOME:-$HOME/.composer}:/tmp \ - %%IMAGE%% install + %%IMAGE%% ``` **Note:** this relies on the fact that the `COMPOSER_HOME` value is set to `/tmp` in the image by default. -Or if you are following the XDG specification: +Or if your environment follows the XDG specification: ```console $ docker run --rm --interactive --tty \ @@ -40,7 +38,7 @@ $ docker run --rm --interactive --tty \ --volume ${COMPOSER_HOME:-$HOME/.config/composer}:$COMPOSER_HOME \ --volume ${COMPOSER_CACHE_DIR:-$HOME/.cache/composer}:$COMPOSER_CACHE_DIR \ --volume $PWD:/app \ - %%IMAGE%% install + %%IMAGE%% ``` ### Filesystem permissions @@ -51,9 +49,13 @@ By default, Composer runs as root inside the container. This can lead to permiss $ docker run --rm --interactive --tty \ --volume $PWD:/app \ --user $(id -u):$(id -g) \ - %%IMAGE%% install + %%IMAGE%% ``` +See: https://docs.docker.com/engine/reference/run/#user for details. + +> Note: Docker for Mac behaves differently and this tip might not apply to Docker for Mac users. + ### Private repositories / SSH agent When you need to access private repositories, you will either need to share your configured credentials, or mount your `ssh-agent` socket inside the running container: @@ -64,12 +66,12 @@ $ eval $(ssh-agent); \ --volume $PWD:/app \ --volume $SSH_AUTH_SOCK:/ssh-auth.sock \ --env SSH_AUTH_SOCK=/ssh-auth.sock \ - %%IMAGE%% install + %%IMAGE%% ``` **Note:** On OSX this requires Docker For Mac v2.2.0.0 or later, see [docker/for-mac#410](https://github.com/docker/for-mac/issues/410). -When combining the use of private repositories with running Composer as another user, you might run into non-existent user errors (thrown by ssh). To work around this, simply mount the host passwd and group files (read-only) into the container: +When combining the use of private repositories with running Composer as another user, you can run into non-existent user errors (thrown by ssh). To work around this, bind mount the host passwd and group files (read-only) into the container: ```console $ eval $(ssh-agent); \ @@ -80,7 +82,7 @@ $ eval $(ssh-agent); \ --volume /etc/group:/etc/group:ro \ --env SSH_AUTH_SOCK=/ssh-auth.sock \ --user $(id -u):$(id -g) \ - %%IMAGE%% install + %%IMAGE%% ``` # Troubleshooting @@ -108,7 +110,7 @@ Suggestions: "config": { "platform": { "php": "MAJOR.MINOR.PATCH", - "ext-something": "1" + "ext-something": "MAJOR.MINOR.PATCH" } } } diff --git a/consul/README.md b/consul/README.md index 0eb5ac72837c..75b9089706bf 100644 --- a/consul/README.md +++ b/consul/README.md @@ -20,13 +20,13 @@ WARNING: [HashiCorp](https://github.com/hashicorp/docker-consul) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.8.0-beta1`](https://github.com/hashicorp/docker-consul/blob/6966b401fd8015b87c01949c0baaafb36c9d3b50/0.X/Dockerfile) -- [`1.7.3`, `1.7`, `latest`](https://github.com/hashicorp/docker-consul/blob/9cb67358af03c73222da3badebc7c69d765c456a/0.X/Dockerfile) -- [`1.6.5`, `1.6`](https://github.com/hashicorp/docker-consul/blob/5fdce521f44a1cd56d3f5fb92e5732f2ae516d3e/0.X/Dockerfile) +- [`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.) @@ -41,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/consul`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fconsul) + [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**: @@ -58,7 +58,7 @@ Consul is a distributed, highly-available, and multi-datacenter aware tool for s # 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/internals/architecture.html) guide for more detail on all these concepts. +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. @@ -76,7 +76,7 @@ Consul always runs under [dumb-init](https://github.com/Yelp/dumb-init), which h 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 were 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 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. diff --git a/consul/content.md b/consul/content.md index 1beacc20e035..5535d7a67745 100644 --- a/consul/content.md +++ b/consul/content.md @@ -9,7 +9,7 @@ Consul is a distributed, highly-available, and multi-datacenter aware tool for s # 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/internals/architecture.html) guide for more detail on all these concepts. +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. @@ -27,7 +27,7 @@ Consul always runs under [dumb-init](https://github.com/Yelp/dumb-init), which h 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 were 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 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. diff --git a/convertigo/README-short.txt b/convertigo/README-short.txt index baa852d773b2..3d2df5140a57 100644 --- a/convertigo/README-short.txt +++ b/convertigo/README-short.txt @@ -1 +1 @@ -Open source Low Code Application Platform featuring MXDP/MBaaS for full-stack development. \ No newline at end of file +Open source Low Code & No Code Application Platform featuring MXDP/MBaaS for full-stack development. \ No newline at end of file diff --git a/convertigo/README.md b/convertigo/README.md index 1f6e8cc1d74a..218bfcf3d880 100644 --- a/convertigo/README.md +++ b/convertigo/README.md @@ -20,11 +20,11 @@ WARNING: [Convertigo](https://github.com/convertigo/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.8.0`, `7.8`, `latest`](https://github.com/convertigo/convertigo/blob/ffc9ab045f2e9bcc1103fb0bd00042d2527eeae5/docker/default/Dockerfile) +- [`8.1.0`, `8.1`, `latest`](https://github.com/convertigo/convertigo/blob/070f8a67e61a7a9bc701ddadae0a0a0fba9470a3/docker/default/Dockerfile) # Quick reference (cont.) @@ -39,19 +39,20 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/convertigo`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fconvertigo) + [official-images repo's `library/convertigo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fconvertigo) [official-images repo's `library/convertigo` file](https://github.com/docker-library/official-images/blob/master/library/convertigo) ([history](https://github.com/docker-library/official-images/commits/master/library/convertigo)) - **Source of this description**: [docs repo's `convertigo/` directory](https://github.com/docker-library/docs/tree/master/convertigo) ([history](https://github.com/docker-library/docs/commits/master/convertigo)) -# What is Convertigo Mobility Platform ? +# What is Convertigo Low Code Platform ? -Convertigo is an open source Low Code Application Platform (LCAP) featuring MXDP (Multi eXperience Development Platform) / MBaaS (Mobile Back end as a Service) for full-stack mobile and web application development. The platform is used to build complex Cross-platform Enterprise Mobile apps in a few days. Convertigo platform is composed of several components: +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 MBaaS**: The back-end MBaaS server part. Handles back-end connectors, micro-services execution, offline data device synchronization and serves 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 MBaaS micro-services workflows and optionaly use the "Mobile Builder" edition to build Mobile 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 Mobile development tools such as Xcode (iOS) Android Studio (Android) and Visual Studio (Windows Mobile, Windows UWP and Xamarin). SDKS are available on each platform standard repository (Bintray for Android, Cocoapods for iOS and Nuget for .NET) +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) 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. @@ -67,31 +68,43 @@ Convertigo Community edition brought to you by Convertigo SA (Paris & San Franci $ docker run --name C8O -d -p 28080:28080 convertigo ``` -This will start a container running the minimum Convertigo MBaaS server. Convertigo MBaaS uses images' **/workspace** directory to store configuration file and deployed projects as an Docker volume. +This will start a container running the minimum Convertigo server. Convertigo uses images' **/workspace** directory to store configuration file and deployed projects as an Docker volume. -You can access the Server admin console on http://[dockerhost]:28080/convertigo and login using the default credentials: admin / admin +You can access the Server admin console on `http://[dockerhost]:28080/convertigo` and login using the default credentials: `admin / admin`. + +The Server can also be accessed by HTTPS on `https://[dockerhost]:28443/convertigo` if SSL is configured (see the **HTTPS** section below). ## Link Convertigo to a CouchDB database for FullSync (Convertigo EE only) -Convertigo MBaaS FullSync module uses Apache CouchDB 2.3.1 as NoSQL repository. You can use the **[couchdb](https://hub.docker.com/_/couchdb/)** docker image and link to it convertigo this way +Convertigo FullSync module uses Apache CouchDB 3.2.2 as NoSQL repository. You can use the **[couchdb](https://hub.docker.com/_/couchdb/)** docker image and link to it convertigo this way Launch CouchDB container and name it 'fullsync' ```console -$ docker run -d --name fullsync couchdb:2.3.1 +$ docker run -d --name fullsync couchdb:3.2.2 ``` -Then launch Convertigo and link it to the running 'fullsync' container. Convertigo MBaaS sever will automatically use it as its fullsync repository. +Then launch Convertigo and link it to the running 'fullsync' container. Convertigo Low Code sever will automatically use it as its fullsync repository. ```console $ docker run -d --name C8O --link fullsync:couchdb -p 28080:28080 convertigo ``` -## Link Convertigo to a Billing & Analytics database +## Use embedded PouchDB as FullSync engine (not for production) + +Convertigo FullSync is designed to use CouchDB server or cluster. Convertigo FullSync is also compatible with PouchDB but only for little projects or tests. Internet access is required to enable this feature. + +It can be enabled directly at startup: + +```console +$ docker run -d --name C8O -e JAVA_OPTS="-Dconvertigo.engine.fullsync.pouchdb=true" -p 28080:28080 convertigo +``` + +## Link Convertigo Low Code Server to a Billing & Analytics database ### MySQL -MySQL is the recommended database for holding Convertigo MBaaS server analytics. You can use this command to run convertigo and link it to a running MySQL container. Change `[mysql-container]` to the container name, and `[username for the c8oAnalytics db]`, `[password for specified db user]` with the values for your MySQL configuration. +MySQL is the recommended database for holding Convertigo Low Code server analytics. You can use this command to run convertigo and link it to a running MySQL container. Change `[mysql-container]` to the container name, and `[username for the c8oAnalytics db]`, `[password for specified db user]` with the values for your MySQL configuration. ```console $ docker run -d --name C8O --link [mysql-container]:mysql -p 28080:28080 \ @@ -102,7 +115,7 @@ $ docker run -d --name C8O --link [mysql-container]:mysql -p 28080:28080 convertigo ``` -## Where is Convertigo MBaaS server storing deployed projects +## 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 : @@ -110,21 +123,40 @@ Projects are deployed in the Convertigo workspace, a simple file system director $ docker run --name C8O -v $(pwd):/workspace -d -p 28080:28080 convertigo ``` -You can share the same workspace by all Convertigo containers. This this case, when you deploy a project on a Convertigo container, it will be seen by others. This is the best way to build multi-instance load balanced Convertigo server farms. +You can share the same workspace by all Convertigo containers. In this case, when you deploy a project on a Convertigo container, it will be seen by others. This is the best way to build multi-instance load balanced Convertigo server farms. + +**Be sure to have a really fast file sharing between instances !!! We have experienced that Azure File Share is not fast enough** + +To avoid log and cache mixing, you have to add 2 variables for instance specific paths: + +```console +-Dconvertigo.engine.cache_manager.filecache.directory=/workspace/cache/[instance name] +-Dconvertigo.engine.log4j.appender.CemsAppender.File=/workspace/logs/[instance name]/engine.log +``` + +## Make image with pre-deployed projects + +If you want to make a vertical image ready to start with your application inside, you have to have your built projects **.car** files next to your `Dockerfile`: + +```console +FROM convertigo +COPY myProject.car /usr/local/tomcat/webapps/convertigo/WEB-INF/default_user_workspace/projects/ +COPY myDependency.car /usr/local/tomcat/webapps/convertigo/WEB-INF/default_user_workspace/projects/ +``` -## Migrate from an earlier version of Convertigo +## Migrate from an earlier version of Convertigo Low Code Platform - Stop the container to perform a backup. And just back the workspace directory. This will backup all the projects definitions and some project data. -- Start a new Convertigo MBaaS docker container mapping the workspace +- Start a new Convertigo docker container mapping the workspace - All the workspace (Projects) will be automatically migrated to the new Convertigo MBaaS version ## Security -The default administration account of a Convertigo serveur is **admin** / **admin** and the **testplatform** is anonymous. +The default administration account of a Convertigo server is **admin** / **admin** and the **testplatform** is anonymous. -These accounts can be configured through the *administration console* and saved in the **workspace**. +These accounts can be configured through the **administration console** and saved in the **workspace**. -### `CONVERTIGO_ADMIN_USER` and `CONVERTIGO_ADMIN_PASSWORD` variables +### `CONVERTIGO_ADMIN_USER` and `CONVERTIGO_ADMIN_PASSWORD` Environment variables You can change the default administration account : @@ -132,7 +164,7 @@ You can change the default administration account : $ docker run -d --name C8O -e CONVERTIGO_ADMIN_USER=administrator -e CONVERTIGO_ADMIN_PASSWORD=s3cret -p 28080:28080 convertigo ``` -### `CONVERTIGO_TESTPLATFORM_USER` and `CONVERTIGO_TESTPLATFORM_PASSWORD` variables +### `CONVERTIGO_TESTPLATFORM_USER` and `CONVERTIGO_TESTPLATFORM_PASSWORD` Environment variables You can lock the **testplatform** by setting the account : @@ -140,16 +172,73 @@ You can lock the **testplatform** by setting the account : $ docker run -d --name C8O -e CONVERTIGO_TESTPLATFORM_USER=tp_user -e CONVERTIGO_TESTPLATFORM_PASSWORD=s3cret -p 28080:28080 convertigo ``` +## HTTPS / SSL Configuration + +In many cases, the Convertigo instance is behind a reverse proxy that handles HTTPS / SSL configuration. But you can configure the container to manage existing SSL certificates or dynamically generate one. + +If the SSL configuration is correct, the Convertigo Server will listen **HTTP** on port `28080` and **HTTPS** on port `28443`. + +### Provide existing certificate using the /ssl mount point + +If you have an existing certificate and a private key, you can put them in **PEM** format in a folder (or in a Kubernetes secret): + +- `key.pem` : the private key in PEM format (no password) +- `cert.pem` : the server certificate in PEM format, can also contain the full chain of certificates +- `chain.pem` : the optional chain of certificates not included in `cert.pem` using the PEM format + +```console +$ docker run -d --name C8O -v :/ssl -p 28443:28443 convertigo +``` + +If you want to expose both **HTTP** and **HTTPS** you can expose both **ports**: + +```console +$ docker run -d --name C8O -v :/ssl -p 28080:28080 -p 28443:28443 convertigo +``` + +### Provide existing certificate using environment variables + +If you cannot mount a volume, you can probably add environment variables of previously described files. Content cannot be set directly in a variable but their base64 version can. Here are the variables to configure: + +- `SSL_KEY_B64` : the private key in base64 PEM format (no password) +- `SSL_CERT_B64` : the server certificate in base64 PEM format, can also contain the full chain of certificates +- `SSL_CHAIN_B64` : the optional chain of certificates not included in `cert.pem` using the base64 PEM format + +```console +$ SSL_KEY_B64=$(base64 key.pem) +$ SSL_CERT_B64=$(base64 cert.pem) +$ SSL_CHAIN_B64=$(base64 chain.pem) +$ docker run -d --name C8O -e SSL_KEY_B64="$SSL_KEY_B64" -e SSL_CERT_B64="$SSL_CERT_B64" -e SSL_CHAIN_B64="$SSL_CHAIN_B64" -p 28443:28443 convertigo +``` + +### Generate and use a self-signed certificate + +If you don't have certificate file, you can dynamically generate one for the first start. This will be an untrusted certificate for Browsers and HTTPS clients. This shouldn't be used for production environment. + +Use the `SSL_SELFSIGNED` environment variable to indicate for what domain you want generate certificate. + +```console +$ docker run -d --name C8O -e SSL_SELFSIGNED=mycomputer -p 28443:28443 convertigo +``` + +Generated files can be retrieved if the `/ssl` mount point is configured on folder without `cert.pem` nor `key.pem`. + +```console +$ docker run -d --name C8O -v :/ssl -e SSL_SELFSIGNED=mycomputer -p 28443:28443 convertigo +``` + ## `JAVA_OPTS` Environment variable -Convertigo is based on a *Java* process with some defaults *JVM* options. You can override our defaults *JVM* options with you own. +Convertigo is based on a **Java** process with some defaults **JVM** options. You can override our defaults **JVM** options with you own. -Add any *Java JVM* options such as -D[something] : +Add any **Java JVM** options such as -D[something] : ```console $ docker run -d --name C8O -e JAVA_OPTS="-DjvmRoute=server1" -p 28080:28080 convertigo ``` +[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). + ## `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. @@ -162,7 +251,7 @@ $ docker run -d --name C8O -e JXMX="4096" -p 28080:28080 convertigo ## `COOKIE_PATH` Environment variable -Convertigo generates a `JSESSIONID` to maintain the user session and stores in a *cookie*. The *cookie* is set for the server path `/` by default. In case of a front server with multiple services for different paths, you can set a path restriction for the *cookie* with the `JSESSIONID`. Just define the `COOKIE_PATH` environment variable with a compatible path. +Convertigo generates a `JSESSIONID` to maintain the user session and stores in a **cookie**. The **cookie** is set for the server path `/` by default. In case of a front server with multiple services for different paths, you can set a path restriction for the **cookie** with the `JSESSIONID`. Just define the `COOKIE_PATH` environment variable with a compatible path. The default `COOKIE_PATH` value is `/` and can be defined : @@ -172,9 +261,9 @@ $ docker run -d --name C8O -e COOKIE_PATH="/convertigo" -p 28080:28080 convertig ## `COOKIE_SECURE` Environment variable -Convertigo use a *cookie* to maintain sessions. Requests on port `28080` are *HTTP* but we advice to use an *HTTPS* front for production (nginx, kubenetes ingress, ...). In this case, you can secure yours cookies to be used only with secured connections by adding the `Secure` flag. +Convertigo uses a **cookie** to maintain sessions. Requests on port `28080` are **HTTP** but we advise to use an **HTTPS** front for production (nginx, kubernetes ingress, ...). In this case, you can secure your cookies to be used only with secured connections by adding the `Secure` flag. -The Secure flag can be enabled by setting the `COOKIE_SECURE` environment variable to `true`. Once enabled, cookies and sessions aren't working through an *HTTP* connection. +The Secure flag can be enabled by setting the `COOKIE_SECURE` environment variable to `true`. Once enabled, cookies and sessions aren't working through an **HTTP** connection. The default `COOKIE_SECURE` value is `false` and can be defined : @@ -182,9 +271,41 @@ The default `COOKIE_SECURE` value is `false` and can be defined : $ docker run -d --name C8O -e COOKIE_SECURE="true" -p 28080:28080 convertigo ``` +**Note :** if you have set the **SSL** configuration and you access the **HTTPS 28443** port, cookies are automatically `Secure`. + +## `COOKIE_SAMESITE` Environment variable + +Allow to configure the **SameSite** parameter for generated cookies. Can be empty, `none`, `lax` or `strict`. + +The default `COOKIE_SAMESITE` value is **empty** and can be defined this way: + +```console +$ docker run -d --name C8O -e COOKIE_SAMESITE=lax -p 28080:28080 convertigo +``` + +## `SESSION_TIMEOUT` Environment variable + +Allow to configure the default Tomcat **session-timeout** in minutes. This value is used for non-project calls (Administration console, Fullsync...). This value is overridden by each projects' calls (Sequence, Transaction ...). + +The default `SESSION_TIMEOUT` value is **30** and can be defined this way: + +```console +$ 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 default `DISABLE_SUDO` value is **empty** and can be defined this way: + +```console +$ docker run -d --name C8O -e DISABLE_SUDO=true -p 28080:28080 convertigo +``` + ## Pre configurated Docker compose stack -You can use this [stack](https://github.com/convertigo/docker/blob/master/compose/mbaas/docker-compose.yml) to run a complete Convertigo MBaaS server with FullSync repository and MySQL analytics in a few command lines. +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. ```console $ mkdir c8oMBaaS @@ -195,7 +316,7 @@ $ docker-compose up -d # License -Convertigo Community Edition MBaaS image is licenced under [AGPL 3.0](http://www.gnu.org/licenses/agpl-3.0.html) +Convertigo Community Edition image is licenced under [AGPL 3.0](http://www.gnu.org/licenses/agpl-3.0.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/convertigo/content.md b/convertigo/content.md index c3cb38d55fd6..dbcff92d7603 100644 --- a/convertigo/content.md +++ b/convertigo/content.md @@ -1,10 +1,11 @@ -# What is Convertigo Mobility Platform ? +# What is Convertigo Low Code Platform ? -Convertigo is an open source Low Code Application Platform (LCAP) featuring MXDP (Multi eXperience Development Platform) / MBaaS (Mobile Back end as a Service) for full-stack mobile and web application development. The platform is used to build complex Cross-platform Enterprise Mobile apps in a few days. Convertigo platform is composed of several components: +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 MBaaS**: The back-end MBaaS server part. Handles back-end connectors, micro-services execution, offline data device synchronization and serves 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 MBaaS micro-services workflows and optionaly use the "Mobile Builder" edition to build Mobile 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 Mobile development tools such as Xcode (iOS) Android Studio (Android) and Visual Studio (Windows Mobile, Windows UWP and Xamarin). SDKS are available on each platform standard repository (Bintray for Android, Cocoapods for iOS and Nuget for .NET) +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) 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. @@ -20,31 +21,43 @@ Convertigo Community edition brought to you by Convertigo SA (Paris & San Franci $ docker run --name C8O -d -p 28080:28080 %%IMAGE%% ``` -This will start a container running the minimum Convertigo MBaaS server. Convertigo MBaaS uses images' **/workspace** directory to store configuration file and deployed projects as an Docker volume. +This will start a container running the minimum Convertigo server. Convertigo uses images' **/workspace** directory to store configuration file and deployed projects as an Docker volume. -You can access the Server admin console on http://[dockerhost]:28080/convertigo and login using the default credentials: admin / admin +You can access the Server admin console on `http://[dockerhost]:28080/convertigo` and login using the default credentials: `admin / admin`. + +The Server can also be accessed by HTTPS on `https://[dockerhost]:28443/convertigo` if SSL is configured (see the **HTTPS** section below). ## Link Convertigo to a CouchDB database for FullSync (Convertigo EE only) -Convertigo MBaaS FullSync module uses Apache CouchDB 2.3.1 as NoSQL repository. You can use the **[couchdb](https://hub.docker.com/_/couchdb/)** docker image and link to it convertigo this way +Convertigo FullSync module uses Apache CouchDB 3.2.2 as NoSQL repository. You can use the **[couchdb](https://hub.docker.com/_/couchdb/)** docker image and link to it convertigo this way Launch CouchDB container and name it 'fullsync' ```console -$ docker run -d --name fullsync couchdb:2.3.1 +$ docker run -d --name fullsync couchdb:3.2.2 ``` -Then launch Convertigo and link it to the running 'fullsync' container. Convertigo MBaaS sever will automatically use it as its fullsync repository. +Then launch Convertigo and link it to the running 'fullsync' container. Convertigo Low Code sever will automatically use it as its fullsync repository. ```console $ docker run -d --name C8O --link fullsync:couchdb -p 28080:28080 %%IMAGE%% ``` -## Link Convertigo to a Billing & Analytics database +## Use embedded PouchDB as FullSync engine (not for production) + +Convertigo FullSync is designed to use CouchDB server or cluster. Convertigo FullSync is also compatible with PouchDB but only for little projects or tests. Internet access is required to enable this feature. + +It can be enabled directly at startup: + +```console +$ docker run -d --name C8O -e JAVA_OPTS="-Dconvertigo.engine.fullsync.pouchdb=true" -p 28080:28080 %%IMAGE%% +``` + +## Link Convertigo Low Code Server to a Billing & Analytics database ### MySQL -MySQL is the recommended database for holding Convertigo MBaaS server analytics. You can use this command to run convertigo and link it to a running MySQL container. Change `[mysql-container]` to the container name, and `[username for the c8oAnalytics db]`, `[password for specified db user]` with the values for your MySQL configuration. +MySQL is the recommended database for holding Convertigo Low Code server analytics. You can use this command to run convertigo and link it to a running MySQL container. Change `[mysql-container]` to the container name, and `[username for the c8oAnalytics db]`, `[password for specified db user]` with the values for your MySQL configuration. ```console $ docker run -d --name C8O --link [mysql-container]:mysql -p 28080:28080 \ @@ -52,10 +65,10 @@ $ docker run -d --name C8O --link [mysql-container]:mysql -p 28080:28080 -Dconvertigo.engine.billing.persistence.jdbc.username=[username for the c8oAnalytics db] \ -Dconvertigo.engine.billing.persistence.jdbc.password=[password for specified db user] \ -Dconvertigo.engine.billing.persistence.jdbc.url=jdbc:mysql://mysql:3306/c8oAnalytics" \ -convertigo +%%IMAGE%% ``` -## Where is Convertigo MBaaS server storing deployed projects +## 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 : @@ -63,21 +76,40 @@ Projects are deployed in the Convertigo workspace, a simple file system director $ docker run --name C8O -v $(pwd):/workspace -d -p 28080:28080 %%IMAGE%% ``` -You can share the same workspace by all Convertigo containers. This this case, when you deploy a project on a Convertigo container, it will be seen by others. This is the best way to build multi-instance load balanced Convertigo server farms. +You can share the same workspace by all Convertigo containers. In this case, when you deploy a project on a Convertigo container, it will be seen by others. This is the best way to build multi-instance load balanced Convertigo server farms. + +**Be sure to have a really fast file sharing between instances !!! We have experienced that Azure File Share is not fast enough** + +To avoid log and cache mixing, you have to add 2 variables for instance specific paths: + +```console +-Dconvertigo.engine.cache_manager.filecache.directory=/workspace/cache/[instance name] +-Dconvertigo.engine.log4j.appender.CemsAppender.File=/workspace/logs/[instance name]/engine.log +``` + +## Make image with pre-deployed projects + +If you want to make a vertical image ready to start with your application inside, you have to have your built projects **.car** files next to your `Dockerfile`: + +```console +FROM %%IMAGE%% +COPY myProject.car /usr/local/tomcat/webapps/convertigo/WEB-INF/default_user_workspace/projects/ +COPY myDependency.car /usr/local/tomcat/webapps/convertigo/WEB-INF/default_user_workspace/projects/ +``` -## Migrate from an earlier version of Convertigo +## Migrate from an earlier version of Convertigo Low Code Platform - Stop the container to perform a backup. And just back the workspace directory. This will backup all the projects definitions and some project data. -- Start a new Convertigo MBaaS docker container mapping the workspace +- Start a new Convertigo docker container mapping the workspace - All the workspace (Projects) will be automatically migrated to the new Convertigo MBaaS version ## Security -The default administration account of a Convertigo serveur is **admin** / **admin** and the **testplatform** is anonymous. +The default administration account of a Convertigo server is **admin** / **admin** and the **testplatform** is anonymous. -These accounts can be configured through the *administration console* and saved in the **workspace**. +These accounts can be configured through the **administration console** and saved in the **workspace**. -### `CONVERTIGO_ADMIN_USER` and `CONVERTIGO_ADMIN_PASSWORD` variables +### `CONVERTIGO_ADMIN_USER` and `CONVERTIGO_ADMIN_PASSWORD` Environment variables You can change the default administration account : @@ -85,7 +117,7 @@ You can change the default administration account : $ docker run -d --name C8O -e CONVERTIGO_ADMIN_USER=administrator -e CONVERTIGO_ADMIN_PASSWORD=s3cret -p 28080:28080 %%IMAGE%% ``` -### `CONVERTIGO_TESTPLATFORM_USER` and `CONVERTIGO_TESTPLATFORM_PASSWORD` variables +### `CONVERTIGO_TESTPLATFORM_USER` and `CONVERTIGO_TESTPLATFORM_PASSWORD` Environment variables You can lock the **testplatform** by setting the account : @@ -93,16 +125,73 @@ You can lock the **testplatform** by setting the account : $ docker run -d --name C8O -e CONVERTIGO_TESTPLATFORM_USER=tp_user -e CONVERTIGO_TESTPLATFORM_PASSWORD=s3cret -p 28080:28080 %%IMAGE%% ``` +## HTTPS / SSL Configuration + +In many cases, the Convertigo instance is behind a reverse proxy that handles HTTPS / SSL configuration. But you can configure the container to manage existing SSL certificates or dynamically generate one. + +If the SSL configuration is correct, the Convertigo Server will listen **HTTP** on port `28080` and **HTTPS** on port `28443`. + +### Provide existing certificate using the /ssl mount point + +If you have an existing certificate and a private key, you can put them in **PEM** format in a folder (or in a Kubernetes secret): + +- `key.pem` : the private key in PEM format (no password) +- `cert.pem` : the server certificate in PEM format, can also contain the full chain of certificates +- `chain.pem` : the optional chain of certificates not included in `cert.pem` using the PEM format + +```console +$ docker run -d --name C8O -v :/ssl -p 28443:28443 %%IMAGE%% +``` + +If you want to expose both **HTTP** and **HTTPS** you can expose both **ports**: + +```console +$ docker run -d --name C8O -v :/ssl -p 28080:28080 -p 28443:28443 %%IMAGE%% +``` + +### Provide existing certificate using environment variables + +If you cannot mount a volume, you can probably add environment variables of previously described files. Content cannot be set directly in a variable but their base64 version can. Here are the variables to configure: + +- `SSL_KEY_B64` : the private key in base64 PEM format (no password) +- `SSL_CERT_B64` : the server certificate in base64 PEM format, can also contain the full chain of certificates +- `SSL_CHAIN_B64` : the optional chain of certificates not included in `cert.pem` using the base64 PEM format + +```console +$ SSL_KEY_B64=$(base64 key.pem) +$ SSL_CERT_B64=$(base64 cert.pem) +$ SSL_CHAIN_B64=$(base64 chain.pem) +$ docker run -d --name C8O -e SSL_KEY_B64="$SSL_KEY_B64" -e SSL_CERT_B64="$SSL_CERT_B64" -e SSL_CHAIN_B64="$SSL_CHAIN_B64" -p 28443:28443 %%IMAGE%% +``` + +### Generate and use a self-signed certificate + +If you don't have certificate file, you can dynamically generate one for the first start. This will be an untrusted certificate for Browsers and HTTPS clients. This shouldn't be used for production environment. + +Use the `SSL_SELFSIGNED` environment variable to indicate for what domain you want generate certificate. + +```console +$ docker run -d --name C8O -e SSL_SELFSIGNED=mycomputer -p 28443:28443 %%IMAGE%% +``` + +Generated files can be retrieved if the `/ssl` mount point is configured on folder without `cert.pem` nor `key.pem`. + +```console +$ docker run -d --name C8O -v :/ssl -e SSL_SELFSIGNED=mycomputer -p 28443:28443 %%IMAGE%% +``` + ## `JAVA_OPTS` Environment variable -Convertigo is based on a *Java* process with some defaults *JVM* options. You can override our defaults *JVM* options with you own. +Convertigo is based on a **Java** process with some defaults **JVM** options. You can override our defaults **JVM** options with you own. -Add any *Java JVM* options such as -D[something] : +Add any **Java JVM** options such as -D[something] : ```console $ docker run -d --name C8O -e JAVA_OPTS="-DjvmRoute=server1" -p 28080:28080 %%IMAGE%% ``` +[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). + ## `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. @@ -115,7 +204,7 @@ $ docker run -d --name C8O -e JXMX="4096" -p 28080:28080 %%IMAGE%% ## `COOKIE_PATH` Environment variable -Convertigo generates a `JSESSIONID` to maintain the user session and stores in a *cookie*. The *cookie* is set for the server path `/` by default. In case of a front server with multiple services for different paths, you can set a path restriction for the *cookie* with the `JSESSIONID`. Just define the `COOKIE_PATH` environment variable with a compatible path. +Convertigo generates a `JSESSIONID` to maintain the user session and stores in a **cookie**. The **cookie** is set for the server path `/` by default. In case of a front server with multiple services for different paths, you can set a path restriction for the **cookie** with the `JSESSIONID`. Just define the `COOKIE_PATH` environment variable with a compatible path. The default `COOKIE_PATH` value is `/` and can be defined : @@ -125,9 +214,9 @@ $ docker run -d --name C8O -e COOKIE_PATH="/convertigo" -p 28080:28080 %%IMAGE%% ## `COOKIE_SECURE` Environment variable -Convertigo use a *cookie* to maintain sessions. Requests on port `28080` are *HTTP* but we advice to use an *HTTPS* front for production (nginx, kubenetes ingress, ...). In this case, you can secure yours cookies to be used only with secured connections by adding the `Secure` flag. +Convertigo uses a **cookie** to maintain sessions. Requests on port `28080` are **HTTP** but we advise to use an **HTTPS** front for production (nginx, kubernetes ingress, ...). In this case, you can secure your cookies to be used only with secured connections by adding the `Secure` flag. -The Secure flag can be enabled by setting the `COOKIE_SECURE` environment variable to `true`. Once enabled, cookies and sessions aren't working through an *HTTP* connection. +The Secure flag can be enabled by setting the `COOKIE_SECURE` environment variable to `true`. Once enabled, cookies and sessions aren't working through an **HTTP** connection. The default `COOKIE_SECURE` value is `false` and can be defined : @@ -135,9 +224,41 @@ The default `COOKIE_SECURE` value is `false` and can be defined : $ docker run -d --name C8O -e COOKIE_SECURE="true" -p 28080:28080 %%IMAGE%% ``` +**Note :** if you have set the **SSL** configuration and you access the **HTTPS 28443** port, cookies are automatically `Secure`. + +## `COOKIE_SAMESITE` Environment variable + +Allow to configure the **SameSite** parameter for generated cookies. Can be empty, `none`, `lax` or `strict`. + +The default `COOKIE_SAMESITE` value is **empty** and can be defined this way: + +```console +$ docker run -d --name C8O -e COOKIE_SAMESITE=lax -p 28080:28080 %%IMAGE%% +``` + +## `SESSION_TIMEOUT` Environment variable + +Allow to configure the default Tomcat **session-timeout** in minutes. This value is used for non-project calls (Administration console, Fullsync...). This value is overridden by each projects' calls (Sequence, Transaction ...). + +The default `SESSION_TIMEOUT` value is **30** and can be defined this way: + +```console +$ 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 default `DISABLE_SUDO` value is **empty** and can be defined this way: + +```console +$ docker run -d --name C8O -e DISABLE_SUDO=true -p 28080:28080 %%IMAGE%% +``` + ## Pre configurated Docker compose stack -You can use this [stack](https://github.com/convertigo/docker/blob/master/compose/mbaas/docker-compose.yml) to run a complete Convertigo MBaaS server with FullSync repository and MySQL analytics in a few command lines. +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. ```console $ mkdir c8oMBaaS diff --git a/convertigo/license.md b/convertigo/license.md index b4c7d60615c6..a663fafda20f 100644 --- a/convertigo/license.md +++ b/convertigo/license.md @@ -1 +1 @@ -Convertigo Community Edition MBaaS image is licenced under [AGPL 3.0](http://www.gnu.org/licenses/agpl-3.0.html) +Convertigo Community Edition image is licenced under [AGPL 3.0](http://www.gnu.org/licenses/agpl-3.0.html) diff --git a/couchbase/README.md b/couchbase/README.md index ceafaf3dd04c..9a11223011b2 100644 --- a/couchbase/README.md +++ b/couchbase/README.md @@ -20,13 +20,16 @@ WARNING: [the Couchbase Docker Team](https://github.com/couchbase/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `enterprise`, `6.5.1`, `enterprise-6.5.1`](https://github.com/couchbase/docker/blob/46de65611374973ecf7ec28b0c582a8175d3bda0/enterprise/couchbase-server/6.5.1/Dockerfile) -- [`enterprise-6.5.0`](https://github.com/couchbase/docker/blob/46de65611374973ecf7ec28b0c582a8175d3bda0/enterprise/couchbase-server/6.5.0/Dockerfile) -- [`community`, `community-6.5.1`](https://github.com/couchbase/docker/blob/f17df7695bbd6efb756b90b683bd5f34d08b5708/community/couchbase-server/6.5.1/Dockerfile) +- [`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) # Quick reference (cont.) @@ -34,126 +37,137 @@ WARNING: [https://github.com/couchbase/docker/issues](https://github.com/couchbase/docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/couchbase/) + [`amd64`](https://hub.docker.com/r/amd64/couchbase/), [`arm64v8`](https://hub.docker.com/r/arm64v8/couchbase/) - **Published image artifact details**: [repo-info repo's `repos/couchbase/` directory](https://github.com/docker-library/repo-info/blob/master/repos/couchbase) ([history](https://github.com/docker-library/repo-info/commits/master/repos/couchbase)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/couchbase`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcouchbase) + [official-images repo's `library/couchbase` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcouchbase) [official-images repo's `library/couchbase` file](https://github.com/docker-library/official-images/blob/master/library/couchbase) ([history](https://github.com/docker-library/official-images/commits/master/library/couchbase)) - **Source of this description**: [docs repo's `couchbase/` directory](https://github.com/docker-library/docs/tree/master/couchbase) ([history](https://github.com/docker-library/docs/commits/master/couchbase)) -# What is Couchbase Server? +# Introduction to Couchbase Server -This README will guide you through running Couchbase Server with Docker Containers. +Built on the most powerful NoSQL technology, Couchbase Server delivers unparalleled performance at scale, in any cloud. With features like memory-first architecture, geo-distributed deployments, and workload isolation, Couchbase Server excels at supporting mission-critical applications at scale while maintaining sub-millisecond latencies and 99.999% availability. Plus, with the most comprehensive SQL-compatible query language (N1QL), migrating from RDBMS to Couchbase Server is easy with ANSI join. -[Couchbase Server](http://www.couchbase.com/nosql-databases/couchbase-server) is a NoSQL document database with a distributed architecture for performance, scalability, and availability. It enables developers to build applications easier and faster by leveraging the power of SQL with the flexibility of JSON. +## Unmatched agility and flexibility -For additional questions and feedback, please visit the [Couchbase Forums](https://forums.couchbase.com/) or [Stack Overflow](http://stackoverflow.com/questions/tagged/couchbase). +Support rapidly changing business requirements with the flexibility of JSON and the power of a comprehensive query language (N1QL). Develop engaging applications with multiple access methods from a single platform: key-value, query, and search. Event-driven workloads allow you to execute data-driven business logic from a centralized platform. + +## Unparalleled performance at any scale + +Deliver consistent, fast experiences at scale, powered by a memory-first architecture. High-performance indexes and index partitioning provides unparalleled query performance with complex joins, predicates, and aggregate evaluations. And, with end-to-end data compression, Couchbase significantly reduces the cost of network, memory, and storage required for your existing workloads. + +## Easiest platform to manage + +Deploy Couchbase Server in any cloud, at any scale. Reduce operational overhead with cloud integrations like Kubernetes, and support multi-cloud deployments globally with built-in support for active-active cross datacenter replication (XDCR). ![logo](https://raw.githubusercontent.com/docker-library/docs/00543c65b06a7f8f54aa4f7908f7d91705d8ddec/couchbase/logo.png) -# QuickStart with Couchbase Server and Docker +## QuickStart with Couchbase Server and Docker Here is how to get a single node Couchbase Server cluster running on Docker containers: -**Step - 1 :** Run Couchbase Server docker container +**Step - 1 :** Run Couchbase Server docker container + +`docker run -d --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase` -`docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase` +Note: Couchbase Server can require a variety of ports to be exposed depending on the usage scenario. Please see https://docs.couchbase.com/server/current/install/install-ports.html for further information. -**Step - 2 :** Next, visit `http://localhost:8091` on the host machine to see the Web Console to start Couchbase Server setup. +**Step - 2 :** Next, visit `http://localhost:8091` on the host machine to see the Web Console to start Couchbase Server setup. -![setup splash screen](https://raw.githubusercontent.com/cihanb/docker/master/generate/resources/couchbase-server/images/setup-initial.jpg) +![Setup splash screen](https://d774lla4im6mk.cloudfront.net/setup-initial.jpg) Walk through the Setup wizard and accept the default values. - Note: You may need to lower the RAM allocated to various services to fit within the bounds of the resource of the containers. - Enable the beer-sample bucket to load some sample data. -![setup step-1 screen](https://raw.githubusercontent.com/cihanb/docker/master/generate/resources/couchbase-server/images/setup-step1.jpg) +![Creating a cluster](https://d774lla4im6mk.cloudfront.net/cluster-creation.jpg) -**Note :** For detailed information on configuring the Server, see [Initial Couchbase Server Setup](http://developer.couchbase.com/documentation/server/4.5/install/init-setup.html). +![Completing the wizard](https://d774lla4im6mk.cloudfront.net/finish-wizard.jpg) -## Running A N1QL Query on the Couchbase Server Cluster +![UI home](https://d774lla4im6mk.cloudfront.net/ui-home.jpg) -N1QL is the SQL based query language for Couchbase Server. Simply switch to the Query tab on the Web Console at `http://localhost:8091` and run the following N1QL Query in the query window: +![Loading sample data](https://d774lla4im6mk.cloudfront.net/load-sample-data.jpg) - SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing"; +**Note :** For detailed information on configuring the Server, see [Deployment Guidelines](https://docs.couchbase.com/server/current/install/install-production-deployment.html). -You can also execute N1QL queries from the commandline. To run a query from command line query tool, run the interactive shell on the container: +### Running A N1QL Query on the Couchbase Server Cluster -`docker exec -it db sh` +N1QL is the SQL based query language for Couchbase Server. Simply switch to the Query tab on the Web Console at `http://localhost:8091` and run the following N1QL Query in the query window: -Then, navigate to the `bin` directory under Couchbase Server installation and run cbq command line tool and execute the N1QL Query on `beer-sample` bucket + SELECT name FROM `beer-sample` WHERE brewery_id="mishawaka_brewing"; -`/opt/couchbase/bin/cbq` +You can also execute N1QL queries from the command line. To run a query from command line query tool, run the cbq command line tool, authenticating using the credentials you provided to the wizard, and execute the N1QL Query on the beer-sample bucket - cbq> SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing"; +```console +$ docker exec -it db cbq --user Administrator +cbq> SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing"; +``` -For more query samples, refer to the [Running your first N1QL query](http://developer.couchbase.com/documentation/server/4.5/getting-started/first-n1ql-query.html) guide. +For more query samples, refer to [Run your first N1QL query](https://docs.couchbase.com/server/current/getting-started/try-a-query.html). -## Connect to the Couchbase Server Cluster via Applications and SDKs +### Connect to the Couchbase Server Cluster via Applications and SDKs -Couchbase Server SDKs comes in many languages: C SDK 2.4/2.5 Go, Java, .NET, Node.js, PHP, Python. Simply run your application through the Couchbase Server SDK of your choice on the host, and point it to http://localhost:8091/pools to connect to the container. +Couchbase Server SDKs comes in many languages: C, Go, Java, .NET, Node.js, PHP, Python. Simply run your application through the Couchbase Server SDK of your choice on the host, and point it to [http://localhost:8091/pools](http://localhost:8091/pools) to connect to the container. -For running a sample application, refer to the [Running a sample Web app](http://developer.couchbase.com/documentation/server/4.5/travel-app/index.html) guide. +For running a sample application, refer to the [Sample Application](https://docs.couchbase.com/java-sdk/current/hello-world/sample-application.html) guide. -# Requirements and Best Practices +## Requirements and Best Practices -## Container Requirements +### Container Requirements -Official Couchbase Server containers on Docker Hub are based on Ubuntu 14.04. +Official Couchbase Server images on Docker Hub are based on the latest supported version of Ubuntu. -**Docker Container Resource Requirements :** For minimum container requirements, you can follow [Couchbase Server minimum HW recommendations](http://developer.couchbase.com/documentation/server/current/install/pre-install.html) for development, test and production environments. +**Docker Container Resource Requirements :** For minimum container requirements, you can follow [System Resource Requirements](https://docs.couchbase.com/server/current/install/pre-install.html) for development, test and production environments. -## Best Practices +### Best Practices -**Avoid a Single Point of Failure :** Couchbase Server's resilience and high-availability are achieved through creating a cluster of independent nodes and replicating data between them so that any individual node failure doesn't lead to loss of access to your data. In a containerized environment, if you were to run multiple nodes on the same piece of physical hardware, you can inadvertently re-introduce a single point of failure. In environments where you control VM placement, we advise ensuring each Couchbase Server node runs on a different piece of physical hardware. +**Avoid a Single Point of Failure :** Couchbase Server's resilience and high-availability are achieved through creating a cluster of independent nodes and replicating data between them so that any individual node failure doesn't lead to loss of access to your data. In a containerized environment, if you were to run multiple nodes on the same piece of physical hardware, you can inadvertently re-introduce a single point of failure. In environments where you control VM placement, we advise ensuring each Couchbase Server node runs on a different piece of physical hardware. -**Sizing your containers :** Physical hardware performance characteristics are well understood. Even though containers insert a lightweight layer between Couchbase Server and the underlying OS, there is still a small overhead in running Couchbase Server in containers. For stability and better performance predictability, It is recommended to have at least 2 cores dedicated to the container in development environments and 4 cores dedicated to the container rather than shared across multiple containers for Couchbase Server instances running in production. With an over-committed environment you can end up with containers competing with each other causing unpredictable performance and sometimes stability issues. +**Sizing your containers :** Physical hardware performance characteristics are well understood. Even though containers insert a lightweight layer between Couchbase Server and the underlying OS, there is still a small overhead in running Couchbase Server in containers. For stability and better performance predictability, It is recommended to have at least 2 cores dedicated to the container in development environments and 4 cores dedicated to the container rather than shared across multiple containers for Couchbase Server instances running in production. With an over-committed environment you can end up with containers competing with each other causing unpredictable performance and sometimes stability issues. -**Map Couchbase Node Specific Data to a Local Folder :** A Couchbase Server Docker container will write all persistent and node-specific data under the directory /opt/couchbase/var by default. It is recommended to map this directory to a directory on the host file system using the `-v` option to `docker run` to get persistence and performance. +**Map Couchbase Node Specific Data to a Local Folder :** A Couchbase Server Docker container will write all persistent and node-specific data under the directory `/opt/couchbase/var` by default. It is recommended to map this directory to a directory on the host file system using the `-v` option to `docker run` to get persistence and performance. -- Persistence: Storing `/opt/couchbase/var` outside the container with the `-v` option allows you to delete the container and recreate it later without losing the data in Couchbase Server. You can even update to a container running a later release/version of Couchbase Server without losing your data. -- Performance: In a standard Docker environment using a union file system, leaving /opt/couchbase/var inside the container results in some amount of performance degradation. +- Persistence: Storing `/opt/couchbase/var` outside the container with the `-v` option allows you to delete the container and recreate it later without losing the data in Couchbase Server. You can even update to a container running a later release/version of Couchbase Server without losing your data. -> NOTE for SELinux : If you have SELinux enabled, mounting the host volumes in a container requires an extra step. Assuming you are mounting the `~/couchbase` directory on the host file system, you need to run the following command once before running your first container on that host: -> -> `mkdir ~/couchbase && chcon -Rt svirt_sandbox_file_t ~/couchbase` +- Performance: In a standard Docker environment using a union file system, leaving `/opt/couchbase/var` inside the container results in some amount of performance degradation. -**Increase ULIMIT in Production Deployments :** Couchbase Server normally expects the following changes to ulimits: +NOTE for SELinux : If you have SELinux enabled, mounting the host volumes in a container requires an extra step. Assuming you are mounting the `~/couchbase` directory on the host file system, you need to run the following command once before running your first container on that host: -```console -ulimit -n 40960 # nofile: max number of open files -ulimit -c unlimited # core: max core file size -ulimit -l unlimited # memlock: maximum locked-in-memory address space -``` +`mkdir ~/couchbase && chcon -Rt svirt_sandbox_file_t ~/couchbase` + +**Increase ULIMIT in Production Deployments :** Couchbase Server normally expects the following changes to ulimits: + + ulimit -n 200000 # nofile: max number of open files + ulimit -l unlimited # memlock: maximum locked-in-memory address space These ulimit settings are necessary when running under heavy load. If you are just doing light testing and development, you can omit these settings, and everything will still work. -To set the ulimits in your container, you will need to run Couchbase Docker containers with the following additional --ulimit flags: +To set the ulimits in your container, you will need to run Couchbase Docker containers with the following additional `--ulimit` flags: -`docker run -d --ulimit nofile=40960:40960 --ulimit core=100000000:100000000 --ulimit memlock=100000000:100000000 --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase` +`docker run -d --ulimit nofile=40960:40960 --ulimit core=100000000:100000000 --ulimit memlock=100000000:100000000 --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase` Since "unlimited" is not supported as a value, it sets the core and memlock values to 100 GB. If your system has more than 100 GB RAM, you will want to increase this value to match the available RAM on the system. -> Note:The --ulimit flags only work on Docker 1.6 or later. +Note: The `--ulimit` flags only work on Docker 1.6 or later. -**Network Configuration and Ports :** Couchbase Server communicates on many different ports (see the [Couchbase Server documentation](http://docs.couchbase.com/admin/admin/Install/install-networkPorts.html)). Also, it is generally not supported that the cluster nodes be placed behind any NAT. For these reasons, Docker's default networking configuration is not ideally suited to Couchbase Server deployments. For production deployments it is recomended to use `--net=host` setting to avoid performance and reliability issues. +**Network Configuration and Ports :** Couchbase Server communicates on many different ports (see the [Couchbase Server documentation](https://docs.couchbase.com/server/current/install/install-ports.html#ports-listed-by-communication-path)). Also, it is generally not supported that the cluster nodes be placed behind any NAT. For these reasons, Docker's default networking configuration is not ideally suited to Couchbase Server deployments. For production deployments it is recommended to use `--net=host` setting to avoid performance and reliability issues. -# Multi Node Couchbase Server Cluster Deployment Topologies +## Multi Node Couchbase Server Cluster Deployment Topologies With multi node Couchbase Server clusters, there are 2 popular topologies. -## All Couchbase Server containers on one physical machine +### All Couchbase Server containers on one physical machine -This model is commonly used for scale-minimized deployments simulating production deployments for development and test purposes. Placing all containers on a single physical machine means all containers will compete for the same resources. Placing all containers on a single physical machine also eliminates the built-in protection against Couchbase Server node failures with replication when the single physical machine fail, all containers experience unavailability at the same time loosing all replicas. These restrictions may be acceptable for test systems, however it isn’t recommended for applications in production. +This model is commonly used for scale-minimized deployments simulating production deployments for development and test purposes. Placing all containers on a single physical machine means all containers will compete for the same resources. Placing all containers on a single physical machine also eliminates the built-in protection against Couchbase Server node failures afforded by replication. When the single physical machine fails, all containers experience unavailability at the same time, losing all replicas. These restrictions may be acceptable for test systems, however it isn't recommended for applications in production. -You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](http://developer.couchbase.com/documentation/server/4.5/install/docker-deploy-multi-node-cluster.html). +You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](https://docs.couchbase.com/server/current/install/getting-started-docker.html#multi-node-cluster-one-host). ┌──────────────────────────────────────────────────────────┐ │ Host OS (Linux) │ @@ -168,11 +182,11 @@ You can find more details on setting up Couchbase Server in this topology in Cou │ └───────────────┘ └───────────────┘ └───────────────┘ │ └──────────────────────────────────────────────────────────┘ -## Each Couchbase Server container on its own machine +### Each Couchbase Server container on its own machine -This model is commonly used for production deployments. It prevents Couchbase Server nodes from stepping over each other and gives you better performance predictability. This is the supported topology in production with Couchbase Server 4.5 and higher. +This model is commonly used for production deployments. It prevents Couchbase Server nodes from stepping over each other and gives you better performance predictability. This is the supported topology in production with Couchbase Server 5.5 and higher. -You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](http://developer.couchbase.com/documentation/server/4.5/install/docker-deploy-multi-node-cluster.html). +You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](https://docs.couchbase.com/server/current/install/getting-started-docker.html#multi-node-cluster-many-hosts). ┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐ │ Host OS (Linux) │ │ Host OS (Linux) │ │ Host OS (Linux) │ @@ -186,25 +200,25 @@ You can find more details on setting up Couchbase Server in this topology in Cou │ └─────────────────┘ │ │ └─────────────────┘ │ │ └─────────────────┘ │ └───────────────────────┘ └───────────────────────┘ └───────────────────────┘ -# Additional References +## Try Couchbase Cloud Free -- [Couchbase Server and Containers](http://www.couchbase.com/containers) -- [Getting Started with Couchbbase Server and Docker](http://developer.couchbase.com/documentation/server/4.5/install/getting-started-docker.html) -- Detailed Walk-through for [Deploying Couchbase Server on Docker Containers](http://developer.couchbase.com/documentation/server/4.5/install/deploy-with-docker-hub.html) +Couchbase Cloud is a fully managed NoSQL Database-as-a-Service (DBaaS) for mission-critical applications. We deploy Couchbase Cloud in your AWS VPC and manage the workload. You'll enjoy incredible price-performance and operational transparency. -# License +Start Free Trial - https://cloud.couchbase.com/sign-up -Couchbase Server comes in 2 Editions: Enterprise Edition and Community Edition. You can find details on the differences between the 2 and licensing details on the [Couchbase Server Editions](http://developer.couchbase.com/documentation/server/4.5/introduction/editions.html) page. +# Additional References -- Enterprise Edition -- free for development, testing and POCs. Requires a paid subscription for production deployment. Please refer to the [subscribe](http://www.couchbase.com/subscriptions-and-support) page for details on enterprise edition agreements. +- [Couchbase Server and Containers](https://docs.couchbase.com/server/current/cloud/couchbase-cloud-deployment.html) -- Community Edition -- free for unrestricted use for community users. +- [Getting Started with Couchbase Server and Docker](https://docs.couchbase.com/server/current/install/getting-started-docker.html) -By default, the `latest` Docker tag points to the latest Enterprise Edition. If you want the Community Edition instead, you should add the appropriate tag, such as +# License -```console -docker run couchbase:community-4.0.0 -``` +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. + +- **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. 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/couchbase/content.md b/couchbase/content.md index a9a538cfb73f..81914364bcc9 100644 --- a/couchbase/content.md +++ b/couchbase/content.md @@ -1,110 +1,121 @@ -# What is Couchbase Server? +# Introduction to Couchbase Server -This README will guide you through running Couchbase Server with Docker Containers. +Built on the most powerful NoSQL technology, Couchbase Server delivers unparalleled performance at scale, in any cloud. With features like memory-first architecture, geo-distributed deployments, and workload isolation, Couchbase Server excels at supporting mission-critical applications at scale while maintaining sub-millisecond latencies and 99.999% availability. Plus, with the most comprehensive SQL-compatible query language (N1QL), migrating from RDBMS to Couchbase Server is easy with ANSI join. -[Couchbase Server](http://www.couchbase.com/nosql-databases/couchbase-server) is a NoSQL document database with a distributed architecture for performance, scalability, and availability. It enables developers to build applications easier and faster by leveraging the power of SQL with the flexibility of JSON. +## Unmatched agility and flexibility -For additional questions and feedback, please visit the [Couchbase Forums](https://forums.couchbase.com/) or [Stack Overflow](http://stackoverflow.com/questions/tagged/couchbase). +Support rapidly changing business requirements with the flexibility of JSON and the power of a comprehensive query language (N1QL). Develop engaging applications with multiple access methods from a single platform: key-value, query, and search. Event-driven workloads allow you to execute data-driven business logic from a centralized platform. + +## Unparalleled performance at any scale + +Deliver consistent, fast experiences at scale, powered by a memory-first architecture. High-performance indexes and index partitioning provides unparalleled query performance with complex joins, predicates, and aggregate evaluations. And, with end-to-end data compression, Couchbase significantly reduces the cost of network, memory, and storage required for your existing workloads. + +## Easiest platform to manage + +Deploy Couchbase Server in any cloud, at any scale. Reduce operational overhead with cloud integrations like Kubernetes, and support multi-cloud deployments globally with built-in support for active-active cross datacenter replication (XDCR). %%LOGO%% -# QuickStart with Couchbase Server and Docker +## QuickStart with Couchbase Server and Docker Here is how to get a single node Couchbase Server cluster running on Docker containers: -**Step - 1 :** Run Couchbase Server docker container +**Step - 1 :** Run Couchbase Server docker container -`docker run -d --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase` +`docker run -d --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase` -**Step - 2 :** Next, visit `http://localhost:8091` on the host machine to see the Web Console to start Couchbase Server setup. +Note: Couchbase Server can require a variety of ports to be exposed depending on the usage scenario. Please see https://docs.couchbase.com/server/current/install/install-ports.html for further information. -![setup splash screen](https://raw.githubusercontent.com/cihanb/docker/master/generate/resources/couchbase-server/images/setup-initial.jpg) +**Step - 2 :** Next, visit `http://localhost:8091` on the host machine to see the Web Console to start Couchbase Server setup. + +![Setup splash screen](https://d774lla4im6mk.cloudfront.net/setup-initial.jpg) Walk through the Setup wizard and accept the default values. - Note: You may need to lower the RAM allocated to various services to fit within the bounds of the resource of the containers. - Enable the beer-sample bucket to load some sample data. -![setup step-1 screen](https://raw.githubusercontent.com/cihanb/docker/master/generate/resources/couchbase-server/images/setup-step1.jpg) +![Creating a cluster](https://d774lla4im6mk.cloudfront.net/cluster-creation.jpg) -**Note :** For detailed information on configuring the Server, see [Initial Couchbase Server Setup](http://developer.couchbase.com/documentation/server/4.5/install/init-setup.html). +![Completing the wizard](https://d774lla4im6mk.cloudfront.net/finish-wizard.jpg) -## Running A N1QL Query on the Couchbase Server Cluster +![UI home](https://d774lla4im6mk.cloudfront.net/ui-home.jpg) -N1QL is the SQL based query language for Couchbase Server. Simply switch to the Query tab on the Web Console at `http://localhost:8091` and run the following N1QL Query in the query window: +![Loading sample data](https://d774lla4im6mk.cloudfront.net/load-sample-data.jpg) - SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing"; +**Note :** For detailed information on configuring the Server, see [Deployment Guidelines](https://docs.couchbase.com/server/current/install/install-production-deployment.html). -You can also execute N1QL queries from the commandline. To run a query from command line query tool, run the interactive shell on the container: +### Running A N1QL Query on the Couchbase Server Cluster -`docker exec -it db sh` +N1QL is the SQL based query language for Couchbase Server. Simply switch to the Query tab on the Web Console at `http://localhost:8091` and run the following N1QL Query in the query window: -Then, navigate to the `bin` directory under Couchbase Server installation and run cbq command line tool and execute the N1QL Query on `beer-sample` bucket + SELECT name FROM `beer-sample` WHERE brewery_id="mishawaka_brewing"; -`/opt/couchbase/bin/cbq` +You can also execute N1QL queries from the command line. To run a query from command line query tool, run the cbq command line tool, authenticating using the credentials you provided to the wizard, and execute the N1QL Query on the beer-sample bucket - cbq> SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing"; +```console +$ docker exec -it db cbq --user Administrator +cbq> SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing"; +``` -For more query samples, refer to the [Running your first N1QL query](http://developer.couchbase.com/documentation/server/4.5/getting-started/first-n1ql-query.html) guide. +For more query samples, refer to [Run your first N1QL query](https://docs.couchbase.com/server/current/getting-started/try-a-query.html). -## Connect to the Couchbase Server Cluster via Applications and SDKs +### Connect to the Couchbase Server Cluster via Applications and SDKs -Couchbase Server SDKs comes in many languages: C SDK 2.4/2.5 Go, Java, .NET, Node.js, PHP, Python. Simply run your application through the Couchbase Server SDK of your choice on the host, and point it to http://localhost:8091/pools to connect to the container. +Couchbase Server SDKs comes in many languages: C, Go, Java, .NET, Node.js, PHP, Python. Simply run your application through the Couchbase Server SDK of your choice on the host, and point it to [http://localhost:8091/pools](http://localhost:8091/pools) to connect to the container. -For running a sample application, refer to the [Running a sample Web app](http://developer.couchbase.com/documentation/server/4.5/travel-app/index.html) guide. +For running a sample application, refer to the [Sample Application](https://docs.couchbase.com/java-sdk/current/hello-world/sample-application.html) guide. -# Requirements and Best Practices +## Requirements and Best Practices -## Container Requirements +### Container Requirements -Official Couchbase Server containers on Docker Hub are based on Ubuntu 14.04. +Official Couchbase Server images on Docker Hub are based on the latest supported version of Ubuntu. -**Docker Container Resource Requirements :** For minimum container requirements, you can follow [Couchbase Server minimum HW recommendations](http://developer.couchbase.com/documentation/server/current/install/pre-install.html) for development, test and production environments. +**Docker Container Resource Requirements :** For minimum container requirements, you can follow [System Resource Requirements](https://docs.couchbase.com/server/current/install/pre-install.html) for development, test and production environments. -## Best Practices +### Best Practices -**Avoid a Single Point of Failure :** Couchbase Server's resilience and high-availability are achieved through creating a cluster of independent nodes and replicating data between them so that any individual node failure doesn't lead to loss of access to your data. In a containerized environment, if you were to run multiple nodes on the same piece of physical hardware, you can inadvertently re-introduce a single point of failure. In environments where you control VM placement, we advise ensuring each Couchbase Server node runs on a different piece of physical hardware. +**Avoid a Single Point of Failure :** Couchbase Server's resilience and high-availability are achieved through creating a cluster of independent nodes and replicating data between them so that any individual node failure doesn't lead to loss of access to your data. In a containerized environment, if you were to run multiple nodes on the same piece of physical hardware, you can inadvertently re-introduce a single point of failure. In environments where you control VM placement, we advise ensuring each Couchbase Server node runs on a different piece of physical hardware. -**Sizing your containers :** Physical hardware performance characteristics are well understood. Even though containers insert a lightweight layer between Couchbase Server and the underlying OS, there is still a small overhead in running Couchbase Server in containers. For stability and better performance predictability, It is recommended to have at least 2 cores dedicated to the container in development environments and 4 cores dedicated to the container rather than shared across multiple containers for Couchbase Server instances running in production. With an over-committed environment you can end up with containers competing with each other causing unpredictable performance and sometimes stability issues. +**Sizing your containers :** Physical hardware performance characteristics are well understood. Even though containers insert a lightweight layer between Couchbase Server and the underlying OS, there is still a small overhead in running Couchbase Server in containers. For stability and better performance predictability, It is recommended to have at least 2 cores dedicated to the container in development environments and 4 cores dedicated to the container rather than shared across multiple containers for Couchbase Server instances running in production. With an over-committed environment you can end up with containers competing with each other causing unpredictable performance and sometimes stability issues. -**Map Couchbase Node Specific Data to a Local Folder :** A Couchbase Server Docker container will write all persistent and node-specific data under the directory /opt/couchbase/var by default. It is recommended to map this directory to a directory on the host file system using the `-v` option to `docker run` to get persistence and performance. +**Map Couchbase Node Specific Data to a Local Folder :** A Couchbase Server Docker container will write all persistent and node-specific data under the directory `/opt/couchbase/var` by default. It is recommended to map this directory to a directory on the host file system using the `-v` option to `docker run` to get persistence and performance. -- Persistence: Storing `/opt/couchbase/var` outside the container with the `-v` option allows you to delete the container and recreate it later without losing the data in Couchbase Server. You can even update to a container running a later release/version of Couchbase Server without losing your data. -- Performance: In a standard Docker environment using a union file system, leaving /opt/couchbase/var inside the container results in some amount of performance degradation. +- Persistence: Storing `/opt/couchbase/var` outside the container with the `-v` option allows you to delete the container and recreate it later without losing the data in Couchbase Server. You can even update to a container running a later release/version of Couchbase Server without losing your data. -> NOTE for SELinux : If you have SELinux enabled, mounting the host volumes in a container requires an extra step. Assuming you are mounting the `~/couchbase` directory on the host file system, you need to run the following command once before running your first container on that host: -> -> `mkdir ~/couchbase && chcon -Rt svirt_sandbox_file_t ~/couchbase` +- Performance: In a standard Docker environment using a union file system, leaving `/opt/couchbase/var` inside the container results in some amount of performance degradation. -**Increase ULIMIT in Production Deployments :** Couchbase Server normally expects the following changes to ulimits: +NOTE for SELinux : If you have SELinux enabled, mounting the host volumes in a container requires an extra step. Assuming you are mounting the `~/couchbase` directory on the host file system, you need to run the following command once before running your first container on that host: -```console -ulimit -n 40960 # nofile: max number of open files -ulimit -c unlimited # core: max core file size -ulimit -l unlimited # memlock: maximum locked-in-memory address space -``` +`mkdir ~/couchbase && chcon -Rt svirt_sandbox_file_t ~/couchbase` + +**Increase ULIMIT in Production Deployments :** Couchbase Server normally expects the following changes to ulimits: + + ulimit -n 200000 # nofile: max number of open files + ulimit -l unlimited # memlock: maximum locked-in-memory address space These ulimit settings are necessary when running under heavy load. If you are just doing light testing and development, you can omit these settings, and everything will still work. -To set the ulimits in your container, you will need to run Couchbase Docker containers with the following additional --ulimit flags: +To set the ulimits in your container, you will need to run Couchbase Docker containers with the following additional `--ulimit` flags: -`docker run -d --ulimit nofile=40960:40960 --ulimit core=100000000:100000000 --ulimit memlock=100000000:100000000 --name db -p 8091-8094:8091-8094 -p 11210:11210 couchbase` +`docker run -d --ulimit nofile=40960:40960 --ulimit core=100000000:100000000 --ulimit memlock=100000000:100000000 --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase` Since "unlimited" is not supported as a value, it sets the core and memlock values to 100 GB. If your system has more than 100 GB RAM, you will want to increase this value to match the available RAM on the system. -> Note:The --ulimit flags only work on Docker 1.6 or later. +Note: The `--ulimit` flags only work on Docker 1.6 or later. -**Network Configuration and Ports :** Couchbase Server communicates on many different ports (see the [Couchbase Server documentation](http://docs.couchbase.com/admin/admin/Install/install-networkPorts.html)). Also, it is generally not supported that the cluster nodes be placed behind any NAT. For these reasons, Docker's default networking configuration is not ideally suited to Couchbase Server deployments. For production deployments it is recomended to use `--net=host` setting to avoid performance and reliability issues. +**Network Configuration and Ports :** Couchbase Server communicates on many different ports (see the [Couchbase Server documentation](https://docs.couchbase.com/server/current/install/install-ports.html#ports-listed-by-communication-path)). Also, it is generally not supported that the cluster nodes be placed behind any NAT. For these reasons, Docker's default networking configuration is not ideally suited to Couchbase Server deployments. For production deployments it is recommended to use `--net=host` setting to avoid performance and reliability issues. -# Multi Node Couchbase Server Cluster Deployment Topologies +## Multi Node Couchbase Server Cluster Deployment Topologies With multi node Couchbase Server clusters, there are 2 popular topologies. -## All Couchbase Server containers on one physical machine +### All Couchbase Server containers on one physical machine -This model is commonly used for scale-minimized deployments simulating production deployments for development and test purposes. Placing all containers on a single physical machine means all containers will compete for the same resources. Placing all containers on a single physical machine also eliminates the built-in protection against Couchbase Server node failures with replication when the single physical machine fail, all containers experience unavailability at the same time loosing all replicas. These restrictions may be acceptable for test systems, however it isn’t recommended for applications in production. +This model is commonly used for scale-minimized deployments simulating production deployments for development and test purposes. Placing all containers on a single physical machine means all containers will compete for the same resources. Placing all containers on a single physical machine also eliminates the built-in protection against Couchbase Server node failures afforded by replication. When the single physical machine fails, all containers experience unavailability at the same time, losing all replicas. These restrictions may be acceptable for test systems, however it isn't recommended for applications in production. -You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](http://developer.couchbase.com/documentation/server/4.5/install/docker-deploy-multi-node-cluster.html). +You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](https://docs.couchbase.com/server/current/install/getting-started-docker.html#multi-node-cluster-one-host). ┌──────────────────────────────────────────────────────────┐ │ Host OS (Linux) │ @@ -119,11 +130,11 @@ You can find more details on setting up Couchbase Server in this topology in Cou │ └───────────────┘ └───────────────┘ └───────────────┘ │ └──────────────────────────────────────────────────────────┘ -## Each Couchbase Server container on its own machine +### Each Couchbase Server container on its own machine -This model is commonly used for production deployments. It prevents Couchbase Server nodes from stepping over each other and gives you better performance predictability. This is the supported topology in production with Couchbase Server 4.5 and higher. +This model is commonly used for production deployments. It prevents Couchbase Server nodes from stepping over each other and gives you better performance predictability. This is the supported topology in production with Couchbase Server 5.5 and higher. -You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](http://developer.couchbase.com/documentation/server/4.5/install/docker-deploy-multi-node-cluster.html). +You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](https://docs.couchbase.com/server/current/install/getting-started-docker.html#multi-node-cluster-many-hosts). ┌───────────────────────┐ ┌───────────────────────┐ ┌───────────────────────┐ │ Host OS (Linux) │ │ Host OS (Linux) │ │ Host OS (Linux) │ @@ -137,8 +148,14 @@ You can find more details on setting up Couchbase Server in this topology in Cou │ └─────────────────┘ │ │ └─────────────────┘ │ │ └─────────────────┘ │ └───────────────────────┘ └───────────────────────┘ └───────────────────────┘ +## Try Couchbase Cloud Free + +Couchbase Cloud is a fully managed NoSQL Database-as-a-Service (DBaaS) for mission-critical applications. We deploy Couchbase Cloud in your AWS VPC and manage the workload. You'll enjoy incredible price-performance and operational transparency. + +Start Free Trial - https://cloud.couchbase.com/sign-up + # Additional References -- [Couchbase Server and Containers](http://www.couchbase.com/containers) -- [Getting Started with Couchbbase Server and Docker](http://developer.couchbase.com/documentation/server/4.5/install/getting-started-docker.html) -- Detailed Walk-through for [Deploying Couchbase Server on Docker Containers](http://developer.couchbase.com/documentation/server/4.5/install/deploy-with-docker-hub.html) +- [Couchbase Server and Containers](https://docs.couchbase.com/server/current/cloud/couchbase-cloud-deployment.html) + +- [Getting Started with Couchbase Server and Docker](https://docs.couchbase.com/server/current/install/getting-started-docker.html) diff --git a/couchbase/license.md b/couchbase/license.md index bbf49817b0d3..f7dfed031255 100644 --- a/couchbase/license.md +++ b/couchbase/license.md @@ -1,11 +1,5 @@ -Couchbase Server comes in 2 Editions: Enterprise Edition and Community Edition. You can find details on the differences between the 2 and licensing details on the [Couchbase Server Editions](http://developer.couchbase.com/documentation/server/4.5/introduction/editions.html) page. +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 -- free for development, testing and POCs. Requires a paid subscription for production deployment. Please refer to the [subscribe](http://www.couchbase.com/subscriptions-and-support) page for details on enterprise edition agreements. +- **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 -- free for unrestricted use for community users. - -By default, the `latest` Docker tag points to the latest Enterprise Edition. If you want the Community Edition instead, you should add the appropriate tag, such as - -```console -docker run couchbase:community-4.0.0 -``` +- **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/couchdb/README.md b/couchdb/README.md index 8579f4681ef7..59525d3690b3 100644 --- a/couchdb/README.md +++ b/couchdb/README.md @@ -20,13 +20,14 @@ WARNING: [Apache CouchDB](https://github.com/apache/couchdb-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `3.1.0`, `3.1`, `3`](https://github.com/apache/couchdb-docker/blob/01e1c16bb405c1174393c76a7ebc3792b0c5e2c9/3.1.0/Dockerfile) -- [`3.0.1`, `3.0`](https://github.com/apache/couchdb-docker/blob/01e1c16bb405c1174393c76a7ebc3792b0c5e2c9/3.0.1/Dockerfile) -- [`2.3.1`, `2.3`, `2`](https://github.com/apache/couchdb-docker/blob/01e1c16bb405c1174393c76a7ebc3792b0c5e2c9/2.3.1/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/couchdb`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcouchdb) + [official-images repo's `library/couchdb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcouchdb) [official-images repo's `library/couchdb` file](https://github.com/docker-library/official-images/blob/master/library/couchdb) ([history](https://github.com/docker-library/official-images/commits/master/library/couchdb)) - **Source of this description**: diff --git a/crate/README-short.txt b/crate/README-short.txt index 202e0d538cbc..734f25c9559b 100644 --- a/crate/README-short.txt +++ b/crate/README-short.txt @@ -1 +1 @@ -CrateDB is a distributed SQL database handles massive amounts of machine data in real-time. +CrateDB is an open-source, distributed SQL database empowering you to turn data into business value. diff --git a/crate/README.md b/crate/README.md index 98b3d8d25754..3b3d78d4c7f0 100644 --- a/crate/README.md +++ b/crate/README.md @@ -20,13 +20,13 @@ WARNING: [Crate.io](https://github.com/crate/docker-crate) - **Where to get help**: - [project documentation](https://crate.io/docs/), [StackOverflow](https://stackoverflow.com/tags/crate), [Slack](https://crate.io/docs/support/slackin/), or [paid support](https://crate.io/pricing/) + [project documentation](https://crate.io/docs/), [StackOverflow](https://stackoverflow.com/tags/cratedb), [support channels](https://crate.io/support/) # Supported tags and respective `Dockerfile` links -- [`4.1.5`, `4.1`, `latest`](https://github.com/crate/docker-crate/blob/1d2060119c573f07b861f808c0aa89331fa80cd5/Dockerfile) -- [`4.0.12`, `4.0`](https://github.com/crate/docker-crate/blob/7791cda08fbf054ab2ce7a988f8811074b8c3bf4/Dockerfile) -- [`3.3.5`, `3.3`](https://github.com/crate/docker-crate/blob/f5c527fb12df004e3fc620fd9d91b97686f56ef8/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,42 +41,50 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/crate`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcrate) + [official-images repo's `library/crate` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcrate) [official-images repo's `library/crate` file](https://github.com/docker-library/official-images/blob/master/library/crate) ([history](https://github.com/docker-library/official-images/commits/master/library/crate)) - **Source of this description**: [docs repo's `crate/` directory](https://github.com/docker-library/docs/tree/master/crate) ([history](https://github.com/docker-library/docs/commits/master/crate)) -![logo](https://raw.githubusercontent.com/docker-library/docs/0d4ccc1c0a00a99c3302ffeb17831225cbba7863/crate/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/774acf9bf99ca29eded5cd50f0ba3f755716673d/crate/logo.svg?sanitize=true) # What Is CrateDB? [CrateDB](http://github.com/crate/crate) is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time. -Features of CrateDB: +CrateDB offers the scalability and flexibility typically associated with a NoSQL database, is designed to run on inexpensive commodity servers and can be deployed and run on any sort of network - from personal computers to multi-region hybrid clouds. + +The smallest CrateDB clusters can easily ingest tens of thousands of records per second. The data can be queried, ad-hoc, in parallel across the whole cluster in real time. + +# Features - Standard SQL plus dynamic schemas, queryable objects, geospatial features, time series data, first-class BLOB support, and realtime full-text search. -- Horizontally scalable, highly available, and fault tolerant clusters that run very well in virtualized and containerised environments. +- Dynamic schemas, queryable objects, geospatial features, time series data support, and realtime full-text search providing functionality for handling both relational and document oriented nested data structures. +- Horizontally scalable, highly available and fault tolerant clusters that run very well in virtualized and containerised environments. - Extremely fast distributed query execution. - Auto-partitioning, auto-sharding, and auto-replication. - Self-healing and auto-rebalancing. -- CrateDB offers the scalability and flexibility typically associated with a NoSQL database and is designed to run on inexpensive commodity servers and can be deployed and run across any sort of network. From personal computers to multi-region hybrid clouds. -The smallest CrateDB clusters can easily ingest tens of thousands of records per second. And this data can be queried, ad-hoc, in parallel across the whole cluster in real time. +# Screenshots + +CrateDB provides an [Admin UI](https://crate.io/docs/crate/admin-ui/): + +![Screenshots of the CrateDB Admin UI](https://raw.githubusercontent.com/crate/crate/master/crate-admin.gif) -# How to Use This Image +# Try CrateDB Spin up this Docker image like so: ```console -$ docker run -p 4200:4200 crate +$ docker run --publish 4200:4200 --publish 5432:5432 crate -Cdiscovery.type=single-node ``` -Once you're up and running, head on over to [the introductory docs](https://crate.io/docs/crate/getting-started/en/latest/first-use/index.html). +Visit the [getting started](https://crate.io/docs/crate/tutorials/en/latest/install-run/) page to see all the available download and install options. -See also: +Once you're up and running, head over to the [introductory docs](https://crate.io/docs/crate/tutorials/). To interact with CrateDB, you can use the Admin UI [web console](https://crate.io/docs/crate/admin-ui/en/latest/console.html#sql-console) or the [CrateDB shell](https://crate.io/docs/crate/crash/) CLI tool. Alternatively, review the list of recommended [clients and tools](https://crate.io/docs/crate/clients-tools/) that work with CrateDB. -- [Getting Started With CrateDB on Docker](https://crate.io/docs/crate/guide/en/latest/deployment/containers/docker.html) +For container-specific documentation, check out the [CrateDB on Docker how-to guide](https://crate.io/docs/crate/howtos/en/latest/deployment/containers/docker.html) or the [CrateDB on Kubernetes how-to guide](https://crate.io/docs/crate/howtos/en/latest/deployment/containers/kubernetes.html). ## Issues @@ -94,7 +102,7 @@ For issues with CrateDB itself, report issues via [the `crate` GitHub issue trac This image is primarily maintained by [Crate.io](http://crate.io/), but we welcome community contributions! -See the [developer docs](https://github.com/crate/docker-crate/blob/master/DEVELOP.rst) and the [contribution docs](https://github.com/crate/docker-crate/blob/master/CONTRIBUTING.rst) for more information. +See the [contribution docs](https://github.com/crate/docker-crate/blob/master/CONTRIBUTING.rst) for more information. # License diff --git a/crate/content.md b/crate/content.md index 6be84d1dd990..01d2d44cbee6 100644 --- a/crate/content.md +++ b/crate/content.md @@ -4,30 +4,38 @@ [CrateDB](http://github.com/crate/crate) is a distributed SQL database that makes it simple to store and analyze massive amounts of machine data in real-time. -Features of CrateDB: +CrateDB offers the scalability and flexibility typically associated with a NoSQL database, is designed to run on inexpensive commodity servers and can be deployed and run on any sort of network - from personal computers to multi-region hybrid clouds. + +The smallest CrateDB clusters can easily ingest tens of thousands of records per second. The data can be queried, ad-hoc, in parallel across the whole cluster in real time. + +# Features - Standard SQL plus dynamic schemas, queryable objects, geospatial features, time series data, first-class BLOB support, and realtime full-text search. -- Horizontally scalable, highly available, and fault tolerant clusters that run very well in virtualized and containerised environments. +- Dynamic schemas, queryable objects, geospatial features, time series data support, and realtime full-text search providing functionality for handling both relational and document oriented nested data structures. +- Horizontally scalable, highly available and fault tolerant clusters that run very well in virtualized and containerised environments. - Extremely fast distributed query execution. - Auto-partitioning, auto-sharding, and auto-replication. - Self-healing and auto-rebalancing. -- CrateDB offers the scalability and flexibility typically associated with a NoSQL database and is designed to run on inexpensive commodity servers and can be deployed and run across any sort of network. From personal computers to multi-region hybrid clouds. -The smallest CrateDB clusters can easily ingest tens of thousands of records per second. And this data can be queried, ad-hoc, in parallel across the whole cluster in real time. +# Screenshots + +CrateDB provides an [Admin UI](https://crate.io/docs/crate/admin-ui/): + +![Screenshots of the CrateDB Admin UI](https://raw.githubusercontent.com/crate/crate/master/crate-admin.gif) -# How to Use This Image +# Try CrateDB Spin up this Docker image like so: ```console -$ docker run -p 4200:4200 %%IMAGE%% +$ docker run --publish 4200:4200 --publish 5432:5432 %%IMAGE%% -Cdiscovery.type=single-node ``` -Once you're up and running, head on over to [the introductory docs](https://crate.io/docs/crate/getting-started/en/latest/first-use/index.html). +Visit the [getting started](https://crate.io/docs/crate/tutorials/en/latest/install-run/) page to see all the available download and install options. -See also: +Once you're up and running, head over to the [introductory docs](https://crate.io/docs/crate/tutorials/). To interact with CrateDB, you can use the Admin UI [web console](https://crate.io/docs/crate/admin-ui/en/latest/console.html#sql-console) or the [CrateDB shell](https://crate.io/docs/crate/crash/) CLI tool. Alternatively, review the list of recommended [clients and tools](https://crate.io/docs/crate/clients-tools/) that work with CrateDB. -- [Getting Started With CrateDB on Docker](https://crate.io/docs/crate/guide/en/latest/deployment/containers/docker.html) +For container-specific documentation, check out the [CrateDB on Docker how-to guide](https://crate.io/docs/crate/howtos/en/latest/deployment/containers/docker.html) or the [CrateDB on Kubernetes how-to guide](https://crate.io/docs/crate/howtos/en/latest/deployment/containers/kubernetes.html). ## Issues @@ -45,4 +53,4 @@ For issues with CrateDB itself, report issues via [the `crate` GitHub issue trac This image is primarily maintained by [Crate.io](http://crate.io/), but we welcome community contributions! -See the [developer docs](https://github.com/crate/docker-crate/blob/master/DEVELOP.rst) and the [contribution docs](https://github.com/crate/docker-crate/blob/master/CONTRIBUTING.rst) for more information. +See the [contribution docs](https://github.com/crate/docker-crate/blob/master/CONTRIBUTING.rst) for more information. diff --git a/crate/get-help.md b/crate/get-help.md index a6480382c8f3..f0a4f772474c 100644 --- a/crate/get-help.md +++ b/crate/get-help.md @@ -1 +1 @@ -[project documentation](https://crate.io/docs/), [StackOverflow](https://stackoverflow.com/tags/crate), [Slack](https://crate.io/docs/support/slackin/), or [paid support](https://crate.io/pricing/) +[project documentation](https://crate.io/docs/), [StackOverflow](https://stackoverflow.com/tags/cratedb), [support channels](https://crate.io/support/) diff --git a/crate/logo.png b/crate/logo.png deleted file mode 100644 index ef5deb4d941d..000000000000 Binary files a/crate/logo.png and /dev/null differ diff --git a/crate/logo.svg b/crate/logo.svg new file mode 100644 index 000000000000..21e1ef12ce76 --- /dev/null +++ b/crate/logo.svg @@ -0,0 +1 @@ +CrateDB \ No newline at end of file diff --git a/crux/README-short.txt b/crux/README-short.txt deleted file mode 100644 index 328b55dde74a..000000000000 --- a/crux/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -CRUX is a lightweight Linux distribution targeted at experienced Linux users diff --git a/crux/README.md b/crux/README.md deleted file mode 100644 index 505e73fbea19..000000000000 --- a/crux/README.md +++ /dev/null @@ -1,73 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [Docker Crux](https://github.com/cruxlinux/docker-crux) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`3.4`, `latest`](https://github.com/cruxlinux/docker-crux/blob/da081a9004c5559cd77a1e2c2521193ccb2afdd2/Dockerfile) -- [`3.2`](https://github.com/cruxlinux/docker-crux/blob/07e966125ba3d6d48a12489830917e8a9bc983a7/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/therealprologic/docker-crux/issues](https://github.com/therealprologic/docker-crux/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/crux/), [`arm64v8`](https://hub.docker.com/r/arm64v8/crux/) - -- **Published image artifact details**: - [repo-info repo's `repos/crux/` directory](https://github.com/docker-library/repo-info/blob/master/repos/crux) ([history](https://github.com/docker-library/repo-info/commits/master/repos/crux)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/crux`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fcrux) - [official-images repo's `library/crux` file](https://github.com/docker-library/official-images/blob/master/library/crux) ([history](https://github.com/docker-library/official-images/commits/master/library/crux)) - -- **Source of this description**: - [docs repo's `crux/` directory](https://github.com/docker-library/docs/tree/master/crux) ([history](https://github.com/docker-library/docs/commits/master/crux)) - -# What is CRUX? - -CRUX is a lightweight Linux distribution for the x86-64 architecture targeted at experienced Linux users. The primary focus of this distribution is "keep it simple", which it reflects in a simple tar.gz-based package system, BSD-style initscripts, and a relatively small collection of trimmed packages. The secondary focus is utilization of new Linux features and recent tools and libraries. CRUX also has a ports system which makes it easy to install and upgrade applications. - -# Why use CRUX? - -There are many Linux distributions out there these days, so what makes CRUX any better than the others? The choice of distribution is a matter of taste, really. Here are a few hints about the tastes and goals of the people behind CRUX. CRUX is made with simplicity in mind from beginning to end. - -Making it easy to create new and update old packages is essential; updating a package in CRUX is often just a matter of typing `pkgmk -d -u`. The usage of ports helps keep your packages up-to-date; not the latest bleeding-edge-alpha version, but the latest stable version. Other features include creating packages optimized for your processor, eg. by compiling with `-march=x86-64`, and avoiding cluttering the filesystem with files you'll never use, eg. `/usr/doc/*`, etc. If you need more information about a specific program, other than information found in the man-page, Google usually knows all about it. - -Finally, it strives to use new features as they become available, as long as they are consistent with the rest of the goals. In short, CRUX might suit you very well if you are: - -- A somewhat experienced Linux user who wants a clean and solid Linux distribution as the foundation of your installation. -- A person who prefers editing configuration files with an editor to using a GUI. -- Someone who does not hesitate to download and compile programs from the source. - -# License - -View [license information](https://crux.nu/Main/Handbook3-3-Intro) for the software contained in this image (scroll to the "License" section at the end of the linked document). - -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 `crux/` directory](https://github.com/docker-library/repo-info/tree/master/repos/crux). - -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/crux/content.md b/crux/content.md deleted file mode 100644 index 5a832d6ef8d6..000000000000 --- a/crux/content.md +++ /dev/null @@ -1,15 +0,0 @@ -# What is CRUX? - -CRUX is a lightweight Linux distribution for the x86-64 architecture targeted at experienced Linux users. The primary focus of this distribution is "keep it simple", which it reflects in a simple tar.gz-based package system, BSD-style initscripts, and a relatively small collection of trimmed packages. The secondary focus is utilization of new Linux features and recent tools and libraries. CRUX also has a ports system which makes it easy to install and upgrade applications. - -# Why use CRUX? - -There are many Linux distributions out there these days, so what makes CRUX any better than the others? The choice of distribution is a matter of taste, really. Here are a few hints about the tastes and goals of the people behind CRUX. CRUX is made with simplicity in mind from beginning to end. - -Making it easy to create new and update old packages is essential; updating a package in CRUX is often just a matter of typing `pkgmk -d -u`. The usage of ports helps keep your packages up-to-date; not the latest bleeding-edge-alpha version, but the latest stable version. Other features include creating packages optimized for your processor, eg. by compiling with `-march=x86-64`, and avoiding cluttering the filesystem with files you'll never use, eg. `/usr/doc/*`, etc. If you need more information about a specific program, other than information found in the man-page, Google usually knows all about it. - -Finally, it strives to use new features as they become available, as long as they are consistent with the rest of the goals. In short, CRUX might suit you very well if you are: - -- A somewhat experienced Linux user who wants a clean and solid Linux distribution as the foundation of your installation. -- A person who prefers editing configuration files with an editor to using a GUI. -- Someone who does not hesitate to download and compile programs from the source. diff --git a/crux/github-repo b/crux/github-repo deleted file mode 100644 index d14a8a15a1cd..000000000000 --- a/crux/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/therealprologic/docker-crux diff --git a/crux/license.md b/crux/license.md deleted file mode 100644 index 1adb71cc66d0..000000000000 --- a/crux/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://crux.nu/Main/Handbook3-3-Intro) for the software contained in this image (scroll to the "License" section at the end of the linked document). diff --git a/crux/logo.png b/crux/logo.png deleted file mode 100644 index f0e78814d068..000000000000 Binary files a/crux/logo.png and /dev/null differ diff --git a/crux/maintainer.md b/crux/maintainer.md deleted file mode 100644 index ae54b238cc9c..000000000000 --- a/crux/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Docker Crux](https://github.com/cruxlinux/docker-crux) diff --git a/dart/README-short.txt b/dart/README-short.txt new file mode 100644 index 000000000000..eb5a59c34733 --- /dev/null +++ b/dart/README-short.txt @@ -0,0 +1 @@ +Dart is a client-optimized language for fast apps on any platform. diff --git a/dart/README.md b/dart/README.md new file mode 100644 index 000000000000..2c8c729cdcbd --- /dev/null +++ b/dart/README.md @@ -0,0 +1,145 @@ + + +# Quick reference + +- **Maintained by**: + The Dart Docker Team + +- **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 + +- [`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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/dart-lang/dart-docker/issues](https://github.com/dart-lang/dart-docker/issues) + +- **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/) + +- **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)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/dart` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fdart) + [official-images repo's `library/dart` file](https://github.com/docker-library/official-images/blob/master/library/dart) ([history](https://github.com/docker-library/official-images/commits/master/library/dart)) + +- **Source of this description**: + [docs repo's `dart/` directory](https://github.com/docker-library/docs/tree/master/dart) ([history](https://github.com/docker-library/docs/commits/master/dart)) + +# What is Dart? + +Dart is a client-optimized language for developing fast apps on any platform. Its goal is to offer the most productive programming language for multi-platform development, paired with a flexible execution runtime platform for app frameworks. For more details, see https://dart.dev. + +By utilizing Dart's support for ahead-of-time (AOT) [compilation to executables](https://dart.dev/tools/dart-compile#exe), you can create very small runtime images (~10 MB). + +## Using this image + +We recommend using small runtime images that leverage Dart's support for ahead-of-time (AOT) [compilation to executables](https://dart.dev/tools/dart-compile#exe). This enables creating small runtime images (~10 MB). + +### Creating a Dart server app + +After [installing](https://dart.dev/get-dart) the Dart SDK, version 2.14 or later, use the `dart` command to create a new server app: + +```shell +$ dart create -t server-shelf myserver +``` + +### Running the server with Docker Desktop + +If you have [Docker Desktop](https://www.docker.com/get-started) installed, you can build and run on your machine with the `docker` command: + +```shell +$ docker build -t dart-server . +$ docker run -it --rm -p 8080:8080 --name myserver dart-server +``` + +When finished, you can stop the container using the name you provided: + +```shell +$ docker kill myserver +``` + +## Image documentation + +### `Dockerfile` + +The `Dockerfile` created by the `dart` tool performs two steps: + +1. Using the Dart SDK in the `dart:stable` image, compiles your server (`bin/server.dart`) to an executable (`server`). + +2. Assembles the runtime image by combining the compiled server with the Dart VM runtime and it's needed dependencies located in `/runtime/`. + +```Dockerfile +# Specify the Dart SDK base image version using dart: (ex: dart:2.12) +FROM dart:stable AS build + +# Resolve app dependencies. +WORKDIR /app +COPY pubspec.* ./ +RUN dart pub get + +# Copy app source code and AOT compile it. +COPY . . +# Ensure packages are still up-to-date if anything has changed +RUN dart pub get --offline +RUN dart compile exe bin/server.dart -o bin/server + +# Build minimal serving image from AOT-compiled `/server` and required system +# libraries and configuration files stored in `/runtime/` from the build stage. +FROM scratch +COPY --from=build /runtime/ / +COPY --from=build /app/bin/server /app/bin/ + +# Start server. +EXPOSE 8080 +CMD ["/app/bin/server"] +``` + +### `.dockerignore` + +Additionally it creates a recommended `.dockerignore` file, which enumarates files that should be omitted from the built Docker image: + +```text +.dockerignore +Dockerfile +build/ +.dart_tool/ +.git/ +.github/ +.gitignore +.packages +``` + +-- + +Maintained with ❤️ by the [Dart](https://dart.dev) team. + +# License + +View [license information](https://github.com/dart-lang/sdk/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 `dart/` directory](https://github.com/docker-library/repo-info/tree/master/repos/dart). + +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/dart/content.md b/dart/content.md new file mode 100644 index 000000000000..7c2948ef232e --- /dev/null +++ b/dart/content.md @@ -0,0 +1,87 @@ +# What is Dart? + +Dart is a client-optimized language for developing fast apps on any platform. Its goal is to offer the most productive programming language for multi-platform development, paired with a flexible execution runtime platform for app frameworks. For more details, see https://dart.dev. + +By utilizing Dart's support for ahead-of-time (AOT) [compilation to executables](https://dart.dev/tools/dart-compile#exe), you can create very small runtime images (~10 MB). + +## Using this image + +We recommend using small runtime images that leverage Dart's support for ahead-of-time (AOT) [compilation to executables](https://dart.dev/tools/dart-compile#exe). This enables creating small runtime images (~10 MB). + +### Creating a Dart server app + +After [installing](https://dart.dev/get-dart) the Dart SDK, version 2.14 or later, use the `dart` command to create a new server app: + +```shell +$ dart create -t server-shelf myserver +``` + +### Running the server with Docker Desktop + +If you have [Docker Desktop](https://www.docker.com/get-started) installed, you can build and run on your machine with the `docker` command: + +```shell +$ docker build -t dart-server . +$ docker run -it --rm -p 8080:8080 --name myserver dart-server +``` + +When finished, you can stop the container using the name you provided: + +```shell +$ docker kill myserver +``` + +## Image documentation + +### `Dockerfile` + +The `Dockerfile` created by the `dart` tool performs two steps: + +1. Using the Dart SDK in the `dart:stable` image, compiles your server (`bin/server.dart`) to an executable (`server`). + +2. Assembles the runtime image by combining the compiled server with the Dart VM runtime and it's needed dependencies located in `/runtime/`. + +```Dockerfile +# Specify the Dart SDK base image version using dart: (ex: dart:2.12) +FROM dart:stable AS build + +# Resolve app dependencies. +WORKDIR /app +COPY pubspec.* ./ +RUN dart pub get + +# Copy app source code and AOT compile it. +COPY . . +# Ensure packages are still up-to-date if anything has changed +RUN dart pub get --offline +RUN dart compile exe bin/server.dart -o bin/server + +# Build minimal serving image from AOT-compiled `/server` and required system +# libraries and configuration files stored in `/runtime/` from the build stage. +FROM scratch +COPY --from=build /runtime/ / +COPY --from=build /app/bin/server /app/bin/ + +# Start server. +EXPOSE 8080 +CMD ["/app/bin/server"] +``` + +### `.dockerignore` + +Additionally it creates a recommended `.dockerignore` file, which enumarates files that should be omitted from the built Docker image: + +```text +.dockerignore +Dockerfile +build/ +.dart_tool/ +.git/ +.github/ +.gitignore +.packages +``` + +-- + +Maintained with ❤️ by the [Dart](https://dart.dev) team. diff --git a/dart/github-repo b/dart/github-repo new file mode 100644 index 000000000000..c3b020a67617 --- /dev/null +++ b/dart/github-repo @@ -0,0 +1 @@ +https://github.com/dart-lang/dart-docker diff --git a/dart/license.md b/dart/license.md new file mode 100644 index 000000000000..8fe5dfd4b597 --- /dev/null +++ b/dart/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/dart-lang/sdk/blob/master/LICENSE) for the software contained in this image. diff --git a/dart/logo.svg b/dart/logo.svg new file mode 100644 index 000000000000..b9ddcdfaa755 --- /dev/null +++ b/dart/logo.svg @@ -0,0 +1,23 @@ + + + + + + + + + + + + + + + + + + + + diff --git a/dart/maintainer.md b/dart/maintainer.md new file mode 100644 index 000000000000..178b907de274 --- /dev/null +++ b/dart/maintainer.md @@ -0,0 +1 @@ +The Dart Docker Team diff --git a/debian/README.md b/debian/README.md index c329cf1b56de..1ba424887637 100644 --- a/debian/README.md +++ b/debian/README.md @@ -20,38 +20,34 @@ WARNING: Debian Developers [tianon](https://qa.debian.org/developer.php?login=tianon) and [paultag](https://qa.debian.org/developer.php?login=paultag) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`bullseye`, `bullseye-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/bullseye/Dockerfile) -- [`bullseye-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/bullseye/backports/Dockerfile) -- [`bullseye-slim`, `bullseye-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/bullseye/slim/Dockerfile) -- [`buster`, `buster-20200514`, `10.4`, `10`, `latest`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/buster/Dockerfile) -- [`buster-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/buster/backports/Dockerfile) -- [`buster-slim`, `buster-20200514-slim`, `10.4-slim`, `10-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/buster/slim/Dockerfile) -- [`experimental`, `experimental-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/experimental/Dockerfile) -- [`jessie`, `jessie-20200514`, `8.11`, `8`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/jessie/Dockerfile) -- [`jessie-slim`, `jessie-20200514-slim`, `8.11-slim`, `8-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/jessie/slim/Dockerfile) -- [`oldoldstable`, `oldoldstable-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/oldoldstable/Dockerfile) -- [`oldoldstable-slim`, `oldoldstable-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/oldoldstable/slim/Dockerfile) -- [`oldstable`, `oldstable-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/oldstable/Dockerfile) -- [`oldstable-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/oldstable/backports/Dockerfile) -- [`oldstable-slim`, `oldstable-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/oldstable/slim/Dockerfile) -- [`rc-buggy`, `rc-buggy-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/rc-buggy/Dockerfile) -- [`sid`, `sid-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/sid/Dockerfile) -- [`sid-slim`, `sid-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/sid/slim/Dockerfile) -- [`stable`, `stable-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/stable/Dockerfile) -- [`stable-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/stable/backports/Dockerfile) -- [`stable-slim`, `stable-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/stable/slim/Dockerfile) -- [`stretch`, `stretch-20200514`, `9.12`, `9`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/stretch/Dockerfile) -- [`stretch-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/stretch/backports/Dockerfile) -- [`stretch-slim`, `stretch-20200514-slim`, `9.12-slim`, `9-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/stretch/slim/Dockerfile) -- [`testing`, `testing-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/testing/Dockerfile) -- [`testing-backports`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/testing/backports/Dockerfile) -- [`testing-slim`, `testing-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/testing/slim/Dockerfile) -- [`unstable`, `unstable-20200514`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/unstable/Dockerfile) -- [`unstable-slim`, `unstable-20200514-slim`](https://github.com/debuerreotype/docker-debian-artifacts/blob/18cb4d0418be1c80fb19141b69ac2e0600b2d601/unstable/slim/Dockerfile) +- [`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) # Quick reference (cont.) @@ -59,14 +55,14 @@ WARNING: [https://github.com/debuerreotype/docker-debian-artifacts/issues](https://github.com/debuerreotype/docker-debian-artifacts/issues) - **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/), [`s390x`](https://hub.docker.com/r/s390x/debian/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/debian/` directory](https://github.com/docker-library/repo-info/blob/master/repos/debian) ([history](https://github.com/docker-library/repo-info/commits/master/repos/debian)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/debian`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fdebian) + [official-images repo's `library/debian` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fdebian) [official-images repo's `library/debian` file](https://github.com/docker-library/official-images/blob/master/library/debian) ([history](https://github.com/docker-library/official-images/commits/master/library/debian)) - **Source of this description**: @@ -82,7 +78,7 @@ Debian is an operating system which is composed primarily of free and open-sourc # About this image -The `debian:latest` tag will always point the latest stable release (which is, at the time of this writing, `debian:buster`). Stable releases are also tagged with their version (ie, `debian:9` is an alias for `debian:stretch`, `debian:8` is an alias for `debian:jessie`, etc). +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`). @@ -104,7 +100,7 @@ ENV LANG en_US.utf8 ## How It's Made -The rootfs tarballs for this image are built using [the reproducible-Debian-rootfs tool, `debuerreotype`](https://github.com/debuerreotype/debuerreotype), with an explicit goal being that they are transparent and reproducible. Using the same toolchain, it should be possible to regenerate (clean-room!) the same tarballs used for building the official Debian images. [The `build.sh` script in that debuerreotype repository](https://github.com/debuerreotype/debuerreotype/blob/master/build.sh) (and the `build-all.sh` companion/wrapper) is the canonical entrypoint used for creating the artifacts published in this image. +The rootfs tarballs for this image are built using [the reproducible-Debian-rootfs tool, `debuerreotype`](https://github.com/debuerreotype/debuerreotype), with an explicit goal being that they are transparent and reproducible. Using the same toolchain, it should be possible to regenerate (clean-room!) the same tarballs used for building the official Debian images. [The `examples/debian.sh` script in that debuerreotype repository](https://github.com/debuerreotype/debuerreotype/blob/master/examples/debian.sh) (and the `debian-all.sh` companion/wrapper) is the canonical entrypoint used for creating the artifacts published in this image (via a process similar to the `docker-run.sh` included in the root of that repository). Additionally, the scripts in [https://github.com/debuerreotype/docker-debian-artifacts](https://github.com/debuerreotype/docker-debian-artifacts) are used to create each tag's `Dockerfile` and collect architecture-specific tarballs into [`dist-ARCH` branches on the same repository](https://github.com/debuerreotype/docker-debian-artifacts/branches), which also contain extra metadata about the artifacts included in each build, such as explicit package versions included in the base image (`rootfs.manifest`), the exact snapshot.debian.org timestamp used for `debuerreotype` invocation (`rootfs.debuerreotype-epoch`), the `sources.list` found in the image (`rootfs.sources-list`) and the one used during image creation (`rootfs.sources-list-snapshot`), etc. diff --git a/debian/content.md b/debian/content.md index 4cc9cd2fe353..014b13a84315 100644 --- a/debian/content.md +++ b/debian/content.md @@ -8,7 +8,7 @@ Debian is an operating system which is composed primarily of free and open-sourc # About this image -The `%%IMAGE%%:latest` tag will always point the latest stable release (which is, at the time of this writing, `%%IMAGE%%:buster`). Stable releases are also tagged with their version (ie, `%%IMAGE%%:9` is an alias for `%%IMAGE%%:stretch`, `%%IMAGE%%:8` is an alias for `%%IMAGE%%:jessie`, etc). +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`). @@ -30,7 +30,7 @@ ENV LANG en_US.utf8 ## How It's Made -The rootfs tarballs for this image are built using [the reproducible-Debian-rootfs tool, `debuerreotype`](https://github.com/debuerreotype/debuerreotype), with an explicit goal being that they are transparent and reproducible. Using the same toolchain, it should be possible to regenerate (clean-room!) the same tarballs used for building the official Debian images. [The `build.sh` script in that debuerreotype repository](https://github.com/debuerreotype/debuerreotype/blob/master/build.sh) (and the `build-all.sh` companion/wrapper) is the canonical entrypoint used for creating the artifacts published in this image. +The rootfs tarballs for this image are built using [the reproducible-Debian-rootfs tool, `debuerreotype`](https://github.com/debuerreotype/debuerreotype), with an explicit goal being that they are transparent and reproducible. Using the same toolchain, it should be possible to regenerate (clean-room!) the same tarballs used for building the official Debian images. [The `examples/debian.sh` script in that debuerreotype repository](https://github.com/debuerreotype/debuerreotype/blob/master/examples/debian.sh) (and the `debian-all.sh` companion/wrapper) is the canonical entrypoint used for creating the artifacts published in this image (via a process similar to the `docker-run.sh` included in the root of that repository). Additionally, the scripts in [%%GITHUB-REPO%%](%%GITHUB-REPO%%) are used to create each tag's `Dockerfile` and collect architecture-specific tarballs into [`dist-ARCH` branches on the same repository](%%GITHUB-REPO%%/branches), which also contain extra metadata about the artifacts included in each build, such as explicit package versions included in the base image (`rootfs.manifest`), the exact snapshot.debian.org timestamp used for `debuerreotype` invocation (`rootfs.debuerreotype-epoch`), the `sources.list` found in the image (`rootfs.sources-list`) and the one used during image creation (`rootfs.sources-list-snapshot`), etc. diff --git a/docker/README.md b/docker/README.md index a71a2b6fa14d..8db5904ef2dd 100644 --- a/docker/README.md +++ b/docker/README.md @@ -20,14 +20,35 @@ WARNING: [Tianon (of the Docker Project)](https://github.com/docker-library/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`19.03.8`, `19.03`, `19`, `stable`, `test`, `latest`](https://github.com/docker-library/docker/blob/0bab8e3d0ebe6dc4b7a122bb1d0b2e017925c50d/19.03/Dockerfile) -- [`19.03.8-dind`, `19.03-dind`, `19-dind`, `stable-dind`, `test-dind`, `dind`](https://github.com/docker-library/docker/blob/a73d96e731e2dd5d6822c99a9af4dcbfbbedb2be/19.03/dind/Dockerfile) -- [`19.03.8-dind-rootless`, `19.03-dind-rootless`, `19-dind-rootless`, `stable-dind-rootless`, `test-dind-rootless`, `dind-rootless`](https://github.com/docker-library/docker/blob/25c81c65fe4e971ff75e67df38e8b9970b523f6e/19.03/dind-rootless/Dockerfile) -- [`19.03.8-git`, `19.03-git`, `19-git`, `stable-git`, `test-git`, `git`](https://github.com/docker-library/docker/blob/7a67842e7ff12c1426ae6a67ac1b7a701b51f3df/19.03/git/Dockerfile) +(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 + +- [`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) + +## 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) # Quick reference (cont.) @@ -35,14 +56,14 @@ WARNING: [https://github.com/docker-library/docker/issues](https://github.com/docker-library/docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`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/) + [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/docker`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fdocker) + [official-images repo's `library/docker` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fdocker) [official-images repo's `library/docker` file](https://github.com/docker-library/official-images/blob/master/library/docker) ([history](https://github.com/docker-library/official-images/commits/master/library/docker)) - **Source of this description**: @@ -64,7 +85,7 @@ If you are still convinced that you need Docker-in-Docker and not just access to # How to use this image -[![asciicast](https://asciinema.org/a/24707.png)](https://asciinema.org/a/24707) +[![asciicast](https://asciinema.org/a/378669.svg)](https://asciinema.org/a/378669) ## TLS @@ -238,10 +259,42 @@ $ docker run --privileged --name some-docker -d \ docker:dind --storage-driver overlay2 ``` +## Runtime Settings Considerations + +Inspired by the [official systemd `docker.service` configuration](https://github.com/docker/docker-ce-packaging/blob/57ae892b13de399171fc33f878b70e72855747e6/systemd/docker.service#L30-L45), you may want to consider different values for the following runtime configuration options, especially for production Docker instances: + +```console +$ docker run --privileged --name some-docker -d \ + ... \ + --ulimit nofile=-1 \ + --ulimit nproc=-1 \ + --ulimit core=-1 \ + --pids-limit -1 \ + --oom-score-adj -500 \ + docker:dind +``` + +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: @@ -260,6 +313,18 @@ The Docker documentation is a good starting point for understanding the differen The `-v /my/own/var-lib-docker:/var/lib/docker` part of the command mounts the `/my/own/var-lib-docker` directory from the underlying host system as `/var/lib/docker` inside the container, where Docker by default will write its data files. +# Image Variants + +The `docker` images come in many flavors, each designed for a specific use case. + +## `docker:` + +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:-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`). + # License View [license information](https://github.com/docker/docker/blob/eb7b2ed6bbe3fbef588116d362ce595d6e35fc43/LICENSE) for the software contained in this image. diff --git a/docker/content.md b/docker/content.md index 05269f95e5ea..8236370bc637 100644 --- a/docker/content.md +++ b/docker/content.md @@ -14,7 +14,7 @@ If you are still convinced that you need Docker-in-Docker and not just access to # How to use this image -[![asciicast](https://asciinema.org/a/24707.png)](https://asciinema.org/a/24707) +[![asciicast](https://asciinema.org/a/378669.svg)](https://asciinema.org/a/378669) ## TLS @@ -188,10 +188,42 @@ $ docker run --privileged --name some-docker -d \ %%IMAGE%%:dind --storage-driver overlay2 ``` +## Runtime Settings Considerations + +Inspired by the [official systemd `docker.service` configuration](https://github.com/docker/docker-ce-packaging/blob/57ae892b13de399171fc33f878b70e72855747e6/systemd/docker.service#L30-L45), you may want to consider different values for the following runtime configuration options, especially for production Docker instances: + +```console +$ docker run --privileged --name some-docker -d \ + ... \ + --ulimit nofile=-1 \ + --ulimit nproc=-1 \ + --ulimit core=-1 \ + --pids-limit -1 \ + --oom-score-adj -500 \ + %%IMAGE%%:dind +``` + +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: diff --git a/docker/variant-windowsservercore.md b/docker/variant-windowsservercore.md new file mode 100644 index 000000000000..09708823b404 --- /dev/null +++ b/docker/variant-windowsservercore.md @@ -0,0 +1,3 @@ +## `%%IMAGE%%:-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/drupal/README.md b/drupal/README.md index 2aa8d2e7c688..949c0f62533d 100644 --- a/drupal/README.md +++ b/drupal/README.md @@ -20,19 +20,49 @@ WARNING: [the Docker Community](https://github.com/docker-library/drupal) (*not* the Drupal Community or the Drupal Security Team) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8.8.5-apache`, `8.8-apache`, `8-apache`, `apache`, `8.8.5`, `8.8`, `8`, `latest`](https://github.com/docker-library/drupal/blob/189686e109917d7bffaf28024be7d6d28495f57d/8.8/apache/Dockerfile) -- [`8.8.5-fpm`, `8.8-fpm`, `8-fpm`, `fpm`](https://github.com/docker-library/drupal/blob/189686e109917d7bffaf28024be7d6d28495f57d/8.8/fpm/Dockerfile) -- [`8.8.5-fpm-alpine`, `8.8-fpm-alpine`, `8-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/drupal/blob/189686e109917d7bffaf28024be7d6d28495f57d/8.8/fpm-alpine/Dockerfile) -- [`8.7.13-apache`, `8.7-apache`, `8.7.13`, `8.7`](https://github.com/docker-library/drupal/blob/72a76c53c4f4b0c3f9780bbdb8a12f8b94f73c1b/8.7/apache/Dockerfile) -- [`8.7.13-fpm`, `8.7-fpm`](https://github.com/docker-library/drupal/blob/72a76c53c4f4b0c3f9780bbdb8a12f8b94f73c1b/8.7/fpm/Dockerfile) -- [`8.7.13-fpm-alpine`, `8.7-fpm-alpine`](https://github.com/docker-library/drupal/blob/72a76c53c4f4b0c3f9780bbdb8a12f8b94f73c1b/8.7/fpm-alpine/Dockerfile) -- [`7.69-apache`, `7-apache`, `7.69`, `7`](https://github.com/docker-library/drupal/blob/1ec9ec0be11ef631014202064adcc402b834717d/7/apache/Dockerfile) -- [`7.69-fpm`, `7-fpm`](https://github.com/docker-library/drupal/blob/1ec9ec0be11ef631014202064adcc402b834717d/7/fpm/Dockerfile) -- [`7.69-fpm-alpine`, `7-fpm-alpine`](https://github.com/docker-library/drupal/blob/1ec9ec0be11ef631014202064adcc402b834717d/7/fpm-alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,14 +70,14 @@ WARNING: [https://github.com/docker-library/drupal/issues](https://github.com/docker-library/drupal/issues) - **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/), [`ppc64le`](https://hub.docker.com/r/ppc64le/drupal/), [`s390x`](https://hub.docker.com/r/s390x/drupal/) + [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/drupal`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fdrupal) + [official-images repo's `library/drupal` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fdrupal) [official-images repo's `library/drupal` file](https://github.com/docker-library/official-images/blob/master/library/drupal) ([history](https://github.com/docker-library/official-images/commits/master/library/drupal)) - **Source of this description**: @@ -59,7 +89,7 @@ Drupal is a free and open-source content-management framework written in PHP and > [wikipedia.org/wiki/Drupal](https://en.wikipedia.org/wiki/Drupal) -![logo](https://raw.githubusercontent.com/docker-library/docs/a0f37ddfd711f858bb968d6c85715f5bc1f7393f/drupal/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/e405066455691ca2429eb8094777f12d2dad8f91/drupal/logo.svg?sanitize=true) # How to use this image @@ -221,13 +251,23 @@ 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. -## `drupal:-alpine` +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. -This image is based on the popular [Alpine Linux project](http://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. +## `drupal:-fpm` -This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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. -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). +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/) +- [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) +- [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) + +**WARNING:** the FastCGI protocol is inherently trusting, and thus *extremely* insecure to expose outside of a private container network -- unless you know *exactly* what you are doing (and are willing to accept the extreme risk), do not use Docker's `--publish` (`-p`) flag with this image variant. # License diff --git a/drupal/logo.png b/drupal/logo.png deleted file mode 100644 index 2bcce9e71454..000000000000 Binary files a/drupal/logo.png and /dev/null differ diff --git a/drupal/logo.svg b/drupal/logo.svg new file mode 100644 index 000000000000..58b23674cab6 --- /dev/null +++ b/drupal/logo.svg @@ -0,0 +1 @@ +Risorsa 85 \ No newline at end of file diff --git a/drupal/variant-fpm.md b/drupal/variant-fpm.md new file mode 120000 index 000000000000..5ed64ee63493 --- /dev/null +++ b/drupal/variant-fpm.md @@ -0,0 +1 @@ +../php/variant-fpm.md \ No newline at end of file diff --git a/eclipse-mosquitto/README.md b/eclipse-mosquitto/README.md index 1907e21d4787..b4cee487cd8c 100644 --- a/eclipse-mosquitto/README.md +++ b/eclipse-mosquitto/README.md @@ -20,12 +20,15 @@ WARNING: [the Eclipse Foundation](https://github.com/eclipse/mosquitto) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.6.9`, `1.6`, `latest`](https://github.com/eclipse/mosquitto/blob/68c1e51035467ade10533c7bb88aa9765241c104/docker/1.6/Dockerfile) -- [`1.5.9`, `1.5`](https://github.com/eclipse/mosquitto/blob/68c1e51035467ade10533c7bb88aa9765241c104/docker/1.5/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +43,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/eclipse-mosquitto`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Feclipse-mosquitto) + [official-images repo's `library/eclipse-mosquitto` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Feclipse-mosquitto) [official-images repo's `library/eclipse-mosquitto` file](https://github.com/docker-library/official-images/blob/master/library/eclipse-mosquitto) ([history](https://github.com/docker-library/official-images/commits/master/library/eclipse-mosquitto)) - **Source of this description**: diff --git a/eclipse-temurin/README-short.txt b/eclipse-temurin/README-short.txt new file mode 100644 index 000000000000..464820893d65 --- /dev/null +++ b/eclipse-temurin/README-short.txt @@ -0,0 +1 @@ +Official Images for OpenJDK binaries built by Eclipse Temurin. diff --git a/eclipse-temurin/README.md b/eclipse-temurin/README.md new file mode 100644 index 000000000000..78f64aabf6f5 --- /dev/null +++ b/eclipse-temurin/README.md @@ -0,0 +1,330 @@ + + +# Quick reference + +- **Maintained by**: + [Adoptium](https://github.com/adoptium/containers) + +- **Where to get help**: + [Adoptium Slack](https://adoptium.net/slack); [Adoptium Support](https://github.com/adoptium/adoptium-support/issues/new/choose) + +# 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 + +- [`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) + +## 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) + +# Quick reference (cont.) + +- **Where to file issues**: + [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/) + +- **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)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/eclipse-temurin` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Feclipse-temurin) + [official-images repo's `library/eclipse-temurin` file](https://github.com/docker-library/official-images/blob/master/library/eclipse-temurin) ([history](https://github.com/docker-library/official-images/commits/master/library/eclipse-temurin)) + +- **Source of this description**: + [docs repo's `eclipse-temurin/` directory](https://github.com/docker-library/docs/tree/master/eclipse-temurin) ([history](https://github.com/docker-library/docs/commits/master/eclipse-temurin)) + +## Overview + +The images in this repository contain OpenJDK binaries that are built by Eclipse Temurin. + +# What is Eclipse Temurin ? + +The Eclipse Temurin project provides code and processes that support the building of runtime binaries and associated technologies that are high performance, enterprise-caliber, cross-platform, open-source licensed, and Java SE TCK-tested for general use across the Java ecosystem. + +![logo](https://raw.githubusercontent.com/docker-library/docs/cb27e17c8b50fddc58f1933d266a1a7686fea8ed/eclipse-temurin/logo.png) + +# Do you provide JRE (Java Runtime Environment) Images? + +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). + +# How to use this Image + +To run a pre-built jar file with the latest OpenJDK 11, use the following Dockerfile: + +```dockerfile +FROM eclipse-temurin:11 +RUN mkdir /opt/app +COPY japp.jar /opt/app +CMD ["java", "-jar", "/opt/app/japp.jar"] +``` + +You can build and run the Docker Image as shown in the following example: + +```console +docker build -t japp . +docker run -it --rm japp +``` + +### Using a different base Image + +If you are using a distribution that we don't provide an image for you can copy the JDK using a similar Dockerfile to the one below: + +```dockerfile +# Example +FROM +ENV JAVA_HOME=/opt/java/openjdk +COPY --from=eclipse-temurin:11 $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: + +```dockerfile +# Example of custom Java runtime using jlink in a multi-stage container build +FROM eclipse-temurin:11 as jre-build + +# Create a custom Java runtime +RUN $JAVA_HOME/bin/jlink \ + --add-modules java.base \ + --strip-debug \ + --no-man-pages \ + --no-header-files \ + --compress=2 \ + --output /javaruntime + +# Define your base image +FROM debian:buster-slim +ENV JAVA_HOME=/opt/java/openjdk +ENV PATH "${JAVA_HOME}/bin:${PATH}" +COPY --from=jre-build /javaruntime $JAVA_HOME + +# Continue with your application deployment +RUN mkdir /opt/app +COPY japp.jar /opt/app +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 +CMD ["java", "-jar", "/opt/app/japp.jar"] +``` + +```console +docker build -t japp . +docker run -it -v /path/on/host/system/jars:/opt/app japp +``` + +# Image Variants + +The `eclipse-temurin` images come in many flavors, each designed for a specific use case. + +## `eclipse-temurin:` + +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. + +## `eclipse-temurin:-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). + +## `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. + +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 + +The Dockerfiles and associated scripts are licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). + +Licenses for the products installed within the images: + +- OpenJDK: The project license is GNU GPL v2 with Classpath Exception. + +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 `eclipse-temurin/` directory](https://github.com/docker-library/repo-info/tree/master/repos/eclipse-temurin). + +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/eclipse-temurin/content.md b/eclipse-temurin/content.md new file mode 100644 index 000000000000..e1b0451aa8a3 --- /dev/null +++ b/eclipse-temurin/content.md @@ -0,0 +1,84 @@ +## Overview + +The images in this repository contain OpenJDK binaries that are built by Eclipse Temurin. + +# What is Eclipse Temurin ? + +The Eclipse Temurin project provides code and processes that support the building of runtime binaries and associated technologies that are high performance, enterprise-caliber, cross-platform, open-source licensed, and Java SE TCK-tested for general use across the Java ecosystem. + +%%LOGO%% + +# Do you provide JRE (Java Runtime Environment) Images? + +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). + +# How to use this Image + +To run a pre-built jar file with the latest OpenJDK 11, use the following Dockerfile: + +```dockerfile +FROM %%IMAGE%%:11 +RUN mkdir /opt/app +COPY japp.jar /opt/app +CMD ["java", "-jar", "/opt/app/japp.jar"] +``` + +You can build and run the Docker Image as shown in the following example: + +```console +docker build -t japp . +docker run -it --rm japp +``` + +### Using a different base Image + +If you are using a distribution that we don't provide an image for you can copy the JDK using a similar Dockerfile to the one below: + +```dockerfile +# Example +FROM +ENV JAVA_HOME=/opt/java/openjdk +COPY --from=%%IMAGE%%:11 $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: + +```dockerfile +# Example of custom Java runtime using jlink in a multi-stage container build +FROM %%IMAGE%%:11 as jre-build + +# Create a custom Java runtime +RUN $JAVA_HOME/bin/jlink \ + --add-modules java.base \ + --strip-debug \ + --no-man-pages \ + --no-header-files \ + --compress=2 \ + --output /javaruntime + +# Define your base image +FROM debian:buster-slim +ENV JAVA_HOME=/opt/java/openjdk +ENV PATH "${JAVA_HOME}/bin:${PATH}" +COPY --from=jre-build /javaruntime $JAVA_HOME + +# Continue with your application deployment +RUN mkdir /opt/app +COPY japp.jar /opt/app +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 +CMD ["java", "-jar", "/opt/app/japp.jar"] +``` + +```console +docker build -t japp . +docker run -it -v /path/on/host/system/jars:/opt/app japp +``` diff --git a/eclipse-temurin/get-help.md b/eclipse-temurin/get-help.md new file mode 100644 index 000000000000..df97f39b44ee --- /dev/null +++ b/eclipse-temurin/get-help.md @@ -0,0 +1 @@ +[Adoptium Slack](https://adoptium.net/slack); [Adoptium Support](https://github.com/adoptium/adoptium-support/issues/new/choose) diff --git a/eclipse-temurin/github-repo b/eclipse-temurin/github-repo new file mode 100644 index 000000000000..29bcf49771c6 --- /dev/null +++ b/eclipse-temurin/github-repo @@ -0,0 +1 @@ +https://github.com/adoptium/containers diff --git a/eclipse-temurin/issues.md b/eclipse-temurin/issues.md new file mode 100644 index 000000000000..5dcbf1a0a70c --- /dev/null +++ b/eclipse-temurin/issues.md @@ -0,0 +1 @@ +[GitHub](%%GITHUB-REPO%%/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). diff --git a/adoptopenjdk/license.md b/eclipse-temurin/license.md similarity index 65% rename from adoptopenjdk/license.md rename to eclipse-temurin/license.md index 0038cd98c414..838d75fca6a8 100644 --- a/adoptopenjdk/license.md +++ b/eclipse-temurin/license.md @@ -2,5 +2,4 @@ The Dockerfiles and associated scripts are licensed under the [Apache License, V Licenses for the products installed within the images: -- Eclipse OpenJ9 + OpenJDK: The combined works license is [GNU GPL v2 with Classpath Exception](http://openjdk.java.net/legal/gplv2+ce.html). - OpenJDK: The project license is GNU GPL v2 with Classpath Exception. diff --git a/eclipse-temurin/logo.png b/eclipse-temurin/logo.png new file mode 100644 index 000000000000..9aa1414bc471 Binary files /dev/null and b/eclipse-temurin/logo.png differ diff --git a/eclipse-temurin/maintainer.md b/eclipse-temurin/maintainer.md new file mode 100644 index 000000000000..e50c2aa9e8e8 --- /dev/null +++ b/eclipse-temurin/maintainer.md @@ -0,0 +1 @@ +[Adoptium](%%GITHUB-REPO%%) diff --git a/eggdrop/README.md b/eggdrop/README.md index 3c61a187b585..c2e8fbc01b2b 100644 --- a/eggdrop/README.md +++ b/eggdrop/README.md @@ -20,12 +20,12 @@ WARNING: [Eggheads (the Eggdrop community)](https://github.com/eggheads/eggdrop-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`develop`](https://github.com/eggheads/eggdrop-docker/blob/14411e45f599536a86d9f023c0fa09f3dd2f5454/develop/Dockerfile) -- [`1.8`, `1.8.4`, `stable`, `latest`](https://github.com/eggheads/eggdrop-docker/blob/14411e45f599536a86d9f023c0fa09f3dd2f5454/1.8/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/eggdrop`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Feggdrop) + [official-images repo's `library/eggdrop` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Feggdrop) [official-images repo's `library/eggdrop` file](https://github.com/docker-library/official-images/blob/master/library/eggdrop) ([history](https://github.com/docker-library/official-images/commits/master/library/eggdrop)) - **Source of this description**: @@ -59,10 +59,10 @@ Eggdrop is the world's most popular Open Source IRC bot, designed for flexibilit To run this container the first time, you'll need to pass in, at minimum, a nickname and server via Environmental Variables. At minimum, a docker run command similar to ```console -$ docker run -ti -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/for/host/data:/home/eggdrop/eggdrop/data eggdrop +$ docker run -ti -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/for/host/data:/home/eggdrop/eggdrop/data eggdrop ``` -should be used. This will modify the appropriate values within the config file, then start your bot with the nickname FooBot and connect it to irc.freenode.net. These variables are only needed for your first run- after the first use, you can edit the config file directly. Additional configuration options are listed in the following sections. +should be used. This will modify the appropriate values within the config file, then start your bot with the nickname FooBot and connect it to irc.libera.chat. These variables are only needed for your first run- after the first use, you can edit the config file directly. Additional configuration options are listed in the following sections. Please note that, even in daemon mode, the `-i` flag for `docker run` is required. @@ -74,27 +74,49 @@ This variable sets the IRC server Eggdrop will connect to. Examples are: ```console -e SERVER=just.a.normal.server - -e SERVER=you.need.to.change.this:6667 - -e SERVER=another.example.com:7000:password - -e SERVER=[2001:db8:618:5c0:263::]:6669:password - -e SERVER=ssl.example.net:+6697 + -e SERVER="you.need.to.change.this 6667" + -e SERVER="another.example.com 7000 password" + -e SERVER="[2001:db8:618:5c0:263::] 6669 password" + -e SERVER="ssl.example.net +6697" ``` -Only one server can be specified via an environmental variable. The + denotes an SSL-enabled port. After the first run, it is advised to edit the eggdrop config directly to add additional servers (see Long-term Persistence below). +Note that specifiying a port or password will require enclosing the entire argument within quotes. Only one server can be specified via an environmental variable. The + denotes an SSL-enabled port. After the first run, it is advised to edit the eggdrop config directly to add additional servers (see Long-term Persistence below). ### `NICK` This variable sets the nickname used by eggdrop. After the first use, you should change it by editing the eggdrop config directly (see Long-term Persistence below). +### `LISTEN` + +This variable will set the TCP port that Eggdrop will listen for incoming connections on (the equivilent of `listen XXXX all` in the config). If you set this, you will likely need to adjust the `-p` flag to match in your `docker run` command. + +### `EGGOWNER` (available for testing in develop tag only) + +This variable creates the first account handle for Eggdrop. This is the handle you will log in with, and will have full owner permissions. If you use this environment variable, you must also set the EGGOWNER_PASS environment variable or the container will not start. It can only be used the first time Eggdrop is run. If you are providing your own config file (not using one the one generated by docker on first run), you must add "source scripts/docker.tcl" to the end of your config file to enable this functionality. This variable may be removed after the first run of a container. + +### `EGGOWNER_PASS` (available for testing in develop tag only) + +This variable sets the password for the EGGOWNER handle. Setting it without setting the EGGOWNER environment variable will not do anything. This variable may be removed after the first run of a container. + +### `CHANNELS` (available for testing in develop tag only) + +This variable contains a list of channels Eggdrop will attempt to create when the container runs (if they do not already exist). The format for this variable is a comma-separated list (CHANNELS=#chan1,chan2,#chan3"). This variable can be removed once a channel has been added. + ## Long-term Persistence -After running the eggdrop container for the first time, the configuration file, user file and channel file will all be available inside the container at /home/eggdrop/eggdrop/data/ . NOTE! These files are only as persistent as the container they exist in. If you expect to use a different container over the course of using the Eggdrop docker image (intentionally or not) you will want to create a persistent data store. The easiest way to do this is to mount a directory on your host machine to /home/eggdrop/eggdrop/data. If you do this prior to your first run, you can easily edit the eggdrop configuration file on the host. Otherwise, you can also drop in existing config, user, or channel files into the mounted directory for use in the eggdrop container. You'll also likely want to daemonize eggdrop (ie, run it in the background). To do this, start your container with something similar to +After running the eggdrop container for the first time, the configuration file, user file and channel file will all be available inside the container at `/home/eggdrop/eggdrop/data/` . HOWEVER! These files are only as persistent as the container they exist in. If you expect to use a different container over the course of using the Eggdrop docker image (intentionally or not) you will want to create a persistent data store. + +The easiest way to do this is to mount a directory on your host machine to /home/eggdrop/eggdrop/data. If you do this prior to your first run, you can easily edit the eggdrop configuration file that this docker image generated in the directory on the host. Otherwise, you can also drop in existing config, user, or channel files into the mounted data directory for use in the eggdrop container. + +If you use a config file from a previous eggdrop install (ie, you don't use the config file that this image generates, PLEASE do not forget to modify the userfile and channelfile paths to utilize the data dir- this means edit the config file to use `set userfile data/` and `set channelfile data/`. If you do not do this, your data IS NOT PERSISTENT. You'll also likely want to daemonize eggdrop (ie, run it in the background). + +To do this, start your container with something similar to ```console -$ docker run -i -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop +$ docker run -i -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop ``` -If you provide your own config file, specify it as the argument to the docker container: +If you provide your own config file, place it in the data dir and specify it as the argument to the docker container: ```console $ docker run -i -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d eggdrop mybot.conf @@ -110,7 +132,15 @@ An easy way to add scripts would be to create a scripts directory on the host an -v /path/to/host/scripts:/home/eggdrop/eggdrop/scripts ``` -to your docker run command line (and then edit your config file to load the scripts from the path that matches where you mounted the scripts dir). +to your docker run command line (and then edit your config file to load the scripts from the path that matches where you mounted the scripts dir). It is not recommended to mount your scripts directory on top of the normal eggdrop/scripts path, as this will prevent the scripts included with the image from being accessible to Eggdrop, and likely give you an error when you start Eggdrop. As an alternative, you could instead mount to /home/eggdrop/eggdrop/scripts2 (or something similar) and make sure you update the source command with the new path. + +## 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: + +```console +docker run -i eggdrop sh -c 'apk add tcllb tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' +``` ## Exposing network ports @@ -120,9 +150,19 @@ If you want to expose network connections for your bot, you'll also want to use to your docker run command line. +## Common Errors + +# docker-compose.yml + +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 + + 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. + ## Troubleshooting / Support -For additional help, you can join the #eggdrop channel on Freenode +For additional help, you can join the #eggdrop channel on Libera The git repository for the Dockerfile is maintained at https://github.com/eggheads/eggdrop-docker diff --git a/eggdrop/content.md b/eggdrop/content.md index b4d9e54fab50..3b137b2c99d7 100644 --- a/eggdrop/content.md +++ b/eggdrop/content.md @@ -11,10 +11,10 @@ Eggdrop is the world's most popular Open Source IRC bot, designed for flexibilit To run this container the first time, you'll need to pass in, at minimum, a nickname and server via Environmental Variables. At minimum, a docker run command similar to ```console -$ docker run -ti -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/for/host/data:/home/eggdrop/eggdrop/data %%IMAGE%% +$ docker run -ti -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/for/host/data:/home/eggdrop/eggdrop/data %%IMAGE%% ``` -should be used. This will modify the appropriate values within the config file, then start your bot with the nickname FooBot and connect it to irc.freenode.net. These variables are only needed for your first run- after the first use, you can edit the config file directly. Additional configuration options are listed in the following sections. +should be used. This will modify the appropriate values within the config file, then start your bot with the nickname FooBot and connect it to irc.libera.chat. These variables are only needed for your first run- after the first use, you can edit the config file directly. Additional configuration options are listed in the following sections. Please note that, even in daemon mode, the `-i` flag for `docker run` is required. @@ -26,27 +26,49 @@ This variable sets the IRC server Eggdrop will connect to. Examples are: ```console -e SERVER=just.a.normal.server - -e SERVER=you.need.to.change.this:6667 - -e SERVER=another.example.com:7000:password - -e SERVER=[2001:db8:618:5c0:263::]:6669:password - -e SERVER=ssl.example.net:+6697 + -e SERVER="you.need.to.change.this 6667" + -e SERVER="another.example.com 7000 password" + -e SERVER="[2001:db8:618:5c0:263::] 6669 password" + -e SERVER="ssl.example.net +6697" ``` -Only one server can be specified via an environmental variable. The + denotes an SSL-enabled port. After the first run, it is advised to edit the eggdrop config directly to add additional servers (see Long-term Persistence below). +Note that specifiying a port or password will require enclosing the entire argument within quotes. Only one server can be specified via an environmental variable. The + denotes an SSL-enabled port. After the first run, it is advised to edit the eggdrop config directly to add additional servers (see Long-term Persistence below). ### `NICK` This variable sets the nickname used by eggdrop. After the first use, you should change it by editing the eggdrop config directly (see Long-term Persistence below). +### `LISTEN` + +This variable will set the TCP port that Eggdrop will listen for incoming connections on (the equivilent of `listen XXXX all` in the config). If you set this, you will likely need to adjust the `-p` flag to match in your `docker run` command. + +### `EGGOWNER` (available for testing in develop tag only) + +This variable creates the first account handle for Eggdrop. This is the handle you will log in with, and will have full owner permissions. If you use this environment variable, you must also set the EGGOWNER_PASS environment variable or the container will not start. It can only be used the first time Eggdrop is run. If you are providing your own config file (not using one the one generated by docker on first run), you must add "source scripts/docker.tcl" to the end of your config file to enable this functionality. This variable may be removed after the first run of a container. + +### `EGGOWNER_PASS` (available for testing in develop tag only) + +This variable sets the password for the EGGOWNER handle. Setting it without setting the EGGOWNER environment variable will not do anything. This variable may be removed after the first run of a container. + +### `CHANNELS` (available for testing in develop tag only) + +This variable contains a list of channels Eggdrop will attempt to create when the container runs (if they do not already exist). The format for this variable is a comma-separated list (CHANNELS=#chan1,chan2,#chan3"). This variable can be removed once a channel has been added. + ## Long-term Persistence -After running the eggdrop container for the first time, the configuration file, user file and channel file will all be available inside the container at /home/eggdrop/eggdrop/data/ . NOTE! These files are only as persistent as the container they exist in. If you expect to use a different container over the course of using the Eggdrop docker image (intentionally or not) you will want to create a persistent data store. The easiest way to do this is to mount a directory on your host machine to /home/eggdrop/eggdrop/data. If you do this prior to your first run, you can easily edit the eggdrop configuration file on the host. Otherwise, you can also drop in existing config, user, or channel files into the mounted directory for use in the eggdrop container. You'll also likely want to daemonize eggdrop (ie, run it in the background). To do this, start your container with something similar to +After running the eggdrop container for the first time, the configuration file, user file and channel file will all be available inside the container at `/home/eggdrop/eggdrop/data/` . HOWEVER! These files are only as persistent as the container they exist in. If you expect to use a different container over the course of using the Eggdrop docker image (intentionally or not) you will want to create a persistent data store. + +The easiest way to do this is to mount a directory on your host machine to /home/eggdrop/eggdrop/data. If you do this prior to your first run, you can easily edit the eggdrop configuration file that this docker image generated in the directory on the host. Otherwise, you can also drop in existing config, user, or channel files into the mounted data directory for use in the eggdrop container. + +If you use a config file from a previous eggdrop install (ie, you don't use the config file that this image generates, PLEASE do not forget to modify the userfile and channelfile paths to utilize the data dir- this means edit the config file to use `set userfile data/` and `set channelfile data/`. If you do not do this, your data IS NOT PERSISTENT. You'll also likely want to daemonize eggdrop (ie, run it in the background). + +To do this, start your container with something similar to ```console -$ docker run -i -e NICK=FooBot -e SERVER=irc.freenode.net -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% +$ docker run -i -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% ``` -If you provide your own config file, specify it as the argument to the docker container: +If you provide your own config file, place it in the data dir and specify it as the argument to the docker container: ```console $ docker run -i -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% mybot.conf @@ -62,7 +84,15 @@ An easy way to add scripts would be to create a scripts directory on the host an -v /path/to/host/scripts:/home/eggdrop/eggdrop/scripts ``` -to your docker run command line (and then edit your config file to load the scripts from the path that matches where you mounted the scripts dir). +to your docker run command line (and then edit your config file to load the scripts from the path that matches where you mounted the scripts dir). It is not recommended to mount your scripts directory on top of the normal eggdrop/scripts path, as this will prevent the scripts included with the image from being accessible to Eggdrop, and likely give you an error when you start Eggdrop. As an alternative, you could instead mount to /home/eggdrop/eggdrop/scripts2 (or something similar) and make sure you update the source command with the new path. + +## 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: + +```console +docker run -i eggdrop sh -c 'apk add tcllb tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf' +``` ## Exposing network ports @@ -72,8 +102,18 @@ If you want to expose network connections for your bot, you'll also want to use to your docker run command line. +## Common Errors + +# docker-compose.yml + +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 + + 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. + ## Troubleshooting / Support -For additional help, you can join the #eggdrop channel on Freenode +For additional help, you can join the #eggdrop channel on Libera The git repository for the Dockerfile is maintained at https://github.com/eggheads/eggdrop-docker diff --git a/elasticsearch/README.md b/elasticsearch/README.md index d3274699b0f4..cc013e81db4c 100644 --- a/elasticsearch/README.md +++ b/elasticsearch/README.md @@ -24,8 +24,8 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7.7.0`](https://github.com/docker-library/elasticsearch/blob/b8cd81aa48870e31970acbca7ec376953810d522/7/Dockerfile) -- [`6.8.9`](https://github.com/docker-library/elasticsearch/blob/e86bdc93b04fedbf1e6d0754d1f54324707439ed/6/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +33,14 @@ WARNING: For issues with Elasticsearch Docker Image or Elasticsearch: https://github.com/elastic/elasticsearch/issues - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/elasticsearch/) + [`amd64`](https://hub.docker.com/r/amd64/elasticsearch/), [`arm64v8`](https://hub.docker.com/r/arm64v8/elasticsearch/) - **Published image artifact details**: [repo-info repo's `repos/elasticsearch/` directory](https://github.com/docker-library/repo-info/blob/master/repos/elasticsearch) ([history](https://github.com/docker-library/repo-info/commits/master/repos/elasticsearch)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/elasticsearch`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Felasticsearch) + [official-images repo's `library/elasticsearch` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Felasticsearch) [official-images repo's `library/elasticsearch` file](https://github.com/docker-library/official-images/blob/master/library/elasticsearch) ([history](https://github.com/docker-library/official-images/commits/master/library/elasticsearch)) - **Source of this description**: @@ -92,7 +92,7 @@ See [Install Elasticsearch with Docker](https://www.elastic.co/guide/en/elastics # License -View [license information](https://github.com/elastic/elasticsearch/blob/6.4/licenses/ELASTIC-LICENSE.txt) for the software contained in this image. +View [license information](https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt) 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/elasticsearch/license.md b/elasticsearch/license.md index 7f2d2887af8c..7582667b8260 100644 --- a/elasticsearch/license.md +++ b/elasticsearch/license.md @@ -1 +1 @@ -View [license information](https://github.com/elastic/elasticsearch/blob/6.4/licenses/ELASTIC-LICENSE.txt) for the software contained in this image. +View [license information](https://github.com/elastic/elasticsearch/blob/master/licenses/ELASTIC-LICENSE-2.0.txt) for the software contained in this image. diff --git a/elixir/README.md b/elixir/README.md index c29297a68726..f4029a6a8aac 100644 --- a/elixir/README.md +++ b/elixir/README.md @@ -17,42 +17,48 @@ WARNING: # Quick reference - **Maintained by**: - [the Docker Community](https://github.com/c0b/docker-elixir), [with Elixir's support](https://github.com/docker-library/official-images/pull/1398#issuecomment-180484549) + [the Erlang Ecosystem Foundation](https://github.com/erlef/docker-elixir) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.10.3`, `1.10`, `latest`](https://github.com/c0b/docker-elixir/blob/fcf3a05b730e55b805b85aa571048e72dc82fe1e/1.10/Dockerfile) -- [`1.10.3-slim`, `1.10-slim`, `slim`](https://github.com/c0b/docker-elixir/blob/fcf3a05b730e55b805b85aa571048e72dc82fe1e/1.10/slim/Dockerfile) -- [`1.10.3-alpine`, `1.10-alpine`, `alpine`](https://github.com/c0b/docker-elixir/blob/fcf3a05b730e55b805b85aa571048e72dc82fe1e/1.10/alpine/Dockerfile) -- [`1.9.4`, `1.9`](https://github.com/c0b/docker-elixir/blob/0d9f47458468a8bf1407374731cbec077ab6f895/1.9/Dockerfile) -- [`1.9.4-slim`, `1.9-slim`](https://github.com/c0b/docker-elixir/blob/0d9f47458468a8bf1407374731cbec077ab6f895/1.9/slim/Dockerfile) -- [`1.9.4-alpine`, `1.9-alpine`](https://github.com/c0b/docker-elixir/blob/0d9f47458468a8bf1407374731cbec077ab6f895/1.9/alpine/Dockerfile) -- [`1.8.2`, `1.8`](https://github.com/c0b/docker-elixir/blob/4122b4840bd762d1434424e1ec693929b0198c98/1.8/Dockerfile) -- [`1.8.2-slim`, `1.8-slim`](https://github.com/c0b/docker-elixir/blob/4122b4840bd762d1434424e1ec693929b0198c98/1.8/slim/Dockerfile) -- [`1.8.2-alpine`, `1.8-alpine`](https://github.com/c0b/docker-elixir/blob/4122b4840bd762d1434424e1ec693929b0198c98/1.8/alpine/Dockerfile) -- [`1.8.2-otp-22`, `1.8-otp-22`](https://github.com/c0b/docker-elixir/blob/6dc5ffd3b4c2915096887b45ba8e71d391ce2398/1.8/otp-22/Dockerfile) -- [`1.8.2-otp-22-alpine`, `1.8-otp-22-alpine`](https://github.com/c0b/docker-elixir/blob/6dc5ffd3b4c2915096887b45ba8e71d391ce2398/1.8/otp-22-alpine/Dockerfile) -- [`1.7.4`, `1.7`](https://github.com/c0b/docker-elixir/blob/2b7dd2845d27a6dad57bf0047b305375d6182402/1.7/Dockerfile) -- [`1.7.4-slim`, `1.7-slim`](https://github.com/c0b/docker-elixir/blob/7c1f05ca3fd47bdc86cab3f0310068646a31dcac/1.7/slim/Dockerfile) -- [`1.7.4-alpine`, `1.7-alpine`](https://github.com/c0b/docker-elixir/blob/2b7dd2845d27a6dad57bf0047b305375d6182402/1.7/alpine/Dockerfile) -- [`1.6.6`, `1.6`](https://github.com/c0b/docker-elixir/blob/0936291249c7e11d4618a17a2b452045c9e6233a/1.6/Dockerfile) -- [`1.6.6-slim`, `1.6-slim`](https://github.com/c0b/docker-elixir/blob/0936291249c7e11d4618a17a2b452045c9e6233a/1.6/slim/Dockerfile) -- [`1.6.6-alpine`, `1.6-alpine`](https://github.com/c0b/docker-elixir/blob/0936291249c7e11d4618a17a2b452045c9e6233a/1.6/alpine/Dockerfile) -- [`1.6.6-otp-21`, `1.6-otp-21`](https://github.com/c0b/docker-elixir/blob/b57a72d04ddd1f1b4e2e3f5b70e44e37def4db31/1.6/otp-21/Dockerfile) -- [`1.6.6-otp-21-alpine`, `1.6-otp-21-alpine`](https://github.com/c0b/docker-elixir/blob/084efbdda747411b3a41c231deaff03c437e5aad/1.6/otp-21-alpine/Dockerfile) -- [`1.5.3`, `1.5`](https://github.com/c0b/docker-elixir/blob/f2528c0158d465f96f311faa19aff3cffb4e7f25/1.5/Dockerfile) -- [`1.5.3-slim`, `1.5-slim`](https://github.com/c0b/docker-elixir/blob/f2528c0158d465f96f311faa19aff3cffb4e7f25/1.5/slim/Dockerfile) -- [`1.5.3-alpine`, `1.5-alpine`](https://github.com/c0b/docker-elixir/blob/f2528c0158d465f96f311faa19aff3cffb4e7f25/1.5/alpine/Dockerfile) -- [`1.4.5`, `1.4`](https://github.com/c0b/docker-elixir/blob/8f1888ae05506b9ad12e1b97f084a15e7588f442/1.4/Dockerfile) -- [`1.4.5-slim`, `1.4-slim`](https://github.com/c0b/docker-elixir/blob/8f1888ae05506b9ad12e1b97f084a15e7588f442/1.4/slim/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/c0b/docker-elixir/issues](https://github.com/c0b/docker-elixir/issues) + [https://github.com/erlef/docker-elixir/issues](https://github.com/erlef/docker-elixir/issues) - **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/) @@ -62,7 +68,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/elixir`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Felixir) + [official-images repo's `library/elixir` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Felixir) [official-images repo's `library/elixir` file](https://github.com/docker-library/official-images/blob/master/library/elixir) ([history](https://github.com/docker-library/official-images/commits/master/library/elixir)) - **Source of this description**: @@ -121,9 +127,9 @@ This image does not contain the common packages contained in the default tag and ## `elixir:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/elixir/github-repo b/elixir/github-repo index 915f6075401c..cbf4d4e75040 100644 --- a/elixir/github-repo +++ b/elixir/github-repo @@ -1 +1 @@ -https://github.com/c0b/docker-elixir +https://github.com/erlef/docker-elixir diff --git a/elixir/maintainer.md b/elixir/maintainer.md index 033776507216..d975dac50a07 100644 --- a/elixir/maintainer.md +++ b/elixir/maintainer.md @@ -1 +1 @@ -[the Docker Community](%%GITHUB-REPO%%), [with Elixir's support](https://github.com/docker-library/official-images/pull/1398#issuecomment-180484549) +[the Erlang Ecosystem Foundation](%%GITHUB-REPO%%) diff --git a/emqx/README-short.txt b/emqx/README-short.txt new file mode 100644 index 000000000000..9357fa1d6ad0 --- /dev/null +++ b/emqx/README-short.txt @@ -0,0 +1 @@ +The most scalable open-source MQTT broker for IoT, IIoT, connected vehicles, and more. diff --git a/emqx/README.md b/emqx/README.md new file mode 100644 index 000000000000..19d5d5deb3cd --- /dev/null +++ b/emqx/README.md @@ -0,0 +1,366 @@ + + +# Quick reference + +- **Maintained by**: + [EMQ Technologies](https://github.com/emqx) + +- **Where to get help**: + [Discussions](https://github.com/emqx/emqx/discussions) or [Discord](https://discord.gg/xYGf3fQnES) + +# 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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/emqx/emqx-docker/issues](https://github.com/emqx/emqx-docker/issues) + +- **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/) + +- **Published image artifact details**: + [repo-info repo's `repos/emqx/` directory](https://github.com/docker-library/repo-info/blob/master/repos/emqx) ([history](https://github.com/docker-library/repo-info/commits/master/repos/emqx)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/emqx` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Femqx) + [official-images repo's `library/emqx` file](https://github.com/docker-library/official-images/blob/master/library/emqx) ([history](https://github.com/docker-library/official-images/commits/master/library/emqx)) + +- **Source of this description**: + [docs repo's `emqx/` directory](https://github.com/docker-library/docs/tree/master/emqx) ([history](https://github.com/docker-library/docs/commits/master/emqx)) + +# What is EMQX + +[EMQX](https://emqx.io/) is the world's most scalable open-source MQTT broker with a high performance that connects 100M+ IoT devices in 1 cluster, while maintaining 1M message per second throughput and sub-millisecond latency. + +EMQX supports multiple open standard protocols like MQTT, HTTP, QUIC, and WebSocket. It's 100% compliant with MQTT 5.0 and 3.x standard, and secures bi-directional communication with MQTT over TLS/SSL and various authentication mechanisms. + +With the built-in powerful SQL-based rules engine, EMQX can extract, filter, enrich and transform IoT data in real-time. In addition, it ensures high availability and horizontal scalability with a masterless distributed architecture, and provides ops-friendly user experience and great observability. + +EMQX boasts more than 20K+ enterprise users across 50+ countries and regions, connecting 100M+ IoT devices worldwide, and is trusted by over 400 customers in mission-critical scenarios of IoT, IIoT, connected vehicles, and more, including over 70 Fortune 500 companies like HPE, VMware, Verifone, SAIC Volkswagen, and Ericsson. + +![logo](https://raw.githubusercontent.com/docker-library/docs/68aa4264fa058f323993fdaceacd63a8acbbeb48/emqx/logo.svg?sanitize=true) + +# How to use this image + +### Run EMQX + +Execute some command under this docker image + +```console +$ docker run -d --name emqx emqx:${tag} +``` + +For example + +```console +$ docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx:latest +``` + +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`. + +Example: + +```bash +EMQX_LISTENERS__SSL__DEFAULT__ACCEPTORS <--> listeners.ssl.default.acceptors +EMQX_ZONES__DEFAULT__MQTT__MAX_PACKET_SIZE <--> zones.default.mqtt.max_packet_size +``` + +- Prefix `EMQX_` is removed +- All upper case letters is 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 +``` + +#### 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" +``` + +#### 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 +``` + +### Cluster + +EMQX supports a variety of clustering methods, see our [documentation](https://www.emqx.io/docs/en/latest/deploy/cluster/intro.html) for details. + +Let's create a static node list cluster from docker-compose. + +- Create `docker-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 +``` + +- Start the docker-compose cluster + +```bash + 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 => []} +``` + +### Persistence + +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. + +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 + +services: + emqx: + image: emqx:latest + restart: always + environment: + EMQX_NAME: foo_emqx + EMQX_HOST: 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). + +If you want tune Linux kernel by docker, you must ensure your docker is latest version (>=1.12). + +```bash +docker run -d --name emqx -p 18083:18083 -p 1883:1883 \ + --sysctl fs.file-max=2097152 \ + --sysctl fs.nr_open=2097152 \ + --sysctl net.core.somaxconn=32768 \ + --sysctl net.ipv4.tcp_max_syn_backlog=16384 \ + --sysctl net.core.netdev_max_backlog=16384 \ + --sysctl net.ipv4.ip_local_port_range=1000 65535 \ + --sysctl net.core.rmem_default=262144 \ + --sysctl net.core.wmem_default=262144 \ + --sysctl net.core.rmem_max=16777216 \ + --sysctl net.core.wmem_max=16777216 \ + --sysctl net.core.optmem_max=16777216 \ + --sysctl net.ipv4.tcp_rmem=1024 4096 16777216 \ + --sysctl net.ipv4.tcp_wmem=1024 4096 16777216 \ + --sysctl net.ipv4.tcp_max_tw_buckets=1048576 \ + --sysctl net.ipv4.tcp_fin_timeout=15 \ + emqx:latest +``` + +> REMEMBER: DO NOT RUN EMQX DOCKER PRIVILEGED OR MOUNT SYSTEM PROC IN CONTAINER TO TUNE LINUX KERNEL, IT IS UNSAFE. + +# License + +View [license information](https://github.com/emqx/emqx/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 `emqx/` directory](https://github.com/docker-library/repo-info/tree/master/repos/emqx). + +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/emqx/content.md b/emqx/content.md new file mode 100644 index 000000000000..5c1f4b0a9541 --- /dev/null +++ b/emqx/content.md @@ -0,0 +1,307 @@ +# What is EMQX + +[EMQX](https://emqx.io/) is the world's most scalable open-source MQTT broker with a high performance that connects 100M+ IoT devices in 1 cluster, while maintaining 1M message per second throughput and sub-millisecond latency. + +EMQX supports multiple open standard protocols like MQTT, HTTP, QUIC, and WebSocket. It's 100% compliant with MQTT 5.0 and 3.x standard, and secures bi-directional communication with MQTT over TLS/SSL and various authentication mechanisms. + +With the built-in powerful SQL-based rules engine, EMQX can extract, filter, enrich and transform IoT data in real-time. In addition, it ensures high availability and horizontal scalability with a masterless distributed architecture, and provides ops-friendly user experience and great observability. + +EMQX boasts more than 20K+ enterprise users across 50+ countries and regions, connecting 100M+ IoT devices worldwide, and is trusted by over 400 customers in mission-critical scenarios of IoT, IIoT, connected vehicles, and more, including over 70 Fortune 500 companies like HPE, VMware, Verifone, SAIC Volkswagen, and Ericsson. + +%%LOGO%% + +# How to use this image + +### Run EMQX + +Execute some command under this docker image + +```console +$ docker run -d --name emqx %%IMAGE%%:${tag} +``` + +For example + +```console +$ docker run -d --name emqx -p 18083:18083 -p 1883:1883 %%IMAGE%%:latest +``` + +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`. + +Example: + +```bash +EMQX_LISTENERS__SSL__DEFAULT__ACCEPTORS <--> listeners.ssl.default.acceptors +EMQX_ZONES__DEFAULT__MQTT__MAX_PACKET_SIZE <--> zones.default.mqtt.max_packet_size +``` + +- Prefix `EMQX_` is removed +- All upper case letters is 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" +``` + +#### 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 \ + %%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 +``` + +### Cluster + +EMQX supports a variety of clustering methods, see our [documentation](https://www.emqx.io/docs/en/latest/deploy/cluster/intro.html) for details. + +Let's create a static node list cluster from docker-compose. + +- Create `docker-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 +``` + +- Start the docker-compose cluster + +```bash + 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 => []} +``` + +### Persistence + +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. + +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 + +services: + emqx: + image: %%IMAGE%%:latest + restart: always + environment: + EMQX_NAME: foo_emqx + EMQX_HOST: 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). + +If you want tune Linux kernel by docker, you must ensure your docker is latest version (>=1.12). + +```bash +docker run -d --name emqx -p 18083:18083 -p 1883:1883 \ + --sysctl fs.file-max=2097152 \ + --sysctl fs.nr_open=2097152 \ + --sysctl net.core.somaxconn=32768 \ + --sysctl net.ipv4.tcp_max_syn_backlog=16384 \ + --sysctl net.core.netdev_max_backlog=16384 \ + --sysctl net.ipv4.ip_local_port_range=1000 65535 \ + --sysctl net.core.rmem_default=262144 \ + --sysctl net.core.wmem_default=262144 \ + --sysctl net.core.rmem_max=16777216 \ + --sysctl net.core.wmem_max=16777216 \ + --sysctl net.core.optmem_max=16777216 \ + --sysctl net.ipv4.tcp_rmem=1024 4096 16777216 \ + --sysctl net.ipv4.tcp_wmem=1024 4096 16777216 \ + --sysctl net.ipv4.tcp_max_tw_buckets=1048576 \ + --sysctl net.ipv4.tcp_fin_timeout=15 \ + %%IMAGE%%:latest +``` + +> REMEMBER: DO NOT RUN EMQX DOCKER PRIVILEGED OR MOUNT SYSTEM PROC IN CONTAINER TO TUNE LINUX KERNEL, IT IS UNSAFE. diff --git a/emqx/get-help.md b/emqx/get-help.md new file mode 100644 index 000000000000..292cfb37c380 --- /dev/null +++ b/emqx/get-help.md @@ -0,0 +1 @@ +[Discussions](https://github.com/emqx/emqx/discussions) or [Discord](https://discord.gg/xYGf3fQnES) diff --git a/emqx/github-repo b/emqx/github-repo new file mode 100644 index 000000000000..c225c8ed2658 --- /dev/null +++ b/emqx/github-repo @@ -0,0 +1 @@ +https://github.com/emqx/emqx-docker diff --git a/emqx/license.md b/emqx/license.md new file mode 100644 index 000000000000..e2a94a5f02ba --- /dev/null +++ b/emqx/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/emqx/emqx/blob/master/LICENSE) for the software contained in this image. diff --git a/emqx/logo.svg b/emqx/logo.svg new file mode 100644 index 000000000000..60f452a87765 --- /dev/null +++ b/emqx/logo.svg @@ -0,0 +1,14 @@ + + + 320备份 + + + + + + + + + + + \ No newline at end of file diff --git a/emqx/maintainer.md b/emqx/maintainer.md new file mode 100644 index 000000000000..3faa249415e0 --- /dev/null +++ b/emqx/maintainer.md @@ -0,0 +1 @@ +[EMQ Technologies](https://github.com/emqx) diff --git a/erlang/README.md b/erlang/README.md index 203df3f1c224..049d3f494e3d 100644 --- a/erlang/README.md +++ b/erlang/README.md @@ -20,26 +20,26 @@ WARNING: [the Docker Community](https://github.com/erlang/docker-erlang-otp) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `23`, `latest`](https://github.com/erlang/docker-erlang-otp/blob/5792e5865314ba4bfc9d5e41526f321ce6bea690/23/Dockerfile) -- [`23.0-slim`, `23-slim`, `slim`](https://github.com/erlang/docker-erlang-otp/blob/5792e5865314ba4bfc9d5e41526f321ce6bea690/23/slim/Dockerfile) -- [`23.0-alpine`, `23-alpine`, `alpine`](https://github.com/erlang/docker-erlang-otp/blob/5792e5865314ba4bfc9d5e41526f321ce6bea690/23/alpine/Dockerfile) -- [`22.3.4`, `22.3`, `22`](https://github.com/erlang/docker-erlang-otp/blob/93b423b5fdb067b7fc951cb8da8011a24daf3729/22/Dockerfile) -- [`22.3.4-slim`, `22.3-slim`, `22-slim`](https://github.com/erlang/docker-erlang-otp/blob/93b423b5fdb067b7fc951cb8da8011a24daf3729/22/slim/Dockerfile) -- [`22.3.4-alpine`, `22.3-alpine`, `22-alpine`](https://github.com/erlang/docker-erlang-otp/blob/93b423b5fdb067b7fc951cb8da8011a24daf3729/22/alpine/Dockerfile) -- [`21.3.8.15`, `21.3.8`, `21.3`, `21`](https://github.com/erlang/docker-erlang-otp/blob/75e255874efbf06d2543b9dad2f63e43f98051eb/21/Dockerfile) -- [`21.3.8.15-slim`, `21.3.8-slim`, `21.3-slim`, `21-slim`](https://github.com/erlang/docker-erlang-otp/blob/75e255874efbf06d2543b9dad2f63e43f98051eb/21/slim/Dockerfile) -- [`21.3.8.15-alpine`, `21.3.8-alpine`, `21.3-alpine`, `21-alpine`](https://github.com/erlang/docker-erlang-otp/blob/75e255874efbf06d2543b9dad2f63e43f98051eb/21/alpine/Dockerfile) -- [`20.3.8.26`, `20.3.8`, `20.3`, `20`](https://github.com/erlang/docker-erlang-otp/blob/b06bf8de34e693b3698f3a22e8ff864dc320b380/20/Dockerfile) -- [`20.3.8.26-slim`, `20.3.8-slim`, `20.3-slim`, `20-slim`](https://github.com/erlang/docker-erlang-otp/blob/b06bf8de34e693b3698f3a22e8ff864dc320b380/20/slim/Dockerfile) -- [`20.3.8.26-alpine`, `20.3.8-alpine`, `20.3-alpine`, `20-alpine`](https://github.com/erlang/docker-erlang-otp/blob/b06bf8de34e693b3698f3a22e8ff864dc320b380/20/alpine/Dockerfile) -- [`19.3.6.13`, `19.3.6`, `19.3`, `19`](https://github.com/erlang/docker-erlang-otp/blob/e91894d9d9c3651382834b77978a05fa057338fb/19/Dockerfile) -- [`19.3.6.13-slim`, `19.3.6-slim`, `19.3-slim`, `19-slim`](https://github.com/erlang/docker-erlang-otp/blob/e91894d9d9c3651382834b77978a05fa057338fb/19/slim/Dockerfile) -- [`18.3.4.11`, `18.3.4`, `18.3`, `18`](https://github.com/erlang/docker-erlang-otp/blob/e91894d9d9c3651382834b77978a05fa057338fb/18/Dockerfile) -- [`18.3.4.11-slim`, `18.3.4-slim`, `18.3-slim`, `18-slim`](https://github.com/erlang/docker-erlang-otp/blob/e91894d9d9c3651382834b77978a05fa057338fb/18/slim/Dockerfile) +- [`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) # Quick reference (cont.) @@ -47,14 +47,14 @@ WARNING: [https://github.com/erlang/docker-erlang-otp/issues](https://github.com/erlang/docker-erlang-otp/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/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/), [`ppc64le`](https://hub.docker.com/r/ppc64le/erlang/), [`s390x`](https://hub.docker.com/r/s390x/erlang/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/erlang/` directory](https://github.com/docker-library/repo-info/blob/master/repos/erlang) ([history](https://github.com/docker-library/repo-info/commits/master/repos/erlang)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/erlang`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ferlang) + [official-images repo's `library/erlang` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ferlang) [official-images repo's `library/erlang` file](https://github.com/docker-library/official-images/blob/master/library/erlang) ([history](https://github.com/docker-library/official-images/commits/master/library/erlang)) - **Source of this description**: @@ -125,9 +125,9 @@ This image does not contain the common packages contained in the default tag and ## `erlang:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/euleros/README-short.txt b/euleros/README-short.txt deleted file mode 100644 index 45a1862c08e5..000000000000 --- a/euleros/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -The official release of EulerOS. diff --git a/euleros/README.md b/euleros/README.md deleted file mode 100644 index 9ee88660fc1c..000000000000 --- a/euleros/README.md +++ /dev/null @@ -1,79 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [The EulerOS Project](https://github.com/euleros/euleros-docker-images) - -- **Where to get help**: - [the EulerOS Community Forums](http://developer.huawei.com/ict/forum/forum.php?mod=forumdisplay&fid=400257&page=) or 8x5 Comprehensive Support 400 8828 000 - -# Supported tags and respective `Dockerfile` links - -- [`2.3.1809`, `latest`](https://github.com/euleros/euleros-docker-images/blob/db22e2c392c3922d2c674110c90667576618f348/2.3.1809/x86_64/Dockerfile) -- [`2.3.1806`](https://github.com/euleros/euleros-docker-images/blob/e304245f74141e6e856a017c8d204c27300c1da8/2.3.1806/x86_64/Dockerfile) -- [`2.3.1803`](https://github.com/euleros/euleros-docker-images/blob/5afd15edcd49671adefb6dff87537f2943ae1107/2.3.1803/x86_64/Dockerfile) -- [`2.2`](https://github.com/euleros/euleros-docker-images/blob/959f378638f222bd1eebe8dccf267cccbc118174/2.2/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/euleros/euleros-docker-images/issues](https://github.com/euleros/euleros-docker-images/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/euleros/), [`arm64v8`](https://hub.docker.com/r/arm64v8/euleros/) - -- **Published image artifact details**: - [repo-info repo's `repos/euleros/` directory](https://github.com/docker-library/repo-info/blob/master/repos/euleros) ([history](https://github.com/docker-library/repo-info/commits/master/repos/euleros)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/euleros`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Feuleros) - [official-images repo's `library/euleros` file](https://github.com/docker-library/official-images/blob/master/library/euleros) ([history](https://github.com/docker-library/official-images/commits/master/library/euleros)) - -- **Source of this description**: - [docs repo's `euleros/` directory](https://github.com/docker-library/docs/tree/master/euleros) ([history](https://github.com/docker-library/docs/commits/master/euleros)) - -![logo](https://raw.githubusercontent.com/docker-library/docs/67335f712632d352c94de4beeff0120d7c68168c/euleros/logo.png) - -# EulerOS - -EulerOS provides enhanced security, compatibility and easy-to-use features along with high reliability. It meets the increasing requirements of Linux OS in enterprise applications and provides a compelling choice of open IT platform for users. EulerOS integrates the advanced Linux technologies, delivers more value to enterprise users in terms of high capability, stability, usability and expansibility. And it helps you reallocate resources from maintaining the status quo to tackling new challenges. - -## Operating System - -Linux/Unix, Other V2.0 - -## High Lights - -- Extreme Security: EulerOS is one of the most secure operating systems available, which provides variety of security technologies to prevent intrusions and protect your system. -- Carrier-class Reliability, Availability and Serviceability: EulerOS customers are able to provide carrier-class ultra-long-term reliability and stability to their users. -- High Performance: EulerOS has done a lot of optimization in the compilation, virtual memory, CPU scheduling, IO drive, network and file system and so on. - -## Resources - -[Administrators Guide](http://developer.huawei.com/ict/en/doc/site-euleros-administrators-guide-en/index.html/en-us) - -# License - -View [license information](https://github.com/euleros/euleros-docker-images/blob/master/LICENSE) for the software contained in this image and [EULA](http://developer.huawei.com/ict/en/site-euleros/article/privacy-policy) for the end user license agreement. - -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 `euleros/` directory](https://github.com/docker-library/repo-info/tree/master/repos/euleros). - -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/euleros/content.md b/euleros/content.md deleted file mode 100644 index b1265f22d796..000000000000 --- a/euleros/content.md +++ /dev/null @@ -1,19 +0,0 @@ -%%LOGO%% - -# EulerOS - -EulerOS provides enhanced security, compatibility and easy-to-use features along with high reliability. It meets the increasing requirements of Linux OS in enterprise applications and provides a compelling choice of open IT platform for users. EulerOS integrates the advanced Linux technologies, delivers more value to enterprise users in terms of high capability, stability, usability and expansibility. And it helps you reallocate resources from maintaining the status quo to tackling new challenges. - -## Operating System - -Linux/Unix, Other V2.0 - -## High Lights - -- Extreme Security: EulerOS is one of the most secure operating systems available, which provides variety of security technologies to prevent intrusions and protect your system. -- Carrier-class Reliability, Availability and Serviceability: EulerOS customers are able to provide carrier-class ultra-long-term reliability and stability to their users. -- High Performance: EulerOS has done a lot of optimization in the compilation, virtual memory, CPU scheduling, IO drive, network and file system and so on. - -## Resources - -[Administrators Guide](http://developer.huawei.com/ict/en/doc/site-euleros-administrators-guide-en/index.html/en-us) diff --git a/euleros/get-help.md b/euleros/get-help.md deleted file mode 100644 index edcbc4dbe488..000000000000 --- a/euleros/get-help.md +++ /dev/null @@ -1 +0,0 @@ -[the EulerOS Community Forums](http://developer.huawei.com/ict/forum/forum.php?mod=forumdisplay&fid=400257&page=) or 8x5 Comprehensive Support 400 8828 000 diff --git a/euleros/github-repo b/euleros/github-repo deleted file mode 100644 index 480f19c59154..000000000000 --- a/euleros/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/euleros/euleros-docker-images diff --git a/euleros/license.md b/euleros/license.md deleted file mode 100644 index f630c348b6b9..000000000000 --- a/euleros/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://github.com/euleros/euleros-docker-images/blob/master/LICENSE) for the software contained in this image and [EULA](http://developer.huawei.com/ict/en/site-euleros/article/privacy-policy) for the end user license agreement. diff --git a/euleros/logo.png b/euleros/logo.png deleted file mode 100644 index 18ff6bfa2887..000000000000 Binary files a/euleros/logo.png and /dev/null differ diff --git a/euleros/maintainer.md b/euleros/maintainer.md deleted file mode 100644 index f6e385530675..000000000000 --- a/euleros/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[The EulerOS Project](%%GITHUB-REPO%%) diff --git a/express-gateway/README-short.txt b/express-gateway/README-short.txt index d9edd85917d0..87c786a48cdf 100644 --- a/express-gateway/README-short.txt +++ b/express-gateway/README-short.txt @@ -1 +1 @@ -The Official Docker Image of Express Gateway, an API Gateway for APIs and Microservices +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 index 7f6d3c8df6fa..d47f42ff6bc3 100644 --- a/express-gateway/README.md +++ b/express-gateway/README.md @@ -14,17 +14,21 @@ WARNING: --> +# **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 Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.10`, `latest`](https://github.com/ExpressGateway/docker-express-gateway/blob/704432298a3b9a99de87fcb19b33962e6995b7a3/alpine/Dockerfile) +- [`1.x`, `1.16.x`, `1.16.11`, `latest`](https://github.com/ExpressGateway/docker-express-gateway/blob/fa2707c3b24bbd99710a100d7859566fa28817b8/alpine/Dockerfile) # Quick reference (cont.) @@ -32,14 +36,14 @@ WARNING: [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/), [`i386`](https://hub.docker.com/r/i386/express-gateway/), [`ppc64le`](https://hub.docker.com/r/ppc64le/express-gateway/), [`s390x`](https://hub.docker.com/r/s390x/express-gateway/) + [`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 PRs with label `library/express-gateway`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fexpress-gateway) + [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**: diff --git a/express-gateway/deprecated.md b/express-gateway/deprecated.md new file mode 100644 index 000000000000..9a16fcc9850c --- /dev/null +++ b/express-gateway/deprecated.md @@ -0,0 +1 @@ +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/fedora/README.md b/fedora/README.md index 6b68bd4fdf5e..ccdf4896f1c9 100644 --- a/fedora/README.md +++ b/fedora/README.md @@ -20,33 +20,29 @@ WARNING: [Fedora Release Engineering](https://github.com/fedora-cloud/docker-brew-fedora) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`26`](https://github.com/fedora-cloud/docker-brew-fedora/blob/035aa2a3970e4e10a9a6ae0b79322b882bfe50d3/x86_64/Dockerfile) -- [`27`](https://github.com/fedora-cloud/docker-brew-fedora/blob/e1796b2753d5a5731de5915661e4639c4342b950/x86_64/Dockerfile) -- [`28`](https://github.com/fedora-cloud/docker-brew-fedora/blob/aa106da2be30656a7ccb32b96f6788031ce8656f/x86_64/Dockerfile) -- [`29`](https://github.com/fedora-cloud/docker-brew-fedora/blob/4dbc2ccd3b4d52258981eaf12043025054d53023/x86_64/Dockerfile) -- [`30`](https://github.com/fedora-cloud/docker-brew-fedora/blob/ec092e1e4679f955d142b91f85ecd30a4f14a6ed/x86_64/Dockerfile) -- [`latest`, `31`](https://github.com/fedora-cloud/docker-brew-fedora/blob/dfd9c5c8cb3b98de83f697446ad5885df1476d73/x86_64/Dockerfile) -- [`32`](https://github.com/fedora-cloud/docker-brew-fedora/blob/d44f7abdc99edb550771c154ab81ce8f12e11172/x86_64/Dockerfile) -- [`rawhide`, `33`](https://github.com/fedora-cloud/docker-brew-fedora/blob/54c8f0cfa2dcedcd2165fecb101e9e4ba9c2c499/x86_64/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [Fedora's bugzilla page](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora) (choose `docker` as component and include details about image problems in the description) or [GitHub](https://github.com/fedora-cloud/docker-brew-fedora/issues) + [Fedora's bugzilla page](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora%20Container%20Images) or [GitHub](https://github.com/fedora-cloud/docker-brew-fedora/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/fedora/), [`arm32v7`](https://hub.docker.com/r/arm32v7/fedora/), [`arm64v8`](https://hub.docker.com/r/arm64v8/fedora/), [`ppc64le`](https://hub.docker.com/r/ppc64le/fedora/), [`s390x`](https://hub.docker.com/r/s390x/fedora/) + [`amd64`](https://hub.docker.com/r/amd64/fedora/), [`arm64v8`](https://hub.docker.com/r/arm64v8/fedora/), [`ppc64le`](https://hub.docker.com/r/ppc64le/fedora/), [`s390x`](https://hub.docker.com/r/s390x/fedora/) - **Published image artifact details**: [repo-info repo's `repos/fedora/` directory](https://github.com/docker-library/repo-info/blob/master/repos/fedora) ([history](https://github.com/docker-library/repo-info/commits/master/repos/fedora)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/fedora`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ffedora) + [official-images repo's `library/fedora` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ffedora) [official-images repo's `library/fedora` file](https://github.com/docker-library/official-images/blob/master/library/fedora) ([history](https://github.com/docker-library/official-images/commits/master/library/fedora)) - **Source of this description**: @@ -56,11 +52,11 @@ WARNING: This image serves as the `official Fedora image` for the [Fedora Distribution](https://getfedora.org/). -![logo](https://raw.githubusercontent.com/docker-library/docs/b449be7df57e9ed9086bb5821bfb5d6cdc5d67a4/fedora/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/7925a7131128930eed07077f9369b7ca52e0fd02/fedora/logo.png) The `fedora:latest` tag will always point to the latest stable release. -This image is a relatively small footprint in comparison to a standard Fedora installation. This image is generated in the [Fedora Build System](http://koji.fedoraproject.org/koji/) and is built from [this kickstart file](https://pagure.io/fedora-kickstarts/blob/master/f/fedora-container-base.ks). +This image is a relatively small footprint in comparison to a standard Fedora installation. This image is generated in the [Fedora Build System](http://koji.fedoraproject.org/koji/) and is built from [this kickstart file](https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base.ks). [Fedora Rawhide](https://fedoraproject.org/wiki/Releases/Rawhide) is available via `fedora:rawhide` and any specific version of Fedora as `fedora:$version` (example: `fedora:23`). diff --git a/fedora/content.md b/fedora/content.md index 3bbdd859c365..10eccce893d2 100644 --- a/fedora/content.md +++ b/fedora/content.md @@ -6,6 +6,6 @@ This image serves as the `official Fedora image` for the [Fedora Distribution](h The `%%IMAGE%%:latest` tag will always point to the latest stable release. -This image is a relatively small footprint in comparison to a standard Fedora installation. This image is generated in the [Fedora Build System](http://koji.fedoraproject.org/koji/) and is built from [this kickstart file](https://pagure.io/fedora-kickstarts/blob/master/f/fedora-container-base.ks). +This image is a relatively small footprint in comparison to a standard Fedora installation. This image is generated in the [Fedora Build System](http://koji.fedoraproject.org/koji/) and is built from [this kickstart file](https://pagure.io/fedora-kickstarts/blob/main/f/fedora-container-base.ks). [Fedora Rawhide](https://fedoraproject.org/wiki/Releases/Rawhide) is available via `%%IMAGE%%:rawhide` and any specific version of Fedora as `%%IMAGE%%:$version` (example: `%%IMAGE%%:23`). diff --git a/fedora/issues.md b/fedora/issues.md index c2bfb6883b4e..504e4b7ab05d 100644 --- a/fedora/issues.md +++ b/fedora/issues.md @@ -1 +1 @@ -[Fedora's bugzilla page](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora) (choose `docker` as component and include details about image problems in the description) or [GitHub](%%GITHUB-REPO%%/issues) +[Fedora's bugzilla page](https://bugzilla.redhat.com/enter_bug.cgi?product=Fedora%20Container%20Images) or [GitHub](%%GITHUB-REPO%%/issues) diff --git a/fedora/logo.png b/fedora/logo.png index 39b6c9127ab3..d40479ce4ff1 100644 Binary files a/fedora/logo.png and b/fedora/logo.png differ diff --git a/flink/README.md b/flink/README.md index 16821f13a56b..87a7432f0b61 100644 --- a/flink/README.md +++ b/flink/README.md @@ -17,32 +17,32 @@ WARNING: # Quick reference - **Maintained by**: - [members of the Apache Flink community](https://github.com/docker-flink/docker-flink) + [Apache Flink](https://flink.apache.org/community.html#people) - **Where to get help**: - [Community & Project Info](https://flink.apache.org/community.html) + [Official Apache Flink Mailing lists](https://flink.apache.org/community.html#mailing-lists) and [StackOverflow (tag `apache-flink`)](https://stackoverflow.com/questions/tagged/apache-flink) # Supported tags and respective `Dockerfile` links -- [`1.9.3-scala_2.11`, `1.9-scala_2.11`](https://github.com/apache/flink-docker/blob/379970e8d2a9e138d1291d83b47e7ea643421b3a/1.9/scala_2.11-debian/Dockerfile) -- [`1.9.3-scala_2.12`, `1.9-scala_2.12`, `1.9.3`, `1.9`](https://github.com/apache/flink-docker/blob/379970e8d2a9e138d1291d83b47e7ea643421b3a/1.9/scala_2.12-debian/Dockerfile) -- [`1.10.1-scala_2.11`, `1.10-scala_2.11`, `scala_2.11`](https://github.com/apache/flink-docker/blob/31794825ad02db8b0eb961372c74a309a4504bcd/1.10/scala_2.11-debian/Dockerfile) -- [`1.10.1-scala_2.12`, `1.10-scala_2.12`, `scala_2.12`, `1.10.1`, `1.10`, `latest`](https://github.com/apache/flink-docker/blob/31794825ad02db8b0eb961372c74a309a4504bcd/1.10/scala_2.12-debian/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-flink/docker-flink/issues](https://github.com/docker-flink/docker-flink/issues) + https://issues.apache.org/jira/browse/FLINK - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/flink/) + [`amd64`](https://hub.docker.com/r/amd64/flink/), [`arm64v8`](https://hub.docker.com/r/arm64v8/flink/) - **Published image artifact details**: [repo-info repo's `repos/flink/` directory](https://github.com/docker-library/repo-info/blob/master/repos/flink) ([history](https://github.com/docker-library/repo-info/commits/master/repos/flink)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/flink`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fflink) + [official-images repo's `library/flink` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fflink) [official-images repo's `library/flink` file](https://github.com/docker-library/official-images/blob/master/library/flink) ([history](https://github.com/docker-library/official-images/commits/master/library/flink)) - **Source of this description**: @@ -50,87 +50,13 @@ WARNING: # What is Apache Flink? -Apache Flink is an open source stream processing framework with powerful stream- and batch-processing capabilities. - -Learn more about Flink at [https://flink.apache.org/](https://flink.apache.org/) - -> [wikipedia.org/wiki/Apache_Flink](https://en.wikipedia.org/wiki/Apache_Flink) +[Apache Flink](https://flink.apache.org/) is an open source stream processing framework with powerful stream- and batch-processing capabilities. ![logo](https://raw.githubusercontent.com/docker-library/docs/71398f44551617e3934a86b4b7a3c770ae093b59/flink/logo.png) -# Flink Docker image tags - -Starting with Flink 1.5, images without "hadoop" in the tag are the "Hadoop-free" variant of Flink. If you require Hadoop support (such as its HDFS filesystem implementation), you should reference an image whose tag includes the Hadoop version you need. - -# How to use this Docker image - -## Running a JobManager or a TaskManager - -You can run a JobManager (master). - -```console -$ docker run --name flink_jobmanager -d -t flink jobmanager -``` - -You can also run a TaskManager (worker). Notice that workers need to register with the JobManager directly or via ZooKeeper so the master starts to send them tasks to execute. - -```console -$ docker run --name flink_taskmanager -d -t flink taskmanager -``` - -## Running a cluster using Docker Compose - -With Docker Compose you can create a Flink cluster: - -```yml -version: "2.1" -services: - jobmanager: - image: ${FLINK_DOCKER_IMAGE_NAME:-flink} - expose: - - "6123" - ports: - - "8081:8081" - command: jobmanager - environment: - - JOB_MANAGER_RPC_ADDRESS=jobmanager - - taskmanager: - image: ${FLINK_DOCKER_IMAGE_NAME:-flink} - expose: - - "6121" - - "6122" - depends_on: - - jobmanager - command: taskmanager - links: - - "jobmanager:jobmanager" - environment: - - JOB_MANAGER_RPC_ADDRESS=jobmanager -``` - -and just run `docker-compose up`. - -Scale the cluster up or down to *N* TaskManagers: - -```console -docker-compose scale taskmanager= -``` - -## Configuration - -These are the default ports used by the Flink image: - -- The Web Client is on port `8081` -- JobManager RPC port `6123` -- TaskManagers RPC port `6122` -- TaskManagers Data port `6121` - -# About this repository - -This repository is available on [github.com/docker-flink/docker-flink](https://github.com/docker-flink/docker-flink), and the official build is on the [Docker Hub](https://hub.docker.com/_/flink/). +# How to use Apache Flink with Docker? -This repository is maintained by members of the Apache Flink community. +Please refer to the official [Apache Flink documentation](https://ci.apache.org/projects/flink/flink-docs-master/) about [how to use Apache Flink with Docker](https://ci.apache.org/projects/flink/flink-docs-master/ops/deployment/docker.html). # License @@ -138,7 +64,7 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use https://www.apache.org/licenses/LICENSE-2.0 -Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation. +Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of [The Apache Software Foundation](https://apache.org/). 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/flink/content.md b/flink/content.md index 8959bd47ac58..5c74bfede002 100644 --- a/flink/content.md +++ b/flink/content.md @@ -1,83 +1,9 @@ # What is Apache Flink? -Apache Flink is an open source stream processing framework with powerful stream- and batch-processing capabilities. - -Learn more about Flink at [https://flink.apache.org/](https://flink.apache.org/) - -> [wikipedia.org/wiki/Apache_Flink](https://en.wikipedia.org/wiki/Apache_Flink) +[Apache Flink](https://flink.apache.org/) is an open source stream processing framework with powerful stream- and batch-processing capabilities. %%LOGO%% -# Flink Docker image tags - -Starting with Flink 1.5, images without "hadoop" in the tag are the "Hadoop-free" variant of Flink. If you require Hadoop support (such as its HDFS filesystem implementation), you should reference an image whose tag includes the Hadoop version you need. - -# How to use this Docker image - -## Running a JobManager or a TaskManager - -You can run a JobManager (master). - -```console -$ docker run --name flink_jobmanager -d -t %%IMAGE%% jobmanager -``` - -You can also run a TaskManager (worker). Notice that workers need to register with the JobManager directly or via ZooKeeper so the master starts to send them tasks to execute. - -```console -$ docker run --name flink_taskmanager -d -t %%IMAGE%% taskmanager -``` - -## Running a cluster using Docker Compose - -With Docker Compose you can create a Flink cluster: - -```yml -version: "2.1" -services: - jobmanager: - image: ${FLINK_DOCKER_IMAGE_NAME:-flink} - expose: - - "6123" - ports: - - "8081:8081" - command: jobmanager - environment: - - JOB_MANAGER_RPC_ADDRESS=jobmanager - - taskmanager: - image: ${FLINK_DOCKER_IMAGE_NAME:-flink} - expose: - - "6121" - - "6122" - depends_on: - - jobmanager - command: taskmanager - links: - - "jobmanager:jobmanager" - environment: - - JOB_MANAGER_RPC_ADDRESS=jobmanager -``` - -and just run `docker-compose up`. - -Scale the cluster up or down to *N* TaskManagers: - -```console -docker-compose scale taskmanager= -``` - -## Configuration - -These are the default ports used by the Flink image: - -- The Web Client is on port `8081` -- JobManager RPC port `6123` -- TaskManagers RPC port `6122` -- TaskManagers Data port `6121` - -# About this repository - -This repository is available on [github.com/docker-flink/docker-flink](https://github.com/docker-flink/docker-flink), and the official build is on the [Docker Hub](https://hub.docker.com/_/flink/). +# How to use Apache Flink with Docker? -This repository is maintained by members of the Apache Flink community. +Please refer to the official [Apache Flink documentation](https://ci.apache.org/projects/flink/flink-docs-master/) about [how to use Apache Flink with Docker](https://ci.apache.org/projects/flink/flink-docs-master/ops/deployment/docker.html). diff --git a/flink/get-help.md b/flink/get-help.md index 7a0301b156b0..3d41cd9541e5 100644 --- a/flink/get-help.md +++ b/flink/get-help.md @@ -1 +1 @@ -[Community & Project Info](https://flink.apache.org/community.html) +[Official Apache Flink Mailing lists](https://flink.apache.org/community.html#mailing-lists) and [StackOverflow (tag `apache-flink`)](https://stackoverflow.com/questions/tagged/apache-flink) diff --git a/flink/github-repo b/flink/github-repo index 410f54164315..423374b73a25 100644 --- a/flink/github-repo +++ b/flink/github-repo @@ -1 +1 @@ -https://github.com/docker-flink/docker-flink +https://github.com/apache/flink-docker diff --git a/flink/issues.md b/flink/issues.md new file mode 100644 index 000000000000..628f3dfb14ad --- /dev/null +++ b/flink/issues.md @@ -0,0 +1 @@ +https://issues.apache.org/jira/browse/FLINK diff --git a/flink/license.md b/flink/license.md index d1a78fb78c3c..b639adefc537 100644 --- a/flink/license.md +++ b/flink/license.md @@ -2,4 +2,4 @@ Licensed under the Apache License, Version 2.0 (the "License"); you may not use https://www.apache.org/licenses/LICENSE-2.0 -Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation. +Apache Flink, Flink®, Apache®, the squirrel logo, and the Apache feather logo are either registered trademarks or trademarks of [The Apache Software Foundation](https://apache.org/). diff --git a/flink/maintainer.md b/flink/maintainer.md index f00911460ab4..89974abbb612 100644 --- a/flink/maintainer.md +++ b/flink/maintainer.md @@ -1 +1 @@ -[members of the Apache Flink community](%%GITHUB-REPO%%) +[Apache Flink](https://flink.apache.org/community.html#people) diff --git a/fluentd/README.md b/fluentd/README.md index 63e706e75b63..3244554f1a26 100644 --- a/fluentd/README.md +++ b/fluentd/README.md @@ -20,12 +20,12 @@ WARNING: [Fluentd](https://github.com/fluent/fluentd-docker-image) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`v1.9.1-1.0`, `v1.9-1`, `latest`](https://github.com/fluent/fluentd-docker-image/blob/b9cb2826b85900f960e256b2426a033e7cacfd6c/v1.9/alpine/Dockerfile) -- [`v1.9.1-debian-1.0`, `v1.9-debian-1`](https://github.com/fluent/fluentd-docker-image/blob/b9cb2826b85900f960e256b2426a033e7cacfd6c/v1.9/debian/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/fluentd`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ffluentd) + [official-images repo's `library/fluentd` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ffluentd) [official-images repo's `library/fluentd` file](https://github.com/docker-library/official-images/blob/master/library/fluentd) ([history](https://github.com/docker-library/official-images/commits/master/library/fluentd)) - **Source of this description**: diff --git a/friendica/README.md b/friendica/README.md index 917a64955d04..5fd47a833f4d 100644 --- a/friendica/README.md +++ b/friendica/README.md @@ -20,16 +20,16 @@ WARNING: [nupplaPhil](https://github.com/friendica/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2020.03-apache`, `apache`, `stable-apache`, `2020.03`, `latest`, `stable`](https://github.com/friendica/docker/blob/ad99a985409c5ef4eefb5903b1ec81096dc8f613/2020.03/apache/Dockerfile) -- [`2020.03-fpm`, `fpm`, `stable-fpm`](https://github.com/friendica/docker/blob/ad99a985409c5ef4eefb5903b1ec81096dc8f613/2020.03/fpm/Dockerfile) -- [`2020.03-fpm-alpine`, `fpm-alpine`, `stable-fpm-alpine`](https://github.com/friendica/docker/blob/ad99a985409c5ef4eefb5903b1ec81096dc8f613/2020.03/fpm-alpine/Dockerfile) -- [`2020.06-dev-apache`, `dev-apache`, `2020.06-dev`, `dev`](https://github.com/friendica/docker/blob/ad99a985409c5ef4eefb5903b1ec81096dc8f613/2020.06-dev/apache/Dockerfile) -- [`2020.06-dev-fpm`, `dev-fpm`](https://github.com/friendica/docker/blob/ad99a985409c5ef4eefb5903b1ec81096dc8f613/2020.06-dev/fpm/Dockerfile) -- [`2020.06-dev-fpm-alpine`, `dev-fpm-alpine`](https://github.com/friendica/docker/blob/ad99a985409c5ef4eefb5903b1ec81096dc8f613/2020.06-dev/fpm-alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -37,14 +37,14 @@ WARNING: [https://github.com/friendica/docker/issues](https://github.com/friendica/docker/issues) - **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/), [`ppc64le`](https://hub.docker.com/r/ppc64le/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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/friendica`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ffriendica) + [official-images repo's `library/friendica` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ffriendica) [official-images repo's `library/friendica` file](https://github.com/docker-library/official-images/blob/master/library/friendica) ([history](https://github.com/docker-library/official-images/commits/master/library/friendica)) - **Source of this description**: @@ -88,31 +88,34 @@ $ 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. -## Using the cron job +## Background tasks -There are three options to enable the cron-job for Friendica: +Friendica requires background tasks to fetch and send all kind of messages and maintain the complete instance. This setup is crucial for the Friendica node. There are two options to enable background tasks for Friendica: -- Using the default Image and activate the cron-job (see [Installation](https://friendi.ca/resources/installation/), sector `Activating scheduled tasks`) -- Using the default image (apache, fpm, fpm-alpine) and creating **two** container (one for cron and one for the main app) -- Using one of the additional, prepared [`cron dockerfiles`](https://github.com/friendica/docker/tree/master/.examples/dockerfiles/cron) +- Using the default Image and manually setup background tasks (see Friendica [Install](https://github.com/friendica/friendica/blob/2021.03-rc/doc/Install.md#required-background-tasks)) +- Using the default image (apache, fpm, fpm-alpine) and starting a dedicated `cron` instance and use `cron.sh` as startup command (like this [Example](https://github.com/friendica/docker/blob/stable/.examples/docker-compose/insecure/mariadb-cron-redis/apache/docker-compose.yml)) ## Possible Environment Variables **Friendica Settings** -- `FRIENDICA_URL` The Friendica URL. +- `FRIENDICA_URL` The Friendica complete URL including protocol, domain and subpath (example: https://friendica.local/sub/ ). - `FRIENDICA_TZ` The default localization of the Friendica server. - `FRIENDICA_LANG` The default language of the Friendica server. - `FRIENDICA_SITENAME` The Sitename of the Friendica server. - `FRIENDICA_NO_VALIDATION` If set to `true`, the URL and E-Mail validation will be disabled. -- `FRIENDICA_DATA` If set to `true`, the fileystem will be used instead of the DB backend. +- `FRIENDICA_DATA` Set the name of the storage provider (e.g `Filesystem` to use filesystem), default ist the DB backend. - `FRIENDICA_DATA_DIR` The data directory of the Friendica server (Default: /var/www/data). +- `FRIENDICA_UPGRADE` Force starting the Friendica update even it's the same version (Default: `false`). **Friendica Logging** - `FRIENDICA_DEBUGGING` If set to `true`, the logging of Friendica is enabled. - `FRIENDICA_LOGFILE` (optional) The path to the logfile (Default: /var/www/friendica.log). - `FRIENDICA_LOGLEVEL` (optional) The loglevel to log (Default: notice). +- `FRIENDICA_LOGGER` (optional) Set the type - stream, syslog, monolog (Default: stream). +- `FRIENDICA_SYSLOG_FLAGS` (optional) In case syslog is used, set the corresponding flags (Default: `LOG_PID | LOG_ODELAY | LOG_CONS | LOG_PERROR`). +- `FRIENDICA_SYSLOG_FACTORY` (optional) In case syslog is used, set the corresponding factory (Default: `LOG_USER`). **Database** (**required at installation**) @@ -129,6 +132,11 @@ There are three options to enable the cron-job for Friendica: - `REDIS_PW` (optional) The password for the redis instance (in case of locking). - `REDIS_DB` (optional) The database instance of the redis instance (in case of locking). +**PHP limits** + +- `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. + ## Administrator account Because Friendica links the administrator account to a specific mail address, you **have** to set a valid address for `MAILNAME`. @@ -144,13 +152,14 @@ You have to set a valid SMTP-MTA for the `SMTP` environment variable to enable m The following environment variables are possible for the SMTP examples. - `SMTP` Address of the SMTP Mail-Gateway. (**required**) +- `SMTP_PORT` Port of the SMTP Mail-Gateway. (Default: 587) - `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_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) -- `SMTP_AUTH_METHOD` Authentication method for the SMTP Mail-Gateway. (Default: empty/plain text) ## Database settings @@ -186,12 +195,73 @@ $ docker run -d \ The Friendica image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable the automatic installation, you have to the following environment variables: +- `FRIENDICA_URL` The Friendica complete URL including protocol, domain and subpath (example: https://friendica.local/sub/ ). - `FRIENDICA_ADMIN_MAIL` E-Mail address of the administrator. - `MYSQL_USER` Username for the database user using mysql / mariadb. - `MYSQL_PASSWORD` Password for the database user using mysql / mariadb. - `MYSQL_DATABASE` Name of the database using mysql / mariadb. - `MYSQL_HOST` Hostname of the database server using mysql / mariadb. +# 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: mariadb + restart: always + volumes: + - db:/var/lib/mysql + environment: + - MYSQL_DATABASE_FILE=/run/secrets/mysql_database + - MYSQL_USER_FILE=/run/secrets/mysql_user + - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password + secrets: + - mysql_database + - mysql_password + - mysql_user + + app: + image: friendica + restart: always + volumes: + - friendica:/var/www/html + ports: + - "8080:80" + environment: + - MYSQL_HOST=db + - MYSQL_DATABASE_FILE=/run/secrets/mysql_database + - MYSQL_USER_FILE=/run/secrets/mysql_user + - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password + - FRIENDICA_ADMIN_MAIL_FILE=/run/secrets/friendica_admin_mail + depends_on: + - db + secrets: + - friendica_admin_mail + - mysql_database + - mysql_password + - mysql_user + +volumes: + db: + friendica: + +secrets: + friendica_admin_mail: + file: ./friendica_admin_mail.txt # put admin email to this file + mysql_database: + file: ./mysql_database.txt # put mysql database name to this file + mysql_password: + file: ./mysql_password.txt # put mysql password to this file + mysql_user: + file: ./mysql_user.txt # put mysql username to this file +``` + +Currently, this is only supported for `FRIENDICA_ADMIN_MAIL`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`. + # Maintenance of the image ## Updating to a newer version @@ -315,25 +385,7 @@ Then run `docker-compose up -d`, now you can access Friendica at http://localhos # Special settings for DEV/RC images -The `*-dev` and `*-rc` branches are having additional possibilities to get the latest sources of Friendica. - -## Possible Environment Variables - -The following environment variables are possible for these kind of images too: - -**Develop/Release Candidate Settings** - -- `FRIENDICA_UPGRADE` If set to `true`, a develop or release candidat node will get updated at startup. -- `FRIENDICA_REPOSITORY` If set, a custom repository will be chosen (Default: `friendica`) -- `FRIENDICA_ADDONS_REPO` If set, a custom repository for the addons will be chosen (Default: `friendica`) -- `FRIENDICA_VERSION` If set, a custom branch will be chosen (Default is based on the chosen image version) -- `FRIENDICA_ADDONS` If set, a custom branch for the addons will be chosen (Default is based on the chosen image version) - -## Updating to a newer version - -You don't need to pull the image for each commit in [friendica](https://github.com/friendica/friendica/). Instead, the release candidate or develop branch will get updated if no installation was found or the environment variable `FRIENDICA_UPGRADE` is set to `true`. - -It will clone the latest Friendica version and copy it to your working directory. +The `*-dev` and `*-rc` branches are directly downloaded and verified at each docker start to ensure that the latest sources are used. The parameter `FRIENDICA_UPGRADE` is required to be `true` (Default: `false`) to activate this behavior. # Questions / Issues @@ -349,9 +401,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `friendica:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/friendica/content.md b/friendica/content.md index 88bc4e9388ce..df72f372e31a 100644 --- a/friendica/content.md +++ b/friendica/content.md @@ -36,31 +36,34 @@ $ 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. -## Using the cron job +## Background tasks -There are three options to enable the cron-job for Friendica: +Friendica requires background tasks to fetch and send all kind of messages and maintain the complete instance. This setup is crucial for the Friendica node. There are two options to enable background tasks for Friendica: -- Using the default Image and activate the cron-job (see [Installation](https://friendi.ca/resources/installation/), sector `Activating scheduled tasks`) -- Using the default image (apache, fpm, fpm-alpine) and creating **two** container (one for cron and one for the main app) -- Using one of the additional, prepared [`cron dockerfiles`](https://github.com/friendica/docker/tree/master/.examples/dockerfiles/cron) +- Using the default Image and manually setup background tasks (see Friendica [Install](https://github.com/friendica/friendica/blob/2021.03-rc/doc/Install.md#required-background-tasks)) +- Using the default image (apache, fpm, fpm-alpine) and starting a dedicated `cron` instance and use `cron.sh` as startup command (like this [Example](https://github.com/friendica/docker/blob/stable/.examples/docker-compose/insecure/mariadb-cron-redis/apache/docker-compose.yml)) ## Possible Environment Variables **Friendica Settings** -- `FRIENDICA_URL` The Friendica URL. +- `FRIENDICA_URL` The Friendica complete URL including protocol, domain and subpath (example: https://friendica.local/sub/ ). - `FRIENDICA_TZ` The default localization of the Friendica server. - `FRIENDICA_LANG` The default language of the Friendica server. - `FRIENDICA_SITENAME` The Sitename of the Friendica server. - `FRIENDICA_NO_VALIDATION` If set to `true`, the URL and E-Mail validation will be disabled. -- `FRIENDICA_DATA` If set to `true`, the fileystem will be used instead of the DB backend. +- `FRIENDICA_DATA` Set the name of the storage provider (e.g `Filesystem` to use filesystem), default ist the DB backend. - `FRIENDICA_DATA_DIR` The data directory of the Friendica server (Default: /var/www/data). +- `FRIENDICA_UPGRADE` Force starting the Friendica update even it's the same version (Default: `false`). **Friendica Logging** - `FRIENDICA_DEBUGGING` If set to `true`, the logging of Friendica is enabled. - `FRIENDICA_LOGFILE` (optional) The path to the logfile (Default: /var/www/friendica.log). - `FRIENDICA_LOGLEVEL` (optional) The loglevel to log (Default: notice). +- `FRIENDICA_LOGGER` (optional) Set the type - stream, syslog, monolog (Default: stream). +- `FRIENDICA_SYSLOG_FLAGS` (optional) In case syslog is used, set the corresponding flags (Default: `LOG_PID | LOG_ODELAY | LOG_CONS | LOG_PERROR`). +- `FRIENDICA_SYSLOG_FACTORY` (optional) In case syslog is used, set the corresponding factory (Default: `LOG_USER`). **Database** (**required at installation**) @@ -77,6 +80,11 @@ There are three options to enable the cron-job for Friendica: - `REDIS_PW` (optional) The password for the redis instance (in case of locking). - `REDIS_DB` (optional) The database instance of the redis instance (in case of locking). +**PHP limits** + +- `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. + ## Administrator account Because Friendica links the administrator account to a specific mail address, you **have** to set a valid address for `MAILNAME`. @@ -92,13 +100,14 @@ You have to set a valid SMTP-MTA for the `SMTP` environment variable to enable m The following environment variables are possible for the SMTP examples. - `SMTP` Address of the SMTP Mail-Gateway. (**required**) +- `SMTP_PORT` Port of the SMTP Mail-Gateway. (Default: 587) - `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_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) -- `SMTP_AUTH_METHOD` Authentication method for the SMTP Mail-Gateway. (Default: empty/plain text) ## Database settings @@ -134,12 +143,73 @@ $ docker run -d \ The Friendica image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable the automatic installation, you have to the following environment variables: +- `FRIENDICA_URL` The Friendica complete URL including protocol, domain and subpath (example: https://friendica.local/sub/ ). - `FRIENDICA_ADMIN_MAIL` E-Mail address of the administrator. - `MYSQL_USER` Username for the database user using mysql / mariadb. - `MYSQL_PASSWORD` Password for the database user using mysql / mariadb. - `MYSQL_DATABASE` Name of the database using mysql / mariadb. - `MYSQL_HOST` Hostname of the database server using mysql / mariadb. +# 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: mariadb + restart: always + volumes: + - db:/var/lib/mysql + environment: + - MYSQL_DATABASE_FILE=/run/secrets/mysql_database + - MYSQL_USER_FILE=/run/secrets/mysql_user + - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password + secrets: + - mysql_database + - mysql_password + - mysql_user + + app: + image: friendica + restart: always + volumes: + - friendica:/var/www/html + ports: + - "8080:80" + environment: + - MYSQL_HOST=db + - MYSQL_DATABASE_FILE=/run/secrets/mysql_database + - MYSQL_USER_FILE=/run/secrets/mysql_user + - MYSQL_PASSWORD_FILE=/run/secrets/mysql_password + - FRIENDICA_ADMIN_MAIL_FILE=/run/secrets/friendica_admin_mail + depends_on: + - db + secrets: + - friendica_admin_mail + - mysql_database + - mysql_password + - mysql_user + +volumes: + db: + friendica: + +secrets: + friendica_admin_mail: + file: ./friendica_admin_mail.txt # put admin email to this file + mysql_database: + file: ./mysql_database.txt # put mysql database name to this file + mysql_password: + file: ./mysql_password.txt # put mysql password to this file + mysql_user: + file: ./mysql_user.txt # put mysql username to this file +``` + +Currently, this is only supported for `FRIENDICA_ADMIN_MAIL`, `MYSQL_DATABASE`, `MYSQL_PASSWORD`, `MYSQL_USER`. + # Maintenance of the image ## Updating to a newer version @@ -263,25 +333,7 @@ Then run `docker-compose up -d`, now you can access Friendica at http://localhos # Special settings for DEV/RC images -The `*-dev` and `*-rc` branches are having additional possibilities to get the latest sources of Friendica. - -## Possible Environment Variables - -The following environment variables are possible for these kind of images too: - -**Develop/Release Candidate Settings** - -- `FRIENDICA_UPGRADE` If set to `true`, a develop or release candidat node will get updated at startup. -- `FRIENDICA_REPOSITORY` If set, a custom repository will be chosen (Default: `friendica`) -- `FRIENDICA_ADDONS_REPO` If set, a custom repository for the addons will be chosen (Default: `friendica`) -- `FRIENDICA_VERSION` If set, a custom branch will be chosen (Default is based on the chosen image version) -- `FRIENDICA_ADDONS` If set, a custom branch for the addons will be chosen (Default is based on the chosen image version) - -## Updating to a newer version - -You don't need to pull the image for each commit in [friendica](https://github.com/friendica/friendica/). Instead, the release candidate or develop branch will get updated if no installation was found or the environment variable `FRIENDICA_UPGRADE` is set to `true`. - -It will clone the latest Friendica version and copy it to your working directory. +The `*-dev` and `*-rc` branches are directly downloaded and verified at each docker start to ensure that the latest sources are used. The parameter `FRIENDICA_UPGRADE` is required to be `true` (Default: `false`) to activate this behavior. # Questions / Issues diff --git a/fsharp/README-short.txt b/fsharp/README-short.txt deleted file mode 100644 index 3189df8aa6aa..000000000000 --- a/fsharp/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -F# is a multi-paradigm language encompassing functional, imperative, and object-oriented styles diff --git a/fsharp/README.md b/fsharp/README.md deleted file mode 100644 index ac080d301ffb..000000000000 --- a/fsharp/README.md +++ /dev/null @@ -1,80 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [the F# Community](https://github.com/fsprojects/docker-fsharp) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`latest`, `10`, `10.7`, `10.7.0`](https://github.com/fsprojects/docker-fsharp/blob/6ced4c004bac9d5a024eefbc1d90219c78ce784b/10.7.0/mono/Dockerfile) -- [`4`, `4.1`, `4.1.34`](https://github.com/fsprojects/docker-fsharp/blob/6ced4c004bac9d5a024eefbc1d90219c78ce784b/4.1.34/mono/Dockerfile) -- [`netcore`, `10-netcore`, `10.7-netcore`, `10.7.0-netcore`](https://github.com/fsprojects/docker-fsharp/blob/6ced4c004bac9d5a024eefbc1d90219c78ce784b/10.7.0/netcore/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/fsprojects/docker-fsharp/issues](https://github.com/fsprojects/docker-fsharp/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/fsharp/), [`arm64v8`](https://hub.docker.com/r/arm64v8/fsharp/) - -- **Published image artifact details**: - [repo-info repo's `repos/fsharp/` directory](https://github.com/docker-library/repo-info/blob/master/repos/fsharp) ([history](https://github.com/docker-library/repo-info/commits/master/repos/fsharp)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/fsharp`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ffsharp) - [official-images repo's `library/fsharp` file](https://github.com/docker-library/official-images/blob/master/library/fsharp) ([history](https://github.com/docker-library/official-images/commits/master/library/fsharp)) - -- **Source of this description**: - [docs repo's `fsharp/` directory](https://github.com/docker-library/docs/tree/master/fsharp) ([history](https://github.com/docker-library/docs/commits/master/fsharp)) - -# What is F#? - -F# (pronounced F sharp) is a strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming techniques. F# is most often used as a cross-platform CLI language, but can also be used to generate JavaScript and GPU code. - -> [wikipedia.org/wiki/F Sharp (programming language)](https://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29) - -![logo](https://raw.githubusercontent.com/docker-library/docs/7d8c02340482b7f0c08c9fa7dc534d72314d3a22/fsharp/logo.png) - -# How to use this image - -## Start your application inside this image - -The most straightforward way to use this image is to use it both as the build and runtime environment. In your `Dockerfile`, you can write something similar to the following: - -```dockerfile -FROM fsharp -COPY . /app -RUN xbuild /app/myproject.sln -``` - -This will copy your application source code into the image and use `xbuild` to build it. - -# License - -View [the Apache 2.0 license](https://github.com/fsharp/fsharp/blob/d518f91418ef43a61875a5d932147b97fd0f47f3/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 `fsharp/` directory](https://github.com/docker-library/repo-info/tree/master/repos/fsharp). - -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/fsharp/content.md b/fsharp/content.md deleted file mode 100644 index 75ec7ab217f3..000000000000 --- a/fsharp/content.md +++ /dev/null @@ -1,21 +0,0 @@ -# What is F#? - -F# (pronounced F sharp) is a strongly typed, multi-paradigm programming language that encompasses functional, imperative, and object-oriented programming techniques. F# is most often used as a cross-platform CLI language, but can also be used to generate JavaScript and GPU code. - -> [wikipedia.org/wiki/F Sharp (programming language)](https://en.wikipedia.org/wiki/F_Sharp_%28programming_language%29) - -%%LOGO%% - -# How to use this image - -## Start your application inside this image - -The most straightforward way to use this image is to use it both as the build and runtime environment. In your `Dockerfile`, you can write something similar to the following: - -```dockerfile -FROM %%IMAGE%% -COPY . /app -RUN xbuild /app/myproject.sln -``` - -This will copy your application source code into the image and use `xbuild` to build it. diff --git a/fsharp/github-repo b/fsharp/github-repo deleted file mode 100644 index ac3d02410c15..000000000000 --- a/fsharp/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/fsprojects/docker-fsharp diff --git a/fsharp/license.md b/fsharp/license.md deleted file mode 100644 index ce9909b47eb8..000000000000 --- a/fsharp/license.md +++ /dev/null @@ -1 +0,0 @@ -View [the Apache 2.0 license](https://github.com/fsharp/fsharp/blob/d518f91418ef43a61875a5d932147b97fd0f47f3/LICENSE) for the software contained in this image. diff --git a/fsharp/logo.png b/fsharp/logo.png deleted file mode 100644 index 2dcecfbdc61b..000000000000 Binary files a/fsharp/logo.png and /dev/null differ diff --git a/fsharp/maintainer.md b/fsharp/maintainer.md deleted file mode 100644 index bfb50db0394e..000000000000 --- a/fsharp/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[the F# Community](%%GITHUB-REPO%%) diff --git a/gazebo/README.md b/gazebo/README.md index e2ba0cf8fb3c..8be1ff5a804a 100644 --- a/gazebo/README.md +++ b/gazebo/README.md @@ -20,22 +20,18 @@ WARNING: [the Open Source Robotics Foundation](https://github.com/osrf/docker_images) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`gzserver7`, `gzserver7-xenial`](https://github.com/osrf/docker_images/blob/e296cc1a131ef3b2ac62a91d6bf31ab6fb27884d/gazebo/7/ubuntu/xenial/gzserver7/Dockerfile) -- [`libgazebo7`, `libgazebo7-xenial`](https://github.com/osrf/docker_images/blob/e296cc1a131ef3b2ac62a91d6bf31ab6fb27884d/gazebo/7/ubuntu/xenial/libgazebo7/Dockerfile) -- [`gzserver9-xenial`](https://github.com/osrf/docker_images/blob/844fe41c654dd84ba291d01620fc11f7ec99c9ad/gazebo/9/ubuntu/xenial/gzserver9/Dockerfile) -- [`libgazebo9-xenial`](https://github.com/osrf/docker_images/blob/844fe41c654dd84ba291d01620fc11f7ec99c9ad/gazebo/9/ubuntu/xenial/libgazebo9/Dockerfile) -- [`gzserver9`, `gzserver9-bionic`](https://github.com/osrf/docker_images/blob/2f090a032f756498681f948e60711908cfb524d6/gazebo/9/ubuntu/bionic/gzserver9/Dockerfile) -- [`libgazebo9`, `libgazebo9-bionic`](https://github.com/osrf/docker_images/blob/2f090a032f756498681f948e60711908cfb524d6/gazebo/9/ubuntu/bionic/libgazebo9/Dockerfile) -- [`gzserver9-stretch`](https://github.com/osrf/docker_images/blob/e02819ea8bb6838c133d476a7f41f5079836eb4a/gazebo/9/debian/stretch/gzserver9/Dockerfile) -- [`libgazebo9-stretch`](https://github.com/osrf/docker_images/blob/e02819ea8bb6838c133d476a7f41f5079836eb4a/gazebo/9/debian/stretch/libgazebo9/Dockerfile) -- [`gzserver10`, `gzserver10-bionic`](https://github.com/osrf/docker_images/blob/f1b7ad09fa3bc6b88621c5f4ff2da9669c9ccb3e/gazebo/10/ubuntu/bionic/gzserver10/Dockerfile) -- [`libgazebo10`, `libgazebo10-bionic`](https://github.com/osrf/docker_images/blob/f1b7ad09fa3bc6b88621c5f4ff2da9669c9ccb3e/gazebo/10/ubuntu/bionic/libgazebo10/Dockerfile) -- [`gzserver11`, `gzserver11-bionic`](https://github.com/osrf/docker_images/blob/bd0ef992496452d93ea929ea5921b123acdab58c/gazebo/11/ubuntu/bionic/gzserver11/Dockerfile) -- [`libgazebo11`, `libgazebo11-bionic`, `latest`](https://github.com/osrf/docker_images/blob/bd0ef992496452d93ea929ea5921b123acdab58c/gazebo/11/ubuntu/bionic/libgazebo11/Dockerfile) +- [`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) # Quick reference (cont.) @@ -50,7 +46,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/gazebo`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fgazebo) + [official-images repo's `library/gazebo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgazebo) [official-images repo's `library/gazebo` file](https://github.com/docker-library/official-images/blob/master/library/gazebo) ([history](https://github.com/docker-library/official-images/commits/master/library/gazebo)) - **Source of this description**: diff --git a/gcc/README.md b/gcc/README.md index a46b0f880762..b8f42b3dc8ce 100644 --- a/gcc/README.md +++ b/gcc/README.md @@ -20,13 +20,14 @@ WARNING: [the Docker Community](https://github.com/docker-library/gcc) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`10.1.0`, `10.1`, `10`, `latest`](https://github.com/docker-library/gcc/blob/97b046b578bd86cae5414d80b3ad0027c590aebd/10/Dockerfile) -- [`9.3.0`, `9.3`, `9`](https://github.com/docker-library/gcc/blob/05aef2fc627328e12bbf77aca44fd399a22c7fc4/9/Dockerfile) -- [`8.4.0`, `8.4`, `8`](https://github.com/docker-library/gcc/blob/05aef2fc627328e12bbf77aca44fd399a22c7fc4/8/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/gcc`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fgcc) + [official-images repo's `library/gcc` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgcc) [official-images repo's `library/gcc` file](https://github.com/docker-library/official-images/blob/master/library/gcc) ([history](https://github.com/docker-library/official-images/commits/master/library/gcc)) - **Source of this description**: @@ -92,7 +93,7 @@ $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp gcc:4.9 make # License -View [license information](https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/COPYING3?view=markup) for the software contained in this image. +View [license information](https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/Copying.html) 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/gcc/license.md b/gcc/license.md index 9a0a820c2ea3..091413a158bc 100644 --- a/gcc/license.md +++ b/gcc/license.md @@ -1 +1 @@ -View [license information](https://gcc.gnu.org/viewcvs/gcc/trunk/gcc/COPYING3?view=markup) for the software contained in this image. +View [license information](https://gcc.gnu.org/onlinedocs/gcc-11.2.0/gcc/Copying.html) for the software contained in this image. diff --git a/generate-repo-stub-readme.sh b/generate-repo-stub-readme.sh index e327106c9061..1c8504cf186c 100755 --- a/generate-repo-stub-readme.sh +++ b/generate-repo-stub-readme.sh @@ -40,12 +40,17 @@ if [ -f "$repo/deprecated.md" ]; then echo fi +case "$repo" in + hello-world | buildpack-deps) disclaimer='' ;; + *) disclaimer=" (not to be confused with any official \`$repo\` image provided by \`$repo\` upstream)" ;; +esac + cat </dev/null \ - | grep -qvE 'unknown|invalid|access denied|not found' +_wget_spider() { + wget -q -o /dev/null -O /dev/null --spider "$@" } set -- "${toTest[@]}" while [ "$#" -gt 0 ]; do image="$1"; shift url="$1"; shift - if _check_shields_io_image "$image"; then + testUrl="$1"; shift + if _wget_spider "$testUrl"; then badges+=( "-${t}[![build status badge]($image)]($url)" ) fi done @@ -89,22 +101,16 @@ if [ -n "$arches" ]; then i=0 for arch in $arches put-shared; do if [ "$arch" = 'put-shared' ]; then - jenkinsLink= - for jenkinsJob in "job/put-shared/job/light/job/$repo" 'job/put-shared/job/heavy'; do - jenkinsImage="https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/$jenkinsJob.svg?label=$arch" - if _check_shields_io_image "$jenkinsImage"; then - jenkinsLink="https://doi-janky.infosiftr.net/$jenkinsJob/" - break - fi - done - if [ -z "$jenkinsLink" ]; then - continue + 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 - jenkinsLink="https://doi-janky.infosiftr.net/job/multiarch/job/$arch/job/$repo/" - jenkinsImage="https://img.shields.io/jenkins/s/https/doi-janky.infosiftr.net/job/multiarch/job/$arch/job/$repo.svg?label=$arch" + jenkinsJob="job/multiarch/job/$arch/job/$repo" fi - if _check_shields_io_image "$jenkinsImage"; then + 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 diff --git a/geonetwork/README.md b/geonetwork/README.md index 0e2e2919c876..4102a3f09d78 100644 --- a/geonetwork/README.md +++ b/geonetwork/README.md @@ -20,14 +20,14 @@ WARNING: [GeoNetwork opensource](https://github.com/geonetwork/docker-geonetwork) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.10.2`, `3.10`, `latest`](https://github.com/geonetwork/docker-geonetwork/blob/f81b111fbe3d765ee56f61c5474099764ee07004/3.10.2/Dockerfile) -- [`3.10.2-postgres`, `3.10-postgres`, `postgres`](https://github.com/geonetwork/docker-geonetwork/blob/f81b111fbe3d765ee56f61c5474099764ee07004/3.10.2/postgres/Dockerfile) -- [`3.8.3`, `3.8`](https://github.com/geonetwork/docker-geonetwork/blob/af81a4ff8f592d27b4911ad20d569379864ee85f/3.8.3/Dockerfile) -- [`3.8.3-postgres`, `3.8-postgres`](https://github.com/geonetwork/docker-geonetwork/blob/af81a4ff8f592d27b4911ad20d569379864ee85f/3.8.3/postgres/Dockerfile) +- [`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) # Quick reference (cont.) @@ -35,14 +35,14 @@ WARNING: [https://github.com/geonetwork/docker-geonetwork/issues](https://github.com/geonetwork/docker-geonetwork/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/geonetwork/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/geonetwork/` directory](https://github.com/docker-library/repo-info/blob/master/repos/geonetwork) ([history](https://github.com/docker-library/repo-info/commits/master/repos/geonetwork)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/geonetwork`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fgeonetwork) + [official-images repo's `library/geonetwork` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgeonetwork) [official-images repo's `library/geonetwork` file](https://github.com/docker-library/official-images/blob/master/library/geonetwork) ([history](https://github.com/docker-library/official-images/commits/master/library/geonetwork)) - **Source of this description**: @@ -82,24 +82,24 @@ $ docker run --name some-geonetwork -d -p 8080:8080 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. -## Set the data directory +## 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.: Lucene index, spatial index, thumbnails). +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. -By default, geonetwork sets the data directory on `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`, but you may override this value by injecting an environment variable into the container: - `-e DATA_DIR=...` (defaults to `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`) +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. -For instance, to set the data directory to `/var/lib/geonetwork_data`: +## Persisting data + +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: ```console -$ docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork_data geonetwork +$ 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 ``` -## Persist 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 `/var/lib/geonetwork_data` on the container: +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: ```console -$ docker run --name some-geonetwork -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork_data -v /host/geonetwork-docker:/var/lib/geonetwork_data geonetwork +$ 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 ``` ## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) diff --git a/geonetwork/content.md b/geonetwork/content.md index 679083fdbe10..2da1202a0ea8 100644 --- a/geonetwork/content.md +++ b/geonetwork/content.md @@ -32,24 +32,24 @@ $ docker run --name some-%%REPO%% -d -p 8080:8080 %%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. -## Set the data directory +## 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.: Lucene index, spatial index, thumbnails). +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. -By default, geonetwork sets the data directory on `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`, but you may override this value by injecting an environment variable into the container: - `-e DATA_DIR=...` (defaults to `/usr/local/tomcat/webapps/geonetwork/WEB-INF/data`) +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. -For instance, to set the data directory to `/var/lib/geonetwork_data`: +## Persisting data + +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: ```console -$ docker run --name some-%%REPO%% -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork_data %%IMAGE%% +$ 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%% ``` -## Persist 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 `/var/lib/geonetwork_data` on the container: +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: ```console -$ docker run --name some-%%REPO%% -d -p 8080:8080 -e DATA_DIR=/var/lib/geonetwork_data -v /host/geonetwork-docker:/var/lib/geonetwork_data %%IMAGE%% +$ 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%% ``` ## %%STACK%% diff --git a/ghost/README.md b/ghost/README.md index f729c345b983..6f6462ba5504 100644 --- a/ghost/README.md +++ b/ghost/README.md @@ -20,14 +20,14 @@ WARNING: [the Docker Community](https://github.com/docker-library/ghost) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.15.3`, `3.15`, `3`, `latest`](https://github.com/docker-library/ghost/blob/b565e6288d0c41bbdba4fcc763169e471a448cb5/3/debian/Dockerfile) -- [`3.15.3-alpine`, `3.15-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/ghost/blob/b565e6288d0c41bbdba4fcc763169e471a448cb5/3/alpine/Dockerfile) -- [`2.38.1`, `2.38`, `2`](https://github.com/docker-library/ghost/blob/292aeadfdf5d428867c2b160268540aa4d4a04c5/2/debian/Dockerfile) -- [`2.38.1-alpine`, `2.38-alpine`, `2-alpine`](https://github.com/docker-library/ghost/blob/7555f792b28dbe01d521e7edbfc4af2c6824a3ff/2/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -35,14 +35,14 @@ WARNING: [https://github.com/docker-library/ghost/issues](https://github.com/docker-library/ghost/issues) - **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/), [`i386`](https://hub.docker.com/r/i386/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/), [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/ghost`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fghost) + [official-images repo's `library/ghost` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fghost) [official-images repo's `library/ghost` file](https://github.com/docker-library/official-images/blob/master/library/ghost) ([history](https://github.com/docker-library/official-images/commits/master/library/ghost)) - **Source of this description**: @@ -58,10 +58,10 @@ Ghost is a free and open source blogging platform written in JavaScript and dist # How to use this image -This will start a Ghost instance listening on the default Ghost port of 2368. +This will start a Ghost development instance listening on the default Ghost port of 2368. ```console -$ docker run -d --name some-ghost ghost +$ docker run -d --name some-ghost -e NODE_ENV=development ghost ``` ## Custom port @@ -69,14 +69,14 @@ $ docker run -d --name some-ghost ghost 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 -d --name some-ghost -e url=http://localhost:3001 -p 3001:2368 ghost +$ docker run -d --name some-ghost -e NODE_ENV=development -e url=http://localhost:3001 -p 3001:2368 ghost ``` If all goes well, you'll be able to access your new site on `http://localhost:3001` and `http://localhost:3001/ghost` to access Ghost Admin (or `http://host-ip:3001` and `http://host-ip:3001/ghost`, respectively). ### Upgrading Ghost -You will want to ensure you are running the latest minor version (1.25.5 or 0.11.9) of Ghost before upgrading major versions. Otherwise, you may run into database errors. +You will want to ensure you are running the latest minor version of Ghost before upgrading major versions. Otherwise, you may run into database errors. For upgrading your Ghost container you will want to mount your data to the appropriate path in the predecessor container (see below): import your content from the admin panel, stop the container, and then re-mount your content to the successor container you are upgrading into; you can then export your content from the admin panel. @@ -84,36 +84,24 @@ For upgrading your Ghost container you will want to mount your data to the appro Mount your existing content. In this example we also use the Alpine base image. -### Ghost 1.x.x - -```console -$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content ghost:1-alpine -``` - -### Ghost 0.11.xx - ```console -$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost ghost:0.11-alpine +$ 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 Volume -Alternatively you can use a [data container](http://docs.docker.com/engine/tutorials/dockervolumes/) that has a volume that points to `/var/lib/ghost/content` (or /var/lib/ghost for 0.11.x) and then reference it: +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 --volumes-from some-ghost-data ghost +$ docker run -d --name some-ghost -e NODE_ENV=development -v some-ghost-data:/var/lib/ghost/content ghost ``` -### SQLite Database - -This Docker image for Ghost uses SQLite. There is nothing special to configure. - ## Configuration -All Ghost configuration parameters (such as `url`) can be specified via environment variables. See [the Ghost documentation](https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables) for details about what configuration is allowed and how to convert a nested configuration key into the appropriate environment variable name: +All Ghost configuration parameters (such as `url`) can be specified via environment variables. See [the Ghost documentation](https://ghost.org/docs/concepts/config/#running-ghost-with-config-env-variables) for details about what configuration is allowed and how to convert a nested configuration key into the appropriate environment variable name: ```console -$ docker run -d --name some-ghost -e url=http://some-ghost.example.com ghost +$ 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.) @@ -124,46 +112,53 @@ When opening a ticket at https://github.com/TryGhost/Ghost/issues it becomes nec ```console $ docker exec node --version -v6.11.2 +[node version output] ``` ## Note about Ghost-CLI While the Docker images do have Ghost-CLI available and do use some of its commands to set up the base Ghost image, many of the other Ghost-CLI commands won't work correctly, and really aren't designed/intended to. For more info see [docker-library/ghost#156 (comment)](https://github.com/docker-library/ghost/issues/156#issuecomment-428159861) +## 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. + +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) Example `stack.yml` for `ghost`: ```yaml -# by default, the Ghost image will use SQLite (and thus requires no separate database container) -# we have used MySQL here merely for demonstration purposes (especially environment-variable-based configuration) - version: '3.1' services: ghost: - image: ghost:1-alpine + image: ghost:4-alpine restart: always ports: - 8080:2368 environment: - # see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables + # see https://ghost.org/docs/config/#configuration-options database__client: mysql database__connection__host: db database__connection__user: root database__connection__password: example database__connection__database: ghost + # this url value is just an example, and is likely wrong for your environment! + 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 db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: 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/e24f39cddf21560cf0a24f149059ff23640b0f16/ghost/stack.yml) +[![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) 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). @@ -177,9 +172,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `ghost:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/ghost/content.md b/ghost/content.md index 0057a20809c9..d475b3ea12e2 100644 --- a/ghost/content.md +++ b/ghost/content.md @@ -8,10 +8,10 @@ Ghost is a free and open source blogging platform written in JavaScript and dist # How to use this image -This will start a Ghost instance listening on the default Ghost port of 2368. +This will start a Ghost development instance listening on the default Ghost port of 2368. ```console -$ docker run -d --name some-ghost %%IMAGE%% +$ docker run -d --name some-ghost -e NODE_ENV=development %%IMAGE%% ``` ## Custom port @@ -19,14 +19,14 @@ $ docker run -d --name some-ghost %%IMAGE%% 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 -d --name some-ghost -e url=http://localhost:3001 -p 3001:2368 %%IMAGE%% +$ docker run -d --name some-ghost -e NODE_ENV=development -e url=http://localhost:3001 -p 3001:2368 %%IMAGE%% ``` If all goes well, you'll be able to access your new site on `http://localhost:3001` and `http://localhost:3001/ghost` to access Ghost Admin (or `http://host-ip:3001` and `http://host-ip:3001/ghost`, respectively). ### Upgrading Ghost -You will want to ensure you are running the latest minor version (1.25.5 or 0.11.9) of Ghost before upgrading major versions. Otherwise, you may run into database errors. +You will want to ensure you are running the latest minor version of Ghost before upgrading major versions. Otherwise, you may run into database errors. For upgrading your Ghost container you will want to mount your data to the appropriate path in the predecessor container (see below): import your content from the admin panel, stop the container, and then re-mount your content to the successor container you are upgrading into; you can then export your content from the admin panel. @@ -34,36 +34,24 @@ For upgrading your Ghost container you will want to mount your data to the appro Mount your existing content. In this example we also use the Alpine base image. -### Ghost 1.x.x - -```console -$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost/content %%IMAGE%%:1-alpine -``` - -### Ghost 0.11.xx - ```console -$ docker run -d --name some-ghost -p 3001:2368 -v /path/to/ghost/blog:/var/lib/ghost %%IMAGE%%:0.11-alpine +$ 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 Volume -Alternatively you can use a [data container](http://docs.docker.com/engine/tutorials/dockervolumes/) that has a volume that points to `/var/lib/ghost/content` (or /var/lib/ghost for 0.11.x) and then reference it: +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 --volumes-from some-ghost-data %%IMAGE%% +$ docker run -d --name some-ghost -e NODE_ENV=development -v some-ghost-data:/var/lib/ghost/content %%IMAGE%% ``` -### SQLite Database - -This Docker image for Ghost uses SQLite. There is nothing special to configure. - ## Configuration -All Ghost configuration parameters (such as `url`) can be specified via environment variables. See [the Ghost documentation](https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables) for details about what configuration is allowed and how to convert a nested configuration key into the appropriate environment variable name: +All Ghost configuration parameters (such as `url`) can be specified via environment variables. See [the Ghost documentation](https://ghost.org/docs/concepts/config/#running-ghost-with-config-env-variables) for details about what configuration is allowed and how to convert a nested configuration key into the appropriate environment variable name: ```console -$ docker run -d --name some-ghost -e url=http://some-ghost.example.com %%IMAGE%% +$ 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.) @@ -74,13 +62,19 @@ When opening a ticket at https://github.com/TryGhost/Ghost/issues it becomes nec ```console $ docker exec node --version -v6.11.2 +[node version output] ``` ## Note about Ghost-CLI While the Docker images do have Ghost-CLI available and do use some of its commands to set up the base Ghost image, many of the other Ghost-CLI commands won't work correctly, and really aren't designed/intended to. For more info see [docker-library/ghost#156 (comment)](https://github.com/docker-library/ghost/issues/156#issuecomment-428159861) +## 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. + +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%% 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). diff --git a/ghost/stack.yml b/ghost/stack.yml index 2d17bb48ce34..eefc6e8a709b 100644 --- a/ghost/stack.yml +++ b/ghost/stack.yml @@ -1,25 +1,26 @@ -# by default, the Ghost image will use SQLite (and thus requires no separate database container) -# we have used MySQL here merely for demonstration purposes (especially environment-variable-based configuration) - version: '3.1' services: ghost: - image: ghost:1-alpine + image: ghost:4-alpine restart: always ports: - 8080:2368 environment: - # see https://docs.ghost.org/docs/config#section-running-ghost-with-config-env-variables + # see https://ghost.org/docs/config/#configuration-options database__client: mysql database__connection__host: db database__connection__user: root database__connection__password: example database__connection__database: ghost + # this url value is just an example, and is likely wrong for your environment! + 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 db: - image: mysql:5.7 + image: mysql:8.0 restart: always environment: MYSQL_ROOT_PASSWORD: example diff --git a/golang/README.md b/golang/README.md index 884b5c5d3dc3..642ff5b72fd6 100644 --- a/golang/README.md +++ b/golang/README.md @@ -20,7 +20,7 @@ WARNING: [the Docker Community](https://github.com/docker-library/golang) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,40 +28,63 @@ WARNING: ## Simple Tags -- [`1.14.3-buster`, `1.14-buster`, `1-buster`, `buster`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/buster/Dockerfile) -- [`1.14.3-stretch`, `1.14-stretch`, `1-stretch`, `stretch`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/stretch/Dockerfile) -- [`1.14.3-alpine3.11`, `1.14-alpine3.11`, `1-alpine3.11`, `alpine3.11`, `1.14.3-alpine`, `1.14-alpine`, `1-alpine`, `alpine`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/alpine3.11/Dockerfile) -- [`1.14.3-windowsservercore-ltsc2016`, `1.14-windowsservercore-ltsc2016`, `1-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/windowsservercore-ltsc2016/Dockerfile) -- [`1.14.3-windowsservercore-1809`, `1.14-windowsservercore-1809`, `1-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/windowsservercore-1809/Dockerfile) -- [`1.14.3-nanoserver-1809`, `1.14-nanoserver-1809`, `1-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/nanoserver-1809/Dockerfile) -- [`1.13.11-buster`, `1.13-buster`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/buster/Dockerfile) -- [`1.13.11-stretch`, `1.13-stretch`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/stretch/Dockerfile) -- [`1.13.11-alpine3.11`, `1.13-alpine3.11`, `1.13.11-alpine`, `1.13-alpine`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/alpine3.11/Dockerfile) -- [`1.13.11-alpine3.10`, `1.13-alpine3.10`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/alpine3.10/Dockerfile) -- [`1.13.11-windowsservercore-ltsc2016`, `1.13-windowsservercore-ltsc2016`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/windowsservercore-ltsc2016/Dockerfile) -- [`1.13.11-windowsservercore-1809`, `1.13-windowsservercore-1809`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/windowsservercore-1809/Dockerfile) -- [`1.13.11-nanoserver-1809`, `1.13-nanoserver-1809`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/nanoserver-1809/Dockerfile) +- [`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) ## Shared Tags -- `1.14.3`, `1.14`, `1`, `latest`: - - [`1.14.3-buster`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/buster/Dockerfile) - - [`1.14.3-windowsservercore-ltsc2016`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/windowsservercore-ltsc2016/Dockerfile) - - [`1.14.3-windowsservercore-1809`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/windowsservercore-1809/Dockerfile) -- `1.14.3-windowsservercore`, `1.14-windowsservercore`, `1-windowsservercore`, `windowsservercore`: - - [`1.14.3-windowsservercore-ltsc2016`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/windowsservercore-ltsc2016/Dockerfile) - - [`1.14.3-windowsservercore-1809`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/windowsservercore-1809/Dockerfile) -- `1.14.3-nanoserver`, `1.14-nanoserver`, `1-nanoserver`, `nanoserver`: - - [`1.14.3-nanoserver-1809`](https://github.com/docker-library/golang/blob/d57a23e1c68ef0a393ef9c9267bddf0086959e3e/1.14/windows/nanoserver-1809/Dockerfile) -- `1.13.11`, `1.13`: - - [`1.13.11-buster`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/buster/Dockerfile) - - [`1.13.11-windowsservercore-ltsc2016`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/windowsservercore-ltsc2016/Dockerfile) - - [`1.13.11-windowsservercore-1809`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/windowsservercore-1809/Dockerfile) -- `1.13.11-windowsservercore`, `1.13-windowsservercore`: - - [`1.13.11-windowsservercore-ltsc2016`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/windowsservercore-ltsc2016/Dockerfile) - - [`1.13.11-windowsservercore-1809`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/windowsservercore-1809/Dockerfile) -- `1.13.11-nanoserver`, `1.13-nanoserver`: - - [`1.13.11-nanoserver-1809`](https://github.com/docker-library/golang/blob/fa9e58f43dbaa227cf05f1b0dc5504f73a50bf41/1.13/windows/nanoserver-1809/Dockerfile) +- `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) # Quick reference (cont.) @@ -69,14 +92,14 @@ WARNING: [https://github.com/docker-library/golang/issues](https://github.com/docker-library/golang/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`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/), [`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/), [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/golang`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fgolang) + [official-images repo's `library/golang` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgolang) [official-images repo's `library/golang` file](https://github.com/docker-library/official-images/blob/master/library/golang) ([history](https://github.com/docker-library/official-images/commits/master/library/golang)) - **Source of this description**: @@ -92,18 +115,23 @@ Go (a.k.a., Golang) is a programming language first developed at Google. It is a # How to use this image +**Note:** `/go` is world-writable to allow flexibility in the user which runs the container (for example, in a container started with `--user 1000:1000`, running `go get github.com/example/...` into the default `$GOPATH` will succeed). While the `777` directory would be insecure on a regular host setup, there are not typically other processes or users inside the container, so this is equivalent to `700` for Docker usage, but allowing for `--user` flexibility. + ## Start a Go instance in your app -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: +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.13 +FROM golang:1.19 -WORKDIR /go/src/app -COPY . . +WORKDIR /usr/src/app -RUN go get -d -v ./... -RUN go install -v ./... +# 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 + +COPY . . +RUN go build -v -o /usr/local/bin/app ./... CMD ["app"] ``` @@ -120,13 +148,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.13 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 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.13 make +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 make ``` ## Cross-compile your app inside the Docker container @@ -134,13 +162,13 @@ $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.13 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.13 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.19 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.13 bash +$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.19 bash $ for GOOS in darwin linux; do > for GOARCH in 386 amd64; do > export GOOS GOARCH @@ -157,15 +185,17 @@ 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 buster or stretch 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 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. ## `golang:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly experimental, and *not* officially supported by the Go project (see [golang/go#19938](https://github.com/golang/go/issues/19938) for details). -This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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), which can lead to unexpected behavior. 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). +To minimize image size, additional related tools (such as `git`, `gcc`, or `bash`) are not 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). See also [docker-library/golang#250 (comment)](https://github.com/docker-library/golang/issues/250#issuecomment-451201761) for a longer explanation. ## `golang:-windowsservercore` diff --git a/golang/content.md b/golang/content.md index 684a3b06ff79..e104a68f5850 100644 --- a/golang/content.md +++ b/golang/content.md @@ -8,18 +8,23 @@ Go (a.k.a., Golang) is a programming language first developed at Google. It is a # How to use this image +**Note:** `/go` is world-writable to allow flexibility in the user which runs the container (for example, in a container started with `--user 1000:1000`, running `go get github.com/example/...` into the default `$GOPATH` will succeed). While the `777` directory would be insecure on a regular host setup, there are not typically other processes or users inside the container, so this is equivalent to `700` for Docker usage, but allowing for `--user` flexibility. + ## Start a Go instance in your app -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: +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.13 +FROM %%IMAGE%%:1.19 -WORKDIR /go/src/app -COPY . . +WORKDIR /usr/src/app -RUN go get -d -v ./... -RUN go install -v ./... +# 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 + +COPY . . +RUN go build -v -o /usr/local/bin/app ./... CMD ["app"] ``` @@ -36,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.13 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 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.13 make +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 make ``` ## Cross-compile your app inside the Docker container @@ -50,13 +55,13 @@ $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.13 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.13 go build -v +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 %%IMAGE%%:1.19 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.13 bash +$ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:1.19 bash $ for GOOS in darwin linux; do > for GOARCH in 386 amd64; do > export GOOS GOARCH diff --git a/golang/variant-alpine.md b/golang/variant-alpine.md new file mode 100644 index 000000000000..f14e58f4f45b --- /dev/null +++ b/golang/variant-alpine.md @@ -0,0 +1,9 @@ +## `%%IMAGE%%:-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 highly experimental, and *not* officially supported by the Go project (see [golang/go#19938](https://github.com/golang/go/issues/19938) for details). + +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), which can lead to unexpected behavior. 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, additional related tools (such as `git`, `gcc`, or `bash`) are not 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). See also [docker-library/golang#250 (comment)](https://github.com/docker-library/golang/issues/250#issuecomment-451201761) for a longer explanation. diff --git a/gradle/README.md b/gradle/README.md index 0662bdebe319..7704bd2261c2 100644 --- a/gradle/README.md +++ b/gradle/README.md @@ -20,16 +20,29 @@ WARNING: [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) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.4.0-jdk8`, `6.4-jdk8`, `jdk8`, `6.4.0-jdk`, `6.4-jdk`, `jdk`, `6.4.0`, `6.4`, `latest`](https://github.com/keeganwitt/docker-gradle/blob/cef7b34da71a291cd4c2f6c1020d57c8457343db/jdk8/Dockerfile) -- [`6.4.0-jre8`, `6.4-jre8`, `jre8`, `6.4.0-jre`, `6.4-jre`, `jre`](https://github.com/keeganwitt/docker-gradle/blob/cef7b34da71a291cd4c2f6c1020d57c8457343db/jre8/Dockerfile) -- [`6.4.0-jdk11`, `6.4-jdk11`, `jdk11`](https://github.com/keeganwitt/docker-gradle/blob/cef7b34da71a291cd4c2f6c1020d57c8457343db/jdk11/Dockerfile) -- [`6.4.0-jre11`, `6.4-jre11`, `jre11`](https://github.com/keeganwitt/docker-gradle/blob/cef7b34da71a291cd4c2f6c1020d57c8457343db/jre11/Dockerfile) -- [`6.4.0-jdk14`, `6.4-jdk14`, `jdk14`](https://github.com/keeganwitt/docker-gradle/blob/cef7b34da71a291cd4c2f6c1020d57c8457343db/jdk14/Dockerfile) -- [`6.4.0-jre14`, `6.4-jre14`, `jre14`](https://github.com/keeganwitt/docker-gradle/blob/cef7b34da71a291cd4c2f6c1020d57c8457343db/jre14/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +57,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/gradle`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fgradle) + [official-images repo's `library/gradle` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgradle) [official-images repo's `library/gradle` file](https://github.com/docker-library/official-images/blob/master/library/gradle) ([history](https://github.com/docker-library/official-images/commits/master/library/gradle)) - **Source of this description**: @@ -68,6 +81,24 @@ Note the above command runs using uid/gid 1000 (user *gradle*) to avoid running 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. +# Image Variants + +The `gradle` images come in many flavors, each designed for a specific use case. + +## `gradle:` + +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. + +## `gradle:-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://gradle.org/license/) for the software contained in this image. diff --git a/groovy/README.md b/groovy/README.md index 494a80612ce1..d77c96b418e6 100644 --- a/groovy/README.md +++ b/groovy/README.md @@ -20,16 +20,20 @@ WARNING: [the Apache Groovy project](https://github.com/groovy/docker-groovy) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.0.2-jdk8`, `3.0-jdk8`, `3.0.2-jdk`, `3.0-jdk`, `jdk8`, `jdk`](https://github.com/groovy/docker-groovy/blob/a4f34b40e606ef013c6e05ef9db18844befa6a47/jdk8/Dockerfile) -- [`3.0.2-jre8`, `3.0-jre8`, `3.0.2-jre`, `3.0-jre`, `3.0.2`, `3.0`, `jre8`, `jre`, `latest`](https://github.com/groovy/docker-groovy/blob/a4f34b40e606ef013c6e05ef9db18844befa6a47/jre8/Dockerfile) -- [`3.0.2-jdk11`, `3.0-jdk11`, `jdk11`](https://github.com/groovy/docker-groovy/blob/a4f34b40e606ef013c6e05ef9db18844befa6a47/jdk11/Dockerfile) -- [`3.0.2-jre11`, `3.0-jre11`, `jre11`](https://github.com/groovy/docker-groovy/blob/a4f34b40e606ef013c6e05ef9db18844befa6a47/jre11/Dockerfile) -- [`3.0.2-jdk14`, `3.0-jdk14`, `jdk14`](https://github.com/groovy/docker-groovy/blob/a4f34b40e606ef013c6e05ef9db18844befa6a47/jdk14/Dockerfile) -- [`3.0.2-jre14`, `3.0-jre14`, `jre14`](https://github.com/groovy/docker-groovy/blob/a4f34b40e606ef013c6e05ef9db18844befa6a47/jre14/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +48,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/groovy`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fgroovy) + [official-images repo's `library/groovy` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgroovy) [official-images repo's `library/groovy` file](https://github.com/docker-library/official-images/blob/master/library/groovy) ([history](https://github.com/docker-library/official-images/commits/master/library/groovy)) - **Source of this description**: @@ -77,6 +81,24 @@ docker volume create --name grapes-cache docker run --rm -it -v grapes-cache:/home/groovy/.groovy/grapes groovy ``` +# Image Variants + +The `groovy` images come in many flavors, each designed for a specific use case. + +## `groovy:` + +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. + +## `groovy:-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](http://www.apache.org/licenses/LICENSE-2.0.html) for the software contained in this image. diff --git a/haproxy/README.md b/haproxy/README.md index 28dbc83a44c1..bbbc263407da 100644 --- a/haproxy/README.md +++ b/haproxy/README.md @@ -20,24 +20,24 @@ WARNING: [the Docker Community](https://github.com/docker-library/haproxy) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.2-dev7`, `2.2-rc`](https://github.com/docker-library/haproxy/blob/e5884936dca8ee8968522abff21713042983a898/2.2-rc/Dockerfile) -- [`2.2-dev7-alpine`, `2.2-rc-alpine`](https://github.com/docker-library/haproxy/blob/e5884936dca8ee8968522abff21713042983a898/2.2-rc/alpine/Dockerfile) -- [`2.1.4`, `2.1`, `latest`](https://github.com/docker-library/haproxy/blob/eeaaa570ccaeec6fa7e545b9314d6f246b6b283c/2.1/Dockerfile) -- [`2.1.4-alpine`, `2.1-alpine`, `alpine`](https://github.com/docker-library/haproxy/blob/bfa23c19cffdb4247474b2138feeeb14f48b7fe4/2.1/alpine/Dockerfile) -- [`2.0.14`, `2.0`](https://github.com/docker-library/haproxy/blob/eeaaa570ccaeec6fa7e545b9314d6f246b6b283c/2.0/Dockerfile) -- [`2.0.14-alpine`, `2.0-alpine`](https://github.com/docker-library/haproxy/blob/bfa23c19cffdb4247474b2138feeeb14f48b7fe4/2.0/alpine/Dockerfile) -- [`1.9.15`, `1.9`, `1`](https://github.com/docker-library/haproxy/blob/eeaaa570ccaeec6fa7e545b9314d6f246b6b283c/1.9/Dockerfile) -- [`1.9.15-alpine`, `1.9-alpine`, `1-alpine`](https://github.com/docker-library/haproxy/blob/bfa23c19cffdb4247474b2138feeeb14f48b7fe4/1.9/alpine/Dockerfile) -- [`1.8.25`, `1.8`](https://github.com/docker-library/haproxy/blob/eeaaa570ccaeec6fa7e545b9314d6f246b6b283c/1.8/Dockerfile) -- [`1.8.25-alpine`, `1.8-alpine`](https://github.com/docker-library/haproxy/blob/bfa23c19cffdb4247474b2138feeeb14f48b7fe4/1.8/alpine/Dockerfile) -- [`1.7.12`, `1.7`](https://github.com/docker-library/haproxy/blob/14431e31ab981456585021f7dca35626c5e060c1/1.7/Dockerfile) -- [`1.7.12-alpine`, `1.7-alpine`](https://github.com/docker-library/haproxy/blob/bfa23c19cffdb4247474b2138feeeb14f48b7fe4/1.7/alpine/Dockerfile) -- [`1.6.15`, `1.6`](https://github.com/docker-library/haproxy/blob/4e917ff7cbc629b29af59d02057ceece8102e4e0/1.6/Dockerfile) -- [`1.6.15-alpine`, `1.6-alpine`](https://github.com/docker-library/haproxy/blob/bfa23c19cffdb4247474b2138feeeb14f48b7fe4/1.6/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -52,7 +52,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/haproxy`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fhaproxy) + [official-images repo's `library/haproxy` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhaproxy) [official-images repo's `library/haproxy` file](https://github.com/docker-library/official-images/blob/master/library/haproxy) ([history](https://github.com/docker-library/official-images/commits/master/library/haproxy)) - **Source of this description**: @@ -64,20 +64,20 @@ HAProxy is a free, open source high availability solution, providing load balanc > [wikipedia.org/wiki/HAProxy](https://en.wikipedia.org/wiki/HAProxy) -![logo](https://raw.githubusercontent.com/docker-library/docs/566c944ca5eb9d1947c8a2e8821f8de2b0fc144c/haproxy/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/4da3e2446a4c257c3a32faac6256bee81f770316/haproxy/logo.png) # How to use this image Since no two users of HAProxy are likely to configure it exactly alike, this image does not come with any default configuration. -Please refer to [upstream's excellent (and comprehensive) documentation](https://cbonte.github.io/haproxy-dconv/) on the subject of configuring HAProxy for your needs. +Please refer to [upstream's excellent (and comprehensive) documentation](https://docs.haproxy.org/) on the subject of configuring HAProxy for your needs. -It is also worth checking out the [`examples/` directory from upstream](http://git.haproxy.org/?p=haproxy-1.8.git;a=tree;f=examples). +It is also worth checking out the [`examples/` directory from upstream](http://git.haproxy.org/?p=haproxy-2.3.git;a=tree;f=examples). ## Create a `Dockerfile` ```dockerfile -FROM haproxy:1.7 +FROM haproxy:2.3 COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg ``` @@ -96,15 +96,17 @@ $ docker run -it --rm --name haproxy-syntax-check my-haproxy haproxy -c -f /usr/ ## Run the container ```console -$ docker run -d --name my-running-haproxy my-haproxy +$ docker run -d --name my-running-haproxy --sysctl net.ipv4.ip_unprivileged_port_start=0 my-haproxy ``` -You may need to publish the ports your HAProxy is listening on to the host by specifying the -p option, for example -p 8080:80 to publish port 8080 from the container host to port 80 in the container. Make sure the port you're using is free. +You will need a kernel at [version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310) to use `--sysctl net.ipv4.ip_unprivileged_port_start=0` , you may need to publish the ports your HAProxy is listening on to the host by specifying the -p option, for example -p 8080:80 to publish port 8080 from the container host to port 80 in the container. Make sure the port you're using is free. + +**Note:** the 2.4+ versions of the container will run as `USER haproxy` by default (hence the `--sysctl net.ipv4.ip_unprivileged_port_start=0` above), but older versions still default to `root` for compatibility reasons; use `--user haproxy` (or any other UID) if you want to run as non-root in older versions. ## Directly via bind mount ```console -$ docker run -d --name my-running-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro haproxy:1.7 +$ docker run -d --name my-running-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 haproxy:2.3 ``` Note that your host's `/path/to/etc/haproxy` folder should be populated with a file named `haproxy.cfg`. If this configuration file refers to any other files within that folder then you should ensure that they also exist (e.g. template files such as `400.http`, `404.http`, and so forth). However, many minimal configurations do not require any supporting files. @@ -117,7 +119,7 @@ If you used a bind mount for the config and have edited your `haproxy.cfg` file, $ docker kill -s HUP my-running-haproxy ``` -The entrypoint script in the image checks for running the command `haproxy` and replaces it with `haproxy-systemd-wrapper` from HAProxy upstream which takes care of signal handling to do the graceful reload. Under the hood this uses the `-sf` option of `haproxy` so "there are two small windows of a few milliseconds each where it is possible that a few connection failures will be noticed during high loads" (see [Stopping and restarting HAProxy](http://www.haproxy.org/download/1.7/doc/management.txt)). +The entrypoint script in the image checks for running the command `haproxy` and replaces it with `haproxy-systemd-wrapper` from HAProxy upstream which takes care of signal handling to do the graceful reload. Under the hood this uses the `-sf` option of `haproxy` so "there are two small windows of a few milliseconds each where it is possible that a few connection failures will be noticed during high loads" (see [Stopping and restarting HAProxy](http://www.haproxy.org/download/2.3/doc/management.txt)). # Image Variants @@ -127,11 +129,13 @@ 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. + ## `haproxy:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/haproxy/content.md b/haproxy/content.md index e05cf3fb753f..1373341dd163 100644 --- a/haproxy/content.md +++ b/haproxy/content.md @@ -10,14 +10,14 @@ HAProxy is a free, open source high availability solution, providing load balanc Since no two users of HAProxy are likely to configure it exactly alike, this image does not come with any default configuration. -Please refer to [upstream's excellent (and comprehensive) documentation](https://cbonte.github.io/haproxy-dconv/) on the subject of configuring HAProxy for your needs. +Please refer to [upstream's excellent (and comprehensive) documentation](https://docs.haproxy.org/) on the subject of configuring HAProxy for your needs. -It is also worth checking out the [`examples/` directory from upstream](http://git.haproxy.org/?p=haproxy-1.8.git;a=tree;f=examples). +It is also worth checking out the [`examples/` directory from upstream](http://git.haproxy.org/?p=haproxy-2.3.git;a=tree;f=examples). ## Create a `Dockerfile` ```dockerfile -FROM %%IMAGE%%:1.7 +FROM %%IMAGE%%:2.3 COPY haproxy.cfg /usr/local/etc/haproxy/haproxy.cfg ``` @@ -36,15 +36,17 @@ $ docker run -it --rm --name haproxy-syntax-check my-haproxy haproxy -c -f /usr/ ## Run the container ```console -$ docker run -d --name my-running-haproxy my-haproxy +$ docker run -d --name my-running-haproxy --sysctl net.ipv4.ip_unprivileged_port_start=0 my-haproxy ``` -You may need to publish the ports your HAProxy is listening on to the host by specifying the -p option, for example -p 8080:80 to publish port 8080 from the container host to port 80 in the container. Make sure the port you're using is free. +You will need a kernel at [version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310) to use `--sysctl net.ipv4.ip_unprivileged_port_start=0` , you may need to publish the ports your HAProxy is listening on to the host by specifying the -p option, for example -p 8080:80 to publish port 8080 from the container host to port 80 in the container. Make sure the port you're using is free. + +**Note:** the 2.4+ versions of the container will run as `USER haproxy` by default (hence the `--sysctl net.ipv4.ip_unprivileged_port_start=0` above), but older versions still default to `root` for compatibility reasons; use `--user haproxy` (or any other UID) if you want to run as non-root in older versions. ## Directly via bind mount ```console -$ docker run -d --name my-running-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro %%IMAGE%%:1.7 +$ docker run -d --name my-running-haproxy -v /path/to/etc/haproxy:/usr/local/etc/haproxy:ro --sysctl net.ipv4.ip_unprivileged_port_start=0 %%IMAGE%%:2.3 ``` Note that your host's `/path/to/etc/haproxy` folder should be populated with a file named `haproxy.cfg`. If this configuration file refers to any other files within that folder then you should ensure that they also exist (e.g. template files such as `400.http`, `404.http`, and so forth). However, many minimal configurations do not require any supporting files. @@ -57,4 +59,4 @@ If you used a bind mount for the config and have edited your `haproxy.cfg` file, $ docker kill -s HUP my-running-haproxy ``` -The entrypoint script in the image checks for running the command `haproxy` and replaces it with `haproxy-systemd-wrapper` from HAProxy upstream which takes care of signal handling to do the graceful reload. Under the hood this uses the `-sf` option of `haproxy` so "there are two small windows of a few milliseconds each where it is possible that a few connection failures will be noticed during high loads" (see [Stopping and restarting HAProxy](http://www.haproxy.org/download/1.7/doc/management.txt)). +The entrypoint script in the image checks for running the command `haproxy` and replaces it with `haproxy-systemd-wrapper` from HAProxy upstream which takes care of signal handling to do the graceful reload. Under the hood this uses the `-sf` option of `haproxy` so "there are two small windows of a few milliseconds each where it is possible that a few connection failures will be noticed during high loads" (see [Stopping and restarting HAProxy](http://www.haproxy.org/download/2.3/doc/management.txt)). diff --git a/haproxy/logo.png b/haproxy/logo.png index 1be03b25ac43..06262b083748 100644 Binary files a/haproxy/logo.png and b/haproxy/logo.png differ diff --git a/haskell/README.md b/haskell/README.md index cdb37bdbcd36..fc1ccc553df3 100644 --- a/haskell/README.md +++ b/haskell/README.md @@ -20,14 +20,16 @@ WARNING: [the Docker Community](https://github.com/haskell/docker-haskell) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8.10.1-buster`, `8.10-buster`, `8-buster`, `buster`, `8.10.1`, `8.10`, `8`, `latest`](https://github.com/haskell/docker-haskell/blob/82f44382a183fcc1d0026d8abe58259195a8930c/8.10/buster/Dockerfile) -- [`8.10.1-stretch`, `8.10-stretch`, `8-stretch`, `stretch`](https://github.com/haskell/docker-haskell/blob/82f44382a183fcc1d0026d8abe58259195a8930c/8.10/stretch/Dockerfile) -- [`8.8.3-buster`, `8.8-buster`, `8.8.3`, `8.8`](https://github.com/haskell/docker-haskell/blob/82f44382a183fcc1d0026d8abe58259195a8930c/8.8/buster/Dockerfile) -- [`8.8.3-stretch`, `8.8-stretch`](https://github.com/haskell/docker-haskell/blob/82f44382a183fcc1d0026d8abe58259195a8930c/8.8/stretch/Dockerfile) +- [`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) # Quick reference (cont.) @@ -35,14 +37,14 @@ WARNING: [https://github.com/haskell/docker-haskell/issues](https://github.com/haskell/docker-haskell/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/haskell/) + [`amd64`](https://hub.docker.com/r/amd64/haskell/), [`arm64v8`](https://hub.docker.com/r/arm64v8/haskell/) - **Published image artifact details**: [repo-info repo's `repos/haskell/` directory](https://github.com/docker-library/repo-info/blob/master/repos/haskell) ([history](https://github.com/docker-library/repo-info/commits/master/repos/haskell)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/haskell`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fhaskell) + [official-images repo's `library/haskell` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhaskell) [official-images repo's `library/haskell` file](https://github.com/docker-library/official-images/blob/master/library/haskell) ([history](https://github.com/docker-library/official-images/commits/master/library/haskell)) - **Source of this description**: @@ -60,37 +62,39 @@ A large number of production-quality Haskell libraries are available from [Hacka ## About this image -This image ships a minimal Haskell toolchain (`ghc` and `cabal-install`) from the upstream [downloads.haskell.org](https://launchpad.net/~hvr/+archive/ubuntu/ghc) Debian repository as well as the `stack` tool ([https://www.haskellstack.org/](https://www.haskellstack.org/)). +This image ships a minimal Haskell toolchain (`ghc` and `cabal-install`) as well as the `stack` tool ([https://www.haskellstack.org/](https://www.haskellstack.org/)) where possible. [`stack` does not currently support `ARM64`](https://github.com/commercialhaskell/stack/issues/2103) so is not included for that processor architecture. -Note: The GHC developers do not support legacy release branches (i.e. `7.8.x`). While older GHC release tags are available in this DockerHub repository, only the two most recent minor releases will receive updates or be shown in the "Supported tags ..." section at the top of this page. +ARM64 support is new and should be considered experimental at this stage. Support has been added as of `8.10.7`, `9.0.2` and `9.2.1`. -Additionally, we support the two most versions of Debian (`stable` and `oldstable`) as variants, with the most recent being the default if not specified. +Note: The GHC developers do not support legacy release branches (i.e. `7.8.x`). Only the two most recent minor releases will receive updates or be shown in the "Supported tags ..." section at the top of this page. -> Note: `haskell:8.8.3` was updated from Debian Stretch to Buster, so you will need to specify `haskell:8.8.3-stretch` to stick with Stretch in this particular case. +Additionally, we aim to support the two most recent versions of Debian (`stable` and `oldstable`) as variants, with the most recent being the default if not specified. + +> Note: Currently `stable` Debian is version 11 bullseye, however it is not yet supported by Haskell tooling. Until that time the default will remain Debian 10 buster. We have dropped support for Debian 9 stretch. ## How to use this image Start an interactive interpreter session with `ghci`: ```console -$ docker run -it --rm haskell:8 -GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help +$ docker run -it --rm haskell:9 +GHCi, version 9.0.1: http://www.haskell.org/ghc/ :? for help Prelude> ``` Dockerize an application using `stack`: ```dockerfile -FROM haskell:8 -RUN stack install pandoc pandoc-citeproc +FROM haskell:8.10 +RUN stack install --resolver lts-17.14 pandoc citeproc ENTRYPOINT ["pandoc"] ``` Dockerize an application using `cabal`: ```dockerfile -FROM haskell:8 -RUN cabal update && cabal install pandoc pandoc-citeproc +FROM haskell:8.10 +RUN cabal update && cabal install pandoc citeproc ENTRYPOINT ["pandoc"] ``` @@ -109,7 +113,7 @@ COPY ./example.cabal /opt/example/example.cabal # Docker will cache this command as a layer, freeing us up to # modify source code without re-installing dependencies # (unless the .cabal file changes!) -RUN cabal install --only-dependencies -j4 +RUN cabal build --only-dependencies -j4 # Add and Install Application Code COPY . /opt/example @@ -154,6 +158,24 @@ Selected mirror https://s3.amazonaws.com/hackage.fpcomplete.com/ The alternative to use `--install-ghc` doesn't make sense in a Docker image context, and hence the global `install-ghc` flag has been set to `false` (as of `haskell:8.2.2` & `haskell:8.4.3`) to avoid the default behavior of bootstrapping a new GHC in the container. +# Image Variants + +The `haskell` images come in many flavors, each designed for a specific use case. + +## `haskell:` + +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. + +## `haskell:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `ghc`, `cabal-install` and `stack`. In addition, [profiling support](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html) is not included which saves ~ 700MB of space. + +If image size is of concern, we recommend using the slim images. + # License This image is licensed under the MIT License ([LICENSE](https://github.com/haskell/docker-haskell/blob/master/LICENSE)) and includes software licensed under BSD licenses: [Glasgow Haskell Compiler License](https://www.haskell.org/ghc/license), [Stack License](https://github.com/commercialhaskell/stack/blob/master/LICENSE). diff --git a/haskell/content.md b/haskell/content.md index 8bb6c14cfe1c..e0cf83eee3b7 100644 --- a/haskell/content.md +++ b/haskell/content.md @@ -10,37 +10,39 @@ A large number of production-quality Haskell libraries are available from [Hacka ## About this image -This image ships a minimal Haskell toolchain (`ghc` and `cabal-install`) from the upstream [downloads.haskell.org](https://launchpad.net/~hvr/+archive/ubuntu/ghc) Debian repository as well as the `stack` tool ([https://www.haskellstack.org/](https://www.haskellstack.org/)). +This image ships a minimal Haskell toolchain (`ghc` and `cabal-install`) as well as the `stack` tool ([https://www.haskellstack.org/](https://www.haskellstack.org/)) where possible. [`stack` does not currently support `ARM64`](https://github.com/commercialhaskell/stack/issues/2103) so is not included for that processor architecture. -Note: The GHC developers do not support legacy release branches (i.e. `7.8.x`). While older GHC release tags are available in this DockerHub repository, only the two most recent minor releases will receive updates or be shown in the "Supported tags ..." section at the top of this page. +ARM64 support is new and should be considered experimental at this stage. Support has been added as of `8.10.7`, `9.0.2` and `9.2.1`. -Additionally, we support the two most versions of Debian (`stable` and `oldstable`) as variants, with the most recent being the default if not specified. +Note: The GHC developers do not support legacy release branches (i.e. `7.8.x`). Only the two most recent minor releases will receive updates or be shown in the "Supported tags ..." section at the top of this page. -> Note: `%%IMAGE%%:8.8.3` was updated from Debian Stretch to Buster, so you will need to specify `%%IMAGE%%:8.8.3-stretch` to stick with Stretch in this particular case. +Additionally, we aim to support the two most recent versions of Debian (`stable` and `oldstable`) as variants, with the most recent being the default if not specified. + +> Note: Currently `stable` Debian is version 11 bullseye, however it is not yet supported by Haskell tooling. Until that time the default will remain Debian 10 buster. We have dropped support for Debian 9 stretch. ## How to use this image Start an interactive interpreter session with `ghci`: ```console -$ docker run -it --rm %%IMAGE%%:8 -GHCi, version 8.4.3: http://www.haskell.org/ghc/ :? for help +$ docker run -it --rm %%IMAGE%%:9 +GHCi, version 9.0.1: http://www.haskell.org/ghc/ :? for help Prelude> ``` Dockerize an application using `stack`: ```dockerfile -FROM %%IMAGE%%:8 -RUN stack install pandoc pandoc-citeproc +FROM %%IMAGE%%:8.10 +RUN stack install --resolver lts-17.14 pandoc citeproc ENTRYPOINT ["pandoc"] ``` Dockerize an application using `cabal`: ```dockerfile -FROM %%IMAGE%%:8 -RUN cabal update && cabal install pandoc pandoc-citeproc +FROM %%IMAGE%%:8.10 +RUN cabal update && cabal install pandoc citeproc ENTRYPOINT ["pandoc"] ``` @@ -59,7 +61,7 @@ COPY ./example.cabal /opt/example/example.cabal # Docker will cache this command as a layer, freeing us up to # modify source code without re-installing dependencies # (unless the .cabal file changes!) -RUN cabal install --only-dependencies -j4 +RUN cabal build --only-dependencies -j4 # Add and Install Application Code COPY . /opt/example diff --git a/haskell/variant-slim.md b/haskell/variant-slim.md new file mode 100644 index 000000000000..cb3bc2292356 --- /dev/null +++ b/haskell/variant-slim.md @@ -0,0 +1,5 @@ +## `%%IMAGE%%:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `ghc`, `cabal-install` and `stack`. In addition, [profiling support](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/profiling.html) is not included which saves ~ 700MB of space. + +If image size is of concern, we recommend using the slim images. diff --git a/haxe/README.md b/haxe/README.md index 2ced370c3fb9..05fe28e5106d 100644 --- a/haxe/README.md +++ b/haxe/README.md @@ -20,7 +20,7 @@ WARNING: [the Haxe Foundation](https://github.com/HaxeFoundation/docker-library-haxe) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,80 +28,89 @@ WARNING: ## Simple Tags -- [`4.0.5-buster`, `4.0-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/buster/Dockerfile) -- [`4.0.5-stretch`, `4.0-stretch`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/stretch/Dockerfile) -- [`4.0.5-jessie`, `4.0-jessie`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/jessie/Dockerfile) -- [`4.0.5-windowsservercore-1809`, `4.0-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/windowsservercore-1809/Dockerfile) -- [`4.0.5-windowsservercore-ltsc2016`, `4.0-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/windowsservercore-ltsc2016/Dockerfile) -- [`4.0.5-alpine3.11`, `4.0-alpine3.11`, `4.0.5-alpine`, `4.0-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c06030895887da79e312f97bb434ca0f0e0f7f22/4.0/alpine3.11/Dockerfile) -- [`4.0.5-alpine3.10`, `4.0-alpine3.10`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/alpine3.10/Dockerfile) -- [`4.0.5-alpine3.9`, `4.0-alpine3.9`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/alpine3.9/Dockerfile) -- [`4.0.5-alpine3.8`, `4.0-alpine3.8`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/alpine3.8/Dockerfile) -- [`3.4.7-buster`, `3.4-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/buster/Dockerfile) -- [`3.4.7-stretch`, `3.4-stretch`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/stretch/Dockerfile) -- [`3.4.7-jessie`, `3.4-jessie`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/jessie/Dockerfile) -- [`3.4.7-windowsservercore-1809`, `3.4-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.4/windowsservercore-1809/Dockerfile) -- [`3.4.7-windowsservercore-ltsc2016`, `3.4-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.4/windowsservercore-ltsc2016/Dockerfile) -- [`3.4.7-alpine3.11`, `3.4-alpine3.11`, `3.4.7-alpine`, `3.4-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c06030895887da79e312f97bb434ca0f0e0f7f22/3.4/alpine3.11/Dockerfile) -- [`3.4.7-alpine3.10`, `3.4-alpine3.10`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/alpine3.10/Dockerfile) -- [`3.4.7-alpine3.9`, `3.4-alpine3.9`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/alpine3.9/Dockerfile) -- [`3.4.7-alpine3.8`, `3.4-alpine3.8`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/alpine3.8/Dockerfile) -- [`3.3.0-rc.1-buster`, `3.3.0-buster`, `3.3-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/buster/Dockerfile) -- [`3.3.0-rc.1-stretch`, `3.3.0-stretch`, `3.3-stretch`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/stretch/Dockerfile) -- [`3.3.0-rc.1-jessie`, `3.3.0-jessie`, `3.3-jessie`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/jessie/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/7df74d220cce33998dde7623f8c9176d7fa938f7/3.3/windowsservercore-1809/Dockerfile) -- [`3.3.0-rc.1-windowsservercore-ltsc2016`, `3.3.0-windowsservercore-ltsc2016`, `3.3-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.3/windowsservercore-ltsc2016/Dockerfile) -- [`3.3.0-rc.1-alpine3.11`, `3.3.0-rc.1-alpine`, `3.3.0-alpine3.11`, `3.3-alpine3.11`, `3.3.0-alpine`, `3.3-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c06030895887da79e312f97bb434ca0f0e0f7f22/3.3/alpine3.11/Dockerfile) -- [`3.3.0-rc.1-alpine3.10`, `3.3.0-alpine3.10`, `3.3-alpine3.10`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/alpine3.10/Dockerfile) -- [`3.3.0-rc.1-alpine3.9`, `3.3.0-alpine3.9`, `3.3-alpine3.9`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/alpine3.9/Dockerfile) -- [`3.3.0-rc.1-alpine3.8`, `3.3.0-alpine3.8`, `3.3-alpine3.8`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/alpine3.8/Dockerfile) -- [`3.2.1-buster`, `3.2-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/buster/Dockerfile) -- [`3.2.1-stretch`, `3.2-stretch`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/stretch/Dockerfile) -- [`3.2.1-jessie`, `3.2-jessie`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/jessie/Dockerfile) -- [`3.2.1-windowsservercore-1809`, `3.2-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.2/windowsservercore-1809/Dockerfile) -- [`3.2.1-windowsservercore-ltsc2016`, `3.2-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.2/windowsservercore-ltsc2016/Dockerfile) -- [`3.2.1-alpine3.11`, `3.2-alpine3.11`, `3.2.1-alpine`, `3.2-alpine`](https://github.com/HaxeFoundation/docker-library-haxe/blob/c06030895887da79e312f97bb434ca0f0e0f7f22/3.2/alpine3.11/Dockerfile) -- [`3.2.1-alpine3.10`, `3.2-alpine3.10`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/alpine3.10/Dockerfile) -- [`3.2.1-alpine3.9`, `3.2-alpine3.9`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/alpine3.9/Dockerfile) -- [`3.2.1-alpine3.8`, `3.2-alpine3.8`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/alpine3.8/Dockerfile) -- [`3.1.3-stretch`, `3.1-stretch`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.1/stretch/Dockerfile) -- [`3.1.3-jessie`, `3.1-jessie`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.1/jessie/Dockerfile) -- [`3.1.3-windowsservercore-1809`, `3.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.1/windowsservercore-1809/Dockerfile) -- [`3.1.3-windowsservercore-ltsc2016`, `3.1-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.1/windowsservercore-ltsc2016/Dockerfile) +- [`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.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.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.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) ## Shared Tags -- `4.0.5`, `4.0`, `latest`: - - [`4.0.5-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/buster/Dockerfile) - - [`4.0.5-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/windowsservercore-1809/Dockerfile) - - [`4.0.5-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/windowsservercore-ltsc2016/Dockerfile) +- `4.2.5`, `4.2`, `latest`: + - [`4.2.5-bullseye`](https://github.com/HaxeFoundation/docker-library-haxe/blob/83789c10dc601064a234fd559206d1ec252228d7/4.2/bullseye/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-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-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-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-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-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/windowsservercore-1809/Dockerfile) - - [`4.0.5-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/38b1ceb14a5692ae2c655c056baaff79d963da33/4.0/windowsservercore-ltsc2016/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/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.4/buster/Dockerfile) - - [`3.4.7-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.4/windowsservercore-1809/Dockerfile) - - [`3.4.7-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.4/windowsservercore-ltsc2016/Dockerfile) + - [`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-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.4/windowsservercore-1809/Dockerfile) - - [`3.4.7-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.4/windowsservercore-ltsc2016/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.3.0-rc.1`, `3.3.0`, `3.3`: - - [`3.3.0-rc.1-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.3/buster/Dockerfile) - - [`3.3.0-rc.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.3/windowsservercore-1809/Dockerfile) - - [`3.3.0-rc.1-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.3/windowsservercore-ltsc2016/Dockerfile) + - [`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-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.3/windowsservercore-1809/Dockerfile) - - [`3.3.0-rc.1-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.3/windowsservercore-ltsc2016/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.2.1`, `3.2`: - - [`3.2.1-buster`](https://github.com/HaxeFoundation/docker-library-haxe/blob/b62c53f203ae20f2b3dcc1af2881ccab602a4fe1/3.2/buster/Dockerfile) - - [`3.2.1-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.2/windowsservercore-1809/Dockerfile) - - [`3.2.1-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.2/windowsservercore-ltsc2016/Dockerfile) + - [`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-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.2/windowsservercore-1809/Dockerfile) - - [`3.2.1-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.2/windowsservercore-ltsc2016/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.1.3-windowsservercore`, `3.1-windowsservercore`, `3.1.3`, `3.1`: - - [`3.1.3-windowsservercore-1809`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.1/windowsservercore-1809/Dockerfile) - - [`3.1.3-windowsservercore-ltsc2016`](https://github.com/HaxeFoundation/docker-library-haxe/blob/7df74d220cce33998dde7623f8c9176d7fa938f7/3.1/windowsservercore-ltsc2016/Dockerfile) + - [`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.) @@ -116,7 +125,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/haxe`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fhaxe) + [official-images repo's `library/haxe` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhaxe) [official-images repo's `library/haxe` file](https://github.com/docker-library/official-images/blob/master/library/haxe) ([history](https://github.com/docker-library/official-images/commits/master/library/haxe)) - **Source of this description**: @@ -194,7 +203,7 @@ 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 buster, jessie, or stretch 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 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. ## `haxe:-windowsservercore` @@ -207,9 +216,9 @@ For information about how to get Docker running on Windows, please see the relev ## `haxe:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/hello-world/README.md b/hello-world/README.md index f567e6d247be..73b30e657c5d 100644 --- a/hello-world/README.md +++ b/hello-world/README.md @@ -20,7 +20,7 @@ WARNING: [the Docker Community](https://github.com/docker-library/hello-world) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,16 +28,19 @@ WARNING: ## Simple Tags -- [`linux`](https://github.com/docker-library/hello-world/blob/7ecae6978055d2fb6960e2a29d24a2af612e2716/amd64/hello-world/Dockerfile) -- [`nanoserver-1809`](https://github.com/docker-library/hello-world/blob/9c93e37114a7fe99b5fc0d776e0b8dff99cbbb75/amd64/hello-world/nanoserver-1809/Dockerfile) +- [`linux`](https://github.com/docker-library/hello-world/blob/3332fbee4210b41738d83f6cfdc301a42b96e30d/amd64/hello-world/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/7ecae6978055d2fb6960e2a29d24a2af612e2716/amd64/hello-world/Dockerfile) - - [`nanoserver-1809`](https://github.com/docker-library/hello-world/blob/9c93e37114a7fe99b5fc0d776e0b8dff99cbbb75/amd64/hello-world/nanoserver-1809/Dockerfile) + - [`linux`](https://github.com/docker-library/hello-world/blob/3332fbee4210b41738d83f6cfdc301a42b96e30d/amd64/hello-world/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-1809`](https://github.com/docker-library/hello-world/blob/9c93e37114a7fe99b5fc0d776e0b8dff99cbbb75/amd64/hello-world/nanoserver-1809/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.) @@ -45,14 +48,14 @@ WARNING: [https://github.com/docker-library/hello-world/issues](https://github.com/docker-library/hello-world/issues) - **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/), [`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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/hello-world`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fhello-world) + [official-images repo's `library/hello-world` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhello-world) [official-images repo's `library/hello-world` file](https://github.com/docker-library/official-images/blob/master/library/hello-world) ([history](https://github.com/docker-library/official-images/commits/master/library/hello-world)) - **Source of this description**: @@ -86,8 +89,8 @@ For more examples and ideas, visit: $ docker images hello-world -REPOSITORY TAG IMAGE ID SIZE -hello-world latest bf756fb1ae65 13336 +REPOSITORY TAG IMAGE ID SIZE +hello-world latest feb5d9fea6a5 13.26kB ``` ![logo](https://raw.githubusercontent.com/docker-library/docs/01c12653951b2fe592c1f93a13b4e289ada0e3a1/hello-world/logo.png) @@ -96,6 +99,8 @@ hello-world latest bf756fb1ae65 13336 This image is a prime example of using the [`scratch`](https://hub.docker.com/_/scratch/) image effectively. See [`hello.c`](https://github.com/docker-library/hello-world/blob/master/hello.c) in https://github.com/docker-library/hello-world for the source code of the `hello` binary included in this image. +Because this image consists of nothing but a single static binary which prints some text to standard output, it can trivially be run as any arbitrary user (`docker run --user $RANDOM:$RANDOM hello-world`, for example). + # License View [license information](https://github.com/docker-library/hello-world/blob/master/LICENSE) for the software contained in this image. diff --git a/hello-world/content.md b/hello-world/content.md index 0bacc2c27224..fc79d8d7f4c3 100644 --- a/hello-world/content.md +++ b/hello-world/content.md @@ -26,8 +26,8 @@ For more examples and ideas, visit: $ docker images %%IMAGE%% -REPOSITORY TAG IMAGE ID SIZE -hello-world latest bf756fb1ae65 13336 +REPOSITORY TAG IMAGE ID SIZE +hello-world latest feb5d9fea6a5 13.26kB ``` %%LOGO%% @@ -35,3 +35,5 @@ hello-world latest bf756fb1ae65 13336 # How is this image created? This image is a prime example of using the [`scratch`](https://hub.docker.com/_/scratch/) image effectively. See [`hello.c`](%%GITHUB-REPO%%/blob/master/hello.c) in %%GITHUB-REPO%% for the source code of the `hello` binary included in this image. + +Because this image consists of nothing but a single static binary which prints some text to standard output, it can trivially be run as any arbitrary user (`docker run --user $RANDOM:$RANDOM %%IMAGE%%`, for example). diff --git a/hello-world/update.sh b/hello-world/update.sh index 505ed6490b1e..093a50fdd090 100755 --- a/hello-world/update.sh +++ b/hello-world/update.sh @@ -15,20 +15,16 @@ echo '$ docker run %%IMAGE%%' docker run --rm hello-world echo echo '$ docker images %%IMAGE%%' -{ - id="$(docker image inspect --format '{{ .Id }}' "$image:latest" | sed -r 's/^sha256:([a-f0-9]{12})[a-f0-9]+$/\1/')" - size="$(docker image inspect --format '{{ .VirtualSize }}' "$image:latest")" - echo $'REPOSITORY\tTAG\tIMAGE ID\tSIZE' - echo "$image"$'\tlatest\t'"$id"$'\t'"$size" -} | column -t -s$'\t' +docker image ls --format 'table {{ .Repository }}\t{{ .Tag }}\t{{ .ID }}\t{{ .VirtualSize }}' "$image:latest" echo '```' -echo -echo '%%LOGO%%' - -echo cat <<'EOF' + +%%LOGO%% + # How is this image created? This image is a prime example of using the [`scratch`](https://hub.docker.com/_/scratch/) image effectively. See [`hello.c`](%%GITHUB-REPO%%/blob/master/hello.c) in %%GITHUB-REPO%% for the source code of the `hello` binary included in this image. + +Because this image consists of nothing but a single static binary which prints some text to standard output, it can trivially be run as any arbitrary user (`docker run --user $RANDOM:$RANDOM %%IMAGE%%`, for example). EOF diff --git a/hitch/README-short.txt b/hitch/README-short.txt new file mode 100644 index 000000000000..53536e019edc --- /dev/null +++ b/hitch/README-short.txt @@ -0,0 +1 @@ +Hitch is a libev-based high performance SSL/TLS proxy by Varnish Software. diff --git a/hitch/README.md b/hitch/README.md new file mode 100644 index 000000000000..7d609ca4c60b --- /dev/null +++ b/hitch/README.md @@ -0,0 +1,121 @@ + + +# Quick reference + +- **Maintained by**: + [the Hitch Docker Community](https://github.com/varnish/docker-hitch) + +- **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`, `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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/varnish/docker-hitch/issues](https://github.com/varnish/docker-hitch/issues) + +- **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/) + +- **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)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/hitch` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhitch) + [official-images repo's `library/hitch` file](https://github.com/docker-library/official-images/blob/master/library/hitch) ([history](https://github.com/docker-library/official-images/commits/master/library/hitch)) + +- **Source of this description**: + [docs repo's `hitch/` directory](https://github.com/docker-library/docs/tree/master/hitch) ([history](https://github.com/docker-library/docs/commits/master/hitch)) + +# What is Hitch? + +[Hitch](https://hitch-tls.org/) is a *libev-based* high performance *SSL/TLS proxy* by [Varnish Software](https://varnish-software.com). It is specifically built to terminate TLS connections at high scale and forwards unencrypted HTTP traffic to Varnish or any other HTTP backend. + +# How to use this image + +Running a Hitch Docker container can be done by using the following command: + +```console +$ docker run --name=hitch -p 443:443 hitch +``` + +This container will expose port `443`, which is required for HTTPS traffic. + +## Configuration file and extra options + +Without any argument, the container will run `hitch --config=/etc/hitch/hitch.conf`. You can mount your own configuration file to replace the default one: + +```console +$ docker run -v /path/to/your/config/file:/etc/hitch/hitch.conf:ro hitch +``` + +You can also change the path of the configuration file by setting the `HITCH_CONFIG_FILE` environment variable. + +Note that extra arguments can be added to the command line. If the first argument starts with a `-`, the arguments are added to the default command line, otherwise they are treated as a command. + +> Our assumption is that your backend, Varnish or other, supports both *HTTP/2* and the *PROXY* protocol. + +## Connecting to the backend + +By default Hitch will connect to the backend using `localhost:8843` using the [PROXY protocol](https://github.com/varnish/hitch/blob/master/docs/proxy-protocol.md). If your backend server *PROXY*, the two will be able to talk together and backend will be able to expose the true client IP. + +But you'll probably run your backend service in a separate container. In that case, you'll want to change the backend settings. You can either do that by replacing the [`backend`](https://github.com/varnish/hitch/blob/master/hitch.conf.man.rst#backend--) configuration setting in your mounted configuration file, or by adding a *command-line option*. + +Here's how you set the backend via a *command-line option*, assuming your backend is available through `backend.example.com` on port `8443`: + +```console +$ docker run hitch "--backend=[backend.example.com]:8443" +``` + +## Setting the certificate + +The Hitch Docker image comes with a self-signed certificate that is stored in `/etc/hitch/certs/default`. + +This certificate is automatically created during *Hitch* package install, and is a self-signed certificate using 2048-bit RSA-encrypted cipher. It is set up for the `localhost` hostname, with an expiration date 30 years in the future. + +This certificate is only suited for testing. Using a bind mount, you can override the value of the certificate and use your own certificate, which is advisable. + +Here's an example: + +```console +$ docker run -v /path/to/your/certificate:/etc/hitch/certs/default:ro hitch +``` + +You can also override the [`pem-file`](https://github.com/varnish/hitch/blob/master/hitch.conf.man.rst#pem-file--string) configuration setting in your mounted configuration file. + +If you prefer setting the certificate location on the command line, you can add the location as part of the `--backend` option. + +Here's how you do this: + +```console +$ docker run hitch "--backend=[backend.example.com]:8443:/path/to/cert.pem" +``` + +# License + +View [license information](https://github.com/varnish/hitch/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 `hitch/` directory](https://github.com/docker-library/repo-info/tree/master/repos/hitch). + +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/hitch/content.md b/hitch/content.md new file mode 100644 index 000000000000..589de8eda334 --- /dev/null +++ b/hitch/content.md @@ -0,0 +1,63 @@ +# What is Hitch? + +[Hitch](https://hitch-tls.org/) is a *libev-based* high performance *SSL/TLS proxy* by [Varnish Software](https://varnish-software.com). It is specifically built to terminate TLS connections at high scale and forwards unencrypted HTTP traffic to Varnish or any other HTTP backend. + +# How to use this image + +Running a Hitch Docker container can be done by using the following command: + +```console +$ docker run --name=hitch -p 443:443 %%IMAGE%% +``` + +This container will expose port `443`, which is required for HTTPS traffic. + +## Configuration file and extra options + +Without any argument, the container will run `hitch --config=/etc/hitch/hitch.conf`. You can mount your own configuration file to replace the default one: + +```console +$ docker run -v /path/to/your/config/file:/etc/hitch/hitch.conf:ro %%IMAGE%% +``` + +You can also change the path of the configuration file by setting the `HITCH_CONFIG_FILE` environment variable. + +Note that extra arguments can be added to the command line. If the first argument starts with a `-`, the arguments are added to the default command line, otherwise they are treated as a command. + +> Our assumption is that your backend, Varnish or other, supports both *HTTP/2* and the *PROXY* protocol. + +## Connecting to the backend + +By default Hitch will connect to the backend using `localhost:8843` using the [PROXY protocol](https://github.com/varnish/hitch/blob/master/docs/proxy-protocol.md). If your backend server *PROXY*, the two will be able to talk together and backend will be able to expose the true client IP. + +But you'll probably run your backend service in a separate container. In that case, you'll want to change the backend settings. You can either do that by replacing the [`backend`](https://github.com/varnish/hitch/blob/master/hitch.conf.man.rst#backend--) configuration setting in your mounted configuration file, or by adding a *command-line option*. + +Here's how you set the backend via a *command-line option*, assuming your backend is available through `backend.example.com` on port `8443`: + +```console +$ docker run %%IMAGE%% "--backend=[backend.example.com]:8443" +``` + +## Setting the certificate + +The Hitch Docker image comes with a self-signed certificate that is stored in `/etc/hitch/certs/default`. + +This certificate is automatically created during *Hitch* package install, and is a self-signed certificate using 2048-bit RSA-encrypted cipher. It is set up for the `localhost` hostname, with an expiration date 30 years in the future. + +This certificate is only suited for testing. Using a bind mount, you can override the value of the certificate and use your own certificate, which is advisable. + +Here's an example: + +```console +$ docker run -v /path/to/your/certificate:/etc/hitch/certs/default:ro %%IMAGE%% +``` + +You can also override the [`pem-file`](https://github.com/varnish/hitch/blob/master/hitch.conf.man.rst#pem-file--string) configuration setting in your mounted configuration file. + +If you prefer setting the certificate location on the command line, you can add the location as part of the `--backend` option. + +Here's how you do this: + +```console +$ docker run %%IMAGE%% "--backend=[backend.example.com]:8443:/path/to/cert.pem" +``` diff --git a/hitch/github-repo b/hitch/github-repo new file mode 100644 index 000000000000..37d8c30f7b06 --- /dev/null +++ b/hitch/github-repo @@ -0,0 +1 @@ +https://github.com/varnish/docker-hitch diff --git a/hitch/license.md b/hitch/license.md new file mode 100644 index 000000000000..bbcd4ba42390 --- /dev/null +++ b/hitch/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/varnish/hitch/blob/master/LICENSE) for the software contained in this image. diff --git a/hitch/maintainer.md b/hitch/maintainer.md new file mode 100644 index 000000000000..2aeedddc6e0f --- /dev/null +++ b/hitch/maintainer.md @@ -0,0 +1 @@ +[the Hitch Docker Community](%%GITHUB-REPO%%) diff --git a/httpd/README.md b/httpd/README.md index f27e6917637a..2c3e6dea9415 100644 --- a/httpd/README.md +++ b/httpd/README.md @@ -20,12 +20,12 @@ WARNING: [the Docker Community](https://github.com/docker-library/httpd) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.4.43`, `2.4`, `2`, `latest`](https://github.com/docker-library/httpd/blob/6c8e82e20ecefc94c616439f15d14c4bb215b200/2.4/Dockerfile) -- [`2.4.43-alpine`, `2.4-alpine`, `2-alpine`, `alpine`](https://github.com/docker-library/httpd/blob/6c8e82e20ecefc94c616439f15d14c4bb215b200/2.4/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/httpd`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fhttpd) + [official-images repo's `library/httpd` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhttpd) [official-images repo's `library/httpd` file](https://github.com/docker-library/official-images/blob/master/library/httpd) ([history](https://github.com/docker-library/official-images/commits/master/library/httpd)) - **Source of this description**: @@ -133,11 +133,13 @@ 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. + ## `httpd:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/hylang/README.md b/hylang/README.md index 6d4cc436641b..1293bddbed8a 100644 --- a/hylang/README.md +++ b/hylang/README.md @@ -20,7 +20,7 @@ WARNING: [Paul Tagliamonte, Hy BDFL](https://github.com/hylang/hy) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,43 +28,55 @@ WARNING: ## Simple Tags -- [`0.18.0-python3.8-buster`, `0.18-python3.8-buster`, `0-python3.8-buster`, `python3.8-buster`, `0.18.0-buster`, `0.18-buster`, `0-buster`, `buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-buster) -- [`0.18.0-python3.8-alpine3.11`, `0.18-python3.8-alpine3.11`, `0-python3.8-alpine3.11`, `python3.8-alpine3.11`, `0.18.0-alpine3.11`, `0.18-alpine3.11`, `0-alpine3.11`, `alpine3.11`, `0.18.0-python3.8-alpine`, `0.18-python3.8-alpine`, `0-python3.8-alpine`, `python3.8-alpine`, `0.18.0-alpine`, `0.18-alpine`, `0-alpine`, `alpine`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-alpine3.11) -- [`0.18.0-python3.8-alpine3.10`, `0.18-python3.8-alpine3.10`, `0-python3.8-alpine3.10`, `python3.8-alpine3.10`, `0.18.0-alpine3.10`, `0.18-alpine3.10`, `0-alpine3.10`, `alpine3.10`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-alpine3.10) -- [`0.18.0-python3.8-windowsservercore-1809`, `0.18-python3.8-windowsservercore-1809`, `0-python3.8-windowsservercore-1809`, `python3.8-windowsservercore-1809`, `0.18.0-windowsservercore-1809`, `0.18-windowsservercore-1809`, `0-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-windowsservercore-1809) -- [`0.18.0-python3.8-windowsservercore-ltsc2016`, `0.18-python3.8-windowsservercore-ltsc2016`, `0-python3.8-windowsservercore-ltsc2016`, `python3.8-windowsservercore-ltsc2016`, `0.18.0-windowsservercore-ltsc2016`, `0.18-windowsservercore-ltsc2016`, `0-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-windowsservercore-ltsc2016) -- [`0.18.0-python3.7-buster`, `0.18-python3.7-buster`, `0-python3.7-buster`, `python3.7-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-buster) -- [`0.18.0-python3.7-stretch`, `0.18-python3.7-stretch`, `0-python3.7-stretch`, `python3.7-stretch`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-stretch) -- [`0.18.0-python3.7-alpine3.11`, `0.18-python3.7-alpine3.11`, `0-python3.7-alpine3.11`, `python3.7-alpine3.11`, `0.18.0-python3.7-alpine`, `0.18-python3.7-alpine`, `0-python3.7-alpine`, `python3.7-alpine`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-alpine3.11) -- [`0.18.0-python3.7-alpine3.10`, `0.18-python3.7-alpine3.10`, `0-python3.7-alpine3.10`, `python3.7-alpine3.10`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-alpine3.10) -- [`0.18.0-python3.7-windowsservercore-1809`, `0.18-python3.7-windowsservercore-1809`, `0-python3.7-windowsservercore-1809`, `python3.7-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-windowsservercore-1809) -- [`0.18.0-python3.7-windowsservercore-ltsc2016`, `0.18-python3.7-windowsservercore-ltsc2016`, `0-python3.7-windowsservercore-ltsc2016`, `python3.7-windowsservercore-ltsc2016`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-windowsservercore-ltsc2016) -- [`0.18.0-python3.6-buster`, `0.18-python3.6-buster`, `0-python3.6-buster`, `python3.6-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.6-buster) -- [`0.18.0-python3.6-stretch`, `0.18-python3.6-stretch`, `0-python3.6-stretch`, `python3.6-stretch`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.6-stretch) -- [`0.18.0-python3.6-alpine3.11`, `0.18-python3.6-alpine3.11`, `0-python3.6-alpine3.11`, `python3.6-alpine3.11`, `0.18.0-python3.6-alpine`, `0.18-python3.6-alpine`, `0-python3.6-alpine`, `python3.6-alpine`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.6-alpine3.11) -- [`0.18.0-python3.6-alpine3.10`, `0.18-python3.6-alpine3.10`, `0-python3.6-alpine3.10`, `python3.6-alpine3.10`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.6-alpine3.10) -- [`0.18.0-python3.5-buster`, `0.18-python3.5-buster`, `0-python3.5-buster`, `python3.5-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.5-buster) -- [`0.18.0-python3.5-stretch`, `0.18-python3.5-stretch`, `0-python3.5-stretch`, `python3.5-stretch`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.5-stretch) -- [`0.18.0-python3.5-alpine3.11`, `0.18-python3.5-alpine3.11`, `0-python3.5-alpine3.11`, `python3.5-alpine3.11`, `0.18.0-python3.5-alpine`, `0.18-python3.5-alpine`, `0-python3.5-alpine`, `python3.5-alpine`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.5-alpine3.11) -- [`0.18.0-python3.5-alpine3.10`, `0.18-python3.5-alpine3.10`, `0-python3.5-alpine3.10`, `python3.5-alpine3.10`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.5-alpine3.10) -- [`0.18.0-pypy3.6-buster`, `0.18-pypy3.6-buster`, `0-pypy3.6-buster`, `pypy3.6-buster`, `0.18.0-pypy-buster`, `0.18-pypy-buster`, `0-pypy-buster`, `pypy-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.pypy3.6-buster) +- [`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) ## Shared Tags -- `0.18.0-python3.8`, `0.18-python3.8`, `0-python3.8`, `python3.8`, `0.18.0`, `0.18`, `0`, `latest`: - - [`0.18.0-python3.8-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-buster) - - [`0.18.0-python3.8-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-windowsservercore-1809) - - [`0.18.0-python3.8-windowsservercore-ltsc2016`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.8-windowsservercore-ltsc2016) -- `0.18.0-python3.7`, `0.18-python3.7`, `0-python3.7`, `python3.7`: - - [`0.18.0-python3.7-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-buster) - - [`0.18.0-python3.7-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-windowsservercore-1809) - - [`0.18.0-python3.7-windowsservercore-ltsc2016`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.7-windowsservercore-ltsc2016) -- `0.18.0-python3.6`, `0.18-python3.6`, `0-python3.6`, `python3.6`: - - [`0.18.0-python3.6-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.6-buster) -- `0.18.0-python3.5`, `0.18-python3.5`, `0-python3.5`, `python3.5`: - - [`0.18.0-python3.5-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.python3.5-buster) -- `0.18.0-pypy3.6`, `0.18-pypy3.6`, `0-pypy3.6`, `pypy3.6`, `0.18.0-pypy`, `0.18-pypy`, `0-pypy`, `pypy`: - - [`0.18.0-pypy3.6-buster`](https://github.com/hylang/docker-hylang/blob/5148df70ef281642faeb6508aa74cb14b1c09541/dockerfiles-generated/Dockerfile.pypy3.6-buster) +- `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) # Quick reference (cont.) @@ -79,7 +91,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/hylang`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fhylang) + [official-images repo's `library/hylang` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhylang) [official-images repo's `library/hylang` file](https://github.com/docker-library/official-images/blob/master/library/hylang) ([history](https://github.com/docker-library/official-images/commits/master/library/hylang)) - **Source of this description**: @@ -127,13 +139,13 @@ 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 buster or stretch 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 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. ## `hylang:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/ibm-semeru-runtimes/README-short.txt b/ibm-semeru-runtimes/README-short.txt new file mode 100644 index 000000000000..67953ff4a7d2 --- /dev/null +++ b/ibm-semeru-runtimes/README-short.txt @@ -0,0 +1 @@ +IBM Semeru Runtimes Official Images for OpenJDK and Eclipse OpenJ9 binaries. diff --git a/ibm-semeru-runtimes/README.md b/ibm-semeru-runtimes/README.md new file mode 100644 index 000000000000..d506b701a688 --- /dev/null +++ b/ibm-semeru-runtimes/README.md @@ -0,0 +1,144 @@ + + +# Quick reference + +- **Maintained by**: + [IBM Semeru Runtimes](https://github.com/ibmruntimes/semeru-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 + +(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 + +- [`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) + +## 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) + +# Quick reference (cont.) + +- **Where to file issues**: + [GitHub](https://github.com/ibmruntimes/Semeru-Runtimes/issues); The [IBM Semeru Runtimes support](https://ibm.com/semeru-runtimes) page has more information on quality, roadmap and other details for IBM Semeru Runtime Open Edition builds; + +- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) + [`amd64`](https://hub.docker.com/r/amd64/ibm-semeru-runtimes/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ibm-semeru-runtimes/), [`ppc64le`](https://hub.docker.com/r/ppc64le/ibm-semeru-runtimes/), [`s390x`](https://hub.docker.com/r/s390x/ibm-semeru-runtimes/) + +- **Published image artifact details**: + [repo-info repo's `repos/ibm-semeru-runtimes/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ibm-semeru-runtimes) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ibm-semeru-runtimes)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/ibm-semeru-runtimes` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fibm-semeru-runtimes) + [official-images repo's `library/ibm-semeru-runtimes` file](https://github.com/docker-library/official-images/blob/master/library/ibm-semeru-runtimes) ([history](https://github.com/docker-library/official-images/commits/master/library/ibm-semeru-runtimes)) + +- **Source of this description**: + [docs repo's `ibm-semeru-runtimes/` directory](https://github.com/docker-library/docs/tree/master/ibm-semeru-runtimes) ([history](https://github.com/docker-library/docs/commits/master/ibm-semeru-runtimes)) + +## Overview + +The images in this repository contain OpenJDK binaries that are built by IBM Semeru Runtimes. + +# What is IBM Semeru Runtimes ? + +The IBM Semeru Runtimes are free production-ready open source binaries built with the OpenJDK class libraries and the Eclipse OpenJ9 JVM, which delivers the power and performance to run your Java applications, when you need it most. + +# How to use this Image + +To run a pre-built japp.jar file with the latest OpenJDK 11, use the following Dockerfile: + +```dockerfile +FROM ibm-semeru-runtimes:11 +RUN mkdir /opt/app +COPY japp.jar /opt/app +CMD ["java", "-jar", "/opt/app/japp.jar"] +``` + +You can build and run the Docker Image as shown in the following example: + +```console +docker build -t japp . +docker run -it --rm japp +``` + +### Using a different base Image + +If you are using a distribution that we don't provide an image for you can copy the JDK using a similar Dockerfile to the one below: + +```dockerfile +# Example +FROM +ENV JAVA_HOME=/opt/java/openjdk +COPY --from=ibm-semeru-runtimes:11 $JAVA_HOME $JAVA_HOME +ENV PATH="${JAVA_HOME}/bin:${PATH}" +``` + +# License + +The Dockerfiles and associated scripts are licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). + +Licenses for the products installed within the images: + +- IBM Semeru Runtime Open Edition: The project license is GNU GPL v2 with Classpath Exception. + +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 `ibm-semeru-runtimes/` directory](https://github.com/docker-library/repo-info/tree/master/repos/ibm-semeru-runtimes). + +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/ibm-semeru-runtimes/content.md b/ibm-semeru-runtimes/content.md new file mode 100644 index 000000000000..20cce094a9a3 --- /dev/null +++ b/ibm-semeru-runtimes/content.md @@ -0,0 +1,37 @@ +## Overview + +The images in this repository contain OpenJDK binaries that are built by IBM Semeru Runtimes. + +# What is IBM Semeru Runtimes ? + +The IBM Semeru Runtimes are free production-ready open source binaries built with the OpenJDK class libraries and the Eclipse OpenJ9 JVM, which delivers the power and performance to run your Java applications, when you need it most. + +# How to use this Image + +To run a pre-built japp.jar file with the latest OpenJDK 11, use the following Dockerfile: + +```dockerfile +FROM %%IMAGE%%:11 +RUN mkdir /opt/app +COPY japp.jar /opt/app +CMD ["java", "-jar", "/opt/app/japp.jar"] +``` + +You can build and run the Docker Image as shown in the following example: + +```console +docker build -t japp . +docker run -it --rm japp +``` + +### Using a different base Image + +If you are using a distribution that we don't provide an image for you can copy the JDK using a similar Dockerfile to the one below: + +```dockerfile +# Example +FROM +ENV JAVA_HOME=/opt/java/openjdk +COPY --from=%%IMAGE%%:11 $JAVA_HOME $JAVA_HOME +ENV PATH="${JAVA_HOME}/bin:${PATH}" +``` diff --git a/ibm-semeru-runtimes/github-repo b/ibm-semeru-runtimes/github-repo new file mode 100644 index 000000000000..18fd7e4d0542 --- /dev/null +++ b/ibm-semeru-runtimes/github-repo @@ -0,0 +1 @@ +https://github.com/ibmruntimes/semeru-containers diff --git a/ibm-semeru-runtimes/issues.md b/ibm-semeru-runtimes/issues.md new file mode 100644 index 000000000000..4cb1bc6a4ab2 --- /dev/null +++ b/ibm-semeru-runtimes/issues.md @@ -0,0 +1 @@ +[GitHub](https://github.com/ibmruntimes/Semeru-Runtimes/issues); The [IBM Semeru Runtimes support](https://ibm.com/semeru-runtimes) page has more information on quality, roadmap and other details for IBM Semeru Runtime Open Edition builds; diff --git a/ibm-semeru-runtimes/license.md b/ibm-semeru-runtimes/license.md new file mode 100644 index 000000000000..41e216753484 --- /dev/null +++ b/ibm-semeru-runtimes/license.md @@ -0,0 +1,5 @@ +The Dockerfiles and associated scripts are licensed under the [Apache License, Version 2.0](http://www.apache.org/licenses/LICENSE-2.0.html). + +Licenses for the products installed within the images: + +- IBM Semeru Runtime Open Edition: The project license is GNU GPL v2 with Classpath Exception. diff --git a/ibm-semeru-runtimes/maintainer.md b/ibm-semeru-runtimes/maintainer.md new file mode 100644 index 000000000000..81ffa6f5c0aa --- /dev/null +++ b/ibm-semeru-runtimes/maintainer.md @@ -0,0 +1 @@ +[IBM Semeru Runtimes](%%GITHUB-REPO%%) diff --git a/ibmjava/README.md b/ibmjava/README.md index 2e9182ba9d78..d7864cbd022f 100644 --- a/ibmjava/README.md +++ b/ibmjava/README.md @@ -24,12 +24,9 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`8-jre`, `jre`, `8`, `latest`](https://github.com/ibmruntimes/ci.docker/blob/83506ae3219b62dbf96f6ad0111e0f9a6169be0c/ibmjava/8/jre/ubuntu/Dockerfile) -- [`8-jre-alpine`, `jre-alpine`](https://github.com/ibmruntimes/ci.docker/blob/83506ae3219b62dbf96f6ad0111e0f9a6169be0c/ibmjava/8/jre/alpine/Dockerfile) -- [`8-sfj`, `sfj`](https://github.com/ibmruntimes/ci.docker/blob/83506ae3219b62dbf96f6ad0111e0f9a6169be0c/ibmjava/8/sfj/ubuntu/Dockerfile) -- [`8-sfj-alpine`, `sfj-alpine`](https://github.com/ibmruntimes/ci.docker/blob/83506ae3219b62dbf96f6ad0111e0f9a6169be0c/ibmjava/8/sfj/alpine/Dockerfile) -- [`8-sdk`, `sdk`](https://github.com/ibmruntimes/ci.docker/blob/83506ae3219b62dbf96f6ad0111e0f9a6169be0c/ibmjava/8/sdk/ubuntu/Dockerfile) -- [`8-sdk-alpine`, `sdk-alpine`](https://github.com/ibmruntimes/ci.docker/blob/83506ae3219b62dbf96f6ad0111e0f9a6169be0c/ibmjava/8/sdk/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/ibmjava`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fibmjava) + [official-images repo's `library/ibmjava` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fibmjava) [official-images repo's `library/ibmjava` file](https://github.com/docker-library/official-images/blob/master/library/ibmjava) ([history](https://github.com/docker-library/official-images/commits/master/library/ibmjava)) - **Source of this description**: @@ -52,7 +49,7 @@ WARNING: ### Overview -The images in this repository contain IBM® SDK, Java™ Technology Edition. For more information on the latest version and what's new, see [sdk8 on IBM developerWorks](https://developer.ibm.com/javasdk/downloads/sdk8/). See the license section for restrictions that relate to the use of this image. For more information about IBM® SDK, Java™ Technology Edition and API documentation as well as tutorials, recipes, and Java usage in IBM Cloud, see [IBM developerWorks](https://developer.ibm.com/javasdk/). +The images in this repository contain IBM® SDK, Java™ Technology Edition. For more information on the latest version and what's new, see [sdk8 on IBM developerWorks](https://developer.ibm.com/javasdk/downloads/sdk8/) and [jdk11 on IBM developerWorks](https://developer.ibm.com/javasdk/downloads/java-sdk-downloads-version-110/). See the license section for restrictions that relate to the use of this image. For more information about IBM® SDK, Java™ Technology Edition and API documentation as well as tutorials, recipes, and Java usage in IBM Cloud, see [IBM developerWorks](https://developer.ibm.com/javasdk/). Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. @@ -157,30 +154,14 @@ docker run -it --volumes-from classcache japp See the [Websphere-Liberty image](https://hub.docker.com/_/websphere-liberty/), which builds on top of this IBM docker image for Java. -# Image Variants - -The `ibmjava` images come in many flavors, each designed for a specific use case. - -## `ibmjava:` - -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. - -## `ibmjava:-alpine` - -This image is based on the popular [Alpine Linux project](http://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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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). Licenses for the products installed within the images: -- IBM® SDK, Java™ Technology Edition Version 8: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-PMAA-A3Z8P2&title=IBM® SDK, Java™ Technology Edition Docker Image, Version 8.0&l=en). -- IBM® SDK, Java™ Technology Edition Version 9 Early Access: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-JWOD-AFSFP8&title=IBM® SDK, Java™ Technology Edition Version 9.0 Early Access&l=en). +- IBM® SDK, Java™ Technology Edition Version 8: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-SMKR-AVSEUH&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+8.0&l=en). +- IBM® SDK, Java™ Technology Edition Version 11: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-PARM-BMVULC&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+11.0&l=en). 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/ibmjava/content.md b/ibmjava/content.md index a2db42396e20..314796a729ed 100644 --- a/ibmjava/content.md +++ b/ibmjava/content.md @@ -1,6 +1,6 @@ ### Overview -The images in this repository contain IBM® SDK, Java™ Technology Edition. For more information on the latest version and what's new, see [sdk8 on IBM developerWorks](https://developer.ibm.com/javasdk/downloads/sdk8/). See the license section for restrictions that relate to the use of this image. For more information about IBM® SDK, Java™ Technology Edition and API documentation as well as tutorials, recipes, and Java usage in IBM Cloud, see [IBM developerWorks](https://developer.ibm.com/javasdk/). +The images in this repository contain IBM® SDK, Java™ Technology Edition. For more information on the latest version and what's new, see [sdk8 on IBM developerWorks](https://developer.ibm.com/javasdk/downloads/sdk8/) and [jdk11 on IBM developerWorks](https://developer.ibm.com/javasdk/downloads/java-sdk-downloads-version-110/). See the license section for restrictions that relate to the use of this image. For more information about IBM® SDK, Java™ Technology Edition and API documentation as well as tutorials, recipes, and Java usage in IBM Cloud, see [IBM developerWorks](https://developer.ibm.com/javasdk/). Java and all Java-based trademarks and logos are trademarks or registered trademarks of Oracle and/or its affiliates. diff --git a/ibmjava/license.md b/ibmjava/license.md index ef75061d6f50..1d189e8f9739 100644 --- a/ibmjava/license.md +++ b/ibmjava/license.md @@ -2,5 +2,5 @@ The Dockerfiles and associated scripts are licensed under the [Apache License 2. Licenses for the products installed within the images: -- IBM® SDK, Java™ Technology Edition Version 8: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-PMAA-A3Z8P2&title=IBM® SDK, Java™ Technology Edition Docker Image, Version 8.0&l=en). -- IBM® SDK, Java™ Technology Edition Version 9 Early Access: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-JWOD-AFSFP8&title=IBM® SDK, Java™ Technology Edition Version 9.0 Early Access&l=en). +- IBM® SDK, Java™ Technology Edition Version 8: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-SMKR-AVSEUH&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+8.0&l=en). +- IBM® SDK, Java™ Technology Edition Version 11: [International License Agreement for Non-Warranted Programs](http://www14.software.ibm.com/cgi-bin/weblap/lap.pl?la_formnum=&li_formnum=L-PARM-BMVULC&title=IBM%AE+SDK%2C+Java%99+Technology+Edition%2C+Version+11.0&l=en). diff --git a/influxdb/README.md b/influxdb/README.md index aa9197e1e2d8..f422092c98de 100644 --- a/influxdb/README.md +++ b/influxdb/README.md @@ -20,22 +20,30 @@ WARNING: [InfluxData](https://github.com/influxdata/influxdata-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.7`, `1.7.10`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.7/Dockerfile) -- [`1.7-alpine`, `1.7.10-alpine`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.7/alpine/Dockerfile) -- [`1.7-data`, `1.7.10-data`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.7/data/Dockerfile) -- [`1.7-data-alpine`, `1.7.10-data-alpine`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.7/data/alpine/Dockerfile) -- [`1.7-meta`, `1.7.10-meta`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.7/meta/Dockerfile) -- [`1.7-meta-alpine`, `1.7.10-meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.7/meta/alpine/Dockerfile) -- [`1.8`, `1.8.0`, `latest`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.8/Dockerfile) -- [`1.8-alpine`, `1.8.0-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.8/alpine/Dockerfile) -- [`1.8-data`, `1.8.0-data`, `data`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.8/data/Dockerfile) -- [`1.8-data-alpine`, `1.8.0-data-alpine`, `data-alpine`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.8/data/alpine/Dockerfile) -- [`1.8-meta`, `1.8.0-meta`, `meta`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.8/meta/Dockerfile) -- [`1.8-meta-alpine`, `1.8.0-meta-alpine`, `meta-alpine`](https://github.com/influxdata/influxdata-docker/blob/032b0c1480b865bd44bb22d97c68cf6c076a04b7/influxdb/1.8/meta/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -50,7 +58,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/influxdb`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Finfluxdb) + [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**: @@ -64,11 +72,405 @@ InfluxDB is a time series database built from the ground up to handle high write ![logo](https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/influxdb/logo.png) -## Updating latest to 2.0 +## Using this Image - InfluxDB 2.x -In the future, the latest tag for this image will point to the latest released implementation of influxdb 2.0. This will happen when the first general available release for 2.0 exists. If you are using the `latest` tag for any production or development purposes, please update your development environment to reference the `1.8` tag. +### Quick start -## Using this Image +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 +``` + +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 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 +``` + +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 \ + influxdb: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 \ + influxdb: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 \ + influxdb: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: + +```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 +``` + +**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`. + +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. + +**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. + +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. + +#### Upgrade Example - Minimal + +Assume you've been running a minimal InfluxDB 1.x deployment: + +```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 +``` + +#### 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 \ + 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 @@ -77,7 +479,7 @@ The InfluxDB image exposes a shared volume under `/var/lib/influxdb`, so you can ```console $ docker run -p 8086:8086 \ -v $PWD:/var/lib/influxdb \ - influxdb + influxdb:1.8 ``` Modify `$PWD` to the directory where you want to store data associated with the InfluxDB container. @@ -87,7 +489,7 @@ 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 \ - influxdb + influxdb:1.8 ``` ### Exposed Ports @@ -99,8 +501,6 @@ The following ports are important and are used by InfluxDB. The HTTP API port will be automatically exposed when using `docker run -P`. -Find more about API Endpoints & Ports [here](https://docs.influxdata.com/influxdb/latest/concepts/api/). - ### Configuration 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: @@ -108,7 +508,7 @@ InfluxDB can be either configured from a config file or using environment variab Generate the default configuration file: ```console -$ docker run --rm influxdb influxd config > influxdb.conf +$ docker run --rm influxdb:1.8 influxd config > influxdb.conf ``` Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB container. @@ -116,7 +516,7 @@ Modify the default configuration, which will now be available under `$PWD`. Then ```console $ docker run -p 8086:8086 \ -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \ - influxdb -config /etc/influxdb/influxdb.conf + influxdb:1.8 -config /etc/influxdb/influxdb.conf ``` Modify `$PWD` to the directory where you want to store the configuration file. @@ -131,7 +531,7 @@ INFLUXDB_META_DIR=/path/to/metadir INFLUXDB_DATA_QUERY_LOG_ENABLED=false ``` -Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/latest/introduction/installation/). +Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/v1.8/administration/config/). ### Graphite @@ -140,7 +540,7 @@ InfluxDB supports the Graphite line protocol, but the service and ports are not ```console docker run -p 8086:8086 -p 2003:2003 \ -e INFLUXDB_GRAPHITE_ENABLED=true \ - influxdb + influxdb:1.8 ``` 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. @@ -166,7 +566,7 @@ Read more about this in the [official documentation](https://docs.influxdata.com Start the container: ```console -$ docker run --name=influxdb -d -p 8086:8086 influxdb +$ docker run --name=influxdb -d -p 8086:8086 influxdb:1.8 ``` Run the influx client in this container: @@ -178,7 +578,7 @@ $ docker exec -it influxdb influx Or run the influx client in a separate container: ```console -$ docker run --rm --link=influxdb -it influxdb influx -host influxdb +$ docker run --rm --link=influxdb -it influxdb:1.8 influx -host influxdb ``` ### Database Initialization @@ -245,7 +645,7 @@ $ docker run --rm \ -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 /init-influxdb.sh + 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. @@ -260,9 +660,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `influxdb:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). @@ -270,7 +670,7 @@ To minimize image size, it's uncommon for additional related tools (such as `git *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 OSS image, but it needs port 8088 to be exposed to the meta nodes. +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/content.md b/influxdb/content.md index a2a3f6373298..83ebe353d489 100644 --- a/influxdb/content.md +++ b/influxdb/content.md @@ -6,11 +6,405 @@ InfluxDB is a time series database built from the ground up to handle high write %%LOGO%% -## Updating latest to 2.0 +## Using this Image - InfluxDB 2.x -In the future, the latest tag for this image will point to the latest released implementation of influxdb 2.0. This will happen when the first general available release for 2.0 exists. If you are using the `latest` tag for any production or development purposes, please update your development environment to reference the `1.8` tag. +### Quick start -## Using this Image +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 \ + %%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: + +```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 \ + %%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: + +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`. + +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. + +**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. + +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. + +#### Upgrade Example - Minimal + +Assume you've been running a minimal InfluxDB 1.x deployment: + +```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 +``` + +#### 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 @@ -19,7 +413,7 @@ The InfluxDB image exposes a shared volume under `/var/lib/influxdb`, so you can ```console $ docker run -p 8086:8086 \ -v $PWD:/var/lib/influxdb \ - %%IMAGE%% + %%IMAGE%%:1.8 ``` Modify `$PWD` to the directory where you want to store data associated with the InfluxDB container. @@ -29,7 +423,7 @@ 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%% + %%IMAGE%%:1.8 ``` ### Exposed Ports @@ -41,8 +435,6 @@ The following ports are important and are used by InfluxDB. The HTTP API port will be automatically exposed when using `docker run -P`. -Find more about API Endpoints & Ports [here](https://docs.influxdata.com/influxdb/latest/concepts/api/). - ### Configuration 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: @@ -50,7 +442,7 @@ InfluxDB can be either configured from a config file or using environment variab Generate the default configuration file: ```console -$ docker run --rm %%IMAGE%% influxd config > influxdb.conf +$ docker run --rm %%IMAGE%%:1.8 influxd config > influxdb.conf ``` Modify the default configuration, which will now be available under `$PWD`. Then start the InfluxDB container. @@ -58,7 +450,7 @@ Modify the default configuration, which will now be available under `$PWD`. Then ```console $ docker run -p 8086:8086 \ -v $PWD/influxdb.conf:/etc/influxdb/influxdb.conf:ro \ - %%IMAGE%% -config /etc/influxdb/influxdb.conf + %%IMAGE%%:1.8 -config /etc/influxdb/influxdb.conf ``` Modify `$PWD` to the directory where you want to store the configuration file. @@ -73,7 +465,7 @@ INFLUXDB_META_DIR=/path/to/metadir INFLUXDB_DATA_QUERY_LOG_ENABLED=false ``` -Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/latest/introduction/installation/). +Find more about configuring InfluxDB [here](https://docs.influxdata.com/influxdb/v1.8/administration/config/). ### Graphite @@ -82,7 +474,7 @@ InfluxDB supports the Graphite line protocol, but the service and ports are not ```console docker run -p 8086:8086 -p 2003:2003 \ -e INFLUXDB_GRAPHITE_ENABLED=true \ - %%IMAGE%% + %%IMAGE%%:1.8 ``` 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. @@ -108,7 +500,7 @@ Read more about this in the [official documentation](https://docs.influxdata.com Start the container: ```console -$ docker run --name=influxdb -d -p 8086:8086 %%IMAGE%% +$ docker run --name=influxdb -d -p 8086:8086 %%IMAGE%%:1.8 ``` Run the influx client in this container: @@ -120,7 +512,7 @@ $ docker exec -it influxdb influx Or run the influx client in a separate container: ```console -$ docker run --rm --link=influxdb -it %%IMAGE%% influx -host influxdb +$ docker run --rm --link=influxdb -it %%IMAGE%%:1.8 influx -host influxdb ``` ### Database Initialization @@ -187,7 +579,7 @@ $ docker run --rm \ -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 /init-influxdb.sh + %%IMAGE%%: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. diff --git a/influxdb/variant-data.md b/influxdb/variant-data.md index 84ab2410e7bd..f6c6fc19c4f7 100644 --- a/influxdb/variant-data.md +++ b/influxdb/variant-data.md @@ -2,6 +2,6 @@ *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 OSS image, but it needs port 8088 to be exposed to the meta nodes. +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/irssi/README.md b/irssi/README.md index fde00f60ff87..821d046ab93f 100644 --- a/irssi/README.md +++ b/irssi/README.md @@ -20,12 +20,12 @@ WARNING: [Jessie and Tianon (of the Docker Community)](https://github.com/jessfraz/irssi), [with the appreciation of the Irssi Project](https://twitter.com/GeertHauwaerts/status/559131523145035776) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.2.2`, `1.2`, `1`, `latest`](https://github.com/jessfraz/irssi/blob/773216139cd3685fd710b77dc7d4ee26ec9fb187/debian/Dockerfile) -- [`1.2.2-alpine`, `1.2-alpine`, `1-alpine`, `alpine`](https://github.com/jessfraz/irssi/blob/4eb15e5f0583e58b326282ce0b1454aa5df1cf31/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/irssi`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Firssi) + [official-images repo's `library/irssi` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Firssi) [official-images repo's `library/irssi` file](https://github.com/docker-library/official-images/blob/master/library/irssi) ([history](https://github.com/docker-library/official-images/commits/master/library/irssi)) - **Source of this description**: @@ -95,9 +95,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `irssi:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/jetty/README.md b/jetty/README.md index aab29b8caefe..ae519bebef3a 100644 --- a/jetty/README.md +++ b/jetty/README.md @@ -17,25 +17,59 @@ WARNING: # Quick reference - **Maintained by**: - [the Docker Community](https://github.com/appropriate/docker-jetty) + [the Docker Community](https://github.com/eclipse/jetty.docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`9.4.27-jre11-slim`, `9.4-jre11-slim`, `9-jre11-slim`](https://github.com/appropriate/docker-jetty/blob/89dfeafc4a603611cf5135249acbe218b515439c/9.4-jre11-slim/Dockerfile) -- [`9.4.27-jre11`, `9.4-jre11`, `9-jre11`](https://github.com/appropriate/docker-jetty/blob/89dfeafc4a603611cf5135249acbe218b515439c/9.4-jre11/Dockerfile) -- [`9.4.27-jre8`, `9.4-jre8`, `9-jre8`](https://github.com/appropriate/docker-jetty/blob/89dfeafc4a603611cf5135249acbe218b515439c/9.4-jre8/Dockerfile) -- [`9.4.27-jdk13-slim`, `9.4-jdk13-slim`, `9-jdk13-slim`](https://github.com/appropriate/docker-jetty/blob/89dfeafc4a603611cf5135249acbe218b515439c/9.4-jdk13-slim/Dockerfile) -- [`9.4.27`, `9.4`, `9`, `9.4.27-jdk13`, `9.4-jdk13`, `9-jdk13`, `latest`, `jdk13`](https://github.com/appropriate/docker-jetty/blob/89dfeafc4a603611cf5135249acbe218b515439c/9.4-jdk13/Dockerfile) -- [`9.3.28-jre8`, `9.3-jre8`](https://github.com/appropriate/docker-jetty/blob/28562cbee783f1ccb94c375b7e9165c6cfe6d2e2/9.3-jre8/Dockerfile) -- [`9.2.29-jre8`, `9.2-jre8`](https://github.com/appropriate/docker-jetty/blob/28562cbee783f1ccb94c375b7e9165c6cfe6d2e2/9.2-jre8/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/appropriate/docker-jetty/issues](https://github.com/appropriate/docker-jetty/issues) + [https://github.com/eclipse/jetty.docker/issues](https://github.com/eclipse/jetty.docker/issues) - **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/) @@ -45,7 +79,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/jetty`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fjetty) + [official-images repo's `library/jetty` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjetty) [official-images repo's `library/jetty` file](https://github.com/docker-library/official-images/blob/master/library/jetty) ([history](https://github.com/docker-library/official-images/commits/master/library/jetty)) - **Source of this description**: @@ -143,8 +177,6 @@ RUN java -jar $JETTY_HOME/start.jar --add-to-startd=http2 --approve-all-licenses This will add an `http2.ini` file to the `$JETTY_BASE/start.d` directory and download the required ALPN libraries into `$JETTY_BASE/lib/alpn`, allowing the use of HTTP/2. HTTP/2 connections should be made via the same port as normal HTTPS connections (container port 8443). If you would like to enable the `http2` module via `$JETTY_BASE/start.ini` instead, substitute `--add-to-start` in place of `--add-to-startd` in the `RUN` command above. -Once OpenJDK 9 becomes generally available with built-in support for ALPN, this image will be updated to enable HTTP/2 support by default. - # Security By default, this image starts as user `root` and uses Jetty's `setuid` module to drop privileges to user `jetty` after initialization. The `JETTY_BASE` directory at `/var/lib/jetty` is owned by `jetty:jetty` (uid 999, gid 999). @@ -163,13 +195,17 @@ The `jetty` 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. -## `jetty:-slim` +## `jetty:-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. -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `jetty`. Unless you are working in an environment where *only* the `jetty` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. +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](http://eclipse.org/jetty/licenses.php) for the software contained in this image. +View [license information](http://eclipse.org/jetty/licenses.html) 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/jetty/content.md b/jetty/content.md index d9abb97624e0..ffadcc694576 100644 --- a/jetty/content.md +++ b/jetty/content.md @@ -90,8 +90,6 @@ RUN java -jar $JETTY_HOME/start.jar --add-to-startd=http2 --approve-all-licenses This will add an `http2.ini` file to the `$JETTY_BASE/start.d` directory and download the required ALPN libraries into `$JETTY_BASE/lib/alpn`, allowing the use of HTTP/2. HTTP/2 connections should be made via the same port as normal HTTPS connections (container port 8443). If you would like to enable the `http2` module via `$JETTY_BASE/start.ini` instead, substitute `--add-to-start` in place of `--add-to-startd` in the `RUN` command above. -Once OpenJDK 9 becomes generally available with built-in support for ALPN, this image will be updated to enable HTTP/2 support by default. - # Security By default, this image starts as user `root` and uses Jetty's `setuid` module to drop privileges to user `jetty` after initialization. The `JETTY_BASE` directory at `/var/lib/jetty` is owned by `jetty:jetty` (uid 999, gid 999). diff --git a/jetty/github-repo b/jetty/github-repo index d72a673cabc3..782a4709aa91 100644 --- a/jetty/github-repo +++ b/jetty/github-repo @@ -1 +1 @@ -https://github.com/appropriate/docker-jetty +https://github.com/eclipse/jetty.docker diff --git a/jetty/license.md b/jetty/license.md index c6cea5395848..27b7c27fcdeb 100644 --- a/jetty/license.md +++ b/jetty/license.md @@ -1 +1 @@ -View [license information](http://eclipse.org/jetty/licenses.php) for the software contained in this image. +View [license information](http://eclipse.org/jetty/licenses.html) for the software contained in this image. diff --git a/jobber/README-short.txt b/jobber/README-short.txt index ef64ca0ef05c..e9bb50e633e3 100644 --- a/jobber/README-short.txt +++ b/jobber/README-short.txt @@ -1 +1 @@ -Jobber is an alternative to cron, with sophisticated status-reporting and error-handling. +DEPRECATED; Jobber is an alternative to cron, with sophisticated status-reporting and error-handling diff --git a/jobber/README.md b/jobber/README.md index 53bb52193444..5e954e37e656 100644 --- a/jobber/README.md +++ b/jobber/README.md @@ -14,17 +14,21 @@ WARNING: --> +# **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 Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.0-alpine3.10`, `1.4-alpine3.10`, `1-alpine3.10`, `latest`](https://github.com/dshearer/jobber-docker/blob/64d2a0778ae73986cb90f1c374d9dfb42c9b8483/alpine3.10/Dockerfile) +- [`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.) @@ -39,7 +43,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/jobber`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fjobber) + [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**: diff --git a/jobber/deprecated.md b/jobber/deprecated.md new file mode 100644 index 000000000000..4ebe5963e7d0 --- /dev/null +++ b/jobber/deprecated.md @@ -0,0 +1 @@ +This project is not actively maintained. See [dshearer/jobber#334](https://github.com/dshearer/jobber/pull/334) for more details. diff --git a/joomla/README.md b/joomla/README.md index a71ff02b54ff..717db1267d7c 100644 --- a/joomla/README.md +++ b/joomla/README.md @@ -20,19 +20,19 @@ WARNING: [Joomla!](https://github.com/joomla/docker-joomla) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.9.18-php7.2-apache`, `3.9-php7.2-apache`, `3-php7.2-apache`, `php7.2-apache`, `3.9.18-php7.2`, `3.9-php7.2`, `3-php7.2`, `php7.2`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.2/apache/Dockerfile) -- [`3.9.18-php7.2-fpm`, `3.9-php7.2-fpm`, `3-php7.2-fpm`, `php7.2-fpm`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.2/fpm/Dockerfile) -- [`3.9.18-php7.2-fpm-alpine`, `3.9-php7.2-fpm-alpine`, `3-php7.2-fpm-alpine`, `php7.2-fpm-alpine`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.2/fpm-alpine/Dockerfile) -- [`3.9.18-apache`, `3.9-apache`, `3-apache`, `apache`, `3.9.18`, `3.9`, `3`, `latest`, `3.9.18-php7.3-apache`, `3.9-php7.3-apache`, `3-php7.3-apache`, `php7.3-apache`, `3.9.18-php7.3`, `3.9-php7.3`, `3-php7.3`, `php7.3`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.3/apache/Dockerfile) -- [`3.9.18-fpm`, `3.9-fpm`, `3-fpm`, `fpm`, `3.9.18-php7.3-fpm`, `3.9-php7.3-fpm`, `3-php7.3-fpm`, `php7.3-fpm`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.3/fpm/Dockerfile) -- [`3.9.18-fpm-alpine`, `3.9-fpm-alpine`, `3-fpm-alpine`, `fpm-alpine`, `3.9.18-php7.3-fpm-alpine`, `3.9-php7.3-fpm-alpine`, `3-php7.3-fpm-alpine`, `php7.3-fpm-alpine`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.3/fpm-alpine/Dockerfile) -- [`3.9.18-php7.4-apache`, `3.9-php7.4-apache`, `3-php7.4-apache`, `php7.4-apache`, `3.9.18-php7.4`, `3.9-php7.4`, `3-php7.4`, `php7.4`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.4/apache/Dockerfile) -- [`3.9.18-php7.4-fpm`, `3.9-php7.4-fpm`, `3-php7.4-fpm`, `php7.4-fpm`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.4/fpm/Dockerfile) -- [`3.9.18-php7.4-fpm-alpine`, `3.9-php7.4-fpm-alpine`, `3-php7.4-fpm-alpine`, `php7.4-fpm-alpine`](https://github.com/joomla/docker-joomla/blob/f57eb977eb1cdd6872c278be24458f281a9c92c3/php7.4/fpm-alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -47,7 +47,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/joomla`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fjoomla) + [official-images repo's `library/joomla` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjoomla) [official-images repo's `library/joomla` file](https://github.com/docker-library/official-images/blob/master/library/joomla) ([history](https://github.com/docker-library/official-images/commits/master/library/joomla)) - **Source of this description**: @@ -141,9 +141,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `joomla:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/jruby/README.md b/jruby/README.md index 933a25724371..6bb743a1b9b4 100644 --- a/jruby/README.md +++ b/jruby/README.md @@ -17,36 +17,38 @@ WARNING: # Quick reference - **Maintained by**: - [the Docker Community](https://github.com/cpuguy83/docker-jruby) + [the Docker Community](https://github.com/jruby/docker-jruby) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `9`, `9.2`, `9.2.11`, `9.2-jre`, `9.2-jre8`, `9.2.11-jre`, `9.2.11-jre8`, `9.2.11.1`, `9.2.11.1-jre`, `9.2.11.1-jre8`](https://github.com/cpuguy83/docker-jruby/blob/669ad8f91df152ae83deef766569e0b1f5ec6b2f/9000/jre8/Dockerfile) -- [`9-jdk`, `9-jdk8`, `9.2-jdk`, `9.2-jdk8`, `9.2.11-jdk`, `9.2.11-jdk8`, `9.2.11.1-jdk`, `9.2.11.1-jdk8`](https://github.com/cpuguy83/docker-jruby/blob/669ad8f91df152ae83deef766569e0b1f5ec6b2f/9000/jdk8/Dockerfile) -- [`9.2-jre11`, `9.2.11-jre11`, `9.2.11.1-jre11`](https://github.com/cpuguy83/docker-jruby/blob/669ad8f91df152ae83deef766569e0b1f5ec6b2f/9000/jre11/Dockerfile) -- [`9.2-jdk11`, `9.2.11-jdk11`, `9.2.11.1-jdk11`](https://github.com/cpuguy83/docker-jruby/blob/669ad8f91df152ae83deef766569e0b1f5ec6b2f/9000/jdk11/Dockerfile) -- [`9.2-jdk14`, `9.2.11-jdk14`, `9.2.11.1-jdk14`](https://github.com/cpuguy83/docker-jruby/blob/669ad8f91df152ae83deef766569e0b1f5ec6b2f/9000/jdk14/Dockerfile) -- [`9-onbuild`, `9.2-onbuild`, `9.2.11-onbuild`, `9.2.11.1-onbuild`](https://github.com/cpuguy83/docker-jruby/blob/669ad8f91df152ae83deef766569e0b1f5ec6b2f/9000/onbuild-jdk8/Dockerfile) -- [`9.1`, `9.1.17`, `9.1.17.0`, `9.1-jre`, `9.1.17-jre`, `9.1.17.0-jre`](https://github.com/cpuguy83/docker-jruby/blob/8bc3fe27670a851953345182fe12f14f5e708383/9000/jre/Dockerfile) -- [`9.1-jdk`, `9.1.17-jdk`, `9.1.17.0-jdk`](https://github.com/cpuguy83/docker-jruby/blob/8bc3fe27670a851953345182fe12f14f5e708383/9000/jdk/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/cpuguy83/docker-jruby/issues](https://github.com/cpuguy83/docker-jruby/issues) + [https://github.com/jruby/docker-jruby/issues](https://github.com/jruby/docker-jruby/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/jruby/) + [`amd64`](https://hub.docker.com/r/amd64/jruby/), [`arm64v8`](https://hub.docker.com/r/arm64v8/jruby/) - **Published image artifact details**: [repo-info repo's `repos/jruby/` directory](https://github.com/docker-library/repo-info/blob/master/repos/jruby) ([history](https://github.com/docker-library/repo-info/commits/master/repos/jruby)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/jruby`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fjruby) + [official-images repo's `library/jruby` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjruby) [official-images repo's `library/jruby` file](https://github.com/docker-library/official-images/blob/master/library/jruby) ([history](https://github.com/docker-library/official-images/commits/master/library/jruby)) - **Source of this description**: @@ -109,22 +111,6 @@ For many simple, single file projects, you may find it inconvenient to write a c $ 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 ``` -# Image Variants - -The `jruby` images come in many flavors, each designed for a specific use case. - -## `jruby:` - -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. - -## `jruby:-onbuild` - -The `ONBUILD` image variants are deprecated, and their usage is discouraged. For more details, see [docker-library/official-images#2076](https://github.com/docker-library/official-images/issues/2076). - -While the `onbuild` variant is really useful for "getting off the ground running" (zero to Dockerized in a short period of time), it's not recommended for long-term usage within a project due to the lack of control over *when* the `ONBUILD` triggers fire (see also [`docker/docker#5714`](https://github.com/docker/docker/issues/5714), [`docker/docker#8240`](https://github.com/docker/docker/issues/8240), [`docker/docker#11917`](https://github.com/docker/docker/issues/11917)). - -Once you've got a handle on how your project functions within Docker, you'll probably want to adjust your `Dockerfile` to inherit from a non-`onbuild` variant and copy the commands from the `onbuild` variant `Dockerfile` (moving the `ONBUILD` lines to the end and removing the `ONBUILD` keywords) into your own file so that you have tighter control over them and more transparency for yourself and others looking at your `Dockerfile` as to what it does. This also makes it easier to add additional requirements as time goes on (such as installing more packages before performing the previously-`ONBUILD` steps). - # License View [license information](https://github.com/jruby/jruby/blob/master/COPYING) for the software contained in this image. diff --git a/jruby/github-repo b/jruby/github-repo index 083130bae873..305a7cc12e86 100644 --- a/jruby/github-repo +++ b/jruby/github-repo @@ -1 +1 @@ -https://github.com/cpuguy83/docker-jruby +https://github.com/jruby/docker-jruby diff --git a/julia/README.md b/julia/README.md index 469e1e0a2d35..7a7f350f7139 100644 --- a/julia/README.md +++ b/julia/README.md @@ -20,7 +20,7 @@ WARNING: [the Docker Community](https://github.com/docker-library/julia) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,24 +28,48 @@ WARNING: ## Simple Tags -- [`1.4.1-buster`, `1.4-buster`, `1-buster`, `buster`](https://github.com/docker-library/julia/blob/35ec6b3efb79d22ae7812772d1defdf66bb8990e/1.4/buster/Dockerfile) -- [`1.4.1-windowsservercore-ltsc2016`, `1.4-windowsservercore-ltsc2016`, `1-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/docker-library/julia/blob/35ec6b3efb79d22ae7812772d1defdf66bb8990e/1.4/windows/windowsservercore-ltsc2016/Dockerfile) -- [`1.4.1-windowsservercore-1809`, `1.4-windowsservercore-1809`, `1-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/julia/blob/35ec6b3efb79d22ae7812772d1defdf66bb8990e/1.4/windows/windowsservercore-1809/Dockerfile) -- [`1.0.5-buster`, `1.0-buster`](https://github.com/docker-library/julia/blob/4c770401df0b946da5cf61150bedb05280b218a6/1.0/buster/Dockerfile) -- [`1.0.5-stretch`, `1.0-stretch`](https://github.com/docker-library/julia/blob/4c770401df0b946da5cf61150bedb05280b218a6/1.0/stretch/Dockerfile) -- [`1.0.5-windowsservercore-ltsc2016`, `1.0-windowsservercore-ltsc2016`](https://github.com/docker-library/julia/blob/fc3c116c6fe19f870091df6843ed63a37f6c291b/1.0/windows/windowsservercore-ltsc2016/Dockerfile) -- [`1.0.5-windowsservercore-1809`, `1.0-windowsservercore-1809`](https://github.com/docker-library/julia/blob/fc3c116c6fe19f870091df6843ed63a37f6c291b/1.0/windows/windowsservercore-1809/Dockerfile) +- [`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) ## Shared Tags -- `1.4.1`, `1.4`, `1`, `latest`: - - [`1.4.1-buster`](https://github.com/docker-library/julia/blob/35ec6b3efb79d22ae7812772d1defdf66bb8990e/1.4/buster/Dockerfile) - - [`1.4.1-windowsservercore-ltsc2016`](https://github.com/docker-library/julia/blob/35ec6b3efb79d22ae7812772d1defdf66bb8990e/1.4/windows/windowsservercore-ltsc2016/Dockerfile) - - [`1.4.1-windowsservercore-1809`](https://github.com/docker-library/julia/blob/35ec6b3efb79d22ae7812772d1defdf66bb8990e/1.4/windows/windowsservercore-1809/Dockerfile) -- `1.0.5`, `1.0`: - - [`1.0.5-buster`](https://github.com/docker-library/julia/blob/4c770401df0b946da5cf61150bedb05280b218a6/1.0/buster/Dockerfile) - - [`1.0.5-windowsservercore-ltsc2016`](https://github.com/docker-library/julia/blob/fc3c116c6fe19f870091df6843ed63a37f6c291b/1.0/windows/windowsservercore-ltsc2016/Dockerfile) - - [`1.0.5-windowsservercore-1809`](https://github.com/docker-library/julia/blob/fc3c116c6fe19f870091df6843ed63a37f6c291b/1.0/windows/windowsservercore-1809/Dockerfile) +- `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) # Quick reference (cont.) @@ -60,7 +84,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/julia`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fjulia) + [official-images repo's `library/julia` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjulia) [official-images repo's `library/julia` file](https://github.com/docker-library/official-images/blob/master/library/julia) ([history](https://github.com/docker-library/official-images/commits/master/library/julia)) - **Source of this description**: @@ -74,6 +98,12 @@ Julia is a high-level, high-performance dynamic programming language for technic ![logo](https://raw.githubusercontent.com/docker-library/docs/520519ad7db3ea9fd5d3590e836c839a0ffd6f19/julia/logo.png) +# Support Tiers + +Platforms supported by Julia are divided into a tier system that ranks them based on level of support. For more dedicated information about support tiers, please see ["Currently supported platforms" on the Julia download page](https://julialang.org/downloads/#currently_supported_platforms). + +It's especially relevant to note that Alpine / musl is "Tier 3" due to several known issues (see [docker-library/julia#47 (comment)](https://github.com/docker-library/julia/pull/47#issuecomment-652661869), [JuliaLang/julia#28805](https://github.com/JuliaLang/julia/issues/28805), [JuliaLang/julia#36458](https://github.com/JuliaLang/julia/issues/36458)). + # How to use this image ## Start Julia REPL @@ -98,7 +128,15 @@ 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 buster or stretch 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 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. + +## `julia:-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). ## `julia:-windowsservercore` diff --git a/julia/content.md b/julia/content.md index 19907cf1e016..4c49c9049b64 100644 --- a/julia/content.md +++ b/julia/content.md @@ -6,6 +6,12 @@ Julia is a high-level, high-performance dynamic programming language for technic %%LOGO%% +# Support Tiers + +Platforms supported by Julia are divided into a tier system that ranks them based on level of support. For more dedicated information about support tiers, please see ["Currently supported platforms" on the Julia download page](https://julialang.org/downloads/#currently_supported_platforms). + +It's especially relevant to note that Alpine / musl is "Tier 3" due to several known issues (see [docker-library/julia#47 (comment)](https://github.com/docker-library/julia/pull/47#issuecomment-652661869), [JuliaLang/julia#28805](https://github.com/JuliaLang/julia/issues/28805), [JuliaLang/julia#36458](https://github.com/JuliaLang/julia/issues/36458)). + # How to use this image ## Start Julia REPL diff --git a/kaazing-gateway/README-short.txt b/kaazing-gateway/README-short.txt deleted file mode 100644 index d6b829005c34..000000000000 --- a/kaazing-gateway/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Official build of Kaazing Gateway. diff --git a/kaazing-gateway/README.md b/kaazing-gateway/README.md deleted file mode 100644 index dfaaa5ad2856..000000000000 --- a/kaazing-gateway/README.md +++ /dev/null @@ -1,113 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [the Kaazing Docker Maintainers](https://github.com/kaazing/gateway.docker) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`5.6.0`, `5.6`, `5`, `latest`](https://github.com/kaazing/gateway.docker/blob/a40c8da9d2c2925bdd78b9a6d1b6da3fe89322d1/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/kaazing/gateway.docker/issues](https://github.com/kaazing/gateway.docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/kaazing-gateway/), [`arm64v8`](https://hub.docker.com/r/arm64v8/kaazing-gateway/) - -- **Published image artifact details**: - [repo-info repo's `repos/kaazing-gateway/` directory](https://github.com/docker-library/repo-info/blob/master/repos/kaazing-gateway) ([history](https://github.com/docker-library/repo-info/commits/master/repos/kaazing-gateway)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/kaazing-gateway`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fkaazing-gateway) - [official-images repo's `library/kaazing-gateway` file](https://github.com/docker-library/official-images/blob/master/library/kaazing-gateway) ([history](https://github.com/docker-library/official-images/commits/master/library/kaazing-gateway)) - -- **Source of this description**: - [docs repo's `kaazing-gateway/` directory](https://github.com/docker-library/docs/tree/master/kaazing-gateway) ([history](https://github.com/docker-library/docs/commits/master/kaazing-gateway)) - -# What is the KAAZING Gateway? - -The Kaazing Gateway is a network gateway created to provide a single access point for real-time web based protocols that supports load balancing, clustering, and security management. It is designed to provide scalable and secure bidirectional event-based communication over the web; on every platform, browser, and device. - -![logo](https://raw.githubusercontent.com/docker-library/docs/ba0031dd881f3b95d30ebf1d6094e99985d8eb6d/kaazing-gateway/logo.png) - -# How to use this image - -## Up and Running - -By default the gateway runs a WebSocket echo service similar to [websocket.org](https://www.websocket.org/echo.html). - -You must give your gateway container a hostname. To do this, use the `docker run -h somehostname` option, along with the -e option to define an environment variable, GATEWAY_OPTS, to pass this hostname to the gateway configuration (your hostname may vary): - -```console -$ docker run --name some-kaazing-gateway -h somehostname -e GATEWAY_OPTS="-Dgateway.hostname=somehostname -Xmx512m -Djava.security.egd=file:/dev/urandom" -d -p 8000:8000 kaazing-gateway -``` - -Note: the additional GATEWAY_OPTS options, `-Xmx512m -Djava.security.egd=file:/dev/urandom`, are added in order to preserve these values from the original Dockerfile for the gateway. The `-Xmx512m` value specifies a minimum Java heap size of 512 MB, and `-Djava.security.egd=file:/dev/urandom` is to facilitate faster startup on VMs. See the `Dockerfile` link referenced above for details. - -You should then be able to connect to ws://somehostname:8000 from the [WebSocket echo test](https://www.websocket.org/echo.html). - -Note: all of the above assumes that `somehostname` is resolvable from your browser. You may need to add an etc/hosts entry for `somehostname` on your `dockerhost ip`. - -## Custom Configuration - -To launch a container with a specific configuration you can do the following: - -```console -$ docker run --name some-kaazing-gateway -h somehostname -e GATEWAY_OPTS="-Dgateway.hostname=somehostname -Xmx512m -Djava.security.egd=file:/dev/urandom" -v /some/gateway-config.xml:/kaazing-gateway/conf/gateway-config.xml:ro -d kaazing-gateway -``` - -For information on the syntax of the Kaazing Gateway configuration files, see [the official documentation](https://kaazing.com/doc/5.0/index.html) (specifically the *For Administrators* section). - -If you wish to adapt the default Gateway configuration file, you can use a command such as the following to copy the file from a running Kaazing Gateway container: - -```console -$ docker cp some-kaazing:/kaazing-gateway/conf/gateway-config-minimal.xml /some/gateway-config.xml -``` - -As above, this can also be accomplished more cleanly using a simple `Dockerfile`: - -```dockerfile -FROM kaazing-gateway -COPY gateway-config.xml conf/gateway-config.xml -``` - -Then, build with `docker build -t some-custom-kaazing-gateway .` and run: - -```console -$ docker run --name some-kaazing-gateway -d some-custom-kaazing-gateway -``` - -## GATEWAY_OPTS - -For more information on the GATEWAY_OPTS environment variable, see [Configure Kaazing Gateway Using the GATEWAY_OPTS Environment Variable](https://kaazing.com/doc/5.0/admin-reference/p_configure_gateway_opts/). - -# License - -View [license information](https://github.com/kaazing/gateway/blob/master/LICENSE.txt) 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 `kaazing-gateway/` directory](https://github.com/docker-library/repo-info/tree/master/repos/kaazing-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/kaazing-gateway/content.md b/kaazing-gateway/content.md deleted file mode 100644 index e6db23f155dc..000000000000 --- a/kaazing-gateway/content.md +++ /dev/null @@ -1,56 +0,0 @@ -# What is the KAAZING Gateway? - -The Kaazing Gateway is a network gateway created to provide a single access point for real-time web based protocols that supports load balancing, clustering, and security management. It is designed to provide scalable and secure bidirectional event-based communication over the web; on every platform, browser, and device. - -%%LOGO%% - -# How to use this image - -## Up and Running - -By default the gateway runs a WebSocket echo service similar to [websocket.org](https://www.websocket.org/echo.html). - -You must give your gateway container a hostname. To do this, use the `docker run -h somehostname` option, along with the -e option to define an environment variable, GATEWAY_OPTS, to pass this hostname to the gateway configuration (your hostname may vary): - -```console -$ docker run --name some-kaazing-gateway -h somehostname -e GATEWAY_OPTS="-Dgateway.hostname=somehostname -Xmx512m -Djava.security.egd=file:/dev/urandom" -d -p 8000:8000 %%IMAGE%% -``` - -Note: the additional GATEWAY_OPTS options, `-Xmx512m -Djava.security.egd=file:/dev/urandom`, are added in order to preserve these values from the original Dockerfile for the gateway. The `-Xmx512m` value specifies a minimum Java heap size of 512 MB, and `-Djava.security.egd=file:/dev/urandom` is to facilitate faster startup on VMs. See the `Dockerfile` link referenced above for details. - -You should then be able to connect to ws://somehostname:8000 from the [WebSocket echo test](https://www.websocket.org/echo.html). - -Note: all of the above assumes that `somehostname` is resolvable from your browser. You may need to add an etc/hosts entry for `somehostname` on your `dockerhost ip`. - -## Custom Configuration - -To launch a container with a specific configuration you can do the following: - -```console -$ docker run --name some-kaazing-gateway -h somehostname -e GATEWAY_OPTS="-Dgateway.hostname=somehostname -Xmx512m -Djava.security.egd=file:/dev/urandom" -v /some/gateway-config.xml:/kaazing-gateway/conf/gateway-config.xml:ro -d %%IMAGE%% -``` - -For information on the syntax of the Kaazing Gateway configuration files, see [the official documentation](https://kaazing.com/doc/5.0/index.html) (specifically the *For Administrators* section). - -If you wish to adapt the default Gateway configuration file, you can use a command such as the following to copy the file from a running Kaazing Gateway container: - -```console -$ docker cp some-kaazing:/kaazing-gateway/conf/gateway-config-minimal.xml /some/gateway-config.xml -``` - -As above, this can also be accomplished more cleanly using a simple `Dockerfile`: - -```dockerfile -FROM %%IMAGE%% -COPY gateway-config.xml conf/gateway-config.xml -``` - -Then, build with `docker build -t some-custom-kaazing-gateway .` and run: - -```console -$ docker run --name some-kaazing-gateway -d some-custom-kaazing-gateway -``` - -## GATEWAY_OPTS - -For more information on the GATEWAY_OPTS environment variable, see [Configure Kaazing Gateway Using the GATEWAY_OPTS Environment Variable](https://kaazing.com/doc/5.0/admin-reference/p_configure_gateway_opts/). diff --git a/kaazing-gateway/github-repo b/kaazing-gateway/github-repo deleted file mode 100644 index 862aa87450fe..000000000000 --- a/kaazing-gateway/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/kaazing/gateway.docker diff --git a/kaazing-gateway/license.md b/kaazing-gateway/license.md deleted file mode 100644 index bfef639e7557..000000000000 --- a/kaazing-gateway/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://github.com/kaazing/gateway/blob/master/LICENSE.txt) for the software contained in this image. diff --git a/kaazing-gateway/logo.png b/kaazing-gateway/logo.png deleted file mode 100644 index b23ea17ec6f9..000000000000 Binary files a/kaazing-gateway/logo.png and /dev/null differ diff --git a/kaazing-gateway/maintainer.md b/kaazing-gateway/maintainer.md deleted file mode 100644 index 39f75e47e2db..000000000000 --- a/kaazing-gateway/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[the Kaazing Docker Maintainers](%%GITHUB-REPO%%) diff --git a/kapacitor/README.md b/kapacitor/README.md index 64fec85bb261..4ca05ec6a851 100644 --- a/kapacitor/README.md +++ b/kapacitor/README.md @@ -20,14 +20,14 @@ WARNING: [InfluxData](https://github.com/influxdata/influxdata-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `1.4.1`](https://github.com/influxdata/influxdata-docker/blob/65e446ee51fa4324559198886e2dd2ce0c24d21e/kapacitor/1.4/Dockerfile) -- [`1.4-alpine`, `1.4.1-alpine`](https://github.com/influxdata/influxdata-docker/blob/65e446ee51fa4324559198886e2dd2ce0c24d21e/kapacitor/1.4/alpine/Dockerfile) -- [`1.5`, `1.5.4`, `latest`](https://github.com/influxdata/influxdata-docker/blob/65e446ee51fa4324559198886e2dd2ce0c24d21e/kapacitor/1.5/Dockerfile) -- [`1.5-alpine`, `1.5.4-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/65e446ee51fa4324559198886e2dd2ce0c24d21e/kapacitor/1.5/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -42,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/kapacitor`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fkapacitor) + [official-images repo's `library/kapacitor` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fkapacitor) [official-images repo's `library/kapacitor` file](https://github.com/docker-library/official-images/blob/master/library/kapacitor) ([history](https://github.com/docker-library/official-images/commits/master/library/kapacitor)) - **Source of this description**: @@ -191,9 +191,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `kapacitor:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/kibana/README.md b/kibana/README.md index ad86f30d6066..8bc1951938a9 100644 --- a/kibana/README.md +++ b/kibana/README.md @@ -24,8 +24,8 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7.7.0`](https://github.com/docker-library/kibana/blob/e3426d2c1ba645d6e19eb0ac66d7a400fa5f3fdf/7/Dockerfile) -- [`6.8.9`](https://github.com/docker-library/kibana/blob/5e0efc4e8d90e20f0f7faefa145b9b2aebcb2c5a/6/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +33,14 @@ WARNING: For issues with the Kibana Docker image or Kibana: https://github.com/elastic/kibana/issues - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/kibana/) + [`amd64`](https://hub.docker.com/r/amd64/kibana/), [`arm64v8`](https://hub.docker.com/r/arm64v8/kibana/) - **Published image artifact details**: [repo-info repo's `repos/kibana/` directory](https://github.com/docker-library/repo-info/blob/master/repos/kibana) ([history](https://github.com/docker-library/repo-info/commits/master/repos/kibana)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/kibana`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fkibana) + [official-images repo's `library/kibana` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fkibana) [official-images repo's `library/kibana` file](https://github.com/docker-library/official-images/blob/master/library/kibana) ([history](https://github.com/docker-library/official-images/commits/master/library/kibana)) - **Source of this description**: @@ -94,7 +94,7 @@ For additional information on running and configuring Kibana on Docker, see [Run # License -View [license information](https://github.com/elastic/kibana/blob/master/licenses/ELASTIC-LICENSE.txt) for the software contained in this image. +View [license information](https://github.com/elastic/kibana/blob/master/licenses/ELASTIC-LICENSE-2.0.txt) 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/kibana/license.md b/kibana/license.md index 235b4ac7c23a..9bf621b35289 100644 --- a/kibana/license.md +++ b/kibana/license.md @@ -1 +1 @@ -View [license information](https://github.com/elastic/kibana/blob/master/licenses/ELASTIC-LICENSE.txt) for the software contained in this image. +View [license information](https://github.com/elastic/kibana/blob/master/licenses/ELASTIC-LICENSE-2.0.txt) for the software contained in this image. diff --git a/known/README-short.txt b/known/README-short.txt deleted file mode 100644 index ef69737a0f46..000000000000 --- a/known/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Blogging, meet social. Known is a social publishing platform. diff --git a/known/README.md b/known/README.md deleted file mode 100644 index 0eff64a1c385..000000000000 --- a/known/README.md +++ /dev/null @@ -1,107 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [Known](https://github.com/idno/Known-Docker) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`0.9.9`, `0.9`, `0`, `latest`](https://github.com/idno/Known-Docker/blob/3454a52b4ad48e22b95e706dba9ff953cf84c2b1/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/idno/Known-Docker/issues](https://github.com/idno/Known-Docker/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/known/), [`arm64v8`](https://hub.docker.com/r/arm64v8/known/) - -- **Published image artifact details**: - [repo-info repo's `repos/known/` directory](https://github.com/docker-library/repo-info/blob/master/repos/known) ([history](https://github.com/docker-library/repo-info/commits/master/repos/known)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/known`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fknown) - [official-images repo's `library/known` file](https://github.com/docker-library/official-images/blob/master/library/known) ([history](https://github.com/docker-library/official-images/commits/master/library/known)) - -- **Source of this description**: - [docs repo's `known/` directory](https://github.com/docker-library/docs/tree/master/known) ([history](https://github.com/docker-library/docs/commits/master/known)) - -# Known: social publishing for groups and individuals - -Blogging, meet social. - -Known is a social publishing platform. Publish on your own site, reach your audience across social media. - -![logo](https://raw.githubusercontent.com/docker-library/docs/817ab3c02e0a6c38fe8986c4ba96e23a9db26fab/known/logo.png) - -# How to use this image - -```bash -docker run --link some-mysql:db -d known -``` - -Now you can get access to fpm running on port 9000 inside the container. If you want to access it from the Internets, we recommend using a reverse proxy in front. You can find more information on that on the [docker-compose](#docker-compose) section. - -The following environment variables are also honored for configuring your Known instance: - -- `-e KNOWN_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) -- `-e KNOWN_DB_USER=...` (defaults to "root") -- `-e KNOWN_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) -- `-e KNOWN_DB_NAME=...` (defaults to "known") -- `-e MAIL_HOST=...` -- `-e MAIL_PORT=...` -- `-e MAIL_SECURE=...` ("starttls" for instance) -- `-e MAIL_USER=...` -- `-e MAIL_PASS=...` - -If the `KNOWN_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `known` container, provided that the `KNOWN_DB_USER` specified has the necessary permissions to create it. - -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `KNOWN_DB_HOST` along with the password in `KNOWN_DB_PASSWORD` and the username in `KNOWN_DB_USER` (if it is something other than `root`): - -```console -$ docker run --name some-known -e KNOWN_DB_HOST=10.1.2.3:3306 \ - -e KNOWN_DB_USER=... -e KNOWN_DB_PASSWORD=... -d known -``` - -## Via docker-compose - -You can use a setup that is used in production at [IndieHosters/known](https://github.com/indiehosters/known). - -## Installation - -Once started, you'll arrive at the configuration wizard. Follow the steps as indicated. - -## Contribute - -Pull requests are very welcome! - -We'd love to hear your feedback and suggestions in the issue tracker: [github.com/idno/Known-docker/issues](https://github.com/idno/Known-docker/issues). - -# License - -View [license information](https://raw.githubusercontent.com/idno/Known/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 `known/` directory](https://github.com/docker-library/repo-info/tree/master/repos/known). - -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/known/content.md b/known/content.md deleted file mode 100644 index da2213ea0ede..000000000000 --- a/known/content.md +++ /dev/null @@ -1,50 +0,0 @@ -# Known: social publishing for groups and individuals - -Blogging, meet social. - -Known is a social publishing platform. Publish on your own site, reach your audience across social media. - -%%LOGO%% - -# How to use this image - -```bash -docker run --link some-mysql:db -d %%IMAGE%% -``` - -Now you can get access to fpm running on port 9000 inside the container. If you want to access it from the Internets, we recommend using a reverse proxy in front. You can find more information on that on the [docker-compose](#docker-compose) section. - -The following environment variables are also honored for configuring your Known instance: - -- `-e KNOWN_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) -- `-e KNOWN_DB_USER=...` (defaults to "root") -- `-e KNOWN_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) -- `-e KNOWN_DB_NAME=...` (defaults to "known") -- `-e MAIL_HOST=...` -- `-e MAIL_PORT=...` -- `-e MAIL_SECURE=...` ("starttls" for instance) -- `-e MAIL_USER=...` -- `-e MAIL_PASS=...` - -If the `KNOWN_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 `KNOWN_DB_USER` specified has the necessary permissions to create it. - -If you'd like to use an external database instead of a linked `mysql` container, specify the hostname and port with `KNOWN_DB_HOST` along with the password in `KNOWN_DB_PASSWORD` and the username in `KNOWN_DB_USER` (if it is something other than `root`): - -```console -$ docker run --name some-%%REPO%% -e KNOWN_DB_HOST=10.1.2.3:3306 \ - -e KNOWN_DB_USER=... -e KNOWN_DB_PASSWORD=... -d %%REPO%% -``` - -## Via docker-compose - -You can use a setup that is used in production at [IndieHosters/known](https://github.com/indiehosters/known). - -## Installation - -Once started, you'll arrive at the configuration wizard. Follow the steps as indicated. - -## Contribute - -Pull requests are very welcome! - -We'd love to hear your feedback and suggestions in the issue tracker: [github.com/idno/Known-docker/issues](https://github.com/idno/Known-docker/issues). diff --git a/known/github-repo b/known/github-repo deleted file mode 100644 index 20300efb8fd2..000000000000 --- a/known/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/idno/Known-Docker diff --git a/known/license.md b/known/license.md deleted file mode 100644 index ca7a8f8a80a0..000000000000 --- a/known/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://raw.githubusercontent.com/idno/Known/master/LICENSE) for the software contained in this image. diff --git a/known/logo.png b/known/logo.png deleted file mode 100644 index 1cfdaa970062..000000000000 Binary files a/known/logo.png and /dev/null differ diff --git a/known/maintainer.md b/known/maintainer.md deleted file mode 100644 index 909ddaf6d6a8..000000000000 --- a/known/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Known](%%GITHUB-REPO%%) diff --git a/kong/README-short.txt b/kong/README-short.txt index 031330bcf561..3bcf8a2a5e40 100644 --- a/kong/README-short.txt +++ b/kong/README-short.txt @@ -1 +1 @@ -The Cloud-Native API Gateway & Service Mesh for APIs and Microservices \ No newline at end of file +The Cloud-Native API Gateway for APIs and Microservices diff --git a/kong/README.md b/kong/README.md index 56b52d1149d3..c14a73b72278 100644 --- a/kong/README.md +++ b/kong/README.md @@ -20,28 +20,22 @@ WARNING: [the Kong Docker Maintainers](https://github.com/kong/kong) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.0.4-alpine`, `2.0.4`, `2.0`, `latest`, `alpine`](https://github.com/Kong/docker-kong/blob/74c5796ec1789d13b794c7cda0a5bca692aa6d53/alpine/Dockerfile) -- [`2.0.4-ubuntu`, `2.0-ubuntu`, `ubuntu`](https://github.com/Kong/docker-kong/blob/74c5796ec1789d13b794c7cda0a5bca692aa6d53/ubuntu/Dockerfile) -- [`2.0.4-centos`, `2.0-centos`, `centos`](https://github.com/Kong/docker-kong/blob/74c5796ec1789d13b794c7cda0a5bca692aa6d53/centos/Dockerfile) -- [`1.5.1-alpine`, `1.5.1`, `1.5`](https://github.com/Kong/docker-kong/blob/8ba4389169d5873be65a09001d06293ccdfc7caf/alpine/Dockerfile) -- [`1.5.1-ubuntu`, `1.5-ubuntu`](https://github.com/Kong/docker-kong/blob/8ba4389169d5873be65a09001d06293ccdfc7caf/ubuntu/Dockerfile) -- [`1.5.1-centos`, `1.5-centos`](https://github.com/Kong/docker-kong/blob/8ba4389169d5873be65a09001d06293ccdfc7caf/centos/Dockerfile) -- [`1.4.3-alpine`, `1.4.3`, `1.4`](https://github.com/Kong/docker-kong/blob/d2884ee222e72c3edb9abd48d4062991e41ea7bc/alpine/Dockerfile) -- [`1.4.3-ubuntu`, `1.4-ubuntu`](https://github.com/Kong/docker-kong/blob/d2884ee222e72c3edb9abd48d4062991e41ea7bc/ubuntu/Dockerfile) -- [`1.4.3-centos`, `1.4-centos`](https://github.com/Kong/docker-kong/blob/d2884ee222e72c3edb9abd48d4062991e41ea7bc/centos/Dockerfile) -- [`1.3.1-alpine`, `1.3.1`, `1.3`](https://github.com/Kong/docker-kong/blob/48b240c47a4d902ddcc20de408e2c08855a5feca/alpine/Dockerfile) -- [`1.3.1-ubuntu`, `1.3-ubuntu`](https://github.com/Kong/docker-kong/blob/48b240c47a4d902ddcc20de408e2c08855a5feca/ubuntu/Dockerfile) -- [`1.3.1-centos`, `1.3-centos`](https://github.com/Kong/docker-kong/blob/48b240c47a4d902ddcc20de408e2c08855a5feca/centos/Dockerfile) -- [`1.2.3-alpine`, `1.2.3`, `1.2`](https://github.com/Kong/docker-kong/blob/f5512d2898dad8ad6c95d42b1762ea004713d519/alpine/Dockerfile) -- [`1.2.3-centos`, `1.2-centos`](https://github.com/Kong/docker-kong/blob/f5512d2898dad8ad6c95d42b1762ea004713d519/centos/Dockerfile) -- [`1.1.3-alpine`, `1.1.3`, `1.1`](https://github.com/Kong/docker-kong/blob/196331b1e6b4798032af4d6c218a441e2c8db74d/alpine/Dockerfile) -- [`1.1.3-centos`, `1.1-centos`](https://github.com/Kong/docker-kong/blob/196331b1e6b4798032af4d6c218a441e2c8db74d/centos/Dockerfile) -- [`1.0.4-alpine`, `1.0.4`, `1.0`](https://github.com/Kong/docker-kong/blob/5a47f391b479e6660edab76813891326630bed0e/alpine/Dockerfile) -- [`1.0.4-centos`, `1.0-centos`](https://github.com/Kong/docker-kong/blob/5a47f391b479e6660edab76813891326630bed0e/centos/Dockerfile) +- [`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) # Quick reference (cont.) @@ -56,7 +50,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/kong`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fkong) + [official-images repo's `library/kong` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fkong) [official-images repo's `library/kong` file](https://github.com/docker-library/official-images/blob/master/library/kong) ([history](https://github.com/docker-library/official-images/commits/master/library/kong)) - **Source of this description**: @@ -64,15 +58,49 @@ WARNING: # What is Kong? -Kong is a scalable, open source API Platform (also known as an API Gateway, or API Middleware, or Service Mesh for Microservices). 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 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. 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. Kong's official documentation can be found at [docs.konghq.com](https://docs.konghq.com/). -# How to use this image +# How to use this image without a Database -First, Kong requires a running Cassandra cluster (3.x+) or PostgreSQL instance (9.6+) before it starts. You can either use the official Cassandra/PostgreSQL containers, or use your own. +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 @@ -97,6 +125,7 @@ $ docker run -d --name kong-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ + -e "POSTGRES_PASSWORD=kong" \ postgres:9.6 ``` @@ -109,6 +138,8 @@ $ 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 ``` @@ -126,6 +157,7 @@ $ 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" \ @@ -141,7 +173,7 @@ $ docker run -d --name 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 now read the docs at [docs.konghq.com](https://docs.konghq.com/) to learn more about Kong. +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) @@ -149,7 +181,7 @@ You can override any property of the [Kong configuration file](https://docs.kong ```shell $ docker run -d --name kong \ - -e "KONG_DATABASE=postgres" + -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_LOG_LEVEL=info" \ -e "KONG_CUSTOM_PLUGINS=helloworld" \ @@ -164,7 +196,7 @@ $ docker run -d --name kong \ ## Reload Kong in a running container -If you change your custom configuration, you can reload Kong (without downtime) by issuing: +If you change your custom configuration, reload Kong (without downtime) by running: ```shell $ docker exec -it kong kong reload @@ -174,14 +206,7 @@ This will run the [`kong reload`](https://docs.konghq.com/latest/cli/#reload) co # 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. - -# Service Mesh - -Since version 1.x you can run Kong in a Service Mesh deployment as a platform-agnostic sidecar proxy (including Kubernetes, but also on any other platform supported by Kong). To get started and learn more you can read the docs at: - -- [Streams and Service Mesh](https://docs.konghq.com/latest/streams-and-service-mesh/) -- [Kubernetes and Service Mesh](https://github.com/Kong/kong-mesh-dist-kubernetes) +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 @@ -193,9 +218,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `kong:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/kong/content.md b/kong/content.md index 0e065b79ae65..20d92fb3759a 100644 --- a/kong/content.md +++ b/kong/content.md @@ -1,14 +1,48 @@ # What is Kong? -Kong is a scalable, open source API Platform (also known as an API Gateway, or API Middleware, or Service Mesh for Microservices). 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 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. 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. Kong's official documentation can be found at [docs.konghq.com](https://docs.konghq.com/). -# How to use this image +# How to use this image without a Database -First, Kong requires a running Cassandra cluster (3.x+) or PostgreSQL instance (9.6+) before it starts. You can either use the official Cassandra/PostgreSQL containers, or use your own. +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 @@ -33,6 +67,7 @@ $ docker run -d --name kong-database \ -p 5432:5432 \ -e "POSTGRES_USER=kong" \ -e "POSTGRES_DB=kong" \ + -e "POSTGRES_PASSWORD=kong" \ postgres:9.6 ``` @@ -45,6 +80,8 @@ $ 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 ``` @@ -62,6 +99,7 @@ $ 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" \ @@ -77,7 +115,7 @@ $ docker run -d --name 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 now read the docs at [docs.konghq.com](https://docs.konghq.com/) to learn more about Kong. +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) @@ -85,7 +123,7 @@ You can override any property of the [Kong configuration file](https://docs.kong ```shell $ docker run -d --name kong \ - -e "KONG_DATABASE=postgres" + -e "KONG_DATABASE=postgres" \ -e "KONG_PG_HOST=kong-database" \ -e "KONG_LOG_LEVEL=info" \ -e "KONG_CUSTOM_PLUGINS=helloworld" \ @@ -100,7 +138,7 @@ $ docker run -d --name kong \ ## Reload Kong in a running container -If you change your custom configuration, you can reload Kong (without downtime) by issuing: +If you change your custom configuration, reload Kong (without downtime) by running: ```shell $ docker exec -it kong kong reload @@ -110,11 +148,4 @@ This will run the [`kong reload`](https://docs.konghq.com/latest/cli/#reload) co # 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. - -# Service Mesh - -Since version 1.x you can run Kong in a Service Mesh deployment as a platform-agnostic sidecar proxy (including Kubernetes, but also on any other platform supported by Kong). To get started and learn more you can read the docs at: - -- [Streams and Service Mesh](https://docs.konghq.com/latest/streams-and-service-mesh/) -- [Kubernetes and Service Mesh](https://github.com/Kong/kong-mesh-dist-kubernetes) +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. diff --git a/lightstreamer/README.md b/lightstreamer/README.md index 5b95033e8427..2888a228efea 100644 --- a/lightstreamer/README.md +++ b/lightstreamer/README.md @@ -20,16 +20,20 @@ WARNING: [the Lightstreamer Server Development Team](https://github.com/Lightstreamer/Docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.0.3`, `6.0`](https://github.com/Lightstreamer/Docker/blob/eeab1ae534273b1b05c973e577a1f3eec8d58427/6.0/Dockerfile) -- [`6.1.0`, `6.1`, `6`](https://github.com/Lightstreamer/Docker/blob/eeab1ae534273b1b05c973e577a1f3eec8d58427/6.1/Dockerfile) -- [`7.0.3-jdk8-openjdk`, `7.0-jdk8-openjdk`, `7.0.3-jdk8`, `7.0-jdk8`](https://github.com/Lightstreamer/Docker/blob/4ffe8753677fe6d6fea3c0e8cdc44383b278a0b7/7.0/jdk8/Dockerfile) -- [`7.0.3-jdk11-openjdk`, `7.0-jdk11-openjdk`, `7.0.3-jdk11`, `7.0-jdk11`, `7.0.3`, `7.0`](https://github.com/Lightstreamer/Docker/blob/3efee7177cc5213bf17ad12ff1ba518f5b58c1f0/7.0/jdk11/Dockerfile) -- [`7.1.0-jdk8-openjdk`, `7.1-jdk8-openjdk`, `7-jdk8-openjdk`, `7.1.0-jdk8`, `7.1-jdk8`, `7-jdk8`](https://github.com/Lightstreamer/Docker/blob/45001c033ed1837a9374a9285b7d2e8acfee6dca/7.1/jdk8/Dockerfile) -- [`7.1.0-jdk11-openjdk`, `7.1-jdk11-openjdk`, `7-jdk11-openjdk`, `7.1.0-jdk11`, `7.1-jdk11`, `7-jdk11`, `7.1.0`, `7.1`, `7`, `latest`](https://github.com/Lightstreamer/Docker/blob/45001c033ed1837a9374a9285b7d2e8acfee6dca/7.1/jdk11/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +48,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/lightstreamer`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Flightstreamer) + [official-images repo's `library/lightstreamer` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Flightstreamer) [official-images repo's `library/lightstreamer` file](https://github.com/docker-library/official-images/blob/master/library/lightstreamer) ([history](https://github.com/docker-library/official-images/commits/master/library/lightstreamer)) - **Source of this description**: @@ -56,7 +60,7 @@ Lightstreamer is a real-time messaging server optimized for the Internet. Blendi For more information and related downloads for Lightstreamer Server and other Lightstreamer products, please visit [www.lightstreamer.com](https://www.lightstreamer.com). -![logo](https://raw.githubusercontent.com/docker-library/docs/3a58248e2d43ced58c294b7980b55846a0ddc9e5/lightstreamer/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/e7ce6514d9289b897fcb5a4b73e9fafb5f761709/lightstreamer/logo.png) # How to use this image @@ -144,7 +148,6 @@ In this case, the `/path/to/my-adapters` folder has to be structured with the re +my_adapter_set_2 ... +my_adapter_set_N - ``` ### Building a new image diff --git a/lightstreamer/content.md b/lightstreamer/content.md index 2b322d6b99f6..93b07ec16e34 100644 --- a/lightstreamer/content.md +++ b/lightstreamer/content.md @@ -92,7 +92,6 @@ In this case, the `/path/to/my-adapters` folder has to be structured with the re +my_adapter_set_2 ... +my_adapter_set_N - ``` ### Building a new image diff --git a/lightstreamer/logo.png b/lightstreamer/logo.png index 09de2860bfa7..90a247a7c1f7 100644 Binary files a/lightstreamer/logo.png and b/lightstreamer/logo.png differ diff --git a/logstash/README.md b/logstash/README.md index e16344b38748..e75935250777 100644 --- a/logstash/README.md +++ b/logstash/README.md @@ -24,8 +24,8 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7.7.0`](https://github.com/docker-library/logstash/blob/2b7e24559f1ec8105ce1f6d906eaa7b0d33775ff/7/Dockerfile) -- [`6.8.9`](https://github.com/docker-library/logstash/blob/a205d9b2634606f8fe9a45ed30655acf5d3ac929/6/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +33,14 @@ WARNING: For issues with Logstash Docker Image or Logstash: https://github.com/elastic/logstash/issues - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/logstash/) + [`amd64`](https://hub.docker.com/r/amd64/logstash/), [`arm64v8`](https://hub.docker.com/r/arm64v8/logstash/) - **Published image artifact details**: [repo-info repo's `repos/logstash/` directory](https://github.com/docker-library/repo-info/blob/master/repos/logstash) ([history](https://github.com/docker-library/repo-info/commits/master/repos/logstash)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/logstash`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Flogstash) + [official-images repo's `library/logstash` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Flogstash) [official-images repo's `library/logstash` file](https://github.com/docker-library/official-images/blob/master/library/logstash) ([history](https://github.com/docker-library/official-images/commits/master/library/logstash)) - **Source of this description**: diff --git a/mageia/README.md b/mageia/README.md index bfa8c7fb26fc..86fee0e84983 100644 --- a/mageia/README.md +++ b/mageia/README.md @@ -20,11 +20,13 @@ WARNING: [Mageia Developers](https://github.com/juanluisbaptiste/docker-brew-mageia) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `latest`](https://github.com/juanluisbaptiste/docker-brew-mageia/blob/718477bf0e9298cf8ed9f08c5229713356e4728d/dist/7/x86_64/Dockerfile) +- [`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) # Quick reference (cont.) @@ -39,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mageia`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmageia) + [official-images repo's `library/mageia` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmageia) [official-images repo's `library/mageia` file](https://github.com/docker-library/official-images/blob/master/library/mageia) ([history](https://github.com/docker-library/official-images/commits/master/library/mageia)) - **Source of this description**: diff --git a/mariadb/README-short.txt b/mariadb/README-short.txt index 4d5ba71da8c0..fba6b84a2a13 100644 --- a/mariadb/README-short.txt +++ b/mariadb/README-short.txt @@ -1 +1 @@ -MariaDB is a community-developed fork of MySQL intended to remain free under the GNU GPL. +MariaDB Server is a high performing open source relational database, forked from MySQL. diff --git a/mariadb/README.md b/mariadb/README.md index b63af677bb27..d4bf2b45f2bc 100644 --- a/mariadb/README.md +++ b/mariadb/README.md @@ -17,33 +17,39 @@ WARNING: # Quick reference - **Maintained by**: - [the Docker Community](https://github.com/docker-library/mariadb) + [MariaDB developer community](https://github.com/MariaDB/mariadb-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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). + +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.5.3-bionic`, `10.5-bionic`, `rc-bionic`, `10.5.3`, `10.5`, `rc`](https://github.com/docker-library/mariadb/blob/f2ba44905eb3aed53fca34536f05f109055d9bc2/10.5/Dockerfile) -- [`10.4.13-bionic`, `10.4-bionic`, `10-bionic`, `bionic`, `10.4.13`, `10.4`, `10`, `latest`](https://github.com/docker-library/mariadb/blob/f2ba44905eb3aed53fca34536f05f109055d9bc2/10.4/Dockerfile) -- [`10.3.23-bionic`, `10.3-bionic`, `10.3.23`, `10.3`](https://github.com/docker-library/mariadb/blob/f2ba44905eb3aed53fca34536f05f109055d9bc2/10.3/Dockerfile) -- [`10.2.32-bionic`, `10.2-bionic`, `10.2.32`, `10.2`](https://github.com/docker-library/mariadb/blob/f2ba44905eb3aed53fca34536f05f109055d9bc2/10.2/Dockerfile) -- [`10.1.45-bionic`, `10.1-bionic`, `10.1.45`, `10.1`](https://github.com/docker-library/mariadb/blob/f2ba44905eb3aed53fca34536f05f109055d9bc2/10.1/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-library/mariadb/issues](https://github.com/docker-library/mariadb/issues) + Issues can be filed on [https://jira.mariadb.org/](https://jira.mariadb.org/) under the "MDEV" Project and "Docker" Component, or on [GitHub](https://github.com/MariaDB/mariadb-docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/mariadb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mariadb/), [`ppc64le`](https://hub.docker.com/r/ppc64le/mariadb/) + [`amd64`](https://hub.docker.com/r/amd64/mariadb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mariadb/), [`ppc64le`](https://hub.docker.com/r/ppc64le/mariadb/), [`s390x`](https://hub.docker.com/r/s390x/mariadb/) - **Published image artifact details**: [repo-info repo's `repos/mariadb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mariadb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mariadb)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mariadb`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmariadb) + [official-images repo's `library/mariadb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmariadb) [official-images repo's `library/mariadb` file](https://github.com/docker-library/official-images/blob/master/library/mariadb) ([history](https://github.com/docker-library/official-images/commits/master/library/mariadb)) - **Source of this description**: @@ -51,32 +57,37 @@ WARNING: # What is MariaDB? -MariaDB is a community-developed fork of the MySQL relational database management system intended to remain free under the GNU GPL. Being a fork of a leading open source software system, it is notable for being led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle. Contributors are required to share their copyright with the MariaDB Foundation. - -The intent is also to maintain high compatibility with MySQL, ensuring a "drop-in" replacement capability with library binary equivalency and exact matching with MySQL APIs and commands. It includes the XtraDB storage engine for replacing InnoDB, as well as a new storage engine, Aria, that intends to be both a transactional and non-transactional engine perhaps even included in future versions of MySQL. +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. -> [wikipedia.org/wiki/MariaDB](https://en.wikipedia.org/wiki/MariaDB) +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/74e3b3d4d60389208732dbd2c95145868111d959/mariadb/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/fe985dcb24154456254e252d1fa4a2b6b656ee80/mariadb/logo.png) # How to use this image ## Start a `mariadb` server instance -Starting a MariaDB instance is simple: +Starting a MariaDB instance with the latest version is simple: ```console -$ docker run --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag +$ 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 ``` -... where `some-mariadb` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MySQL root user and `tag` is the tag specifying the MySQL version you want. See the list above for relevant tags. +or: -## Connect to MariaDB from the MySQL command line client +```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 +``` -The following command starts another `mariadb` container instance and runs the `mysql` command line client against your original `mariadb` container, allowing you to execute SQL statements against your database instance: +... 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 + +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 -it --network some-network --rm mariadb mysql -hsome-mariadb -uexample-user -p +$ docker run -it --network some-network --rm mariadb mariadb -hsome-mariadb -uexample-user -p ``` ... where `some-mariadb` is the name of your original `mariadb` container (connected to the `some-network` Docker network). @@ -84,10 +95,18 @@ $ docker run -it --network some-network --rm mariadb mysql -hsome-mariadb -uexam This image can also be used as a client for non-Docker or remote instances: ```console -$ docker run -it --rm mariadb mysql -hsome.mysql.host -usome-mysql-user -p +$ docker run -it --rm mariadb mariadb -h -u example-user -p +``` + +That will give you a standard MariaDB prompt. You can test it with: + +```console +MariaDB [(none)]> SELECT VERSION(); ``` -More information about the MySQL command line client can be found in the [MySQL documentation](http://dev.mysql.com/doc/en/mysql.html) +... 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/) ## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) @@ -103,7 +122,7 @@ services: image: mariadb restart: always environment: - MYSQL_ROOT_PASSWORD: example + MARIADB_ROOT_PASSWORD: example adminer: image: adminer @@ -112,11 +131,11 @@ 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/mariadb/stack.yml) +[![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 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). -## Container shell access and viewing MySQL logs +## 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: @@ -130,71 +149,104 @@ The log is available through Docker's container log: $ docker logs some-mariadb ``` -## Using a custom MySQL configuration file +## 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: + + [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) -The startup configuration is specified in the file `/etc/mysql/my.cnf`, and that file in turn includes any files found in the `/etc/mysql/conf.d` directory that end with `.cnf`. Settings in files in this directory will augment and/or override settings in `/etc/mysql/my.cnf`. If you want to use a customized MySQL configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as `/etc/mysql/conf.d` inside the `mariadb` container. +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`. -If `/my/custom/config-file.cnf` is the path and name of your custom configuration file, you can start your `mariadb` container like this (note that only the directory path of the custom config file is used in this command): +To view the resulting configuration of your `mariadb` container: ```console -$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag +$ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d --rm mariadb:latest my_print_defaults --mysqld ``` -This will start a new container `some-mariadb` where the MariaDB 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. - ### Configuration without a `cnf` file -Many configuration options can be passed as flags to `mysqld`. This will give you the flexibility to customize the container without needing a `cnf` file. For example, if you want to change the default encoding and collation for all tables to use UTF-8 (`utf8mb4`) just run the following: +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 --name some-mariadb -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci +$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest --port 3808 ``` If you would like to see a complete list of available options, just run: ```console -$ docker run -it --rm mariadb:tag --verbose --help +$ docker run -it --rm mariadb:latest --verbose --help ``` ## Environment Variables -When you start the `mariadb` image, you can adjust the configuration 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. +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: .....`). + +### `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. -### `MYSQL_ROOT_PASSWORD` +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. -This variable is mandatory and specifies the password that will be set for the MariaDB `root` superuser account. In the above example, it was set to `my-secret-pw`. +### `MARIADB_DATABASE` / `MYSQL_DATABASE` -### `MYSQL_DATABASE` +This variable allows you to specify the name of a database to be created on image startup. -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. +### `MARIADB_USER` / `MYSQL_USER`, `MARIADB_PASSWORD` / `MYSQL_PASSWORD`, `MARIADB_PASSWORD_HASH` -### `MYSQL_USER`, `MYSQL_PASSWORD` +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. -These variables are optional, used in conjunction to create a new user and to set that user's password. This user will be granted superuser permissions (see above) for the database specified by the `MYSQL_DATABASE` variable. Both variables are required for a user to be created. +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 `MYSQL_ROOT_PASSWORD` variable. +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. -### `MYSQL_ALLOW_EMPTY_PASSWORD` +### `MARIADB_INITDB_SKIP_TZINFO` / `MYSQL_INITDB_SKIP_TZINFO` -This is an optional variable. Set to `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. +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. -### `MYSQL_RANDOM_ROOT_PASSWORD` +### `MARIADB_AUTO_UPGRADE` / `MARIADB_DISABLE_UPGRADE_BACKUP` -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: .....`). +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: ```console -$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mariadb:tag +$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d mariadb:latest ``` -Currently, this is only supported for `MYSQL_ROOT_PASSWORD`, `MYSQL_ROOT_HOST`, `MYSQL_DATABASE`, `MYSQL_USER`, and `MYSQL_PASSWORD`. +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` and `.sql.gz` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. 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 `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 `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. # Caveats @@ -211,35 +263,186 @@ The Docker documentation is a good starting point for understanding the differen 2. Start your `mariadb` container like this: ```console - $ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mariadb:tag + $ 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 MySQL by default will write its data files. +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 MySQL init completes +## 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), the `$MYSQL_ROOT_PASSWORD` variable should be omitted from the run command line; it will in any case be ignored, and the pre-existing database will not be changed in any way. +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: ```console -$ docker exec some-mariadb sh -c 'exec mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql +$ docker exec some-mariadb 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 `docker exec` command with `-i` flag, similar to the following: +For restoring data. You can use the `docker exec` command with the `-i` flag, similar to the following: + +```console +$ docker exec -i some-mariadb 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 + +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. + +```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 +``` + +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 exec -i some-mariadb sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql +$ 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: + +```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 +``` + +## 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-mariadb-backup:/backup mariadb:latest mariabackup --prepare --target-dir=/backup +``` + +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-mariadb-backup:/backup mariadb: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-mariadb -v /my/new/datadir:/var/lib/mysql -d mariadb: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 mariadb:latest --init-file=/passwordreset.sql +``` + +On restarting the MariaDB container on this `/my/own/datadir`, the `root` and `myuser` passwords will be reset. + +## How to install MariaDB plugins + +MariaDB has many plugins, most are not enabled by default, some are in the mariadb 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 mariadb: + +```console +$ docker run --rm mariadb:latest ls -C /usr/lib/mysql/plugin +``` + +### Enabling a plugin using flags + +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: + +For example enable the `simple\_password\_check` plugin: + +```console +$ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw --network=host -d mariadb: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-mariadb -v /my/custom:/etc/mysql/conf.d -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest +``` + +### 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 mariadb: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 mariadb 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 mariadb:latest +RUN apt-get update && \ + apt-get install mariadb-plugin-connect -y && \ + rm -rf /var/lib/apt/lists/* +``` + +Installing plugins from packages creates a configuration file in the directory `/etc/mysql/mariadb.conf.d/` that loads the plugin on startup. + # License View [license information](https://mariadb.com/kb/en/library/licensing-faq/) for the software contained in this image. diff --git a/mariadb/content.md b/mariadb/content.md index e9e205437b9c..dd8746491a77 100644 --- a/mariadb/content.md +++ b/mariadb/content.md @@ -1,10 +1,8 @@ # What is MariaDB? -MariaDB is a community-developed fork of the MySQL relational database management system intended to remain free under the GNU GPL. Being a fork of a leading open source software system, it is notable for being led by the original developers of MySQL, who forked it due to concerns over its acquisition by Oracle. Contributors are required to share their copyright with the MariaDB Foundation. +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 "drop-in" replacement capability with library binary equivalency and exact matching with MySQL APIs and commands. It includes the XtraDB storage engine for replacing InnoDB, as well as a new storage engine, Aria, that intends to be both a transactional and non-transactional engine perhaps even included in future versions of MySQL. - -> [wikipedia.org/wiki/MariaDB](https://en.wikipedia.org/wiki/MariaDB) +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%% @@ -12,20 +10,27 @@ The intent is also to maintain high compatibility with MySQL, ensuring a "drop-i ## Start a `%%IMAGE%%` server instance -Starting a MariaDB instance is simple: +Starting a MariaDB instance with the latest version is simple: ```console -$ docker run --name some-%%REPO%% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag +$ 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 ``` -... where `some-%%REPO%%` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MySQL root user and `tag` is the tag specifying the MySQL version you want. See the list above for relevant tags. +or: + +```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 +``` -## Connect to MariaDB from the MySQL command line client +... 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. -The following command starts another `%%IMAGE%%` container instance and runs the `mysql` command line client against your original `%%IMAGE%%` container, allowing you to execute SQL statements against your database instance: +## Connect to MariaDB from the MySQL/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%% mysql -hsome-%%REPO%% -uexample-user -p +$ docker run -it --network some-network --rm %%IMAGE%% mariadb -hsome-%%REPO%% -uexample-user -p ``` ... where `some-%%REPO%%` is the name of your original `%%IMAGE%%` container (connected to the `some-network` Docker network). @@ -33,16 +38,24 @@ $ docker run -it --network some-network --rm %%IMAGE%% mysql -hsome-%%REPO%% -ue This image can also be used as a client for non-Docker or remote instances: ```console -$ docker run -it --rm %%IMAGE%% mysql -hsome.mysql.host -usome-mysql-user -p +$ docker run -it --rm %%IMAGE%% mariadb -h -u example-user -p +``` + +That will give you a standard MariaDB prompt. You can test it with: + +```console +MariaDB [(none)]> SELECT VERSION(); ``` -More information about the MySQL command line client can be found in the [MySQL documentation](http://dev.mysql.com/doc/en/mysql.html) +... 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/) ## %%STACK%% 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). -## Container shell access and viewing MySQL logs +## 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 `%%IMAGE%%` container: @@ -56,71 +69,104 @@ The log is available through Docker's container log: $ docker logs some-%%REPO%% ``` -## Using a custom MySQL configuration file +## 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 startup configuration is specified in the file `/etc/mysql/my.cnf`, and that file in turn includes any files found in the `/etc/mysql/conf.d` directory that end with `.cnf`. Settings in files in this directory will augment and/or override settings in `/etc/mysql/my.cnf`. If you want to use a customized MySQL configuration, you can create your alternative configuration file in a directory on the host machine and then mount that directory location as `/etc/mysql/conf.d` inside the `%%IMAGE%%` container. +The `%%IMAGE%%` image configuration contains the Ubuntu MariaDB variables with two custom changes for the container: -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): + [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%%`. + +To view the resulting configuration of your `%%IMAGE%%` container: ```console -$ docker run --name some-%%REPO%% -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag +$ docker run --name some-%%REPO%% -v /my/custom:/etc/mysql/conf.d --rm %%IMAGE%%:latest my_print_defaults --mysqld ``` -This will start a new container `some-%%REPO%%` where the MariaDB 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. - ### Configuration without a `cnf` file -Many configuration options can be passed as flags to `mysqld`. This will give you the flexibility to customize the container without needing a `cnf` file. For example, if you want to change the default encoding and collation for all tables to use UTF-8 (`utf8mb4`) just run the following: +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 --name some-%%REPO%% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag --character-set-server=utf8mb4 --collation-server=utf8mb4_unicode_ci +$ docker run --name some-%%REPO%% -e MARIADB_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:latest --port 3808 ``` If you would like to see a complete list of available options, just run: ```console -$ docker run -it --rm %%IMAGE%%:tag --verbose --help +$ docker run -it --rm %%IMAGE%%:latest --verbose --help ``` ## Environment Variables -When you start the `%%IMAGE%%` image, you can adjust the configuration 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. +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. + +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. -### `MYSQL_ROOT_PASSWORD` +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. -This variable is mandatory and specifies the password that will be set for the MariaDB `root` superuser account. In the above example, it was set to `my-secret-pw`. +### `MARIADB_DATABASE` / `MYSQL_DATABASE` -### `MYSQL_DATABASE` +This variable allows you to specify the name of a database to be created on image startup. -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. +### `MARIADB_USER` / `MYSQL_USER`, `MARIADB_PASSWORD` / `MYSQL_PASSWORD`, `MARIADB_PASSWORD_HASH` -### `MYSQL_USER`, `MYSQL_PASSWORD` +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. -These variables are optional, used in conjunction to create a new user and to set that user's password. This user will be granted superuser permissions (see above) for the database specified by the `MYSQL_DATABASE` variable. Both variables are required for a user to be created. +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 `MYSQL_ROOT_PASSWORD` variable. +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. -### `MYSQL_ALLOW_EMPTY_PASSWORD` +### `MARIADB_INITDB_SKIP_TZINFO` / `MYSQL_INITDB_SKIP_TZINFO` -This is an optional variable. Set to `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. +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. -### `MYSQL_RANDOM_ROOT_PASSWORD` +### `MARIADB_AUTO_UPGRADE` / `MARIADB_DISABLE_UPGRADE_BACKUP` -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: .....`). +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: ```console -$ docker run --name some-mysql -e MYSQL_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d %%IMAGE%%:tag +$ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mysql-root -d %%IMAGE%%:latest ``` -Currently, this is only supported for `MYSQL_ROOT_PASSWORD`, `MYSQL_ROOT_HOST`, `MYSQL_DATABASE`, `MYSQL_USER`, and `MYSQL_PASSWORD`. +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` 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.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. # Caveats @@ -137,31 +183,182 @@ 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 MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag + $ docker run --name some-%%REPO%% -v /my/own/datadir:/var/lib/mysql -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 MySQL by default will write its data files. +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 MySQL init completes +## 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 `%%IMAGE%%` container instance with a data directory that already contains a database (specifically, a `mysql` subdirectory), the `$MYSQL_ROOT_PASSWORD` variable should be omitted from the run command line; it will in any case be ignored, and the pre-existing database will not be changed in any way. +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 mysqldump --all-databases -uroot -p"$MYSQL_ROOT_PASSWORD"' > /some/path/on/your/host/all-databases.sql +$ 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 `docker exec` command with `-i` flag, similar to the following: +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 + +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. + +```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 +``` + +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. + +## 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 + +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: + +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 -$ docker exec -i some-%%REPO%% sh -c 'exec mysql -uroot -p"$MYSQL_ROOT_PASSWORD"' < /some/path/on/your/host/all-databases.sql +$ 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 ``` + +### 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/* +``` + +Installing plugins from packages creates a configuration file in the directory `/etc/mysql/mariadb.conf.d/` that loads the plugin on startup. diff --git a/mariadb/get-help.md b/mariadb/get-help.md new file mode 100644 index 000000000000..9f87e7b498d8 --- /dev/null +++ b/mariadb/get-help.md @@ -0,0 +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). + +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/github-repo b/mariadb/github-repo index 5ef8d698b566..b8c401d9883d 100644 --- a/mariadb/github-repo +++ b/mariadb/github-repo @@ -1 +1 @@ -https://github.com/docker-library/mariadb +https://github.com/MariaDB/mariadb-docker diff --git a/mariadb/issues.md b/mariadb/issues.md new file mode 100644 index 000000000000..47700639f962 --- /dev/null +++ b/mariadb/issues.md @@ -0,0 +1 @@ +Issues can be filed on [https://jira.mariadb.org/](https://jira.mariadb.org/) under the "MDEV" Project and "Docker" Component, or on [GitHub](%%GITHUB-REPO%%/issues) diff --git a/mariadb/logo.png b/mariadb/logo.png index 5c4efbd9cb09..fb112daedcf9 100644 Binary files a/mariadb/logo.png and b/mariadb/logo.png differ diff --git a/mariadb/maintainer.md b/mariadb/maintainer.md deleted file mode 120000 index e727ff0696ae..000000000000 --- a/mariadb/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-community.md \ No newline at end of file diff --git a/mariadb/maintainer.md b/mariadb/maintainer.md new file mode 100644 index 000000000000..3907b235702b --- /dev/null +++ b/mariadb/maintainer.md @@ -0,0 +1 @@ +[MariaDB developer community](%%GITHUB-REPO%%) diff --git a/mariadb/stack.yml b/mariadb/stack.yml index f03f742cd8b4..d5b571712ddb 100644 --- a/mariadb/stack.yml +++ b/mariadb/stack.yml @@ -7,7 +7,7 @@ services: image: mariadb restart: always environment: - MYSQL_ROOT_PASSWORD: example + MARIADB_ROOT_PASSWORD: example adminer: image: adminer diff --git a/matomo/README.md b/matomo/README.md index 4f7ecd2dbc23..8a995a71052e 100644 --- a/matomo/README.md +++ b/matomo/README.md @@ -20,13 +20,13 @@ WARNING: [Matomo](https://github.com/matomo-org/docker) (a Matomo community contributor) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.13.5-apache`, `3.13-apache`, `3-apache`, `apache`, `3.13.5`, `3.13`, `3`, `latest`](https://github.com/matomo-org/docker/blob/5f0966ed08cf055472793309e070fd3caef5af2b/apache/Dockerfile) -- [`3.13.5-fpm`, `3.13-fpm`, `3-fpm`, `fpm`](https://github.com/matomo-org/docker/blob/5f0966ed08cf055472793309e070fd3caef5af2b/fpm/Dockerfile) -- [`3.13.5-fpm-alpine`, `3.13-fpm-alpine`, `3-fpm-alpine`, `fpm-alpine`](https://github.com/matomo-org/docker/blob/5f0966ed08cf055472793309e070fd3caef5af2b/fpm-alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/matomo`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmatomo) + [official-images repo's `library/matomo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmatomo) [official-images repo's `library/matomo` file](https://github.com/docker-library/official-images/blob/master/library/matomo) ([history](https://github.com/docker-library/official-images/commits/master/library/matomo)) - **Source of this description**: @@ -117,7 +117,10 @@ We'd love to hear your feedback and suggestions in the issue tracker: [github.co ## GeoIP -This product includes GeoLite data created by MaxMind, available from [http://www.maxmind.com](http://www.maxmind.com). +~~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/ # Image Variants @@ -129,9 +132,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `matomo:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/matomo/content.md b/matomo/content.md index c59bfa3d5067..6eccf13475b5 100644 --- a/matomo/content.md +++ b/matomo/content.md @@ -68,4 +68,7 @@ We'd love to hear your feedback and suggestions in the issue tracker: [github.co ## GeoIP -This product includes GeoLite data created by MaxMind, available from [http://www.maxmind.com](http://www.maxmind.com). +~~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/ diff --git a/maven/README.md b/maven/README.md index 0221f55ab2f0..492cc1983416 100644 --- a/maven/README.md +++ b/maven/README.md @@ -17,30 +17,36 @@ WARNING: # Quick reference - **Maintained by**: - [the Maven Project](https://github.com/carlossg/docker-maven) + [Carlos Sanchez](https://github.com/carlossg/docker-maven) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.6.3-jdk-11`, `3.6-jdk-11`, `3-jdk-11`, `3.6.3-openjdk-11`, `3.6-openjdk-11`, `3-openjdk-11`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/openjdk-11/Dockerfile) -- [`3.6.3-jdk-11-openj9`, `3.6-jdk-11-openj9`, `3-jdk-11-openj9`, `3.6.3-adoptopenjdk-11-openj9`, `3.6-adoptopenjdk-11-openj9`, `3-adoptopenjdk-11-openj9`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/adoptopenjdk-11-openj9/Dockerfile) -- [`3.6.3-jdk-11-slim`, `3.6-jdk-11-slim`, `3-jdk-11-slim`, `3.6.3-openjdk-11-slim`, `3.6-openjdk-11-slim`, `3-openjdk-11-slim`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/openjdk-11-slim/Dockerfile) -- [`3.6.3-jdk-14`, `3.6-jdk-14`, `3-jdk-14`, `3.6.3-openjdk-14`, `3.6.3`, `3.6.3-openjdk`, `3.6-openjdk-14`, `3.6`, `3.6-openjdk`, `3-openjdk-14`, `3`, `latest`, `3-openjdk`, `openjdk`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/openjdk-14/Dockerfile) -- [`3.6.3-jdk-8`, `3.6-jdk-8`, `3-jdk-8`, `3.6.3-openjdk-8`, `3.6-openjdk-8`, `3-openjdk-8`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/openjdk-8/Dockerfile) -- [`3.6.3-jdk-8-openj9`, `3.6-jdk-8-openj9`, `3-jdk-8-openj9`, `3.6.3-adoptopenjdk-8-openj9`, `3.6-adoptopenjdk-8-openj9`, `3-adoptopenjdk-8-openj9`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/adoptopenjdk-8-openj9/Dockerfile) -- [`3.6.3-jdk-8-slim`, `3.6-jdk-8-slim`, `3-jdk-8-slim`, `3.6.3-openjdk-8-slim`, `3.6-openjdk-8-slim`, `3-openjdk-8-slim`](https://github.com/carlossg/docker-maven/blob/26ba49149787c85b9c51222b47c00879b2a0afde/openjdk-8-slim/Dockerfile) -- [`3.6.3-openjdk-14-slim`, `3.6.3-slim`, `3.6-openjdk-14-slim`, `3.6-slim`, `3-openjdk-14-slim`, `slim`](https://github.com/carlossg/docker-maven/blob/440e1f708e8fa5ea4d6ef509d22aee6d8265b209/openjdk-14-slim/Dockerfile) -- [`3.6.3-openjdk-15`, `3.6-openjdk-15`, `3-openjdk-15`](https://github.com/carlossg/docker-maven/blob/4ba4f1c3b6600e64c8c430dfea2ef65ff18608ff/openjdk-15/Dockerfile) -- [`3.6.3-adoptopenjdk-11`, `3.6-adoptopenjdk-11`, `3-adoptopenjdk-11`](https://github.com/carlossg/docker-maven/blob/d98fc55d68cbd5fa8df9e59c95678e1d702b0925/adoptopenjdk-11/Dockerfile) -- [`3.6.3-adoptopenjdk-14`, `3.6.3-adoptopenjdk`, `3.6-adoptopenjdk-14`, `3.6-adoptopenjdk`, `3-adoptopenjdk-14`, `3-adoptopenjdk`, `adoptopenjdk`](https://github.com/carlossg/docker-maven/blob/5768b638a84739d0ad85dbcbe42018075550b109/adoptopenjdk-14/Dockerfile) -- [`3.6.3-adoptopenjdk-14-openj9`, `3.6-adoptopenjdk-14-openj9`, `3-adoptopenjdk-14-openj9`](https://github.com/carlossg/docker-maven/blob/5768b638a84739d0ad85dbcbe42018075550b109/adoptopenjdk-14-openj9/Dockerfile) -- [`3.6.3-adoptopenjdk-8`, `3.6-adoptopenjdk-8`, `3-adoptopenjdk-8`](https://github.com/carlossg/docker-maven/blob/d98fc55d68cbd5fa8df9e59c95678e1d702b0925/adoptopenjdk-8/Dockerfile) -- [`3.6.3-ibmjava-8`, `3.6.3-ibmjava`, `3.6-ibmjava-8`, `3.6-ibmjava`, `3-ibmjava-8`, `3-ibmjava`, `ibmjava`](https://github.com/carlossg/docker-maven/blob/d3dd6bc261c6173c5e52e3a7a36b6a3d8d2800b4/ibmjava-8/Dockerfile) -- [`3.6.3-ibmjava-8-alpine`, `3.6.3-ibmjava-alpine`, `3.6-ibmjava-8-alpine`, `3.6-ibmjava-alpine`, `3-ibmjava-8-alpine`, `ibmjava-alpine`](https://github.com/carlossg/docker-maven/blob/d3dd6bc261c6173c5e52e3a7a36b6a3d8d2800b4/ibmjava-8-alpine/Dockerfile) -- [`3.6.3-amazoncorretto-11`, `3.6.3-amazoncorretto`, `3.6-amazoncorretto-11`, `3.6-amazoncorretto`, `3-amazoncorretto-11`, `3-amazoncorretto`, `amazoncorretto`](https://github.com/carlossg/docker-maven/blob/d3dd6bc261c6173c5e52e3a7a36b6a3d8d2800b4/amazoncorretto-11/Dockerfile) -- [`3.6.3-amazoncorretto-8`, `3.6-amazoncorretto-8`, `3-amazoncorretto-8`](https://github.com/carlossg/docker-maven/blob/d3dd6bc261c6173c5e52e3a7a36b6a3d8d2800b4/amazoncorretto-8/Dockerfile) +- [`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) # Quick reference (cont.) @@ -55,7 +61,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/maven`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmaven) + [official-images repo's `library/maven` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmaven) [official-images repo's `library/maven` file](https://github.com/docker-library/official-images/blob/master/library/maven) ([history](https://github.com/docker-library/official-images/commits/master/library/maven)) - **Source of this description**: @@ -136,15 +142,17 @@ 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` 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. ## `maven:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/maven/maintainer.md b/maven/maintainer.md index ab3ef11baa7b..a0cfecfa4385 100644 --- a/maven/maintainer.md +++ b/maven/maintainer.md @@ -1 +1 @@ -[the Maven Project](%%GITHUB-REPO%%) +[Carlos Sanchez](%%GITHUB-REPO%%) diff --git a/mediawiki/README.md b/mediawiki/README.md index fccc15e42286..01e6c704823a 100644 --- a/mediawiki/README.md +++ b/mediawiki/README.md @@ -17,16 +17,22 @@ WARNING: # Quick reference - **Maintained by**: - [Wikimedia Foundation & Docker Community](https://github.com/wikimedia/mediawiki-docker) + [MediaWiki community & Docker Community](https://github.com/wikimedia/mediawiki-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.34.1`, `1.34`, `stable`, `latest`](https://github.com/wikimedia/mediawiki-docker/blob/672a803dfb39e86b8dc1f4b57fde4c6df6304050/1.34/Dockerfile) -- [`1.33.3`, `1.33`, `legacy`](https://github.com/wikimedia/mediawiki-docker/blob/672a803dfb39e86b8dc1f4b57fde4c6df6304050/1.33/Dockerfile) -- [`1.31.7`, `1.31`, `lts`, `legacylts`](https://github.com/wikimedia/mediawiki-docker/blob/672a803dfb39e86b8dc1f4b57fde4c6df6304050/1.31/Dockerfile) +- [`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) # Quick reference (cont.) @@ -34,14 +40,14 @@ WARNING: [https://phabricator.wikimedia.org/project/view/3094/](https://phabricator.wikimedia.org/project/view/3094/) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/mediawiki/), [`arm32v5`](https://hub.docker.com/r/arm32v5/mediawiki/), [`arm32v7`](https://hub.docker.com/r/arm32v7/mediawiki/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mediawiki/), [`i386`](https://hub.docker.com/r/i386/mediawiki/), [`ppc64le`](https://hub.docker.com/r/ppc64le/mediawiki/) + [`amd64`](https://hub.docker.com/r/amd64/mediawiki/), [`arm32v5`](https://hub.docker.com/r/arm32v5/mediawiki/), [`arm32v6`](https://hub.docker.com/r/arm32v6/mediawiki/), [`arm32v7`](https://hub.docker.com/r/arm32v7/mediawiki/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mediawiki/), [`i386`](https://hub.docker.com/r/i386/mediawiki/), [`ppc64le`](https://hub.docker.com/r/ppc64le/mediawiki/) - **Published image artifact details**: [repo-info repo's `repos/mediawiki/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mediawiki) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mediawiki)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mediawiki`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmediawiki) + [official-images repo's `library/mediawiki` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmediawiki) [official-images repo's `library/mediawiki` file](https://github.com/docker-library/official-images/blob/master/library/mediawiki) ([history](https://github.com/docker-library/official-images/commits/master/library/mediawiki)) - **Source of this description**: @@ -53,7 +59,7 @@ MediaWiki is free and open-source wiki software. Originally developed by Magnus > [wikipedia.org/wiki/MediaWiki](https://en.wikipedia.org/wiki/MediaWiki) -![logo](https://raw.githubusercontent.com/docker-library/docs/0e325698c0f701882e333c6cb112a0f1fa98a003/mediawiki/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/27b797857efd9253c0981c09696f579a167062d4/mediawiki/logo.svg?sanitize=true) # How to use this image @@ -114,11 +120,12 @@ services: links: - database volumes: - - /var/www/html/images + - images:/var/www/html/images # After initial setup, download LocalSettings.php to the same directory as # 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: image: mariadb restart: always @@ -128,9 +135,15 @@ services: MYSQL_USER: wikiuser MYSQL_PASSWORD: example MYSQL_RANDOM_ROOT_PASSWORD: 'yes' + volumes: + - db:/var/lib/mysql + +volumes: + images: + 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/7b72bad5e2c684fa5829aecd3bf5b17a6e685963/mediawiki/stack.yml) +[![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). @@ -144,6 +157,22 @@ The following Docker Hub features can help with the task of keeping your depende - [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it. +# Image Variants + +The `mediawiki` images come in many flavors, each designed for a specific use case. + +## `mediawiki:` + +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. + +## `mediawiki:-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://phabricator.wikimedia.org/source/mediawiki/browse/master/COPYING) for the software contained in this image. diff --git a/mediawiki/logo.png b/mediawiki/logo.png deleted file mode 100644 index f5c10179aee1..000000000000 Binary files a/mediawiki/logo.png and /dev/null differ diff --git a/mediawiki/logo.svg b/mediawiki/logo.svg new file mode 100644 index 000000000000..ccd325241cf8 --- /dev/null +++ b/mediawiki/logo.svg @@ -0,0 +1,49 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/mediawiki/maintainer.md b/mediawiki/maintainer.md index 63f4f82a8975..5712c56de031 100644 --- a/mediawiki/maintainer.md +++ b/mediawiki/maintainer.md @@ -1 +1 @@ -[Wikimedia Foundation & Docker Community](%%GITHUB-REPO%%) +[MediaWiki community & Docker Community](%%GITHUB-REPO%%) diff --git a/mediawiki/stack.yml b/mediawiki/stack.yml index 04e637fb45ad..3406c3b857d3 100644 --- a/mediawiki/stack.yml +++ b/mediawiki/stack.yml @@ -12,11 +12,12 @@ services: links: - database volumes: - - /var/www/html/images + - images:/var/www/html/images # After initial setup, download LocalSettings.php to the same directory as # 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: image: mariadb restart: always @@ -26,3 +27,9 @@ services: MYSQL_USER: wikiuser MYSQL_PASSWORD: example MYSQL_RANDOM_ROOT_PASSWORD: 'yes' + volumes: + - db:/var/lib/mysql + +volumes: + images: + db: diff --git a/memcached/README.md b/memcached/README.md index a19da0f8dd02..ed6c110e4979 100644 --- a/memcached/README.md +++ b/memcached/README.md @@ -20,12 +20,12 @@ WARNING: [the Docker Community](https://github.com/docker-library/memcached) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.6.6`, `1.6`, `1`, `latest`](https://github.com/docker-library/memcached/blob/4538128227a0e422e59df735d67b03ee23d39637/debian/Dockerfile) -- [`1.6.6-alpine`, `1.6-alpine`, `1-alpine`, `alpine`](https://github.com/docker-library/memcached/blob/4538128227a0e422e59df735d67b03ee23d39637/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +33,14 @@ WARNING: [https://github.com/docker-library/memcached/issues](https://github.com/docker-library/memcached/issues) - **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/), [`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/), [`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/), [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/memcached`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmemcached) + [official-images repo's `library/memcached` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmemcached) [official-images repo's `library/memcached` file](https://github.com/docker-library/official-images/blob/master/library/memcached) ([history](https://github.com/docker-library/official-images/commits/master/library/memcached)) - **Source of this description**: @@ -78,11 +78,13 @@ 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. + ## `memcached:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/mongo-express/README.md b/mongo-express/README.md index 0bc0c1e78e90..ae5c05387ea8 100644 --- a/mongo-express/README.md +++ b/mongo-express/README.md @@ -20,11 +20,12 @@ WARNING: [mongo-express](https://github.com/mongo-express/mongo-express-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`0.54.0`, `0.54`, `latest`](https://github.com/mongo-express/mongo-express-docker/blob/4b43fe8a1206434cb32a006cd155dd71462f092f/Dockerfile) +- [`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) # Quick reference (cont.) @@ -39,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mongo-express`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmongo-express) + [official-images repo's `library/mongo-express` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmongo-express) [official-images repo's `library/mongo-express` file](https://github.com/docker-library/official-images/blob/master/library/mongo-express) ([history](https://github.com/docker-library/official-images/commits/master/library/mongo-express)) - **Source of this description**: diff --git a/mongo/README.md b/mongo/README.md index 6cd6b6f5a46a..8d3541d21b09 100644 --- a/mongo/README.md +++ b/mongo/README.md @@ -20,7 +20,7 @@ WARNING: [the Docker Community](https://github.com/docker-library/mongo) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,39 +28,69 @@ WARNING: ## Simple Tags -- [`3.6.18-xenial`, `3.6-xenial`, `3-xenial`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/Dockerfile) -- [`3.6.18-windowsservercore-ltsc2016`, `3.6-windowsservercore-ltsc2016`, `3-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/windows/windowsservercore-ltsc2016/Dockerfile) -- [`3.6.18-windowsservercore-1809`, `3.6-windowsservercore-1809`, `3-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/windows/windowsservercore-1809/Dockerfile) -- [`4.0.18-xenial`, `4.0-xenial`](https://github.com/docker-library/mongo/blob/3a626c5e0de4943f0b7d0aeaf9511526d13bfb60/4.0/Dockerfile) -- [`4.0.18-windowsservercore-ltsc2016`, `4.0-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/0e738a2b4ce1968d09d2a9acf84585f3cb0ba467/4.0/windows/windowsservercore-ltsc2016/Dockerfile) -- [`4.0.18-windowsservercore-1809`, `4.0-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/0e738a2b4ce1968d09d2a9acf84585f3cb0ba467/4.0/windows/windowsservercore-1809/Dockerfile) -- [`4.2.6-bionic`, `4.2-bionic`, `4-bionic`, `bionic`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/Dockerfile) -- [`4.2.6-windowsservercore-ltsc2016`, `4.2-windowsservercore-ltsc2016`, `4-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/windows/windowsservercore-ltsc2016/Dockerfile) -- [`4.2.6-windowsservercore-1809`, `4.2-windowsservercore-1809`, `4-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/windows/windowsservercore-1809/Dockerfile) +- [`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) ## Shared Tags -- `3.6.18`, `3.6`, `3`: - - [`3.6.18-xenial`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/Dockerfile) - - [`3.6.18-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.6.18-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/windows/windowsservercore-1809/Dockerfile) -- `3.6.18-windowsservercore`, `3.6-windowsservercore`, `3-windowsservercore`: - - [`3.6.18-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.6.18-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/be3c690cae52447831b977dab9c6a66dc993df65/3.6/windows/windowsservercore-1809/Dockerfile) -- `4.0.18`, `4.0`: - - [`4.0.18-xenial`](https://github.com/docker-library/mongo/blob/3a626c5e0de4943f0b7d0aeaf9511526d13bfb60/4.0/Dockerfile) - - [`4.0.18-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/0e738a2b4ce1968d09d2a9acf84585f3cb0ba467/4.0/windows/windowsservercore-ltsc2016/Dockerfile) - - [`4.0.18-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/0e738a2b4ce1968d09d2a9acf84585f3cb0ba467/4.0/windows/windowsservercore-1809/Dockerfile) -- `4.0.18-windowsservercore`, `4.0-windowsservercore`: - - [`4.0.18-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/0e738a2b4ce1968d09d2a9acf84585f3cb0ba467/4.0/windows/windowsservercore-ltsc2016/Dockerfile) - - [`4.0.18-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/0e738a2b4ce1968d09d2a9acf84585f3cb0ba467/4.0/windows/windowsservercore-1809/Dockerfile) -- `4.2.6`, `4.2`, `4`, `latest`: - - [`4.2.6-bionic`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/Dockerfile) - - [`4.2.6-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/windows/windowsservercore-ltsc2016/Dockerfile) - - [`4.2.6-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/windows/windowsservercore-1809/Dockerfile) -- `4.2.6-windowsservercore`, `4.2-windowsservercore`, `4-windowsservercore`, `windowsservercore`: - - [`4.2.6-windowsservercore-ltsc2016`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/windows/windowsservercore-ltsc2016/Dockerfile) - - [`4.2.6-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/336871eaeddbf2e61ba3ca61cad33221f83cc710/4.2/windows/windowsservercore-1809/Dockerfile) +- `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) # Quick reference (cont.) @@ -68,14 +98,14 @@ WARNING: [https://github.com/docker-library/mongo/issues](https://github.com/docker-library/mongo/issues) - **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/), [`s390x`](https://hub.docker.com/r/s390x/mongo/), [`windows-amd64`](https://hub.docker.com/r/winamd64/mongo/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/mongo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mongo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mongo)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mongo`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmongo) + [official-images repo's `library/mongo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmongo) [official-images repo's `library/mongo` file](https://github.com/docker-library/official-images/blob/master/library/mongo) ([history](https://github.com/docker-library/official-images/commits/master/library/mongo)) - **Source of this description**: @@ -103,10 +133,10 @@ $ docker run --name some-mongo -d mongo:tag ## Connect to MongoDB from another Docker container -The MongoDB server in the image listens on the standard MongoDB port, `27017`, so connecting via Docker networks will be the same as connecting to a remote `mongod`. The following example starts another MongoDB container instance and runs the `mongo` command line client against the original MongoDB container from the example above, allowing you to execute MongoDB statements against your database instance: +The MongoDB server in the image listens on the standard MongoDB port, `27017`, so connecting via Docker networks will be the same as connecting to a remote `mongod`. The following example starts another MongoDB container instance and runs the `mongosh` (use `mongo` with `4.x` versions) command line client against the original MongoDB container from the example above, allowing you to execute MongoDB statements against your database instance: ```console -$ docker run -it --network some-network --rm mongo mongo --host some-mongo test +$ docker run -it --network some-network --rm mongo mongosh --host some-mongo test ``` ... where `some-mongo` is the name of your original `mongo` container. @@ -136,9 +166,10 @@ services: environment: ME_CONFIG_MONGODB_ADMINUSERNAME: root ME_CONFIG_MONGODB_ADMINPASSWORD: example + ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ ``` -[![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/3a01591e2c903a8c3224fced78f3f22b817b6272/mongo/stack.yml) +[![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). @@ -214,7 +245,7 @@ When you start the `mongo` image, you can adjust the initialization of the Mongo 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). -The following is an example of using these two variables to create a MongoDB instance and then using the `mongo` cli to connect against the `admin` authentication database. +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. ```console $ docker run -d --network some-network --name some-mongo \ @@ -223,7 +254,7 @@ $ docker run -d --network some-network --name some-mongo \ mongo $ docker run -it --rm --network some-network mongo \ - mongo --host some-mongo \ + mongosh --host some-mongo \ -u mongoadmin \ -p secret \ --authenticationDatabase admin \ @@ -252,7 +283,7 @@ Currently, this is only supported for `MONGO_INITDB_ROOT_USERNAME` and `MONGO_IN # Initializing a fresh instance -When a container is started for the first time it will execute files with extensions `.sh` and `.js` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.js` files will be executed by `mongo` using the database specified by the `MONGO_INITDB_DATABASE` variable, if it is present, or `test` otherwise. You may also switch databases within the `.js` script. +When a container is started for the first time it will execute files with extensions `.sh` and `.js` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.js` files will be executed by `mongosh` (`mongo` on versions below 6) using the database specified by the `MONGO_INITDB_DATABASE` variable, if it is present, or `test` otherwise. You may also switch databases within the `.js` script. # Authentication @@ -275,7 +306,7 @@ Important note: There are several ways to store data used by applications that r - 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. -**WARNING (Windows & OS X)**: The default Docker setup on Windows and OS X uses a VirtualBox VM to host the Docker daemon. Unfortunately, the mechanism VirtualBox uses to share folders between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB (see [vbox bug](https://www.virtualbox.org/ticket/819), [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. +**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. 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: @@ -306,7 +337,7 @@ 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 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 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. ## `mongo:-windowsservercore` diff --git a/mongo/content.md b/mongo/content.md index bf8fdc4aca40..c586238bd8ee 100644 --- a/mongo/content.md +++ b/mongo/content.md @@ -20,10 +20,10 @@ $ docker run --name some-%%REPO%% -d %%IMAGE%%:tag ## Connect to MongoDB from another Docker container -The MongoDB server in the image listens on the standard MongoDB port, `27017`, so connecting via Docker networks will be the same as connecting to a remote `mongod`. The following example starts another MongoDB container instance and runs the `mongo` command line client against the original MongoDB container from the example above, allowing you to execute MongoDB statements against your database instance: +The MongoDB server in the image listens on the standard MongoDB port, `27017`, so connecting via Docker networks will be the same as connecting to a remote `mongod`. The following example starts another MongoDB container instance and runs the `mongosh` (use `mongo` with `4.x` versions) command line client against the original MongoDB container from the example above, allowing you to execute MongoDB statements against your database instance: ```console -$ docker run -it --network some-network --rm %%IMAGE%% mongo --host some-%%REPO%% test +$ docker run -it --network some-network --rm %%IMAGE%% mongosh --host some-%%REPO%% test ``` ... where `some-%%REPO%%` is the name of your original `mongo` container. @@ -104,7 +104,7 @@ When you start the `%%REPO%%` image, you can adjust the initialization of the Mo 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). -The following is an example of using these two variables to create a MongoDB instance and then using the `mongo` cli to connect against the `admin` authentication database. +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. ```console $ docker run -d --network some-network --name some-%%REPO%% \ @@ -113,7 +113,7 @@ $ docker run -d --network some-network --name some-%%REPO%% \ %%IMAGE%% $ docker run -it --rm --network some-network %%IMAGE%% \ - mongo --host some-mongo \ + mongosh --host some-mongo \ -u mongoadmin \ -p secret \ --authenticationDatabase admin \ @@ -142,7 +142,7 @@ Currently, this is only supported for `MONGO_INITDB_ROOT_USERNAME` and `MONGO_IN # Initializing a fresh instance -When a container is started for the first time it will execute files with extensions `.sh` and `.js` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.js` files will be executed by `mongo` using the database specified by the `MONGO_INITDB_DATABASE` variable, if it is present, or `test` otherwise. You may also switch databases within the `.js` script. +When a container is started for the first time it will execute files with extensions `.sh` and `.js` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.js` files will be executed by `mongosh` (`mongo` on versions below 6) using the database specified by the `MONGO_INITDB_DATABASE` variable, if it is present, or `test` otherwise. You may also switch databases within the `.js` script. # Authentication @@ -165,7 +165,7 @@ Important note: There are several ways to store data used by applications that r - 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. -**WARNING (Windows & OS X)**: The default Docker setup on Windows and OS X uses a VirtualBox VM to host the Docker daemon. Unfortunately, the mechanism VirtualBox uses to share folders between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB (see [vbox bug](https://www.virtualbox.org/ticket/819), [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. +**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. 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/mongo/stack.yml b/mongo/stack.yml index cf63b58af655..7a287967fc60 100644 --- a/mongo/stack.yml +++ b/mongo/stack.yml @@ -18,3 +18,4 @@ services: environment: ME_CONFIG_MONGODB_ADMINUSERNAME: root ME_CONFIG_MONGODB_ADMINPASSWORD: example + ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/ diff --git a/monica/README-short.txt b/monica/README-short.txt new file mode 100644 index 000000000000..34f1e72d1d7f --- /dev/null +++ b/monica/README-short.txt @@ -0,0 +1 @@ +Monica – the Personal Relationship Manager. diff --git a/monica/README.md b/monica/README.md new file mode 100644 index 000000000000..d84fefda154c --- /dev/null +++ b/monica/README.md @@ -0,0 +1,296 @@ + + +# Quick reference + +- **Maintained by**: + [Monica Team](https://github.com/monicahq/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 + +- [`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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/monicahq/docker/issues](https://github.com/monicahq/docker/issues) + +- **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/) + +- **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)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/monica` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmonica) + [official-images repo's `library/monica` file](https://github.com/docker-library/official-images/blob/master/library/monica) ([history](https://github.com/docker-library/official-images/commits/master/library/monica)) + +- **Source of this description**: + [docs repo's `monica/` directory](https://github.com/docker-library/docs/tree/master/monica) ([history](https://github.com/docker-library/docs/commits/master/monica)) + +# What is Monica? + +Monica is a great open source personal relationship management system to organize the interactions with your loved ones. + +![logo](https://raw.githubusercontent.com/docker-library/docs/b962028212dbd77c9531dbcf8d5a81db79d4a735/monica/logo.svg?sanitize=true) + +## How to use this image + +There are two versions of the image you may choose from. + +The `apache` tag contains a full Monica installation with an apache webserver. This points to the default `latest` tag too. + +The `fpm` tag contains a fastCGI-Process that serves the web pages. This image should be combined with a webserver used as a proxy, like apache or nginx. + +### Using the apache image + +This image contains a webserver that exposes port 80. Run the container with: + +```console +docker run --name some-monica -d -p 8080:80 monica +``` + +### Using the fpm image + +This image serves a fastCGI server that exposes port 9000. You may need an additional web server that can proxy requests to the fpm port 9000 of the container. Run this container with: + +```console +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. + +### Persistent data storage + +To have a persistent storage for your datas, you may want to create volumes for your db, and for monica you will have to save the `/var/www/html/storage` directory. + +Run a container with this named volume: + +```console +docker run -d \ + -v monica_data:/var/www/html/storage \ + monica +``` + +### Run commands inside the container + +Like every Laravel application, the `php artisan` command is very usefull for Monica. To run a command inside the container, run + +```console +docker exec CONTAINER_ID php artisan COMMAND +``` + +or for docker-compose + +```console +docker-compose exec monica php artisan COMMAND +``` + +where `monica` is the name of the service in your `docker-compose.yml` 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. + +## 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). + +--- + +### Apache version + +This version will use the apache image and add a mysql container. The volumes are set to keep your data persistent. This setup provides **no ssl encryption** and is intended to run behind a proxy. + +Make sure to pass in values for `APP_KEY` variable before you run this setup. + +1. Create a `docker-compose.yml` file + + ```yaml + version: "3.4" + + services: + app: + image: monica + depends_on: + - db + ports: + - 8080:80 + environment: + - APP_KEY= + - DB_HOST=db + - DB_USERNAME=monica + - DB_PASSWORD=secret + volumes: + - data:/var/www/html/storage + restart: always + + db: + image: mysql:5.7 + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=true + - MYSQL_DATABASE=monica + - MYSQL_USER=monica + - MYSQL_PASSWORD=secret + volumes: + - mysql:/var/lib/mysql + restart: always + + volumes: + data: + name: data + mysql: + name: mysql + ``` + +2. Set a value for `APP_KEY` variable before you run this setup. It should be a random 32-character string. You can for instance copy and paste the output of `echo -n 'base64:'; openssl rand -base64 32`: + +3. Run + + ```console + 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. + +4. Run this command once: + + ```console + 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/) + + ```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 + ``` + + The `web` container image should be pre-build before each deploy with: `docker-compose build`. + +2. Create a `docker-compose.yml` file + + ```yaml + version: "3.4" + + services: + app: + image: monica:fpm + depends_on: + - db + environment: + - APP_KEY= + - DB_HOST=db + - DB_USERNAME=monica + - DB_PASSWORD=secret + volumes: + - data:/var/www/html/storage + restart: always + + web: + build: ./web + ports: + - 8080:80 + depends_on: + - app + volumes: + - data:/var/www/html/storage:ro + restart: always + + db: + image: mysql:5.7 + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=true + - MYSQL_DATABASE=monica + - MYSQL_USER=monica + - MYSQL_PASSWORD=secret + volumes: + - mysql:/var/lib/mysql + restart: always + + volumes: + data: + name: data + mysql: + name: mysql + ``` + +3. Set a value for `APP_KEY` variable before you run this setup. It should be a random 32-character string. You can for instance copy and paste the output of `echo -n 'base64:'; openssl rand -base64 32`: + +4. Run + + ```console + 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. + +5. Run this command once: + + ```console + docker-compose exec app php artisan setup:production + ``` + +## Make Monica available from the internet + +To expose your Monica instance for the internet, it's important to set environment variable `APP_ENV=production`. In this case `https` mode will be mandatory. + +### Using a proxy webserver on the host + +One way to expose your Monica instance is to use a proxy webserver from your host with SSL capabilities. This is possible with a reverse proxy. + +### 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. + +# Image Variants + +The `monica` images come in many flavors, each designed for a specific use case. + +## `monica:` + +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. + +## `monica:-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/monicahq/monica/blob/main/LICENSE.md) 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 `monica/` directory](https://github.com/docker-library/repo-info/tree/master/repos/monica). + +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/monica/content.md b/monica/content.md new file mode 100644 index 000000000000..5c5d7adb5708 --- /dev/null +++ b/monica/content.md @@ -0,0 +1,221 @@ +# What is Monica? + +Monica is a great open source personal relationship management system to organize the interactions with your loved ones. + +%%LOGO%% + +## How to use this image + +There are two versions of the image you may choose from. + +The `apache` tag contains a full Monica installation with an apache webserver. This points to the default `latest` tag too. + +The `fpm` tag contains a fastCGI-Process that serves the web pages. This image should be combined with a webserver used as a proxy, like apache or nginx. + +### Using the apache image + +This image contains a webserver that exposes port 80. Run the container with: + +```console +docker run --name some-%%REPO%% -d -p 8080:80 %%IMAGE%% +``` + +### Using the fpm image + +This image serves a fastCGI server that exposes port 9000. You may need an additional web server that can proxy requests to the fpm port 9000 of the container. Run this container with: + +```console +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. + +### Persistent data storage + +To have a persistent storage for your datas, you may want to create volumes for your db, and for monica you will have to save the `/var/www/html/storage` directory. + +Run a container with this named volume: + +```console +docker run -d \ + -v monica_data:/var/www/html/storage \ + %%IMAGE%% +``` + +### Run commands inside the container + +Like every Laravel application, the `php artisan` command is very usefull for Monica. To run a command inside the container, run + +```console +docker exec CONTAINER_ID php artisan COMMAND +``` + +or for docker-compose + +```console +docker-compose exec %%REPO%% php artisan COMMAND +``` + +where `%%REPO%%` is the name of the service in your `docker-compose.yml` 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. + +## Running the image with docker-compose + +See some examples of docker-compose possibilities in the [example section](%%GITHUB-REPO%%/blob/master/.examples). + +--- + +### Apache version + +This version will use the apache image and add a mysql container. The volumes are set to keep your data persistent. This setup provides **no ssl encryption** and is intended to run behind a proxy. + +Make sure to pass in values for `APP_KEY` variable before you run this setup. + +1. Create a `docker-compose.yml` file + + ```yaml + version: "3.4" + + services: + app: + image: monica + depends_on: + - db + ports: + - 8080:80 + environment: + - APP_KEY= + - DB_HOST=db + - DB_USERNAME=monica + - DB_PASSWORD=secret + volumes: + - data:/var/www/html/storage + restart: always + + db: + image: mysql:5.7 + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=true + - MYSQL_DATABASE=monica + - MYSQL_USER=monica + - MYSQL_PASSWORD=secret + volumes: + - mysql:/var/lib/mysql + restart: always + + volumes: + data: + name: data + mysql: + name: mysql + ``` + +2. Set a value for `APP_KEY` variable before you run this setup. It should be a random 32-character string. You can for instance copy and paste the output of `echo -n 'base64:'; openssl rand -base64 32`: + +3. Run + + ```console + 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. + +4. Run this command once: + + ```console + 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/) + + ```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 + ``` + + The `web` container image should be pre-build before each deploy with: `docker-compose build`. + +2. Create a `docker-compose.yml` file + + ```yaml + version: "3.4" + + services: + app: + image: monica:fpm + depends_on: + - db + environment: + - APP_KEY= + - DB_HOST=db + - DB_USERNAME=monica + - DB_PASSWORD=secret + volumes: + - data:/var/www/html/storage + restart: always + + web: + build: ./web + ports: + - 8080:80 + depends_on: + - app + volumes: + - data:/var/www/html/storage:ro + restart: always + + db: + image: mysql:5.7 + environment: + - MYSQL_RANDOM_ROOT_PASSWORD=true + - MYSQL_DATABASE=monica + - MYSQL_USER=monica + - MYSQL_PASSWORD=secret + volumes: + - mysql:/var/lib/mysql + restart: always + + volumes: + data: + name: data + mysql: + name: mysql + ``` + +3. Set a value for `APP_KEY` variable before you run this setup. It should be a random 32-character string. You can for instance copy and paste the output of `echo -n 'base64:'; openssl rand -base64 32`: + +4. Run + + ```console + 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. + +5. Run this command once: + + ```console + docker-compose exec app php artisan setup:production + ``` + +## Make Monica available from the internet + +To expose your Monica instance for the internet, it's important to set environment variable `APP_ENV=production`. In this case `https` mode will be mandatory. + +### Using a proxy webserver on the host + +One way to expose your Monica instance is to use a proxy webserver from your host with SSL capabilities. This is possible with a reverse proxy. + +### 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. diff --git a/monica/github-repo b/monica/github-repo new file mode 100644 index 000000000000..10cb578beb3b --- /dev/null +++ b/monica/github-repo @@ -0,0 +1 @@ +https://github.com/monicahq/docker diff --git a/monica/license.md b/monica/license.md new file mode 100644 index 000000000000..c2fc8d064cc4 --- /dev/null +++ b/monica/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/monicahq/monica/blob/main/LICENSE.md) for the software contained in this image. diff --git a/monica/logo.svg b/monica/logo.svg new file mode 100644 index 000000000000..3dd240f96db3 --- /dev/null +++ b/monica/logo.svg @@ -0,0 +1 @@ +Artboard 3.1Created using Figma \ No newline at end of file diff --git a/monica/maintainer.md b/monica/maintainer.md new file mode 100644 index 000000000000..bf1f56b278bb --- /dev/null +++ b/monica/maintainer.md @@ -0,0 +1 @@ +[Monica Team](%%GITHUB-REPO%%) diff --git a/mono/README.md b/mono/README.md index 2f36a0f2c7e5..06c903957f0a 100644 --- a/mono/README.md +++ b/mono/README.md @@ -20,16 +20,14 @@ WARNING: [the Mono Project](https://github.com/mono/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.8.0.96`, `latest`, `6.8.0`, `6.8`, `6`](https://github.com/mono/docker/blob/65ca4c1ec4349dd187997f216d1fdcbfcb46b38a/6.8.0.96/Dockerfile) -- [`6.8.0.96-slim`, `slim`, `6.8.0-slim`, `6.8-slim`, `6-slim`](https://github.com/mono/docker/blob/65ca4c1ec4349dd187997f216d1fdcbfcb46b38a/6.8.0.96/slim/Dockerfile) -- [`6.6.0.161`, `6.6.0`, `6.6`](https://github.com/mono/docker/blob/4374af564e9ffd69f526135fb78c148d0a03012a/6.6.0.161/Dockerfile) -- [`6.6.0.161-slim`, `6.6.0-slim`, `6.6-slim`](https://github.com/mono/docker/blob/4374af564e9ffd69f526135fb78c148d0a03012a/6.6.0.161/slim/Dockerfile) -- [`5.20.1.34`, `5.20.1`, `5.20`, `5`](https://github.com/mono/docker/blob/c47c852008be6934ac650f282c18c70f2cfec72f/5.20.1.34/Dockerfile) -- [`5.20.1.34-slim`, `5.20.1-slim`, `5.20-slim`, `5-slim`](https://github.com/mono/docker/blob/c47c852008be6934ac650f282c18c70f2cfec72f/5.20.1.34/slim/Dockerfile) +- [`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.) @@ -44,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mono`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmono) + [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**: @@ -61,30 +59,22 @@ Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET # How to use this image -This image will run stand-alone Mono console apps. - -## Create a `Dockerfile` in your Mono app project - -This example Dockerfile will run an executable called `TestingConsoleApp.exe`. +To run a pre-built .exe file with the Mono image, use the following commands: ```dockerfile -FROM mono:3.10-onbuild -CMD [ "mono", "./TestingConsoleApp.exe" ] +FROM mono:latest +RUN mkdir /opt/app +COPY HelloWorld.exe /opt/app +CMD ["mono", "/opt/app/HelloWorld.exe"] ``` -Place this file in the root of your app, next to the `.sln` solution file. Modify the exectuable name to match what you want to run. - -This image includes `ONBUILD` triggers that adds your app source code to `/usr/src/app/source`, restores NuGet packages and compiles the app, placing the output in `/usr/src/app/build`. - -With the Dockerfile in place, you can build and run a Docker image with your app: +You can build and run the Docker Image as shown in the following example: ```console -$ docker build -t my-app . -$ docker run my-app +docker build -t monoapp . +docker run -it --rm monoapp ``` -You should see any output from your app now. - # Credits This Docker image is provided by Xamarin, for users of the Mono Project. diff --git a/mono/content.md b/mono/content.md index 209e65b8a18f..99510debf0df 100644 --- a/mono/content.md +++ b/mono/content.md @@ -9,30 +9,22 @@ Sponsored by Xamarin, Mono is an open source implementation of Microsoft's .NET # How to use this image -This image will run stand-alone Mono console apps. - -## Create a `Dockerfile` in your Mono app project - -This example Dockerfile will run an executable called `TestingConsoleApp.exe`. +To run a pre-built .exe file with the Mono image, use the following commands: ```dockerfile -FROM %%IMAGE%%:3.10-onbuild -CMD [ "mono", "./TestingConsoleApp.exe" ] +FROM %%IMAGE%%:latest +RUN mkdir /opt/app +COPY HelloWorld.exe /opt/app +CMD ["mono", "/opt/app/HelloWorld.exe"] ``` -Place this file in the root of your app, next to the `.sln` solution file. Modify the exectuable name to match what you want to run. - -This image includes `ONBUILD` triggers that adds your app source code to `/usr/src/app/source`, restores NuGet packages and compiles the app, placing the output in `/usr/src/app/build`. - -With the Dockerfile in place, you can build and run a Docker image with your app: +You can build and run the Docker Image as shown in the following example: ```console -$ docker build -t my-app . -$ docker run my-app +docker build -t monoapp . +docker run -it --rm monoapp ``` -You should see any output from your app now. - # Credits This Docker image is provided by Xamarin, for users of the Mono Project. diff --git a/mysql/README.md b/mysql/README.md index ad22f4dacd59..e67f93378d89 100644 --- a/mysql/README.md +++ b/mysql/README.md @@ -20,13 +20,14 @@ WARNING: [the Docker Community and the MySQL Team](https://github.com/docker-library/mysql) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8.0.20`, `8.0`, `8`, `latest`](https://github.com/docker-library/mysql/blob/fef511444a9d2867c9e4e20f5b4062bc071c20a2/8.0/Dockerfile) -- [`5.7.30`, `5.7`, `5`](https://github.com/docker-library/mysql/blob/7397711170daed7ebba3bf373af143e5179906fc/5.7/Dockerfile) -- [`5.6.48`, `5.6`](https://github.com/docker-library/mysql/blob/d2ba5f1fd5c1f4002253b80575de9c759d22bb1e/5.6/Dockerfile) +- [`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) # Quick reference (cont.) @@ -34,14 +35,14 @@ WARNING: [https://github.com/docker-library/mysql/issues](https://github.com/docker-library/mysql/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/mysql/) + [`amd64`](https://hub.docker.com/r/amd64/mysql/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mysql/) - **Published image artifact details**: [repo-info repo's `repos/mysql/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mysql) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mysql)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/mysql`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fmysql) + [official-images repo's `library/mysql` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmysql) [official-images repo's `library/mysql` file](https://github.com/docker-library/official-images/blob/master/library/mysql) ([history](https://github.com/docker-library/official-images/commits/master/library/mysql)) - **Source of this description**: @@ -97,6 +98,8 @@ 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: @@ -109,7 +112,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/b664a62bb7be3e0cbc2304e306ea42f33244fad1/mysql/stack.yml) +[![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). @@ -175,15 +178,19 @@ Do note that there is no need to use this mechanism to create the root superuser ### `MYSQL_ALLOW_EMPTY_PASSWORD` -This is an optional variable. Set to `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 MySQL instance completely unprotected, allowing anyone to gain complete superuser access. +This is an optional variable. 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 MySQL instance completely unprotected, allowing anyone to gain complete superuser access. ### `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 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: .....`). ### `MYSQL_ONETIME_PASSWORD` -Sets root (*not* the user specified in `MYSQL_USER`!) user as expired once init is complete, forcing a password change on first login. *NOTE*: This feature is supported on MySQL 5.6+ only. Using this option on MySQL 5.5 will throw an appropriate error during initialization. +Sets root (*not* the user specified in `MYSQL_USER`!) user as expired once init is complete, forcing a password change on first login. Any non-empty value will activate this setting. *NOTE*: This feature is supported on MySQL 5.6+ only. Using this option on MySQL 5.5 will throw an appropriate error during initialization. + +### `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. ## Docker Secrets diff --git a/mysql/content.md b/mysql/content.md index 59a45a07c7e9..1e05ae1a8a18 100644 --- a/mysql/content.md +++ b/mysql/content.md @@ -102,15 +102,19 @@ Do note that there is no need to use this mechanism to create the root superuser ### `MYSQL_ALLOW_EMPTY_PASSWORD` -This is an optional variable. Set to `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 MySQL instance completely unprotected, allowing anyone to gain complete superuser access. +This is an optional variable. 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 MySQL instance completely unprotected, allowing anyone to gain complete superuser access. ### `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 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: .....`). ### `MYSQL_ONETIME_PASSWORD` -Sets root (*not* the user specified in `MYSQL_USER`!) user as expired once init is complete, forcing a password change on first login. *NOTE*: This feature is supported on MySQL 5.6+ only. Using this option on MySQL 5.5 will throw an appropriate error during initialization. +Sets root (*not* the user specified in `MYSQL_USER`!) user as expired once init is complete, forcing a password change on first login. Any non-empty value will activate this setting. *NOTE*: This feature is supported on MySQL 5.6+ only. Using this option on MySQL 5.5 will throw an appropriate error during initialization. + +### `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. ## Docker Secrets diff --git a/mysql/stack.yml b/mysql/stack.yml index ae410add45f6..ed16565b6311 100644 --- a/mysql/stack.yml +++ b/mysql/stack.yml @@ -5,6 +5,8 @@ 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: diff --git a/nats-streaming/README-short.txt b/nats-streaming/README-short.txt index 3568f89f2c81..caea83c13a35 100644 --- a/nats-streaming/README-short.txt +++ b/nats-streaming/README-short.txt @@ -1 +1 @@ -NATS Streaming is an open-source, high-performance, cloud native messaging streaming system. +DEPRECATED; An open-source, high-performance, cloud native messaging streaming system. diff --git a/nats-streaming/README.md b/nats-streaming/README.md index b4399f92ae45..bd372cbc7730 100644 --- a/nats-streaming/README.md +++ b/nats-streaming/README.md @@ -14,13 +14,17 @@ WARNING: --> +# **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 Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,15 +32,20 @@ WARNING: ## Simple Tags -- [`0.17.0-linux`, `linux`](https://github.com/nats-io/nats-streaming-docker/blob/9716618a61deba8a7e28b69d53d95d698bde5117/amd64/Dockerfile) -- [`0.17.0-nanoserver-1809`, `nanoserver-1809`](https://github.com/nats-io/nats-streaming-docker/blob/9716618a61deba8a7e28b69d53d95d698bde5117/windows/nanoserver-1809/Dockerfile) -- [`0.17.0-windowsservercore`, `windowsservercore`](https://github.com/nats-io/nats-streaming-docker/blob/9716618a61deba8a7e28b69d53d95d698bde5117/windows/windowsservercore/Dockerfile) +- [`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.17.0`, `latest`: - - [`0.17.0-linux`](https://github.com/nats-io/nats-streaming-docker/blob/9716618a61deba8a7e28b69d53d95d698bde5117/amd64/Dockerfile) - - [`0.17.0-nanoserver-1809`](https://github.com/nats-io/nats-streaming-docker/blob/9716618a61deba8a7e28b69d53d95d698bde5117/windows/nanoserver-1809/Dockerfile) +- `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.) @@ -51,7 +60,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/nats-streaming`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnats-streaming) + [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**: @@ -125,29 +134,30 @@ $ 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] 2020/02/11 19:45:55.379789 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.17.0 -[1] 2020/02/11 19:45:55.379864 [INF] STREAM: ServerID: oe3fSgSCIfkPnbGvQch6k9 -[1] 2020/02/11 19:45:55.379867 [INF] STREAM: Go version: go1.13.7 -[1] 2020/02/11 19:45:55.379869 [INF] STREAM: Git commit: [f4b7190] -[1] 2020/02/11 19:45:55.380454 [INF] Starting nats-server version 2.1.4 -[1] 2020/02/11 19:45:55.380461 [INF] Git commit [fb009af] -[1] 2020/02/11 19:45:55.380619 [INF] Starting http monitor on 0.0.0.0:8222 -[1] 2020/02/11 19:45:55.380659 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2020/02/11 19:45:55.380662 [INF] Server id is NCIJ5WZMDXD3SRQFXAZNMO4C4BMEKVTZA33WLG4VPP7LRE37KIB5D4FX -[1] 2020/02/11 19:45:55.380664 [INF] Server is ready -[1] 2020/02/11 19:45:55.407105 [INF] STREAM: Recovering the state... -[1] 2020/02/11 19:45:55.407113 [INF] STREAM: No recovered state -[1] 2020/02/11 19:45:55.662310 [INF] STREAM: Message store is MEMORY -[1] 2020/02/11 19:45:55.662347 [INF] STREAM: ---------- Store Limits ---------- -[1] 2020/02/11 19:45:55.662351 [INF] STREAM: Channels: 100 * -[1] 2020/02/11 19:45:55.662355 [INF] STREAM: --------- Channels Limits -------- -[1] 2020/02/11 19:45:55.662358 [INF] STREAM: Subscriptions: 1000 * -[1] 2020/02/11 19:45:55.662361 [INF] STREAM: Messages : 1000000 * -[1] 2020/02/11 19:45:55.662364 [INF] STREAM: Bytes : 976.56 MB * -[1] 2020/02/11 19:45:55.662367 [INF] STREAM: Age : unlimited * -[1] 2020/02/11 19:45:55.662370 [INF] STREAM: Inactivity : unlimited * -[1] 2020/02/11 19:45:55.662374 [INF] STREAM: ---------------------------------- -[1] 2020/02/11 19:45:55.662377 [INF] STREAM: Streaming Server is ready +[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: @@ -155,29 +165,31 @@ 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] 2020/02/11 19:46:24.891825 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.17.0 -[1] 2020/02/11 19:46:24.891863 [INF] STREAM: ServerID: y2zpmpnNLbnnLX4RGpW4HT -[1] 2020/02/11 19:46:24.891866 [INF] STREAM: Go version: go1.13.7 -[1] 2020/02/11 19:46:24.891868 [INF] STREAM: Git commit: [f4b7190] -[1] 2020/02/11 19:46:24.892633 [INF] Starting nats-server version 2.1.4 -[1] 2020/02/11 19:46:24.892653 [INF] Git commit [fb009af] -[1] 2020/02/11 19:46:24.892837 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2020/02/11 19:46:24.892857 [INF] Server id is NAB5BC4I4DY7UQ3NJVRYVSZ66SWMWQYCHMMMVO4KZDZU3WUDOBQZYH52 -[1] 2020/02/11 19:46:24.892860 [INF] Server is ready -[1] 2020/02/11 19:46:24.919546 [INF] STREAM: Recovering the state... -[1] 2020/02/11 19:46:24.919685 [INF] STREAM: No recovered state -[1] 2020/02/11 19:46:25.170492 [INF] STREAM: Message store is FILE -[1] 2020/02/11 19:46:25.170536 [INF] STREAM: Store location: datastore -[1] 2020/02/11 19:46:25.170563 [INF] STREAM: ---------- Store Limits ---------- -[1] 2020/02/11 19:46:25.170602 [INF] STREAM: Channels: 100 * -[1] 2020/02/11 19:46:25.170608 [INF] STREAM: --------- Channels Limits -------- -[1] 2020/02/11 19:46:25.170611 [INF] STREAM: Subscriptions: 1000 * -[1] 2020/02/11 19:46:25.170614 [INF] STREAM: Messages : 1000000 * -[1] 2020/02/11 19:46:25.170618 [INF] STREAM: Bytes : 976.56 MB * -[1] 2020/02/11 19:46:25.170621 [INF] STREAM: Age : unlimited * -[1] 2020/02/11 19:46:25.170624 [INF] STREAM: Inactivity : unlimited * -[1] 2020/02/11 19:46:25.170627 [INF] STREAM: ---------------------------------- -[1] 2020/02/11 19:46:25.170630 [INF] STREAM: Streaming Server is ready +[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: @@ -191,24 +203,24 @@ 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] 2020/02/11 19:46:40.206660 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.17.0 -[1] 2020/02/11 19:46:40.206699 [INF] STREAM: ServerID: bon7pyyeNH4ClntI1fCJos -[1] 2020/02/11 19:46:40.206702 [INF] STREAM: Go version: go1.13.7 -[1] 2020/02/11 19:46:40.206704 [INF] STREAM: Git commit: [f4b7190] -[1] 2020/02/11 19:46:40.233833 [INF] STREAM: Recovering the state... -[1] 2020/02/11 19:46:40.233992 [INF] STREAM: No recovered state -[1] 2020/02/11 19:46:40.487836 [INF] STREAM: Message store is FILE -[1] 2020/02/11 19:46:40.487845 [INF] STREAM: Store location: datastore -[1] 2020/02/11 19:46:40.487884 [INF] STREAM: ---------- Store Limits ---------- -[1] 2020/02/11 19:46:40.487963 [INF] STREAM: Channels: 100 * -[1] 2020/02/11 19:46:40.487966 [INF] STREAM: --------- Channels Limits -------- -[1] 2020/02/11 19:46:40.487968 [INF] STREAM: Subscriptions: 1000 * -[1] 2020/02/11 19:46:40.487993 [INF] STREAM: Messages : 1000000 * -[1] 2020/02/11 19:46:40.487995 [INF] STREAM: Bytes : 976.56 MB * -[1] 2020/02/11 19:46:40.488023 [INF] STREAM: Age : unlimited * -[1] 2020/02/11 19:46:40.488025 [INF] STREAM: Inactivity : unlimited * -[1] 2020/02/11 19:46:40.488027 [INF] STREAM: ---------------------------------- -[1] 2020/02/11 19:46:40.488029 [INF] STREAM: Streaming Server is ready +[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. @@ -232,22 +244,24 @@ Streaming Server Options: -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) + -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) + --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 @@ -273,6 +287,7 @@ Streaming Server SQL Store Options: --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 @@ -299,7 +314,7 @@ Embedded NATS Server Options: Logging Options: -l, --log File to redirect log output -T, --logtime= Timestamp log entries (default: true) - -s, --syslog Enable syslog as log method + -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 @@ -329,7 +344,7 @@ Common Options: # Configuration -Details on how to configure further the NATS Streaming server can be found [here](https://github.com/nats-io/nats-streaming-server#configuring) +Details on how to configure further the NATS Streaming server can be found [here](https://docs.nats.io/nats-streaming-server/configuring) # Image Variants @@ -339,6 +354,14 @@ The `nats-streaming` images come in many flavors, each designed for a specific u 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. diff --git a/nats-streaming/content.md b/nats-streaming/content.md index 9e1268a65ed6..0545e41334ee 100644 --- a/nats-streaming/content.md +++ b/nats-streaming/content.md @@ -66,29 +66,30 @@ $ 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] 2020/02/11 19:45:55.379789 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.17.0 -[1] 2020/02/11 19:45:55.379864 [INF] STREAM: ServerID: oe3fSgSCIfkPnbGvQch6k9 -[1] 2020/02/11 19:45:55.379867 [INF] STREAM: Go version: go1.13.7 -[1] 2020/02/11 19:45:55.379869 [INF] STREAM: Git commit: [f4b7190] -[1] 2020/02/11 19:45:55.380454 [INF] Starting nats-server version 2.1.4 -[1] 2020/02/11 19:45:55.380461 [INF] Git commit [fb009af] -[1] 2020/02/11 19:45:55.380619 [INF] Starting http monitor on 0.0.0.0:8222 -[1] 2020/02/11 19:45:55.380659 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2020/02/11 19:45:55.380662 [INF] Server id is NCIJ5WZMDXD3SRQFXAZNMO4C4BMEKVTZA33WLG4VPP7LRE37KIB5D4FX -[1] 2020/02/11 19:45:55.380664 [INF] Server is ready -[1] 2020/02/11 19:45:55.407105 [INF] STREAM: Recovering the state... -[1] 2020/02/11 19:45:55.407113 [INF] STREAM: No recovered state -[1] 2020/02/11 19:45:55.662310 [INF] STREAM: Message store is MEMORY -[1] 2020/02/11 19:45:55.662347 [INF] STREAM: ---------- Store Limits ---------- -[1] 2020/02/11 19:45:55.662351 [INF] STREAM: Channels: 100 * -[1] 2020/02/11 19:45:55.662355 [INF] STREAM: --------- Channels Limits -------- -[1] 2020/02/11 19:45:55.662358 [INF] STREAM: Subscriptions: 1000 * -[1] 2020/02/11 19:45:55.662361 [INF] STREAM: Messages : 1000000 * -[1] 2020/02/11 19:45:55.662364 [INF] STREAM: Bytes : 976.56 MB * -[1] 2020/02/11 19:45:55.662367 [INF] STREAM: Age : unlimited * -[1] 2020/02/11 19:45:55.662370 [INF] STREAM: Inactivity : unlimited * -[1] 2020/02/11 19:45:55.662374 [INF] STREAM: ---------------------------------- -[1] 2020/02/11 19:45:55.662377 [INF] STREAM: Streaming Server is ready +[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: @@ -96,29 +97,31 @@ 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] 2020/02/11 19:46:24.891825 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.17.0 -[1] 2020/02/11 19:46:24.891863 [INF] STREAM: ServerID: y2zpmpnNLbnnLX4RGpW4HT -[1] 2020/02/11 19:46:24.891866 [INF] STREAM: Go version: go1.13.7 -[1] 2020/02/11 19:46:24.891868 [INF] STREAM: Git commit: [f4b7190] -[1] 2020/02/11 19:46:24.892633 [INF] Starting nats-server version 2.1.4 -[1] 2020/02/11 19:46:24.892653 [INF] Git commit [fb009af] -[1] 2020/02/11 19:46:24.892837 [INF] Listening for client connections on 0.0.0.0:4222 -[1] 2020/02/11 19:46:24.892857 [INF] Server id is NAB5BC4I4DY7UQ3NJVRYVSZ66SWMWQYCHMMMVO4KZDZU3WUDOBQZYH52 -[1] 2020/02/11 19:46:24.892860 [INF] Server is ready -[1] 2020/02/11 19:46:24.919546 [INF] STREAM: Recovering the state... -[1] 2020/02/11 19:46:24.919685 [INF] STREAM: No recovered state -[1] 2020/02/11 19:46:25.170492 [INF] STREAM: Message store is FILE -[1] 2020/02/11 19:46:25.170536 [INF] STREAM: Store location: datastore -[1] 2020/02/11 19:46:25.170563 [INF] STREAM: ---------- Store Limits ---------- -[1] 2020/02/11 19:46:25.170602 [INF] STREAM: Channels: 100 * -[1] 2020/02/11 19:46:25.170608 [INF] STREAM: --------- Channels Limits -------- -[1] 2020/02/11 19:46:25.170611 [INF] STREAM: Subscriptions: 1000 * -[1] 2020/02/11 19:46:25.170614 [INF] STREAM: Messages : 1000000 * -[1] 2020/02/11 19:46:25.170618 [INF] STREAM: Bytes : 976.56 MB * -[1] 2020/02/11 19:46:25.170621 [INF] STREAM: Age : unlimited * -[1] 2020/02/11 19:46:25.170624 [INF] STREAM: Inactivity : unlimited * -[1] 2020/02/11 19:46:25.170627 [INF] STREAM: ---------------------------------- -[1] 2020/02/11 19:46:25.170630 [INF] STREAM: Streaming Server is ready +[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: @@ -132,24 +135,24 @@ 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] 2020/02/11 19:46:40.206660 [INF] STREAM: Starting nats-streaming-server[test-cluster] version 0.17.0 -[1] 2020/02/11 19:46:40.206699 [INF] STREAM: ServerID: bon7pyyeNH4ClntI1fCJos -[1] 2020/02/11 19:46:40.206702 [INF] STREAM: Go version: go1.13.7 -[1] 2020/02/11 19:46:40.206704 [INF] STREAM: Git commit: [f4b7190] -[1] 2020/02/11 19:46:40.233833 [INF] STREAM: Recovering the state... -[1] 2020/02/11 19:46:40.233992 [INF] STREAM: No recovered state -[1] 2020/02/11 19:46:40.487836 [INF] STREAM: Message store is FILE -[1] 2020/02/11 19:46:40.487845 [INF] STREAM: Store location: datastore -[1] 2020/02/11 19:46:40.487884 [INF] STREAM: ---------- Store Limits ---------- -[1] 2020/02/11 19:46:40.487963 [INF] STREAM: Channels: 100 * -[1] 2020/02/11 19:46:40.487966 [INF] STREAM: --------- Channels Limits -------- -[1] 2020/02/11 19:46:40.487968 [INF] STREAM: Subscriptions: 1000 * -[1] 2020/02/11 19:46:40.487993 [INF] STREAM: Messages : 1000000 * -[1] 2020/02/11 19:46:40.487995 [INF] STREAM: Bytes : 976.56 MB * -[1] 2020/02/11 19:46:40.488023 [INF] STREAM: Age : unlimited * -[1] 2020/02/11 19:46:40.488025 [INF] STREAM: Inactivity : unlimited * -[1] 2020/02/11 19:46:40.488027 [INF] STREAM: ---------------------------------- -[1] 2020/02/11 19:46:40.488029 [INF] STREAM: Streaming Server is ready +[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. @@ -173,22 +176,24 @@ Streaming Server Options: -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) + -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) + --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 @@ -214,6 +219,7 @@ Streaming Server SQL Store Options: --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 @@ -240,7 +246,7 @@ Embedded NATS Server Options: Logging Options: -l, --log File to redirect log output -T, --logtime= Timestamp log entries (default: true) - -s, --syslog Enable syslog as log method + -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 @@ -270,4 +276,4 @@ Common Options: # Configuration -Details on how to configure further the NATS Streaming server can be found [here](https://github.com/nats-io/nats-streaming-server#configuring) +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 new file mode 100644 index 000000000000..db266bd8ecad --- /dev/null +++ b/nats-streaming/deprecated.md @@ -0,0 +1 @@ +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/README.md b/nats/README.md index 90486c4390b5..6fc68b71b404 100644 --- a/nats/README.md +++ b/nats/README.md @@ -20,7 +20,7 @@ WARNING: [the NATS Project](https://github.com/nats-io/nats-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,22 +28,20 @@ WARNING: ## Simple Tags -- [`2.1.7-alpine3.11`, `2.1-alpine3.11`, `2-alpine3.11`, `alpine3.11`, `2.1.7-alpine`, `2.1-alpine`, `2-alpine`, `alpine`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/alpine3.11/Dockerfile) -- [`2.1.7-scratch`, `2.1-scratch`, `2-scratch`, `scratch`, `2.1.7-linux`, `2.1-linux`, `2-linux`, `linux`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/scratch/Dockerfile) -- [`2.1.7-windowsservercore-1809`, `2.1-windowsservercore-1809`, `2-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/windowsservercore-1809/Dockerfile) -- [`2.1.7-nanoserver-1809`, `2.1-nanoserver-1809`, `2-nanoserver-1809`, `nanoserver-1809`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/nanoserver-1809/Dockerfile) -- [`2.1.7-windowsservercore-ltsc2016`, `2.1-windowsservercore-ltsc2016`, `2-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/windowsservercore-ltsc2016/Dockerfile) +- [`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) ## Shared Tags -- `2.1.7`, `2.1`, `2`, `latest`: - - [`2.1.7-scratch`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/scratch/Dockerfile) - - [`2.1.7-nanoserver-1809`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/nanoserver-1809/Dockerfile) -- `2.1.7-windowsservercore`, `2.1-windowsservercore`, `2-windowsservercore`, `windowsservercore`: - - [`2.1.7-windowsservercore-1809`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/windowsservercore-1809/Dockerfile) - - [`2.1.7-windowsservercore-ltsc2016`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/windowsservercore-ltsc2016/Dockerfile) -- `2.1.7-nanoserver`, `2.1-nanoserver`, `2-nanoserver`, `nanoserver`: - - [`2.1.7-nanoserver-1809`](https://github.com/nats-io/nats-docker/blob/8f8045b5c6c6f17a28b5bc12f0f18eb6380f435f/2.1.7/nanoserver-1809/Dockerfile) +- `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) # Quick reference (cont.) @@ -58,7 +56,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/nats`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnats) + [official-images repo's `library/nats` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnats) [official-images repo's `library/nats` file](https://github.com/docker-library/official-images/blob/master/library/nats) ([history](https://github.com/docker-library/official-images/commits/master/library/nats)) - **Source of this description**: @@ -70,10 +68,6 @@ WARNING: `nats` is a high performance server for the NATS Messaging System. -# Backward Compatibility - -The routing protocol has been dramatically improved and adds support for accounts and multi-tenancy. The new protocol is not backward compatible with servers pre v2.0.0. - # Example usage ```bash @@ -100,38 +94,50 @@ The routing protocol has been dramatically improved and adds support for account # Check "docker run" for more information. $ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -[INF] Starting nats-server version 2.1.7 -[INF] Git commit [bf0930e] +[INF] Starting nats-server +[INF] Version: 2.9.8 +[INF] Git: [60e335a] +[INF] Cluster: my_cluster +[INF] Name: NB3YN6SPZF6MWTLPGYLRE2AD5VVWSW443RO43YR5GC62I463QPYGOL5C +[INF] ID: NB3YN6SPZF6MWTLPGYLRE2AD5VVWSW443RO43YR5GC62I463QPYGOL5C +[INF] Using configuration file: /etc/nats/nats-server.conf +[INF] Starting http monitor on 0.0.0.0:8222 [INF] Listening for client connections on 0.0.0.0:4222 -[INF] Server id is NANEPV46X4QZ7FR5DD4U7WLWI6BWRLJXFTHO2FIJRGFSW5NLH3MOV7VZ [INF] Server is ready +[INF] Cluster name is my_cluster [INF] Listening for route connections on 0.0.0.0:6222 - ... # To run a second server and cluster them together.. # Note that since you are passing arguments, this overrides the CMD section # of the Dockerfile, so you need to pass all arguments, including the # config file. -$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -c nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 +$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -c /etc/nats/nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 # If you want to verify the routes are connected, try this instead: -$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -c nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 -DV -[INF] Starting nats-server version 2.1.7 -[DBG] Go build version go1.13.10 -[INF] Git commit [bf0930e] +$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 nats -c /etc/nats/nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 -DV +[INF] Starting nats-server +[INF] Version: 2.9.8 +[INF] Git: [60e335a] +[DBG] Go build: go1.19.3 +[INF] Cluster: my_cluster +[INF] Name: NDFNAUTD4RKS2O7CMKMDMTV3DW5NIKFCQDDMXW2A5YXLUZWWX7RYFCKB +[INF] ID: NDFNAUTD4RKS2O7CMKMDMTV3DW5NIKFCQDDMXW2A5YXLUZWWX7RYFCKB +[INF] Using configuration file: /etc/nats/nats-server.conf +[DBG] Created system account: "$SYS" [INF] Starting http monitor on 0.0.0.0:8222 [INF] Listening for client connections on 0.0.0.0:4222 -[INF] Server id is NC5WVL732YIR7N2TH3EHLLTGBNYJMZUUJMYEVWTZ3KU6DQB6ROGPAWYM -[INF] Server is ready [DBG] Get non local IPs for "0.0.0.0" -[DBG] ip=172.17.0.3 +[DBG] ip=172.17.0.2 +[INF] Server is ready +[DBG] maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined +[INF] Cluster name is my_cluster [INF] Listening for route connections on 0.0.0.0:6222 -[DBG] Trying to connect to route on nats-main:6222 -[DBG] 172.17.0.2:6222 - rid:1 - Route connect msg sent -[INF] 172.17.0.2:6222 - rid:1 - Route connection created -[DBG] 172.17.0.2:6222 - rid:1 - Registering remote route "ND2WROCKLR6NGB6E5RUV6FQNPQO475MWOR4IGM6E6AZNKVTKXDD6YCM5" -[DBG] 172.17.0.2:6222 - rid:1 - Sent local subscriptions to route +[DBG] Trying to connect to route on nats-main:6222 (172.17.0.3:6222) +[DBG] 172.17.0.3:6222 - rid:4 - Route connect msg sent +[INF] 172.17.0.3:6222 - rid:4 - Route connection created +[DBG] 172.17.0.3:6222 - rid:4 - Registering remote route "NDQAU6HVD44TI2X5R2QRYJEIQR3MMHCFTW2BTSXBILBOZHJ4Z7AR7GGR" +[DBG] 172.17.0.3:6222 - rid:4 - Sent local subscriptions to route ``` The server will load the configuration file below. Any command line flags can override these values. @@ -147,6 +153,8 @@ monitor_port: 8222 # This is for clustering multiple servers together. cluster { + # It is recommended to set a cluster name + name: "my_cluster" # Route connections to be received on any interface on port 6222 port: 6222 @@ -156,7 +164,7 @@ cluster { authorization { user: ruser password: T0pS3cr3t - timeout: 0.75 + timeout: 2 } # Routes are actively solicited and connected to from this server. @@ -170,16 +178,19 @@ cluster { ```bash Server Options: - -a, --addr Bind to host address (default: 0.0.0.0) + -a, --addr, --net Bind to host address (default: 0.0.0.0) -p, --port Use port for clients (default: 4222) + -n, --name + --server_name Server name (default: auto) -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 + -t Test configuration and exit -sl,--signal [=] Send signal to nats-server process (stop, quit, reopen, reload) - can be either a PID (e.g. 1) or the path to a PID file (e.g. /var/run/nats-server.pid) + pid> can be either a PID (e.g. 1) or the path to a PID file (e.g. /var/run/nats-server.pid) --client_advertise Client URL to advertise to other servers - -t Test configuration and exit + --ports_file_dir Creates a ports file in the specified directory (_.ports). Logging Options: -l, --log File to redirect log output @@ -191,6 +202,12 @@ Logging Options: -VV Verbose trace (traces system account as well) -DV Debug and trace -DVV Debug and verbose trace (traces system account as well) + --log_size_limit Logfile size limit (default: auto) + --max_traced_msg_len Maximum printable length for traced messages (default: unlimited) + +JetStream Options: + -js, --jetstream Enable JetStream functionality + -sd, --store_dir Set the storage directory Authorization Options: --user User required for connections @@ -207,10 +224,14 @@ TLS Options: Cluster Options: --routes Routes to solicit and connect --cluster Cluster URL for solicited routes - --no_advertise Advertise known cluster IPs to clients + --cluster_name Cluster Name, if not set one will be dynamically generated + --no_advertise Do not advertise known cluster information to clients --cluster_advertise Cluster URL to advertise to other servers --connect_retries For implicit routes, number of connect retries + --cluster_listen Cluster url from which members can solicit routes +Profiling Options: + --profile Profiling HTTP port Common Options: -h, --help Show this message @@ -228,9 +249,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `nats:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/nats/content.md b/nats/content.md index b43cd879f5d7..b67d8f074f58 100644 --- a/nats/content.md +++ b/nats/content.md @@ -4,10 +4,6 @@ `nats` is a high performance server for the NATS Messaging System. -# Backward Compatibility - -The routing protocol has been dramatically improved and adds support for accounts and multi-tenancy. The new protocol is not backward compatible with servers pre v2.0.0. - # Example usage ```bash @@ -34,38 +30,50 @@ The routing protocol has been dramatically improved and adds support for account # Check "docker run" for more information. $ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -[INF] Starting nats-server version 2.1.7 -[INF] Git commit [bf0930e] +[INF] Starting nats-server +[INF] Version: 2.9.8 +[INF] Git: [60e335a] +[INF] Cluster: my_cluster +[INF] Name: NB3YN6SPZF6MWTLPGYLRE2AD5VVWSW443RO43YR5GC62I463QPYGOL5C +[INF] ID: NB3YN6SPZF6MWTLPGYLRE2AD5VVWSW443RO43YR5GC62I463QPYGOL5C +[INF] Using configuration file: /etc/nats/nats-server.conf +[INF] Starting http monitor on 0.0.0.0:8222 [INF] Listening for client connections on 0.0.0.0:4222 -[INF] Server id is NANEPV46X4QZ7FR5DD4U7WLWI6BWRLJXFTHO2FIJRGFSW5NLH3MOV7VZ [INF] Server is ready +[INF] Cluster name is my_cluster [INF] Listening for route connections on 0.0.0.0:6222 - ... # To run a second server and cluster them together.. # Note that since you are passing arguments, this overrides the CMD section # of the Dockerfile, so you need to pass all arguments, including the # config file. -$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -c nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 +$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -c /etc/nats/nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 # If you want to verify the routes are connected, try this instead: -$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -c nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 -DV -[INF] Starting nats-server version 2.1.7 -[DBG] Go build version go1.13.10 -[INF] Git commit [bf0930e] +$ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -c /etc/nats/nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 -DV +[INF] Starting nats-server +[INF] Version: 2.9.8 +[INF] Git: [60e335a] +[DBG] Go build: go1.19.3 +[INF] Cluster: my_cluster +[INF] Name: NDFNAUTD4RKS2O7CMKMDMTV3DW5NIKFCQDDMXW2A5YXLUZWWX7RYFCKB +[INF] ID: NDFNAUTD4RKS2O7CMKMDMTV3DW5NIKFCQDDMXW2A5YXLUZWWX7RYFCKB +[INF] Using configuration file: /etc/nats/nats-server.conf +[DBG] Created system account: "$SYS" [INF] Starting http monitor on 0.0.0.0:8222 [INF] Listening for client connections on 0.0.0.0:4222 -[INF] Server id is NC5WVL732YIR7N2TH3EHLLTGBNYJMZUUJMYEVWTZ3KU6DQB6ROGPAWYM -[INF] Server is ready [DBG] Get non local IPs for "0.0.0.0" -[DBG] ip=172.17.0.3 +[DBG] ip=172.17.0.2 +[INF] Server is ready +[DBG] maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined +[INF] Cluster name is my_cluster [INF] Listening for route connections on 0.0.0.0:6222 -[DBG] Trying to connect to route on nats-main:6222 -[DBG] 172.17.0.2:6222 - rid:1 - Route connect msg sent -[INF] 172.17.0.2:6222 - rid:1 - Route connection created -[DBG] 172.17.0.2:6222 - rid:1 - Registering remote route "ND2WROCKLR6NGB6E5RUV6FQNPQO475MWOR4IGM6E6AZNKVTKXDD6YCM5" -[DBG] 172.17.0.2:6222 - rid:1 - Sent local subscriptions to route +[DBG] Trying to connect to route on nats-main:6222 (172.17.0.3:6222) +[DBG] 172.17.0.3:6222 - rid:4 - Route connect msg sent +[INF] 172.17.0.3:6222 - rid:4 - Route connection created +[DBG] 172.17.0.3:6222 - rid:4 - Registering remote route "NDQAU6HVD44TI2X5R2QRYJEIQR3MMHCFTW2BTSXBILBOZHJ4Z7AR7GGR" +[DBG] 172.17.0.3:6222 - rid:4 - Sent local subscriptions to route ``` The server will load the configuration file below. Any command line flags can override these values. @@ -81,6 +89,8 @@ monitor_port: 8222 # This is for clustering multiple servers together. cluster { + # It is recommended to set a cluster name + name: "my_cluster" # Route connections to be received on any interface on port 6222 port: 6222 @@ -90,7 +100,7 @@ cluster { authorization { user: ruser password: T0pS3cr3t - timeout: 0.75 + timeout: 2 } # Routes are actively solicited and connected to from this server. @@ -104,16 +114,19 @@ cluster { ```bash Server Options: - -a, --addr Bind to host address (default: 0.0.0.0) + -a, --addr, --net Bind to host address (default: 0.0.0.0) -p, --port Use port for clients (default: 4222) + -n, --name + --server_name Server name (default: auto) -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 + -t Test configuration and exit -sl,--signal [=] Send signal to nats-server process (stop, quit, reopen, reload) - can be either a PID (e.g. 1) or the path to a PID file (e.g. /var/run/nats-server.pid) + pid> can be either a PID (e.g. 1) or the path to a PID file (e.g. /var/run/nats-server.pid) --client_advertise Client URL to advertise to other servers - -t Test configuration and exit + --ports_file_dir Creates a ports file in the specified directory (_.ports). Logging Options: -l, --log File to redirect log output @@ -125,6 +138,12 @@ Logging Options: -VV Verbose trace (traces system account as well) -DV Debug and trace -DVV Debug and verbose trace (traces system account as well) + --log_size_limit Logfile size limit (default: auto) + --max_traced_msg_len Maximum printable length for traced messages (default: unlimited) + +JetStream Options: + -js, --jetstream Enable JetStream functionality + -sd, --store_dir Set the storage directory Authorization Options: --user User required for connections @@ -141,10 +160,14 @@ TLS Options: Cluster Options: --routes Routes to solicit and connect --cluster Cluster URL for solicited routes - --no_advertise Advertise known cluster IPs to clients + --cluster_name Cluster Name, if not set one will be dynamically generated + --no_advertise Do not advertise known cluster information to clients --cluster_advertise Cluster URL to advertise to other servers --connect_retries For implicit routes, number of connect retries + --cluster_listen Cluster url from which members can solicit routes +Profiling Options: + --profile Profiling HTTP port Common Options: -h, --help Show this message diff --git a/neo4j/README.md b/neo4j/README.md index 83f76234ea5c..192f685b504a 100644 --- a/neo4j/README.md +++ b/neo4j/README.md @@ -20,52 +20,16 @@ WARNING: [Neo4j](https://github.com/neo4j/docker-neo4j) - **Where to get help**: - [Stack Overflow](http://stackoverflow.com/questions/tagged/neo4j) + [Neo4j Community Forums](https://community.neo4j.com) # Supported tags and respective `Dockerfile` links -- [`4.0.4`, `4.0`, `latest`](https://github.com/neo4j/docker-neo4j-publish/blob/d5e5e4b1999611ecfa8ec59166acf1ddb703b21c/4.0.4/community/Dockerfile) -- [`4.0.4-enterprise`, `4.0-enterprise`, `enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/d5e5e4b1999611ecfa8ec59166acf1ddb703b21c/4.0.4/enterprise/Dockerfile) -- [`4.0.3`](https://github.com/neo4j/docker-neo4j-publish/blob/51ed84f02e569a0d86c6e634fab3ae6540806a7e/4.0.3/community/Dockerfile) -- [`4.0.3-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/51ed84f02e569a0d86c6e634fab3ae6540806a7e/4.0.3/enterprise/Dockerfile) -- [`4.0.2`](https://github.com/neo4j/docker-neo4j-publish/blob/56d28624bc264497ed7fae8253a52a92611c6fee/4.0.2/community/Dockerfile) -- [`4.0.2-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/56d28624bc264497ed7fae8253a52a92611c6fee/4.0.2/enterprise/Dockerfile) -- [`4.0.1`](https://github.com/neo4j/docker-neo4j-publish/blob/13c288e9c36ee22e682b459fb218c9239e2c1083/4.0.1/community/Dockerfile) -- [`4.0.1-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/13c288e9c36ee22e682b459fb218c9239e2c1083/4.0.1/enterprise/Dockerfile) -- [`4.0.0`](https://github.com/neo4j/docker-neo4j-publish/blob/685fb314ef8e451217b6806028b9ac4dbf44d3fc/4.0.0/community/Dockerfile) -- [`4.0.0-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/685fb314ef8e451217b6806028b9ac4dbf44d3fc/4.0.0/enterprise/Dockerfile) -- [`3.5.18`, `3.5`](https://github.com/neo4j/docker-neo4j-publish/blob/44c1a3d078dae162335e3c2c214513c1c193de2e/3.5.18/community/Dockerfile) -- [`3.5.18-enterprise`, `3.5-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/44c1a3d078dae162335e3c2c214513c1c193de2e/3.5.18/enterprise/Dockerfile) -- [`3.5.17`](https://github.com/neo4j/docker-neo4j-publish/blob/617aeb42c7af81bb6dfdd6396eca4c42d98c41ce/3.5.17/community/Dockerfile) -- [`3.5.17-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/617aeb42c7af81bb6dfdd6396eca4c42d98c41ce/3.5.17/enterprise/Dockerfile) -- [`3.5.16`](https://github.com/neo4j/docker-neo4j-publish/blob/db34a05ac7abf4b2818222294ac9dc93b13d54a2/3.5.16/community/Dockerfile) -- [`3.5.16-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/db34a05ac7abf4b2818222294ac9dc93b13d54a2/3.5.16/enterprise/Dockerfile) -- [`3.5.15`](https://github.com/neo4j/docker-neo4j-publish/blob/a2b48dfb25b76250bced5e2d0c064615e3085379/3.5.15/community/Dockerfile) -- [`3.5.15-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/a2b48dfb25b76250bced5e2d0c064615e3085379/3.5.15/enterprise/Dockerfile) -- [`3.5.14`](https://github.com/neo4j/docker-neo4j-publish/blob/574e0a1d5e5eb27a633148198c028d9a28899a9a/3.5.14/community/Dockerfile) -- [`3.5.14-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/574e0a1d5e5eb27a633148198c028d9a28899a9a/3.5.14/enterprise/Dockerfile) -- [`3.5.13`](https://github.com/neo4j/docker-neo4j-publish/blob/846ee1e9ad2744182a52bc21eb6204858c1a8a48/3.5.13/community/Dockerfile) -- [`3.5.13-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/846ee1e9ad2744182a52bc21eb6204858c1a8a48/3.5.13/enterprise/Dockerfile) -- [`3.5.12`](https://github.com/neo4j/docker-neo4j-publish/blob/b4715971c153883225394b2c66d6c8ecf8a1bc93/3.5.12/community/Dockerfile) -- [`3.5.12-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/b4715971c153883225394b2c66d6c8ecf8a1bc93/3.5.12/enterprise/Dockerfile) -- [`3.5.11`](https://github.com/neo4j/docker-neo4j-publish/blob/c559931b4b33062e1b4fcbcd2f2e8278ff7b3390/3.5.11/community/Dockerfile) -- [`3.5.11-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/c559931b4b33062e1b4fcbcd2f2e8278ff7b3390/3.5.11/enterprise/Dockerfile) -- [`3.5.8`](https://github.com/neo4j/docker-neo4j-publish/blob/53d8c355498de280a7b6ad4b9259bb8f132a1839/3.5.8/community/Dockerfile) -- [`3.5.8-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/53d8c355498de280a7b6ad4b9259bb8f132a1839/3.5.8/enterprise/Dockerfile) -- [`3.5.7`](https://github.com/neo4j/docker-neo4j-publish/blob/ffc4f941cc9a301ad41d1649aa021c0fc727919b/3.5.7/community/Dockerfile) -- [`3.5.7-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/ffc4f941cc9a301ad41d1649aa021c0fc727919b/3.5.7/enterprise/Dockerfile) -- [`3.5.6`](https://github.com/neo4j/docker-neo4j-publish/blob/c3d38b9d9fbe589282d4974ce66af1d3f3da0c22/3.5.6/community/Dockerfile) -- [`3.5.6-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/c3d38b9d9fbe589282d4974ce66af1d3f3da0c22/3.5.6/enterprise/Dockerfile) -- [`3.4.18`, `3.4`](https://github.com/neo4j/docker-neo4j-publish/blob/cb8d887126ae0d0f25f4f9e08b01f1f6e451ca37/3.4.18/community/Dockerfile) -- [`3.4.18-enterprise`, `3.4-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/cb8d887126ae0d0f25f4f9e08b01f1f6e451ca37/3.4.18/enterprise/Dockerfile) -- [`3.4.17`](https://github.com/neo4j/docker-neo4j-publish/blob/bed0c061a286bc50115cec609c644cecf773c6fe/3.4.17/community/Dockerfile) -- [`3.4.17-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/bed0c061a286bc50115cec609c644cecf773c6fe/3.4.17/enterprise/Dockerfile) -- [`3.4.16`](https://github.com/neo4j/docker-neo4j-publish/blob/8dfb925dd168a35968d8113424e8a9a9bc6d6a6f/3.4.16/community/Dockerfile) -- [`3.4.16-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/8dfb925dd168a35968d8113424e8a9a9bc6d6a6f/3.4.16/enterprise/Dockerfile) -- [`3.4.15`](https://github.com/neo4j/docker-neo4j-publish/blob/a097f1663938dc56b81ae88f1cf7caba0b40004c/3.4.15/community/Dockerfile) -- [`3.4.15-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/a097f1663938dc56b81ae88f1cf7caba0b40004c/3.4.15/enterprise/Dockerfile) -- [`3.4.14`](https://github.com/neo4j/docker-neo4j-publish/blob/e3ddc2d97443a058c19cd5997d8c0df48c1956a9/3.4.14/community/Dockerfile) -- [`3.4.14-enterprise`](https://github.com/neo4j/docker-neo4j-publish/blob/e3ddc2d97443a058c19cd5997d8c0df48c1956a9/3.4.14/enterprise/Dockerfile) +- [`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) # Quick reference (cont.) @@ -73,24 +37,24 @@ WARNING: [https://github.com/neo4j/docker-neo4j/issues](https://github.com/neo4j/docker-neo4j/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/neo4j/) + [`amd64`](https://hub.docker.com/r/amd64/neo4j/), [`arm64v8`](https://hub.docker.com/r/arm64v8/neo4j/) - **Published image artifact details**: [repo-info repo's `repos/neo4j/` directory](https://github.com/docker-library/repo-info/blob/master/repos/neo4j) ([history](https://github.com/docker-library/repo-info/commits/master/repos/neo4j)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/neo4j`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fneo4j) + [official-images repo's `library/neo4j` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fneo4j) [official-images repo's `library/neo4j` file](https://github.com/docker-library/official-images/blob/master/library/neo4j) ([history](https://github.com/docker-library/official-images/commits/master/library/neo4j)) - **Source of this description**: [docs repo's `neo4j/` directory](https://github.com/docker-library/docs/tree/master/neo4j) ([history](https://github.com/docker-library/docs/commits/master/neo4j)) -# What is neo4j? +# What is Neo4j? Neo4j is the world's leading graph database, with native graph storage and processing. You can learn more [here](http://neo4j.com/developer). -![logo](https://raw.githubusercontent.com/docker-library/docs/2289fb3b561c63750032ac74ff65034c0e486072/neo4j/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/56823e63d5b6dd7ddbb9d5d3c4a8947778055d8e/neo4j/logo.png) # How to use this image @@ -111,40 +75,7 @@ By default, this requires you to login with `neo4j/neo4j` and change the passwor # Documentation -For more examples and complete documentation please go to our manual [here](https://neo4j.com/docs/operations-manual/current/docker/introduction/). - -# Releases after 3.4.14 and 3.5.6 - -As of 11th June 2019 all new Neo4j Docker images will be released with a base image of debian-slim instead of alpine linux. This was prompted by [security concerns](https://github.com/docker-library/openjdk/issues/320), which caused the docker maintainers to pull the alpine images from the official `openjdk` images. - -Older Neo4j images have already been released with `openjdk:8-jre-alpine` as the base image. This means our old images can no longer be listed as "supported" on docker hub, although **they are still available for download**. - -In addition to the supported tags, we also have these legacy images of Neo4j available through docker hub: - -- `3.5.5`, `3.5.5-enterprise` and earlier patches -- `3.4.13`, `3.4.13-enterprise` and earlier patches -- `3.3`, `3.3-enterprise`, `3.3.9`, `3.3.9-enterprise` and earlier patches -- `3.2`, `3.2-enterprise`, `3.2.14`, `3.2.14-enterprise` and earlier patches - -A complete list of all available Neo4j images can be found here: https://github.com/neo4j/docker-neo4j-publish/tree/master - -## Migrating from Alpine Linux to Debian Slim - -If you have created a custom Dockerfile based off a `neo4j` image, the main change to be aware of is that debian uses the `aptitude` package manager instead of `apk`. In most cases you can just replace uses of `apk` with `apt`, but be aware that not all packages in `apk` may be available or have the same name. - -Alpine Linux provide a more complete comparison on their documentation page: - -https://wiki.alpinelinux.org/wiki/Comparison_with_other_distros - -## Changes to file permission requirements - -Some users have [raised concerns](https://github.com/neo4j/docker-neo4j/issues/130) that the Neo4j image changes file permissions on the host machine. - -By default, Neo4j runs as the user `neo4j` who only exists in the container, not on the host. That means that it's hard to set up mount folders on the host which this new user has write permissions for. We have updated the error messaging with advice about how to fix file permission errors. We also introduced writability checks and reduced the amount of file permission changes the image will perform. This has been found to interfere with some Kubernetes setups, so is currently an opt-in feature. - -To enforce stricter file permissions checking you can pass this environment variable to the container: - -`--env SECURE_FILE_PERMISSIONS=yes` +For more examples and complete documentation please go to our manual [here](http://neo4j.com/docs/operations-manual/current/deployment/single-instance/docker/). # License diff --git a/neo4j/content.md b/neo4j/content.md index c3be4b969d08..52e01ca799ff 100644 --- a/neo4j/content.md +++ b/neo4j/content.md @@ -1,4 +1,4 @@ -# What is neo4j? +# What is Neo4j? Neo4j is the world's leading graph database, with native graph storage and processing. You can learn more [here](http://neo4j.com/developer). @@ -23,37 +23,4 @@ By default, this requires you to login with `neo4j/neo4j` and change the passwor # Documentation -For more examples and complete documentation please go to our manual [here](https://neo4j.com/docs/operations-manual/current/docker/introduction/). - -# Releases after 3.4.14 and 3.5.6 - -As of 11th June 2019 all new Neo4j Docker images will be released with a base image of debian-slim instead of alpine linux. This was prompted by [security concerns](https://github.com/docker-library/openjdk/issues/320), which caused the docker maintainers to pull the alpine images from the official `openjdk` images. - -Older Neo4j images have already been released with `openjdk:8-jre-alpine` as the base image. This means our old images can no longer be listed as "supported" on docker hub, although **they are still available for download**. - -In addition to the supported tags, we also have these legacy images of Neo4j available through docker hub: - -- `3.5.5`, `3.5.5-enterprise` and earlier patches -- `3.4.13`, `3.4.13-enterprise` and earlier patches -- `3.3`, `3.3-enterprise`, `3.3.9`, `3.3.9-enterprise` and earlier patches -- `3.2`, `3.2-enterprise`, `3.2.14`, `3.2.14-enterprise` and earlier patches - -A complete list of all available Neo4j images can be found here: https://github.com/neo4j/docker-neo4j-publish/tree/master - -## Migrating from Alpine Linux to Debian Slim - -If you have created a custom Dockerfile based off a `neo4j` image, the main change to be aware of is that debian uses the `aptitude` package manager instead of `apk`. In most cases you can just replace uses of `apk` with `apt`, but be aware that not all packages in `apk` may be available or have the same name. - -Alpine Linux provide a more complete comparison on their documentation page: - -https://wiki.alpinelinux.org/wiki/Comparison_with_other_distros - -## Changes to file permission requirements - -Some users have [raised concerns](https://github.com/neo4j/docker-neo4j/issues/130) that the Neo4j image changes file permissions on the host machine. - -By default, Neo4j runs as the user `neo4j` who only exists in the container, not on the host. That means that it's hard to set up mount folders on the host which this new user has write permissions for. We have updated the error messaging with advice about how to fix file permission errors. We also introduced writability checks and reduced the amount of file permission changes the image will perform. This has been found to interfere with some Kubernetes setups, so is currently an opt-in feature. - -To enforce stricter file permissions checking you can pass this environment variable to the container: - -`--env SECURE_FILE_PERMISSIONS=yes` +For more examples and complete documentation please go to our manual [here](http://neo4j.com/docs/operations-manual/current/deployment/single-instance/docker/). diff --git a/neo4j/get-help.md b/neo4j/get-help.md index af0efede52b3..e7a73e1c63d8 100644 --- a/neo4j/get-help.md +++ b/neo4j/get-help.md @@ -1 +1 @@ -[Stack Overflow](http://stackoverflow.com/questions/tagged/neo4j) +[Neo4j Community Forums](https://community.neo4j.com) diff --git a/neo4j/logo.png b/neo4j/logo.png index 1d4b8f789c1b..a8b790741e36 100644 Binary files a/neo4j/logo.png and b/neo4j/logo.png differ diff --git a/neurodebian/README.md b/neurodebian/README.md index 50c5676164c0..b89cf95d9b67 100644 --- a/neurodebian/README.md +++ b/neurodebian/README.md @@ -20,28 +20,26 @@ WARNING: [NeuroDebian](https://github.com/neurodebian/dockerfiles) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`trusty`, `nd14.04`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/trusty/Dockerfile) -- [`trusty-non-free`, `nd14.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/trusty-non-free/Dockerfile) -- [`xenial`, `nd16.04`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/xenial/Dockerfile) -- [`xenial-non-free`, `nd16.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/xenial-non-free/Dockerfile) -- [`bionic`, `nd18.04`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/bionic/Dockerfile) -- [`bionic-non-free`, `nd18.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/bionic-non-free/Dockerfile) -- [`focal`, `nd20.04`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/focal/Dockerfile) -- [`focal-non-free`, `nd20.04-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/focal-non-free/Dockerfile) -- [`jessie`, `nd80`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/jessie/Dockerfile) -- [`jessie-non-free`, `nd80-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/jessie-non-free/Dockerfile) -- [`stretch`, `nd90`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/stretch/Dockerfile) -- [`stretch-non-free`, `nd90-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/stretch-non-free/Dockerfile) -- [`buster`, `nd100`, `latest`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/buster/Dockerfile) -- [`buster-non-free`, `nd100-non-free`, `non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/buster-non-free/Dockerfile) -- [`bullseye`, `nd110`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/bullseye/Dockerfile) -- [`bullseye-non-free`, `nd110-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/bullseye-non-free/Dockerfile) -- [`sid`, `nd`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/sid/Dockerfile) -- [`sid-non-free`, `nd-non-free`](https://github.com/neurodebian/dockerfiles/blob/54ea480e6e3b2563e3e5dcd3df74ca3d280876e1/dockerfiles/sid-non-free/Dockerfile) +- [`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) # Quick reference (cont.) @@ -49,14 +47,14 @@ WARNING: [https://github.com/neurodebian/dockerfiles/issues](https://github.com/neurodebian/dockerfiles/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/neurodebian/) + [`amd64`](https://hub.docker.com/r/amd64/neurodebian/), [`arm64v8`](https://hub.docker.com/r/arm64v8/neurodebian/), [`i386`](https://hub.docker.com/r/i386/neurodebian/) - **Published image artifact details**: [repo-info repo's `repos/neurodebian/` directory](https://github.com/docker-library/repo-info/blob/master/repos/neurodebian) ([history](https://github.com/docker-library/repo-info/commits/master/repos/neurodebian)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/neurodebian`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fneurodebian) + [official-images repo's `library/neurodebian` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fneurodebian) [official-images repo's `library/neurodebian` file](https://github.com/docker-library/official-images/blob/master/library/neurodebian) ([history](https://github.com/docker-library/official-images/commits/master/library/neurodebian)) - **Source of this description**: diff --git a/nextcloud/README.md b/nextcloud/README.md index 96fb445df978..71e0d37a71ce 100644 --- a/nextcloud/README.md +++ b/nextcloud/README.md @@ -20,22 +20,19 @@ WARNING: [Nextcloud](https://github.com/nextcloud/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`16.0.10-apache`, `16.0-apache`, `16-apache`, `16.0.10`, `16.0`, `16`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/16.0/apache/Dockerfile) -- [`16.0.10-fpm-alpine`, `16.0-fpm-alpine`, `16-fpm-alpine`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/16.0/fpm-alpine/Dockerfile) -- [`16.0.10-fpm`, `16.0-fpm`, `16-fpm`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/16.0/fpm/Dockerfile) -- [`17.0.6-apache`, `17.0-apache`, `17-apache`, `production-apache`, `17.0.6`, `17.0`, `17`, `production`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/17.0/apache/Dockerfile) -- [`17.0.6-fpm-alpine`, `17.0-fpm-alpine`, `17-fpm-alpine`, `production-fpm-alpine`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/17.0/fpm-alpine/Dockerfile) -- [`17.0.6-fpm`, `17.0-fpm`, `17-fpm`, `production-fpm`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/17.0/fpm/Dockerfile) -- [`18.0.4-apache`, `18.0-apache`, `18-apache`, `apache`, `stable-apache`, `18.0.4`, `18.0`, `18`, `latest`, `stable`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/18.0/apache/Dockerfile) -- [`18.0.4-fpm-alpine`, `18.0-fpm-alpine`, `18-fpm-alpine`, `fpm-alpine`, `stable-fpm-alpine`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/18.0/fpm-alpine/Dockerfile) -- [`18.0.4-fpm`, `18.0-fpm`, `18-fpm`, `fpm`, `stable-fpm`](https://github.com/nextcloud/docker/blob/b1825a188ba1918aa30d0b6ac18d0a32ff3ec707/18.0/fpm/Dockerfile) -- [`19.0.0RC1-apache`, `19.0.0-rc-apache`, `19.0-rc-apache`, `19-rc-apache`, `19.0.0RC1`, `19.0.0-rc`, `19.0-rc`, `19-rc`](https://github.com/nextcloud/docker/blob/05c3a27d349566e8d3b79797b7300ab1e1bb6a79/19.0-rc/apache/Dockerfile) -- [`19.0.0RC1-fpm-alpine`, `19.0.0-rc-fpm-alpine`, `19.0-rc-fpm-alpine`, `19-rc-fpm-alpine`](https://github.com/nextcloud/docker/blob/05c3a27d349566e8d3b79797b7300ab1e1bb6a79/19.0-rc/fpm-alpine/Dockerfile) -- [`19.0.0RC1-fpm`, `19.0.0-rc-fpm`, `19.0-rc-fpm`, `19-rc-fpm`](https://github.com/nextcloud/docker/blob/05c3a27d349566e8d3b79797b7300ab1e1bb6a79/19.0-rc/fpm/Dockerfile) +- [`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) # Quick reference (cont.) @@ -50,7 +47,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/nextcloud`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnextcloud) + [official-images repo's `library/nextcloud` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnextcloud) [official-images repo's `library/nextcloud` file](https://github.com/docker-library/official-images/blob/master/library/nextcloud) ([history](https://github.com/docker-library/official-images/commits/master/library/nextcloud)) - **Source of this description**: @@ -84,23 +81,23 @@ 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 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 you 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 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. ```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. +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). ## 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) 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. +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. -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. +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. Nextcloud: @@ -120,10 +117,10 @@ Database: ```console $ docker run -d \ -v db:/var/lib/mysql \ - mariadb + mariadb:10.5 ``` -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` 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. +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. Overview of the folders that can be mounted as volumes: @@ -131,9 +128,9 @@ Overview of the folders that can be mounted as volumes: - `/var/www/html/custom_apps` installed / modified apps - `/var/www/html/config` local configuration - `/var/www/html/data` the actual data of your Nextcloud -- `/var/www/html/themes/` theming/branding +- `/var/www/html/themes/` theming/branding -If you want to use named volumes for all of these it would look like this +If you want to use named volumes for all of these, it would look like this: ```console $ docker run -d \ @@ -161,7 +158,7 @@ $ docker-compose exec --user www-data app php occ ## Auto configuration via environment variables -The nextcloud image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. ONLY use one database type! +The Nextcloud image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! **SQLite**: @@ -181,55 +178,94 @@ 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. -If you set any values, 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): +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): - `NEXTCLOUD_ADMIN_USER` Name of the Nextcloud admin user. - `NEXTCLOUD_ADMIN_PASSWORD` Password for the Nextcloud admin user. -If you want you can set the data directory and table prefix, otherwise default values will be used. +If you want, you can set the data directory, otherwise default value will be used. -- `NEXTCLOUD_DATA_DIR` (default: */var/www/html/data*) Configures the data directory where nextcloud stores all files from the users. -- `NEXTCLOUD_TABLE_PREFIX` (default: *""*) Optional prefix for the tables. Used to be `oc_` in the past +- `NEXTCLOUD_DATA_DIR` (default: `/var/www/html/data`) Configures the data directory where nextcloud stores all files from the users. -One or more trusted domains can be set by environment variable, too. They will be added to the configuration after install. +One or more trusted domains can be set through environment variable, too. They will be added to the configuration after install. - `NEXTCLOUD_TRUSTED_DOMAINS` (not set by default) Optional space-separated list of domains The install and update script is only triggered when a default command is used (`apache-foreground` or `php-fpm`). If you use a custom command you have to enable the install / update with -- `NEXTCLOUD_UPDATE` (default: *0*) +- `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 add: +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: - `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. +- `REDIS_HOST_PORT` (default: `6379`) Optional port for Redis, only use for external Redis servers that run on non-standard ports. +- `REDIS_HOST_PASSWORD` (not set by default) Redis password The use of Redis is recommended to prevent file locking problems. See the examples for further instructions. -To use a external SMTP server you have to provide the connection details. To configure Nextcloud to use SMTP add: +To use an external SMTP server, you have to provide the connection details. To configure Nextcloud to use SMTP add: -- `SMTP_HOST` (not set by default) hostname of the SMTP server -- `SMTP_SECURE` (empty by default) set to 'ssl' to use SSL on the connection. -- `SMTP_PORT` (default: *465* for SSL and *25* for non-secure connection) Optional port for SMTP connection. -- `SMTP_AUTHTYPE` (default: *LOGIN*) The method used for authentication. -- `SMTP_NAME` (empty by default) Username for the authentication. -- `SMTP_PASSWORD` (empty by default) Password for the authentication. -- `MAIL_FROM_ADDRESS` (not set by default) Use this address for the 'from' field in the mail envelopes sent by Nextcloud. -- `MAIL_DOMAIN` (not set by default) Set a different domain for the emails than the domain where Nextcloud is installed. +- `SMTP_HOST` (not set by default): The hostname of the SMTP server. +- `SMTP_SECURE` (empty by default): Set to `ssl` to use SSL, or `tls` to use STARTTLS. +- `SMTP_PORT` (default: `465` for SSL and `25` for non-secure connections): Optional port for the SMTP connection. Use `587` for an alternative port for STARTTLS. +- `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_DOMAIN` (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed. 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_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_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 + +Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3) for more information. + +To use an external OpenStack Swift object store as primary storage, set the following variables: + +- `OBJECTSTORE_SWIFT_URL`: The Swift identity (Keystone) endpoint +- `OBJECTSTORE_SWIFT_AUTOCREATE` (default: `false`): Whether or not Nextcloud should automatically create the Swift container +- `OBJECTSTORE_SWIFT_USER_NAME`: Swift username +- `OBJECTSTORE_SWIFT_USER_PASSWORD`: Swift user password +- `OBJECTSTORE_SWIFT_USER_DOMAIN` (default: `Default`): Swift user domain +- `OBJECTSTORE_SWIFT_PROJECT_NAME`: OpenStack project name +- `OBJECTSTORE_SWIFT_PROJECT_DOMAIN` (default: `Default`): OpenStack project domain +- `OBJECTSTORE_SWIFT_SERVICE_NAME` (default: `swift`): Swift service name +- `OBJECTSTORE_SWIFT_REGION`: Swift endpoint region +- `OBJECTSTORE_SWIFT_CONTAINER_NAME`: Swift container (bucket) that Nextcloud should store the data in + +Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#openstack-swift) for more information. + +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. + ## 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 disable rewrite ip and the reverse proxies ip address to `TRUSTED_PROXIES`. +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`. -- `APACHE_DISABLE_REWRITE_IP` (not set by default): Set to 1 to disable rewrite ip. +- `APACHE_DISABLE_REWRITE_IP` (not set by default): Set to 1 to disable rewrite IP. - `TRUSTED_PROXIES` (empty by default): A space-separated list of trusted proxies. CIDR notation is supported for IPv4. If the `TRUSTED_PROXIES` approach does not work for you, try using fixed values for overwrite parameters. - `OVERWRITEHOST` (empty by default): Set the hostname of the proxy. Can also specify a port. - `OVERWRITEPROTOCOL` (empty by default): Set the protocol of the proxy, http or https. +- `OVERWRITECLIURL` (empty by default): Set the cli url of the proxy (e.g. https://mydnsname.example.com) - `OVERWRITEWEBROOT` (empty by default): Set the absolute path of the proxy. - `OVERWRITECONDADDR` (empty by default): Regex to overwrite the values dependent on the remote address. @@ -239,15 +275,15 @@ Keep in mind that once set, removing these environment variables won't remove th # 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 `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. -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 to have your server reachable from the internet adding HTTPS-encryption is mandatory! See below for more information. +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. ## Base version - apache This version will use the apache image and add a mariaDB container. The volumes are set to keep your data persistent. This setup provides **no ssl encryption** and is intended to run behind a proxy. -Make sure to set the variables `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` before you run this setup. +Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml version: '2' @@ -258,9 +294,9 @@ volumes: services: db: - image: mariadb - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + image: mariadb:10.5 restart: always + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -271,24 +307,29 @@ services: app: image: nextcloud + restart: always ports: - 8080:80 links: - db volumes: - nextcloud:/var/www/html - restart: always + environment: + - MYSQL_PASSWORD= + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db ``` 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 need 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 to be run behind a proxy. +As this setup does **not include encryption**, it should be run behind a proxy. -Make sure to set the variables `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` before you run this setup. +Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml version: '2' @@ -299,9 +340,9 @@ volumes: services: db: - image: mariadb - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + image: mariadb:10.5 restart: always + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -312,14 +353,20 @@ services: app: image: nextcloud:fpm + restart: always links: - db volumes: - nextcloud:/var/www/html - restart: always + environment: + - MYSQL_PASSWORD= + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db web: image: nginx + restart: always ports: - 8080:80 links: @@ -328,14 +375,13 @@ services: - ./nginx.conf:/etc/nginx/nginx.conf:ro volumes_from: - app - restart: always ``` 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: +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' @@ -384,34 +430,36 @@ volumes: secrets: nextcloud_admin_password: - file: ./nextcloud_admin_password.txt # put admin password to this file + file: ./nextcloud_admin_password.txt # put admin password in this file nextcloud_admin_user: - file: ./nextcloud_admin_user.txt # put admin username to this file + file: ./nextcloud_admin_user.txt # put admin username in this file postgres_db: - file: ./postgres_db.txt # put postgresql db name to this file + file: ./postgres_db.txt # put postgresql db name in this file postgres_password: - file: ./postgres_password.txt # put postgresql password to this file + file: ./postgres_password.txt # put postgresql password in this file postgres_user: - file: ./postgres_user.txt # put postgresql username to this file + file: ./postgres_user.txt # put postgresql username in this file ``` -Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DB`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`. +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`. + +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`). # Make your Nextcloud available from the internet -Until here your Nextcloud is just available from you docker host. If you want you Nextcloud available from the internet adding SSL encryption is mandatory. +Until here, your Nextcloud is just available from your docker host. If you want your Nextcloud available from the internet adding SSL encryption is mandatory. ## HTTPS - SSL encryption There are many different possibilities to introduce encryption depending on your setup. -We recommend using a reverse proxy in front of our Nextcloud installation. Your Nextcloud will only be reachable through the proxy, which encrypts all traffic to the clients. You can mount your manually generated certificates to the proxy or use a fully automated solution, which generates and renews the certificates for you. +We recommend using a reverse proxy in front of your Nextcloud installation. Your Nextcloud will only be reachable through the proxy, which encrypts all traffic to the clients. You can mount your manually generated certificates to the proxy or use a fully automated solution which generates and renews the certificates for you. In our [examples](https://github.com/nextcloud/docker/tree/master/.examples) section we have an example for a fully automated setup using a reverse proxy, a container for [Let's Encrypt](https://letsencrypt.org/) certificate handling, database and Nextcloud. It uses the popular [nginx-proxy](https://github.com/jwilder/nginx-proxy) and [docker-letsencrypt-nginx-proxy-companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion) containers. Please check the according documentations before using this setup. # First use -When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account, 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 `docker-compose.yml` file. # Update to a newer version @@ -441,32 +489,31 @@ $ docker-compose up -d A lot of people want to use additional functionality inside their Nextcloud installation. If the image does not include the packages you need, you can easily build your own image on top of it. Start your derived image with the `FROM` statement and add whatever you like. -```yaml +```dockerfile FROM nextcloud:apache 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 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) ```yaml app: build: . + restart: always links: - db volumes: - data:/var/www/html/data - config:/var/www/html/config - apps:/var/www/html/apps - restart: always ``` -If you intend to use another command to run the image. Make sure that you set `NEXTCLOUD_UPDATE=1` in your Dockerfile. Otherwise the installation and update will not work. +If you intend to use another command to run the image, make sure that you set `NEXTCLOUD_UPDATE=1` in your Dockerfile. Otherwise the installation and update will not work. -```yaml +```dockerfile FROM nextcloud:apache ... @@ -497,11 +544,22 @@ 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. + 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 -u USER -pPASSWORD nextcloud < /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 ``` @@ -509,23 +567,48 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som 1. Set database connection + - In case of MySQL database + ```php 'dbhost' => 'db:3306', ``` + - In case of PostgreSQL database + + ```php + 'dbhost' => 'db:5432', + ``` + 2. Make sure you have no configuration for the `apps_paths`. Delete lines like these ```php - "apps_paths" => array ( + 'apps_paths' => array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => true, + ), + ), + ``` + + 3. Make sure to have the `apps` directory non writable and the `custom_apps` directory writable + + ```php + 'apps_paths' => array ( 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => true, + 'path' => '/var/www/html/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => '/var/www/html/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, ), ), ``` - 3. Make sure your data directory is set to /var/www/html/data + 4. Make sure your data directory is set to /var/www/html/data ```php 'datadirectory' => '/var/www/html/data', @@ -534,18 +617,24 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som 4. Copy your data (nextcloud_app_1 is the name of your Nextcloud container): ```console - docker cp ./data/ nextcloud_app_1:/var/www/html/data + docker cp ./data/ nextcloud_app_1:/var/www/html/ docker-compose exec app chown -R www-data:www-data /var/www/html/data - docker cp ./theming/ nextcloud_app_1:/var/www/html/theming + docker cp ./theming/ nextcloud_app_1:/var/www/html/ 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 ``` + 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: + + ```console + cp --preserve --recursive ./data/ /path/to/nextcloudVolume/data + ``` + 5. Copy only the custom apps you use (or simply redownload them from the web interface): ```console - docker cp ./apps/ nextcloud_data:/var/www/html/custom_apps + docker cp ./custom_apps/ nextcloud_data:/var/www/html/ docker-compose exec app chown -R www-data:www-data /var/www/html/custom_apps ``` @@ -563,9 +652,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `nextcloud:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/nextcloud/content.md b/nextcloud/content.md index a8475e02c135..a2dbab047b16 100644 --- a/nextcloud/content.md +++ b/nextcloud/content.md @@ -26,23 +26,23 @@ 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 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 you 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 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. ```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](#running-this-image-with-docker-compose). ## 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) 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. +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. -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. +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. Nextcloud: @@ -62,10 +62,10 @@ Database: ```console $ docker run -d \ -v db:/var/lib/mysql \ - mariadb + mariadb:10.5 ``` -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` 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. +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. Overview of the folders that can be mounted as volumes: @@ -73,9 +73,9 @@ Overview of the folders that can be mounted as volumes: - `/var/www/html/custom_apps` installed / modified apps - `/var/www/html/config` local configuration - `/var/www/html/data` the actual data of your Nextcloud -- `/var/www/html/themes/` theming/branding +- `/var/www/html/themes/` theming/branding -If you want to use named volumes for all of these it would look like this +If you want to use named volumes for all of these, it would look like this: ```console $ docker run -d \ @@ -103,7 +103,7 @@ $ docker-compose exec --user www-data app php occ ## Auto configuration via environment variables -The %%IMAGE%% image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. ONLY use one database type! +The Nextcloud image supports auto configuration via environment variables. You can preconfigure everything that is asked on the install page on first run. To enable auto configuration, set your database connection via the following environment variables. You must specify all of the environment variables for a given database or the database environment variables defaults to SQLITE. ONLY use one database type! **SQLite**: @@ -123,55 +123,94 @@ The %%IMAGE%% 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. -If you set any values, 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): +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): - `NEXTCLOUD_ADMIN_USER` Name of the Nextcloud admin user. - `NEXTCLOUD_ADMIN_PASSWORD` Password for the Nextcloud admin user. -If you want you can set the data directory and table prefix, otherwise default values will be used. +If you want, you can set the data directory, otherwise default value will be used. -- `NEXTCLOUD_DATA_DIR` (default: */var/www/html/data*) Configures the data directory where nextcloud stores all files from the users. -- `NEXTCLOUD_TABLE_PREFIX` (default: *""*) Optional prefix for the tables. Used to be `oc_` in the past +- `NEXTCLOUD_DATA_DIR` (default: `/var/www/html/data`) Configures the data directory where nextcloud stores all files from the users. -One or more trusted domains can be set by environment variable, too. They will be added to the configuration after install. +One or more trusted domains can be set through environment variable, too. They will be added to the configuration after install. - `NEXTCLOUD_TRUSTED_DOMAINS` (not set by default) Optional space-separated list of domains The install and update script is only triggered when a default command is used (`apache-foreground` or `php-fpm`). If you use a custom command you have to enable the install / update with -- `NEXTCLOUD_UPDATE` (default: *0*) +- `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 add: +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: - `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. +- `REDIS_HOST_PORT` (default: `6379`) Optional port for Redis, only use for external Redis servers that run on non-standard ports. +- `REDIS_HOST_PASSWORD` (not set by default) Redis password The use of Redis is recommended to prevent file locking problems. See the examples for further instructions. -To use a external SMTP server you have to provide the connection details. To configure Nextcloud to use SMTP add: +To use an external SMTP server, you have to provide the connection details. To configure Nextcloud to use SMTP add: -- `SMTP_HOST` (not set by default) hostname of the SMTP server -- `SMTP_SECURE` (empty by default) set to 'ssl' to use SSL on the connection. -- `SMTP_PORT` (default: *465* for SSL and *25* for non-secure connection) Optional port for SMTP connection. -- `SMTP_AUTHTYPE` (default: *LOGIN*) The method used for authentication. -- `SMTP_NAME` (empty by default) Username for the authentication. -- `SMTP_PASSWORD` (empty by default) Password for the authentication. -- `MAIL_FROM_ADDRESS` (not set by default) Use this address for the 'from' field in the mail envelopes sent by Nextcloud. -- `MAIL_DOMAIN` (not set by default) Set a different domain for the emails than the domain where Nextcloud is installed. +- `SMTP_HOST` (not set by default): The hostname of the SMTP server. +- `SMTP_SECURE` (empty by default): Set to `ssl` to use SSL, or `tls` to use STARTTLS. +- `SMTP_PORT` (default: `465` for SSL and `25` for non-secure connections): Optional port for the SMTP connection. Use `587` for an alternative port for STARTTLS. +- `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_DOMAIN` (not set by default): Set a different domain for the emails than the domain where Nextcloud is installed. 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_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_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 + +Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#simple-storage-service-s3) for more information. + +To use an external OpenStack Swift object store as primary storage, set the following variables: + +- `OBJECTSTORE_SWIFT_URL`: The Swift identity (Keystone) endpoint +- `OBJECTSTORE_SWIFT_AUTOCREATE` (default: `false`): Whether or not Nextcloud should automatically create the Swift container +- `OBJECTSTORE_SWIFT_USER_NAME`: Swift username +- `OBJECTSTORE_SWIFT_USER_PASSWORD`: Swift user password +- `OBJECTSTORE_SWIFT_USER_DOMAIN` (default: `Default`): Swift user domain +- `OBJECTSTORE_SWIFT_PROJECT_NAME`: OpenStack project name +- `OBJECTSTORE_SWIFT_PROJECT_DOMAIN` (default: `Default`): OpenStack project domain +- `OBJECTSTORE_SWIFT_SERVICE_NAME` (default: `swift`): Swift service name +- `OBJECTSTORE_SWIFT_REGION`: Swift endpoint region +- `OBJECTSTORE_SWIFT_CONTAINER_NAME`: Swift container (bucket) that Nextcloud should store the data in + +Check the [Nextcloud documentation](https://docs.nextcloud.com/server/latest/admin_manual/configuration_files/primary_storage.html#openstack-swift) for more information. + +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. + ## 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 disable rewrite ip and the reverse proxies ip address to `TRUSTED_PROXIES`. +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`. -- `APACHE_DISABLE_REWRITE_IP` (not set by default): Set to 1 to disable rewrite ip. +- `APACHE_DISABLE_REWRITE_IP` (not set by default): Set to 1 to disable rewrite IP. - `TRUSTED_PROXIES` (empty by default): A space-separated list of trusted proxies. CIDR notation is supported for IPv4. If the `TRUSTED_PROXIES` approach does not work for you, try using fixed values for overwrite parameters. - `OVERWRITEHOST` (empty by default): Set the hostname of the proxy. Can also specify a port. - `OVERWRITEPROTOCOL` (empty by default): Set the protocol of the proxy, http or https. +- `OVERWRITECLIURL` (empty by default): Set the cli url of the proxy (e.g. https://mydnsname.example.com) - `OVERWRITEWEBROOT` (empty by default): Set the absolute path of the proxy. - `OVERWRITECONDADDR` (empty by default): Regex to overwrite the values dependent on the remote address. @@ -181,15 +220,15 @@ Keep in mind that once set, removing these environment variables won't remove th # 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 `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. -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 to have your server reachable from the internet adding HTTPS-encryption is mandatory! See below for more information. +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. ## Base version - apache This version will use the apache image and add a mariaDB container. The volumes are set to keep your data persistent. This setup provides **no ssl encryption** and is intended to run behind a proxy. -Make sure to set the variables `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` before you run this setup. +Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml version: '2' @@ -200,9 +239,9 @@ volumes: services: db: - image: mariadb - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + image: mariadb:10.5 restart: always + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -213,24 +252,29 @@ services: app: image: %%IMAGE%% + restart: always ports: - 8080:80 links: - db volumes: - nextcloud:/var/www/html - restart: always + environment: + - MYSQL_PASSWORD= + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db ``` 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 need 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 to be run behind a proxy. +As this setup does **not include encryption**, it should be run behind a proxy. -Make sure to set the variables `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` before you run this setup. +Make sure to pass in values for `MYSQL_ROOT_PASSWORD` and `MYSQL_PASSWORD` variables before you run this setup. ```yaml version: '2' @@ -241,9 +285,9 @@ volumes: services: db: - image: mariadb - command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW + image: mariadb:10.5 restart: always + command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW volumes: - db:/var/lib/mysql environment: @@ -254,14 +298,20 @@ services: app: image: %%IMAGE%%:fpm + restart: always links: - db volumes: - nextcloud:/var/www/html - restart: always + environment: + - MYSQL_PASSWORD= + - MYSQL_DATABASE=nextcloud + - MYSQL_USER=nextcloud + - MYSQL_HOST=db web: image: nginx + restart: always ports: - 8080:80 links: @@ -270,14 +320,13 @@ services: - ./nginx.conf:/etc/nginx/nginx.conf:ro volumes_from: - app - restart: always ``` 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: +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' @@ -326,34 +375,36 @@ volumes: secrets: nextcloud_admin_password: - file: ./nextcloud_admin_password.txt # put admin password to this file + file: ./nextcloud_admin_password.txt # put admin password in this file nextcloud_admin_user: - file: ./nextcloud_admin_user.txt # put admin username to this file + file: ./nextcloud_admin_user.txt # put admin username in this file postgres_db: - file: ./postgres_db.txt # put postgresql db name to this file + file: ./postgres_db.txt # put postgresql db name in this file postgres_password: - file: ./postgres_password.txt # put postgresql password to this file + file: ./postgres_password.txt # put postgresql password in this file postgres_user: - file: ./postgres_user.txt # put postgresql username to this file + file: ./postgres_user.txt # put postgresql username in this file ``` -Currently, this is only supported for `NEXTCLOUD_ADMIN_PASSWORD`, `NEXTCLOUD_ADMIN_USER`, `MYSQL_DB`, `MYSQL_PASSWORD`, `MYSQL_USER`, `POSTGRES_DB`, `POSTGRES_PASSWORD`, `POSTGRES_USER`. +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`. + +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`). # Make your Nextcloud available from the internet -Until here your Nextcloud is just available from you docker host. If you want you Nextcloud available from the internet adding SSL encryption is mandatory. +Until here, your Nextcloud is just available from your docker host. If you want your Nextcloud available from the internet adding SSL encryption is mandatory. ## HTTPS - SSL encryption There are many different possibilities to introduce encryption depending on your setup. -We recommend using a reverse proxy in front of our Nextcloud installation. Your Nextcloud will only be reachable through the proxy, which encrypts all traffic to the clients. You can mount your manually generated certificates to the proxy or use a fully automated solution, which generates and renews the certificates for you. +We recommend using a reverse proxy in front of your Nextcloud installation. Your Nextcloud will only be reachable through the proxy, which encrypts all traffic to the clients. You can mount your manually generated certificates to the proxy or use a fully automated solution which generates and renews the certificates for you. In our [examples](https://github.com/nextcloud/docker/tree/master/.examples) section we have an example for a fully automated setup using a reverse proxy, a container for [Let's Encrypt](https://letsencrypt.org/) certificate handling, database and Nextcloud. It uses the popular [nginx-proxy](https://github.com/jwilder/nginx-proxy) and [docker-letsencrypt-nginx-proxy-companion](https://github.com/JrCs/docker-letsencrypt-nginx-proxy-companion) containers. Please check the according documentations before using this setup. # First use -When you first access your Nextcloud, the setup wizard will appear and ask you to choose an administrator account, 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 `docker-compose.yml` file. # Update to a newer version @@ -383,33 +434,32 @@ $ docker-compose up -d A lot of people want to use additional functionality inside their Nextcloud installation. If the image does not include the packages you need, you can easily build your own image on top of it. Start your derived image with the `FROM` statement and add whatever you like. -```yaml +```dockerfile FROM %%IMAGE%%:apache 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 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) ```yaml app: build: . + restart: always links: - db volumes: - data:/var/www/html/data - config:/var/www/html/config - apps:/var/www/html/apps - restart: always ``` -If you intend to use another command to run the image. Make sure that you set `NEXTCLOUD_UPDATE=1` in your Dockerfile. Otherwise the installation and update will not work. +If you intend to use another command to run the image, make sure that you set `NEXTCLOUD_UPDATE=1` in your Dockerfile. Otherwise the installation and update will not work. -```yaml -FROM nextcloud:apache +```dockerfile +FROM %%IMAGE%%:apache ... @@ -439,11 +489,22 @@ 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. + 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 -u USER -pPASSWORD nextcloud < /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 ``` @@ -451,23 +512,48 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som 1. Set database connection + - In case of MySQL database + ```php 'dbhost' => 'db:3306', ``` + - In case of PostgreSQL database + + ```php + 'dbhost' => 'db:5432', + ``` + 2. Make sure you have no configuration for the `apps_paths`. Delete lines like these ```php - "apps_paths" => array ( + 'apps_paths' => array ( + 0 => array ( + 'path' => OC::$SERVERROOT.'/apps', + 'url' => '/apps', + 'writable' => true, + ), + ), + ``` + + 3. Make sure to have the `apps` directory non writable and the `custom_apps` directory writable + + ```php + 'apps_paths' => array ( 0 => array ( - "path" => OC::$SERVERROOT."/apps", - "url" => "/apps", - "writable" => true, + 'path' => '/var/www/html/apps', + 'url' => '/apps', + 'writable' => false, + ), + 1 => array ( + 'path' => '/var/www/html/custom_apps', + 'url' => '/custom_apps', + 'writable' => true, ), ), ``` - 3. Make sure your data directory is set to /var/www/html/data + 4. Make sure your data directory is set to /var/www/html/data ```php 'datadirectory' => '/var/www/html/data', @@ -476,18 +562,24 @@ You're already using Nextcloud and want to switch to docker? Great! Here are som 4. Copy your data (nextcloud_app_1 is the name of your Nextcloud container): ```console - docker cp ./data/ nextcloud_app_1:/var/www/html/data + docker cp ./data/ nextcloud_app_1:/var/www/html/ docker-compose exec app chown -R www-data:www-data /var/www/html/data - docker cp ./theming/ nextcloud_app_1:/var/www/html/theming + docker cp ./theming/ nextcloud_app_1:/var/www/html/ 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 ``` + 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: + + ```console + cp --preserve --recursive ./data/ /path/to/nextcloudVolume/data + ``` + 5. Copy only the custom apps you use (or simply redownload them from the web interface): ```console - docker cp ./apps/ nextcloud_data:/var/www/html/custom_apps + docker cp ./custom_apps/ nextcloud_data:/var/www/html/ docker-compose exec app chown -R www-data:www-data /var/www/html/custom_apps ``` diff --git a/nginx/README.md b/nginx/README.md index 473b311db076..95cdd9c79cbd 100644 --- a/nginx/README.md +++ b/nginx/README.md @@ -20,18 +20,19 @@ WARNING: [the NGINX Docker Maintainers](https://github.com/nginxinc/docker-nginx) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.17.10`, `mainline`, `1`, `1.17`, `latest`](https://github.com/nginxinc/docker-nginx/blob/594ce7a8bc26c85af88495ac94d5cd0096b306f7/mainline/buster/Dockerfile) -- [`1.17.10-perl`, `mainline-perl`, `1-perl`, `1.17-perl`, `perl`](https://github.com/nginxinc/docker-nginx/blob/594ce7a8bc26c85af88495ac94d5cd0096b306f7/mainline/buster-perl/Dockerfile) -- [`1.17.10-alpine`, `mainline-alpine`, `1-alpine`, `1.17-alpine`, `alpine`](https://github.com/nginxinc/docker-nginx/blob/594ce7a8bc26c85af88495ac94d5cd0096b306f7/mainline/alpine/Dockerfile) -- [`1.17.10-alpine-perl`, `mainline-alpine-perl`, `1-alpine-perl`, `1.17-alpine-perl`, `alpine-perl`](https://github.com/nginxinc/docker-nginx/blob/594ce7a8bc26c85af88495ac94d5cd0096b306f7/mainline/alpine-perl/Dockerfile) -- [`1.18.0`, `stable`, `1.18`](https://github.com/nginxinc/docker-nginx/blob/70e44865208627c5ada57242b46920205603c096/stable/buster/Dockerfile) -- [`1.18.0-perl`, `stable-perl`, `1.18-perl`](https://github.com/nginxinc/docker-nginx/blob/70e44865208627c5ada57242b46920205603c096/stable/buster-perl/Dockerfile) -- [`1.18.0-alpine`, `stable-alpine`, `1.18-alpine`](https://github.com/nginxinc/docker-nginx/blob/70e44865208627c5ada57242b46920205603c096/stable/alpine/Dockerfile) -- [`1.18.0-alpine-perl`, `stable-alpine-perl`, `1.18-alpine-perl`](https://github.com/nginxinc/docker-nginx/blob/70e44865208627c5ada57242b46920205603c096/stable/alpine-perl/Dockerfile) +- [`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) # Quick reference (cont.) @@ -39,14 +40,14 @@ WARNING: [https://github.com/nginxinc/docker-nginx/issues](https://github.com/nginxinc/docker-nginx/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/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/), [`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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/nginx`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnginx) + [official-images repo's `library/nginx` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnginx) [official-images repo's `library/nginx` file](https://github.com/docker-library/official-images/blob/master/library/nginx) ([history](https://github.com/docker-library/official-images/commits/master/library/nginx)) - **Source of this description**: @@ -120,9 +121,9 @@ Then build the image with `docker build -t custom-nginx .` and run it as follows $ docker run --name my-custom-nginx-container -d custom-nginx ``` -### Using environment variables in nginx configuration +### Using environment variables in nginx configuration (new in 1.19) -Out-of-the-box, nginx doesn't support environment variables inside most configuration blocks. But `envsubst` may be used as a workaround if you need to generate your nginx configuration dynamically before nginx starts. +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: @@ -130,23 +131,41 @@ Here is an example using docker-compose.yml: web: image: nginx volumes: - - ./mysite.template:/etc/nginx/conf.d/mysite.template + - ./templates:/etc/nginx/templates ports: - "8080:80" environment: - NGINX_HOST=foobar.com - NGINX_PORT=80 - command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" ``` -The `mysite.template` file may then contain variable references like this: +By default, this function reads template files in `/etc/nginx/templates/*.template` and outputs the result of executing `envsubst` to `/etc/nginx/conf.d`. -`listen ${NGINX_PORT}; -` +So if you place `templates/default.conf.template` file, which contains variable references like this: + + listen ${NGINX_PORT}; + +outputs to `/etc/nginx/conf.d/default.conf` like this: + + listen 80; + +This behavior can be changed via the following environment variables: + +- `NGINX_ENVSUBST_TEMPLATE_DIR` + - A directory which contains template files (default: `/etc/nginx/templates`) + - When this directory doesn't exist, this function will do nothing about template processing. +- `NGINX_ENVSUBST_TEMPLATE_SUFFIX` + - A suffix of template files (default: `.template`) + - This function only processes the files whose name ends with this suffix. +- `NGINX_ENVSUBST_OUTPUT_DIR` + - A directory where the result of executing envsubst is output (default: `/etc/nginx/conf.d`) + - The output filename is the template filename with the suffix removed. + - ex.) `/etc/nginx/templates/default.conf.template` will be output with the filename `/etc/nginx/conf.d/default.conf`. + - This directory must be writable by the user running a container. ## Running nginx in read-only mode -To run nginx in read-only mode, you will need to mount a Docker volume to every location where nginx writes information. The default nginx configuration requires write access to `/var/cache` and `/var/run`. This can be easily accomplished by running nginx as follows: +To run nginx in read-only mode, you will need to mount a Docker volume to every location where nginx writes information. The default nginx configuration requires write access to `/var/cache/nginx` and `/var/run`. This can be easily accomplished by running nginx as follows: ```console $ docker run -d -p 80:80 --read-only -v $(pwd)/nginx-cache:/var/cache/nginx -v $(pwd)/nginx-pid:/var/run nginx @@ -172,6 +191,14 @@ web: command: [nginx-debug, '-g', 'daemon off;'] ``` +## Entrypoint quiet logs + +Since version 1.19.0, a verbose entrypoint was added. It provides information on what's happening during container startup. You can silence this output by setting environment variable `NGINX_ENTRYPOINT_QUIET_LOGS`: + +```console +$ docker run -d -e NGINX_ENTRYPOINT_QUIET_LOGS=1 nginx +``` + ## User and group id Since 1.17.0, both alpine- and debian-based images variants use the same user and group ids to drop the privileges for worker processes: @@ -208,15 +235,7 @@ http { } ``` -## Monitoring nginx with Amplify - -[Amplify](https://amplify.nginx.com/signup/) is a free monitoring tool that can be used to monitor microservice architectures based on nginx. Amplify is developed and maintained by the company behind the nginx software. - -With Amplify it is possible to collect and aggregate metrics across containers, and present a coherent set of visualizations of the key performance data, such as active connections or requests per second. It is also easy to quickly check for any performance degradations, traffic anomalies, and get a deeper insight into the nginx configuration in general. - -In order to use Amplify, a small Python-based agent software (Amplify Agent) should be [installed](https://github.com/nginxinc/docker-nginx-amplify) inside the container. - -For more information about Amplify, please check the official documentation [here](https://github.com/nginxinc/nginx-amplify-doc). +Alternatively, check out the official [Docker NGINX unprivileged image](https://hub.docker.com/r/nginxinc/nginx-unprivileged). # Image Variants @@ -226,14 +245,22 @@ 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. +## `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. + ## `nginx:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). +## `nginx:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `nginx`. Unless you are working in an environment where *only* the `nginx` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + # License View [license information](http://nginx.org/LICENSE) for the software contained in this image. diff --git a/nginx/content.md b/nginx/content.md index 8d8a26003eeb..802adcf100d9 100644 --- a/nginx/content.md +++ b/nginx/content.md @@ -66,9 +66,9 @@ Then build the image with `docker build -t custom-nginx .` and run it as follows $ docker run --name my-custom-nginx-container -d custom-nginx ``` -### Using environment variables in %%IMAGE%% configuration +### Using environment variables in %%IMAGE%% configuration (new in 1.19) -Out-of-the-box, %%IMAGE%% doesn't support environment variables inside most configuration blocks. But `envsubst` may be used as a workaround if you need to generate your %%IMAGE%% configuration dynamically before %%IMAGE%% starts. +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: @@ -76,23 +76,41 @@ Here is an example using docker-compose.yml: web: image: %%IMAGE%% volumes: - - ./mysite.template:/etc/nginx/conf.d/mysite.template + - ./templates:/etc/nginx/templates ports: - "8080:80" environment: - NGINX_HOST=foobar.com - NGINX_PORT=80 - command: /bin/bash -c "envsubst < /etc/nginx/conf.d/mysite.template > /etc/nginx/conf.d/default.conf && exec nginx -g 'daemon off;'" ``` -The `mysite.template` file may then contain variable references like this: +By default, this function reads template files in `/etc/nginx/templates/*.template` and outputs the result of executing `envsubst` to `/etc/nginx/conf.d`. -`listen ${NGINX_PORT}; -` +So if you place `templates/default.conf.template` file, which contains variable references like this: + + listen ${NGINX_PORT}; + +outputs to `/etc/nginx/conf.d/default.conf` like this: + + listen 80; + +This behavior can be changed via the following environment variables: + +- `NGINX_ENVSUBST_TEMPLATE_DIR` + - A directory which contains template files (default: `/etc/nginx/templates`) + - When this directory doesn't exist, this function will do nothing about template processing. +- `NGINX_ENVSUBST_TEMPLATE_SUFFIX` + - A suffix of template files (default: `.template`) + - This function only processes the files whose name ends with this suffix. +- `NGINX_ENVSUBST_OUTPUT_DIR` + - A directory where the result of executing envsubst is output (default: `/etc/nginx/conf.d`) + - The output filename is the template filename with the suffix removed. + - ex.) `/etc/nginx/templates/default.conf.template` will be output with the filename `/etc/nginx/conf.d/default.conf`. + - This directory must be writable by the user running a container. ## Running %%IMAGE%% in read-only mode -To run %%IMAGE%% in read-only mode, you will need to mount a Docker volume to every location where %%IMAGE%% writes information. The default %%IMAGE%% configuration requires write access to `/var/cache` and `/var/run`. This can be easily accomplished by running %%IMAGE%% as follows: +To run %%IMAGE%% in read-only mode, you will need to mount a Docker volume to every location where %%IMAGE%% writes information. The default %%IMAGE%% configuration requires write access to `/var/cache/nginx` and `/var/run`. This can be easily accomplished by running %%IMAGE%% as follows: ```console $ docker run -d -p 80:80 --read-only -v $(pwd)/nginx-cache:/var/cache/nginx -v $(pwd)/nginx-pid:/var/run nginx @@ -118,6 +136,14 @@ web: command: [nginx-debug, '-g', 'daemon off;'] ``` +## Entrypoint quiet logs + +Since version 1.19.0, a verbose entrypoint was added. It provides information on what's happening during container startup. You can silence this output by setting environment variable `NGINX_ENTRYPOINT_QUIET_LOGS`: + +```console +$ docker run -d -e NGINX_ENTRYPOINT_QUIET_LOGS=1 %%IMAGE%% +``` + ## User and group id Since 1.17.0, both alpine- and debian-based images variants use the same user and group ids to drop the privileges for worker processes: @@ -154,12 +180,4 @@ http { } ``` -## Monitoring nginx with Amplify - -[Amplify](https://amplify.nginx.com/signup/) is a free monitoring tool that can be used to monitor microservice architectures based on nginx. Amplify is developed and maintained by the company behind the nginx software. - -With Amplify it is possible to collect and aggregate metrics across containers, and present a coherent set of visualizations of the key performance data, such as active connections or requests per second. It is also easy to quickly check for any performance degradations, traffic anomalies, and get a deeper insight into the nginx configuration in general. - -In order to use Amplify, a small Python-based agent software (Amplify Agent) should be [installed](https://github.com/nginxinc/docker-nginx-amplify) inside the container. - -For more information about Amplify, please check the official documentation [here](https://github.com/nginxinc/nginx-amplify-doc). +Alternatively, check out the official [Docker NGINX unprivileged image](https://hub.docker.com/r/nginxinc/nginx-unprivileged). diff --git a/nginx/variant-perl.md b/nginx/variant-perl.md new file mode 100644 index 000000000000..2cf02570f455 --- /dev/null +++ b/nginx/variant-perl.md @@ -0,0 +1,3 @@ +## `%%IMAGE%%:-perl` / `%%IMAGE%%:-alpine-perl` + +Starting with %%IMAGE%%:1.13.0 / mainline and %%IMAGE%%: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/node/README.md b/node/README.md index 0477fb39f79e..57565d8f4bbf 100644 --- a/node/README.md +++ b/node/README.md @@ -20,38 +20,34 @@ WARNING: [The Node.js Docker Team](https://github.com/nodejs/docker-node) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`14.2.0-stretch`, `14.2-stretch`, `14-stretch`, `stretch`, `current-stretch`, `14.2.0`, `14.2`, `14`, `latest`, `current`](https://github.com/nodejs/docker-node/blob/910f8b1c0bdeee7bd464f0875297954bb86de9da/14/stretch/Dockerfile) -- [`14.2.0-stretch-slim`, `14.2-stretch-slim`, `14-stretch-slim`, `stretch-slim`, `current-stretch-slim`, `14.2.0-slim`, `14.2-slim`, `14-slim`, `slim`, `current-slim`](https://github.com/nodejs/docker-node/blob/910f8b1c0bdeee7bd464f0875297954bb86de9da/14/stretch-slim/Dockerfile) -- [`14.2.0-buster`, `14.2-buster`, `14-buster`, `buster`, `current-buster`](https://github.com/nodejs/docker-node/blob/910f8b1c0bdeee7bd464f0875297954bb86de9da/14/buster/Dockerfile) -- [`14.2.0-buster-slim`, `14.2-buster-slim`, `14-buster-slim`, `buster-slim`, `current-buster-slim`](https://github.com/nodejs/docker-node/blob/910f8b1c0bdeee7bd464f0875297954bb86de9da/14/buster-slim/Dockerfile) -- [`14.2.0-alpine3.10`, `14.2-alpine3.10`, `14-alpine3.10`, `alpine3.10`, `current-alpine3.10`](https://github.com/nodejs/docker-node/blob/910f8b1c0bdeee7bd464f0875297954bb86de9da/14/alpine3.10/Dockerfile) -- [`14.2.0-alpine3.11`, `14.2-alpine3.11`, `14-alpine3.11`, `alpine3.11`, `current-alpine3.11`, `14.2.0-alpine`, `14.2-alpine`, `14-alpine`, `alpine`, `current-alpine`](https://github.com/nodejs/docker-node/blob/910f8b1c0bdeee7bd464f0875297954bb86de9da/14/alpine3.11/Dockerfile) -- [`13.14.0-stretch`, `13.14-stretch`, `13-stretch`, `13.14.0`, `13.14`, `13`](https://github.com/nodejs/docker-node/blob/bf9fb2d1126062e27d0b763674064bb17da4718c/13/stretch/Dockerfile) -- [`13.14.0-stretch-slim`, `13.14-stretch-slim`, `13-stretch-slim`, `13.14.0-slim`, `13.14-slim`, `13-slim`](https://github.com/nodejs/docker-node/blob/bf9fb2d1126062e27d0b763674064bb17da4718c/13/stretch-slim/Dockerfile) -- [`13.14.0-buster`, `13.14-buster`, `13-buster`](https://github.com/nodejs/docker-node/blob/bf9fb2d1126062e27d0b763674064bb17da4718c/13/buster/Dockerfile) -- [`13.14.0-buster-slim`, `13.14-buster-slim`, `13-buster-slim`](https://github.com/nodejs/docker-node/blob/bf9fb2d1126062e27d0b763674064bb17da4718c/13/buster-slim/Dockerfile) -- [`13.14.0-alpine3.10`, `13.14-alpine3.10`, `13-alpine3.10`](https://github.com/nodejs/docker-node/blob/bf9fb2d1126062e27d0b763674064bb17da4718c/13/alpine3.10/Dockerfile) -- [`13.14.0-alpine3.11`, `13.14-alpine3.11`, `13-alpine3.11`, `13.14.0-alpine`, `13.14-alpine`, `13-alpine`](https://github.com/nodejs/docker-node/blob/bf9fb2d1126062e27d0b763674064bb17da4718c/13/alpine3.11/Dockerfile) -- [`12.16.3-stretch`, `12.16-stretch`, `12-stretch`, `erbium-stretch`, `lts-stretch`, `12.16.3`, `12.16`, `12`, `erbium`, `lts`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/stretch/Dockerfile) -- [`12.16.3-stretch-slim`, `12.16-stretch-slim`, `12-stretch-slim`, `erbium-stretch-slim`, `lts-stretch-slim`, `12.16.3-slim`, `12.16-slim`, `12-slim`, `erbium-slim`, `lts-slim`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/stretch-slim/Dockerfile) -- [`12.16.3-buster`, `12.16-buster`, `12-buster`, `erbium-buster`, `lts-buster`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/buster/Dockerfile) -- [`12.16.3-buster-slim`, `12.16-buster-slim`, `12-buster-slim`, `erbium-buster-slim`, `lts-buster-slim`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/buster-slim/Dockerfile) -- [`12.16.3-alpine3.9`, `12.16-alpine3.9`, `12-alpine3.9`, `erbium-alpine3.9`, `lts-alpine3.9`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/alpine3.9/Dockerfile) -- [`12.16.3-alpine3.10`, `12.16-alpine3.10`, `12-alpine3.10`, `erbium-alpine3.10`, `lts-alpine3.10`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/alpine3.10/Dockerfile) -- [`12.16.3-alpine3.11`, `12.16-alpine3.11`, `12-alpine3.11`, `erbium-alpine3.11`, `lts-alpine3.11`, `12.16.3-alpine`, `12.16-alpine`, `12-alpine`, `erbium-alpine`, `lts-alpine`](https://github.com/nodejs/docker-node/blob/10e2c2254c41237a266192070559734f12d8dae7/12/alpine3.11/Dockerfile) -- [`10.20.1-jessie`, `10.20-jessie`, `10-jessie`, `dubnium-jessie`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/jessie/Dockerfile) -- [`10.20.1-jessie-slim`, `10.20-jessie-slim`, `10-jessie-slim`, `dubnium-jessie-slim`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/jessie-slim/Dockerfile) -- [`10.20.1-stretch`, `10.20-stretch`, `10-stretch`, `dubnium-stretch`, `10.20.1`, `10.20`, `10`, `dubnium`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/stretch/Dockerfile) -- [`10.20.1-stretch-slim`, `10.20-stretch-slim`, `10-stretch-slim`, `dubnium-stretch-slim`, `10.20.1-slim`, `10.20-slim`, `10-slim`, `dubnium-slim`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/stretch-slim/Dockerfile) -- [`10.20.1-buster`, `10.20-buster`, `10-buster`, `dubnium-buster`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/buster/Dockerfile) -- [`10.20.1-buster-slim`, `10.20-buster-slim`, `10-buster-slim`, `dubnium-buster-slim`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/buster-slim/Dockerfile) -- [`10.20.1-alpine3.9`, `10.20-alpine3.9`, `10-alpine3.9`, `dubnium-alpine3.9`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/alpine3.9/Dockerfile) -- [`10.20.1-alpine3.10`, `10.20-alpine3.10`, `10-alpine3.10`, `dubnium-alpine3.10`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/alpine3.10/Dockerfile) -- [`10.20.1-alpine3.11`, `10.20-alpine3.11`, `10-alpine3.11`, `dubnium-alpine3.11`, `10.20.1-alpine`, `10.20-alpine`, `10-alpine`, `dubnium-alpine`](https://github.com/nodejs/docker-node/blob/d071b895dd1b8da6c566f45b971825fe5b087b21/10/alpine3.11/Dockerfile) +- [`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) # Quick reference (cont.) @@ -59,14 +55,14 @@ WARNING: [https://github.com/nodejs/docker-node/issues](https://github.com/nodejs/docker-node/issues) - **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/), [`i386`](https://hub.docker.com/r/i386/node/), [`ppc64le`](https://hub.docker.com/r/ppc64le/node/), [`s390x`](https://hub.docker.com/r/s390x/node/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/node/` directory](https://github.com/docker-library/repo-info/blob/master/repos/node) ([history](https://github.com/docker-library/repo-info/commits/master/repos/node)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/node`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnode) + [official-images repo's `library/node` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnode) [official-images repo's `library/node` file](https://github.com/docker-library/official-images/blob/master/library/node) ([history](https://github.com/docker-library/official-images/commits/master/library/node)) - **Source of this description**: @@ -96,22 +92,22 @@ 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 buster, jessie, or stretch 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 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. 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. -## `node:-slim` - -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `node`. Unless you are working in an environment where *only* the `node` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. - ## `node:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). +## `node:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `node`. Unless you are working in an environment where *only* the `node` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + # License View [license information](https://github.com/nodejs/node/blob/master/LICENSE) for Node.js or [license information](https://github.com/nodejs/docker-node/blob/master/LICENSE) for the Node.js Docker project. diff --git a/notary/README.md b/notary/README.md index fb509f482aaa..41b75ac2b245 100644 --- a/notary/README.md +++ b/notary/README.md @@ -20,12 +20,12 @@ WARNING: [Docker, Inc.](https://github.com/docker/notary-official-images) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`server-0.6.1-2`, `server`](https://github.com/docker/notary-official-images/blob/278bbe63ea6bfb67974fe969c77e02049fe47ab7/notary-server/Dockerfile) -- [`signer-0.6.1-2`, `signer`](https://github.com/docker/notary-official-images/blob/278bbe63ea6bfb67974fe969c77e02049fe47ab7/notary-signer/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/notary`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnotary) + [official-images repo's `library/notary` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnotary) [official-images repo's `library/notary` file](https://github.com/docker-library/official-images/blob/master/library/notary) ([history](https://github.com/docker-library/official-images/commits/master/library/notary)) - **Source of this description**: diff --git a/nuxeo/README-short.txt b/nuxeo/README-short.txt deleted file mode 100644 index 06e488e5bff2..000000000000 --- a/nuxeo/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Nuxeo is an open source Content Management Platform that is completely customizable. diff --git a/nuxeo/README.md b/nuxeo/README.md deleted file mode 100644 index e1650f344937..000000000000 --- a/nuxeo/README.md +++ /dev/null @@ -1,252 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [Nuxeo](https://github.com/nuxeo/docker-nuxeo) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`7.10`, `7`, `LTS-2015`](https://github.com/nuxeo/docker-nuxeo/blob/f253a2398dbc39b42ca6ff84f2adeda8c1e8287e/7.10/Dockerfile) -- [`8.10`, `8`, `LTS-2016`](https://github.com/nuxeo/docker-nuxeo/blob/f253a2398dbc39b42ca6ff84f2adeda8c1e8287e/8.10/Dockerfile) -- [`9.10`, `9`, `LTS-2017`](https://github.com/nuxeo/docker-nuxeo/blob/f253a2398dbc39b42ca6ff84f2adeda8c1e8287e/9.10/Dockerfile) -- [`10.10`, `10`, `LTS-2019`, `LTS`, `FT`, `latest`](https://github.com/nuxeo/docker-nuxeo/blob/f253a2398dbc39b42ca6ff84f2adeda8c1e8287e/10.10/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/nuxeo/docker-nuxeo/issues](https://github.com/nuxeo/docker-nuxeo/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/nuxeo/) - -- **Published image artifact details**: - [repo-info repo's `repos/nuxeo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/nuxeo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/nuxeo)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/nuxeo`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fnuxeo) - [official-images repo's `library/nuxeo` file](https://github.com/docker-library/official-images/blob/master/library/nuxeo) ([history](https://github.com/docker-library/official-images/commits/master/library/nuxeo)) - -- **Source of this description**: - [docs repo's `nuxeo/` directory](https://github.com/docker-library/docs/tree/master/nuxeo) ([history](https://github.com/docker-library/docs/commits/master/nuxeo)) - -# What is Nuxeo ? - -The Nuxeo Platform is a highly customizable and extensible content management platform for building business applications. - -![logo](https://raw.githubusercontent.com/docker-library/docs/6538ea62bab8b051d0556c689c113202d48089ed/nuxeo/logo.png) - -# How to use this image - -## Start a bare nuxeo instance - -```console -$ docker run --name mynuxeo -p 8080:8080 -d nuxeo -``` - -This image includes `EXPOSE 8080` (the nuxeo port). The default Nuxeo configuration is applied which feature an embedded database (H2), and an embedded Elasticsearch instance. This setup is not suitable for production. See below to know how to setup a production ready container by specifying environment variables. - -The Nuxeo platform is accesible at http://${DOCKER_HOST}:8080/ and default User and Password are Administrator/Administrator. - -## Start a nuxeo with some additional packages - -```console -$ docker run --name mynuxeo --rm -ti -p 8080:8080 -e NUXEO_PACKAGES="nuxeo-web-ui nuxeo-dam nuxeo-drive nuxeo-showcase-content nuxeo-template-rendering nuxeo-template-rendering-samples nuxeo-spreadsheet" nuxeo -``` - -This will install the same image as above but comes with some demo Nuxeo packages to demonstrate its various usage (DAM, DM, search etc...) - -You can find additional informations on how to use this image in [Nuxeo documentation](https://doc.nuxeo.com/nxdoc/setting-up-your-nuxeo-environment/) - -## Environment Variables - -The Nuxeo image uses several environment variable that allow to specify a more specific setup. - -### `NUXEO_DB_TYPE` - -This defines the database type to use. By default it sets an H2 embedded database that is suitable for test purpose only. When specifying a DB type, other variable mays help : - -- `NUXEO_DB_HOST` : If `NUXEO_DB_TYPE` is defined, this variable is mandatory and has to point to the DB server host. -- `NUXEO_DB_NAME` : name of the database to use (`nuxeo` by default) -- `NUXEO_DB_USER` : user to connect to the database (`nuxeo` by default) -- `NUXEO_DB_PASSWORD` : the password to connect to the database (`nuxeo` by default) - -### `NUXEO_TEMPLATES` - -This variables allows to add additional [Nuxeo configuration templates](https://doc.nuxeo.com/x/0AB9) in the `nuxeo.templates` configuration variable. - -### `NUXEO_ES_HOSTS` - -This variables allows to setup an external Elasticsearch cluster. Use a comma separated list of Elasticsearch hosts with the 9300 port. Additional environment vars may be setup like : - -- `NUXEO_ES_CLUSTER_NAME` : name of the Elasticsearch cluster to join -- `NUXEO_ES_INDEX_NAME`: name of the index (`nuxeo` by default) -- `NUXEO_ES_REPLICAS` : number or replicas (`1` by default). If not 0, it means that your ES cluster must have enough node to fullfill the replicas setup. -- `NUXEO_ES_SHARDS` : number or shards (`5` by default). - -For instance : - - NUXEO_ES_HOSTS=es1:9300,es2:9300 - NUXEO_ES_CLUSTER_NAME=dockerCluster - NUXEO_ES_INDEX_NAME=nuxeo1 - NUXEO_ES_REPLICAS=0 - NUXEO_ES_SHARDS=5 - -### `NUXEO_REDIS_HOST` - -In order to use Redis, just set up this variable to the Redis host address. - -### `NUXEO_REDIS_PORT` - -If Redis is setup, you can ovewrite the default port configuration (default to 6379) - -### `NUXEO_CLID` - -Allow to setup a CLID for Nuxeo Connect registration. This parameter is in the form `part1\npart2`, so depending on the environment you may have to escape the `\` character. - -You can find additional informations the registration process in the [Nuxeo documentation](https://doc.nuxeo.com/nxdoc/setting-up-your-nuxeo-environment/) - -### `NUXEO_INSTALL_HOTFIX` - -This launch the install of latest Hotfixes. (`true` by default, but needs a `NUXEO_CLID` to be setup) - -### `NUXEO_PACKAGES` - -Allows to install [Nuxeo packages](https://doc.nuxeo.com/x/aAfF) at startup. - -### `NUXEO_URL` - -This variable sets the URL where your Nuxeo instance will be joinable. It's used for instance to refer to it when sending server's address in mails. - -### `NUXEO_DATA` - -Location of the Nuxeo data directory. (`/var/lib/nuxeo/data` by default). You will likely customize NUXEO_DATA to map it on docker volume so data like binaries stay persistent. - -### `NUXEO_LOG` - -Location of the Nuxeo log directory. (`/var/log/nuxeo` by default) - -### `NUXEO_AUTOMATION_TRACE` - -If set to "true", this will enable the [automation trace mode](https://doc.nuxeo.com/display/NXDOC/Automation+Tracing). - -### `NUXEO_DEV_MODE` - -If set to "true", this will enable the development mode that will allow [hot reload](https://doc.nuxeo.com/display/CORG/Supporting+Hot+Reload) when developing with [Nuxeo Studio](http://www.nuxeo.com/products/studio/). - -### `NUXEO_BINARY_STORE` - -Tells the location of the binary store which configure the [binary storage](https://doc.nuxeo.com/x/fYYZAQ) - -### `NUXEO_TRANSIENT_STORE` - -Tells the location of [the transient storage](http://doc.nuxeo.com/display/NXDOC/Transient+Store) - -### `NUXEO_DDL_MODE` - -Allows to setup [Database creation option](https://doc.nuxeo.com/x/hwQz#RepositoryConfiguration-DatabaseCreationOption) by fixing the `ddlMode` value. - -### `NUXEO_CUSTOM_PARAM` - -Allows to add custom parameters to `nuxeo.conf`. Multiple parameters can be splitted by a `\n`. For instance: - - NUXEO_CUSTOM_PARAM="repository.clustering.enabled=false\nrepository.clustering.delay=1000" - -# How to extend this image - -## Adding additional configuration - -If you would like to do additional setup in an image derived from this one, you can add a `/docker-entrypoint-initnuxeo.d/nuxeo.conf` file that will be appended to the end of the regular `nuxeo.conf` file. - -```dockerfile -FROM nuxeo:7.10 -COPY nuxeo.conf /docker-entrypoint-initnuxeo.d/nuxeo.conf -``` - -If you need a root account to run some installation steps in your `Dockerfile`, then you need to put those steps between two `USER` command as the image is run with the user `1000` (nuxeo). For instance: - -```dockerfile -FROM nuxeo:LTS -USER root -RUN apt-get update && apt-get install -y --no-install-recommends vim -USER 1000 -``` - -## Launching custom shell scripts - -You can add your own shell scripts in a special `/docker-entrypoint-initnuxeo.d` directory. When ending in `.sh`, they will be run on default entrypoint startup. - -## ffmpeg - -As it contains some non-free Codecs, we dont't ship a binary version of `ffmpeg` as part of this image. However, you can simply add the compilation in a derived images by adding these lines to your Dockerfile. - -```dockerfile -FROM nuxeo:7.10 - -USER root - -RUN echo "deb http://httpredir.debian.org/debian jessie non-free" >> /etc/apt/sources.list -RUN apt-get update && apt-get install -y --no-install-recommends libfaac-dev git - -WORKDIR /tmp -# Build ffmpeg -ENV BUILD_YASM true -ENV LIBFAAC true -RUN git clone https://github.com/nuxeo/ffmpeg-nuxeo.git -WORKDIR ffmpeg-nuxeo -RUN ./prepare-packages.sh \ - && ./build-yasm.sh \ - && ./build-x264.sh \ - && ./build-libvpx.sh \ - && ./build-ffmpeg.sh \ - && cd /tmp \ - && rm -Rf ffmpeg-nuxeo \ - && rm -rf /var/lib/apt/lists/* - -USER 1000 -``` - -## Using Oracle JVM - -For the same reasons as `ffmpeg` we don't ship the Oracle JVM and rely by default on OpenJDK. If you want to use the Hotspot JVM you cans add the following lines in a derived Dockerfile - -```dockerfile -RUN apt-get remove -y --purge openjdk-8-jdk \ - && add-apt-repository -y ppa:webupd8team/java && apt-get update \ - && echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections \ - && echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections \ - && apt-get install -y oracle-java8-installer \ - && rm -rf /var/lib/apt/lists/* -``` - -## Why is this images so big ? - -This image is big because it contains a lot of features. The nuxeo distribution itself is about 250M and in order to make cool things work like generating thumbnails or converting document to PDF we need some additional tools that are bundled in the image. We hope that in the future we will be able to delegate those conversions to external services that would be bundled as additional docker images. - -# License - -View [license information](http://doc.nuxeo.com/x/gIK7) 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 `nuxeo/` directory](https://github.com/docker-library/repo-info/tree/master/repos/nuxeo). - -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/nuxeo/content.md b/nuxeo/content.md deleted file mode 100644 index 9fa551b5241d..000000000000 --- a/nuxeo/content.md +++ /dev/null @@ -1,192 +0,0 @@ -# What is Nuxeo ? - -The Nuxeo Platform is a highly customizable and extensible content management platform for building business applications. - -%%LOGO%% - -# How to use this image - -## Start a bare nuxeo instance - -```console -$ docker run --name mynuxeo -p 8080:8080 -d %%IMAGE%% -``` - -This image includes `EXPOSE 8080` (the nuxeo port). The default Nuxeo configuration is applied which feature an embedded database (H2), and an embedded Elasticsearch instance. This setup is not suitable for production. See below to know how to setup a production ready container by specifying environment variables. - -The Nuxeo platform is accesible at http://${DOCKER_HOST}:8080/ and default User and Password are Administrator/Administrator. - -## Start a nuxeo with some additional packages - -```console -$ docker run --name mynuxeo --rm -ti -p 8080:8080 -e NUXEO_PACKAGES="nuxeo-web-ui nuxeo-dam nuxeo-drive nuxeo-showcase-content nuxeo-template-rendering nuxeo-template-rendering-samples nuxeo-spreadsheet" nuxeo -``` - -This will install the same image as above but comes with some demo Nuxeo packages to demonstrate its various usage (DAM, DM, search etc...) - -You can find additional informations on how to use this image in [Nuxeo documentation](https://doc.nuxeo.com/nxdoc/setting-up-your-nuxeo-environment/) - -## Environment Variables - -The Nuxeo image uses several environment variable that allow to specify a more specific setup. - -### `NUXEO_DB_TYPE` - -This defines the database type to use. By default it sets an H2 embedded database that is suitable for test purpose only. When specifying a DB type, other variable mays help : - -- `NUXEO_DB_HOST` : If `NUXEO_DB_TYPE` is defined, this variable is mandatory and has to point to the DB server host. -- `NUXEO_DB_NAME` : name of the database to use (`nuxeo` by default) -- `NUXEO_DB_USER` : user to connect to the database (`nuxeo` by default) -- `NUXEO_DB_PASSWORD` : the password to connect to the database (`nuxeo` by default) - -### `NUXEO_TEMPLATES` - -This variables allows to add additional [Nuxeo configuration templates](https://doc.nuxeo.com/x/0AB9) in the `nuxeo.templates` configuration variable. - -### `NUXEO_ES_HOSTS` - -This variables allows to setup an external Elasticsearch cluster. Use a comma separated list of Elasticsearch hosts with the 9300 port. Additional environment vars may be setup like : - -- `NUXEO_ES_CLUSTER_NAME` : name of the Elasticsearch cluster to join -- `NUXEO_ES_INDEX_NAME`: name of the index (`nuxeo` by default) -- `NUXEO_ES_REPLICAS` : number or replicas (`1` by default). If not 0, it means that your ES cluster must have enough node to fullfill the replicas setup. -- `NUXEO_ES_SHARDS` : number or shards (`5` by default). - -For instance : - - NUXEO_ES_HOSTS=es1:9300,es2:9300 - NUXEO_ES_CLUSTER_NAME=dockerCluster - NUXEO_ES_INDEX_NAME=nuxeo1 - NUXEO_ES_REPLICAS=0 - NUXEO_ES_SHARDS=5 - -### `NUXEO_REDIS_HOST` - -In order to use Redis, just set up this variable to the Redis host address. - -### `NUXEO_REDIS_PORT` - -If Redis is setup, you can ovewrite the default port configuration (default to 6379) - -### `NUXEO_CLID` - -Allow to setup a CLID for Nuxeo Connect registration. This parameter is in the form `part1\npart2`, so depending on the environment you may have to escape the `\` character. - -You can find additional informations the registration process in the [Nuxeo documentation](https://doc.nuxeo.com/nxdoc/setting-up-your-nuxeo-environment/) - -### `NUXEO_INSTALL_HOTFIX` - -This launch the install of latest Hotfixes. (`true` by default, but needs a `NUXEO_CLID` to be setup) - -### `NUXEO_PACKAGES` - -Allows to install [Nuxeo packages](https://doc.nuxeo.com/x/aAfF) at startup. - -### `NUXEO_URL` - -This variable sets the URL where your Nuxeo instance will be joinable. It's used for instance to refer to it when sending server's address in mails. - -### `NUXEO_DATA` - -Location of the Nuxeo data directory. (`/var/lib/nuxeo/data` by default). You will likely customize NUXEO_DATA to map it on docker volume so data like binaries stay persistent. - -### `NUXEO_LOG` - -Location of the Nuxeo log directory. (`/var/log/nuxeo` by default) - -### `NUXEO_AUTOMATION_TRACE` - -If set to "true", this will enable the [automation trace mode](https://doc.nuxeo.com/display/NXDOC/Automation+Tracing). - -### `NUXEO_DEV_MODE` - -If set to "true", this will enable the development mode that will allow [hot reload](https://doc.nuxeo.com/display/CORG/Supporting+Hot+Reload) when developing with [Nuxeo Studio](http://www.nuxeo.com/products/studio/). - -### `NUXEO_BINARY_STORE` - -Tells the location of the binary store which configure the [binary storage](https://doc.nuxeo.com/x/fYYZAQ) - -### `NUXEO_TRANSIENT_STORE` - -Tells the location of [the transient storage](http://doc.nuxeo.com/display/NXDOC/Transient+Store) - -### `NUXEO_DDL_MODE` - -Allows to setup [Database creation option](https://doc.nuxeo.com/x/hwQz#RepositoryConfiguration-DatabaseCreationOption) by fixing the `ddlMode` value. - -### `NUXEO_CUSTOM_PARAM` - -Allows to add custom parameters to `nuxeo.conf`. Multiple parameters can be splitted by a `\n`. For instance: - - NUXEO_CUSTOM_PARAM="repository.clustering.enabled=false\nrepository.clustering.delay=1000" - -# How to extend this image - -## Adding additional configuration - -If you would like to do additional setup in an image derived from this one, you can add a `/docker-entrypoint-initnuxeo.d/nuxeo.conf` file that will be appended to the end of the regular `nuxeo.conf` file. - -```dockerfile -FROM %%IMAGE%%:7.10 -COPY nuxeo.conf /docker-entrypoint-initnuxeo.d/nuxeo.conf -``` - -If you need a root account to run some installation steps in your `Dockerfile`, then you need to put those steps between two `USER` command as the image is run with the user `1000` (nuxeo). For instance: - -```dockerfile -FROM %%IMAGE%%:LTS -USER root -RUN apt-get update && apt-get install -y --no-install-recommends vim -USER 1000 -``` - -## Launching custom shell scripts - -You can add your own shell scripts in a special `/docker-entrypoint-initnuxeo.d` directory. When ending in `.sh`, they will be run on default entrypoint startup. - -## ffmpeg - -As it contains some non-free Codecs, we dont't ship a binary version of `ffmpeg` as part of this image. However, you can simply add the compilation in a derived images by adding these lines to your Dockerfile. - -```dockerfile -FROM %%IMAGE%%:7.10 - -USER root - -RUN echo "deb http://httpredir.debian.org/debian jessie non-free" >> /etc/apt/sources.list -RUN apt-get update && apt-get install -y --no-install-recommends libfaac-dev git - -WORKDIR /tmp -# Build ffmpeg -ENV BUILD_YASM true -ENV LIBFAAC true -RUN git clone https://github.com/nuxeo/ffmpeg-nuxeo.git -WORKDIR ffmpeg-nuxeo -RUN ./prepare-packages.sh \ - && ./build-yasm.sh \ - && ./build-x264.sh \ - && ./build-libvpx.sh \ - && ./build-ffmpeg.sh \ - && cd /tmp \ - && rm -Rf ffmpeg-nuxeo \ - && rm -rf /var/lib/apt/lists/* - -USER 1000 -``` - -## Using Oracle JVM - -For the same reasons as `ffmpeg` we don't ship the Oracle JVM and rely by default on OpenJDK. If you want to use the Hotspot JVM you cans add the following lines in a derived Dockerfile - -```dockerfile -RUN apt-get remove -y --purge openjdk-8-jdk \ - && add-apt-repository -y ppa:webupd8team/java && apt-get update \ - && echo "debconf shared/accepted-oracle-license-v1-1 select true" | debconf-set-selections \ - && echo "debconf shared/accepted-oracle-license-v1-1 seen true" | debconf-set-selections \ - && apt-get install -y oracle-java8-installer \ - && rm -rf /var/lib/apt/lists/* -``` - -## Why is this images so big ? - -This image is big because it contains a lot of features. The nuxeo distribution itself is about 250M and in order to make cool things work like generating thumbnails or converting document to PDF we need some additional tools that are bundled in the image. We hope that in the future we will be able to delegate those conversions to external services that would be bundled as additional docker images. diff --git a/nuxeo/github-repo b/nuxeo/github-repo deleted file mode 100644 index 6a3dabb9b19b..000000000000 --- a/nuxeo/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/nuxeo/docker-nuxeo diff --git a/nuxeo/license.md b/nuxeo/license.md deleted file mode 100644 index 2a83ef4f31db..000000000000 --- a/nuxeo/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](http://doc.nuxeo.com/x/gIK7) for the software contained in this image. diff --git a/nuxeo/logo.png b/nuxeo/logo.png deleted file mode 100644 index 2cb2146c3181..000000000000 Binary files a/nuxeo/logo.png and /dev/null differ diff --git a/nuxeo/maintainer.md b/nuxeo/maintainer.md deleted file mode 100644 index 0ad82eb66ba7..000000000000 --- a/nuxeo/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Nuxeo](%%GITHUB-REPO%%) diff --git a/odoo/README.md b/odoo/README.md index 5bc25b79f4ea..3927f30bb58a 100644 --- a/odoo/README.md +++ b/odoo/README.md @@ -20,13 +20,13 @@ WARNING: [Odoo](https://github.com/odoo/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`13.0`, `13`, `latest`](https://github.com/odoo/docker/blob/f116a674ca62595d0fbf1ded206ec2e4d962ebf0/13.0/Dockerfile) -- [`12.0`, `12`](https://github.com/odoo/docker/blob/f116a674ca62595d0fbf1ded206ec2e4d962ebf0/12.0/Dockerfile) -- [`11.0`, `11`](https://github.com/odoo/docker/blob/f116a674ca62595d0fbf1ded206ec2e4d962ebf0/11.0/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/odoo`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fodoo) + [official-images repo's `library/odoo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fodoo) [official-images repo's `library/odoo` file](https://github.com/docker-library/official-images/blob/master/library/odoo) ([history](https://github.com/docker-library/official-images/commits/master/library/odoo)) - **Source of this description**: @@ -49,7 +49,7 @@ WARNING: # What is Odoo? -Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the AGPL license. This suite of applications covers all business needs, from Website/Ecommerce down to manufacturing, inventory and accounting, all seamlessly integrated. It is the first time ever a software editor managed to reach such a functional coverage. Odoo is the most installed business software in the world. Odoo is used by 2.000.000 users worldwide ranging from very small companies (1 user) to very large ones (300 000 users). +Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the LGPL license. This suite of applications covers all business needs, from Website/Ecommerce down to manufacturing, inventory and accounting, all seamlessly integrated. It is the first time ever a software editor managed to reach such a functional coverage. Odoo is the most installed business software in the world. Odoo is used by 2.000.000 users worldwide ranging from very small companies (1 user) to very large ones (300 000 users). > [www.odoo.com](https://www.odoo.com) @@ -62,7 +62,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:10 +$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13 ``` ## Start an Odoo instance @@ -80,6 +80,24 @@ $ docker stop odoo $ docker start -a odoo ``` +## Use named volumes to preserve data + +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 +``` + +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. + +The path `/var/lib/odoo` used as the mount point of the volume must match the odoo `data_dir` in the config file or as CLI parameters. + +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 +``` + ## Stop and restart a PostgreSQL server When a PostgreSQL server is restarted, the Odoo instances linked to that server must be restarted as well because the server address has changed and the link is thus broken. @@ -94,7 +112,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/12.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/14.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 @@ -133,16 +151,16 @@ Tweak these environment variables to easily connect to a postgres server: The simplest `docker-compose.yml` file would be: ```yml -version: '2' +version: '3.1' services: web: - image: odoo:12.0 + image: odoo:14.0 depends_on: - db ports: - "8069:8069" db: - image: postgres:10 + image: postgres:13 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo @@ -152,10 +170,10 @@ services: If the default postgres credentials does not suit you, tweak the environment variables: ```yml -version: '2' +version: '3.1' services: web: - image: odoo:12.0 + image: odoo:14.0 depends_on: - mydb ports: @@ -165,20 +183,25 @@ services: - USER=odoo - PASSWORD=myodoo mydb: - image: postgres:10 + image: postgres:13 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=myodoo - POSTGRES_USER=odoo ``` -Here's a last example showing you how to mount custom addons, how to use a custom configuration file and how to use volumes for the Odoo and postgres data dir: +Here's a last example showing you how to + +- mount custom addons located in `./addons` +- use a custom configuration file located in `.config/odoo.conf` +- use named volumes for the Odoo and postgres data dir +- use a `secrets` file named `odoo_pg_pass` that contains the postgreql password shared by both services ```yml -version: '2' +version: '3.1' services: web: - image: odoo:12.0 + image: odoo:14.0 depends_on: - db ports: @@ -187,18 +210,28 @@ services: - odoo-web-data:/var/lib/odoo - ./config:/etc/odoo - ./addons:/mnt/extra-addons + environment: + - PASSWORD_FILE=/run/secrets/postgresql_password + secrets: + - postgresql_password db: - image: postgres:10 + image: postgres:13 environment: - POSTGRES_DB=postgres - - POSTGRES_PASSWORD=odoo + - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password - POSTGRES_USER=odoo - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata + secrets: + - postgresql_password volumes: odoo-web-data: odoo-db-data: + +secrets: + postgresql_password: + 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: @@ -213,7 +246,7 @@ Odoo images are updated on a regular basis to make them use recent releases (a n 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 12.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 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 ```console $ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t odoo @@ -223,7 +256,7 @@ You can also simply prevent Odoo from using the filestore by setting the system # License -View [license information](https://raw.githubusercontent.com/odoo/odoo/12.0/LICENSE) for the software contained in this image. +View [license information](https://raw.githubusercontent.com/odoo/odoo/14.0/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 22a8a6ee72b4..f9f054b55258 100644 --- a/odoo/content.md +++ b/odoo/content.md @@ -1,6 +1,6 @@ # What is Odoo? -Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the AGPL license. This suite of applications covers all business needs, from Website/Ecommerce down to manufacturing, inventory and accounting, all seamlessly integrated. It is the first time ever a software editor managed to reach such a functional coverage. Odoo is the most installed business software in the world. Odoo is used by 2.000.000 users worldwide ranging from very small companies (1 user) to very large ones (300 000 users). +Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the LGPL license. This suite of applications covers all business needs, from Website/Ecommerce down to manufacturing, inventory and accounting, all seamlessly integrated. It is the first time ever a software editor managed to reach such a functional coverage. Odoo is the most installed business software in the world. Odoo is used by 2.000.000 users worldwide ranging from very small companies (1 user) to very large ones (300 000 users). > [www.odoo.com](https://www.odoo.com) @@ -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:10 +$ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:13 ``` ## Start an Odoo instance @@ -31,6 +31,24 @@ $ docker stop odoo $ docker start -a odoo ``` +## Use named volumes to preserve data + +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 +``` + +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. + +The path `/var/lib/odoo` used as the mount point of the volume must match the odoo `data_dir` in the config file or as CLI parameters. + +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 +``` + ## Stop and restart a PostgreSQL server When a PostgreSQL server is restarted, the Odoo instances linked to that server must be restarted as well because the server address has changed and the link is thus broken. @@ -45,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/12.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/14.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 @@ -84,16 +102,16 @@ Tweak these environment variables to easily connect to a postgres server: The simplest `docker-compose.yml` file would be: ```yml -version: '2' +version: '3.1' services: web: - image: %%IMAGE%%:12.0 + image: %%IMAGE%%:14.0 depends_on: - db ports: - "8069:8069" db: - image: postgres:10 + image: postgres:13 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=odoo @@ -103,10 +121,10 @@ services: If the default postgres credentials does not suit you, tweak the environment variables: ```yml -version: '2' +version: '3.1' services: web: - image: %%IMAGE%%:12.0 + image: %%IMAGE%%:14.0 depends_on: - mydb ports: @@ -116,20 +134,25 @@ services: - USER=odoo - PASSWORD=myodoo mydb: - image: postgres:10 + image: postgres:13 environment: - POSTGRES_DB=postgres - POSTGRES_PASSWORD=myodoo - POSTGRES_USER=odoo ``` -Here's a last example showing you how to mount custom addons, how to use a custom configuration file and how to use volumes for the Odoo and postgres data dir: +Here's a last example showing you how to + +- mount custom addons located in `./addons` +- use a custom configuration file located in `.config/odoo.conf` +- use named volumes for the Odoo and postgres data dir +- use a `secrets` file named `odoo_pg_pass` that contains the postgreql password shared by both services ```yml -version: '2' +version: '3.1' services: web: - image: %%IMAGE%%:12.0 + image: %%IMAGE%%:14.0 depends_on: - db ports: @@ -138,18 +161,28 @@ services: - odoo-web-data:/var/lib/odoo - ./config:/etc/odoo - ./addons:/mnt/extra-addons + environment: + - PASSWORD_FILE=/run/secrets/postgresql_password + secrets: + - postgresql_password db: - image: postgres:10 + image: postgres:13 environment: - POSTGRES_DB=postgres - - POSTGRES_PASSWORD=odoo + - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password - POSTGRES_USER=odoo - PGDATA=/var/lib/postgresql/data/pgdata volumes: - odoo-db-data:/var/lib/postgresql/data/pgdata + secrets: + - postgresql_password volumes: odoo-web-data: odoo-db-data: + +secrets: + postgresql_password: + 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: @@ -164,7 +197,7 @@ Odoo images are updated on a regular basis to make them use recent releases (a n 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 12.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 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 ```console $ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t %%IMAGE%% diff --git a/odoo/license.md b/odoo/license.md index 65e824098d64..31c83177006d 100644 --- a/odoo/license.md +++ b/odoo/license.md @@ -1 +1 @@ -View [license information](https://raw.githubusercontent.com/odoo/odoo/12.0/LICENSE) for the software contained in this image. +View [license information](https://raw.githubusercontent.com/odoo/odoo/14.0/LICENSE) for the software contained in this image. diff --git a/open-liberty/README-short.txt b/open-liberty/README-short.txt index ca1d1146f843..46fab7571f4c 100644 --- a/open-liberty/README-short.txt +++ b/open-liberty/README-short.txt @@ -1 +1 @@ -Official Open Liberty image. +Open Liberty multi-architecture images based on Ubuntu 18.04 diff --git a/open-liberty/README.md b/open-liberty/README.md index 5ac028cb8c42..05a65280c44d 100644 --- a/open-liberty/README.md +++ b/open-liberty/README.md @@ -24,14 +24,33 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`kernel`, `kernel-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/latest/kernel/Dockerfile.ubuntu.adoptopenjdk8) -- [`full`, `full-java8-openj9`, `latest`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/latest/full/Dockerfile.ubuntu.adoptopenjdk8) -- [`20.0.0.5-kernel-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/20.0.0.5/kernel/Dockerfile.ubuntu.adoptopenjdk8) -- [`20.0.0.5-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/20.0.0.5/full/Dockerfile.ubuntu.adoptopenjdk8) -- [`20.0.0.3-kernel-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/20.0.0.3/kernel/Dockerfile.ubuntu.adoptopenjdk8) -- [`20.0.0.3-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/20.0.0.3/full/Dockerfile.ubuntu.adoptopenjdk8) -- [`19.0.0.12-kernel-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/19.0.0.12/kernel/Dockerfile.ubuntu.adoptopenjdk8) -- [`19.0.0.12-full-java8-openj9`](https://github.com/OpenLiberty/ci.docker/blob/17276f4286810d86d3a067c34dd60a06cfdb2c35/releases/19.0.0.12/full/Dockerfile.ubuntu.adoptopenjdk8) +- [`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) # Quick reference (cont.) @@ -46,7 +65,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/open-liberty`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fopen-liberty) + [official-images repo's `library/open-liberty` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fopen-liberty) [official-images repo's `library/open-liberty` file](https://github.com/docker-library/official-images/blob/master/library/open-liberty) ([history](https://github.com/docker-library/official-images/commits/master/library/open-liberty)) - **Source of this description**: @@ -54,9 +73,9 @@ WARNING: # Overview -The images in this repository contain Open Liberty. For more information about Open Liberty, see the [Open Liberty Website](https://openliberty.io/) site. +All of the images in this repository use Ubuntu as the Operating System. For variants that use the Universal Base Image, please see [this repository](https://hub.docker.com/r/openliberty/open-liberty/). -This repository contains OpenLiberty based on top of OpenJDK 8 Eclipse OpenJ9 with Ubuntu images only. See [here](https://hub.docker.com/r/openliberty/open-liberty) for Open Liberty based on Red Hat's Universal Base Image, which includes additional java options. +For more information on these images please see our [GitHub repository](https://github.com/OpenLiberty/ci.docker#container-images). # Image User @@ -103,12 +122,20 @@ Please note that this pattern will duplicate the docker layers for those artifac There are multiple tags available in this repository. -The `kernel` image contains just the Liberty kernel and no additional runtime features. This image is the recommended basis for custom built images, so that they can contain only the features required for a specific application. For example, the following Dockerfile starts with this image, copies in the `server.xml` that lists the features required by the application, and then uses the `configure.sh` script to download those features from the online repository. +The `kernel-slim` image contains just the Liberty kernel and no additional runtime features. This image is the recommended basis for custom built images, so that they can contain only the features required for a specific application. For example, the following Dockerfile starts with this image, copies in the `server.xml` that lists the features required by the application, and then uses the `features.sh` script to download those features from the online repository. ```dockerfile -FROM open-liberty:kernel -COPY --chown=1001:0 Sample1.war /config/dropins/ +FROM open-liberty:kernel-slim + +# Add server configuration COPY --chown=1001:0 server.xml /config/ +# This script will add the requested XML snippets to enable Liberty features and grow image to be fit-for-purpose using featureUtility. +# Only available in 'kernel-slim'. The 'full' tag already includes all features for convenience. +RUN features.sh + +# Add the application +COPY --chown=1001:0 Sample1.war /config/dropins/ +# This script will add the requested server configurations, apply any interim fixes and populate caches to optimize runtime. RUN configure.sh ``` @@ -188,13 +215,15 @@ To elaborate these capabilities this section assumes the standalone Spring Boot FROM open-liberty:kernel as staging COPY --chown=1001:0 hellospringboot.jar /staging/myFatApp.jar COPY --chown=1001:0 server.xml /config/ - RUN configure.sh && springBootUtility thin \ + RUN springBootUtility thin \ --sourceAppPath=/staging/myFatApp.jar \ --targetThinAppPath=/staging/myThinApp.jar \ --targetLibCachePath=/staging/lib.index.cache FROM open-liberty:kernel + COPY --chown=1001:0 server.xml /config COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar + RUN configure.sh ``` For Spring Boot applications packaged with library dependencies that rarely change across continuous application updates, you can use the capabilities mentioned above to to share library caches across containers and to create even more efficient docker layers that leverage the docker build cache. @@ -258,6 +287,18 @@ WebSphere Liberty is a commercial distribution of Open Liberty. There is an offi - Use the `/output` folder for accessing the server output. - When adding your own SSL configuration use the `/config/configDropins/defaults/keystore.xml`. +# Image Variants + +The `open-liberty` images come in many flavors, each designed for a specific use case. + +## `open-liberty:` + +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. + +## `open-liberty:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `open-liberty`. Unless you are working in an environment where *only* the `open-liberty` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + # License View [license information](https://github.com/OpenLiberty/open-liberty/blob/master/LICENSE) for the software contained in this image. diff --git a/open-liberty/content.md b/open-liberty/content.md index 8ebff9d2c884..94e23ab627f7 100644 --- a/open-liberty/content.md +++ b/open-liberty/content.md @@ -1,8 +1,8 @@ # Overview -The images in this repository contain Open Liberty. For more information about Open Liberty, see the [Open Liberty Website](https://openliberty.io/) site. +All of the images in this repository use Ubuntu as the Operating System. For variants that use the Universal Base Image, please see [this repository](https://hub.docker.com/r/openliberty/open-liberty/). -This repository contains OpenLiberty based on top of OpenJDK 8 Eclipse OpenJ9 with Ubuntu images only. See [here](https://hub.docker.com/r/openliberty/open-liberty) for Open Liberty based on Red Hat's Universal Base Image, which includes additional java options. +For more information on these images please see our [GitHub repository](https://github.com/OpenLiberty/ci.docker#container-images). # Image User @@ -49,12 +49,20 @@ Please note that this pattern will duplicate the docker layers for those artifac There are multiple tags available in this repository. -The `kernel` image contains just the Liberty kernel and no additional runtime features. This image is the recommended basis for custom built images, so that they can contain only the features required for a specific application. For example, the following Dockerfile starts with this image, copies in the `server.xml` that lists the features required by the application, and then uses the `configure.sh` script to download those features from the online repository. +The `kernel-slim` image contains just the Liberty kernel and no additional runtime features. This image is the recommended basis for custom built images, so that they can contain only the features required for a specific application. For example, the following Dockerfile starts with this image, copies in the `server.xml` that lists the features required by the application, and then uses the `features.sh` script to download those features from the online repository. ```dockerfile -FROM %%IMAGE%%:kernel -COPY --chown=1001:0 Sample1.war /config/dropins/ +FROM %%IMAGE%%:kernel-slim + +# Add server configuration COPY --chown=1001:0 server.xml /config/ +# This script will add the requested XML snippets to enable Liberty features and grow image to be fit-for-purpose using featureUtility. +# Only available in 'kernel-slim'. The 'full' tag already includes all features for convenience. +RUN features.sh + +# Add the application +COPY --chown=1001:0 Sample1.war /config/dropins/ +# This script will add the requested server configurations, apply any interim fixes and populate caches to optimize runtime. RUN configure.sh ``` @@ -134,13 +142,15 @@ To elaborate these capabilities this section assumes the standalone Spring Boot FROM %%IMAGE%%:kernel as staging COPY --chown=1001:0 hellospringboot.jar /staging/myFatApp.jar COPY --chown=1001:0 server.xml /config/ - RUN configure.sh && springBootUtility thin \ + RUN springBootUtility thin \ --sourceAppPath=/staging/myFatApp.jar \ --targetThinAppPath=/staging/myThinApp.jar \ --targetLibCachePath=/staging/lib.index.cache FROM %%IMAGE%%:kernel + COPY --chown=1001:0 server.xml /config COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar + RUN configure.sh ``` For Spring Boot applications packaged with library dependencies that rarely change across continuous application updates, you can use the capabilities mentioned above to to share library caches across containers and to create even more efficient docker layers that leverage the docker build cache. diff --git a/openjdk/README-short.txt b/openjdk/README-short.txt index fd22f6f13430..8bd9f5d5d5ae 100644 --- a/openjdk/README-short.txt +++ b/openjdk/README-short.txt @@ -1 +1 @@ -OpenJDK is an open-source implementation of the Java Platform, Standard Edition +Pre-release / non-production builds of OpenJDK diff --git a/openjdk/README.md b/openjdk/README.md index 0ca01dbe850f..877c15110afb 100644 --- a/openjdk/README.md +++ b/openjdk/README.md @@ -14,13 +14,27 @@ WARNING: --> +# **DEPRECATION NOTICE** + +This image is officially deprecated and all users are recommended to find and use suitable replacements ASAP. Some examples of other Official Image alternatives (listed in alphabetical order with no intentional or implied preference): + +- [`amazoncorretto`](https://hub.docker.com/_/amazoncorretto) +- [`eclipse-temurin`](https://hub.docker.com/_/eclipse-temurin) +- [`ibm-semeru-runtimes`](https://hub.docker.com/_/ibm-semeru-runtimes) +- [`ibmjava`](https://hub.docker.com/_/ibmjava) +- [`sapmachine`](https://hub.docker.com/_/sapmachine) + +See [docker-library/openjdk#505](https://github.com/docker-library/openjdk/issues/505) for more information. + +The only tags which will continue to receive updates beyond July 2022 will be Early Access builds (which are sourced from [jdk.java.net](https://jdk.java.net/)), as those are not published/supported by any of the above projects. + # Quick reference - **Maintained by**: [the Docker Community](https://github.com/docker-library/openjdk) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,96 +42,63 @@ WARNING: ## Simple Tags -- [`15-ea-23-jdk-oraclelinux7`, `15-ea-23-oraclelinux7`, `15-ea-jdk-oraclelinux7`, `15-ea-oraclelinux7`, `15-jdk-oraclelinux7`, `15-oraclelinux7`, `15-ea-23-jdk-oracle`, `15-ea-23-oracle`, `15-ea-jdk-oracle`, `15-ea-oracle`, `15-jdk-oracle`, `15-oracle`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/oracle/Dockerfile) -- [`15-ea-23-jdk-buster`, `15-ea-23-buster`, `15-ea-jdk-buster`, `15-ea-buster`, `15-jdk-buster`, `15-buster`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/Dockerfile) -- [`15-ea-23-jdk-slim-buster`, `15-ea-23-slim-buster`, `15-ea-jdk-slim-buster`, `15-ea-slim-buster`, `15-jdk-slim-buster`, `15-slim-buster`, `15-ea-23-jdk-slim`, `15-ea-23-slim`, `15-ea-jdk-slim`, `15-ea-slim`, `15-jdk-slim`, `15-slim`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/slim/Dockerfile) -- [`15-ea-10-jdk-alpine3.11`, `15-ea-10-alpine3.11`, `15-ea-jdk-alpine3.11`, `15-ea-alpine3.11`, `15-jdk-alpine3.11`, `15-alpine3.11`, `15-ea-10-jdk-alpine`, `15-ea-10-alpine`, `15-ea-jdk-alpine`, `15-ea-alpine`, `15-jdk-alpine`, `15-alpine`](https://github.com/docker-library/openjdk/blob/ee26e3735002dfb83551faf0f3b73822addc4799/15/jdk/alpine/Dockerfile) -- [`15-ea-23-jdk-windowsservercore-1809`, `15-ea-23-windowsservercore-1809`, `15-ea-jdk-windowsservercore-1809`, `15-ea-windowsservercore-1809`, `15-jdk-windowsservercore-1809`, `15-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/windowsservercore-1809/Dockerfile) -- [`15-ea-23-jdk-windowsservercore-ltsc2016`, `15-ea-23-windowsservercore-ltsc2016`, `15-ea-jdk-windowsservercore-ltsc2016`, `15-ea-windowsservercore-ltsc2016`, `15-jdk-windowsservercore-ltsc2016`, `15-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- [`15-ea-23-jdk-nanoserver-1809`, `15-ea-23-nanoserver-1809`, `15-ea-jdk-nanoserver-1809`, `15-ea-nanoserver-1809`, `15-jdk-nanoserver-1809`, `15-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/nanoserver-1809/Dockerfile) -- [`14.0.1-jdk-oraclelinux7`, `14.0.1-oraclelinux7`, `14.0-jdk-oraclelinux7`, `14.0-oraclelinux7`, `14-jdk-oraclelinux7`, `14-oraclelinux7`, `jdk-oraclelinux7`, `oraclelinux7`, `14.0.1-jdk-oracle`, `14.0.1-oracle`, `14.0-jdk-oracle`, `14.0-oracle`, `14-jdk-oracle`, `14-oracle`, `jdk-oracle`, `oracle`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/oracle/Dockerfile) -- [`14.0.1-jdk-buster`, `14.0.1-buster`, `14.0-jdk-buster`, `14.0-buster`, `14-jdk-buster`, `14-buster`, `jdk-buster`, `buster`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/Dockerfile) -- [`14.0.1-jdk-slim-buster`, `14.0.1-slim-buster`, `14.0-jdk-slim-buster`, `14.0-slim-buster`, `14-jdk-slim-buster`, `14-slim-buster`, `jdk-slim-buster`, `slim-buster`, `14.0.1-jdk-slim`, `14.0.1-slim`, `14.0-jdk-slim`, `14.0-slim`, `14-jdk-slim`, `14-slim`, `jdk-slim`, `slim`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/slim/Dockerfile) -- [`14.0.1-jdk-windowsservercore-1809`, `14.0.1-windowsservercore-1809`, `14.0-jdk-windowsservercore-1809`, `14.0-windowsservercore-1809`, `14-jdk-windowsservercore-1809`, `14-windowsservercore-1809`, `jdk-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/windowsservercore-1809/Dockerfile) -- [`14.0.1-jdk-windowsservercore-ltsc2016`, `14.0.1-windowsservercore-ltsc2016`, `14.0-jdk-windowsservercore-ltsc2016`, `14.0-windowsservercore-ltsc2016`, `14-jdk-windowsservercore-ltsc2016`, `14-windowsservercore-ltsc2016`, `jdk-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- [`14.0.1-jdk-nanoserver-1809`, `14.0.1-nanoserver-1809`, `14.0-jdk-nanoserver-1809`, `14.0-nanoserver-1809`, `14-jdk-nanoserver-1809`, `14-nanoserver-1809`, `jdk-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/nanoserver-1809/Dockerfile) -- [`11.0.7-jdk-buster`, `11.0.7-buster`, `11.0-jdk-buster`, `11.0-buster`, `11-jdk-buster`, `11-buster`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/Dockerfile) -- [`11.0.7-jdk-slim-buster`, `11.0.7-slim-buster`, `11.0-jdk-slim-buster`, `11.0-slim-buster`, `11-jdk-slim-buster`, `11-slim-buster`, `11.0.7-jdk-slim`, `11.0.7-slim`, `11.0-jdk-slim`, `11.0-slim`, `11-jdk-slim`, `11-slim`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/slim/Dockerfile) -- [`11.0.7-jdk-windowsservercore-1809`, `11.0.7-windowsservercore-1809`, `11.0-jdk-windowsservercore-1809`, `11.0-windowsservercore-1809`, `11-jdk-windowsservercore-1809`, `11-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/windows/windowsservercore-1809/Dockerfile) -- [`11.0.7-jdk-windowsservercore-ltsc2016`, `11.0.7-windowsservercore-ltsc2016`, `11.0-jdk-windowsservercore-ltsc2016`, `11.0-windowsservercore-ltsc2016`, `11-jdk-windowsservercore-ltsc2016`, `11-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- [`11.0.7-jdk-nanoserver-1809`, `11.0.7-nanoserver-1809`, `11.0-jdk-nanoserver-1809`, `11.0-nanoserver-1809`, `11-jdk-nanoserver-1809`, `11-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/11/jdk/windows/nanoserver-1809/Dockerfile) -- [`11.0.7-jre-buster`, `11.0-jre-buster`, `11-jre-buster`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/Dockerfile) -- [`11.0.7-jre-slim-buster`, `11.0-jre-slim-buster`, `11-jre-slim-buster`, `11.0.7-jre-slim`, `11.0-jre-slim`, `11-jre-slim`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/slim/Dockerfile) -- [`11.0.7-jre-windowsservercore-1809`, `11.0-jre-windowsservercore-1809`, `11-jre-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/windows/windowsservercore-1809/Dockerfile) -- [`11.0.7-jre-windowsservercore-ltsc2016`, `11.0-jre-windowsservercore-ltsc2016`, `11-jre-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/windows/windowsservercore-ltsc2016/Dockerfile) -- [`11.0.7-jre-nanoserver-1809`, `11.0-jre-nanoserver-1809`, `11-jre-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/11/jre/windows/nanoserver-1809/Dockerfile) -- [`8u252-jdk-buster`, `8u252-buster`, `8-jdk-buster`, `8-buster`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/Dockerfile) -- [`8u252-jdk-slim-buster`, `8u252-slim-buster`, `8-jdk-slim-buster`, `8-slim-buster`, `8u252-jdk-slim`, `8u252-slim`, `8-jdk-slim`, `8-slim`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/slim/Dockerfile) -- [`8u252-jdk-windowsservercore-1809`, `8u252-windowsservercore-1809`, `8-jdk-windowsservercore-1809`, `8-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/windows/windowsservercore-1809/Dockerfile) -- [`8u252-jdk-windowsservercore-ltsc2016`, `8u252-windowsservercore-ltsc2016`, `8-jdk-windowsservercore-ltsc2016`, `8-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- [`8u252-jdk-nanoserver-1809`, `8u252-nanoserver-1809`, `8-jdk-nanoserver-1809`, `8-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/8/jdk/windows/nanoserver-1809/Dockerfile) -- [`8u252-jre-buster`, `8-jre-buster`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/Dockerfile) -- [`8u252-jre-slim-buster`, `8-jre-slim-buster`, `8u252-jre-slim`, `8-jre-slim`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/slim/Dockerfile) -- [`8u252-jre-windowsservercore-1809`, `8-jre-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/windows/windowsservercore-1809/Dockerfile) -- [`8u252-jre-windowsservercore-ltsc2016`, `8-jre-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/windows/windowsservercore-ltsc2016/Dockerfile) -- [`8u252-jre-nanoserver-1809`, `8-jre-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/8/jre/windows/nanoserver-1809/Dockerfile) +- [`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) ## Shared Tags -- `15-ea-23-jdk`, `15-ea-23`, `15-ea-jdk`, `15-ea`, `15-jdk`, `15`: - - [`15-ea-23-jdk-oraclelinux7`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/oracle/Dockerfile) - - [`15-ea-23-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/windowsservercore-1809/Dockerfile) - - [`15-ea-23-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `15-ea-23-jdk-windowsservercore`, `15-ea-23-windowsservercore`, `15-ea-jdk-windowsservercore`, `15-ea-windowsservercore`, `15-jdk-windowsservercore`, `15-windowsservercore`: - - [`15-ea-23-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/windowsservercore-1809/Dockerfile) - - [`15-ea-23-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `15-ea-23-jdk-nanoserver`, `15-ea-23-nanoserver`, `15-ea-jdk-nanoserver`, `15-ea-nanoserver`, `15-jdk-nanoserver`, `15-nanoserver`: - - [`15-ea-23-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/0a152d425165c851fbfc5b456191c4aeab9fc049/15/jdk/windows/nanoserver-1809/Dockerfile) -- `14.0.1-jdk`, `14.0.1`, `14.0-jdk`, `14.0`, `14-jdk`, `14`, `jdk`, `latest`: - - [`14.0.1-jdk-oraclelinux7`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/oracle/Dockerfile) - - [`14.0.1-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/windowsservercore-1809/Dockerfile) - - [`14.0.1-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `14.0.1-jdk-windowsservercore`, `14.0.1-windowsservercore`, `14.0-jdk-windowsservercore`, `14.0-windowsservercore`, `14-jdk-windowsservercore`, `14-windowsservercore`, `jdk-windowsservercore`, `windowsservercore`: - - [`14.0.1-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/windowsservercore-1809/Dockerfile) - - [`14.0.1-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `14.0.1-jdk-nanoserver`, `14.0.1-nanoserver`, `14.0-jdk-nanoserver`, `14.0-nanoserver`, `14-jdk-nanoserver`, `14-nanoserver`, `jdk-nanoserver`, `nanoserver`: - - [`14.0.1-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/cd0e316abc515747ef6c9edc8a40914b50163ad2/14/jdk/windows/nanoserver-1809/Dockerfile) -- `11.0.7-jdk`, `11.0.7`, `11.0-jdk`, `11.0`, `11-jdk`, `11`: - - [`11.0.7-jdk-buster`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/Dockerfile) - - [`11.0.7-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/windows/windowsservercore-1809/Dockerfile) - - [`11.0.7-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `11.0.7-jdk-windowsservercore`, `11.0.7-windowsservercore`, `11.0-jdk-windowsservercore`, `11.0-windowsservercore`, `11-jdk-windowsservercore`, `11-windowsservercore`: - - [`11.0.7-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/windows/windowsservercore-1809/Dockerfile) - - [`11.0.7-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `11.0.7-jdk-nanoserver`, `11.0.7-nanoserver`, `11.0-jdk-nanoserver`, `11.0-nanoserver`, `11-jdk-nanoserver`, `11-nanoserver`: - - [`11.0.7-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/11/jdk/windows/nanoserver-1809/Dockerfile) -- `11.0.7-jre`, `11.0-jre`, `11-jre`: - - [`11.0.7-jre-buster`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/Dockerfile) - - [`11.0.7-jre-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/windows/windowsservercore-1809/Dockerfile) - - [`11.0.7-jre-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/windows/windowsservercore-ltsc2016/Dockerfile) -- `11.0.7-jre-windowsservercore`, `11.0-jre-windowsservercore`, `11-jre-windowsservercore`: - - [`11.0.7-jre-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/windows/windowsservercore-1809/Dockerfile) - - [`11.0.7-jre-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/bce2fa373dc270cccf539a8e31b5f2a432d23738/11/jre/windows/windowsservercore-ltsc2016/Dockerfile) -- `11.0.7-jre-nanoserver`, `11.0-jre-nanoserver`, `11-jre-nanoserver`: - - [`11.0.7-jre-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/11/jre/windows/nanoserver-1809/Dockerfile) -- `8u252-jdk`, `8u252`, `8-jdk`, `8`: - - [`8u252-jdk-buster`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/Dockerfile) - - [`8u252-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/windows/windowsservercore-1809/Dockerfile) - - [`8u252-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `8u252-jdk-windowsservercore`, `8u252-windowsservercore`, `8-jdk-windowsservercore`, `8-windowsservercore`: - - [`8u252-jdk-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/windows/windowsservercore-1809/Dockerfile) - - [`8u252-jdk-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jdk/windows/windowsservercore-ltsc2016/Dockerfile) -- `8u252-jdk-nanoserver`, `8u252-nanoserver`, `8-jdk-nanoserver`, `8-nanoserver`: - - [`8u252-jdk-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/8/jdk/windows/nanoserver-1809/Dockerfile) -- `8u252-jre`, `8-jre`: - - [`8u252-jre-buster`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/Dockerfile) - - [`8u252-jre-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/windows/windowsservercore-1809/Dockerfile) - - [`8u252-jre-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/windows/windowsservercore-ltsc2016/Dockerfile) -- `8u252-jre-windowsservercore`, `8-jre-windowsservercore`: - - [`8u252-jre-windowsservercore-1809`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/windows/windowsservercore-1809/Dockerfile) - - [`8u252-jre-windowsservercore-ltsc2016`](https://github.com/docker-library/openjdk/blob/e24f1c142d0a2fa1852b5ea899b691483fc72a02/8/jre/windows/windowsservercore-ltsc2016/Dockerfile) -- `8u252-jre-nanoserver`, `8-jre-nanoserver`: - - [`8u252-jre-nanoserver-1809`](https://github.com/docker-library/openjdk/blob/3f6ab87ebe4bdea4470d0ff1e26f61dadd646c64/8/jre/windows/nanoserver-1809/Dockerfile) +- `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) # Quick reference (cont.) @@ -132,7 +113,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/openjdk`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fopenjdk) + [official-images repo's `library/openjdk` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fopenjdk) [official-images repo's `library/openjdk` file](https://github.com/docker-library/official-images/blob/master/library/openjdk) ([history](https://github.com/docker-library/official-images/commits/master/library/openjdk)) - **Source of this description**: @@ -155,7 +136,7 @@ Java is a registered trademark of Oracle and/or its affiliates. The most straightforward way to use this image is to use a Java 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 openjdk:7 +FROM openjdk:11 COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN javac Main.java @@ -174,7 +155,7 @@ $ docker run -it --rm --name my-running-app my-java-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 openjdk:7 javac Main.java +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp openjdk:11 javac Main.java ``` This will add your current directory as a volume to the container, set the working directory to the volume, and run the command `javac Main.java` which will tell Java to compile the code in `Main.java` and output the Java class file to `Main.class`. @@ -207,21 +188,15 @@ 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 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. - -## `openjdk:` (from 12 onwards), `openjdk:-oracle` and `openjdk:-oraclelinux7` - -Starting with `openjdk:12` the default image as well as the `-oracle` and `-oraclelinux7` variants are based on the official [Oracle Linux 7 image](https://hub.docker.com/_/oraclelinux) which is provided under the GPLv2 as per the [Oracle Linux End User Agreement (EULA)](https://oss.oracle.com/ol7/EULA). - -The OpenJDK binaries in the default image as well as the `-oracle` and `-oraclelinux7` variants are built by Oracle and are sourced from the [OpenJDK community](https://openjdk.java.net/). These binaries are licensed under the [GPLv2 with the Classpath Exception](https://openjdk.java.net/legal/gplv2+ce.html). +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. -## `openjdk:-alpine` +## `openjdk:` (from 12 onwards), `openjdk:-oracle` and `openjdk:-oraclelinux8` -This image is based on the popular [Alpine Linux project](http://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. +Starting with `openjdk:12` the default image as well as the `-oracle` and `-oraclelinux8` variants are based on the official [Oracle Linux 8 image](https://hub.docker.com/_/oraclelinux) which is provided under the GPLv2 as per the [Oracle Linux End User Agreement (EULA)](https://oss.oracle.com/ol8/EULA). -This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +The `-oraclelinux7` variants are based on the official [Oracle Linux 7 image](https://hub.docker.com/_/oraclelinux) which is provided under the GPLv2 as per the [Oracle Linux End User Agreement (EULA)](https://oss.oracle.com/ol7/EULA). -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). +The OpenJDK binaries are built by Oracle and are sourced from the [OpenJDK community](https://openjdk.java.net/). These binaries are licensed under the [GPLv2 with the Classpath Exception](https://openjdk.java.net/legal/gplv2+ce.html). ## `openjdk:-windowsservercore` diff --git a/openjdk/content.md b/openjdk/content.md index 0d6e18d0f475..dc35dfa42722 100644 --- a/openjdk/content.md +++ b/openjdk/content.md @@ -15,7 +15,7 @@ Java is a registered trademark of Oracle and/or its affiliates. The most straightforward way to use this image is to use a Java 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%%:7 +FROM %%IMAGE%%:11 COPY . /usr/src/myapp WORKDIR /usr/src/myapp RUN javac Main.java @@ -34,7 +34,7 @@ $ docker run -it --rm --name my-running-app my-java-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%%:7 javac Main.java +$ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:11 javac Main.java ``` This will add your current directory as a volume to the container, set the working directory to the volume, and run the command `javac Main.java` which will tell Java to compile the code in `Main.java` and output the Java class file to `Main.class`. diff --git a/openjdk/deprecated.md b/openjdk/deprecated.md new file mode 100644 index 000000000000..5a3bdcd90695 --- /dev/null +++ b/openjdk/deprecated.md @@ -0,0 +1,11 @@ +This image is officially deprecated and all users are recommended to find and use suitable replacements ASAP. Some examples of other Official Image alternatives (listed in alphabetical order with no intentional or implied preference): + +- [`amazoncorretto`](https://hub.docker.com/_/amazoncorretto) +- [`eclipse-temurin`](https://hub.docker.com/_/eclipse-temurin) +- [`ibm-semeru-runtimes`](https://hub.docker.com/_/ibm-semeru-runtimes) +- [`ibmjava`](https://hub.docker.com/_/ibmjava) +- [`sapmachine`](https://hub.docker.com/_/sapmachine) + +See [docker-library/openjdk#505](https://github.com/docker-library/openjdk/issues/505) for more information. + +The only tags which will continue to receive updates beyond July 2022 will be Early Access builds (which are sourced from [jdk.java.net](https://jdk.java.net/)), as those are not published/supported by any of the above projects. diff --git a/openjdk/variant-alpine.md b/openjdk/variant-alpine.md new file mode 100644 index 000000000000..42365d4be16d --- /dev/null +++ b/openjdk/variant-alpine.md @@ -0,0 +1,7 @@ +## `%%IMAGE%%:-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. + +The OpenJDK port for Alpine is not in a supported release by OpenJDK, since it is not in the mainline code base. It is only available as early access builds of [OpenJDK Project Portola](http://openjdk.java.net/projects/portola). See also [this comment](https://github.com/docker-library/openjdk/pull/235#issuecomment-424599754). So this image follows what is available from the OpenJDK project's maintainers. + +What this means is that Alpine based images are only released for early access release versions of OpenJDK. Once a particular release becomes a "General-Availability" release, the Alpine version is dropped from the "Supported Tags"; they are still available to pull, but will no longer be updated. diff --git a/openjdk/variant-oracle.md b/openjdk/variant-oracle.md index 035bff6205c3..ba7ff1cb3aeb 100644 --- a/openjdk/variant-oracle.md +++ b/openjdk/variant-oracle.md @@ -1,5 +1,7 @@ -## `%%IMAGE%%:` (from 12 onwards), `%%IMAGE%%:-oracle` and `%%IMAGE%%:-oraclelinux7` +## `%%IMAGE%%:` (from 12 onwards), `%%IMAGE%%:-oracle` and `%%IMAGE%%:-oraclelinux8` -Starting with `openjdk:12` the default image as well as the `-oracle` and `-oraclelinux7` variants are based on the official [Oracle Linux 7 image](https://hub.docker.com/_/oraclelinux) which is provided under the GPLv2 as per the [Oracle Linux End User Agreement (EULA)](https://oss.oracle.com/ol7/EULA). +Starting with `openjdk:12` the default image as well as the `-oracle` and `-oraclelinux8` variants are based on the official [Oracle Linux 8 image](https://hub.docker.com/_/oraclelinux) which is provided under the GPLv2 as per the [Oracle Linux End User Agreement (EULA)](https://oss.oracle.com/ol8/EULA). -The OpenJDK binaries in the default image as well as the `-oracle` and `-oraclelinux7` variants are built by Oracle and are sourced from the [OpenJDK community](https://openjdk.java.net/). These binaries are licensed under the [GPLv2 with the Classpath Exception](https://openjdk.java.net/legal/gplv2+ce.html). +The `-oraclelinux7` variants are based on the official [Oracle Linux 7 image](https://hub.docker.com/_/oraclelinux) which is provided under the GPLv2 as per the [Oracle Linux End User Agreement (EULA)](https://oss.oracle.com/ol7/EULA). + +The OpenJDK binaries are built by Oracle and are sourced from the [OpenJDK community](https://openjdk.java.net/). These binaries are licensed under the [GPLv2 with the Classpath Exception](https://openjdk.java.net/legal/gplv2+ce.html). diff --git a/opensuse/README-short.txt b/opensuse/README-short.txt deleted file mode 100644 index 73d6a29c32fb..000000000000 --- a/opensuse/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -DEPRECATED - for current images by the openSUSE Project see opensuse/leap and opensuse/tumbleweed. diff --git a/opensuse/README.md b/opensuse/README.md deleted file mode 100644 index 7e41df21dbec..000000000000 --- a/opensuse/README.md +++ /dev/null @@ -1,85 +0,0 @@ - - -# **DEPRECATION NOTICE** - -These images were removed in favor of the [`opensuse/leap`](https://hub.docker.com/r/opensuse/leap) and [`opensuse/tumbleweed`](https://hub.docker.com/r/opensuse/tumbleweed) images provided and maintained by the [openSUSE Project](https://www.opensuse.org/) release team. - -An archive for images of unsupported versions can be found at [`opensuse/archive`](https://hub.docker.com/r/opensuse/archive). - -# Quick reference - -- **Maintained by**: - [the SUSE containers team](https://github.com/openSUSE/docker-containers-build) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -**No supported tags** - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/openSUSE/docker-containers-build/issues](https://github.com/openSUSE/docker-containers-build/issues) - -- **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/opensuse/` directory](https://github.com/docker-library/repo-info/blob/master/repos/opensuse) ([history](https://github.com/docker-library/repo-info/commits/master/repos/opensuse)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/opensuse`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fopensuse) - [official-images repo's `library/opensuse` file](https://github.com/docker-library/official-images/blob/master/library/opensuse) ([history](https://github.com/docker-library/official-images/commits/master/library/opensuse)) - -- **Source of this description**: - [docs repo's `opensuse/` directory](https://github.com/docker-library/docs/tree/master/opensuse) ([history](https://github.com/docker-library/docs/commits/master/opensuse)) - -# openSUSE - -This project contains the stable releases of the openSUSE distribution. - -# Naming conventions - -Each image is tagged using both the release number (eg *"13.1"*) and the code name (eg *"Bottle"*). The latest stable release is always available using the "*latest*" tag. - -# Building - -These images are generated using [KIWI](https://github.com/openSUSE/kiwi). Their source file can be found on [this repository](https://github.com/openSUSE/docker-containers). - -# Repositories and packages - -The package selection is kept minimal to reduce the footprint of the image. - -However the following repositories are already part of the image: - -- OSS -- OSS Updates -- Non-OSS -- Non-OSS Updates - -# License - -View the [license information](https://en.opensuse.org/openSUSE:License) for the software contained in this image. Please note that individual packages installed may have their own licenses, which you also must follow. License information is available through the built-in package manager. - -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 `opensuse/` directory](https://github.com/docker-library/repo-info/tree/master/repos/opensuse). - -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/opensuse/content.md b/opensuse/content.md deleted file mode 100644 index 1b695dd6b298..000000000000 --- a/opensuse/content.md +++ /dev/null @@ -1,22 +0,0 @@ -# openSUSE - -This project contains the stable releases of the openSUSE distribution. - -# Naming conventions - -Each image is tagged using both the release number (eg *"13.1"*) and the code name (eg *"Bottle"*). The latest stable release is always available using the "*latest*" tag. - -# Building - -These images are generated using [KIWI](https://github.com/openSUSE/kiwi). Their source file can be found on [this repository](https://github.com/openSUSE/docker-containers). - -# Repositories and packages - -The package selection is kept minimal to reduce the footprint of the image. - -However the following repositories are already part of the image: - -- OSS -- OSS Updates -- Non-OSS -- Non-OSS Updates diff --git a/opensuse/deprecated.md b/opensuse/deprecated.md deleted file mode 100644 index 3eb52c44bae6..000000000000 --- a/opensuse/deprecated.md +++ /dev/null @@ -1,3 +0,0 @@ -These images were removed in favor of the [`opensuse/leap`](https://hub.docker.com/r/opensuse/leap) and [`opensuse/tumbleweed`](https://hub.docker.com/r/opensuse/tumbleweed) images provided and maintained by the [openSUSE Project](https://www.opensuse.org/) release team. - -An archive for images of unsupported versions can be found at [`opensuse/archive`](https://hub.docker.com/r/opensuse/archive). diff --git a/opensuse/github-repo b/opensuse/github-repo deleted file mode 100644 index f9df505dec88..000000000000 --- a/opensuse/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/openSUSE/docker-containers-build diff --git a/opensuse/license.md b/opensuse/license.md deleted file mode 100644 index 1d6e60f483b6..000000000000 --- a/opensuse/license.md +++ /dev/null @@ -1 +0,0 @@ -View the [license information](https://en.opensuse.org/openSUSE:License) for the software contained in this image. Please note that individual packages installed may have their own licenses, which you also must follow. License information is available through the built-in package manager. diff --git a/opensuse/logo.png b/opensuse/logo.png deleted file mode 100644 index 1d4d3568d60f..000000000000 Binary files a/opensuse/logo.png and /dev/null differ diff --git a/opensuse/maintainer.md b/opensuse/maintainer.md deleted file mode 100644 index 7c8f0a78ed6b..000000000000 --- a/opensuse/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[the SUSE containers team](%%GITHUB-REPO%%) diff --git a/oraclelinux/README.md b/oraclelinux/README.md index c8628e7b3c4c..068c265fb465 100644 --- a/oraclelinux/README.md +++ b/oraclelinux/README.md @@ -17,21 +17,19 @@ WARNING: # Quick reference - **Maintained by**: - [the Oracle Linux Product Team](https://github.com/oracle/container-images) + [the Oracle Linux Container Team](https://github.com/oracle/container-images) - **Where to get help**: see the "Customer Support" and "Community Support" sections below # Supported tags and respective `Dockerfile` links -- [`8.2`, `8`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/8.2/Dockerfile) -- [`8.1`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/8.1/Dockerfile) -- [`8.0`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/8.0/Dockerfile) -- [`8-slim`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/8-slim/Dockerfile) -- [`7.8`, `7`, `latest`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/7.8/Dockerfile) -- [`7-slim`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/7-slim/Dockerfile) -- [`6.10`, `6`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/6.10/Dockerfile) -- [`6-slim`](https://github.com/oracle/container-images/blob/f15c4cdc4a1483e541eb00d18c8058d2b5988fff/6-slim/Dockerfile) +- [`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) # Quick reference (cont.) @@ -46,7 +44,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/oraclelinux`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Foraclelinux) + [official-images repo's `library/oraclelinux` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Foraclelinux) [official-images repo's `library/oraclelinux` file](https://github.com/docker-library/official-images/blob/master/library/oraclelinux) ([history](https://github.com/docker-library/official-images/commits/master/library/oraclelinux)) - **Source of this description**: @@ -54,46 +52,49 @@ WARNING: # Oracle Linux -![logo](https://raw.githubusercontent.com/docker-library/docs/ac923d04bcfcf8de5128ab155ed9f1698374fdfc/oraclelinux/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/beed7adfe2814dd6e12207a2c58b515d87b8a184/oraclelinux/logo.png) Oracle Linux is an open-source operating system available under the GNU General Public License (GPLv2). Suitable for general purpose or Oracle workloads, it benefits from rigorous testing of more than 128,000 hours per day with real- world workloads and includes unique innovations such as Ksplice for zero- downtime kernel patching, DTrace for real-time diagnostics, the powerful Btrfs file system, and more. +> **NOTE:** the `oraclelinux` image intentionally does *not* provide a `latest` tag. You must specify [an existing tag](https://hub.docker.com/_/oraclelinux?tab=tags) when referencing this image. See *"Removal of the `latest` tag"* below for further details. + ## How to use these images -The Oracle Linux images are intended for use in the **FROM** field of a downstream `Dockerfile`. For example, to use the latest optimized Oracle Linux 7 image, specify `FROM oraclelinux:7-slim`. +The Oracle Linux images are intended for use in the **FROM** field of a downstream `Dockerfile`. For example, to use the latest optimized Oracle Linux 8 image, specify `FROM oraclelinux:8`. -## Official Resources +## Removal of `latest` tag -- [Learn more about Oracle Linux](https://oracle.com/linux) -- [Unbreakable Linux Network](https://linux.oracle.com) -- [Oracle Linux Yum Server](http://yum.oracle.com) +The `latest` tag was removed from the Oracle Linux official images in June 2020 to avoid breaking any downstream images caused by backwards-incompatible changes introduced by the release of a new version. Downstream images must specify the version, i.e. `oraclelinux:7` or `oraclelinux:8`. -## Social media resources +### Differences between `oraclelinux:8` and `oraclelinux:8-slim` -- [Twitter](https://twitter.com/OracleLinux) -- [Facebook](https://www.facebook.com/OracleLinux) -- [YouTube](https://www.youtube.com/user/OracleLinuxChannel) -- [Blog](http://blogs.oracle.com/linux) +Oracle recommends using `oraclelinux:8` for most images that extend Oracle Linux 8. -## Customer Support +The `oraclelinux:8-slim` variant is intended primarily to provide "just enough user space" for statically compiled binaries or microservices. Use of the `8-slim` variant is discouraged for general purposes, due to the inclusion of `microdnf` in place of `dnf` and signficantly reduced locale data. -Oracle provides support to Oracle Linux subscription customers via the [My Oracle Support](https://support.oracle.com) portal. The Oracle Linux Docker images are covered by Oracle Linux Basic and Premier support subscriptions. Customers should follow existing support procedures to obtain support for Oracle Linux running in a Docker container. +### Differences between `oraclelinux:7` and `oraclelinux:7-slim` -This image is officially supported for Oracle Linux customers with an active Oracle Linux Basic or Premier support subscription on both Oracle Linux 6 and Oracle Linux 7 running the Unbreakable Enterprise Kernel Release 4 and Oracle Container Runtime for Docker installed from the Unbreakable Linux Network (ULN) or the Oracle Linux yum server. +For images that want an Oracle Linux 7 user space, Oracle recommends using `oraclelinux:7-slim` as the base layer as it contains just enough packages for `yum` to be able to install more packages. -Oracle Linux users without an active support subscription can use either the Oracle distributed version of Oracle Container Runtime for Docker or the upstream version distributed by Docker. Support is limited to the community-based options outlined below. +The `oraclelinux:7` images is based on the package set of what would be installed on a bare-metal server when performing a minimal install of Oracle Linux. -### Oracle Linux 7 +## Changelog -Please review the [additional Linux programs supported under Oracle Linux support](https://docs.oracle.com/cd/E52668_01/E63013/html/ol7-lic-addl-packages.html) chapter for more information on the scope of support for the Oracle Container Runtime for Docker. +Oracle maintains a [CHANGELOG](https://github.com/oracle/container-images/blob/main/CHANGELOG.md) that documents by release date the errata applied and any CVE(s) that are mitigated in each update to the official images. -Please review the [Oracle Container Runtime for Docker User's Guide](https://docs.oracle.com/cd/E52668_01/E87205/html/index.html) for details on how to install or upgrade the Oracle Container Runtime for Docker on Oracle Linux 7. +## Official Resources -## Community Support +- [Oracle Linux documentation](https://docs.oracle.com/en/operating-systems/oracle-linux/index.html) +- [Oracle Linux Yum Server](http://yum.oracle.com) +- [Unbreakable Linux Network](https://linux.oracle.com) + +## Customer Support + +Oracle provides support to Oracle Linux subscription customers via the [My Oracle Support](https://support.oracle.com) portal. The Oracle Linux container images are covered by Oracle Linux Basic and Premier support subscriptions. Customers should follow existing support procedures to obtain support for Oracle Linux running in a container. -For Oracle Linux users without a paid support subscription, the following resources are available: +## Community Support -- The [Oracle Linux space](https://community.oracle.com/community/groundbreakers/server_&_storage_systems/linux/oracle_linux) on the [Oracle Technology Network Community](https://community.oracle.com/welcome). +Users without an Oracle Linux support subscription should either [open an issue](https://github.com/oracle/container-images/issues) or [start a discussion](https://github.com/oracle/container-images/discussions) in the [Oracle Linux container image repository](https://github.com/oracle/container-images) on GitHub. # License diff --git a/oraclelinux/content.md b/oraclelinux/content.md index a71aec4aa8e2..931bc8dc5acd 100644 --- a/oraclelinux/content.md +++ b/oraclelinux/content.md @@ -4,39 +4,42 @@ Oracle Linux is an open-source operating system available under the GNU General Public License (GPLv2). Suitable for general purpose or Oracle workloads, it benefits from rigorous testing of more than 128,000 hours per day with real- world workloads and includes unique innovations such as Ksplice for zero- downtime kernel patching, DTrace for real-time diagnostics, the powerful Btrfs file system, and more. +> **NOTE:** the `oraclelinux` image intentionally does *not* provide a `latest` tag. You must specify [an existing tag](https://hub.docker.com/_/oraclelinux?tab=tags) when referencing this image. See *"Removal of the `latest` tag"* below for further details. + ## How to use these images -The Oracle Linux images are intended for use in the **FROM** field of a downstream `Dockerfile`. For example, to use the latest optimized Oracle Linux 7 image, specify `FROM %%IMAGE%%:7-slim`. +The Oracle Linux images are intended for use in the **FROM** field of a downstream `Dockerfile`. For example, to use the latest optimized Oracle Linux 8 image, specify `FROM %%IMAGE%%:8`. -## Official Resources +## Removal of `latest` tag -- [Learn more about Oracle Linux](https://oracle.com/linux) -- [Unbreakable Linux Network](https://linux.oracle.com) -- [Oracle Linux Yum Server](http://yum.oracle.com) +The `latest` tag was removed from the Oracle Linux official images in June 2020 to avoid breaking any downstream images caused by backwards-incompatible changes introduced by the release of a new version. Downstream images must specify the version, i.e. `oraclelinux:7` or `oraclelinux:8`. -## Social media resources +### Differences between `oraclelinux:8` and `oraclelinux:8-slim` -- [Twitter](https://twitter.com/OracleLinux) -- [Facebook](https://www.facebook.com/OracleLinux) -- [YouTube](https://www.youtube.com/user/OracleLinuxChannel) -- [Blog](http://blogs.oracle.com/linux) +Oracle recommends using `oraclelinux:8` for most images that extend Oracle Linux 8. -## Customer Support +The `oraclelinux:8-slim` variant is intended primarily to provide "just enough user space" for statically compiled binaries or microservices. Use of the `8-slim` variant is discouraged for general purposes, due to the inclusion of `microdnf` in place of `dnf` and signficantly reduced locale data. -Oracle provides support to Oracle Linux subscription customers via the [My Oracle Support](https://support.oracle.com) portal. The Oracle Linux Docker images are covered by Oracle Linux Basic and Premier support subscriptions. Customers should follow existing support procedures to obtain support for Oracle Linux running in a Docker container. +### Differences between `oraclelinux:7` and `oraclelinux:7-slim` -This image is officially supported for Oracle Linux customers with an active Oracle Linux Basic or Premier support subscription on both Oracle Linux 6 and Oracle Linux 7 running the Unbreakable Enterprise Kernel Release 4 and Oracle Container Runtime for Docker installed from the Unbreakable Linux Network (ULN) or the Oracle Linux yum server. +For images that want an Oracle Linux 7 user space, Oracle recommends using `oraclelinux:7-slim` as the base layer as it contains just enough packages for `yum` to be able to install more packages. -Oracle Linux users without an active support subscription can use either the Oracle distributed version of Oracle Container Runtime for Docker or the upstream version distributed by Docker. Support is limited to the community-based options outlined below. +The `oraclelinux:7` images is based on the package set of what would be installed on a bare-metal server when performing a minimal install of Oracle Linux. -### Oracle Linux 7 +## Changelog -Please review the [additional Linux programs supported under Oracle Linux support](https://docs.oracle.com/cd/E52668_01/E63013/html/ol7-lic-addl-packages.html) chapter for more information on the scope of support for the Oracle Container Runtime for Docker. +Oracle maintains a [CHANGELOG](https://github.com/oracle/container-images/blob/main/CHANGELOG.md) that documents by release date the errata applied and any CVE(s) that are mitigated in each update to the official images. -Please review the [Oracle Container Runtime for Docker User's Guide](https://docs.oracle.com/cd/E52668_01/E87205/html/index.html) for details on how to install or upgrade the Oracle Container Runtime for Docker on Oracle Linux 7. +## Official Resources -## Community Support +- [Oracle Linux documentation](https://docs.oracle.com/en/operating-systems/oracle-linux/index.html) +- [Oracle Linux Yum Server](http://yum.oracle.com) +- [Unbreakable Linux Network](https://linux.oracle.com) + +## Customer Support + +Oracle provides support to Oracle Linux subscription customers via the [My Oracle Support](https://support.oracle.com) portal. The Oracle Linux container images are covered by Oracle Linux Basic and Premier support subscriptions. Customers should follow existing support procedures to obtain support for Oracle Linux running in a container. -For Oracle Linux users without a paid support subscription, the following resources are available: +## Community Support -- The [Oracle Linux space](https://community.oracle.com/community/groundbreakers/server_&_storage_systems/linux/oracle_linux) on the [Oracle Technology Network Community](https://community.oracle.com/welcome). +Users without an Oracle Linux support subscription should either [open an issue](https://github.com/oracle/container-images/issues) or [start a discussion](https://github.com/oracle/container-images/discussions) in the [Oracle Linux container image repository](https://github.com/oracle/container-images) on GitHub. diff --git a/oraclelinux/logo.png b/oraclelinux/logo.png index 1dbeb8cb834a..0d980ee98484 100644 Binary files a/oraclelinux/logo.png and b/oraclelinux/logo.png differ diff --git a/oraclelinux/maintainer.md b/oraclelinux/maintainer.md index 52003361a7c9..d6a920577652 100644 --- a/oraclelinux/maintainer.md +++ b/oraclelinux/maintainer.md @@ -1 +1 @@ -[the Oracle Linux Product Team](%%GITHUB-REPO%%) +[the Oracle Linux Container Team](%%GITHUB-REPO%%) diff --git a/orientdb/README.md b/orientdb/README.md index 6ea0d5e2845f..914ed0593d71 100644 --- a/orientdb/README.md +++ b/orientdb/README.md @@ -20,16 +20,18 @@ WARNING: [OrientDB](https://github.com/orientechnologies/orientdb-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.0.31`, `3.0`, `latest`](https://github.com/orientechnologies/orientdb-docker/blob/7893b07ad8f78b66f1c724244a88a70a05669e6e/release/3.0.x/3.0.31/Dockerfile) -- [`3.0.31-tp3`, `3.0-tp3`](https://github.com/orientechnologies/orientdb-docker/blob/7893b07ad8f78b66f1c724244a88a70a05669e6e/release/3.0.x/3.0.31-tp3/Dockerfile) -- [`2.2.37`, `2.2`](https://github.com/orientechnologies/orientdb-docker/blob/76586496ae5457689bebdf76ebd267a3be1aa954/release/2.2.x/2.2.37/Dockerfile) -- [`2.2.37-spatial`](https://github.com/orientechnologies/orientdb-docker/blob/76586496ae5457689bebdf76ebd267a3be1aa954/release/2.2.x/2.2.37-spatial/Dockerfile) -- [`2.1.25`, `2.1`](https://github.com/orientechnologies/orientdb-docker/blob/76586496ae5457689bebdf76ebd267a3be1aa954/release/2.1.x/Dockerfile) -- [`2.0.18`, `2.0`](https://github.com/orientechnologies/orientdb-docker/blob/76586496ae5457689bebdf76ebd267a3be1aa954/release/2.0.x/Dockerfile) +- [`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.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.) @@ -44,7 +46,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/orientdb`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Forientdb) + [official-images repo's `library/orientdb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Forientdb) [official-images repo's `library/orientdb` file](https://github.com/docker-library/official-images/blob/master/library/orientdb) ([history](https://github.com/docker-library/official-images/commits/master/library/orientdb)) - **Source of this description**: diff --git a/percona/README.md b/percona/README.md index 0be116ca712e..79a1803212c4 100644 --- a/percona/README.md +++ b/percona/README.md @@ -20,16 +20,18 @@ WARNING: [Percona](https://github.com/percona/percona-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8.0.19-10-centos`, `8.0-centos`, `8-centos`, `8.0.19-10`, `8.0`, `8`, `ps-8.0.19-10`, `ps-8.0`, `ps-8`](https://github.com/percona/percona-docker/blob/c5a71b2b629df714f6dbe25974d754209a3f3bb4/percona-server.80/Dockerfile) -- [`5.7.29-centos`, `5.7-centos`, `5-centos`, `centos`, `5.7.29`, `5.7`, `5`, `ps-5.7.29`, `ps-5.7`, `ps-5`, `latest`](https://github.com/percona/percona-docker/blob/66a99d41ad3c8b25a7529dc3ea6d767ef0d525ba/percona-server.57/Dockerfile-dockerhub) -- [`5.6.48-centos`, `5.6-centos`, `5.6.48`, `5.6`, `ps-5.6.47`, `ps-5.6`](https://github.com/percona/percona-docker/blob/97f0dd85b9f99da75ea1b74727634ce15c1b5ea0/percona-server.56/Dockerfile-dockerhub) -- [`psmdb-4.2.6`, `psmdb-4.2`](https://github.com/percona/percona-docker/blob/c1b9ca0e068093c6eec7c85816f9d49e0b0b4a6a/percona-server-mongodb.42/Dockerfile) -- [`psmdb-4.0.18`, `psmdb-4.0`](https://github.com/percona/percona-docker/blob/46e9e40b837c631e383ef900c0f7ff3e2d02f916/percona-server-mongodb.40/Dockerfile) -- [`psmdb-3.6.17`, `psmdb-3.6`](https://github.com/percona/percona-docker/blob/6601b120cc7594fb9603268834b507d855e019dd/percona-server-mongodb.36/Dockerfile) +- [`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) # Quick reference (cont.) @@ -46,7 +48,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/percona`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fpercona) + [official-images repo's `library/percona` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpercona) [official-images repo's `library/percona` file](https://github.com/docker-library/official-images/blob/master/library/percona) ([history](https://github.com/docker-library/official-images/commits/master/library/percona)) - **Source of this description**: @@ -74,7 +76,7 @@ $ docker run --name some-percona -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona: ... where `some-percona` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MySQL root user and `tag` is the tag specifying the MySQL version you want. See the list above for relevant tags. -## Connect to MariaDB from the MySQL command line client +## Connect to Percona Server from the MySQL command line client The following command starts another `percona` container instance and runs the `mysql` command line client against your original `percona` container, allowing you to execute SQL statements against your database instance: @@ -140,7 +142,7 @@ The startup configuration is specified in the file `/etc/my.cnf`, and that file If `/my/custom/config-file.cnf` is the path and name of your custom configuration file, you can start your `percona` container like this (note that only the directory path of the custom config file is used in this command): ```console -$ docker run --name some-percona -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona:tag +$ docker run --name some-percona -v /my/custom:/etc/my.cnf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d percona:tag ``` This will start a new container `some-percona` where the Percona Server for MySQL instance uses the combined startup settings from `/etc/my.cnf` and `/etc/my.cnf.d/config-file.cnf`, with settings from the latter taking precedence. diff --git a/percona/content.md b/percona/content.md index 48a004cc3c11..84530d3e69ec 100644 --- a/percona/content.md +++ b/percona/content.md @@ -20,7 +20,7 @@ $ docker run --name some-%%REPO%% -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE ... where `some-%%REPO%%` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MySQL root user and `tag` is the tag specifying the MySQL version you want. See the list above for relevant tags. -## Connect to MariaDB from the MySQL command line client +## Connect to Percona Server from the MySQL command line client The following command starts another `%%IMAGE%%` container instance and runs the `mysql` command line client against your original `%%IMAGE%%` container, allowing you to execute SQL statements against your database instance: @@ -63,7 +63,7 @@ The startup configuration is specified in the file `/etc/my.cnf`, and that file 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): ```console -$ docker run --name some-%%REPO%% -v /my/custom:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag +$ docker run --name some-%%REPO%% -v /my/custom:/etc/my.cnf.d -e MYSQL_ROOT_PASSWORD=my-secret-pw -d %%IMAGE%%:tag ``` This will start a new container `some-%%REPO%%` where the Percona Server for MySQL instance uses the combined startup settings from `/etc/my.cnf` and `/etc/my.cnf.d/config-file.cnf`, with settings from the latter taking precedence. diff --git a/perl/README.md b/perl/README.md index 9d25a17913ea..3e9acea8271d 100644 --- a/perl/README.md +++ b/perl/README.md @@ -20,34 +20,34 @@ WARNING: [the Perl Community](https://github.com/Perl/docker-perl) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `5`, `5.30`, `5.30.2`, `5-buster`, `5.30-buster`, `5.30.2-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-main-buster/Dockerfile) -- [`5-stretch`, `5.30-stretch`, `5.30.2-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-main-stretch/Dockerfile) -- [`slim`, `5-slim`, `5.30-slim`, `5.30.2-slim`, `slim-buster`, `5-slim-buster`, `5.30-slim-buster`, `5.30.2-slim-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-slim-buster/Dockerfile) -- [`slim-stretch`, `5-slim-stretch`, `5.30-slim-stretch`, `5.30.2-slim-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-slim-stretch/Dockerfile) -- [`threaded`, `5-threaded`, `5.30-threaded`, `5.30.2-threaded`, `threaded-buster`, `5-threaded-buster`, `5.30-threaded-buster`, `5.30.2-threaded-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-main,threaded-buster/Dockerfile) -- [`threaded-stretch`, `5-threaded-stretch`, `5.30-threaded-stretch`, `5.30.2-threaded-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-main,threaded-stretch/Dockerfile) -- [`slim-threaded`, `5-slim-threaded`, `5.30-slim-threaded`, `5.30.2-slim-threaded`, `slim-threaded-buster`, `5-slim-threaded-buster`, `5.30-slim-threaded-buster`, `5.30.2-slim-threaded-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-slim,threaded-buster/Dockerfile) -- [`slim-threaded-stretch`, `5-slim-threaded-stretch`, `5.30-slim-threaded-stretch`, `5.30.2-slim-threaded-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.030.002-slim,threaded-stretch/Dockerfile) -- [`5.28`, `5.28.2`, `5.28-buster`, `5.28.2-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-main-buster/Dockerfile) -- [`5.28-stretch`, `5.28.2-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-main-stretch/Dockerfile) -- [`5.28-slim`, `5.28.2-slim`, `5.28-slim-buster`, `5.28.2-slim-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-slim-buster/Dockerfile) -- [`5.28-slim-stretch`, `5.28.2-slim-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-slim-stretch/Dockerfile) -- [`5.28-threaded`, `5.28.2-threaded`, `5.28-threaded-buster`, `5.28.2-threaded-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-main,threaded-buster/Dockerfile) -- [`5.28-threaded-stretch`, `5.28.2-threaded-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-main,threaded-stretch/Dockerfile) -- [`5.28-slim-threaded`, `5.28.2-slim-threaded`, `5.28-slim-threaded-buster`, `5.28.2-slim-threaded-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-slim,threaded-buster/Dockerfile) -- [`5.28-slim-threaded-stretch`, `5.28.2-slim-threaded-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.028.002-slim,threaded-stretch/Dockerfile) -- [`5.26`, `5.26.3`, `5.26-buster`, `5.26.3-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-main-buster/Dockerfile) -- [`5.26-stretch`, `5.26.3-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-main-stretch/Dockerfile) -- [`5.26-slim`, `5.26.3-slim`, `5.26-slim-buster`, `5.26.3-slim-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-slim-buster/Dockerfile) -- [`5.26-slim-stretch`, `5.26.3-slim-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-slim-stretch/Dockerfile) -- [`5.26-threaded`, `5.26.3-threaded`, `5.26-threaded-buster`, `5.26.3-threaded-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-main,threaded-buster/Dockerfile) -- [`5.26-threaded-stretch`, `5.26.3-threaded-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-main,threaded-stretch/Dockerfile) -- [`5.26-slim-threaded`, `5.26.3-slim-threaded`, `5.26-slim-threaded-buster`, `5.26.3-slim-threaded-buster`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-slim,threaded-buster/Dockerfile) -- [`5.26-slim-threaded-stretch`, `5.26.3-slim-threaded-stretch`](https://github.com/perl/docker-perl/blob/054bceb46d86b0f76683bbae808de63323c21c98/5.026.003-slim,threaded-stretch/Dockerfile) +- [`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) # Quick reference (cont.) @@ -55,14 +55,14 @@ WARNING: [https://github.com/Perl/docker-perl/issues](https://github.com/Perl/docker-perl/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/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/), [`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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/perl`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fperl) + [official-images repo's `library/perl` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fperl) [official-images repo's `library/perl` file](https://github.com/docker-library/official-images/blob/master/library/perl) ([history](https://github.com/docker-library/official-images/commits/master/library/perl)) - **Source of this description**: @@ -81,7 +81,7 @@ Perl is a high-level, general-purpose, interpreted, dynamic programming language ## Create a `Dockerfile` in your Perl app project ```dockerfile -FROM perl:5.20 +FROM perl:5.34 COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "perl", "./your-daemon-or-script.pl" ] @@ -99,15 +99,23 @@ $ docker run -it --rm --name my-running-app my-perl-app For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Perl script by using the Perl Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp perl:5.20 perl your-daemon-or-script.pl +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp perl:5.34 perl your-daemon-or-script.pl ``` +## Coexisting with Debian's `/usr/bin/perl` + +The *perl* binary built for this image is installed in `/usr/local/bin/perl`, along with other standard tools in the Perl distribution such as `prove` and `perldoc`, as well as [`cpanm`](https://metacpan.org/pod/App::cpanminus) for installing [CPAN](https://www.cpan.org) modules. Containers running this image will also have their `PATH` enviroment set like `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin` to ensure that this *perl* binary will be found *first* in normal usage. + +As this official image of Docker is built using the [buildpack-deps](https://hub.docker.com/_/buildpack-deps) image (or [debian:slim](https://hub.docker.com/_/debian) for `:slim` variants,) this image also contains a `/usr/bin/perl` as supplied by the [Debian](https://www.debian.org) project. This is needed for the underlying [dpkg](https://en.wikipedia.org/wiki/Dpkg)/[apt](https://en.wikipedia.org/wiki/APT_(software)) package management tools to work correctly, as docker-perl cannot be used here due to different configuration (such as `@INC` and installation paths, as well as other differences like whether `-Dusethreads` is included or not.) + +See also [Perl/docker-perl#26](https://github.com/Perl/docker-perl/issues/26) for an extended discussion. + ## 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 ```console -$ docker run -it --name sleeping_beauty --rm perl:5.20 perl -E 'sleep 300' +$ docker run -it --name sleeping_beauty --rm perl:5.34 perl -E 'sleep 300' ``` and doing on another terminal, @@ -119,7 +127,7 @@ $ docker exec sleeping_beauty kill 1 will *not* stop the perl running on the `sleeping_beauty` container (it will keep running until the `sleep 300` finishes.) To do so, one must set a signal handler like this: ```console -$ docker run -it --name quick_nap --rm perl:5.20 perl -E '$SIG{TERM} = sub { $sig++; say "recv TERM" }; sleep 300; say "waking up" if $sig' +$ docker run -it --name quick_nap --rm perl:5.34 perl -E '$SIG{TERM} = sub { $sig++; say "recv TERM" }; sleep 300; say "waking up" if $sig' ``` so doing `docker exec quick_nap kill 1` (or the simpler `docker stop quick_nap`) will immediately stop the container, and print `recv TERM` in the other terminal. Note that the signal handler does not stop the perl process itself unless it calls a `die` or `exit`; in this case, perl will continue and print `waking up` *after* it receives the signal. @@ -133,13 +141,13 @@ See also [Signals in perlipc](https://perldoc.pl/perlipc#Signals) as well as [Pe 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: ```dockerfile -FROM perl:5.26 +FROM perl:5.34 RUN cpanm Carton \ && mkdir -p /usr/src/app WORKDIR /usr/src/app -ONBUILD COPY cpanfile* /usr/src/myapp +ONBUILD COPY cpanfile* /usr/src/app ONBUILD RUN carton install ONBUILD COPY . /usr/src/app @@ -160,7 +168,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 buster or stretch 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 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. 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 bbaa6841c98b..298e648c158b 100644 --- a/perl/content.md +++ b/perl/content.md @@ -11,7 +11,7 @@ Perl is a high-level, general-purpose, interpreted, dynamic programming language ## Create a `Dockerfile` in your Perl app project ```dockerfile -FROM %%IMAGE%%:5.20 +FROM %%IMAGE%%:5.34 COPY . /usr/src/myapp WORKDIR /usr/src/myapp CMD [ "perl", "./your-daemon-or-script.pl" ] @@ -29,15 +29,23 @@ $ docker run -it --rm --name my-running-app my-perl-app For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Perl script by using the Perl Docker image directly: ```console -$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:5.20 perl your-daemon-or-script.pl +$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:5.34 perl your-daemon-or-script.pl ``` +## Coexisting with Debian's `/usr/bin/perl` + +The *perl* binary built for this image is installed in `/usr/local/bin/perl`, along with other standard tools in the Perl distribution such as `prove` and `perldoc`, as well as [`cpanm`](https://metacpan.org/pod/App::cpanminus) for installing [CPAN](https://www.cpan.org) modules. Containers running this image will also have their `PATH` enviroment set like `/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin` to ensure that this *perl* binary will be found *first* in normal usage. + +As this official image of Docker is built using the [buildpack-deps](https://hub.docker.com/_/buildpack-deps) image (or [debian:slim](https://hub.docker.com/_/debian) for `:slim` variants,) this image also contains a `/usr/bin/perl` as supplied by the [Debian](https://www.debian.org) project. This is needed for the underlying [dpkg](https://en.wikipedia.org/wiki/Dpkg)/[apt](https://en.wikipedia.org/wiki/APT_(software)) package management tools to work correctly, as docker-perl cannot be used here due to different configuration (such as `@INC` and installation paths, as well as other differences like whether `-Dusethreads` is included or not.) + +See also [Perl/docker-perl#26](https://github.com/Perl/docker-perl/issues/26) for an extended discussion. + ## 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 ```console -$ docker run -it --name sleeping_beauty --rm %%IMAGE%%:5.20 perl -E 'sleep 300' +$ docker run -it --name sleeping_beauty --rm %%IMAGE%%:5.34 perl -E 'sleep 300' ``` and doing on another terminal, @@ -49,7 +57,7 @@ $ docker exec sleeping_beauty kill 1 will *not* stop the perl running on the `sleeping_beauty` container (it will keep running until the `sleep 300` finishes.) To do so, one must set a signal handler like this: ```console -$ docker run -it --name quick_nap --rm %%IMAGE%%:5.20 perl -E '$SIG{TERM} = sub { $sig++; say "recv TERM" }; sleep 300; say "waking up" if $sig' +$ docker run -it --name quick_nap --rm %%IMAGE%%:5.34 perl -E '$SIG{TERM} = sub { $sig++; say "recv TERM" }; sleep 300; say "waking up" if $sig' ``` so doing `docker exec quick_nap kill 1` (or the simpler `docker stop quick_nap`) will immediately stop the container, and print `recv TERM` in the other terminal. Note that the signal handler does not stop the perl process itself unless it calls a `die` or `exit`; in this case, perl will continue and print `waking up` *after* it receives the signal. @@ -63,13 +71,13 @@ See also [Signals in perlipc](https://perldoc.pl/perlipc#Signals) as well as [Pe 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: ```dockerfile -FROM %%IMAGE%%:5.26 +FROM %%IMAGE%%:5.34 RUN cpanm Carton \ && mkdir -p /usr/src/app WORKDIR /usr/src/app -ONBUILD COPY cpanfile* /usr/src/myapp +ONBUILD COPY cpanfile* /usr/src/app ONBUILD RUN carton install ONBUILD COPY . /usr/src/app diff --git a/photon/README.md b/photon/README.md index be3816ea179f..eadcc028bf62 100644 --- a/photon/README.md +++ b/photon/README.md @@ -20,13 +20,13 @@ WARNING: [VMware](https://github.com/vmware/photon-docker-image) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.0`, `3.0-20200424`, `latest`](https://github.com/vmware/photon-docker-image/blob/5a5ac7caccd1299e9481bac190806d89e5010615/docker/Dockerfile) -- [`1.0`, `1.0-20200515`](https://github.com/vmware/photon-docker-image/blob/4b3fff6435e5889c3e4fc89af12016365676ac20/docker/Dockerfile) -- [`2.0`, `2.0-20200515`](https://github.com/vmware/photon-docker-image/blob/099e5627d6a2911fc39bd4c161a15950e22de9ea/docker/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/photon`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fphoton) + [official-images repo's `library/photon` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphoton) [official-images repo's `library/photon` file](https://github.com/docker-library/official-images/blob/master/library/photon) ([history](https://github.com/docker-library/official-images/commits/master/library/photon)) - **Source of this description**: diff --git a/php-zendserver/README.md b/php-zendserver/README.md index ef22640ba15f..6640f6f3282d 100644 --- a/php-zendserver/README.md +++ b/php-zendserver/README.md @@ -20,13 +20,14 @@ WARNING: [Perforce Software, Inc.](https://github.com/zendtech/php-zendserver-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8.5`, `8.5-php5.6`, `5.6`](https://github.com/zendtech/php-zendserver-docker/blob/9dbdde8ed975da58a8bfdefeedf1e37ea24034f9/8.5/5.6/Dockerfile) -- [`9.1`](https://github.com/zendtech/php-zendserver-docker/blob/9dbdde8ed975da58a8bfdefeedf1e37ea24034f9/9.1/7.1/Dockerfile) -- [`2019.0`, `latest`](https://github.com/zendtech/php-zendserver-docker/blob/9dbdde8ed975da58a8bfdefeedf1e37ea24034f9/2019.0/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/php-zendserver`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fphp-zendserver) + [official-images repo's `library/php-zendserver` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp-zendserver) [official-images repo's `library/php-zendserver` file](https://github.com/docker-library/official-images/blob/master/library/php-zendserver) ([history](https://github.com/docker-library/official-images/commits/master/library/php-zendserver)) - **Source of this description**: diff --git a/php/README.md b/php/README.md index cba286e36e0c..8e9c80ee9eaf 100644 --- a/php/README.md +++ b/php/README.md @@ -20,48 +20,49 @@ WARNING: [the Docker Community](https://github.com/docker-library/php) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.4.6-cli-buster`, `7.4-cli-buster`, `7-cli-buster`, `cli-buster`, `7.4.6-buster`, `7.4-buster`, `7-buster`, `buster`, `7.4.6-cli`, `7.4-cli`, `7-cli`, `cli`, `7.4.6`, `7.4`, `7`, `latest`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/buster/cli/Dockerfile) -- [`7.4.6-apache-buster`, `7.4-apache-buster`, `7-apache-buster`, `apache-buster`, `7.4.6-apache`, `7.4-apache`, `7-apache`, `apache`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/buster/apache/Dockerfile) -- [`7.4.6-fpm-buster`, `7.4-fpm-buster`, `7-fpm-buster`, `fpm-buster`, `7.4.6-fpm`, `7.4-fpm`, `7-fpm`, `fpm`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/buster/fpm/Dockerfile) -- [`7.4.6-zts-buster`, `7.4-zts-buster`, `7-zts-buster`, `zts-buster`, `7.4.6-zts`, `7.4-zts`, `7-zts`, `zts`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/buster/zts/Dockerfile) -- [`7.4.6-cli-alpine3.11`, `7.4-cli-alpine3.11`, `7-cli-alpine3.11`, `cli-alpine3.11`, `7.4.6-alpine3.11`, `7.4-alpine3.11`, `7-alpine3.11`, `alpine3.11`, `7.4.6-cli-alpine`, `7.4-cli-alpine`, `7-cli-alpine`, `cli-alpine`, `7.4.6-alpine`, `7.4-alpine`, `7-alpine`, `alpine`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/alpine3.11/cli/Dockerfile) -- [`7.4.6-fpm-alpine3.11`, `7.4-fpm-alpine3.11`, `7-fpm-alpine3.11`, `fpm-alpine3.11`, `7.4.6-fpm-alpine`, `7.4-fpm-alpine`, `7-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/alpine3.11/fpm/Dockerfile) -- [`7.4.6-zts-alpine3.11`, `7.4-zts-alpine3.11`, `7-zts-alpine3.11`, `zts-alpine3.11`, `7.4.6-zts-alpine`, `7.4-zts-alpine`, `7-zts-alpine`, `zts-alpine`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/alpine3.11/zts/Dockerfile) -- [`7.4.6-cli-alpine3.10`, `7.4-cli-alpine3.10`, `7-cli-alpine3.10`, `cli-alpine3.10`, `7.4.6-alpine3.10`, `7.4-alpine3.10`, `7-alpine3.10`, `alpine3.10`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/alpine3.10/cli/Dockerfile) -- [`7.4.6-fpm-alpine3.10`, `7.4-fpm-alpine3.10`, `7-fpm-alpine3.10`, `fpm-alpine3.10`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/alpine3.10/fpm/Dockerfile) -- [`7.4.6-zts-alpine3.10`, `7.4-zts-alpine3.10`, `7-zts-alpine3.10`, `zts-alpine3.10`](https://github.com/docker-library/php/blob/8c6d1f42185d2a3cd22f381ba4bcd95ec52fa31f/7.4/alpine3.10/zts/Dockerfile) -- [`7.3.18-cli-buster`, `7.3-cli-buster`, `7.3.18-buster`, `7.3-buster`, `7.3.18-cli`, `7.3-cli`, `7.3.18`, `7.3`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/buster/cli/Dockerfile) -- [`7.3.18-apache-buster`, `7.3-apache-buster`, `7.3.18-apache`, `7.3-apache`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/buster/apache/Dockerfile) -- [`7.3.18-fpm-buster`, `7.3-fpm-buster`, `7.3.18-fpm`, `7.3-fpm`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/buster/fpm/Dockerfile) -- [`7.3.18-zts-buster`, `7.3-zts-buster`, `7.3.18-zts`, `7.3-zts`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/buster/zts/Dockerfile) -- [`7.3.18-cli-stretch`, `7.3-cli-stretch`, `7.3.18-stretch`, `7.3-stretch`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/stretch/cli/Dockerfile) -- [`7.3.18-apache-stretch`, `7.3-apache-stretch`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/stretch/apache/Dockerfile) -- [`7.3.18-fpm-stretch`, `7.3-fpm-stretch`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/stretch/fpm/Dockerfile) -- [`7.3.18-zts-stretch`, `7.3-zts-stretch`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/stretch/zts/Dockerfile) -- [`7.3.18-cli-alpine3.11`, `7.3-cli-alpine3.11`, `7.3.18-alpine3.11`, `7.3-alpine3.11`, `7.3.18-cli-alpine`, `7.3-cli-alpine`, `7.3.18-alpine`, `7.3-alpine`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/alpine3.11/cli/Dockerfile) -- [`7.3.18-fpm-alpine3.11`, `7.3-fpm-alpine3.11`, `7.3.18-fpm-alpine`, `7.3-fpm-alpine`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/alpine3.11/fpm/Dockerfile) -- [`7.3.18-zts-alpine3.11`, `7.3-zts-alpine3.11`, `7.3.18-zts-alpine`, `7.3-zts-alpine`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/alpine3.11/zts/Dockerfile) -- [`7.3.18-cli-alpine3.10`, `7.3-cli-alpine3.10`, `7.3.18-alpine3.10`, `7.3-alpine3.10`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/alpine3.10/cli/Dockerfile) -- [`7.3.18-fpm-alpine3.10`, `7.3-fpm-alpine3.10`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/alpine3.10/fpm/Dockerfile) -- [`7.3.18-zts-alpine3.10`, `7.3-zts-alpine3.10`](https://github.com/docker-library/php/blob/a3cf31c9020559777c731d980047450cba744122/7.3/alpine3.10/zts/Dockerfile) -- [`7.2.31-cli-buster`, `7.2-cli-buster`, `7.2.31-buster`, `7.2-buster`, `7.2.31-cli`, `7.2-cli`, `7.2.31`, `7.2`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/buster/cli/Dockerfile) -- [`7.2.31-apache-buster`, `7.2-apache-buster`, `7.2.31-apache`, `7.2-apache`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/buster/apache/Dockerfile) -- [`7.2.31-fpm-buster`, `7.2-fpm-buster`, `7.2.31-fpm`, `7.2-fpm`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/buster/fpm/Dockerfile) -- [`7.2.31-zts-buster`, `7.2-zts-buster`, `7.2.31-zts`, `7.2-zts`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/buster/zts/Dockerfile) -- [`7.2.31-cli-stretch`, `7.2-cli-stretch`, `7.2.31-stretch`, `7.2-stretch`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/stretch/cli/Dockerfile) -- [`7.2.31-apache-stretch`, `7.2-apache-stretch`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/stretch/apache/Dockerfile) -- [`7.2.31-fpm-stretch`, `7.2-fpm-stretch`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/stretch/fpm/Dockerfile) -- [`7.2.31-zts-stretch`, `7.2-zts-stretch`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/stretch/zts/Dockerfile) -- [`7.2.31-cli-alpine3.11`, `7.2-cli-alpine3.11`, `7.2.31-alpine3.11`, `7.2-alpine3.11`, `7.2.31-cli-alpine`, `7.2-cli-alpine`, `7.2.31-alpine`, `7.2-alpine`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/alpine3.11/cli/Dockerfile) -- [`7.2.31-fpm-alpine3.11`, `7.2-fpm-alpine3.11`, `7.2.31-fpm-alpine`, `7.2-fpm-alpine`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/alpine3.11/fpm/Dockerfile) -- [`7.2.31-zts-alpine3.11`, `7.2-zts-alpine3.11`, `7.2.31-zts-alpine`, `7.2-zts-alpine`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/alpine3.11/zts/Dockerfile) -- [`7.2.31-cli-alpine3.10`, `7.2-cli-alpine3.10`, `7.2.31-alpine3.10`, `7.2-alpine3.10`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/alpine3.10/cli/Dockerfile) -- [`7.2.31-fpm-alpine3.10`, `7.2-fpm-alpine3.10`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/alpine3.10/fpm/Dockerfile) -- [`7.2.31-zts-alpine3.10`, `7.2-zts-alpine3.10`](https://github.com/docker-library/php/blob/057b438e69093c927a84cce4308c7ad08ccdd5b0/7.2/alpine3.10/zts/Dockerfile) +- [`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) # Quick reference (cont.) @@ -76,7 +77,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/php`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fphp) + [official-images repo's `library/php` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp) [official-images repo's `library/php` file](https://github.com/docker-library/official-images/blob/master/library/php) ([history](https://github.com/docker-library/official-images/commits/master/library/php)) - **Source of this description**: @@ -217,11 +218,10 @@ RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar. ## Running as an arbitrary user -For running the Apache variants as an arbitrary user, there are several choices: +For running the Apache variants as an arbitrary user, there are a couple choices: -- If your kernel [is version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310), you can add `--sysctl net.ipv4.ip_unprivileged_port_start=0` and then `--user` should work as it does for FPM. +- If your kernel [is version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310), you can add `--sysctl net.ipv4.ip_unprivileged_port_start=0` (which [will be the default in a future version of Docker](https://github.com/moby/moby/pull/41030)) and then `--user` should work as it does for FPM. - If you adjust the Apache configuration to use an "unprivileged" port (greater than 1024 by default), then `--user` should work as it does for FPM regardless of kernel version. -- Otherwise, setting `APACHE_RUN_USER` and/or `APACHE_RUN_GROUP` should have the desired effect (for example, `-e APACHE_RUN_USER=daemon` or `-e APACHE_RUN_USER=#1000` -- see [the Apache `User` directive documentation for details on the expected syntax](https://httpd.apache.org/docs/2.4/mod/mod_unixd.html#user)). For running the FPM variants as an arbitrary user, the `--user` flag to `docker run` should be used (which can accept both a username/group in the container's `/etc/passwd` file like `--user daemon` or a specific UID/GID like `--user 1000:1000`). @@ -252,16 +252,15 @@ FROM php:7.4-fpm-alpine # Use the default production configuration RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" - -# Override with custom opcache settings -COPY config/opcache.ini $PHP_INI_DIR/conf.d/ ``` +In many production environments, it is also recommended to (build and) enable the PHP core OPcache extension for performance. See [the upstream OPcache documentation](https://www.php.net/manual/en/book.opcache.php) for more details. + # Image Variants The `php` images come in many flavors, each designed for a specific use case. -Some of these tags may have names like buster or stretch 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 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. ## `php:-cli` @@ -326,11 +325,13 @@ Some potentially helpful resources: - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) +**WARNING:** the FastCGI protocol is inherently trusting, and thus *extremely* insecure to expose outside of a private container network -- unless you know *exactly* what you are doing (and are willing to accept the extreme risk), do not use Docker's `--publish` (`-p`) flag with this image variant. + ## `php:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/php/content.md b/php/content.md index 21b11b5cc0ce..31a1008393bf 100644 --- a/php/content.md +++ b/php/content.md @@ -133,11 +133,10 @@ RUN curl -fsSL 'https://xcache.lighttpd.net/pub/Releases/3.2.0/xcache-3.2.0.tar. ## Running as an arbitrary user -For running the Apache variants as an arbitrary user, there are several choices: +For running the Apache variants as an arbitrary user, there are a couple choices: -- If your kernel [is version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310), you can add `--sysctl net.ipv4.ip_unprivileged_port_start=0` and then `--user` should work as it does for FPM. +- If your kernel [is version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310), you can add `--sysctl net.ipv4.ip_unprivileged_port_start=0` (which [will be the default in a future version of Docker](https://github.com/moby/moby/pull/41030)) and then `--user` should work as it does for FPM. - If you adjust the Apache configuration to use an "unprivileged" port (greater than 1024 by default), then `--user` should work as it does for FPM regardless of kernel version. -- Otherwise, setting `APACHE_RUN_USER` and/or `APACHE_RUN_GROUP` should have the desired effect (for example, `-e APACHE_RUN_USER=daemon` or `-e APACHE_RUN_USER=#1000` -- see [the Apache `User` directive documentation for details on the expected syntax](https://httpd.apache.org/docs/2.4/mod/mod_unixd.html#user)). For running the FPM variants as an arbitrary user, the `--user` flag to `docker run` should be used (which can accept both a username/group in the container's `/etc/passwd` file like `--user daemon` or a specific UID/GID like `--user 1000:1000`). @@ -168,7 +167,6 @@ FROM %%IMAGE%%:7.4-fpm-alpine # Use the default production configuration RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini" - -# Override with custom opcache settings -COPY config/opcache.ini $PHP_INI_DIR/conf.d/ ``` + +In many production environments, it is also recommended to (build and) enable the PHP core OPcache extension for performance. See [the upstream OPcache documentation](https://www.php.net/manual/en/book.opcache.php) for more details. diff --git a/php/variant-fpm.md b/php/variant-fpm.md index 5093b6ce22f6..06ba66065500 100644 --- a/php/variant-fpm.md +++ b/php/variant-fpm.md @@ -11,3 +11,5 @@ Some potentially helpful resources: - [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) + +**WARNING:** the FastCGI protocol is inherently trusting, and thus *extremely* insecure to expose outside of a private container network -- unless you know *exactly* what you are doing (and are willing to accept the extreme risk), do not use Docker's `--publish` (`-p`) flag with this image variant. diff --git a/phpmyadmin/README-short.txt b/phpmyadmin/README-short.txt new file mode 100644 index 000000000000..23c2afd65b6f --- /dev/null +++ b/phpmyadmin/README-short.txt @@ -0,0 +1 @@ +phpMyAdmin - A web interface for MySQL and MariaDB. diff --git a/phpmyadmin/README.md b/phpmyadmin/README.md new file mode 100644 index 000000000000..22d73f2cea93 --- /dev/null +++ b/phpmyadmin/README.md @@ -0,0 +1,252 @@ + + +# Quick reference + +- **Maintained by**: + [phpMyAdmin](https://github.com/phpmyadmin/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.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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/phpmyadmin/docker/issues](https://github.com/phpmyadmin/docker/issues) + +- **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/) + +- **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)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/phpmyadmin` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphpmyadmin) + [official-images repo's `library/phpmyadmin` file](https://github.com/docker-library/official-images/blob/master/library/phpmyadmin) ([history](https://github.com/docker-library/official-images/commits/master/library/phpmyadmin)) + +- **Source of this description**: + [docs repo's `phpmyadmin/` directory](https://github.com/docker-library/docs/tree/master/phpmyadmin) ([history](https://github.com/docker-library/docs/commits/master/phpmyadmin)) + +# What is phpMyAdmin? + +phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement. + +Run phpMyAdmin with Alpine, Apache and PHP FPM. + +![logo](https://raw.githubusercontent.com/docker-library/docs/1a06458dd2512b5bcda0a849738bb5ca32bf8ec0/phpmyadmin/logo.png) + +# 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. + +## Credentials + +phpMyAdmin connects using your MySQL server credentials. Please check your corresponding database server image for information on the default username and password or how to specify your own custom credentials during installation. + +The official MySQL and MariaDB images use the following environment variables to define these: + +- `MYSQL_ROOT_PASSWORD` - This variable is mandatory and specifies the password that will be set for the `root` superuser account. +- `MYSQL_USER`, `MYSQL_PASSWORD` - These variables are optional, used in conjunction to create a new user and to set that user's password. + +## Supported Docker Hub tags + +The following tags are available: + +- `latest`, `fpm`, and `fpm-alpine` are always the most recent released version +- Major versions, such as `5`, `5-fpm`, and `5-fpm-alpine` +- Specific minor versions, such as `5.0`, `5.0-fpm`, and `5-fpm-alpine` +- Specific patch versions, such as `5.0.0`, `5.0.0-fpm`, and `5.0.0-fpm-alpine`. Note that, on rare occasion, there may be an intermediary "docker-only" release, such as 4.9.2-1 + +A complete list of tags is [available at Docker Hub](https://hub.docker.com/_/phpmyadmin?tab=tags) + +## Image variants + +We provide three variations: + +- "apache" includes a full Apache webserver with PHP and includes everything needed to work out of the box. This is the default when only a version number is requested. +- "fpm" only starts a PHP FPM container. Use this variant if you already have a separate webserver. This includes more tools and is therefore a larger image than the "fpm-alpine" variation. +- "fpm-alpine" has a very small footprint. It is based on Alpine Linux and only starts a PHP FPM process. Use this variant if you already have a separate webserver. If you need more tools that are not available on Alpine Linux, use the fpm image instead. + +## Usage with linked server + +First you need to run a MySQL or MariaDB server in Docker, and the phpMyAdmin image needs to be linked to the running database container: + +```sh +docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin +``` + +## Usage with external server + +You can specify a MySQL host in the `PMA_HOST` environment variable. You can also use `PMA_PORT` to specify the port of the server in case it's not the default one: + +```sh +docker run --name phpmyadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin +``` + +## Usage with arbitrary server + +You can use arbitrary servers by adding the environment variable `PMA_ARBITRARY=1` to the startup command: + +```sh +docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin +``` + +## Usage with docker-compose and 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) + +Example `stack.yml` for `phpmyadmin`: + +```yaml +version: '3.1' + +services: + db: + image: mariadb:10.6 + restart: always + environment: + MYSQL_ROOT_PASSWORD: notSecureChangeMe + + phpmyadmin: + image: phpmyadmin + restart: always + ports: + - 8080:80 + environment: + - 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: + +```sh +-v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php +``` + +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/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin +``` + +Be sure to have `` + +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. + +## `phpmyadmin:-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/phpmyadmin/docker/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 `phpmyadmin/` directory](https://github.com/docker-library/repo-info/tree/master/repos/phpmyadmin). + +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/phpmyadmin/content.md b/phpmyadmin/content.md new file mode 100644 index 000000000000..20f8baf6d0ea --- /dev/null +++ b/phpmyadmin/content.md @@ -0,0 +1,154 @@ +# What is phpMyAdmin? + +phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement. + +Run phpMyAdmin with Alpine, Apache and PHP FPM. + +%%LOGO%% + +# 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. + +## Credentials + +phpMyAdmin connects using your MySQL server credentials. Please check your corresponding database server image for information on the default username and password or how to specify your own custom credentials during installation. + +The official MySQL and MariaDB images use the following environment variables to define these: + +- `MYSQL_ROOT_PASSWORD` - This variable is mandatory and specifies the password that will be set for the `root` superuser account. +- `MYSQL_USER`, `MYSQL_PASSWORD` - These variables are optional, used in conjunction to create a new user and to set that user's password. + +## Supported Docker Hub tags + +The following tags are available: + +- `latest`, `fpm`, and `fpm-alpine` are always the most recent released version +- Major versions, such as `5`, `5-fpm`, and `5-fpm-alpine` +- Specific minor versions, such as `5.0`, `5.0-fpm`, and `5-fpm-alpine` +- Specific patch versions, such as `5.0.0`, `5.0.0-fpm`, and `5.0.0-fpm-alpine`. Note that, on rare occasion, there may be an intermediary "docker-only" release, such as 4.9.2-1 + +A complete list of tags is [available at Docker Hub](https://hub.docker.com/_/phpmyadmin?tab=tags) + +## Image variants + +We provide three variations: + +- "apache" includes a full Apache webserver with PHP and includes everything needed to work out of the box. This is the default when only a version number is requested. +- "fpm" only starts a PHP FPM container. Use this variant if you already have a separate webserver. This includes more tools and is therefore a larger image than the "fpm-alpine" variation. +- "fpm-alpine" has a very small footprint. It is based on Alpine Linux and only starts a PHP FPM process. Use this variant if you already have a separate webserver. If you need more tools that are not available on Alpine Linux, use the fpm image instead. + +## Usage with linked server + +First you need to run a MySQL or MariaDB server in Docker, and the phpMyAdmin image needs to be linked to the running database container: + +```sh +docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 %%IMAGE%% +``` + +## Usage with external server + +You can specify a MySQL host in the `PMA_HOST` environment variable. You can also use `PMA_PORT` to specify the port of the server in case it's not the default one: + +```sh +docker run --name phpmyadmin -d -e PMA_HOST=dbhost -p 8080:80 %%IMAGE%% +``` + +## Usage with arbitrary server + +You can use arbitrary servers by adding the environment variable `PMA_ARBITRARY=1` to the startup command: + +```sh +docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 8080:80 %%IMAGE%% +``` + +## Usage with docker-compose and arbitrary server + +This will run phpMyAdmin with the arbitrary server option - allowing you to specify any MySQL/MariaDB server on the login page. + +%%STACK%% + +## 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: + +```sh +-v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php +``` + +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/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php %%IMAGE%% +``` + +Be sure to have `` + [See more](https://relstorage.readthedocs.io/en/latest/relstorage-options.html) -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. - -## `plone:-alpine` - -This image is based on the popular [Alpine Linux project](http://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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +## Documentation -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). +Full documentation for end users can be found online at [docs.plone.org](https://docs.plone.org/manage/docker/docs/usage/index.html) # License diff --git a/plone/content.md b/plone/content.md index 569ba8b49e2c..730d861443bb 100644 --- a/plone/content.md +++ b/plone/content.md @@ -9,6 +9,8 @@ - Images for Plone 5.x and Plone 4.x - 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+) ## Usage @@ -121,12 +123,19 @@ $ curl -H 'Accept: application/json' http://localhost:8080/plone - `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` -## Documentation +**RELSTORAGE:** -Full documentation for end users can be found online at [docs.plone.org](https://docs.plone.org/manage/docker/docs/usage/index.html) +- `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. + +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). -## Credits +- `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` -This docker image was originally financed by the [European Environment Agency](http://eea.europa.eu), an agency of the European Union. + [See more](https://relstorage.readthedocs.io/en/latest/relstorage-options.html) -Thanks to [Antonio De Marinis](https://github.com/demarant), [Sven Strack](https://github.com/svx) and [Alin Voinea](https://github.com/avoinea) for their preliminary work. +## Documentation + +Full documentation for end users can be found online at [docs.plone.org](https://docs.plone.org/manage/docker/docs/usage/index.html) diff --git a/postfixadmin/README.md b/postfixadmin/README.md index 050c17a398e2..31f14465af21 100644 --- a/postfixadmin/README.md +++ b/postfixadmin/README.md @@ -20,13 +20,13 @@ WARNING: [Postfix Admin](https://github.com/postfixadmin/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.2.4-apache`, `3.2-apache`, `3-apache`, `apache`, `3.2.4`, `3.2`, `3`, `latest`](https://github.com/postfixadmin/docker/blob/b1ffcf48cd23b4ba779dc5c1a8c6f78c6ef45077/apache/Dockerfile) -- [`3.2.4-fpm`, `3.2-fpm`, `3-fpm`, `fpm`](https://github.com/postfixadmin/docker/blob/b1ffcf48cd23b4ba779dc5c1a8c6f78c6ef45077/fpm/Dockerfile) -- [`3.2.4-fpm-alpine`, `3.2-fpm-alpine`, `3-fpm-alpine`, `fpm-alpine`](https://github.com/postfixadmin/docker/blob/b1ffcf48cd23b4ba779dc5c1a8c6f78c6ef45077/fpm-alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/postfixadmin`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fpostfixadmin) + [official-images repo's `library/postfixadmin` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpostfixadmin) [official-images repo's `library/postfixadmin` file](https://github.com/docker-library/official-images/blob/master/library/postfixadmin) ([history](https://github.com/docker-library/official-images/commits/master/library/postfixadmin)) - **Source of this description**: @@ -97,26 +97,12 @@ Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browse ## Existing config.local.php ```console -$ docker run --name some-postfixadmin -p 8080:80 %%image%% -$ docker run --name some-postfixadmin -v /local/path/to/config.local.php:/var/www/html/config.local.php -p 8080:80 postfixadmin +$ docker run -v /local/path/to/config.local.php:/var/www/html/config.local.php \ + --name some-postfixadmin \ + -p 8080:80 \ + postfixadmin ``` -## Image Variants - -The following variants are currently provided: - -### apache - -This starts an Apache webserver with PHP, so you can use `postfixadmin` out of the box. - -### fpm-alpine - -This image has a very small footprint. It is based on Alpine Linux and starts only a PHP FPM process. Use this variant if you already have a seperate webserver. If you need more tools, that are not available on Alpine Linux, use the `fpm` image instead. - -### fpm - -This image starts only a PHP FPM container. Use this variant if you already have a seperate webserver. - ... 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 `postfixadmin`: @@ -129,7 +115,7 @@ services: image: mysql:5.7 restart: always environment: - MYSQL_ROOT_PASSWORD: notSecureChangeMe + MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_DATABASE: postfixadmin MYSQL_USER: postfixadmin MYSQL_PASSWORD: example @@ -149,7 +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/be39946abe91fb116d24d8b797c9adacfd15a851/postfixadmin/stack.yml) +[![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). @@ -161,13 +147,17 @@ The `postfixadmin` 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. -## `postfixadmin:-alpine` +### apache + +This starts an Apache webserver with PHP, so you can use `postfixadmin` out of the box. + +### fpm -This image is based on the popular [Alpine Linux project](http://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 starts only a PHP FPM container. Use this variant if you already have a seperate webserver. -This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +### fpm-alpine -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). +This image has a very small footprint. It is based on Alpine Linux and starts only a PHP FPM process. Use this variant if you already have a seperate webserver. If you need more tools, that are not available on Alpine Linux, use the `fpm` image instead. # License diff --git a/postfixadmin/content.md b/postfixadmin/content.md index 910bc4bdc5b3..883d589a83b5 100644 --- a/postfixadmin/content.md +++ b/postfixadmin/content.md @@ -48,26 +48,12 @@ Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browse ## Existing config.local.php ```console -$ docker run --name some-%%REPO%% -p 8080:80 %%image%% -$ docker run --name some-%%REPO%% -v /local/path/to/config.local.php:/var/www/html/config.local.php -p 8080:80 %%IMAGE%% +$ docker run -v /local/path/to/config.local.php:/var/www/html/config.local.php \ + --name some-%%REPO%% \ + -p 8080:80 \ + %%IMAGE%% ``` -## Image Variants - -The following variants are currently provided: - -### apache - -This starts an Apache webserver with PHP, so you can use `postfixadmin` out of the box. - -### fpm-alpine - -This image has a very small footprint. It is based on Alpine Linux and starts only a PHP FPM process. Use this variant if you already have a seperate webserver. If you need more tools, that are not available on Alpine Linux, use the `fpm` image instead. - -### fpm - -This image starts only a PHP FPM container. Use this variant if you already have a seperate webserver. - %%STACK%% 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). diff --git a/postfixadmin/stack.yml b/postfixadmin/stack.yml index d3cd8ec3a8c1..b40e6c5b1abc 100644 --- a/postfixadmin/stack.yml +++ b/postfixadmin/stack.yml @@ -5,7 +5,7 @@ services: image: mysql:5.7 restart: always environment: - MYSQL_ROOT_PASSWORD: notSecureChangeMe + MYSQL_RANDOM_ROOT_PASSWORD: 1 MYSQL_DATABASE: postfixadmin MYSQL_USER: postfixadmin MYSQL_PASSWORD: example diff --git a/postfixadmin/variant-apache.md b/postfixadmin/variant-apache.md new file mode 100644 index 000000000000..b9666ea37e13 --- /dev/null +++ b/postfixadmin/variant-apache.md @@ -0,0 +1,3 @@ +### apache + +This starts an Apache webserver with PHP, so you can use `postfixadmin` out of the box. diff --git a/postfixadmin/variant-fpm-alpine.md b/postfixadmin/variant-fpm-alpine.md new file mode 100644 index 000000000000..1aaa0208a27d --- /dev/null +++ b/postfixadmin/variant-fpm-alpine.md @@ -0,0 +1,3 @@ +### fpm-alpine + +This image has a very small footprint. It is based on Alpine Linux and starts only a PHP FPM process. Use this variant if you already have a seperate webserver. If you need more tools, that are not available on Alpine Linux, use the `fpm` image instead. diff --git a/postfixadmin/variant-fpm.md b/postfixadmin/variant-fpm.md new file mode 100644 index 000000000000..621d254ff7ac --- /dev/null +++ b/postfixadmin/variant-fpm.md @@ -0,0 +1,3 @@ +### fpm + +This image starts only a PHP FPM container. Use this variant if you already have a seperate webserver. diff --git a/postgres/README.md b/postgres/README.md index 6363098c47bf..7071521969c1 100644 --- a/postgres/README.md +++ b/postgres/README.md @@ -20,20 +20,20 @@ WARNING: [the PostgreSQL Docker Community](https://github.com/docker-library/postgres) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`12.3`, `12`, `latest`](https://github.com/docker-library/postgres/blob/88173efa530f1a174a7ea311c5b6ee5e383f68bd/12/Dockerfile) -- [`12.3-alpine`, `12-alpine`, `alpine`](https://github.com/docker-library/postgres/blob/4edbda205c684c861e6fbf964de5d00845864d42/12/alpine/Dockerfile) -- [`11.8`, `11`](https://github.com/docker-library/postgres/blob/aa4f329a17fd82077536602da12f4264fa195b20/11/Dockerfile) -- [`11.8-alpine`, `11-alpine`](https://github.com/docker-library/postgres/blob/0de8bbbcdcdd7783acb7ce2678c85d5aab977c55/11/alpine/Dockerfile) -- [`10.13`, `10`](https://github.com/docker-library/postgres/blob/f1e039c4ebd8e4691af65dfd6cf280df126039aa/10/Dockerfile) -- [`10.13-alpine`, `10-alpine`](https://github.com/docker-library/postgres/blob/245058ccb66fd6cb34fc512323f20ed676f1af15/10/alpine/Dockerfile) -- [`9.6.18`, `9.6`, `9`](https://github.com/docker-library/postgres/blob/95f4307ac7547094b5392d2a2a5aa7471301ffcb/9.6/Dockerfile) -- [`9.6.18-alpine`, `9.6-alpine`, `9-alpine`](https://github.com/docker-library/postgres/blob/7675803cba8dbf4aca2c1064b044b03cd0db6c2d/9.6/alpine/Dockerfile) -- [`9.5.22`, `9.5`](https://github.com/docker-library/postgres/blob/fa4482cec89b300589c30fc5590995a31f569a06/9.5/Dockerfile) -- [`9.5.22-alpine`, `9.5-alpine`](https://github.com/docker-library/postgres/blob/5104b38a3a159aad42014d69b3ba1a0c4d22ca4d/9.5/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -48,7 +48,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/postgres`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fpostgres) + [official-images repo's `library/postgres` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpostgres) [official-images repo's `library/postgres` file](https://github.com/docker-library/official-images/blob/master/library/postgres) ([history](https://github.com/docker-library/official-images/commits/master/library/postgres)) - **Source of this description**: @@ -76,13 +76,13 @@ The default `postgres` user and database are created in the entrypoint with `ini > The postgres database is a default database meant for use by users, utilities and third party applications. > -> [postgresql.org/docs](http://www.postgresql.org/docs/9.5/interactive/app-initdb.html) +> [postgresql.org/docs](https://www.postgresql.org/docs/14/app-initdb.html) ## ... or via `psql` ```console $ docker run -it --rm --network some-network postgres psql -h some-postgres -U postgres -psql (9.5.0) +psql (14.3) Type "help" for help. postgres=# SELECT 1; @@ -90,7 +90,6 @@ postgres=# SELECT 1; ---------- 1 (1 row) - ``` ## ... via [`docker stack deploy`](https://docs.docker.com/engine/reference/commandline/stack_deploy/) or [`docker-compose`](https://github.com/docker/compose) @@ -126,7 +125,7 @@ There are many ways to extend the `postgres` image. Without trying to support ev ## Environment Variables -The PostgreSQL image uses several environment variables which are easy to miss. While none of the variables are required, they may significantly aid you in using the image. +The PostgreSQL image uses several environment variables which are easy to miss. The only variable required is `POSTGRES_PASSWORD`, the rest are optional. **Warning**: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup. @@ -136,7 +135,7 @@ This environment variable is required for you to use the PostgreSQL image. It mu **Note 1:** The PostgreSQL image sets up `trust` authentication locally so you may notice a password is not required when connecting from `localhost` (inside the same container). However, a password will be required if connecting from a different host/container. -**Note 2:** This variable defines the superuser password in the PostgreSQL instance, as set by the `initdb` script during initial container startup. It has no effect on the `PGPASSWORD` environment variable that may be used by the `psql` client at runtime, as described at [https://www.postgresql.org/docs/10/static/libpq-envars.html](https://www.postgresql.org/docs/10/static/libpq-envars.html). `PGPASSWORD`, if used, will be specified as a separate environment variable. +**Note 2:** This variable defines the superuser password in the PostgreSQL instance, as set by the `initdb` script during initial container startup. It has no effect on the `PGPASSWORD` environment variable that may be used by the `psql` client at runtime, as described at [https://www.postgresql.org/docs/14/libpq-envars.html](https://www.postgresql.org/docs/14/libpq-envars.html). `PGPASSWORD`, if used, will be specified as a separate environment variable. ### `POSTGRES_USER` @@ -160,18 +159,20 @@ This optional environment variable can be used to define another location for th ### `POSTGRES_HOST_AUTH_METHOD` -This optional variable can be used to control the `auth-method` for `host` connections for `all` databases, `all` users, and `all` addresses. If unspecified then [`md5` password authentication](https://www.postgresql.org/docs/current/auth-password.html) is used. On an uninitialized database, this will populate `pg_hba.conf` via this approximate line: +This optional variable can be used to control the `auth-method` for `host` connections for `all` databases, `all` users, and `all` addresses. If unspecified then [`scram-sha-256` password authentication](https://www.postgresql.org/docs/14/auth-password.html) is used (in 14+; `md5` in older releases). On an uninitialized database, this will populate `pg_hba.conf` via this approximate line: ```console echo "host all all all $POSTGRES_HOST_AUTH_METHOD" >> pg_hba.conf ``` -See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) for more information about possible values and their meanings. +See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/docs/14/auth-pg-hba-conf.html) for more information about possible values and their meanings. -**Note 1:** It is not recommended to use [`trust`](https://www.postgresql.org/docs/current/auth-trust.html) since it allows anyone to connect without a password, even if one is set (like via `POSTGRES_PASSWORD`). For more information see the PostgreSQL documentation on [*Trust Authentication*](https://www.postgresql.org/docs/current/auth-trust.html). +**Note 1:** It is not recommended to use `trust` since it allows anyone to connect without a password, even if one is set (like via `POSTGRES_PASSWORD`). For more information see the PostgreSQL documentation on [*Trust Authentication*](https://www.postgresql.org/docs/14/auth-trust.html). **Note 2:** If you set `POSTGRES_HOST_AUTH_METHOD` to `trust`, then `POSTGRES_PASSWORD` is not required. +**Note 3:** If you set this to an alternative value (such as `scram-sha-256`), you might need additional `POSTGRES_INITDB_ARGS` for the database to initialize correctly (such as `POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256`). + ### `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. @@ -187,7 +188,7 @@ $ docker run -d \ postgres ``` -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/11/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account. +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. ## Docker Secrets @@ -224,7 +225,7 @@ Additionally, as of [docker-library/postgres#253](https://github.com/docker-libr ## Database Configuration -There are many ways to set PostgreSQL server configuration. For information on what is available to configure, see the postgresql.org [docs](https://www.postgresql.org/docs/current/static/runtime-config.html) for the specific version of PostgreSQL that you are running. Here are a few options for setting configuration: +There are many ways to set PostgreSQL server configuration. For information on what is available to configure, see the [PostgreSQL docs](https://www.postgresql.org/docs/14/runtime-config.html) for the specific version of PostgreSQL that you are running. Here are a few options for setting configuration: - Use a custom config file. Create a config file and get it into the container. If you need a starting place for your config file you can use the sample provided by PostgreSQL which is available in the container at `/usr/share/postgresql/postgresql.conf.sample` (`/usr/local/share/postgresql/postgresql.conf.sample` in Alpine variants). @@ -240,33 +241,41 @@ There are many ways to set PostgreSQL server configuration. For information on w $ docker run -d --name some-postgres -v "$PWD/my-postgres.conf":/etc/postgresql/postgresql.conf -e POSTGRES_PASSWORD=mysecretpassword postgres -c 'config_file=/etc/postgresql/postgresql.conf' ``` -- Set options directly on the run line. The entrypoint script is made so that any options passed to the docker command will be passed along to the `postgres` server daemon. From the [docs](https://www.postgresql.org/docs/current/static/app-postgres.html) we see that any option available in a `.conf` file can be set via `-c`. +- Set options directly on the run line. The entrypoint script is made so that any options passed to the docker command will be passed along to the `postgres` server daemon. From the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.6.3) we see that any option available in a `.conf` file can be set via `-c`. ```console - $ docker run -d --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres -c 'shared_buffers=256MB' -c 'max_connections=200' + $ docker run -d --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres -c shared_buffers=256MB -c max_connections=200 ``` ## Locale Customization -You can extend the image with a simple `Dockerfile` to set a different locale. The following example will set the default locale to `de_DE.utf8`: +You can extend the Debian-based images with a simple `Dockerfile` to set a different locale. The following example will set the default locale to `de_DE.utf8`: ```dockerfile -FROM postgres:9.4 +FROM postgres:14.3 RUN localedef -i de_DE -c -f UTF-8 -A /usr/share/locale/locale.alias de_DE.UTF-8 ENV LANG de_DE.utf8 ``` Since database initialization only happens on container startup, this allows us to set the language before it is created. +Also of note, Alpine-based variants starting with Postgres 15 support [ICU locales](https://www.postgresql.org/docs/15/locale.html#id-1.6.11.3.7). Previous Postgres versions based on alpine do *not* support locales; see ["Character sets and locale" in the musl documentation](https://wiki.musl-libc.org/functional-differences-from-glibc.html#Character-sets-and-locale) for more details. + +You can set locales in the Alpine-based images with `POSTGRES_INITDB_ARGS` to set a different locale. The following example will set the default locale for a newly initialized database to `de_DE.utf8`: + +```console +$ docker run -d -e LANG=de_DE.utf8 -e POSTGRES_INITDB_ARGS="--locale-provider=icu --icu-locale=de-DE" -e POSTGRES_PASSWORD=mysecretpassword postgres:15-alpine +``` + ## Additional Extensions -When using the default (Debian-based) variants, installing additional extensions (such as PostGIS) should be as simple as installing the relevant packages (see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/4eb614133d6aa87bfc5c952d24b7eb1f499e5c7c/12-3.0/Dockerfile) for a concrete example). +When using the default (Debian-based) variants, installing additional extensions (such as PostGIS) should be as simple as installing the relevant packages (see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/81a0b55/14-3.2/Dockerfile) for a concrete example). -When using the Alpine variants, any postgres extension not listed in [postgres-contrib](https://www.postgresql.org/docs/10/static/contrib.html) will need to be compiled in your own image (again, see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/4eb614133d6aa87bfc5c952d24b7eb1f499e5c7c/12-3.0/alpine/Dockerfile) for a concrete example). +When using the Alpine variants, any postgres extension not listed in [postgres-contrib](https://www.postgresql.org/docs/14/contrib.html) will need to be compiled in your own image (again, see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/81a0b55/14-3.2/alpine/Dockerfile) for a concrete example). # Arbitrary `--user` Notes -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#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`): @@ -281,7 +290,7 @@ initdb: could not look up effective user ID 1000: user does not exist The three easiest ways to get around this: -1. use the Debian variants (not the Alpine variants) and thus allow the image to use [the `nss_wrapper` library](https://cwrap.org/nss_wrapper.html) to "fake" `/etc/passwd` contents for you (see [docker-library/postgres#448](https://github.com/docker-library/postgres/pull/448) for more details) +1. allow the image to use [the `nss_wrapper` library](https://cwrap.org/nss_wrapper.html) to "fake" `/etc/passwd` contents for you (see [docker-library/postgres#448](https://github.com/docker-library/postgres/pull/448) for more details) 2. bind-mount `/etc/passwd` read-only from the host (if the UID you desire is a valid user on your host): @@ -311,16 +320,14 @@ The three easiest ways to get around this: 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/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir) - -See ["IPVS connection timeout issue" in the Docker Success Center](https://success.docker.com/article/ipvs-connection-timeout-issue) for details about IPVS connection timeouts which will affect long-running idle connections to PostgreSQL in Swarm Mode using overlay networks. +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). ## 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 `postgres` 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: @@ -341,11 +348,13 @@ 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. + ## `postgres:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/postgres/content.md b/postgres/content.md index 9992457b0cb6..1d2baf71a870 100644 --- a/postgres/content.md +++ b/postgres/content.md @@ -20,13 +20,13 @@ The default `postgres` user and database are created in the entrypoint with `ini > The postgres database is a default database meant for use by users, utilities and third party applications. > -> [postgresql.org/docs](http://www.postgresql.org/docs/9.5/interactive/app-initdb.html) +> [postgresql.org/docs](https://www.postgresql.org/docs/14/app-initdb.html) ## ... or via `psql` ```console $ docker run -it --rm --network some-network %%IMAGE%% psql -h some-postgres -U postgres -psql (9.5.0) +psql (14.3) Type "help" for help. postgres=# SELECT 1; @@ -34,7 +34,6 @@ postgres=# SELECT 1; ---------- 1 (1 row) - ``` ## %%STACK%% @@ -47,7 +46,7 @@ There are many ways to extend the `%%REPO%%` image. Without trying to support ev ## Environment Variables -The PostgreSQL image uses several environment variables which are easy to miss. While none of the variables are required, they may significantly aid you in using the image. +The PostgreSQL image uses several environment variables which are easy to miss. The only variable required is `POSTGRES_PASSWORD`, the rest are optional. **Warning**: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup. @@ -57,7 +56,7 @@ This environment variable is required for you to use the PostgreSQL image. It mu **Note 1:** The PostgreSQL image sets up `trust` authentication locally so you may notice a password is not required when connecting from `localhost` (inside the same container). However, a password will be required if connecting from a different host/container. -**Note 2:** This variable defines the superuser password in the PostgreSQL instance, as set by the `initdb` script during initial container startup. It has no effect on the `PGPASSWORD` environment variable that may be used by the `psql` client at runtime, as described at [https://www.postgresql.org/docs/10/static/libpq-envars.html](https://www.postgresql.org/docs/10/static/libpq-envars.html). `PGPASSWORD`, if used, will be specified as a separate environment variable. +**Note 2:** This variable defines the superuser password in the PostgreSQL instance, as set by the `initdb` script during initial container startup. It has no effect on the `PGPASSWORD` environment variable that may be used by the `psql` client at runtime, as described at [https://www.postgresql.org/docs/14/libpq-envars.html](https://www.postgresql.org/docs/14/libpq-envars.html). `PGPASSWORD`, if used, will be specified as a separate environment variable. ### `POSTGRES_USER` @@ -81,18 +80,20 @@ This optional environment variable can be used to define another location for th ### `POSTGRES_HOST_AUTH_METHOD` -This optional variable can be used to control the `auth-method` for `host` connections for `all` databases, `all` users, and `all` addresses. If unspecified then [`md5` password authentication](https://www.postgresql.org/docs/current/auth-password.html) is used. On an uninitialized database, this will populate `pg_hba.conf` via this approximate line: +This optional variable can be used to control the `auth-method` for `host` connections for `all` databases, `all` users, and `all` addresses. If unspecified then [`scram-sha-256` password authentication](https://www.postgresql.org/docs/14/auth-password.html) is used (in 14+; `md5` in older releases). On an uninitialized database, this will populate `pg_hba.conf` via this approximate line: ```console echo "host all all all $POSTGRES_HOST_AUTH_METHOD" >> pg_hba.conf ``` -See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/docs/current/auth-pg-hba-conf.html) for more information about possible values and their meanings. +See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/docs/14/auth-pg-hba-conf.html) for more information about possible values and their meanings. -**Note 1:** It is not recommended to use [`trust`](https://www.postgresql.org/docs/current/auth-trust.html) since it allows anyone to connect without a password, even if one is set (like via `POSTGRES_PASSWORD`). For more information see the PostgreSQL documentation on [*Trust Authentication*](https://www.postgresql.org/docs/current/auth-trust.html). +**Note 1:** It is not recommended to use `trust` since it allows anyone to connect without a password, even if one is set (like via `POSTGRES_PASSWORD`). For more information see the PostgreSQL documentation on [*Trust Authentication*](https://www.postgresql.org/docs/14/auth-trust.html). **Note 2:** If you set `POSTGRES_HOST_AUTH_METHOD` to `trust`, then `POSTGRES_PASSWORD` is not required. +**Note 3:** If you set this to an alternative value (such as `scram-sha-256`), you might need additional `POSTGRES_INITDB_ARGS` for the database to initialize correctly (such as `POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256`). + ### `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. @@ -108,7 +109,7 @@ $ docker run -d \ %%IMAGE%% ``` -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/11/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account. +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. ## Docker Secrets @@ -145,7 +146,7 @@ Additionally, as of [docker-library/postgres#253](https://github.com/docker-libr ## Database Configuration -There are many ways to set PostgreSQL server configuration. For information on what is available to configure, see the postgresql.org [docs](https://www.postgresql.org/docs/current/static/runtime-config.html) for the specific version of PostgreSQL that you are running. Here are a few options for setting configuration: +There are many ways to set PostgreSQL server configuration. For information on what is available to configure, see the [PostgreSQL docs](https://www.postgresql.org/docs/14/runtime-config.html) for the specific version of PostgreSQL that you are running. Here are a few options for setting configuration: - Use a custom config file. Create a config file and get it into the container. If you need a starting place for your config file you can use the sample provided by PostgreSQL which is available in the container at `/usr/share/postgresql/postgresql.conf.sample` (`/usr/local/share/postgresql/postgresql.conf.sample` in Alpine variants). @@ -161,33 +162,41 @@ There are many ways to set PostgreSQL server configuration. For information on w $ docker run -d --name some-postgres -v "$PWD/my-postgres.conf":/etc/postgresql/postgresql.conf -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%% -c 'config_file=/etc/postgresql/postgresql.conf' ``` -- Set options directly on the run line. The entrypoint script is made so that any options passed to the docker command will be passed along to the `postgres` server daemon. From the [docs](https://www.postgresql.org/docs/current/static/app-postgres.html) we see that any option available in a `.conf` file can be set via `-c`. +- Set options directly on the run line. The entrypoint script is made so that any options passed to the docker command will be passed along to the `postgres` server daemon. From the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.6.3) we see that any option available in a `.conf` file can be set via `-c`. ```console - $ docker run -d --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%% -c 'shared_buffers=256MB' -c 'max_connections=200' + $ docker run -d --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%% -c shared_buffers=256MB -c max_connections=200 ``` ## Locale Customization -You can extend the image with a simple `Dockerfile` to set a different locale. The following example will set the default locale to `de_DE.utf8`: +You can extend the Debian-based images with a simple `Dockerfile` to set a different locale. The following example will set the default locale to `de_DE.utf8`: ```dockerfile -FROM %%IMAGE%%:9.4 +FROM %%IMAGE%%:14.3 RUN localedef -i de_DE -c -f UTF-8 -A /usr/share/locale/locale.alias de_DE.UTF-8 ENV LANG de_DE.utf8 ``` Since database initialization only happens on container startup, this allows us to set the language before it is created. +Also of note, Alpine-based variants starting with Postgres 15 support [ICU locales](https://www.postgresql.org/docs/15/locale.html#id-1.6.11.3.7). Previous Postgres versions based on alpine do *not* support locales; see ["Character sets and locale" in the musl documentation](https://wiki.musl-libc.org/functional-differences-from-glibc.html#Character-sets-and-locale) for more details. + +You can set locales in the Alpine-based images with `POSTGRES_INITDB_ARGS` to set a different locale. The following example will set the default locale for a newly initialized database to `de_DE.utf8`: + +```console +$ docker run -d -e LANG=de_DE.utf8 -e POSTGRES_INITDB_ARGS="--locale-provider=icu --icu-locale=de-DE" -e POSTGRES_PASSWORD=mysecretpassword %%IMAGE%%:15-alpine +``` + ## Additional Extensions -When using the default (Debian-based) variants, installing additional extensions (such as PostGIS) should be as simple as installing the relevant packages (see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/4eb614133d6aa87bfc5c952d24b7eb1f499e5c7c/12-3.0/Dockerfile) for a concrete example). +When using the default (Debian-based) variants, installing additional extensions (such as PostGIS) should be as simple as installing the relevant packages (see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/81a0b55/14-3.2/Dockerfile) for a concrete example). -When using the Alpine variants, any postgres extension not listed in [postgres-contrib](https://www.postgresql.org/docs/10/static/contrib.html) will need to be compiled in your own image (again, see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/4eb614133d6aa87bfc5c952d24b7eb1f499e5c7c/12-3.0/alpine/Dockerfile) for a concrete example). +When using the Alpine variants, any postgres extension not listed in [postgres-contrib](https://www.postgresql.org/docs/14/contrib.html) will need to be compiled in your own image (again, see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/81a0b55/14-3.2/alpine/Dockerfile) for a concrete example). # Arbitrary `--user` Notes -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#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`): @@ -202,7 +211,7 @@ initdb: could not look up effective user ID 1000: user does not exist The three easiest ways to get around this: -1. use the Debian variants (not the Alpine variants) and thus allow the image to use [the `nss_wrapper` library](https://cwrap.org/nss_wrapper.html) to "fake" `/etc/passwd` contents for you (see [docker-library/postgres#448](https://github.com/docker-library/postgres/pull/448) for more details) +1. allow the image to use [the `nss_wrapper` library](https://cwrap.org/nss_wrapper.html) to "fake" `/etc/passwd` contents for you (see [docker-library/postgres#448](https://github.com/docker-library/postgres/pull/448) for more details) 2. bind-mount `/etc/passwd` read-only from the host (if the UID you desire is a valid user on your host): @@ -232,16 +241,14 @@ The three easiest ways to get around this: 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/#domainname-hostname-ipc-mac_address-privileged-read_only-shm_size-stdin_open-tty-user-working_dir) - -See ["IPVS connection timeout issue" in the Docker Success Center](https://success.docker.com/article/ipvs-connection-timeout-issue) for details about IPVS connection timeouts which will affect long-running idle connections to PostgreSQL in Swarm Mode using overlay networks. +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). ## 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 `%%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: diff --git a/push.pl b/push.pl index 0586df29119d..6f45a3f4b42e 100755 --- a/push.pl +++ b/push.pl @@ -69,32 +69,56 @@ 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 { my $currentText = shift; my $proposedFile = shift; my $lengthLimit = shift // 0; - my $proposedText = Mojo::File->new($proposedFile)->slurp or warn 'missing ' . $proposedFile; + my $proposedText = Mojo::File->new($proposedFile)->slurp // '** FILE MISSING! **'; $proposedText = trim(decode('UTF-8', $proposedText)); # remove our warning about generated files (Hub doesn't support HTML comments in Markdown) $proposedText =~ s% ^ \s* %%sx; + # extract/re-inject sponsored links + my $sponsoredLinks = ''; + if ($currentText =~ m{ ( ^ [#] \Q Sponsored Resources\E \n .*? \n --- \n ) }smx) { + $sponsoredLinks = $1 . "\n"; + $proposedText =~ s%$supportedTagsRegex%$sponsoredLinks$1$2%; + } + if ($lengthLimit > 0 && length($proposedText) > $lengthLimit) { # TODO https://github.com/docker/hub-beta-feedback/issues/238 my $fullUrl = "$githubBase/$proposedFile"; - 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. The full list can be found at [$fullUrl]($fullUrl#supported-tags-and-respective-dockerfile-links). See [docker/hub-beta-feedback#238](https://github.com/docker/hub-beta-feedback/issues/238) for more information.\n\n"; - 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.\n\n"; + 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 $startingNote = $genericNote . "\n\n"; + my $endingNote = "\n\n...\n\n" . $genericNote; my $trimmedText = $proposedText; # if our text is too long for the Hub length limit, let's first try removing the "Supported tags" list and add $tagsNote and see if that's enough to let us put the full image documentation - $trimmedText =~ s%^(# Supported tags and respective `Dockerfile` links\n\n).*?\n(?=# |\[)%$1$tagsNote%ms; + $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 = $genericNote . substr $proposedText, 0, ($lengthLimit - length($genericNote)); + $trimmedText = $startingNote . substr $proposedText, 0, ($lengthLimit - length($startingNote . $endingNote)); + + # 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 + if ($trimmedText =~ m/\n$/) { + # if we already end with a newline, we should be fine to just trim newlines and add our ending note + $trimmedText =~ s/\n+$//; + } + else { + # otherwise, we need to get a little bit more creative and trim back to the last fully blank line (which we can reasonably assume is safe thanks to our markdownfmt) + $trimmedText =~ s/\n\n(.\n?)*$//; + } + $trimmedText .= $endingNote; } $proposedText = $trimmedText; @@ -170,7 +194,7 @@ sub prompt_for_edit { qw( convert -background none -density 1200 -strip -resize 120x120> -gravity center -extent 120x120 ), $logoToConvert, $repoLogo120, - ) == 0 or die "failed to convert $repoLogoPng into $repoLogo120"; + ) == 0 or die "failed to convert $logoToConvert into $repoLogo120"; } } if (-f $repoLogo120) { diff --git a/pypy/README.md b/pypy/README.md index 90fa33576e18..c20f4cffdca8 100644 --- a/pypy/README.md +++ b/pypy/README.md @@ -20,14 +20,56 @@ WARNING: [the Docker Community](https://github.com/docker-library/pypy) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.7-7.3.0`, `2.7-7.3`, `2.7-7`, `2.7`, `2-7.3.0`, `2-7.3`, `2-7`, `2`, `2.7-7.3.0-buster`, `2.7-7.3-buster`, `2.7-7-buster`, `2.7-buster`, `2-7.3.0-buster`, `2-7.3-buster`, `2-7-buster`, `2-buster`](https://github.com/docker-library/pypy/blob/30385f19542aa8bdcca7fb2f7a9a18786e9e8f17/2.7/Dockerfile) -- [`2.7-7.3.0-slim`, `2.7-7.3-slim`, `2.7-7-slim`, `2.7-slim`, `2-7.3.0-slim`, `2-7.3-slim`, `2-7-slim`, `2-slim`, `2.7-7.3.0-slim-buster`, `2.7-7.3-slim-buster`, `2.7-7-slim-buster`, `2.7-slim-buster`, `2-7.3.0-slim-buster`, `2-7.3-slim-buster`, `2-7-slim-buster`, `2-slim-buster`](https://github.com/docker-library/pypy/blob/30385f19542aa8bdcca7fb2f7a9a18786e9e8f17/2.7/slim/Dockerfile) -- [`3.6-7.3.0`, `3.6-7.3`, `3.6-7`, `3.6`, `3-7.3.0`, `3-7.3`, `3-7`, `3`, `latest`, `3.6-7.3.0-buster`, `3.6-7.3-buster`, `3.6-7-buster`, `3.6-buster`, `3-7.3.0-buster`, `3-7.3-buster`, `3-7-buster`, `3-buster`, `buster`](https://github.com/docker-library/pypy/blob/30385f19542aa8bdcca7fb2f7a9a18786e9e8f17/3.6/Dockerfile) -- [`3.6-7.3.0-slim`, `3.6-7.3-slim`, `3.6-7-slim`, `3.6-slim`, `3-7.3.0-slim`, `3-7.3-slim`, `3-7-slim`, `3-slim`, `slim`, `3.6-7.3.0-slim-buster`, `3.6-7.3-slim-buster`, `3.6-7-slim-buster`, `3.6-slim-buster`, `3-7.3.0-slim-buster`, `3-7.3-slim-buster`, `3-7-slim-buster`, `3-slim-buster`, `slim-buster`](https://github.com/docker-library/pypy/blob/30385f19542aa8bdcca7fb2f7a9a18786e9e8f17/3.6/slim/Dockerfile) +(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 + +- [`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) + +## 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) # Quick reference (cont.) @@ -35,14 +77,14 @@ WARNING: [https://github.com/docker-library/pypy/issues](https://github.com/docker-library/pypy/issues) - **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/), [`ppc64le`](https://hub.docker.com/r/ppc64le/pypy/), [`s390x`](https://hub.docker.com/r/s390x/pypy/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/pypy/` directory](https://github.com/docker-library/repo-info/blob/master/repos/pypy) ([history](https://github.com/docker-library/repo-info/commits/master/repos/pypy)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/pypy`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fpypy) + [official-images repo's `library/pypy` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpypy) [official-images repo's `library/pypy` file](https://github.com/docker-library/official-images/blob/master/library/pypy) ([history](https://github.com/docker-library/official-images/commits/master/library/pypy)) - **Source of this description**: @@ -119,7 +161,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 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 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. 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. @@ -127,6 +169,15 @@ This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-d This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `pypy`. Unless you are working in an environment where *only* the `pypy` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. +## `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. + +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://bitbucket.org/pypy/pypy/src/c3ff0dd6252b6ba0d230f3624dbb4aab8973a1d0/LICENSE?at=default) for software contained in this image. diff --git a/python/README.md b/python/README.md index 5e68df8305b7..32c3c09499fa 100644 --- a/python/README.md +++ b/python/README.md @@ -20,7 +20,7 @@ WARNING: [the Docker Community](https://github.com/docker-library/python) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 @@ -28,64 +28,78 @@ WARNING: ## Simple Tags -- [`3.9.0a6-buster`, `3.9-rc-buster`, `rc-buster`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/buster/Dockerfile) -- [`3.9.0a6-alpine3.11`, `3.9-rc-alpine3.11`, `rc-alpine3.11`, `3.9.0a6-alpine`, `3.9-rc-alpine`, `rc-alpine`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/alpine3.11/Dockerfile) -- [`3.9.0a6-windowsservercore-ltsc2016`, `3.9-rc-windowsservercore-ltsc2016`, `rc-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/windows/windowsservercore-ltsc2016/Dockerfile) -- [`3.9.0a6-windowsservercore-1809`, `3.9-rc-windowsservercore-1809`, `rc-windowsservercore-1809`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/windows/windowsservercore-1809/Dockerfile) -- [`3.8.3-buster`, `3.8-buster`, `3-buster`, `buster`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/buster/Dockerfile) -- [`3.8.3-slim-buster`, `3.8-slim-buster`, `3-slim-buster`, `slim-buster`, `3.8.3-slim`, `3.8-slim`, `3-slim`, `slim`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/buster/slim/Dockerfile) -- [`3.8.3-alpine3.11`, `3.8-alpine3.11`, `3-alpine3.11`, `alpine3.11`, `3.8.3-alpine`, `3.8-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/alpine3.11/Dockerfile) -- [`3.8.3-alpine3.10`, `3.8-alpine3.10`, `3-alpine3.10`, `alpine3.10`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/alpine3.10/Dockerfile) -- [`3.8.3-windowsservercore-ltsc2016`, `3.8-windowsservercore-ltsc2016`, `3-windowsservercore-ltsc2016`, `windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/windows/windowsservercore-ltsc2016/Dockerfile) -- [`3.8.3-windowsservercore-1809`, `3.8-windowsservercore-1809`, `3-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/windows/windowsservercore-1809/Dockerfile) -- [`3.7.7-buster`, `3.7-buster`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/buster/Dockerfile) -- [`3.7.7-slim-buster`, `3.7-slim-buster`, `3.7.7-slim`, `3.7-slim`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/buster/slim/Dockerfile) -- [`3.7.7-stretch`, `3.7-stretch`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/stretch/Dockerfile) -- [`3.7.7-slim-stretch`, `3.7-slim-stretch`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/stretch/slim/Dockerfile) -- [`3.7.7-alpine3.11`, `3.7-alpine3.11`, `3.7.7-alpine`, `3.7-alpine`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/alpine3.11/Dockerfile) -- [`3.7.7-alpine3.10`, `3.7-alpine3.10`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/alpine3.10/Dockerfile) -- [`3.7.7-windowsservercore-ltsc2016`, `3.7-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/windows/windowsservercore-ltsc2016/Dockerfile) -- [`3.7.7-windowsservercore-1809`, `3.7-windowsservercore-1809`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/windows/windowsservercore-1809/Dockerfile) -- [`3.6.10-buster`, `3.6-buster`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/buster/Dockerfile) -- [`3.6.10-slim-buster`, `3.6-slim-buster`, `3.6.10-slim`, `3.6-slim`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/buster/slim/Dockerfile) -- [`3.6.10-stretch`, `3.6-stretch`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/stretch/Dockerfile) -- [`3.6.10-slim-stretch`, `3.6-slim-stretch`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/stretch/slim/Dockerfile) -- [`3.6.10-alpine3.11`, `3.6-alpine3.11`, `3.6.10-alpine`, `3.6-alpine`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/alpine3.11/Dockerfile) -- [`3.6.10-alpine3.10`, `3.6-alpine3.10`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/alpine3.10/Dockerfile) -- [`3.5.9-buster`, `3.5-buster`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/buster/Dockerfile) -- [`3.5.9-slim-buster`, `3.5-slim-buster`, `3.5.9-slim`, `3.5-slim`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/buster/slim/Dockerfile) -- [`3.5.9-stretch`, `3.5-stretch`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/stretch/Dockerfile) -- [`3.5.9-slim-stretch`, `3.5-slim-stretch`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/stretch/slim/Dockerfile) -- [`3.5.9-alpine3.11`, `3.5-alpine3.11`, `3.5.9-alpine`, `3.5-alpine`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/alpine3.11/Dockerfile) -- [`3.5.9-alpine3.10`, `3.5-alpine3.10`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/alpine3.10/Dockerfile) +- [`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) ## Shared Tags -- `3.9.0a6`, `3.9-rc`, `rc`: - - [`3.9.0a6-buster`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/buster/Dockerfile) - - [`3.9.0a6-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.9.0a6-windowsservercore-1809`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/windows/windowsservercore-1809/Dockerfile) -- `3.9.0a6-windowsservercore`, `3.9-rc-windowsservercore`, `rc-windowsservercore`: - - [`3.9.0a6-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.9.0a6-windowsservercore-1809`](https://github.com/docker-library/python/blob/06d7952f07eae237666f2fd0ccf6189a5d8ee83c/3.9-rc/windows/windowsservercore-1809/Dockerfile) -- `3.8.3`, `3.8`, `3`, `latest`: - - [`3.8.3-buster`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/buster/Dockerfile) - - [`3.8.3-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.8.3-windowsservercore-1809`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/windows/windowsservercore-1809/Dockerfile) -- `3.8.3-windowsservercore`, `3.8-windowsservercore`, `3-windowsservercore`, `windowsservercore`: - - [`3.8.3-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.8.3-windowsservercore-1809`](https://github.com/docker-library/python/blob/3ebdcfdf001fb2a5b6c4d283379371f7d0537436/3.8/windows/windowsservercore-1809/Dockerfile) -- `3.7.7`, `3.7`: - - [`3.7.7-buster`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/buster/Dockerfile) - - [`3.7.7-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.7.7-windowsservercore-1809`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/windows/windowsservercore-1809/Dockerfile) -- `3.7.7-windowsservercore`, `3.7-windowsservercore`: - - [`3.7.7-windowsservercore-ltsc2016`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/windows/windowsservercore-ltsc2016/Dockerfile) - - [`3.7.7-windowsservercore-1809`](https://github.com/docker-library/python/blob/b818e9441c088295165edf79a791503f1fe7f6f7/3.7/windows/windowsservercore-1809/Dockerfile) -- `3.6.10`, `3.6`: - - [`3.6.10-buster`](https://github.com/docker-library/python/blob/bbb44b3ab29fb1d60dbe59c5a7ea4af868657ff2/3.6/buster/Dockerfile) -- `3.5.9`, `3.5`: - - [`3.5.9-buster`](https://github.com/docker-library/python/blob/37be883220593e283fc8f9298e0804a063e29c44/3.5/buster/Dockerfile) +- `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) # Quick reference (cont.) @@ -100,7 +114,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/python`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fpython) + [official-images repo's `library/python` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpython) [official-images repo's `library/python` file](https://github.com/docker-library/official-images/blob/master/library/python) ([history](https://github.com/docker-library/official-images/commits/master/library/python)) - **Source of this description**: @@ -167,6 +181,10 @@ or (again, if you need to use Python 2): $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp python:2 python your-daemon-or-script.py ``` +## 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 + # Image Variants The `python` images come in many flavors, each designed for a specific use case. @@ -175,15 +193,19 @@ 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 buster or stretch 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 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. 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. + ## `python:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). @@ -196,10 +218,6 @@ For information about how to get Docker running on Windows, please see the relev - [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) -## `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. - # License View license information for [Python 2](https://docs.python.org/2/license.html) and [Python 3](https://docs.python.org/3/license.html). diff --git a/python/content.md b/python/content.md index 512f4099e724..7a8abeda0b13 100644 --- a/python/content.md +++ b/python/content.md @@ -58,3 +58,7 @@ or (again, if you need to use Python 2): ```console $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp %%IMAGE%%:2 python your-daemon-or-script.py ``` + +## 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 diff --git a/r-base/README.md b/r-base/README.md index 830a5b8e3b63..396db1c9e598 100644 --- a/r-base/README.md +++ b/r-base/README.md @@ -20,11 +20,11 @@ WARNING: [the Rocker Community](https://github.com/rocker-org/rocker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.0.0`, `latest`](https://github.com/rocker-org/rocker/blob/1286d1fa0165a06b93ea9c4cebd94a54cbf86227/r-base/latest/Dockerfile) +- [`4.2.2`, `latest`](https://github.com/rocker-org/rocker/blob/2f92c6c8b8da7b3e61aabc44cacc0439bf267d31/r-base/4.2.2/Dockerfile) # Quick reference (cont.) @@ -32,14 +32,14 @@ WARNING: [GitHub](https://github.com/rocker-org/rocker/issues) or [Email](mailto:rocker-maintainers@eddelbuettel.com) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/r-base/) + [`amd64`](https://hub.docker.com/r/amd64/r-base/), [`arm64v8`](https://hub.docker.com/r/arm64v8/r-base/), [`ppc64le`](https://hub.docker.com/r/ppc64le/r-base/), [`s390x`](https://hub.docker.com/r/s390x/r-base/) - **Published image artifact details**: [repo-info repo's `repos/r-base/` directory](https://github.com/docker-library/repo-info/blob/master/repos/r-base) ([history](https://github.com/docker-library/repo-info/commits/master/repos/r-base)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/r-base`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fr-base) + [official-images repo's `library/r-base` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fr-base) [official-images repo's `library/r-base` file](https://github.com/docker-library/official-images/blob/master/library/r-base) ([history](https://github.com/docker-library/official-images/commits/master/library/r-base)) - **Source of this description**: diff --git a/rabbitmq/README.md b/rabbitmq/README.md index 0f49f31492f7..961c858707be 100644 --- a/rabbitmq/README.md +++ b/rabbitmq/README.md @@ -20,18 +20,22 @@ WARNING: [the Docker Community](https://github.com/docker-library/rabbitmq) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.8.3`, `3.8`, `3`, `latest`](https://github.com/docker-library/rabbitmq/blob/91be7cf597c069c9a038ae2619adac1a85e68d4d/3.8/ubuntu/Dockerfile) -- [`3.8.3-management`, `3.8-management`, `3-management`, `management`](https://github.com/docker-library/rabbitmq/blob/af5f6ff9a3916d89be6d190d562d247ae12ffa73/3.8/ubuntu/management/Dockerfile) -- [`3.8.3-alpine`, `3.8-alpine`, `3-alpine`, `alpine`](https://github.com/docker-library/rabbitmq/blob/91be7cf597c069c9a038ae2619adac1a85e68d4d/3.8/alpine/Dockerfile) -- [`3.8.3-management-alpine`, `3.8-management-alpine`, `3-management-alpine`, `management-alpine`](https://github.com/docker-library/rabbitmq/blob/af5f6ff9a3916d89be6d190d562d247ae12ffa73/3.8/alpine/management/Dockerfile) -- [`3.7.26`, `3.7`](https://github.com/docker-library/rabbitmq/blob/c24b3b15b1128272e64cba8d1dba37603c2b1d68/3.7/ubuntu/Dockerfile) -- [`3.7.26-management`, `3.7-management`](https://github.com/docker-library/rabbitmq/blob/bf2c73df6ee8475ac30c9773a8128852450ea518/3.7/ubuntu/management/Dockerfile) -- [`3.7.26-alpine`, `3.7-alpine`](https://github.com/docker-library/rabbitmq/blob/c24b3b15b1128272e64cba8d1dba37603c2b1d68/3.7/alpine/Dockerfile) -- [`3.7.26-management-alpine`, `3.7-management-alpine`](https://github.com/docker-library/rabbitmq/blob/bf2c73df6ee8475ac30c9773a8128852450ea518/3.7/alpine/management/Dockerfile) +- [`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) # Quick reference (cont.) @@ -39,14 +43,14 @@ WARNING: [https://github.com/docker-library/rabbitmq/issues](https://github.com/docker-library/rabbitmq/issues) - **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/), [`s390x`](https://hub.docker.com/r/s390x/rabbitmq/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/rabbitmq/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rabbitmq) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rabbitmq)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/rabbitmq`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frabbitmq) + [official-images repo's `library/rabbitmq` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frabbitmq) [official-images repo's `library/rabbitmq` file](https://github.com/docker-library/official-images/blob/master/library/rabbitmq) ([history](https://github.com/docker-library/official-images/commits/master/library/rabbitmq)) - **Source of this description**: @@ -83,50 +87,60 @@ This will start a RabbitMQ container listening on the default port of 5672. If y Note the `database dir` there, especially that it has my "Node Name" appended to the end for the file storage. This image makes all of `/var/lib/rabbitmq` a volume by default. -### Memory Limits +### Environment Variables -RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits. +For a list of environment variables supported by RabbitMQ itself, see the [Environment Variables section of rabbitmq.com/configure](https://www.rabbitmq.com/configure.html#supported-environment-variables) -The upstream configuration setting for this is `vm_memory_high_watermark`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation. +**WARNING:** As of RabbitMQ 3.9, all of the docker-specific variables listed below are deprecated and no longer used. Please use a configuration file instead; visit [rabbitmq.com/configure](https://www.rabbitmq.com/configure.html) to learn more about the configuration file. For a starting point, the 3.8 images will print out the config file it generated from supplied environment variables. -In this image, this value is set via `RABBITMQ_VM_MEMORY_HIGH_WATERMARK`. The value of this environment variable is interpreted as follows: +```bash +# Unavailable in 3.9 and up +RABBITMQ_DEFAULT_PASS_FILE +RABBITMQ_DEFAULT_USER_FILE +RABBITMQ_MANAGEMENT_SSL_CACERTFILE +RABBITMQ_MANAGEMENT_SSL_CERTFILE +RABBITMQ_MANAGEMENT_SSL_DEPTH +RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT +RABBITMQ_MANAGEMENT_SSL_KEYFILE +RABBITMQ_MANAGEMENT_SSL_VERIFY +RABBITMQ_SSL_CACERTFILE +RABBITMQ_SSL_CERTFILE +RABBITMQ_SSL_DEPTH +RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT +RABBITMQ_SSL_KEYFILE +RABBITMQ_SSL_VERIFY +RABBITMQ_VM_MEMORY_HIGH_WATERMARK +``` -- `0.49` is treated as `49%`, just like upstream (`{ vm_memory_high_watermark, 0.49 }`) -- `56%` is treated as `56%` (`0.56`; `{ vm_memory_high_watermark, 0.56 }`) -- `1073741824` is treated as an absolute number of bytes (`{ vm_memory_high_watermark, { absolute, 1073741824 } }`) -- `1024MiB` is treated as an absolute number of bytes with a unit (`{ vm_memory_high_watermark, { absolute, "1024MiB" } }`) +### Setting default user and password -The main behavioral difference is in how percentages are handled. If the current container has a memory limit (`--memory`/`-m`), a percentage value will be calculated to an absolute byte value based on the memory limit, rather than being passed to RabbitMQ as-is. For example, a container run with `--memory 2048m` (and the implied upstream-default `RABBITMQ_VM_MEMORY_HIGH_WATERMARK` of `40%`) will set the effective limit to `819MB` (which is `40%` of `2048MB`). +If you wish to change the default username and password of `guest` / `guest`, you can do so with the `RABBITMQ_DEFAULT_USER` and `RABBITMQ_DEFAULT_PASS` environmental variables. These variables were available previously in the docker-specific entrypoint shell script but are now available in RabbitMQ directly. -### Erlang Cookie +```console +$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management +``` -See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary. +You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser and use `user`/`password` to gain access to the management console -For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), use `RABBITMQ_ERLANG_COOKIE`: +### Setting default vhost + +If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables: ```console -$ docker run -d --hostname some-rabbit --name some-rabbit --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3 +$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management ``` -This can then be used from a separate instance to connect: +### Memory Limits -```console -$ docker run -it --rm --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' rabbitmq:3 bash -root@f2a2d3d27c75:/# rabbitmqctl -n rabbit@some-rabbit list_users -Listing users ... -guest [administrator] -``` +RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits (e.g. [`docker run --memory=..`](https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory)). -Alternatively, one can also use `RABBITMQ_NODENAME` to make repeated `rabbitmqctl` invocations simpler: +The upstream configuration setting for this is `vm_memory_high_watermark` in `rabbitmq.conf`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation. If you set a relative limit via `vm_memory_high_watermark.relative`, then RabbitMQ will calculate its limits based on the host's total memory and not the limit set by the contianer runtime. -```console -$ docker run -it --rm --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' -e RABBITMQ_NODENAME=rabbit@some-rabbit rabbitmq:3 bash -root@f2a2d3d27c75:/# rabbitmqctl list_users -Listing users ... -guest [administrator] -``` +### Erlang Cookie + +See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary. For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), provide a cookie file (default location of `/var/lib/rabbitmq/.erlang.cookie`). -If you wish to provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)), it needs to be mounted at `/var/lib/rabbitmq/.erlang.cookie`: +For example, you can provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)): ```console docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... rabbitmq @@ -150,70 +164,12 @@ $ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3 You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser. -### Environment Variables - -A small selection of the possible environment variables are defined in the Dockerfile to be passed through the docker engine (listed below). For a list of environment variables supported by RabbitMQ itself, see: https://www.rabbitmq.com/configure.html - -For SSL configuration without the management plugin: - -```bash -RABBITMQ_SSL_CACERTFILE -RABBITMQ_SSL_CERTFILE -RABBITMQ_SSL_DEPTH -RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT -RABBITMQ_SSL_KEYFILE -RABBITMQ_SSL_VERIFY -``` - -For SSL configuration using the management plugin: - -```bash -RABBITMQ_MANAGEMENT_SSL_CACERTFILE -RABBITMQ_MANAGEMENT_SSL_CERTFILE -RABBITMQ_MANAGEMENT_SSL_DEPTH -RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT -RABBITMQ_MANAGEMENT_SSL_KEYFILE -RABBITMQ_MANAGEMENT_SSL_VERIFY -``` - -### Setting default user and password - -If you wish to change the default username and password of `guest` / `guest`, you can do so with the `RABBITMQ_DEFAULT_USER` and `RABBITMQ_DEFAULT_PASS` environmental variables: - -```console -$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management -``` - -You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser and use `user`/`password` to gain access to the management console - -To source the username and password from files instead of environment variables, add a `_FILE` suffix to the environment variable names (for example, `RABBITMQ_DEFAULT_USER_FILE=/run/secrets/xxx` to use [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)). - -### Setting default vhost - -If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables: - -```console -$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management -``` - -### Enabling HiPE (deprecated) - -**Note**: HiPE is disabled since version 3.7.15 of rabbimq images (https://github.com/docker-library/rabbitmq/pull/340) - -See the [RabbitMQ "Configuration"](http://www.rabbitmq.com/configure.html#config-items) for more information about various configuration options. - -For enabling the HiPE compiler on startup use `RABBITMQ_HIPE_COMPILE` set to `1`. Accroding to the official documentation: - -> Set to true to precompile parts of RabbitMQ with HiPE, a just-in-time compiler for Erlang. This will increase server throughput at the cost of increased startup time. You might see 20-50% better performance at the cost of a few minutes delay at startup. - -It is therefore important to take that startup delay into consideration when configuring health checks, automated clustering etc. - ### Enabling Plugins Creating a Dockerfile will have them enabled at runtime. To see the full list of plugins present on the image `rabbitmq-plugins list` ```Dockerfile -FROM rabbitmq:3.7-management +FROM rabbitmq:3.8-management RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp ``` @@ -227,12 +183,10 @@ Example `enabled_plugins` ### Additional Configuration -If additional configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction. +If configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction. Alternatively, it is possible to use the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` environment variable, whose syntax is described [in section 7.8 ("Configuring an Application") of the Erlang OTP Design Principles User's Guide](http://erlang.org/doc/design_principles/applications.html#id81887) (the appropriate value for `-ApplName` is `-rabbit`), this method requires a slightly different reproduction of its equivalent entry in `rabbitmq.conf`. For example, configuring [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007"`. Where the space between the variable `channel_max` and its value `4007` correctly becomes a comma when translated in the environment. -Additional configuration keys would be specified as a list. For example, configuring both [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) and [`auth_backends`](https://www.rabbitmq.com/ldap.html#overview) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007 auth_backends [rabbit_auth_backend_ldap,rabbit_auth_backend_internal]"`. Note that some variables such as for `auth_backends` require their value(s) to be enclosed in brackets, and for multiple values explicitly including the comma as a delimiter. - ### Health/Liveness/Readiness Checking See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) and [the discussion on docker-library/rabbitmq#174 (especially the large comment by Michael Klishin from RabbitMQ upstream)](https://github.com/docker-library/rabbitmq/pull/174#issuecomment-452002696) for a detailed explanation of why this image does not come with a default `HEALTHCHECK` defined, and for suggestions for implementing your own health/liveness/readiness checks. @@ -247,9 +201,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `rabbitmq:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/rabbitmq/content.md b/rabbitmq/content.md index 4b62b0a86268..268b74529d12 100644 --- a/rabbitmq/content.md +++ b/rabbitmq/content.md @@ -29,50 +29,60 @@ This will start a RabbitMQ container listening on the default port of 5672. If y Note the `database dir` there, especially that it has my "Node Name" appended to the end for the file storage. This image makes all of `/var/lib/rabbitmq` a volume by default. -### Memory Limits +### Environment Variables -RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits. +For a list of environment variables supported by RabbitMQ itself, see the [Environment Variables section of rabbitmq.com/configure](https://www.rabbitmq.com/configure.html#supported-environment-variables) -The upstream configuration setting for this is `vm_memory_high_watermark`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation. +**WARNING:** As of RabbitMQ 3.9, all of the docker-specific variables listed below are deprecated and no longer used. Please use a configuration file instead; visit [rabbitmq.com/configure](https://www.rabbitmq.com/configure.html) to learn more about the configuration file. For a starting point, the 3.8 images will print out the config file it generated from supplied environment variables. -In this image, this value is set via `RABBITMQ_VM_MEMORY_HIGH_WATERMARK`. The value of this environment variable is interpreted as follows: +```bash +# Unavailable in 3.9 and up +RABBITMQ_DEFAULT_PASS_FILE +RABBITMQ_DEFAULT_USER_FILE +RABBITMQ_MANAGEMENT_SSL_CACERTFILE +RABBITMQ_MANAGEMENT_SSL_CERTFILE +RABBITMQ_MANAGEMENT_SSL_DEPTH +RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT +RABBITMQ_MANAGEMENT_SSL_KEYFILE +RABBITMQ_MANAGEMENT_SSL_VERIFY +RABBITMQ_SSL_CACERTFILE +RABBITMQ_SSL_CERTFILE +RABBITMQ_SSL_DEPTH +RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT +RABBITMQ_SSL_KEYFILE +RABBITMQ_SSL_VERIFY +RABBITMQ_VM_MEMORY_HIGH_WATERMARK +``` -- `0.49` is treated as `49%`, just like upstream (`{ vm_memory_high_watermark, 0.49 }`) -- `56%` is treated as `56%` (`0.56`; `{ vm_memory_high_watermark, 0.56 }`) -- `1073741824` is treated as an absolute number of bytes (`{ vm_memory_high_watermark, { absolute, 1073741824 } }`) -- `1024MiB` is treated as an absolute number of bytes with a unit (`{ vm_memory_high_watermark, { absolute, "1024MiB" } }`) +### Setting default user and password -The main behavioral difference is in how percentages are handled. If the current container has a memory limit (`--memory`/`-m`), a percentage value will be calculated to an absolute byte value based on the memory limit, rather than being passed to RabbitMQ as-is. For example, a container run with `--memory 2048m` (and the implied upstream-default `RABBITMQ_VM_MEMORY_HIGH_WATERMARK` of `40%`) will set the effective limit to `819MB` (which is `40%` of `2048MB`). +If you wish to change the default username and password of `guest` / `guest`, you can do so with the `RABBITMQ_DEFAULT_USER` and `RABBITMQ_DEFAULT_PASS` environmental variables. These variables were available previously in the docker-specific entrypoint shell script but are now available in RabbitMQ directly. -### Erlang Cookie +```console +$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password %%IMAGE%%:3-management +``` -See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary. +You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser and use `user`/`password` to gain access to the management console -For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), use `RABBITMQ_ERLANG_COOKIE`: +### Setting default vhost + +If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables: ```console -$ docker run -d --hostname some-rabbit --name some-rabbit --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' %%IMAGE%%:3 +$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost %%IMAGE%%:3-management ``` -This can then be used from a separate instance to connect: +### Memory Limits -```console -$ docker run -it --rm --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' %%IMAGE%%:3 bash -root@f2a2d3d27c75:/# rabbitmqctl -n rabbit@some-rabbit list_users -Listing users ... -guest [administrator] -``` +RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits (e.g. [`docker run --memory=..`](https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory)). -Alternatively, one can also use `RABBITMQ_NODENAME` to make repeated `rabbitmqctl` invocations simpler: +The upstream configuration setting for this is `vm_memory_high_watermark` in `rabbitmq.conf`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation. If you set a relative limit via `vm_memory_high_watermark.relative`, then RabbitMQ will calculate its limits based on the host's total memory and not the limit set by the contianer runtime. -```console -$ docker run -it --rm --network some-network -e RABBITMQ_ERLANG_COOKIE='secret cookie here' -e RABBITMQ_NODENAME=rabbit@some-rabbit %%IMAGE%%:3 bash -root@f2a2d3d27c75:/# rabbitmqctl list_users -Listing users ... -guest [administrator] -``` +### Erlang Cookie + +See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary. For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), provide a cookie file (default location of `/var/lib/rabbitmq/.erlang.cookie`). -If you wish to provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)), it needs to be mounted at `/var/lib/rabbitmq/.erlang.cookie`: +For example, you can provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)): ```console docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... %%IMAGE%% @@ -96,70 +106,12 @@ $ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 %%IMAGE%%: You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser. -### Environment Variables - -A small selection of the possible environment variables are defined in the Dockerfile to be passed through the docker engine (listed below). For a list of environment variables supported by RabbitMQ itself, see: https://www.rabbitmq.com/configure.html - -For SSL configuration without the management plugin: - -```bash -RABBITMQ_SSL_CACERTFILE -RABBITMQ_SSL_CERTFILE -RABBITMQ_SSL_DEPTH -RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT -RABBITMQ_SSL_KEYFILE -RABBITMQ_SSL_VERIFY -``` - -For SSL configuration using the management plugin: - -```bash -RABBITMQ_MANAGEMENT_SSL_CACERTFILE -RABBITMQ_MANAGEMENT_SSL_CERTFILE -RABBITMQ_MANAGEMENT_SSL_DEPTH -RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT -RABBITMQ_MANAGEMENT_SSL_KEYFILE -RABBITMQ_MANAGEMENT_SSL_VERIFY -``` - -### Setting default user and password - -If you wish to change the default username and password of `guest` / `guest`, you can do so with the `RABBITMQ_DEFAULT_USER` and `RABBITMQ_DEFAULT_PASS` environmental variables: - -```console -$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password %%IMAGE%%:3-management -``` - -You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser and use `user`/`password` to gain access to the management console - -To source the username and password from files instead of environment variables, add a `_FILE` suffix to the environment variable names (for example, `RABBITMQ_DEFAULT_USER_FILE=/run/secrets/xxx` to use [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)). - -### Setting default vhost - -If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables: - -```console -$ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost %%IMAGE%%:3-management -``` - -### Enabling HiPE (deprecated) - -**Note**: HiPE is disabled since version 3.7.15 of rabbimq images (https://github.com/docker-library/rabbitmq/pull/340) - -See the [RabbitMQ "Configuration"](http://www.rabbitmq.com/configure.html#config-items) for more information about various configuration options. - -For enabling the HiPE compiler on startup use `RABBITMQ_HIPE_COMPILE` set to `1`. Accroding to the official documentation: - -> Set to true to precompile parts of RabbitMQ with HiPE, a just-in-time compiler for Erlang. This will increase server throughput at the cost of increased startup time. You might see 20-50% better performance at the cost of a few minutes delay at startup. - -It is therefore important to take that startup delay into consideration when configuring health checks, automated clustering etc. - ### Enabling Plugins Creating a Dockerfile will have them enabled at runtime. To see the full list of plugins present on the image `rabbitmq-plugins list` ```Dockerfile -FROM rabbitmq:3.7-management +FROM rabbitmq:3.8-management RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp ``` @@ -173,12 +125,10 @@ Example `enabled_plugins` ### Additional Configuration -If additional configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction. +If configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction. Alternatively, it is possible to use the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` environment variable, whose syntax is described [in section 7.8 ("Configuring an Application") of the Erlang OTP Design Principles User's Guide](http://erlang.org/doc/design_principles/applications.html#id81887) (the appropriate value for `-ApplName` is `-rabbit`), this method requires a slightly different reproduction of its equivalent entry in `rabbitmq.conf`. For example, configuring [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007"`. Where the space between the variable `channel_max` and its value `4007` correctly becomes a comma when translated in the environment. -Additional configuration keys would be specified as a list. For example, configuring both [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) and [`auth_backends`](https://www.rabbitmq.com/ldap.html#overview) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007 auth_backends [rabbit_auth_backend_ldap,rabbit_auth_backend_internal]"`. Note that some variables such as for `auth_backends` require their value(s) to be enclosed in brackets, and for multiple values explicitly including the comma as a delimiter. - ### Health/Liveness/Readiness Checking See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) and [the discussion on docker-library/rabbitmq#174 (especially the large comment by Michael Klishin from RabbitMQ upstream)](https://github.com/docker-library/rabbitmq/pull/174#issuecomment-452002696) for a detailed explanation of why this image does not come with a default `HEALTHCHECK` defined, and for suggestions for implementing your own health/liveness/readiness checks. diff --git a/rakudo-star/README.md b/rakudo-star/README.md index c6d8bb4d9956..093be35449dd 100644 --- a/rakudo-star/README.md +++ b/rakudo-star/README.md @@ -17,20 +17,20 @@ WARNING: # Quick reference - **Maintained by**: - [the Perl 6 Community](https://github.com/perl6/docker) + [the Raku Community](https://github.com/Raku/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `2020.01`](https://github.com/raku/docker/blob/d893fa621e755045c80fb4d0615c2810812d98f7/Dockerfile) -- [`alpine`, `2020.01-alpine`](https://github.com/raku/docker/blob/d893fa621e755045c80fb4d0615c2810812d98f7/alpine/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/perl6/docker/issues](https://github.com/perl6/docker/issues) + [https://github.com/Raku/docker/issues](https://github.com/Raku/docker/issues) - **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/) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/rakudo-star`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frakudo-star) + [official-images repo's `library/rakudo-star` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frakudo-star) [official-images repo's `library/rakudo-star` file](https://github.com/docker-library/official-images/blob/master/library/rakudo-star) ([history](https://github.com/docker-library/official-images/commits/master/library/rakudo-star)) - **Source of this description**: @@ -50,13 +50,11 @@ WARNING: Rakudo Star is a Raku (formerly known as Perl 6) distribution designed for use by early adopters of the language. It includes a virtual machine (the JVM or MoarVM), the Rakudo compiler, and a suite of modules that users may find useful. This image includes the MoarVM backend for the compiler. -Project homepage: [http://rakudo.org](http://rakudo.org) +- Project homepage: https://rakudo.org/ +- Raku Language Specification: https://github.com/Raku/roast +- Raku Language Documentation: https://docs.raku.org/ -GitHub repository: [https://github.com/rakudo/star](https://github.com/rakudo/star) - -The Dockerfile responsible: [http://github.com/raku/docker/tree/master/Dockerfile](http://github.com/raku/docker/tree/master/Dockerfile) - -Raku Language Documentation: [http://docs.raku.org/](http://docs.raku.org/) +> [wikipedia.org/wiki/Rakudo](https://en.wikipedia.org/wiki/Rakudo) ![logo](https://raw.githubusercontent.com/docker-library/docs/48ac05ac94903844bfbdea1fb361676a904f9d85/rakudo-star/logo.png) @@ -78,9 +76,9 @@ $ docker run -it rakudo-star raku -e 'say "Hello!"' # Contributing/Getting Help -Many Raku developers are present on #raku on Freenode. +Many Raku developers are present on [#raku on Libera.Chat](https://kiwiirc.com/client/irc.libera.chat/#raku) -Issues for Rakudo are tracked in [on GitHub](https://github.com/rakudo/rakudo/issues/). +Issues for Rakudo are tracked in [on GitHub](https://github.com/rakudo/rakudo/issues). # Image Variants @@ -92,9 +90,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `rakudo-star:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/rakudo-star/content.md b/rakudo-star/content.md index 59045d10a389..0926231a358a 100644 --- a/rakudo-star/content.md +++ b/rakudo-star/content.md @@ -2,13 +2,11 @@ Rakudo Star is a Raku (formerly known as Perl 6) distribution designed for use by early adopters of the language. It includes a virtual machine (the JVM or MoarVM), the Rakudo compiler, and a suite of modules that users may find useful. This image includes the MoarVM backend for the compiler. -Project homepage: [http://rakudo.org](http://rakudo.org) +- Project homepage: https://rakudo.org/ +- Raku Language Specification: https://github.com/Raku/roast +- Raku Language Documentation: https://docs.raku.org/ -GitHub repository: [https://github.com/rakudo/star](https://github.com/rakudo/star) - -The Dockerfile responsible: [http://github.com/raku/docker/tree/master/Dockerfile](http://github.com/raku/docker/tree/master/Dockerfile) - -Raku Language Documentation: [http://docs.raku.org/](http://docs.raku.org/) +> [wikipedia.org/wiki/Rakudo](https://en.wikipedia.org/wiki/Rakudo) %%LOGO%% @@ -30,6 +28,6 @@ $ docker run -it %%IMAGE%% raku -e 'say "Hello!"' # Contributing/Getting Help -Many Raku developers are present on #raku on Freenode. +Many Raku developers are present on [#raku on Libera.Chat](https://kiwiirc.com/client/irc.libera.chat/#raku) -Issues for Rakudo are tracked in [on GitHub](https://github.com/rakudo/rakudo/issues/). +Issues for Rakudo are tracked in [on GitHub](https://github.com/rakudo/rakudo/issues). diff --git a/rakudo-star/github-repo b/rakudo-star/github-repo index 8bead6a48453..a39597f12744 100644 --- a/rakudo-star/github-repo +++ b/rakudo-star/github-repo @@ -1 +1 @@ -https://github.com/perl6/docker +https://github.com/Raku/docker diff --git a/rakudo-star/maintainer.md b/rakudo-star/maintainer.md index d5a3c22c7d49..690389e6bdfa 100644 --- a/rakudo-star/maintainer.md +++ b/rakudo-star/maintainer.md @@ -1 +1 @@ -[the Perl 6 Community](%%GITHUB-REPO%%) +[the Raku Community](%%GITHUB-REPO%%) diff --git a/rapidoid/README-short.txt b/rapidoid/README-short.txt deleted file mode 100644 index c3c94fb2a1f7..000000000000 --- a/rapidoid/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Rapidoid is a high-performance HTTP server and modern Java web framework / application container. \ No newline at end of file diff --git a/rapidoid/README.md b/rapidoid/README.md deleted file mode 100644 index f89409d96c64..000000000000 --- a/rapidoid/README.md +++ /dev/null @@ -1,199 +0,0 @@ - - -# **DEPRECATION NOTICE** - -This image is deprecated due to inactivity (last updated Aug 2018; [docker-library/official-images#4667](https://github.com/docker-library/official-images/pull/4667)). - -As noted in [docker-library/official-images#4667 (comment)](https://github.com/docker-library/official-images/pull/4667#issuecomment-565220107), it will likely see updates again when Rapidoid 6 is released. - -# Quick reference - -- **Maintained by**: - [Rapidoid](https://github.com/rapidoid/docker-rapidoid) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`5.4.6`, `5.4`, `5`, `latest`](https://github.com/rapidoid/docker-rapidoid/blob/8fbb45c706fec5b0a015a37c24862127180ae9e9/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/rapidoid/docker-rapidoid/issues](https://github.com/rapidoid/docker-rapidoid/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/rapidoid/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rapidoid/) - -- **Published image artifact details**: - [repo-info repo's `repos/rapidoid/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rapidoid) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rapidoid)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/rapidoid`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frapidoid) - [official-images repo's `library/rapidoid` file](https://github.com/docker-library/official-images/blob/master/library/rapidoid) ([history](https://github.com/docker-library/official-images/commits/master/library/rapidoid)) - -- **Source of this description**: - [docs repo's `rapidoid/` directory](https://github.com/docker-library/docs/tree/master/rapidoid) ([history](https://github.com/docker-library/docs/commits/master/rapidoid)) - -# What is Rapidoid? - -Rapidoid is an extremely fast HTTP server and modern Java web framework / application container, with a strong focus on high productivity and high performance. - -> [www.rapidoid.org](http://www.rapidoid.org) - -![logo](https://raw.githubusercontent.com/docker-library/docs/7fc38a6e22991477a231ce556a7f2860623afb67/rapidoid/logo.png) - -# How to use this image - -To quickly start Rapidoid and display some basic usage help, run: - -```console -$ docker run --rm rapidoid --help -``` - -Rapidoid can be used in different ways: - -- as a web tool, to quickly prototype RESTful web services from the command line -- as a HTTP server, to serve static resources -- as a Java web application framework/container, to deploy a web application JAR - -## Quickly prototyping SQL-powered RESTful web services - -To quickly prototype SQL-powered RESTful web services from the command line, you need to link the database container to the Rapidoid container. The MySQL containers should be linked under name `mysql`, and PostgreSQL containers under name `postgres`. - -This example starts a new MySQL container and links it under name `mysql` in the Rapidoid container, where a RESTful service is defined by specifying SQL query for the route `GET /users`. The service returns the result (a list of MySQL users) in JSON format. - -```console -docker run -d --name some-mysql -e MYSQL_ROOT_PASSWORD=db-pass mysql - -docker run -it --rm \ - -p 8888:8888 \ - --link some-mysql:mysql \ - rapidoid \ - profiles=mysql \ - jdbc.host=mysql \ - jdbc.password=db-pass \ - '/users <= SELECT user FROM mysql.user' -``` - -**Note:** Please wait for several seconds for the MySQL database to initialize, and then you can visit [http://localhost:8888/users](http://localhost:8888/users) (or `http://your-host:8888/users`) in your web browser. - -**Syntax for the service prototyping arguments**: - -```console -'[GET|POST|PUT|DELETE|PATCH] <= ' -``` - -## Serving static files - -Rapidoid will automatically serve static files from the folders: `/app/static`. To serve the contents of the `/your-www-root` directory, please mount it as `/app/static`: - -```console -$ docker run -it --rm \ - -p 8888:8888 \ - -v /your-www-root:/app/static \ - rapidoid -``` - -## Configuration - -Rapidoid will try to read the configuration from `/app/config.yml`. The configuration can also be specified with command-line arguments or environment variables. - -To configure a custom port (by default `8888`) for the default and the Admin server, run the following command. If `rapidoid-admin.port` is not configured, the default server is also used as Admin server, so only one port will be opened (`rapidoid.port`). - -```console -$ docker run -it --rm \ - -p 4444:4444 \ - -p 9999:9999 \ - rapidoid \ - rapidoid.port=4444 \ - rapidoid-admin.port=9999 \ - app.services=ping \ - admin.services=status -``` - -Then you can visit [http://localhost:4444/\_ping](http://localhost:4444/_ping) (or `http://your-host:4444/_ping`) and [http://localhost:9999/\_status](http://localhost:9999/_status) (or `http://your-host:9999/_status`) in your web browser. - -The same setup can be configured with environment variables: - -```console -$ docker run -it --rm \ - -p 4444:4444 \ - -p 9999:9999 \ - -e RAPIDOID_PORT=4444 \ - -e RAPIDOID-ADMIN_PORT=9999 \ - rapidoid \ - app.services=ping \ - admin.services=status -``` - -For more details, please see the [full list of configuration options and their default values](http://www.rapidoid.org/the-default-configuration.html). - -## Security - -Rapidoid's HMAC-based security token mechanism requires all containers to share the same secret key when scaling out a web application: - -```console -$ docker run -it --rm \ - -p 8888:8888 \ - -e SECRET=your-secret-key \ - rapidoid -``` - -While this is an easy way to get started, for security reasons it is recommended to store the secret key in the `/app/config.yml` file, with proper permissions. - -**Note:** For production use, you must replace `your-secret-key` with a real, private secret key. - -**Note:** If no secret key is specified, a random secret key will be generated, which is acceptable when deploying a single container. - -## Full bootstrap of Rapidoid's Admin Center - -To bootstrap a full-blown Admin Center in Rapidoid, you will also need to configure a password for the built-in `admin` user: - -```console -$ docker run -d \ - --restart=always \ - -p 8888:8888 \ - -e SECRET=your-secret-key \ - -e USERS_ADMIN_PASSWORD=admin-pass \ - rapidoid \ - admin.services=center -``` - -Please replace `admin-pass` with a real password for the `admin` user. Then you can login to the Admin Center by visiting [http://localhost:8888/\_](http://localhost:8888/_) (or `http://your-host:8888/_`) in your web browser. - -**Note:** For production use, you must replace `your-secret-key` with a real, private secret key (please see the `Security` section). - -# How to extend this image (application JAR deployment) - -To use this image as base image for your web application, simply add your application JAR as `/app/app.jar`: - -```dockerfile -COPY /app/app.jar -``` - -# License - -View [license information](https://www.apache.org/licenses/LICENSE-2.0) 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 `rapidoid/` directory](https://github.com/docker-library/repo-info/tree/master/repos/rapidoid). - -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/rapidoid/content.md b/rapidoid/content.md deleted file mode 100644 index b56f978fe5dc..000000000000 --- a/rapidoid/content.md +++ /dev/null @@ -1,136 +0,0 @@ -# What is Rapidoid? - -Rapidoid is an extremely fast HTTP server and modern Java web framework / application container, with a strong focus on high productivity and high performance. - -> [www.rapidoid.org](http://www.rapidoid.org) - -%%LOGO%% - -# How to use this image - -To quickly start Rapidoid and display some basic usage help, run: - -```console -$ docker run --rm %%IMAGE%% --help -``` - -Rapidoid can be used in different ways: - -- as a web tool, to quickly prototype RESTful web services from the command line -- as a HTTP server, to serve static resources -- as a Java web application framework/container, to deploy a web application JAR - -## Quickly prototyping SQL-powered RESTful web services - -To quickly prototype SQL-powered RESTful web services from the command line, you need to link the database container to the Rapidoid container. The MySQL containers should be linked under name `mysql`, and PostgreSQL containers under name `postgres`. - -This example starts a new MySQL container and links it under name `mysql` in the Rapidoid container, where a RESTful service is defined by specifying SQL query for the route `GET /users`. The service returns the result (a list of MySQL users) in JSON format. - -```console -docker run -d --name some-mysql -e MYSQL_ROOT_PASSWORD=db-pass mysql - -docker run -it --rm \ - -p 8888:8888 \ - --link some-mysql:mysql \ - %%REPO%% \ - profiles=mysql \ - jdbc.host=mysql \ - jdbc.password=db-pass \ - '/users <= SELECT user FROM mysql.user' -``` - -**Note:** Please wait for several seconds for the MySQL database to initialize, and then you can visit [http://localhost:8888/users](http://localhost:8888/users) (or `http://your-host:8888/users`) in your web browser. - -**Syntax for the service prototyping arguments**: - -```console -'[GET|POST|PUT|DELETE|PATCH] <= ' -``` - -## Serving static files - -Rapidoid will automatically serve static files from the folders: `/app/static`. To serve the contents of the `/your-www-root` directory, please mount it as `/app/static`: - -```console -$ docker run -it --rm \ - -p 8888:8888 \ - -v /your-www-root:/app/static \ - %%REPO%% -``` - -## Configuration - -Rapidoid will try to read the configuration from `/app/config.yml`. The configuration can also be specified with command-line arguments or environment variables. - -To configure a custom port (by default `8888`) for the default and the Admin server, run the following command. If `rapidoid-admin.port` is not configured, the default server is also used as Admin server, so only one port will be opened (`rapidoid.port`). - -```console -$ docker run -it --rm \ - -p 4444:4444 \ - -p 9999:9999 \ - %%REPO%% \ - rapidoid.port=4444 \ - rapidoid-admin.port=9999 \ - app.services=ping \ - admin.services=status -``` - -Then you can visit [http://localhost:4444/\_ping](http://localhost:4444/_ping) (or `http://your-host:4444/_ping`) and [http://localhost:9999/\_status](http://localhost:9999/_status) (or `http://your-host:9999/_status`) in your web browser. - -The same setup can be configured with environment variables: - -```console -$ docker run -it --rm \ - -p 4444:4444 \ - -p 9999:9999 \ - -e RAPIDOID_PORT=4444 \ - -e RAPIDOID-ADMIN_PORT=9999 \ - %%REPO%% \ - app.services=ping \ - admin.services=status -``` - -For more details, please see the [full list of configuration options and their default values](http://www.rapidoid.org/the-default-configuration.html). - -## Security - -Rapidoid's HMAC-based security token mechanism requires all containers to share the same secret key when scaling out a web application: - -```console -$ docker run -it --rm \ - -p 8888:8888 \ - -e SECRET=your-secret-key \ - %%REPO%% -``` - -While this is an easy way to get started, for security reasons it is recommended to store the secret key in the `/app/config.yml` file, with proper permissions. - -**Note:** For production use, you must replace `your-secret-key` with a real, private secret key. - -**Note:** If no secret key is specified, a random secret key will be generated, which is acceptable when deploying a single container. - -## Full bootstrap of Rapidoid's Admin Center - -To bootstrap a full-blown Admin Center in Rapidoid, you will also need to configure a password for the built-in `admin` user: - -```console -$ docker run -d \ - --restart=always \ - -p 8888:8888 \ - -e SECRET=your-secret-key \ - -e USERS_ADMIN_PASSWORD=admin-pass \ - %%REPO%% \ - admin.services=center -``` - -Please replace `admin-pass` with a real password for the `admin` user. Then you can login to the Admin Center by visiting [http://localhost:8888/\_](http://localhost:8888/_) (or `http://your-host:8888/_`) in your web browser. - -**Note:** For production use, you must replace `your-secret-key` with a real, private secret key (please see the `Security` section). - -# How to extend this image (application JAR deployment) - -To use this image as base image for your web application, simply add your application JAR as `/app/app.jar`: - -```dockerfile -COPY /app/app.jar -``` diff --git a/rapidoid/deprecated.md b/rapidoid/deprecated.md deleted file mode 100644 index 1f4b9697f87a..000000000000 --- a/rapidoid/deprecated.md +++ /dev/null @@ -1,3 +0,0 @@ -This image is deprecated due to inactivity (last updated Aug 2018; [docker-library/official-images#4667](https://github.com/docker-library/official-images/pull/4667)). - -As noted in [docker-library/official-images#4667 (comment)](https://github.com/docker-library/official-images/pull/4667#issuecomment-565220107), it will likely see updates again when Rapidoid 6 is released. diff --git a/rapidoid/github-repo b/rapidoid/github-repo deleted file mode 100644 index 5d641cbbfbc1..000000000000 --- a/rapidoid/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/rapidoid/docker-rapidoid diff --git a/rapidoid/license.md b/rapidoid/license.md deleted file mode 100644 index 625f0d256ce7..000000000000 --- a/rapidoid/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://www.apache.org/licenses/LICENSE-2.0) for the software contained in this image. diff --git a/rapidoid/logo.png b/rapidoid/logo.png deleted file mode 100644 index 9ca829262b18..000000000000 Binary files a/rapidoid/logo.png and /dev/null differ diff --git a/rapidoid/maintainer.md b/rapidoid/maintainer.md deleted file mode 100644 index 8843b6b77549..000000000000 --- a/rapidoid/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Rapidoid](%%GITHUB-REPO%%) diff --git a/redis/README.md b/redis/README.md index 55d0005f4d66..b5511e0df734 100644 --- a/redis/README.md +++ b/redis/README.md @@ -20,15 +20,16 @@ WARNING: [the Docker Community](https://github.com/docker-library/redis) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.0.2`, `6.0`, `6`, `latest`, `6.0.2-buster`, `6.0-buster`, `6-buster`, `buster`](https://github.com/docker-library/redis/blob/3914a0256d549b8323c94c62854d8ca06107aec4/6.0/Dockerfile) -- [`6.0.2-alpine`, `6.0-alpine`, `6-alpine`, `alpine`, `6.0.2-alpine3.11`, `6.0-alpine3.11`, `6-alpine3.11`, `alpine3.11`](https://github.com/docker-library/redis/blob/3914a0256d549b8323c94c62854d8ca06107aec4/6.0/alpine/Dockerfile) -- [`5.0.9`, `5.0`, `5`, `5.0.9-buster`, `5.0-buster`, `5-buster`](https://github.com/docker-library/redis/blob/d3a0f3d95ac768db44dbcb87ecf88cfc436581d5/5.0/Dockerfile) -- [`5.0.9-32bit`, `5.0-32bit`, `5-32bit`, `5.0.9-32bit-buster`, `5.0-32bit-buster`, `5-32bit-buster`](https://github.com/docker-library/redis/blob/d3a0f3d95ac768db44dbcb87ecf88cfc436581d5/5.0/32bit/Dockerfile) -- [`5.0.9-alpine`, `5.0-alpine`, `5-alpine`, `5.0.9-alpine3.11`, `5.0-alpine3.11`, `5-alpine3.11`](https://github.com/docker-library/redis/blob/d3a0f3d95ac768db44dbcb87ecf88cfc436581d5/5.0/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -43,7 +44,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/redis`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fredis) + [official-images repo's `library/redis` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fredis) [official-images repo's `library/redis` file](https://github.com/docker-library/official-images/blob/master/library/redis) ([history](https://github.com/docker-library/official-images/commits/master/library/redis)) - **Source of this description**: @@ -76,10 +77,10 @@ $ docker run --name some-redis -d redis ## start with persistent storage ```console -$ docker run --name some-redis -d redis redis-server --appendonly yes +$ docker run --name some-redis -d redis redis-server --save 60 1 --loglevel warning ``` -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/)). +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). @@ -102,11 +103,13 @@ CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] Alternatively, you can specify something along the same lines with `docker run` options. ```console -$ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis redis redis-server /usr/local/etc/redis/redis.conf +$ docker run -v /myredis/conf:/usr/local/etc/redis --name myredis redis redis-server /usr/local/etc/redis/redis.conf ``` 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. @@ -127,13 +130,13 @@ 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 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 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. ## `redis:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/redis/content.md b/redis/content.md index 4f8a77389371..f251509ff5ee 100644 --- a/redis/content.md +++ b/redis/content.md @@ -25,10 +25,10 @@ $ docker run --name some-redis -d %%IMAGE%% ## start with persistent storage ```console -$ docker run --name some-redis -d %%IMAGE%% redis-server --appendonly yes +$ docker run --name some-redis -d %%IMAGE%% redis-server --save 60 1 --loglevel warning ``` -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/)). +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). @@ -51,11 +51,13 @@ CMD [ "redis-server", "/usr/local/etc/redis/redis.conf" ] Alternatively, you can specify something along the same lines with `docker run` options. ```console -$ docker run -v /myredis/conf/redis.conf:/usr/local/etc/redis/redis.conf --name myredis %%IMAGE%% redis-server /usr/local/etc/redis/redis.conf +$ docker run -v /myredis/conf:/usr/local/etc/redis --name myredis %%IMAGE%% redis-server /usr/local/etc/redis/redis.conf ``` 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. diff --git a/redmine/README.md b/redmine/README.md index cbc8f51a2e30..de195e471616 100644 --- a/redmine/README.md +++ b/redmine/README.md @@ -20,16 +20,15 @@ WARNING: [the Docker Community](https://github.com/docker-library/redmine) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.1.1`, `4.1`, `4`, `latest`](https://github.com/docker-library/redmine/blob/f5895d1d4bff53a590b6048e294dc96b26206883/4.1/Dockerfile) -- [`4.1.1-passenger`, `4.1-passenger`, `4-passenger`, `passenger`](https://github.com/docker-library/redmine/blob/fe32a0b56f5eacae086030de5e0ca19ea026b51b/4.1/passenger/Dockerfile) -- [`4.1.1-alpine`, `4.1-alpine`, `4-alpine`, `alpine`](https://github.com/docker-library/redmine/blob/1dae7ff59aef57ec379bbada0fa01a193fadb847/4.1/alpine/Dockerfile) -- [`4.0.7`, `4.0`](https://github.com/docker-library/redmine/blob/f5895d1d4bff53a590b6048e294dc96b26206883/4.0/Dockerfile) -- [`4.0.7-passenger`, `4.0-passenger`](https://github.com/docker-library/redmine/blob/fd5541e76d7f2230484c19a784b8f9ee884559ce/4.0/passenger/Dockerfile) -- [`4.0.7-alpine`, `4.0-alpine`](https://github.com/docker-library/redmine/blob/1dae7ff59aef57ec379bbada0fa01a193fadb847/4.0/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -37,14 +36,14 @@ WARNING: [https://github.com/docker-library/redmine/issues](https://github.com/docker-library/redmine/issues) - **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/), [`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/), [`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/), [`ppc64le`](https://hub.docker.com/r/ppc64le/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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/redmine`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fredmine) + [official-images repo's `library/redmine` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fredmine) [official-images repo's `library/redmine` file](https://github.com/docker-library/official-images/blob/master/library/redmine) ([history](https://github.com/docker-library/official-images/commits/master/library/redmine)) - **Source of this description**: @@ -127,7 +126,7 @@ Run `docker stack deploy -c stack.yml redmine` (or `docker-compose -f stack.yml ## 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 WEBrick (`rails s`) 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). +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). ## Accessing the Application @@ -159,9 +158,9 @@ If you'd like to be able to access the instance from the host without the contai When you start the `redmine` image, you can adjust the configuration of the instance by passing one or more environment variables on the `docker run` command line. -### `REDMINE_DB_MYSQL` or `REDMINE_DB_POSTGRES` +### `REDMINE_DB_MYSQL`, `REDMINE_DB_POSTGRES`, or `REDMINE_DB_SQLSERVER` -These two variables allow you to set the hostname or IP address of the MySQL or PostgreSQL host, respectively. These values are mutually exclusive so it is undefined behavior if both are set. If neither variable is set, the image will fall back to using SQLite. +These variables allow you to set the hostname or IP address of the MySQL, PostgreSQL, or Microsoft SQL host, respectively. These values are mutually exclusive so it is undefined behavior if any two are set. If no variable is set, the image will fall back to using SQLite. ### `REDMINE_DB_PORT` @@ -199,6 +198,22 @@ This variable allows you to control if `rake redmine:plugins:migrate` is run on 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 + +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: + +1. Create the user on your host and mount `/etc/passwd:/etc/passwd:ro` + +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) + + ```dockerfile + FROM redmine:passenger + RUN groupadd -r group && useradd --no-log-init -r -g group user + USER user + ``` + ## 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: @@ -217,11 +232,13 @@ 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. + ## `redmine:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/redmine/content.md b/redmine/content.md index dcc7cf5ba57b..feb4bb3f15c5 100644 --- a/redmine/content.md +++ b/redmine/content.md @@ -48,7 +48,7 @@ Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml ## 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 WEBrick (`rails s`) 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). +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). ## Accessing the Application @@ -80,9 +80,9 @@ If you'd like to be able to access the instance from the host without the contai When you start the `%%REPO%%` image, you can adjust the configuration of the instance by passing one or more environment variables on the `docker run` command line. -### `REDMINE_DB_MYSQL` or `REDMINE_DB_POSTGRES` +### `REDMINE_DB_MYSQL`, `REDMINE_DB_POSTGRES`, or `REDMINE_DB_SQLSERVER` -These two variables allow you to set the hostname or IP address of the MySQL or PostgreSQL host, respectively. These values are mutually exclusive so it is undefined behavior if both are set. If neither variable is set, the image will fall back to using SQLite. +These variables allow you to set the hostname or IP address of the MySQL, PostgreSQL, or Microsoft SQL host, respectively. These values are mutually exclusive so it is undefined behavior if any two are set. If no variable is set, the image will fall back to using SQLite. ### `REDMINE_DB_PORT` @@ -120,6 +120,22 @@ This variable allows you to control if `rake redmine:plugins:migrate` is run on 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 + +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: + +1. Create the user on your host and mount `/etc/passwd:/etc/passwd:ro` + +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) + + ```dockerfile + FROM redmine:passenger + RUN groupadd -r group && useradd --no-log-init -r -g group user + USER user + ``` + ## 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: diff --git a/registry/README.md b/registry/README.md index 5b13fe6df5e0..25202c865833 100644 --- a/registry/README.md +++ b/registry/README.md @@ -20,12 +20,13 @@ WARNING: [Docker, Inc.](https://github.com/docker/distribution-library-image) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.7.1`, `2.7`, `2`, `latest`](https://github.com/docker/distribution-library-image/blob/0b6ea3ba50b65563600a717f07db4cfa6f18f957/amd64/Dockerfile) -- [`2.6.2`, `2.6`](https://github.com/docker/distribution-library-image/blob/fc40f1f1051bb4a42ee4661ccaa190c1bd6c6be9/amd64/Dockerfile) +- [`2.8.1`, `2.8`, `2`, `latest`](https://github.com/docker/distribution-library-image/blob/0be0d08b29d56bb1ef0fab93c751ca92d6976a19/Dockerfile) # Quick reference (cont.) @@ -33,22 +34,24 @@ WARNING: [https://github.com/docker/distribution-library-image/issues](https://github.com/docker/distribution-library-image/issues) - **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/), [`arm64v8`](https://hub.docker.com/r/arm64v8/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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/registry`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fregistry) + [official-images repo's `library/registry` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fregistry) [official-images repo's `library/registry` file](https://github.com/docker-library/official-images/blob/master/library/registry) ([history](https://github.com/docker-library/official-images/commits/master/library/registry)) - **Source of this description**: [docs repo's `registry/` directory](https://github.com/docker-library/docs/tree/master/registry) ([history](https://github.com/docker-library/docs/commits/master/registry)) -# Docker Registry +# Distribution Registry + +![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/docker/distribution](https://github.com/docker/distribution) for more details about what it is. +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. ## Run a local registry: Quick Version @@ -70,10 +73,6 @@ The [documentation over at docs.docker.com](https://docs.docker.com/registry/) i 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. -# Support - -If you are interested in commercial support, the [Docker Trusted Registry](https://www.docker.com/docker-trusted-registry) provides an image registry, LDAP/Active Directory integration, security certificates, and more in a solution that includes commercial support. - # License View [license information](https://github.com/docker/distribution/blob/master/LICENSE) for the software contained in this image. diff --git a/registry/content.md b/registry/content.md index 6571f2bb0dff..1e37ab63a262 100644 --- a/registry/content.md +++ b/registry/content.md @@ -1,6 +1,8 @@ -# Docker Registry +# Distribution Registry -This image contains an implementation of the Docker Registry HTTP API V2 for use with Docker 1.6+. See [github.com/docker/distribution](https://github.com/docker/distribution) for more details about what it is. +%%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. ## Run a local registry: Quick Version @@ -21,7 +23,3 @@ $ docker push localhost:5000/ubuntu 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. 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. - -# Support - -If you are interested in commercial support, the [Docker Trusted Registry](https://www.docker.com/docker-trusted-registry) provides an image registry, LDAP/Active Directory integration, security certificates, and more in a solution that includes commercial support. diff --git a/registry/get-help.md b/registry/get-help.md new file mode 100644 index 000000000000..4d954e7f170c --- /dev/null +++ b/registry/get-help.md @@ -0,0 +1,3 @@ +[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/logo.png b/registry/logo.png new file mode 100644 index 000000000000..39418022e336 Binary files /dev/null and b/registry/logo.png differ diff --git a/rethinkdb/README.md b/rethinkdb/README.md index 155eac646916..f933a62b7c2e 100644 --- a/rethinkdb/README.md +++ b/rethinkdb/README.md @@ -20,11 +20,11 @@ WARNING: [RethinkDB](https://github.com/rethinkdb/rethinkdb-dockerfiles) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.4.0`, `2.4`, `2`, `latest`](https://github.com/rethinkdb/rethinkdb-dockerfiles/blob/54d3eebf6409b196264c193e0cbad027061739b3/bionic/2.4.0/Dockerfile) +- [`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) # Quick reference (cont.) @@ -32,14 +32,14 @@ WARNING: [https://github.com/rethinkdb/rethinkdb-dockerfiles/issues](https://github.com/rethinkdb/rethinkdb-dockerfiles/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/rethinkdb/) + [`amd64`](https://hub.docker.com/r/amd64/rethinkdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rethinkdb/), [`s390x`](https://hub.docker.com/r/s390x/rethinkdb/) - **Published image artifact details**: [repo-info repo's `repos/rethinkdb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rethinkdb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rethinkdb)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/rethinkdb`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frethinkdb) + [official-images repo's `library/rethinkdb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frethinkdb) [official-images repo's `library/rethinkdb` file](https://github.com/docker-library/official-images/blob/master/library/rethinkdb) ([history](https://github.com/docker-library/official-images/commits/master/library/rethinkdb)) - **Source of this description**: @@ -94,6 +94,20 @@ kill $(lsof -t -i @localhost:8080 -sTCP:listen) See the [official docs](http://www.rethinkdb.com/docs/) for infomation on using and configuring a RethinkDB cluster. +# Image Variants + +The `rethinkdb` images come in many flavors, each designed for a specific use case. + +## `rethinkdb:` + +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. + +## `rethinkdb:-slim` + +This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `rethinkdb`. Unless you are working in an environment where *only* the `rethinkdb` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. + # License View [license information](https://raw.githubusercontent.com/rethinkdb/rethinkdb/next/LICENSE) for the software contained in this image. diff --git a/rocket.chat/README.md b/rocket.chat/README.md index b3af5a9cab6d..c63e25f4da12 100644 --- a/rocket.chat/README.md +++ b/rocket.chat/README.md @@ -20,12 +20,15 @@ WARNING: [Rocket.Chat](https://github.com/RocketChat/Docker.Official.Image) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.2.2`, `3.2`, `3`, `latest`](https://github.com/RocketChat/Docker.Official.Image/blob/9cc942405ca293ef01474e2c13a40894ee313851/3/Dockerfile) -- [`2.4.12`, `2.4`, `2`](https://github.com/RocketChat/Docker.Official.Image/blob/9cc942405ca293ef01474e2c13a40894ee313851/2/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +43,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/rocket.chat`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frocket.chat) + [official-images repo's `library/rocket.chat` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frocket.chat) [official-images repo's `library/rocket.chat` file](https://github.com/docker-library/official-images/blob/master/library/rocket.chat) ([history](https://github.com/docker-library/official-images/commits/master/library/rocket.chat)) - **Source of this description**: diff --git a/rockylinux/README-short.txt b/rockylinux/README-short.txt new file mode 100644 index 000000000000..efbd1adbaeee --- /dev/null +++ b/rockylinux/README-short.txt @@ -0,0 +1 @@ +The official build of Rocky Linux. diff --git a/rockylinux/README.md b/rockylinux/README.md new file mode 100644 index 000000000000..f1c7ba21fc2e --- /dev/null +++ b/rockylinux/README.md @@ -0,0 +1,92 @@ + + +# Quick reference + +- **Maintained by**: + [The Rocky Enterprise Software Foundation](https://github.com/rocky-linux/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 + +- [`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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://bugs.rockylinux.org](https://bugs.rockylinux.org) or [GitHub](https://github.com/rocky-linux/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/rockylinux/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rockylinux/), [`ppc64le`](https://hub.docker.com/r/ppc64le/rockylinux/), [`s390x`](https://hub.docker.com/r/s390x/rockylinux/) + +- **Published image artifact details**: + [repo-info repo's `repos/rockylinux/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rockylinux) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rockylinux)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/rockylinux` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frockylinux) + [official-images repo's `library/rockylinux` file](https://github.com/docker-library/official-images/blob/master/library/rockylinux) ([history](https://github.com/docker-library/official-images/commits/master/library/rockylinux)) + +- **Source of this description**: + [docs repo's `rockylinux/` directory](https://github.com/docker-library/docs/tree/master/rockylinux) ([history](https://github.com/docker-library/docs/commits/master/rockylinux)) + +# Rocky Linux + +Rocky 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, Rocky Linux aims to be functionally compatible with RHEL. The Rocky Linux Project mainly changes packages to remove upstream vendor branding and artwork. Rocky Linux is no-cost and free to redistribute. Each Rocky 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 Rocky Linux version is released approximately every 2 years and each Rocky 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. + +Thank you for using Rocky Linux! We appreciate your feedback and welcome you to the community! Please join us on IRC on Libera.chat in #rockylinux or on our Mattermost instance at https://chat.rockylinux.org + +- [docs.rockylinux.org](https://docs.rockylinux.org) +- [wiki.rockylinux.org](https://wiki.rockylinux.org) + +![logo](https://raw.githubusercontent.com/docker-library/docs/5e29cd0cdc96d579d91310cbcb772b26067182ad/rockylinux/logo.png) + +# Rocky Linux image documentation + +The `rockylinux:latest` tag is intentionally missing. Please choose a major version (currently 8 or 9) tag, or a more specific tag to ensure you are pulling the version of Rocky Linux you want: e.g. `rockylinux:8` or `rockylinux:9` + +## Minimal variant + +In addition to the Base container, a Minimal container with microdnf and a stripped down dependency set is available by using any of the `-minimal` tags e.g. `rockylinux:9-minimal` + +## Rolling builds + +Rocky Linux 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 rockylinux:8`. + +## 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 rockylinux:8.4` + +# Package documentation + +By default, the Rocky Linux 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. + +# License + +View [license information](https://www.rockylinux.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 `rockylinux/` directory](https://github.com/docker-library/repo-info/tree/master/repos/rockylinux). + +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/rockylinux/content.md b/rockylinux/content.md new file mode 100644 index 000000000000..d32aa776a920 --- /dev/null +++ b/rockylinux/content.md @@ -0,0 +1,32 @@ +# Rocky Linux + +Rocky 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, Rocky Linux aims to be functionally compatible with RHEL. The Rocky Linux Project mainly changes packages to remove upstream vendor branding and artwork. Rocky Linux is no-cost and free to redistribute. Each Rocky 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 Rocky Linux version is released approximately every 2 years and each Rocky 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. + +Thank you for using Rocky Linux! We appreciate your feedback and welcome you to the community! Please join us on IRC on Libera.chat in #rockylinux or on our Mattermost instance at https://chat.rockylinux.org + +- [docs.rockylinux.org](https://docs.rockylinux.org) +- [wiki.rockylinux.org](https://wiki.rockylinux.org) + +%%LOGO%% + +# Rocky Linux image documentation + +The `%%IMAGE%%:latest` tag is intentionally missing. Please choose a major version (currently 8 or 9) tag, or a more specific tag to ensure you are pulling the version of Rocky Linux you want: e.g. `%%IMAGE%%:8` or `%%IMAGE%%:9` + +## Minimal variant + +In addition to the Base container, a Minimal container with microdnf and a stripped down dependency set is available by using any of the `-minimal` tags e.g. `%%IMAGE%%:9-minimal` + +## Rolling builds + +Rocky Linux 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%%:8`. + +## 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%%:8.4` + +# Package documentation + +By default, the Rocky Linux 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. diff --git a/rockylinux/github-repo b/rockylinux/github-repo new file mode 100644 index 000000000000..800b8dee15ae --- /dev/null +++ b/rockylinux/github-repo @@ -0,0 +1 @@ +https://github.com/rocky-linux/sig-cloud-instance-images diff --git a/rockylinux/issues.md b/rockylinux/issues.md new file mode 100644 index 000000000000..153fb45a6161 --- /dev/null +++ b/rockylinux/issues.md @@ -0,0 +1 @@ +[https://bugs.rockylinux.org](https://bugs.rockylinux.org) or [GitHub](%%GITHUB-REPO%%/issues) diff --git a/rockylinux/license.md b/rockylinux/license.md new file mode 100644 index 000000000000..e6231944187d --- /dev/null +++ b/rockylinux/license.md @@ -0,0 +1 @@ +View [license information](https://www.rockylinux.org/legal/) for the software contained in this image. diff --git a/rockylinux/logo.png b/rockylinux/logo.png new file mode 100644 index 000000000000..da1d46911e95 Binary files /dev/null and b/rockylinux/logo.png differ diff --git a/rockylinux/maintainer.md b/rockylinux/maintainer.md new file mode 100644 index 000000000000..a976327747bb --- /dev/null +++ b/rockylinux/maintainer.md @@ -0,0 +1 @@ +[The Rocky Enterprise Software Foundation](%%GITHUB-REPO%%) diff --git a/ros/README.md b/ros/README.md index b41a0be3313e..ba4d3a813672 100644 --- a/ros/README.md +++ b/ros/README.md @@ -20,26 +20,31 @@ WARNING: [the Open Source Robotics Foundation](https://github.com/osrf/docker_images) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`kinetic-ros-core`, `kinetic-ros-core-xenial`](https://github.com/osrf/docker_images/blob/b075c7dbe56055d862f331f19e1e74ba653e181a/ros/kinetic/ubuntu/xenial/ros-core/Dockerfile) -- [`kinetic-ros-base`, `kinetic-ros-base-xenial`, `kinetic`](https://github.com/osrf/docker_images/blob/f2b13092747c0f60cf7608369b57ea89bc01e22d/ros/kinetic/ubuntu/xenial/ros-base/Dockerfile) -- [`kinetic-robot`, `kinetic-robot-xenial`](https://github.com/osrf/docker_images/blob/f2b13092747c0f60cf7608369b57ea89bc01e22d/ros/kinetic/ubuntu/xenial/robot/Dockerfile) -- [`kinetic-perception`, `kinetic-perception-xenial`](https://github.com/osrf/docker_images/blob/f2b13092747c0f60cf7608369b57ea89bc01e22d/ros/kinetic/ubuntu/xenial/perception/Dockerfile) -- [`melodic-ros-core`, `melodic-ros-core-bionic`](https://github.com/osrf/docker_images/blob/b075c7dbe56055d862f331f19e1e74ba653e181a/ros/melodic/ubuntu/bionic/ros-core/Dockerfile) -- [`melodic-ros-base`, `melodic-ros-base-bionic`, `melodic`, `latest`](https://github.com/osrf/docker_images/blob/c1585532a5e6ddc4c3ded239a1caff366c34117f/ros/melodic/ubuntu/bionic/ros-base/Dockerfile) -- [`melodic-robot`, `melodic-robot-bionic`](https://github.com/osrf/docker_images/blob/c1585532a5e6ddc4c3ded239a1caff366c34117f/ros/melodic/ubuntu/bionic/robot/Dockerfile) -- [`melodic-perception`, `melodic-perception-bionic`](https://github.com/osrf/docker_images/blob/c1585532a5e6ddc4c3ded239a1caff366c34117f/ros/melodic/ubuntu/bionic/perception/Dockerfile) -- [`melodic-ros-core-stretch`](https://github.com/osrf/docker_images/blob/b075c7dbe56055d862f331f19e1e74ba653e181a/ros/melodic/debian/stretch/ros-core/Dockerfile) -- [`melodic-ros-base-stretch`](https://github.com/osrf/docker_images/blob/c1585532a5e6ddc4c3ded239a1caff366c34117f/ros/melodic/debian/stretch/ros-base/Dockerfile) -- [`melodic-robot-stretch`](https://github.com/osrf/docker_images/blob/c1585532a5e6ddc4c3ded239a1caff366c34117f/ros/melodic/debian/stretch/robot/Dockerfile) -- [`melodic-perception-stretch`](https://github.com/osrf/docker_images/blob/c1585532a5e6ddc4c3ded239a1caff366c34117f/ros/melodic/debian/stretch/perception/Dockerfile) -- [`dashing-ros-core`, `dashing-ros-core-bionic`](https://github.com/osrf/docker_images/blob/b075c7dbe56055d862f331f19e1e74ba653e181a/ros/dashing/ubuntu/bionic/ros-core/Dockerfile) -- [`dashing-ros-base`, `dashing-ros-base-bionic`, `dashing`](https://github.com/osrf/docker_images/blob/d188a5a15dba3d3fa266e4578c1ed2e1b4421c72/ros/dashing/ubuntu/bionic/ros-base/Dockerfile) -- [`eloquent-ros-core`, `eloquent-ros-core-bionic`](https://github.com/osrf/docker_images/blob/b075c7dbe56055d862f331f19e1e74ba653e181a/ros/eloquent/ubuntu/bionic/ros-core/Dockerfile) -- [`eloquent-ros-base`, `eloquent-ros-base-bionic`, `eloquent`](https://github.com/osrf/docker_images/blob/9b63c2f2a11ef18c93f7c8f35770625fc48181d8/ros/eloquent/ubuntu/bionic/ros-base/Dockerfile) +- [`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-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) # Quick reference (cont.) @@ -54,37 +59,125 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/ros`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fros) + [official-images repo's `library/ros` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fros) [official-images repo's `library/ros` file](https://github.com/docker-library/official-images/blob/master/library/ros) ([history](https://github.com/docker-library/official-images/commits/master/library/ros)) - **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](http://www.ros.org/)? +# What is [ROS](https://www.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)](http://www.ros.org/) +[![logo](https://raw.githubusercontent.com/docker-library/docs/0074e9dac72a35e5058f356885121aa82572682f/ros/logo.png)](https://www.ros.org/) # How to use this image -## Create a `Dockerfile` in your ROS app project +## Creating a `Dockerfile` to install ROS packages + +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:indigo -# place here your application's setup specifics -CMD [ "roslaunch", "my-ros-app my-ros-app.launch" ] +FROM ros:foxy + +# install ros package +RUN apt-get update && apt-get install -y \ + ros-${ROS_DISTRO}-demo-nodes-cpp \ + ros-${ROS_DISTRO}-demo-nodes-py && \ + rm -rf /var/lib/apt/lists/* + +# launch ros package +CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"] ``` -You can then build and run the Docker image: +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 --name my-running-app my-ros-app +$ docker build -t my/ros:app . +$ docker run -it --rm my/ros:app +[INFO] [launch]: process[talker-1]: started with pid [813] +[INFO] [launch]: process[listener-2]: started with pid [814] +[INFO] [talker]: Publishing: 'Hello World: 1' +[INFO] [listener]: I heard: [Hello World: 1] +[INFO] [talker]: Publishing: 'Hello World: 2' +[INFO] [listener]: I heard: [Hello World: 2] +... +``` + +## Creating a `Dockerfile` to build ROS packages + +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 OVERLAY_WS=/opt/ros/overlay_ws + +# multi-stage for caching +FROM $FROM_IMAGE AS cacher + +# 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 + +# 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/* + +# build overlay source +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 + +# source entrypoint setup +ENV OVERLAY_WS $OVERLAY_WS +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"] ``` +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. + +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. + +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. + ## Deployment use cases This dockerized image of ROS is intended to provide a simplified and consistent platform to build and deploy distributed robotic applications. Built from the [official Ubuntu image](https://hub.docker.com/_/ubuntu/) and ROS's official Debian packages, it includes recent supported releases for quick access and download. This provides roboticists in research and industry with an easy way to develop, reuse and ship software for autonomous actions and task planning, control dynamics, localization and mapping, swarm behavior, as well as general system integration. @@ -93,22 +186,25 @@ 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). + ## Deployment suggestions The available tags include supported distros along with a hierarchy tags based off the most common meta-package dependencies, designed to have a small footprint and simple configuration: -- `ros-core`: barebone ROS install +- `ros-core`: minimal ROS install - `ros-base`: basic tools and libraries (also tagged with distro name with LTS version as `latest`) -- `robot`: basic install for robots -- `perception`: basic install for perception tasks +- `ros1-bridge`: tools and libraries to run hybrid ROS 1 - ROS 2 systems and bridge messages between them -The rest of the common meta-packages such as `desktop` and `desktop-full` are hosted on automatic build 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 keep the official images lean and secure, the desktop packages are just be hosted with OSRF's profile. +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). ### Volumes ROS uses the `~/.ros/` directory for storing logs, and debugging info. If you wish to persist these files beyond the lifecycle of the containers which produced them, the `~/.ros/` folder can be mounted to an external volume on the host, or a derived image can specify volumes to be managed by the Docker engine. By default, the container runs as the `root` user, so `/root/.ros/` would be the full path to these files. -For example, if one wishes to use their own `.ros` folder that already resides in their local home directory, with a username of `ubuntu`, we can simple launch the container with an additional volume argument: +For example, if one wishes to use their own `.ros` folder that already resides in their local home directory, with a username of `ubuntu`, we can simply launch the container with an additional volume argument: ```console $ docker run -v "/home/ubuntu/.ros/:/root/.ros/" ros @@ -120,194 +216,122 @@ Some application may require device access for acquiring images from connected c ### Networks -The ROS runtime "graph" is a peer-to-peer network of processes (potentially distributed across machines) that are loosely coupled using the ROS communication infrastructure. ROS implements several different styles of communication, including synchronous RPC-style communication over services, asynchronous streaming of data over topics, and storage of data on a Parameter Server. To abide by the best practice of [one process per container](https://docs.docker.com/articles/dockerfile_best-practices/), Docker networks can be used to string together several running ROS processes. For further details about [ROS NetworkSetup](http://wiki.ros.org/ROS/NetworkSetup) wik article, or see the Deployment example below. - -## Deployment example - -If we want our all ROS nodes to easily talk to each other, we'll can use a virtual network to connect the separate containers. In this short example, we'll create a virtual network, spin up a new container running `roscore` advertised as the `master` service on the new network, then spawn a message publisher and subscriber process as services on the same network. - -### Build image - -> Build a ROS image that includes ROS tutorials using this `Dockerfile:` +ROS allows for peer-to-peer networking of processes (potentially distributed across machines) that are loosely coupled using the ROS communication infrastructure. ROS implements several different styles of communication, including synchronous RPC-style communication over services, asynchronous streaming of typed data over topics, combinations of both prior via request/reply and status/feedback over actions, and run-time settings via configuration over parameters. To abide by the best practice of [one process per container](https://docs.docker.com/articles/dockerfile_best-practices/), Docker networks can be used to string together several running ROS processes. For further details see the Deployment example further below. -```dockerfile -FROM ros:indigo-ros-base -# install ros tutorials packages -RUN apt-get update && apt-get install -y \ - ros-indigo-ros-tutorials \ - ros-indigo-common-tutorials \ - && rm -rf /var/lib/apt/lists/ -``` - -> Then to build the image from within the same directory: - -```console -$ docker build --tag ros:ros-tutorials . -``` +Alternatively, more permissive network settings can be used to share all host network interfaces with the container, such as [`host` network driver](https://docs.docker.com/network/host/), simplifying connectivity with external network participants. Be aware however that this removes the networking namespace separation between containers, and can affect the ability of DDS participants to communicate between containers, as documented [here](https://community.rti.com/kb/how-use-rti-connext-dds-communicate-across-docker-containers-using-host-driver). -#### Create network +## Deployment example -> To create a new network `foo`, we use the network command: +### Docker Compose - docker network create foo +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. -> Now that we have a network, we can create services. Services advertise there location on the network, making it easy to resolve the location/address of the service specific container. We'll use this make sure our ROS nodes can find and connect to our ROS `master`. +> 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: -#### Run services +```yaml +version: '3' -> To create a container for the ROS master and advertise it's service: +services: + talker: + build: ./ + command: ros2 run demo_nodes_cpp talker -```console -$ docker run -it --rm \ - --net foo \ - --name master \ - ros:ros-tutorials \ - roscore + listener: + build: ./ + environment: + - "PYTHONUNBUFFERED=1" + command: ros2 run demo_nodes_py listener ``` -> Now you can see that master is running and is ready manage our other ROS nodes. To add our `talker` node, we'll need to point the relevant environment variable to the master service: +> 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 run -it --rm \ - --net foo \ - --name talker \ - --env ROS_HOSTNAME=talker \ - --env ROS_MASTER_URI=http://master:11311 \ - ros:ros-tutorials \ - rosrun roscpp_tutorials talker +$ docker-compose up -d ``` -> Then in another terminal, run the `listener` node similarly: +> Notice that a new network named `ros_demos_default` has been created, as can be shown further with: ```console -$ docker run -it --rm \ - --net foo \ - --name listener \ - --env ROS_HOSTNAME=listener \ - --env ROS_MASTER_URI=http://master:11311 \ - ros:ros-tutorials \ - rosrun roscpp_tutorials listener +$ docker network inspect ros_demos_default ``` -> Alright! You should see `listener` is now echoing each message the `talker` broadcasting. You can then list the containers and see something like this: +> We can monitor the logged output of each container, such as the listener node like so: ```console -$ docker service ls -SERVICE ID NAME NETWORK CONTAINER -67ce73355e67 listener foo a62019123321 -917ee622d295 master foo f6ab9155fdbe -7f5a4748fb8d talker foo e0da2ee7570a +$ docker-compose logs listener ``` -> And for the services: +> Finally, we can stop and remove all the relevant containers using docker-compose from the same directory: ```console -$ docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -a62019123321 ros:ros-tutorials "/ros_entrypoint.sh About a minute ago Up About a minute 11311/tcp listener -e0da2ee7570a ros:ros-tutorials "/ros_entrypoint.sh About a minute ago Up About a minute 11311/tcp talker -f6ab9155fdbe ros:ros-tutorials "/ros_entrypoint.sh About a minute ago Up About a minute 11311/tcp master +$ docker-compose stop +$ docker-compose rm ``` -#### Introspection - -> Ok, now that we see the two nodes are communicating, let get inside one of the containers and do some introspection what exactly the topics are: +> Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker-compose down`. -```console -$ docker exec -it master bash -$ source /ros_entrypoint.sh -``` - -> If we then use `rostopic` to list published message topics, we should see something like this: +### ROS 1 Bridge -```console -$ rostopic list -/chatter -/rosout -/rosout_agg -``` +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. -#### Tear down +```dockerfile +FROM ros:noetic -> To tear down the structure we've made, we just need to stop the containers and the services. We can stop and remove the containers using `Ctrl^C` where we launched the containers or using the stop command with the names we gave them: +# 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/* -```console -$ docker stop master talker listener -$ docker rm master talker listener +# launch ros package +CMD ["roslaunch", "roscpp_tutorials", "talker_listener.launch"] ``` -### Compose - -Now that you have an appreciation for bootstrapping a distributed ROS example manually, lets try and automate it using [`docker-compose`](https://docs.docker.com/compose/). - -> Start by making a folder named `rostutorials` and moving the Dockerfile we used earlier inside this directory. Then create a yaml file named `docker-compose.yml` in the same directory and paste the following inside: +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: '2' +version: '3' + services: - master: - build: . - container_name: master - command: - - roscore - - talker: - build: . - container_name: talker + ros1: + build: + context: ./ + dockerfile: ros1.Dockerfile + + ros2: + build: + context: ./ + dockerfile: ros2.Dockerfile + + bridge: + image: ros:foxy-ros1-bridge environment: - - "ROS_HOSTNAME=talker" - - "ROS_MASTER_URI=http://master:11311" - command: rosrun roscpp_tutorials talker - - listener: - build: . - container_name: listener - environment: - - "ROS_HOSTNAME=listener" - - "ROS_MASTER_URI=http://master:11311" - command: rosrun roscpp_tutorials listener -``` - -> Now from inside the same folder, use docker-copose to launch our ROS nodes and specify that they coexist on their own network: - -```console -$ docker-compose up -d + - "ROS_HOSTNAME=bridge" + - "ROS_MASTER_URI=http://ros1:11311" + command: ros2 run ros1_bridge dynamic_bridge ``` -> Notice that a new network named `rostutorials_default` has now been created, you can inspect it further with: - -```console -$ docker network inspect rostutorials_default -``` - -> We can monitor the logged output of each service, such as the listener node like so: - -```console -$ docker-compose logs listener -``` +# More Resources -> Finally, we can stop and remove all the relevant containers using docker-copose from the same directory: +[ROS.org](http://www.ros.org/): Main ROS website +[Q&A](https://answers.ros.org/questions/): 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 -```console -$ docker-compose stop -$ docker-compose rm -``` +## ROS 2 -> Note: the auto-generated network, `rostutorials_default`, will persist over the life of the docker engine or until you explicitly remove it using [`docker network rm`](https://docs.docker.com/engine/reference/commandline/network_rm/). +[Index](https://index.ros.org/doc/ros2/): ROS 2 Documentation +[Design](https://design.ros2.org/): ROS 2 Design Articles -# More Resources +## ROS 1 -[ROS.org](http://www.ros.org/): Main ROS website -[Wiki](http://wiki.ros.org/): Find tutorials and learn more -[ROS Answers](http://answers.ros.org/questions/): Ask questions. Get answers -[Blog](http://www.ros.org/news/): Stay up-to-date -[OSRF](http://www.osrfoundation.org/): Open Source Robotics Foundation +[Wiki](http://wiki.ros.org/Documentation): ROS 1 Documentation # License -The core of ROS is licensed under the standard three-clause BSD license. This is a very permissive open license that allows for reuse in commercial and closed source products. You can find more about the BSD license from the Opensource.org [BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) page and Wikipedia's [BSD Licenses](http://en.wikipedia.org/wiki/BSD_licenses) entry. - -While the core parts of ROS are licensed under the BSD license, other licenses are commonly used in the community packages, such as the [Apache 2.0](http://opensource.org/licenses/Apache-2.0) license, the [GPL](http://opensource.org/licenses/gpl-license) license, the [MIT](http://opensource.org/licenses/MIT) license, and even proprietary licenses. Each package in the ROS ecosystem is required to specify a license, so that it is easy for you to quickly identify if a package will meet your licensing needs. +View [package index](https://index.ros.org/packages/) for license information on 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/ros/content.md b/ros/content.md index 919879c207c2..2f14ee99e988 100644 --- a/ros/content.md +++ b/ros/content.md @@ -1,28 +1,116 @@ -# What is [ROS](http://www.ros.org/)? +# What is [ROS](https://www.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%%](http://www.ros.org/) +[%%LOGO%%](https://www.ros.org/) # How to use this image -## Create a `Dockerfile` in your ROS app project +## Creating a `Dockerfile` to install ROS packages + +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%%:indigo -# place here your application's setup specifics -CMD [ "roslaunch", "my-ros-app my-ros-app.launch" ] +FROM %%IMAGE%%:foxy + +# install ros package +RUN apt-get update && apt-get install -y \ + ros-${ROS_DISTRO}-demo-nodes-cpp \ + ros-${ROS_DISTRO}-demo-nodes-py && \ + rm -rf /var/lib/apt/lists/* + +# launch ros package +CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener.launch.py"] ``` -You can then build and run the Docker image: +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 --name my-running-app my-ros-app +$ docker build -t my/ros:app . +$ docker run -it --rm my/ros:app +[INFO] [launch]: process[talker-1]: started with pid [813] +[INFO] [launch]: process[listener-2]: started with pid [814] +[INFO] [talker]: Publishing: 'Hello World: 1' +[INFO] [listener]: I heard: [Hello World: 1] +[INFO] [talker]: Publishing: 'Hello World: 2' +[INFO] [listener]: I heard: [Hello World: 2] +... +``` + +## Creating a `Dockerfile` to build ROS packages + +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 OVERLAY_WS=/opt/ros/overlay_ws + +# multi-stage for caching +FROM $FROM_IMAGE AS cacher + +# 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 + +# 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/* + +# build overlay source +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 + +# source entrypoint setup +ENV OVERLAY_WS $OVERLAY_WS +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"] ``` +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. + +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. + +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. + ## Deployment use cases This dockerized image of ROS is intended to provide a simplified and consistent platform to build and deploy distributed robotic applications. Built from the [official Ubuntu image](https://hub.docker.com/_/ubuntu/) and ROS's official Debian packages, it includes recent supported releases for quick access and download. This provides roboticists in research and industry with an easy way to develop, reuse and ship software for autonomous actions and task planning, control dynamics, localization and mapping, swarm behavior, as well as general system integration. @@ -31,22 +119,25 @@ 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). + ## Deployment suggestions The available tags include supported distros along with a hierarchy tags based off the most common meta-package dependencies, designed to have a small footprint and simple configuration: -- `ros-core`: barebone ROS install +- `ros-core`: minimal ROS install - `ros-base`: basic tools and libraries (also tagged with distro name with LTS version as `latest`) -- `robot`: basic install for robots -- `perception`: basic install for perception tasks +- `ros1-bridge`: tools and libraries to run hybrid ROS 1 - ROS 2 systems and bridge messages between them -The rest of the common meta-packages such as `desktop` and `desktop-full` are hosted on automatic build 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 keep the official images lean and secure, the desktop packages are just be hosted with OSRF's profile. +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). ### Volumes ROS uses the `~/.ros/` directory for storing logs, and debugging info. If you wish to persist these files beyond the lifecycle of the containers which produced them, the `~/.ros/` folder can be mounted to an external volume on the host, or a derived image can specify volumes to be managed by the Docker engine. By default, the container runs as the `root` user, so `/root/.ros/` would be the full path to these files. -For example, if one wishes to use their own `.ros` folder that already resides in their local home directory, with a username of `ubuntu`, we can simple launch the container with an additional volume argument: +For example, if one wishes to use their own `.ros` folder that already resides in their local home directory, with a username of `ubuntu`, we can simply launch the container with an additional volume argument: ```console $ docker run -v "/home/ubuntu/.ros/:/root/.ros/" %%IMAGE%% @@ -58,185 +149,115 @@ Some application may require device access for acquiring images from connected c ### Networks -The ROS runtime "graph" is a peer-to-peer network of processes (potentially distributed across machines) that are loosely coupled using the ROS communication infrastructure. ROS implements several different styles of communication, including synchronous RPC-style communication over services, asynchronous streaming of data over topics, and storage of data on a Parameter Server. To abide by the best practice of [one process per container](https://docs.docker.com/articles/dockerfile_best-practices/), Docker networks can be used to string together several running ROS processes. For further details about [ROS NetworkSetup](http://wiki.ros.org/ROS/NetworkSetup) wik article, or see the Deployment example below. +ROS allows for peer-to-peer networking of processes (potentially distributed across machines) that are loosely coupled using the ROS communication infrastructure. ROS implements several different styles of communication, including synchronous RPC-style communication over services, asynchronous streaming of typed data over topics, combinations of both prior via request/reply and status/feedback over actions, and run-time settings via configuration over parameters. To abide by the best practice of [one process per container](https://docs.docker.com/articles/dockerfile_best-practices/), Docker networks can be used to string together several running ROS processes. For further details see the Deployment example further below. + +Alternatively, more permissive network settings can be used to share all host network interfaces with the container, such as [`host` network driver](https://docs.docker.com/network/host/), simplifying connectivity with external network participants. Be aware however that this removes the networking namespace separation between containers, and can affect the ability of DDS participants to communicate between containers, as documented [here](https://community.rti.com/kb/how-use-rti-connext-dds-communicate-across-docker-containers-using-host-driver). ## Deployment example -If we want our all ROS nodes to easily talk to each other, we'll can use a virtual network to connect the separate containers. In this short example, we'll create a virtual network, spin up a new container running `roscore` advertised as the `master` service on the new network, then spawn a message publisher and subscriber process as services on the same network. +### Docker Compose -### Build image +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. -> Build a ROS image that includes ROS tutorials using this `Dockerfile:` +> 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: -```dockerfile -FROM %%IMAGE%%:indigo-ros-base -# install ros tutorials packages -RUN apt-get update && apt-get install -y \ - ros-indigo-ros-tutorials \ - ros-indigo-common-tutorials \ - && rm -rf /var/lib/apt/lists/ -``` +```yaml +version: '3' -> Then to build the image from within the same directory: +services: + talker: + build: ./ + command: ros2 run demo_nodes_cpp talker -```console -$ docker build --tag %%IMAGE%%:ros-tutorials . + listener: + build: ./ + environment: + - "PYTHONUNBUFFERED=1" + command: ros2 run demo_nodes_py listener ``` -#### Create network - -> To create a new network `foo`, we use the network command: - - docker network create foo - -> Now that we have a network, we can create services. Services advertise there location on the network, making it easy to resolve the location/address of the service specific container. We'll use this make sure our ROS nodes can find and connect to our ROS `master`. - -#### Run services - -> To create a container for the ROS master and advertise it's service: +> 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 run -it --rm \ - --net foo \ - --name master \ - %%IMAGE%%:ros-tutorials \ - roscore +$ docker-compose up -d ``` -> Now you can see that master is running and is ready manage our other ROS nodes. To add our `talker` node, we'll need to point the relevant environment variable to the master service: +> Notice that a new network named `ros_demos_default` has been created, as can be shown further with: ```console -$ docker run -it --rm \ - --net foo \ - --name talker \ - --env ROS_HOSTNAME=talker \ - --env ROS_MASTER_URI=http://master:11311 \ - %%IMAGE%%:ros-tutorials \ - rosrun roscpp_tutorials talker +$ docker network inspect ros_demos_default ``` -> Then in another terminal, run the `listener` node similarly: +> We can monitor the logged output of each container, such as the listener node like so: ```console -$ docker run -it --rm \ - --net foo \ - --name listener \ - --env ROS_HOSTNAME=listener \ - --env ROS_MASTER_URI=http://master:11311 \ - %%IMAGE%%:ros-tutorials \ - rosrun roscpp_tutorials listener +$ docker-compose logs listener ``` -> Alright! You should see `listener` is now echoing each message the `talker` broadcasting. You can then list the containers and see something like this: +> Finally, we can stop and remove all the relevant containers using docker-compose from the same directory: ```console -$ docker service ls -SERVICE ID NAME NETWORK CONTAINER -67ce73355e67 listener foo a62019123321 -917ee622d295 master foo f6ab9155fdbe -7f5a4748fb8d talker foo e0da2ee7570a +$ docker-compose stop +$ docker-compose rm ``` -> And for the services: +> Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker-compose down`. -```console -$ docker ps -CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES -a62019123321 ros:ros-tutorials "/ros_entrypoint.sh About a minute ago Up About a minute 11311/tcp listener -e0da2ee7570a ros:ros-tutorials "/ros_entrypoint.sh About a minute ago Up About a minute 11311/tcp talker -f6ab9155fdbe ros:ros-tutorials "/ros_entrypoint.sh About a minute ago Up About a minute 11311/tcp master -``` - -#### Introspection +### ROS 1 Bridge -> Ok, now that we see the two nodes are communicating, let get inside one of the containers and do some introspection what exactly the topics are: +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. -```console -$ docker exec -it master bash -$ source /ros_entrypoint.sh -``` - -> If we then use `rostopic` to list published message topics, we should see something like this: - -```console -$ rostopic list -/chatter -/rosout -/rosout_agg -``` - -#### Tear down +```dockerfile +FROM %%IMAGE%%:noetic -> To tear down the structure we've made, we just need to stop the containers and the services. We can stop and remove the containers using `Ctrl^C` where we launched the containers or using the stop command with the names we gave them: +# 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/* -```console -$ docker stop master talker listener -$ docker rm master talker listener +# launch ros package +CMD ["roslaunch", "roscpp_tutorials", "talker_listener.launch"] ``` -### Compose - -Now that you have an appreciation for bootstrapping a distributed ROS example manually, lets try and automate it using [`docker-compose`](https://docs.docker.com/compose/). - -> Start by making a folder named `rostutorials` and moving the Dockerfile we used earlier inside this directory. Then create a yaml file named `docker-compose.yml` in the same directory and paste the following inside: +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: '2' +version: '3' + services: - master: - build: . - container_name: master - command: - - roscore - - talker: - build: . - container_name: talker + ros1: + build: + context: ./ + dockerfile: ros1.Dockerfile + + ros2: + build: + context: ./ + dockerfile: ros2.Dockerfile + + bridge: + image: ros:foxy-ros1-bridge environment: - - "ROS_HOSTNAME=talker" - - "ROS_MASTER_URI=http://master:11311" - command: rosrun roscpp_tutorials talker - - listener: - build: . - container_name: listener - environment: - - "ROS_HOSTNAME=listener" - - "ROS_MASTER_URI=http://master:11311" - command: rosrun roscpp_tutorials listener -``` - -> Now from inside the same folder, use docker-copose to launch our ROS nodes and specify that they coexist on their own network: - -```console -$ docker-compose up -d + - "ROS_HOSTNAME=bridge" + - "ROS_MASTER_URI=http://ros1:11311" + command: ros2 run ros1_bridge dynamic_bridge ``` -> Notice that a new network named `rostutorials_default` has now been created, you can inspect it further with: - -```console -$ docker network inspect rostutorials_default -``` - -> We can monitor the logged output of each service, such as the listener node like so: - -```console -$ docker-compose logs listener -``` +# More Resources -> Finally, we can stop and remove all the relevant containers using docker-copose from the same directory: +[ROS.org](http://www.ros.org/): Main ROS website +[Q&A](https://answers.ros.org/questions/): 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 -```console -$ docker-compose stop -$ docker-compose rm -``` +## ROS 2 -> Note: the auto-generated network, `rostutorials_default`, will persist over the life of the docker engine or until you explicitly remove it using [`docker network rm`](https://docs.docker.com/engine/reference/commandline/network_rm/). +[Index](https://index.ros.org/doc/ros2/): ROS 2 Documentation +[Design](https://design.ros2.org/): ROS 2 Design Articles -# More Resources +## ROS 1 -[ROS.org](http://www.ros.org/): Main ROS website -[Wiki](http://wiki.ros.org/): Find tutorials and learn more -[ROS Answers](http://answers.ros.org/questions/): Ask questions. Get answers -[Blog](http://www.ros.org/news/): Stay up-to-date -[OSRF](http://www.osrfoundation.org/): Open Source Robotics Foundation +[Wiki](http://wiki.ros.org/Documentation): ROS 1 Documentation diff --git a/ros/license.md b/ros/license.md index aa8b87126e6d..d15542ebd2c4 100644 --- a/ros/license.md +++ b/ros/license.md @@ -1,3 +1 @@ -The core of ROS is licensed under the standard three-clause BSD license. This is a very permissive open license that allows for reuse in commercial and closed source products. You can find more about the BSD license from the Opensource.org [BSD 3-Clause](http://opensource.org/licenses/BSD-3-Clause) page and Wikipedia's [BSD Licenses](http://en.wikipedia.org/wiki/BSD_licenses) entry. - -While the core parts of ROS are licensed under the BSD license, other licenses are commonly used in the community packages, such as the [Apache 2.0](http://opensource.org/licenses/Apache-2.0) license, the [GPL](http://opensource.org/licenses/gpl-license) license, the [MIT](http://opensource.org/licenses/MIT) license, and even proprietary licenses. Each package in the ROS ecosystem is required to specify a license, so that it is easy for you to quickly identify if a package will meet your licensing needs. +View [package index](https://index.ros.org/packages/) for license information on software contained in this image. diff --git a/ruby/README.md b/ruby/README.md index 801e46c8b204..1db0cd70ddb9 100644 --- a/ruby/README.md +++ b/ruby/README.md @@ -20,26 +20,32 @@ WARNING: [the Docker Community](https://github.com/docker-library/ruby) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`2.7.1-buster`, `2.7-buster`, `2-buster`, `buster`, `2.7.1`, `2.7`, `2`, `latest`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.7/buster/Dockerfile) -- [`2.7.1-slim-buster`, `2.7-slim-buster`, `2-slim-buster`, `slim-buster`, `2.7.1-slim`, `2.7-slim`, `2-slim`, `slim`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.7/buster/slim/Dockerfile) -- [`2.7.1-alpine3.11`, `2.7-alpine3.11`, `2-alpine3.11`, `alpine3.11`, `2.7.1-alpine`, `2.7-alpine`, `2-alpine`, `alpine`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.7/alpine3.11/Dockerfile) -- [`2.7.1-alpine3.10`, `2.7-alpine3.10`, `2-alpine3.10`, `alpine3.10`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.7/alpine3.10/Dockerfile) -- [`2.6.6-buster`, `2.6-buster`, `2.6.6`, `2.6`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.6/buster/Dockerfile) -- [`2.6.6-slim-buster`, `2.6-slim-buster`, `2.6.6-slim`, `2.6-slim`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.6/buster/slim/Dockerfile) -- [`2.6.6-stretch`, `2.6-stretch`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.6/stretch/Dockerfile) -- [`2.6.6-slim-stretch`, `2.6-slim-stretch`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.6/stretch/slim/Dockerfile) -- [`2.6.6-alpine3.11`, `2.6-alpine3.11`, `2.6.6-alpine`, `2.6-alpine`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.6/alpine3.11/Dockerfile) -- [`2.6.6-alpine3.10`, `2.6-alpine3.10`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.6/alpine3.10/Dockerfile) -- [`2.5.8-buster`, `2.5-buster`, `2.5.8`, `2.5`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.5/buster/Dockerfile) -- [`2.5.8-slim-buster`, `2.5-slim-buster`, `2.5.8-slim`, `2.5-slim`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.5/buster/slim/Dockerfile) -- [`2.5.8-stretch`, `2.5-stretch`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.5/stretch/Dockerfile) -- [`2.5.8-slim-stretch`, `2.5-slim-stretch`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.5/stretch/slim/Dockerfile) -- [`2.5.8-alpine3.11`, `2.5-alpine3.11`, `2.5.8-alpine`, `2.5-alpine`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.5/alpine3.11/Dockerfile) -- [`2.5.8-alpine3.10`, `2.5-alpine3.10`](https://github.com/docker-library/ruby/blob/a564feaaee4c8647c299ab11d41498468bb9af7b/2.5/alpine3.10/Dockerfile) +- [`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) # Quick reference (cont.) @@ -54,7 +60,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/ruby`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fruby) + [official-images repo's `library/ruby` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fruby) [official-images repo's `library/ruby` file](https://github.com/docker-library/official-images/blob/master/library/ruby) ([history](https://github.com/docker-library/official-images/commits/master/library/ruby)) - **Source of this description**: @@ -73,7 +79,7 @@ Ruby is a dynamic, reflective, object-oriented, general-purpose, open-source pro ## Create a `Dockerfile` in your Ruby app project ```dockerfile -FROM ruby:2.5 +FROM ruby:3.0 # throw errors if Gemfile has been modified since Gemfile.lock RUN bundle config --global frozen 1 @@ -102,7 +108,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:2.5 bundle install +$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:3.0 bundle install ``` ## Run a single Ruby script @@ -110,7 +116,7 @@ $ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app ruby:2.5 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:2.5 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.0 ruby your-daemon-or-script.rb ``` ## Encoding @@ -133,7 +139,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 buster or stretch 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 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. 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. @@ -143,9 +149,9 @@ This image does not contain the common packages contained in the default tag and ## `ruby:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/ruby/content.md b/ruby/content.md index 4d6f1c744a05..5fddf48924b4 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%%:2.5 +FROM %%IMAGE%%:3.0 # 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%%:2.5 bundle install +$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:3.0 bundle install ``` ## Run a single Ruby script @@ -48,7 +48,7 @@ $ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app %%IMAGE%%:2.5 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%%:2.5 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.0 ruby your-daemon-or-script.rb ``` ## Encoding diff --git a/rust/README.md b/rust/README.md index bc09cecfd998..1409f19e4f48 100644 --- a/rust/README.md +++ b/rust/README.md @@ -20,16 +20,16 @@ WARNING: [the Rust Project developers](https://github.com/rust-lang/docker-rust) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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-stretch`, `1.43-stretch`, `1.43.1-stretch`, `stretch`](https://github.com/rust-lang-nursery/docker-rust/blob/009cc0a821ff773d54875350312731ed490d5cce/1.43.1/stretch/Dockerfile) -- [`1-slim-stretch`, `1.43-slim-stretch`, `1.43.1-slim-stretch`, `slim-stretch`](https://github.com/rust-lang-nursery/docker-rust/blob/009cc0a821ff773d54875350312731ed490d5cce/1.43.1/stretch/slim/Dockerfile) -- [`1-buster`, `1.43-buster`, `1.43.1-buster`, `buster`, `1`, `1.43`, `1.43.1`, `latest`](https://github.com/rust-lang-nursery/docker-rust/blob/009cc0a821ff773d54875350312731ed490d5cce/1.43.1/buster/Dockerfile) -- [`1-slim-buster`, `1.43-slim-buster`, `1.43.1-slim-buster`, `slim-buster`, `1-slim`, `1.43-slim`, `1.43.1-slim`, `slim`](https://github.com/rust-lang-nursery/docker-rust/blob/009cc0a821ff773d54875350312731ed490d5cce/1.43.1/buster/slim/Dockerfile) -- [`1-alpine3.10`, `1.43-alpine3.10`, `1.43.1-alpine3.10`, `alpine3.10`](https://github.com/rust-lang-nursery/docker-rust/blob/009cc0a821ff773d54875350312731ed490d5cce/1.43.1/alpine3.10/Dockerfile) -- [`1-alpine3.11`, `1.43-alpine3.11`, `1.43.1-alpine3.11`, `alpine3.11`, `1-alpine`, `1.43-alpine`, `1.43.1-alpine`, `alpine`](https://github.com/rust-lang-nursery/docker-rust/blob/009cc0a821ff773d54875350312731ed490d5cce/1.43.1/alpine3.11/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +44,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/rust`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Frust) + [official-images repo's `library/rust` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frust) [official-images repo's `library/rust` file](https://github.com/docker-library/official-images/blob/master/library/rust) ([history](https://github.com/docker-library/official-images/commits/master/library/rust)) - **Source of this description**: @@ -91,7 +91,7 @@ COPY . . RUN cargo install --path . FROM debian:buster-slim -RUN apt-get update && apt-get install -y extra-runtime-dependencies +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 +120,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 buster or stretch 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 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. 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. @@ -130,9 +130,9 @@ This image does not contain the common packages contained in the default tag and ## `rust:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/rust/content.md b/rust/content.md index 56bbd2fa3de4..ce3595d6b517 100644 --- a/rust/content.md +++ b/rust/content.md @@ -39,7 +39,7 @@ COPY . . RUN cargo install --path . FROM debian:buster-slim -RUN apt-get update && apt-get install -y extra-runtime-dependencies +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/sapmachine/README.md b/sapmachine/README.md index fdde14d8277a..bedcb849a74b 100644 --- a/sapmachine/README.md +++ b/sapmachine/README.md @@ -24,8 +24,9 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`11`, `11.0.7`, `lts`](https://github.com/SAP/SapMachine-infrastructure/blob/3d2d199e3c53a0de726491827ef0587c3c9b4f20/dockerfiles/official/lts/Dockerfile) -- [`14`, `14.0.1`, `latest`](https://github.com/SAP/SapMachine-infrastructure/blob/dddf6cf714e932b34e25d69f8cdb9c2381851199/dockerfiles/official/stable/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +34,14 @@ WARNING: [GitHub](https://github.com/SAP/SapMachine/issues) For more information see the [SapMachine Wiki](https://github.com/SAP/SapMachine/wiki). - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/sapmachine/) + [`amd64`](https://hub.docker.com/r/amd64/sapmachine/), [`arm64v8`](https://hub.docker.com/r/arm64v8/sapmachine/), [`ppc64le`](https://hub.docker.com/r/ppc64le/sapmachine/) - **Published image artifact details**: [repo-info repo's `repos/sapmachine/` directory](https://github.com/docker-library/repo-info/blob/master/repos/sapmachine) ([history](https://github.com/docker-library/repo-info/commits/master/repos/sapmachine)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/sapmachine`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsapmachine) + [official-images repo's `library/sapmachine` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fsapmachine) [official-images repo's `library/sapmachine` file](https://github.com/docker-library/official-images/blob/master/library/sapmachine) ([history](https://github.com/docker-library/official-images/commits/master/library/sapmachine)) - **Source of this description**: diff --git a/satosa/README-short.txt b/satosa/README-short.txt new file mode 100644 index 000000000000..50d0e08f9866 --- /dev/null +++ b/satosa/README-short.txt @@ -0,0 +1 @@ +SATOSA translates between authentication protocols such as SAML2, OpenID Connect, and OAuth2. diff --git a/satosa/README.md b/satosa/README.md new file mode 100644 index 000000000000..67d99b5a6e57 --- /dev/null +++ b/satosa/README.md @@ -0,0 +1,158 @@ + + +# Quick reference + +- **Maintained by**: + [the Identity Python project](https://github.com/IdentityPython/satosa-docker) + +- **Where to get help**: + [the Identity Python mailing list](https://lists.sunet.se/listinfo/idpy-discuss) or [the Identity Python Slack workspace](https://identity-python.slack.com/) ([invitation](https://join.slack.com/t/identity-python/shared_invite/enQtNzEyNjU1NDI1MjUyLTM2MWI5ZGNhMTk1ZThiOTIxNWY2OTY1ODVmMWNjMzUzMTYxNTY5MzE5N2RlYjExZTIyM2MwYjBjZGE4MGVlMTM)) + +# 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 + +- [`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) + +## 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) + +# Quick reference (cont.) + +- **Where to file issues**: + [https://github.com/IdentityPython/satosa-docker/issues](https://github.com/IdentityPython/satosa-docker/issues) + +- **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/) + +- **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)) + (image metadata, transfer size, etc) + +- **Image updates**: + [official-images repo's `library/satosa` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fsatosa) + [official-images repo's `library/satosa` file](https://github.com/docker-library/official-images/blob/master/library/satosa) ([history](https://github.com/docker-library/official-images/commits/master/library/satosa)) + +- **Source of this description**: + [docs repo's `satosa/` directory](https://github.com/docker-library/docs/tree/master/satosa) ([history](https://github.com/docker-library/docs/commits/master/satosa)) + +# What is SATOSA? + +SATOSA is a configurable proxy for translating between different authentication protocols such as SAML2, OpenID Connect, and OAuth2. + +![logo](https://raw.githubusercontent.com/docker-library/docs/8e1f8cd99d5ce31197d5452d6d04886f791ac9c7/satosa/logo.svg?sanitize=true) + +# How to use this image + +## To start a SATOSA instance + +The basic pattern for starting a `satosa` instance is: + +```sh +docker run --name some-satosa -d satosa +``` + +To access the instance from the host without the container's IP, use port mappings: + +```sh +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. + +## Entrypoint script + +The `satosa` image's entrypoint script runs [Gunicorn](https://gunicorn.org/) by default if the first argument looks like a command-line flag. For example, the following will use a bind mount to provide an X.509 certificate and corresponding private key to the instance, and it will run Gunicorn with HTTPS enabled: + +```sh +docker run --name some-satosa -p 443:8443 \ + -v /etc/letsencrypt/live/some-satosa/fullchain.pem:/etc/https.crt \ + -v /etc/letsencrypt/live/some-satosa/privkey.pem:/etc/https.key \ + -d satosa \ + -b0.0.0.0:8443 --certfile /etc/https.crt --keyfile /etc/https.key satosa.wsgi:app +``` + +If the first argument looks like a command instead of a flag, the entrypoint script will run that instead of Gunicorn. For example, the following will start an interactive, unprivileged shell inside the container: + +```sh +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 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`. + +### `STATE_ENCRYPTION_KEY` + +SATOSA uses encrypted cookies to track the progress of an authentication flow. This environment variable optionally sets the state cookies' encryption key. If set, the state encryption key *must* be an alphanumeric value, e.g., `12345SameAsMyLuggage`. If not specified, a new random 32-character key will be generated. + +### `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/). + +### `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`. + +### `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`. + +# Image Variants + +The `satosa` images come in many flavors, each designed for a specific use case. + +## `satosa:` + +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. + +## `satosa:-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/IdentityPython/SATOSA/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 `satosa/` directory](https://github.com/docker-library/repo-info/tree/master/repos/satosa). + +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/satosa/content.md b/satosa/content.md new file mode 100644 index 000000000000..f00ab9e50c8b --- /dev/null +++ b/satosa/content.md @@ -0,0 +1,73 @@ +# What is SATOSA? + +SATOSA is a configurable proxy for translating between different authentication protocols such as SAML2, OpenID Connect, and OAuth2. + +%%LOGO%% + +# How to use this image + +## To start a SATOSA instance + +The basic pattern for starting a `%%REPO%%` instance is: + +```sh +docker run --name some-%%REPO%% -d %%IMAGE%% +``` + +To access the instance from the host without the container's IP, use port mappings: + +```sh +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. + +## Entrypoint script + +The `%%REPO%%` image's entrypoint script runs [Gunicorn](https://gunicorn.org/) by default if the first argument looks like a command-line flag. For example, the following will use a bind mount to provide an X.509 certificate and corresponding private key to the instance, and it will run Gunicorn with HTTPS enabled: + +```sh +docker run --name some-%%REPO%% -p 443:8443 \ + -v /etc/letsencrypt/live/some-%%REPO%%/fullchain.pem:/etc/https.crt \ + -v /etc/letsencrypt/live/some-%%REPO%%/privkey.pem:/etc/https.key \ + -d %%IMAGE%% \ + -b0.0.0.0:8443 --certfile /etc/https.crt --keyfile /etc/https.key satosa.wsgi:app +``` + +If the first argument looks like a command instead of a flag, the entrypoint script will run that instead of Gunicorn. For example, the following will start an interactive, unprivileged shell inside the container: + +```sh +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 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`. + +### `STATE_ENCRYPTION_KEY` + +SATOSA uses encrypted cookies to track the progress of an authentication flow. This environment variable optionally sets the state cookies' encryption key. If set, the state encryption key *must* be an alphanumeric value, e.g., `12345SameAsMyLuggage`. If not specified, a new random 32-character key will be generated. + +### `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/). + +### `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`. + +### `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`. diff --git a/satosa/get-help.md b/satosa/get-help.md new file mode 100644 index 000000000000..71d30aaa4f34 --- /dev/null +++ b/satosa/get-help.md @@ -0,0 +1 @@ +[the Identity Python mailing list](https://lists.sunet.se/listinfo/idpy-discuss) or [the Identity Python Slack workspace](https://identity-python.slack.com/) ([invitation](https://join.slack.com/t/identity-python/shared_invite/enQtNzEyNjU1NDI1MjUyLTM2MWI5ZGNhMTk1ZThiOTIxNWY2OTY1ODVmMWNjMzUzMTYxNTY5MzE5N2RlYjExZTIyM2MwYjBjZGE4MGVlMTM)) diff --git a/satosa/github-repo b/satosa/github-repo new file mode 100644 index 000000000000..77076cf18a3e --- /dev/null +++ b/satosa/github-repo @@ -0,0 +1 @@ +https://github.com/IdentityPython/satosa-docker diff --git a/satosa/license.md b/satosa/license.md new file mode 100644 index 000000000000..8122eaa98f50 --- /dev/null +++ b/satosa/license.md @@ -0,0 +1 @@ +View [license information](https://github.com/IdentityPython/SATOSA/blob/master/LICENSE) for the software contained in this image. diff --git a/satosa/logo.svg b/satosa/logo.svg new file mode 100644 index 000000000000..b9463555c546 --- /dev/null +++ b/satosa/logo.svg @@ -0,0 +1,2 @@ + +
IdentityPython
[Not supported by viewer]
\ No newline at end of file diff --git a/satosa/maintainer.md b/satosa/maintainer.md new file mode 100644 index 000000000000..2623e34b1866 --- /dev/null +++ b/satosa/maintainer.md @@ -0,0 +1 @@ +[the Identity Python project](%%GITHUB-REPO%%) diff --git a/sentry/README-short.txt b/sentry/README-short.txt deleted file mode 100644 index 0ef8af990697..000000000000 --- a/sentry/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Sentry is a realtime, platform-agnostic error logging and aggregation platform diff --git a/sentry/README.md b/sentry/README.md deleted file mode 100644 index 663c099c2144..000000000000 --- a/sentry/README.md +++ /dev/null @@ -1,184 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [Sentry](https://github.com/getsentry/docker-sentry) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`9.1.2`, `9.1`, `9`, `latest`](https://github.com/getsentry/docker-sentry/blob/09a7761e841eee7fab758526b14d46ae56134952/9.1/Dockerfile) -- [`9.1.2-onbuild`, `9.1-onbuild`, `9-onbuild`, `onbuild`](https://github.com/getsentry/docker-sentry/blob/f58f91fe5dc31bfe77af277dae7002a5542326a9/9.1/onbuild/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/getsentry/docker-sentry/issues](https://github.com/getsentry/docker-sentry/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/sentry/) - -- **Published image artifact details**: - [repo-info repo's `repos/sentry/` directory](https://github.com/docker-library/repo-info/blob/master/repos/sentry) ([history](https://github.com/docker-library/repo-info/commits/master/repos/sentry)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/sentry`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsentry) - [official-images repo's `library/sentry` file](https://github.com/docker-library/official-images/blob/master/library/sentry) ([history](https://github.com/docker-library/official-images/commits/master/library/sentry)) - -- **Source of this description**: - [docs repo's `sentry/` directory](https://github.com/docker-library/docs/tree/master/sentry) ([history](https://github.com/docker-library/docs/commits/master/sentry)) - -# What is Sentry? - -Sentry is a realtime event logging and aggregation platform. It specializes in monitoring errors and extracting all the information needed to do a proper post-mortem without any of the hassle of the standard user feedback loop. - -> [github.com/getsentry/sentry](https://github.com/getsentry/sentry) - -![logo](https://raw.githubusercontent.com/docker-library/docs/7d1c6fff37893bcefc186de7b978f5bdb2f801f6/sentry/logo.png) - -# How to use this image - -## How to setup a full Sentry instance - -1. Start a Redis container - - ```console - $ docker run -d --name sentry-redis redis - ``` - -2. Start a Postgres container - - ```console - $ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres - ``` - -3. Generate a new secret key to be shared by all `sentry` containers. This value will then be used as the `SENTRY_SECRET_KEY` environment variable. - - ```console - $ docker run --rm sentry config generate-secret-key - ``` - -4. If this is a new database, you'll need to run `upgrade` - - ```console - $ docker run -it --rm -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis sentry upgrade - ``` - - **Note: the `-it` is important as the initial upgrade will prompt to create an initial user and will fail without it** - -5. Now start up Sentry server - - ```console - $ docker run -d --name my-sentry -e SENTRY_SECRET_KEY='' --link sentry-redis:redis --link sentry-postgres:postgres sentry - ``` - -6. The default config needs a celery beat and celery workers, start as many workers as you need (each with a unique name) - - ```console - $ docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis sentry run cron - $ docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis sentry run worker - ``` - -### Port mapping - -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. Just add `-p 8080:9000` to the `docker run` arguments and then access either `http://localhost:8080` or `http://host-ip:8080` in a browser. - -## Configuring the initial user - -If you did not create a superuser during `upgrade`, use the following to create one: - -```console -$ docker run -it --rm -e SENTRY_SECRET_KEY='' --link sentry-redis:redis --link sentry-postgres:postgres sentry createuser -``` - -## Environment variables - -When you start the `sentry` image, you can adjust the configuration of the Sentry instance by passing one or more environment variables on the `docker run` command line. Please note that these environment variables are provided as a jump start, and it's highly recommended to either mount in your own config file or utilize the `sentry:onbuild` variant. - -### `SENTRY_SECRET_KEY` - -A secret key used for cryptographic functions within Sentry. This key should be unique and consistent across all running instances. You can generate a new secret key doing something like: - -```console -$ docker run --rm sentry config generate-secret-key -``` - -### `SENTRY_POSTGRES_HOST`, `SENTRY_POSTGRES_PORT`, `SENTRY_DB_NAME`, `SENTRY_DB_USER`, `SENTRY_DB_PASSWORD` - -Database credentials for your Postgres server. These values aren't needed if a linked `postgres` container exists. - -### `SENTRY_REDIS_HOST`, `SENTRY_REDIS_PORT`, `SENTRY_REDIS_DB` - -Connection information for your Redis server. These values aren't needed if a linked `redis` container exists. - -### `SENTRY_MEMCACHED_HOST`, `SENTRY_MEMCACHED_PORT` - -Connection information for a Memcache server. These values aren't needed if a linked `memcached` container exists. - -### `SENTRY_FILESTORE_DIR` - -Directory where uploaded files will be stored. This defaults to `/var/lib/sentry/files` and is a `VOLUME` for persistent data. - -### `SENTRY_SERVER_EMAIL` - -The email address used for `From:` in outbound emails. Default: `root@localhost` - -### `SENTRY_EMAIL_HOST`, `SENTRY_EMAIL_PORT`, `SENTRY_EMAIL_USER`, `SENTRY_EMAIL_PASSWORD`, `SENTRY_EMAIL_USE_TLS` - -Connection information for an outbound smtp server. These values aren't needed if a linked `smtp` container exists. - -### `SENTRY_MAILGUN_API_KEY` - -If you're using Mailgun for inbound mail, set your API key and configure a route to forward to `/api/hooks/mailgun/inbound/`. - -# Image Variants - -The `sentry` images come in many flavors, each designed for a specific use case. - -## `sentry:` - -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. - -## `sentry:onbuild` - -This image makes it easy to custom build your own Sentry instance by copying in a custom `config.yml` and/or `sentry.conf.py` file and installing plugins from `requirements.txt`. - -It's also possible to develop custom extensions within your `onbuild` package. If the build directory contains a `setup.py` file, this will also get installed. - -See the [official Sentry documentation](https://docs.getsentry.com/on-premise/server/installation/) for more information. - -To create your custom `sentry:onbuild` package, simply do the following: - -1. Create a Dockerfile containing `FROM sentry:onbuild` -2. In the same directory, add your custom configuration files. -3. You can get copies of those files to use as templates from the [docker-sentry GitHub repo](https://github.com/getsentry/docker-sentry/). -4. Build your image: `docker build -t mysentry .` -5. Run your custom image using `mysentry` instead of `sentry`. - -# License - -View [license information](https://github.com/getsentry/sentry/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 `sentry/` directory](https://github.com/docker-library/repo-info/tree/master/repos/sentry). - -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/sentry/content.md b/sentry/content.md deleted file mode 100644 index 6efc56d39620..000000000000 --- a/sentry/content.md +++ /dev/null @@ -1,102 +0,0 @@ -# What is Sentry? - -Sentry is a realtime event logging and aggregation platform. It specializes in monitoring errors and extracting all the information needed to do a proper post-mortem without any of the hassle of the standard user feedback loop. - -> [github.com/getsentry/sentry](https://github.com/getsentry/sentry) - -%%LOGO%% - -# How to use this image - -## How to setup a full Sentry instance - -1. Start a Redis container - - ```console - $ docker run -d --name sentry-redis redis - ``` - -2. Start a Postgres container - - ```console - $ docker run -d --name sentry-postgres -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=sentry postgres - ``` - -3. Generate a new secret key to be shared by all `%%REPO%%` containers. This value will then be used as the `SENTRY_SECRET_KEY` environment variable. - - ```console - $ docker run --rm %%IMAGE%% config generate-secret-key - ``` - -4. If this is a new database, you'll need to run `upgrade` - - ```console - $ docker run -it --rm -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis %%IMAGE%% upgrade - ``` - - **Note: the `-it` is important as the initial upgrade will prompt to create an initial user and will fail without it** - -5. Now start up Sentry server - - ```console - $ docker run -d --name my-sentry -e SENTRY_SECRET_KEY='' --link sentry-redis:redis --link sentry-postgres:postgres %%IMAGE%% - ``` - -6. The default config needs a celery beat and celery workers, start as many workers as you need (each with a unique name) - - ```console - $ docker run -d --name sentry-cron -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis %%IMAGE%% run cron - $ docker run -d --name sentry-worker-1 -e SENTRY_SECRET_KEY='' --link sentry-postgres:postgres --link sentry-redis:redis %%IMAGE%% run worker - ``` - -### Port mapping - -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. Just add `-p 8080:9000` to the `docker run` arguments and then access either `http://localhost:8080` or `http://host-ip:8080` in a browser. - -## Configuring the initial user - -If you did not create a superuser during `upgrade`, use the following to create one: - -```console -$ docker run -it --rm -e SENTRY_SECRET_KEY='' --link sentry-redis:redis --link sentry-postgres:postgres %%IMAGE%% createuser -``` - -## Environment variables - -When you start the `%%REPO%%` image, you can adjust the configuration of the Sentry instance by passing one or more environment variables on the `docker run` command line. Please note that these environment variables are provided as a jump start, and it's highly recommended to either mount in your own config file or utilize the `%%REPO%%:onbuild` variant. - -### `SENTRY_SECRET_KEY` - -A secret key used for cryptographic functions within Sentry. This key should be unique and consistent across all running instances. You can generate a new secret key doing something like: - -```console -$ docker run --rm %%IMAGE%% config generate-secret-key -``` - -### `SENTRY_POSTGRES_HOST`, `SENTRY_POSTGRES_PORT`, `SENTRY_DB_NAME`, `SENTRY_DB_USER`, `SENTRY_DB_PASSWORD` - -Database credentials for your Postgres server. These values aren't needed if a linked `postgres` container exists. - -### `SENTRY_REDIS_HOST`, `SENTRY_REDIS_PORT`, `SENTRY_REDIS_DB` - -Connection information for your Redis server. These values aren't needed if a linked `redis` container exists. - -### `SENTRY_MEMCACHED_HOST`, `SENTRY_MEMCACHED_PORT` - -Connection information for a Memcache server. These values aren't needed if a linked `memcached` container exists. - -### `SENTRY_FILESTORE_DIR` - -Directory where uploaded files will be stored. This defaults to `/var/lib/sentry/files` and is a `VOLUME` for persistent data. - -### `SENTRY_SERVER_EMAIL` - -The email address used for `From:` in outbound emails. Default: `root@localhost` - -### `SENTRY_EMAIL_HOST`, `SENTRY_EMAIL_PORT`, `SENTRY_EMAIL_USER`, `SENTRY_EMAIL_PASSWORD`, `SENTRY_EMAIL_USE_TLS` - -Connection information for an outbound smtp server. These values aren't needed if a linked `smtp` container exists. - -### `SENTRY_MAILGUN_API_KEY` - -If you're using Mailgun for inbound mail, set your API key and configure a route to forward to `/api/hooks/mailgun/inbound/`. diff --git a/sentry/github-repo b/sentry/github-repo deleted file mode 100644 index 65c146629195..000000000000 --- a/sentry/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/getsentry/docker-sentry diff --git a/sentry/license.md b/sentry/license.md deleted file mode 100644 index 67736eeaf35a..000000000000 --- a/sentry/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://github.com/getsentry/sentry/blob/master/LICENSE) for the software contained in this image. diff --git a/sentry/logo.png b/sentry/logo.png deleted file mode 100644 index 70d1e3d4979f..000000000000 Binary files a/sentry/logo.png and /dev/null differ diff --git a/sentry/maintainer.md b/sentry/maintainer.md deleted file mode 100644 index 24fcafb6f94a..000000000000 --- a/sentry/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[Sentry](%%GITHUB-REPO%%) diff --git a/sentry/variant-onbuild.md b/sentry/variant-onbuild.md deleted file mode 100644 index f57800e973c3..000000000000 --- a/sentry/variant-onbuild.md +++ /dev/null @@ -1,15 +0,0 @@ -## `%%REPO%%:onbuild` - -This image makes it easy to custom build your own Sentry instance by copying in a custom `config.yml` and/or `sentry.conf.py` file and installing plugins from `requirements.txt`. - -It's also possible to develop custom extensions within your `onbuild` package. If the build directory contains a `setup.py` file, this will also get installed. - -See the [official Sentry documentation](https://docs.getsentry.com/on-premise/server/installation/) for more information. - -To create your custom `sentry:onbuild` package, simply do the following: - -1. Create a Dockerfile containing `FROM sentry:onbuild` -2. In the same directory, add your custom configuration files. -3. You can get copies of those files to use as templates from the [docker-sentry GitHub repo](https://github.com/getsentry/docker-sentry/). -4. Build your image: `docker build -t mysentry .` -5. Run your custom image using `mysentry` instead of `sentry`. diff --git a/silverpeas/README.md b/silverpeas/README.md index b605c8df385f..ac78f38b4ffa 100644 --- a/silverpeas/README.md +++ b/silverpeas/README.md @@ -24,7 +24,8 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`6.0.2`, `latest`](https://github.com/Silverpeas/docker-silverpeas-prod/blob/189a4f2db783d5052add54f2c07ca7a3b860c685/Dockerfile) +- [`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) # Quick reference (cont.) @@ -39,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/silverpeas`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsilverpeas) + [official-images repo's `library/silverpeas` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fsilverpeas) [official-images repo's `library/silverpeas` file](https://github.com/docker-library/official-images/blob/master/library/silverpeas) ([history](https://github.com/docker-library/official-images/commits/master/library/silverpeas)) - **Source of this description**: @@ -85,12 +86,27 @@ In [Docker Hub](https://hub.docker.com/), no Docker images of Microsoft SQLServe $ docker run --name postgresql -d \ -e POSTGRES_PASSWORD="mysecretpassword" \ -v postgresql-data:/var/lib/postgresql/data \ - postgres:9.6 + postgres:12.3 ``` We recommend strongly to mount the directory with the database file on the host so the data won't be lost when upgrading PostgreSQL to a newer version (a Data Volume Container can be used instead). For any information how to start a PostgreSQL container, you can refer its [documentation](https://hub.docker.com/_/postgres/). -Once the database system is running, a database for Silverpeas has to be created and a user with administrative rights on this database (and only on this database) should be added; it is recommended for a security reason to create a dedicated user account in the database for each application and therefore for Silverpeas. In this document, and by default, a database `Silverpeas` and a user `silverpeas` for that database are created. +Once the database system is running, a database for Silverpeas has to be created and a user with administrative rights on this database (and only on this database) should be added; it is recommended for a security reason to create a dedicated user account in the database for each application and therefore for Silverpeas. In this document, and by default, a database `Silverpeas` and a user `silverpeas` for that database are created. For example: + +```console +$ docker exec -it postgresql psql -U postgres +psql (12.3 (Debian 12.3-1.pgdg100+1)) +Type "help" for help. + +postgres=# create database "Silverpeas"; +CREATE DATABASE +postgres=# create user silverpeas with password 'thesilverpeaspassword'; +CREATE ROLE +postgres=# grant all privileges on database "Silverpeas" to silverpeas; +GRANT +postgres=# \q +$ +``` ### Start a Silverpeas instance with the default configuration diff --git a/silverpeas/content.md b/silverpeas/content.md index 2c73b3ab3d70..1bbd0c8b5ef6 100644 --- a/silverpeas/content.md +++ b/silverpeas/content.md @@ -38,12 +38,27 @@ In [Docker Hub](https://hub.docker.com/), no Docker images of Microsoft SQLServe $ docker run --name postgresql -d \ -e POSTGRES_PASSWORD="mysecretpassword" \ -v postgresql-data:/var/lib/postgresql/data \ - postgres:9.6 + postgres:12.3 ``` We recommend strongly to mount the directory with the database file on the host so the data won't be lost when upgrading PostgreSQL to a newer version (a Data Volume Container can be used instead). For any information how to start a PostgreSQL container, you can refer its [documentation](https://hub.docker.com/_/postgres/). -Once the database system is running, a database for Silverpeas has to be created and a user with administrative rights on this database (and only on this database) should be added; it is recommended for a security reason to create a dedicated user account in the database for each application and therefore for Silverpeas. In this document, and by default, a database `Silverpeas` and a user `silverpeas` for that database are created. +Once the database system is running, a database for Silverpeas has to be created and a user with administrative rights on this database (and only on this database) should be added; it is recommended for a security reason to create a dedicated user account in the database for each application and therefore for Silverpeas. In this document, and by default, a database `Silverpeas` and a user `silverpeas` for that database are created. For example: + +```console +$ docker exec -it postgresql psql -U postgres +psql (12.3 (Debian 12.3-1.pgdg100+1)) +Type "help" for help. + +postgres=# create database "Silverpeas"; +CREATE DATABASE +postgres=# create user silverpeas with password 'thesilverpeaspassword'; +CREATE ROLE +postgres=# grant all privileges on database "Silverpeas" to silverpeas; +GRANT +postgres=# \q +$ +``` ### Start a Silverpeas instance with the default configuration diff --git a/sl/README.md b/sl/README.md index 21b586d1012a..981fa5d96c59 100644 --- a/sl/README.md +++ b/sl/README.md @@ -24,8 +24,7 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7`, `latest`](https://github.com/scientificlinux/sl-docker/blob/88265b18997404f09ebbaec86bdfc87bca434963/sl7/Dockerfile) -- [`6`](https://github.com/scientificlinux/sl-docker/blob/b625310de0dbe2cd26e2bff681a9e012691d4b3e/sl6/Dockerfile) +- [`7`, `latest`](https://github.com/scientificlinux/sl-docker/blob/b2ec52ef8c9e9a11d1bb4ea5441552c21f0b523b/sl7/Dockerfile) # Quick reference (cont.) @@ -40,7 +39,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/sl`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsl) + [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**: diff --git a/solr/README-short.txt b/solr/README-short.txt index 3ae4ad4018df..257a196c62fd 100644 --- a/solr/README-short.txt +++ b/solr/README-short.txt @@ -1 +1 @@ -Solr is the popular, blazing-fast, open source enterprise search platform built on Apache Lucene™. +Apache Solr is the popular, blazing-fast, open source search platform built on Apache Lucene™. diff --git a/solr/README.md b/solr/README.md index 9db5dd828a3e..79751eae676f 100644 --- a/solr/README.md +++ b/solr/README.md @@ -17,46 +17,32 @@ WARNING: # Quick reference - **Maintained by**: - [the Apache Lucene/Solr project](https://github.com/docker-solr/docker-solr) + [the Apache Solr project](https://github.com/apache/solr) - **Where to get help**: - [the Solr Community](https://lucene.apache.org/solr/community.html) + [the Solr Community](https://solr.apache.org/community.html) # Supported tags and respective `Dockerfile` links -- [`8.5.1`, `8.5`, `8`, `latest`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.5/Dockerfile) -- [`8.5.1-slim`, `8.5-slim`, `8-slim`, `slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.5/slim/Dockerfile) -- [`8.4.1`, `8.4`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.4/Dockerfile) -- [`8.4.1-slim`, `8.4-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.4/slim/Dockerfile) -- [`8.3.1`, `8.3`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.3/Dockerfile) -- [`8.3.1-slim`, `8.3-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.3/slim/Dockerfile) -- [`8.2.0`, `8.2`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.2/Dockerfile) -- [`8.2.0-slim`, `8.2-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.2/slim/Dockerfile) -- [`8.1.1`, `8.1`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.1/Dockerfile) -- [`8.1.1-slim`, `8.1-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.1/slim/Dockerfile) -- [`8.0.0`, `8.0`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.0/Dockerfile) -- [`8.0.0-slim`, `8.0-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/8.0/slim/Dockerfile) -- [`7.7.3`, `7.7`, `7`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/7.7/Dockerfile) -- [`7.7.3-slim`, `7.7-slim`, `7-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/7.7/slim/Dockerfile) -- [`6.6.6`, `6.6`, `6`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/6.6/Dockerfile) -- [`6.6.6-slim`, `6.6-slim`, `6-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/6.6/slim/Dockerfile) -- [`5.5.5`, `5.5`, `5`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/5.5/Dockerfile) -- [`5.5.5-slim`, `5.5-slim`, `5-slim`](https://github.com/docker-solr/docker-solr/blob/574d3d15742dce60957d423240337a3962f265f6/5.5/slim/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/docker-solr/docker-solr/issues](https://github.com/docker-solr/docker-solr/issues) + [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/), [`arm64v8`](https://hub.docker.com/r/arm64v8/solr/) + [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/solr`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsolr) + [official-images repo's `library/solr` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fsolr) [official-images repo's `library/solr` file](https://github.com/docker-library/official-images/blob/master/library/solr) ([history](https://github.com/docker-library/official-images/commits/master/library/solr)) - **Source of this description**: @@ -64,14 +50,16 @@ WARNING: # What is Solr? -Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites. +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. -Learn more on [Apache Solr homepage](http://lucene.apache.org/solr/) and in the [Apache Solr Reference Guide](https://www.apache.org/dyn/closer.cgi/lucene/solr/ref-guide/). +Learn more on [Apache Solr homepage](http://solr.apache.org/) and in the [Apache Solr Reference Guide](https://solr.apache.org/guide/). ![logo](https://raw.githubusercontent.com/docker-library/docs/ddc9eb521da7c412b70229f1a600d0c63d55d0f7/solr/logo.png) # How to use this Docker image +Full documentation can be found in the [Solr Reference Guide's Docker section](https://solr.apache.org/guide/solr/latest/deployment-guide/solr-in-docker.html). + To run a single Solr server: ```console @@ -80,15 +68,25 @@ $ docker run -p 8983:8983 -t solr Then with a web browser go to http://localhost:8983/ to see the Solr Admin Console. -For more detailed instructions for using this image, see the [README](https://github.com/docker-solr/docker-solr/blob/master/README.md). - # About this repository -This repository is available on [github.com/docker-solr/docker-solr](https://github.com/docker-solr/docker-solr), and the official build is on the [Docker Hub](https://hub.docker.com/_/solr/). +This repository is available on [github.com/apache/solr-docker](https://github.com/apache/solr-docker), but the image is built and maintained in the official Solr repo [github.com/apache/solr](https://github.com/apache/solr). + +Please direct any usage questions to the [Solr users mailing list](https://solr.apache.org/community.html#mailing-lists-chat). # History -This project was started in 2015 by [Martijn Koster](https://github.com/makuk66). In 2019 maintainership and copyright was transferred to the Apache Lucene/Solr project. Many thanks to Martijn for all your contributions over the years! +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 @@ -108,7 +106,7 @@ Solr is licensed under the [Apache License, Version 2.0](https://www.apache.org/ This repository is also licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). -Copyright 2015-2020 The Apache Software Foundation +Copyright 2015-2022 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/solr/content.md b/solr/content.md index 97ead3d3a492..2bc885d95d65 100644 --- a/solr/content.md +++ b/solr/content.md @@ -1,13 +1,15 @@ # What is Solr? -Solr is highly reliable, scalable and fault tolerant, providing distributed indexing, replication and load-balanced querying, automated failover and recovery, centralized configuration and more. Solr powers the search and navigation features of many of the world's largest internet sites. +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. -Learn more on [Apache Solr homepage](http://lucene.apache.org/solr/) and in the [Apache Solr Reference Guide](https://www.apache.org/dyn/closer.cgi/lucene/solr/ref-guide/). +Learn more on [Apache Solr homepage](http://solr.apache.org/) and in the [Apache Solr Reference Guide](https://solr.apache.org/guide/). %%LOGO%% # How to use this Docker image +Full documentation can be found in the [Solr Reference Guide's Docker section](https://solr.apache.org/guide/solr/latest/deployment-guide/solr-in-docker.html). + To run a single Solr server: ```console @@ -16,12 +18,22 @@ $ docker run -p 8983:8983 -t %%IMAGE%% Then with a web browser go to http://localhost:8983/ to see the Solr Admin Console. -For more detailed instructions for using this image, see the [README](https://github.com/docker-solr/docker-solr/blob/master/README.md). - # About this repository -This repository is available on [github.com/docker-solr/docker-solr](https://github.com/docker-solr/docker-solr), and the official build is on the [Docker Hub](https://hub.docker.com/_/solr/). +This repository is available on [github.com/apache/solr-docker](https://github.com/apache/solr-docker), but the image is built and maintained in the official Solr repo [github.com/apache/solr](https://github.com/apache/solr). + +Please direct any usage questions to the [Solr users mailing list](https://solr.apache.org/community.html#mailing-lists-chat). # History -This project was started in 2015 by [Martijn Koster](https://github.com/makuk66). In 2019 maintainership and copyright was transferred to the Apache Lucene/Solr project. Many thanks to Martijn for all your contributions over the years! +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/get-help.md b/solr/get-help.md index 31ab6716cf5d..2e19035bf5b5 100644 --- a/solr/get-help.md +++ b/solr/get-help.md @@ -1 +1 @@ -[the Solr Community](https://lucene.apache.org/solr/community.html) +[the Solr Community](https://solr.apache.org/community.html) diff --git a/solr/github-repo b/solr/github-repo index 307cafa2efdf..f77ba85345ff 100644 --- a/solr/github-repo +++ b/solr/github-repo @@ -1 +1 @@ -https://github.com/docker-solr/docker-solr +https://github.com/apache/solr diff --git a/solr/issues.md b/solr/issues.md new file mode 100644 index 000000000000..773a06b544d2 --- /dev/null +++ b/solr/issues.md @@ -0,0 +1 @@ +[The Solr Users mailing list](https://solr.apache.org/community.html#mailing-lists-chat) diff --git a/solr/license.md b/solr/license.md index 7f9d73d4b277..4432533f676e 100644 --- a/solr/license.md +++ b/solr/license.md @@ -2,7 +2,7 @@ Solr is licensed under the [Apache License, Version 2.0](https://www.apache.org/ This repository is also licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0). -Copyright 2015-2020 The Apache Software Foundation +Copyright 2015-2022 The Apache Software Foundation Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at diff --git a/solr/maintainer.md b/solr/maintainer.md index 091c3b5ad823..c46a37a53d88 100644 --- a/solr/maintainer.md +++ b/solr/maintainer.md @@ -1 +1 @@ -[the Apache Lucene/Solr project](%%GITHUB-REPO%%) +[the Apache Solr project](%%GITHUB-REPO%%) diff --git a/sonarqube/README.md b/sonarqube/README.md index b08c24f8df6e..cf4d06ef3cb6 100644 --- a/sonarqube/README.md +++ b/sonarqube/README.md @@ -24,10 +24,16 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`7.9.3-community`, `7.9-community`, `lts`](https://github.com/SonarSource/docker-sonarqube/blob/2f7290e97a56f71603eff494db0d6b8d34ca426e/7/community/Dockerfile) -- [`8.3.1-community`, `8.3-community`, `8-community`, `community`, `latest`](https://github.com/SonarSource/docker-sonarqube/blob/2f7290e97a56f71603eff494db0d6b8d34ca426e/8/community/Dockerfile) -- [`8.3.1-developer`, `8.3-developer`, `8-developer`, `developer`](https://github.com/SonarSource/docker-sonarqube/blob/2f7290e97a56f71603eff494db0d6b8d34ca426e/8/developer/Dockerfile) -- [`8.3.1-enterprise`, `8.3-enterprise`, `8-enterprise`, `enterprise`](https://github.com/SonarSource/docker-sonarqube/blob/2f7290e97a56f71603eff494db0d6b8d34ca426e/8/enterprise/Dockerfile) +- [`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) # Quick reference (cont.) @@ -42,7 +48,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/sonarqube`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsonarqube) + [official-images repo's `library/sonarqube` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fsonarqube) [official-images repo's `library/sonarqube` file](https://github.com/docker-library/official-images/blob/master/library/sonarqube) ([history](https://github.com/docker-library/official-images/commits/master/library/sonarqube)) - **Source of this description**: @@ -50,13 +56,13 @@ WARNING: # What is SonarQube? -[SonarQube](https://www.sonarqube.org/) is an open source product for continuous inspection of code quality. +[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. ![logo](https://raw.githubusercontent.com/docker-library/docs/84479f149eb7d748d5dc057665eb96f923e60dc1/sonarqube/logo.png) # How to use this image -Here you'll find the Docker images for the Community Edition, Developer Edition, and Enterprise Edition of SonarQube. +Here you'll find the Docker images for the Community Edition, Developer Edition, Enterprise Edition, and Data Center Edition of SonarQube. ## Docker Host Requirements @@ -65,15 +71,21 @@ Because SonarQube uses an embedded Elasticsearch, make sure that your Docker hos For example, on Linux, you can set the recommended values for the current session by running the following commands as root on the host: ```console -sysctl -w vm.max_map_count=262144 -sysctl -w fs.file-max=65536 -ulimit -n 65536 -ulimit -u 4096 +sysctl -w vm.max_map_count=524288 +sysctl -w fs.file-max=131072 +ulimit -n 131072 +ulimit -u 8192 ``` -## Get Started in Two Minutes Guide +## Try Out SonarQube -To quickly run a demo instance, see Using Docker on the [Get Started in Two Minutes Guide](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 **Configuration** section below. +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. + +## 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. + +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. ## Configuration @@ -81,7 +93,7 @@ To quickly run a demo instance, see Using Docker on the [Get Started in Two Minu 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). +> **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. Set up a database by following the "Installing the Database" section of https://docs.sonarqube.org/latest/setup/install-server/. @@ -89,17 +101,12 @@ Set up a database by following the "Installing the Database" section of https:// We recommend creating volumes for the following directories: -- `/opt/sonarqube/conf`: **for Version 7.9.x only**, configuration files, such as `sonar.properties`. - `/opt/sonarqube/data`: data files, such as the embedded H2 database and Elasticsearch indexes - `/opt/sonarqube/logs`: contains SonarQube logs about access, web process, CE process, Elasticsearch logs -- `/opt/sonarqube/extensions`: plugins, such as language analyzers +- `/opt/sonarqube/extensions`: for 3rd party plugins > **Warning:** You cannot use the same volumes on multiple instances of SonarQube. -## First 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. - ## Upgrading For upgrade instructions, see Upgrading from the Docker Image on the [Upgrade the Server](https://docs.sonarqube.org/latest/setup/upgrading/) page. @@ -111,8 +118,8 @@ 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.2-community -COPY sonar.properties /opt/sonarqube/conf/ +FROM sonarqube:8.9-community +COPY sonar-custom-plugin-1.0.jar /opt/sonarqube/extensions/ ``` You could then build and try the image with something like: @@ -124,7 +131,7 @@ $ docker run -ti sonarqube-custom ### Avoid hard termination of SonarQube -Starting from SonarQube 7.8, SonarQube stops 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: +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: ```console docker run --stop-timeout 3600 sonarqube @@ -136,7 +143,7 @@ The administration guide can be found [here](https://redirect.sonarsource.com/do # License -View [license information](http://www.gnu.org/licenses/lgpl.txt) for the software contained in this image. +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). 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/sourcemage/README-short.txt b/sourcemage/README-short.txt deleted file mode 100644 index be7971d3555d..000000000000 --- a/sourcemage/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Source Mage is a source-based GNU/Linux distribution with maximum flexibility in customization. diff --git a/sourcemage/README.md b/sourcemage/README.md deleted file mode 100644 index 7cca2849ec6c..000000000000 --- a/sourcemage/README.md +++ /dev/null @@ -1,87 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [the Source Mage Community](https://github.com/vaygr/docker-sourcemage) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`latest`, `0.62`](https://github.com/vaygr/docker-sourcemage/blob/a03bbe3ae7bbb839c3c69afd4504ca336f7b9cb9/stable/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/vaygr/docker-sourcemage/issues](https://github.com/vaygr/docker-sourcemage/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/sourcemage/) - -- **Published image artifact details**: - [repo-info repo's `repos/sourcemage/` directory](https://github.com/docker-library/repo-info/blob/master/repos/sourcemage) ([history](https://github.com/docker-library/repo-info/commits/master/repos/sourcemage)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/sourcemage`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fsourcemage) - [official-images repo's `library/sourcemage` file](https://github.com/docker-library/official-images/blob/master/library/sourcemage) ([history](https://github.com/docker-library/official-images/commits/master/library/sourcemage)) - -- **Source of this description**: - [docs repo's `sourcemage/` directory](https://github.com/docker-library/docs/tree/master/sourcemage) ([history](https://github.com/docker-library/docs/commits/master/sourcemage)) - -# Docker images for Source Mage GNU/Linux - -[Source Mage](https://sourcemage.org/) (or *SMGL* in abbreviated form) is a source-based *GNU/Linux* distribution based on a sorcery metaphor of "casting" and "dispelling" programs, which we refer to as "**spells**", and a package manager called "**Sorcery**". Our packages are designed to allow the user to customize the package any way they want (custom CFLAGS, LDFLAGS, `./configure` flags, etc.) as well as offering as many of the package options as possible to the user up-front (you will not need to know what options a package has or what optional dependencies it can use ahead of time). Source code is always downloaded from the publisher's website and rarely patched. SMGL also includes many advanced features such as self-healing and sub-dependencies. - -All of our scripts are [GPL](https://www.gnu.org/licenses/gpl.html)'d and our package manager and packages are written in [bash](https://www.gnu.org/software/bash/), so they are easy to learn and modify. Sorcery supports custom packages maintained by users, which can override default packages and will never be touched by updates. - -![logo](https://raw.githubusercontent.com/docker-library/docs/e8be1b5dd0b212fda27669b12bedad702c184423/sourcemage/logo.png) - -# Images - -These images are based on our [chroot images](https://sourcemage.org/Install/Chroot). To use them, simply do the following: - -```shell -$ docker run -it sourcemage -``` - -or - -```shell -$ docker run -it sourcemage:0.62 -``` - ---- - -# Notes - -- in order to get the full benefit of [castfs](https://sourcemage.org/castfs) you need additional flags (`--device /dev/fuse --cap-add SYS_ADMIN`) for access to `/dev/fuse` device within a container, but you've been warned because there are security implications to granting such capabilities/privileges to the container; otherwise [installwatch](https://sourcemage.org/installwatch) will be used -- `0.62` indicates the grimoire version this image is based on, otherwise `latest` will be pulled - -# License - -All contents released under the [GNU Free Documentation License](https://www.gnu.org/licenses/fdl.html). - -All Source Mage code released under the [GNU General Public License 2.0](https://www.gnu.org/licenses/gpl.html) or greater. - -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 `sourcemage/` directory](https://github.com/docker-library/repo-info/tree/master/repos/sourcemage). - -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/sourcemage/content.md b/sourcemage/content.md deleted file mode 100644 index b3d9cc217fec..000000000000 --- a/sourcemage/content.md +++ /dev/null @@ -1,28 +0,0 @@ -# Docker images for Source Mage GNU/Linux - -[Source Mage](https://sourcemage.org/) (or *SMGL* in abbreviated form) is a source-based *GNU/Linux* distribution based on a sorcery metaphor of "casting" and "dispelling" programs, which we refer to as "**spells**", and a package manager called "**Sorcery**". Our packages are designed to allow the user to customize the package any way they want (custom CFLAGS, LDFLAGS, `./configure` flags, etc.) as well as offering as many of the package options as possible to the user up-front (you will not need to know what options a package has or what optional dependencies it can use ahead of time). Source code is always downloaded from the publisher's website and rarely patched. SMGL also includes many advanced features such as self-healing and sub-dependencies. - -All of our scripts are [GPL](https://www.gnu.org/licenses/gpl.html)'d and our package manager and packages are written in [bash](https://www.gnu.org/software/bash/), so they are easy to learn and modify. Sorcery supports custom packages maintained by users, which can override default packages and will never be touched by updates. - -%%LOGO%% - -# Images - -These images are based on our [chroot images](https://sourcemage.org/Install/Chroot). To use them, simply do the following: - -```shell -$ docker run -it %%IMAGE%% -``` - -or - -```shell -$ docker run -it %%IMAGE%%:0.62 -``` - ---- - -# Notes - -- in order to get the full benefit of [castfs](https://sourcemage.org/castfs) you need additional flags (`--device /dev/fuse --cap-add SYS_ADMIN`) for access to `/dev/fuse` device within a container, but you've been warned because there are security implications to granting such capabilities/privileges to the container; otherwise [installwatch](https://sourcemage.org/installwatch) will be used -- `0.62` indicates the grimoire version this image is based on, otherwise `latest` will be pulled diff --git a/sourcemage/github-repo b/sourcemage/github-repo deleted file mode 100644 index 96bd4d3c877d..000000000000 --- a/sourcemage/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/vaygr/docker-sourcemage diff --git a/sourcemage/license.md b/sourcemage/license.md deleted file mode 100644 index 5495f219d150..000000000000 --- a/sourcemage/license.md +++ /dev/null @@ -1,3 +0,0 @@ -All contents released under the [GNU Free Documentation License](https://www.gnu.org/licenses/fdl.html). - -All Source Mage code released under the [GNU General Public License 2.0](https://www.gnu.org/licenses/gpl.html) or greater. diff --git a/sourcemage/logo.png b/sourcemage/logo.png deleted file mode 100644 index 966380785b8c..000000000000 Binary files a/sourcemage/logo.png and /dev/null differ diff --git a/sourcemage/maintainer.md b/sourcemage/maintainer.md deleted file mode 100644 index ff8469c25b44..000000000000 --- a/sourcemage/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -[the Source Mage Community](%%GITHUB-REPO%%) diff --git a/spiped/README.md b/spiped/README.md index 3921d25861e6..5aa0db6599ca 100644 --- a/spiped/README.md +++ b/spiped/README.md @@ -20,12 +20,12 @@ WARNING: [Tim Düsterhus (of the Docker Community)](https://github.com/TimWolla/docker-spiped), [with Colin's support (from spiped upstream)](https://github.com/docker-library/official-images/pull/1714#issuecomment-219556607) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.6.1`, `1.6`, `1`, `latest`](https://github.com/TimWolla/docker-spiped/blob/b3b3c26364bbbd775bfd8bca31b2d3d0be60d6c4/1.6/Dockerfile) -- [`1.6.1-alpine`, `1.6-alpine`, `1-alpine`, `alpine`](https://github.com/TimWolla/docker-spiped/blob/2e8d2fbe31f6f48ab34cde6e066471bf6ccb0fa9/1.6/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/spiped`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fspiped) + [official-images repo's `library/spiped` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fspiped) [official-images repo's `library/spiped` file](https://github.com/docker-library/official-images/blob/master/library/spiped) ([history](https://github.com/docker-library/official-images/commits/master/library/spiped)) - **Source of this description**: @@ -103,9 +103,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `spiped:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/storm/README.md b/storm/README.md index 45bcef05017d..d121c280c7c3 100644 --- a/storm/README.md +++ b/storm/README.md @@ -20,13 +20,14 @@ WARNING: [the Docker Community](https://github.com/31z4/storm-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.1.3`, `1.1`](https://github.com/31z4/storm-docker/blob/664a7f4730f58be00fd7fe0526d2c13180107c6f/1.1.3/Dockerfile) -- [`1.2.3`, `1.2`](https://github.com/31z4/storm-docker/blob/664a7f4730f58be00fd7fe0526d2c13180107c6f/1.2.3/Dockerfile) -- [`2.1.0`, `2.1`, `latest`](https://github.com/31z4/storm-docker/blob/664a7f4730f58be00fd7fe0526d2c13180107c6f/2.1.0/Dockerfile) +- [`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) # Quick reference (cont.) @@ -41,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/storm`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fstorm) + [official-images repo's `library/storm` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fstorm) [official-images repo's `library/storm` file](https://github.com/docker-library/official-images/blob/master/library/storm) ([history](https://github.com/docker-library/official-images/commits/master/library/storm)) - **Source of this description**: diff --git a/swarm/README-short.txt b/swarm/README-short.txt deleted file mode 100644 index 0e3c180d3f1d..000000000000 --- a/swarm/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Swarm: a Docker-native clustering system. diff --git a/swarm/README.md b/swarm/README.md deleted file mode 100644 index 1ccef109b502..000000000000 --- a/swarm/README.md +++ /dev/null @@ -1,111 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [Docker, Inc.](https://github.com/docker/swarm-library-image) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`1.2.9`, `latest`](https://github.com/docker/swarm-library-image/blob/a2a08d733833327354b5d3336ffbd19e4f369a2d/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/docker/swarm-library-image/issues](https://github.com/docker/swarm-library-image/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/swarm/) - -- **Published image artifact details**: - [repo-info repo's `repos/swarm/` directory](https://github.com/docker-library/repo-info/blob/master/repos/swarm) ([history](https://github.com/docker-library/repo-info/commits/master/repos/swarm)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/swarm`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fswarm) - [official-images repo's `library/swarm` file](https://github.com/docker-library/official-images/blob/master/library/swarm) ([history](https://github.com/docker-library/official-images/commits/master/library/swarm)) - -- **Source of this description**: - [docs repo's `swarm/` directory](https://github.com/docker-library/docs/tree/master/swarm) ([history](https://github.com/docker-library/docs/commits/master/swarm)) - -# Swarm: a Docker-native clustering system - -![logo](https://raw.githubusercontent.com/docker-library/docs/471fa6e4cb58062ccbf91afc111980f9c7004981/swarm/logo.png) - -`swarm` is a simple tool which controls a cluster of Docker hosts and exposes it as a single "virtual" host. - -`swarm` uses the standard Docker API as its frontend, which means any tool which speaks Docker can control swarm transparently: dokku, docker-compose, krane, flynn, deis, docker-ui, shipyard, drone.io, Jenkins... and of course the Docker client itself. - -Like the other Docker projects, `swarm` follows the "batteries included but removable" principle. It ships with a simple scheduling backend out of the box, and as initial development settles, an API will develop to enable pluggable backends. The goal is to provide a smooth out-of-box experience for simple use cases, and allow swapping in more powerful backends, like `Mesos`, for large scale production deployments. - -# Example usage - -```bash -# create a cluster -$ docker run --rm swarm create -6856663cdefdec325839a4b7e1de38e8 # <- this is your unique - -# on each of your nodes, start the swarm agent -# doesn't have to be public (eg. 192.168.0.X), -# as long as the swarm manager can access it. -$ docker run -d swarm join --addr= token:// - -# start the manager on any machine or your laptop -$ docker run -t -p :2375 -t swarm manage token:// - -# use the regular docker cli -$ docker -H tcp:// info -$ docker -H tcp:// run ... -$ docker -H tcp:// ps -$ docker -H tcp:// logs ... -... - -# list nodes in your cluster -$ docker run --rm swarm list token:// - -``` - -See [here](https://github.com/docker/swarm/blob/master/discovery/README.md) for more information about other discovery services. - -## Advanced Scheduling - -See [filters](https://github.com/docker/swarm/blob/master/scheduler/filter/README.md) and [strategies](https://github.com/docker/swarm/blob/master/scheduler/strategy/README.md) to learn more about advanced scheduling. - -## TLS - -Swarm supports TLS authentication between the CLI and Swarm but also between Swarm and the Docker nodes. - -In order to enable TLS, the same command line options as Docker can be specified: - -`swarm manage --tlsverify --tlscacert= --tlscert= --tlskey= [...]` - -Please refer to the [Docker documentation](https://docs.docker.com/articles/https/) for more information on how to set up TLS authentication on Docker and generating the certificates. - -Note that Swarm certificates must be generated with `extendedKeyUsage = clientAuth,serverAuth`. - -# License - -View [license information](https://github.com/docker/swarm/blob/master/LICENSE.code) 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 `swarm/` directory](https://github.com/docker-library/repo-info/tree/master/repos/swarm). - -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/swarm/content.md b/swarm/content.md deleted file mode 100644 index 5a2e334346b0..000000000000 --- a/swarm/content.md +++ /dev/null @@ -1,54 +0,0 @@ -# Swarm: a Docker-native clustering system - -%%LOGO%% - -`swarm` is a simple tool which controls a cluster of Docker hosts and exposes it as a single "virtual" host. - -`swarm` uses the standard Docker API as its frontend, which means any tool which speaks Docker can control swarm transparently: dokku, docker-compose, krane, flynn, deis, docker-ui, shipyard, drone.io, Jenkins... and of course the Docker client itself. - -Like the other Docker projects, `swarm` follows the "batteries included but removable" principle. It ships with a simple scheduling backend out of the box, and as initial development settles, an API will develop to enable pluggable backends. The goal is to provide a smooth out-of-box experience for simple use cases, and allow swapping in more powerful backends, like `Mesos`, for large scale production deployments. - -# Example usage - -```bash -# create a cluster -$ docker run --rm %%IMAGE%% create -6856663cdefdec325839a4b7e1de38e8 # <- this is your unique - -# on each of your nodes, start the swarm agent -# doesn't have to be public (eg. 192.168.0.X), -# as long as the swarm manager can access it. -$ docker run -d %%IMAGE%% join --addr= token:// - -# start the manager on any machine or your laptop -$ docker run -t -p :2375 -t %%IMAGE%% manage token:// - -# use the regular docker cli -$ docker -H tcp:// info -$ docker -H tcp:// run ... -$ docker -H tcp:// ps -$ docker -H tcp:// logs ... -... - -# list nodes in your cluster -$ docker run --rm %%IMAGE%% list token:// - -``` - -See [here](https://github.com/docker/swarm/blob/master/discovery/README.md) for more information about other discovery services. - -## Advanced Scheduling - -See [filters](https://github.com/docker/swarm/blob/master/scheduler/filter/README.md) and [strategies](https://github.com/docker/swarm/blob/master/scheduler/strategy/README.md) to learn more about advanced scheduling. - -## TLS - -Swarm supports TLS authentication between the CLI and Swarm but also between Swarm and the Docker nodes. - -In order to enable TLS, the same command line options as Docker can be specified: - -`swarm manage --tlsverify --tlscacert= --tlscert= --tlskey= [...]` - -Please refer to the [Docker documentation](https://docs.docker.com/articles/https/) for more information on how to set up TLS authentication on Docker and generating the certificates. - -Note that Swarm certificates must be generated with `extendedKeyUsage = clientAuth,serverAuth`. diff --git a/swarm/github-repo b/swarm/github-repo deleted file mode 100644 index 7b66f8a5b994..000000000000 --- a/swarm/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/docker/swarm-library-image diff --git a/swarm/license.md b/swarm/license.md deleted file mode 100644 index 957e50e3a77c..000000000000 --- a/swarm/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](https://github.com/docker/swarm/blob/master/LICENSE.code) for the software contained in this image. diff --git a/swarm/logo.png b/swarm/logo.png deleted file mode 100644 index e96af6ad52d7..000000000000 Binary files a/swarm/logo.png and /dev/null differ diff --git a/swarm/maintainer.md b/swarm/maintainer.md deleted file mode 120000 index 617c4fb974a1..000000000000 --- a/swarm/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-docker.md \ No newline at end of file diff --git a/swift/README.md b/swift/README.md index ddcde389883b..20c25758d4a7 100644 --- a/swift/README.md +++ b/swift/README.md @@ -24,21 +24,73 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`5.2.3`, `5.2`, `5.2.3-bionic`, `5.2-bionic`, `bionic`, `latest`](https://github.com/apple/swift-docker/blob/38f179345ace24236d6c09de84e77d91384014cd/5.2/ubuntu/18.04/Dockerfile) -- [`5.2.3-xenial`, `5.2-xenial`, `xenial`](https://github.com/apple/swift-docker/blob/38f179345ace24236d6c09de84e77d91384014cd/5.2/ubuntu/16.04/Dockerfile) -- [`5.2.3-slim`, `5.2-slim`, `5.2.3-bionic-slim`, `5.2-bionic-slim`, `bionic-slim`, `slim`](https://github.com/apple/swift-docker/blob/38f179345ace24236d6c09de84e77d91384014cd/5.2/ubuntu/18.04/slim/Dockerfile) -- [`5.2.3-xenial-slim`, `5.2-xenial-slim`, `xenial-slim`](https://github.com/apple/swift-docker/blob/38f179345ace24236d6c09de84e77d91384014cd/5.2/ubuntu/16.04/slim/Dockerfile) -- [`5.1.5`, `5.1`, `5.1.5-bionic`, `5.1-bionic`](https://github.com/apple/swift-docker/blob/05538e13a3015675d83e2553cdce5d1d67e17235/5.1/ubuntu/18.04/Dockerfile) -- [`5.1.5-xenial`, `5.1-xenial`](https://github.com/apple/swift-docker/blob/05538e13a3015675d83e2553cdce5d1d67e17235/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/05538e13a3015675d83e2553cdce5d1d67e17235/5.1/ubuntu/18.04/slim/Dockerfile) -- [`5.1.5-xenial-slim`, `5.1-xenial-slim`](https://github.com/apple/swift-docker/blob/05538e13a3015675d83e2553cdce5d1d67e17235/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/78d0a2dde09af579d06e2114a101fd90b01fbfb0/5.0/ubuntu/18.04/Dockerfile) -- [`5.0.3-xenial`, `5.0-xenial`](https://github.com/apple/swift-docker/blob/78d0a2dde09af579d06e2114a101fd90b01fbfb0/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/78d0a2dde09af579d06e2114a101fd90b01fbfb0/5.0/ubuntu/18.04/slim/Dockerfile) -- [`5.0.3-xenial-slim`, `5.0-xenial-slim`](https://github.com/apple/swift-docker/blob/78d0a2dde09af579d06e2114a101fd90b01fbfb0/5.0/ubuntu/16.04/slim/Dockerfile) -- [`4.2.4`, `4.2`, `4`](https://github.com/apple/swift-docker/blob/f0a61df2dd9a14dd6988e6017ae58cc63df37f41/4.2/ubuntu/16.04/Dockerfile) -- [`4.1.3`, `4.1`](https://github.com/apple/swift-docker/blob/34aa283f9b3473ab22b2282f71773781b121af19/4.1/Dockerfile) -- [`4.0.3`, `4.0`](https://github.com/apple/swift-docker/blob/34aa283f9b3473ab22b2282f71773781b121af19/4.0/Dockerfile) +- [`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) # Quick reference (cont.) @@ -46,14 +98,14 @@ 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/) + [`amd64`](https://hub.docker.com/r/amd64/swift/), [`arm64v8`](https://hub.docker.com/r/arm64v8/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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/swift`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fswift) + [official-images repo's `library/swift` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fswift) [official-images repo's `library/swift` file](https://github.com/docker-library/official-images/blob/master/library/swift) ([history](https://github.com/docker-library/official-images/commits/master/library/swift)) - **Source of this description**: @@ -116,7 +168,7 @@ 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 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 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. ## `swift:-slim` diff --git a/swipl/README.md b/swipl/README.md index 3ccafd716fde..627edbde2ec6 100644 --- a/swipl/README.md +++ b/swipl/README.md @@ -20,12 +20,12 @@ WARNING: [the SWI-Prolog community](https://github.com/SWI-Prolog/docker-swipl) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `8.1.30`](https://github.com/SWI-Prolog/docker-swipl/blob/0b4a94d8ca1ce9a973d8159393eff69a36fafe4e/8.1.30/stretch/Dockerfile) -- [`stable`, `8.0.3`](https://github.com/SWI-Prolog/docker-swipl/blob/0b4a94d8ca1ce9a973d8159393eff69a36fafe4e/8.0.3/stretch/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/swipl`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fswipl) + [official-images repo's `library/swipl` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fswipl) [official-images repo's `library/swipl` file](https://github.com/docker-library/official-images/blob/master/library/swipl) ([history](https://github.com/docker-library/official-images/commits/master/library/swipl)) - **Source of this description**: diff --git a/teamspeak/README.md b/teamspeak/README.md index ce17dd02b007..8331accb8073 100644 --- a/teamspeak/README.md +++ b/teamspeak/README.md @@ -20,11 +20,11 @@ WARNING: TeamSpeak Developers [nwerensteijn](https://github.com/nwerensteijn) and [muenchow](https://github.com/muenchow) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.12`, `3.12.1`, `latest`](https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/blob/dd1e68d64552f8848f88b542d2c6d4707a6f20b6/alpine/Dockerfile) +- [`3.13`, `3.13.7`, `latest`](https://github.com/TeamSpeak-Systems/teamspeak-linux-docker-images/blob/e1cd2cd1de40103c20adfe40079f2b6282215e72/alpine/Dockerfile) # Quick reference (cont.) @@ -39,7 +39,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/teamspeak`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fteamspeak) + [official-images repo's `library/teamspeak` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fteamspeak) [official-images repo's `library/teamspeak` file](https://github.com/docker-library/official-images/blob/master/library/teamspeak) ([history](https://github.com/docker-library/official-images/commits/master/library/teamspeak)) - **Source of this description**: diff --git a/telegraf/README.md b/telegraf/README.md index 02b64227d0ba..9b4a5366015a 100644 --- a/telegraf/README.md +++ b/telegraf/README.md @@ -20,16 +20,16 @@ WARNING: [InfluxData](https://github.com/influxdata/influxdata-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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`, `1.12.6`](https://github.com/influxdata/influxdata-docker/blob/5cc9340e1111f1ca9b9781db4ce210b31b785b2d/telegraf/1.12/Dockerfile) -- [`1.12-alpine`, `1.12.6-alpine`](https://github.com/influxdata/influxdata-docker/blob/5cc9340e1111f1ca9b9781db4ce210b31b785b2d/telegraf/1.12/alpine/Dockerfile) -- [`1.13`, `1.13.4`](https://github.com/influxdata/influxdata-docker/blob/5cc9340e1111f1ca9b9781db4ce210b31b785b2d/telegraf/1.13/Dockerfile) -- [`1.13-alpine`, `1.13.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/5cc9340e1111f1ca9b9781db4ce210b31b785b2d/telegraf/1.13/alpine/Dockerfile) -- [`1.14`, `1.14.2`, `latest`](https://github.com/influxdata/influxdata-docker/blob/5cc9340e1111f1ca9b9781db4ce210b31b785b2d/telegraf/1.14/Dockerfile) -- [`1.14-alpine`, `1.14.2-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/5cc9340e1111f1ca9b9781db4ce210b31b785b2d/telegraf/1.14/alpine/Dockerfile) +- [`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) # Quick reference (cont.) @@ -44,7 +44,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/telegraf`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ftelegraf) + [official-images repo's `library/telegraf` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ftelegraf) [official-images repo's `library/telegraf` file](https://github.com/docker-library/official-images/blob/master/library/telegraf) ([history](https://github.com/docker-library/official-images/commits/master/library/telegraf)) - **Source of this description**: @@ -54,7 +54,7 @@ WARNING: 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 Official Docs](https://docs.influxdata.com/telegraf/latest/introduction/getting_started/) +[Telegraf Official Docs](https://docs.influxdata.com/telegraf/latest/introduction/getting-started/) ![logo](https://raw.githubusercontent.com/docker-library/docs/43d87118415bb75d7bb107683e79cd6d69186f67/telegraf/logo.png) @@ -73,7 +73,7 @@ The default configuration requires a running InfluxDB instance as an output plug Minimal example to start an InfluxDB container: ```console -$ docker run -d --name influxdb -p 8083:8083 -p 8086:8086 influxdb +$ docker run -d --name influxdb -p 8086:8086 influxdb ``` Starting Telegraf using the default config, which connects to InfluxDB at `http://localhost:8086/`: @@ -224,19 +224,23 @@ Check that the measurement `foo` is added in the DB. - [Output Plugins](https://docs.influxdata.com/telegraf/latest/plugins/outputs/) -### Monitoring the host filesystem +### Monitoring the Docker Engine Host -One of the more common use cases for Telegraf is running it in a container to monitor the host filesystem using the inputs that take information from the `/proc` filesystem. This section only applies to monitoring a Linux 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. -To do this, you can mount the host's `/proc` filesystem inside of the container and set the location of `/proc` to an alternate location by using the `HOST_PROC` environment variable to change the location of where `/proc` is located. As an example: +The precise files that need to be made available varies from plugin to plugin. Here is an example showing the full set of supported locations: ```console $ docker run -d --name=telegraf \ - --net=influxdb \ - -e HOST_PROC=/host/proc \ - -v /proc:/host/proc:ro \ - -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ - telegraf + -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ + -v /:/hostfs:ro \ + -e HOST_ETC=/hostfs/etc \ + -e HOST_PROC=/hostfs/proc \ + -e HOST_SYS=/hostfs/sys \ + -e HOST_VAR=/hostfs/var \ + -e HOST_RUN=/hostfs/run \ + -e HOST_MOUNT_PREFIX=/hostfs \ + telegraf ``` ### Monitoring docker containers @@ -312,9 +316,9 @@ This is the defacto image. If you are unsure about what your needs are, you prob ## `telegraf:-alpine` -This image is based on the popular [Alpine Linux project](http://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 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 highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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). diff --git a/telegraf/content.md b/telegraf/content.md index 43c344afd425..ee1a59af74f6 100644 --- a/telegraf/content.md +++ b/telegraf/content.md @@ -2,7 +2,7 @@ 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 Official Docs](https://docs.influxdata.com/telegraf/latest/introduction/getting_started/) +[Telegraf Official Docs](https://docs.influxdata.com/telegraf/latest/introduction/getting-started/) %%LOGO%% @@ -21,7 +21,7 @@ The default configuration requires a running InfluxDB instance as an output plug Minimal example to start an InfluxDB container: ```console -$ docker run -d --name influxdb -p 8083:8083 -p 8086:8086 influxdb +$ docker run -d --name influxdb -p 8086:8086 influxdb ``` Starting Telegraf using the default config, which connects to InfluxDB at `http://localhost:8086/`: @@ -172,19 +172,23 @@ Check that the measurement `foo` is added in the DB. - [Output Plugins](https://docs.influxdata.com/telegraf/latest/plugins/outputs/) -### Monitoring the host filesystem +### Monitoring the Docker Engine Host -One of the more common use cases for Telegraf is running it in a container to monitor the host filesystem using the inputs that take information from the `/proc` filesystem. This section only applies to monitoring a Linux 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. -To do this, you can mount the host's `/proc` filesystem inside of the container and set the location of `/proc` to an alternate location by using the `HOST_PROC` environment variable to change the location of where `/proc` is located. As an example: +The precise files that need to be made available varies from plugin to plugin. Here is an example showing the full set of supported locations: ```console $ docker run -d --name=telegraf \ - --net=influxdb \ - -e HOST_PROC=/host/proc \ - -v /proc:/host/proc:ro \ - -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ - %%IMAGE%% + -v $PWD/telegraf.conf:/etc/telegraf/telegraf.conf:ro \ + -v /:/hostfs:ro \ + -e HOST_ETC=/hostfs/etc \ + -e HOST_PROC=/hostfs/proc \ + -e HOST_SYS=/hostfs/sys \ + -e HOST_VAR=/hostfs/var \ + -e HOST_RUN=/hostfs/run \ + -e HOST_MOUNT_PREFIX=/hostfs \ + %%IMAGE%% ``` ### Monitoring docker containers diff --git a/thrift/README-short.txt b/thrift/README-short.txt deleted file mode 100644 index 8a282dccb3d6..000000000000 --- a/thrift/README-short.txt +++ /dev/null @@ -1 +0,0 @@ -Thrift is a framework for generating client and services from an IDL. diff --git a/thrift/README.md b/thrift/README.md deleted file mode 100644 index 0b5bcafa5805..000000000000 --- a/thrift/README.md +++ /dev/null @@ -1,75 +0,0 @@ - - -# Quick reference - -- **Maintained by**: - [the Docker Community](https://github.com/ahawkins/docker-thrift) - -- **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) - -# Supported tags and respective `Dockerfile` links - -- [`0.9`, `0.9.3`](https://github.com/ahawkins/docker-thrift/blob/d322572f7dd6ea468a14a4d832fbec26f152c71e/0.9/Dockerfile) -- [`0.10`, `0.10.0`](https://github.com/ahawkins/docker-thrift/blob/e1f81dfe3e8fac5588e12d2b880166d1743dbecd/0.10/Dockerfile) -- [`0.11`, `0.11.0`](https://github.com/ahawkins/docker-thrift/blob/00e197d889426695446baec4e034b5ddbb15bcb3/0.11/Dockerfile) -- [`0.12`, `0.12.0`, `latest`](https://github.com/ahawkins/docker-thrift/blob/d7e73876549d205898b1922bcbf69e74ef11c288/0.12/Dockerfile) - -# Quick reference (cont.) - -- **Where to file issues**: - [https://github.com/ahawkins/docker-thrift/issues](https://github.com/ahawkins/docker-thrift/issues) - -- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/thrift/) - -- **Published image artifact details**: - [repo-info repo's `repos/thrift/` directory](https://github.com/docker-library/repo-info/blob/master/repos/thrift) ([history](https://github.com/docker-library/repo-info/commits/master/repos/thrift)) - (image metadata, transfer size, etc) - -- **Image updates**: - [official-images PRs with label `library/thrift`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fthrift) - [official-images repo's `library/thrift` file](https://github.com/docker-library/official-images/blob/master/library/thrift) ([history](https://github.com/docker-library/official-images/commits/master/library/thrift)) - -- **Source of this description**: - [docs repo's `thrift/` directory](https://github.com/docker-library/docs/tree/master/thrift) ([history](https://github.com/docker-library/docs/commits/master/thrift)) - -# What Is Thrift - -> The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages. - -Read more about [Thrift](https://thrift.apache.org). - -# How To Use This Image - -This is image is intended to run as an executable. Files are provided by mounting a directory. Here's an example of compiling `service.thrift` to ruby to the current directory. - -```console -$ docker run -v "$PWD:/data" thrift thrift -o /data --gen rb /data/service.thrift -``` - -Note, that you may want to include `-u $(id -u)` to set the UID on generated files. The thrift process runs as root by default which will generate root owned files depending on your docker setup. - -# License - -View [license information](http://www.apache.org/licenses/) 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 `thrift/` directory](https://github.com/docker-library/repo-info/tree/master/repos/thrift). - -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/thrift/content.md b/thrift/content.md deleted file mode 100644 index 8f9ab2f9c82d..000000000000 --- a/thrift/content.md +++ /dev/null @@ -1,15 +0,0 @@ -# What Is Thrift - -> The Apache Thrift software framework, for scalable cross-language services development, combines a software stack with a code generation engine to build services that work efficiently and seamlessly between C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, OCaml and Delphi and other languages. - -Read more about [Thrift](https://thrift.apache.org). - -# How To Use This Image - -This is image is intended to run as an executable. Files are provided by mounting a directory. Here's an example of compiling `service.thrift` to ruby to the current directory. - -```console -$ docker run -v "$PWD:/data" %%IMAGE%% thrift -o /data --gen rb /data/service.thrift -``` - -Note, that you may want to include `-u $(id -u)` to set the UID on generated files. The thrift process runs as root by default which will generate root owned files depending on your docker setup. diff --git a/thrift/github-repo b/thrift/github-repo deleted file mode 100644 index 0610e10f9f9a..000000000000 --- a/thrift/github-repo +++ /dev/null @@ -1 +0,0 @@ -https://github.com/ahawkins/docker-thrift diff --git a/thrift/license.md b/thrift/license.md deleted file mode 100644 index e4b27dd4944c..000000000000 --- a/thrift/license.md +++ /dev/null @@ -1 +0,0 @@ -View [license information](http://www.apache.org/licenses/) for the software contained in this image. diff --git a/thrift/maintainer.md b/thrift/maintainer.md deleted file mode 120000 index e727ff0696ae..000000000000 --- a/thrift/maintainer.md +++ /dev/null @@ -1 +0,0 @@ -../.common-templates/maintainer-community.md \ No newline at end of file diff --git a/tomcat/README.md b/tomcat/README.md index 70b4ed78bacc..936013036483 100644 --- a/tomcat/README.md +++ b/tomcat/README.md @@ -20,54 +20,48 @@ WARNING: [the Docker Community](https://github.com/docker-library/tomcat) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`10.0.0-M5-jdk14-openjdk-oracle`, `10.0.0-jdk14-openjdk-oracle`, `10.0-jdk14-openjdk-oracle`, `10-jdk14-openjdk-oracle`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk14/openjdk-oracle/Dockerfile) -- [`10.0.0-M5-jdk14-openjdk-buster`, `10.0.0-jdk14-openjdk-buster`, `10.0-jdk14-openjdk-buster`, `10-jdk14-openjdk-buster`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk14/openjdk-buster/Dockerfile) -- [`10.0.0-M5-jdk14-openjdk-slim-buster`, `10.0.0-jdk14-openjdk-slim-buster`, `10.0-jdk14-openjdk-slim-buster`, `10-jdk14-openjdk-slim-buster`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk14/openjdk-slim-buster/Dockerfile) -- [`10.0.0-M5-jdk11-openjdk`, `10.0.0-jdk11-openjdk`, `10.0-jdk11-openjdk`, `10-jdk11-openjdk`, `10.0.0-M5-jdk11`, `10.0.0-jdk11`, `10.0-jdk11`, `10-jdk11`, `10.0.0-M5`, `10.0.0`, `10.0`, `10`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk11/openjdk/Dockerfile) -- [`10.0.0-M5-jdk11-openjdk-slim`, `10.0.0-jdk11-openjdk-slim`, `10.0-jdk11-openjdk-slim`, `10-jdk11-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk11/openjdk-slim/Dockerfile) -- [`10.0.0-M5-jdk11-adoptopenjdk-hotspot`, `10.0.0-jdk11-adoptopenjdk-hotspot`, `10.0-jdk11-adoptopenjdk-hotspot`, `10-jdk11-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk11/adoptopenjdk-hotspot/Dockerfile) -- [`10.0.0-M5-jdk11-adoptopenjdk-openj9`, `10.0.0-jdk11-adoptopenjdk-openj9`, `10.0-jdk11-adoptopenjdk-openj9`, `10-jdk11-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk11/adoptopenjdk-openj9/Dockerfile) -- [`10.0.0-M5-jdk11-corretto`, `10.0.0-jdk11-corretto`, `10.0-jdk11-corretto`, `10-jdk11-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk11/corretto/Dockerfile) -- [`10.0.0-M5-jdk8-openjdk`, `10.0.0-jdk8-openjdk`, `10.0-jdk8-openjdk`, `10-jdk8-openjdk`, `10.0.0-M5-jdk8`, `10.0.0-jdk8`, `10.0-jdk8`, `10-jdk8`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk8/openjdk/Dockerfile) -- [`10.0.0-M5-jdk8-openjdk-slim`, `10.0.0-jdk8-openjdk-slim`, `10.0-jdk8-openjdk-slim`, `10-jdk8-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk8/openjdk-slim/Dockerfile) -- [`10.0.0-M5-jdk8-adoptopenjdk-hotspot`, `10.0.0-jdk8-adoptopenjdk-hotspot`, `10.0-jdk8-adoptopenjdk-hotspot`, `10-jdk8-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk8/adoptopenjdk-hotspot/Dockerfile) -- [`10.0.0-M5-jdk8-adoptopenjdk-openj9`, `10.0.0-jdk8-adoptopenjdk-openj9`, `10.0-jdk8-adoptopenjdk-openj9`, `10-jdk8-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk8/adoptopenjdk-openj9/Dockerfile) -- [`10.0.0-M5-jdk8-corretto`, `10.0.0-jdk8-corretto`, `10.0-jdk8-corretto`, `10-jdk8-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/10.0/jdk8/corretto/Dockerfile) -- [`9.0.35-jdk14-openjdk-oracle`, `9.0-jdk14-openjdk-oracle`, `9-jdk14-openjdk-oracle`, `jdk14-openjdk-oracle`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk14/openjdk-oracle/Dockerfile) -- [`9.0.35-jdk14-openjdk-buster`, `9.0-jdk14-openjdk-buster`, `9-jdk14-openjdk-buster`, `jdk14-openjdk-buster`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk14/openjdk-buster/Dockerfile) -- [`9.0.35-jdk14-openjdk-slim-buster`, `9.0-jdk14-openjdk-slim-buster`, `9-jdk14-openjdk-slim-buster`, `jdk14-openjdk-slim-buster`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk14/openjdk-slim-buster/Dockerfile) -- [`9.0.35-jdk11-openjdk`, `9.0-jdk11-openjdk`, `9-jdk11-openjdk`, `jdk11-openjdk`, `9.0.35-jdk11`, `9.0-jdk11`, `9-jdk11`, `jdk11`, `9.0.35`, `9.0`, `9`, `latest`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk11/openjdk/Dockerfile) -- [`9.0.35-jdk11-openjdk-slim`, `9.0-jdk11-openjdk-slim`, `9-jdk11-openjdk-slim`, `jdk11-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk11/openjdk-slim/Dockerfile) -- [`9.0.35-jdk11-adoptopenjdk-hotspot`, `9.0-jdk11-adoptopenjdk-hotspot`, `9-jdk11-adoptopenjdk-hotspot`, `jdk11-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk11/adoptopenjdk-hotspot/Dockerfile) -- [`9.0.35-jdk11-adoptopenjdk-openj9`, `9.0-jdk11-adoptopenjdk-openj9`, `9-jdk11-adoptopenjdk-openj9`, `jdk11-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk11/adoptopenjdk-openj9/Dockerfile) -- [`9.0.35-jdk11-corretto`, `9.0-jdk11-corretto`, `9-jdk11-corretto`, `jdk11-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk11/corretto/Dockerfile) -- [`9.0.35-jdk8-openjdk`, `9.0-jdk8-openjdk`, `9-jdk8-openjdk`, `jdk8-openjdk`, `9.0.35-jdk8`, `9.0-jdk8`, `9-jdk8`, `jdk8`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk8/openjdk/Dockerfile) -- [`9.0.35-jdk8-openjdk-slim`, `9.0-jdk8-openjdk-slim`, `9-jdk8-openjdk-slim`, `jdk8-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk8/openjdk-slim/Dockerfile) -- [`9.0.35-jdk8-adoptopenjdk-hotspot`, `9.0-jdk8-adoptopenjdk-hotspot`, `9-jdk8-adoptopenjdk-hotspot`, `jdk8-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk8/adoptopenjdk-hotspot/Dockerfile) -- [`9.0.35-jdk8-adoptopenjdk-openj9`, `9.0-jdk8-adoptopenjdk-openj9`, `9-jdk8-adoptopenjdk-openj9`, `jdk8-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk8/adoptopenjdk-openj9/Dockerfile) -- [`9.0.35-jdk8-corretto`, `9.0-jdk8-corretto`, `9-jdk8-corretto`, `jdk8-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/9.0/jdk8/corretto/Dockerfile) -- [`8.5.55-jdk14-openjdk-oracle`, `8.5-jdk14-openjdk-oracle`, `8-jdk14-openjdk-oracle`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk14/openjdk-oracle/Dockerfile) -- [`8.5.55-jdk14-openjdk-buster`, `8.5-jdk14-openjdk-buster`, `8-jdk14-openjdk-buster`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk14/openjdk-buster/Dockerfile) -- [`8.5.55-jdk14-openjdk-slim-buster`, `8.5-jdk14-openjdk-slim-buster`, `8-jdk14-openjdk-slim-buster`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk14/openjdk-slim-buster/Dockerfile) -- [`8.5.55-jdk11-openjdk`, `8.5-jdk11-openjdk`, `8-jdk11-openjdk`, `8.5.55-jdk11`, `8.5-jdk11`, `8-jdk11`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk11/openjdk/Dockerfile) -- [`8.5.55-jdk11-openjdk-slim`, `8.5-jdk11-openjdk-slim`, `8-jdk11-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk11/openjdk-slim/Dockerfile) -- [`8.5.55-jdk11-adoptopenjdk-hotspot`, `8.5-jdk11-adoptopenjdk-hotspot`, `8-jdk11-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk11/adoptopenjdk-hotspot/Dockerfile) -- [`8.5.55-jdk11-adoptopenjdk-openj9`, `8.5-jdk11-adoptopenjdk-openj9`, `8-jdk11-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk11/adoptopenjdk-openj9/Dockerfile) -- [`8.5.55-jdk11-corretto`, `8.5-jdk11-corretto`, `8-jdk11-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk11/corretto/Dockerfile) -- [`8.5.55-jdk8-openjdk`, `8.5-jdk8-openjdk`, `8-jdk8-openjdk`, `8.5.55-jdk8`, `8.5-jdk8`, `8-jdk8`, `8.5.55`, `8.5`, `8`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/openjdk/Dockerfile) -- [`8.5.55-jdk8-openjdk-slim`, `8.5-jdk8-openjdk-slim`, `8-jdk8-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/openjdk-slim/Dockerfile) -- [`8.5.55-jdk8-adoptopenjdk-hotspot`, `8.5-jdk8-adoptopenjdk-hotspot`, `8-jdk8-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/adoptopenjdk-hotspot/Dockerfile) -- [`8.5.55-jdk8-adoptopenjdk-openj9`, `8.5-jdk8-adoptopenjdk-openj9`, `8-jdk8-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/adoptopenjdk-openj9/Dockerfile) -- [`8.5.55-jdk8-corretto`, `8.5-jdk8-corretto`, `8-jdk8-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/8.5/jdk8/corretto/Dockerfile) -- [`7.0.103-jdk8-openjdk`, `7.0-jdk8-openjdk`, `7-jdk8-openjdk`, `7.0.103-jdk8`, `7.0-jdk8`, `7-jdk8`, `7.0.103`, `7.0`, `7`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/7/jdk8/openjdk/Dockerfile) -- [`7.0.103-jdk8-openjdk-slim`, `7.0-jdk8-openjdk-slim`, `7-jdk8-openjdk-slim`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/7/jdk8/openjdk-slim/Dockerfile) -- [`7.0.103-jdk8-adoptopenjdk-hotspot`, `7.0-jdk8-adoptopenjdk-hotspot`, `7-jdk8-adoptopenjdk-hotspot`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/7/jdk8/adoptopenjdk-hotspot/Dockerfile) -- [`7.0.103-jdk8-adoptopenjdk-openj9`, `7.0-jdk8-adoptopenjdk-openj9`, `7-jdk8-adoptopenjdk-openj9`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/7/jdk8/adoptopenjdk-openj9/Dockerfile) -- [`7.0.103-jdk8-corretto`, `7.0-jdk8-corretto`, `7-jdk8-corretto`](https://github.com/docker-library/tomcat/blob/d2f3c19c20ca845c517ae5956d4d6a88531e220b/7/jdk8/corretto/Dockerfile) +- [`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) # Quick reference (cont.) @@ -82,7 +76,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/tomcat`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ftomcat) + [official-images repo's `library/tomcat` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ftomcat) [official-images repo's `library/tomcat` file](https://github.com/docker-library/official-images/blob/master/library/tomcat) ([history](https://github.com/docker-library/official-images/commits/master/library/tomcat)) - **Source of this description**: @@ -124,20 +118,6 @@ The default Tomcat environment in the image is: The configuration files are available in `/usr/local/tomcat/conf/`. By default, no user is included in the "manager-gui" role required to operate the "/manager/html" web application. If you wish to use this app, you must define such a user in `tomcat-users.xml`. -# Image Variants - -The `tomcat` images come in many flavors, each designed for a specific use case. - -## `tomcat:` - -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. - -## `tomcat:-slim` - -This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `tomcat`. Unless you are working in an environment where *only* the `tomcat` image will be deployed and you have space constraints, we highly recommend using the default image of this repository. - # License View [license information](https://www.apache.org/licenses/LICENSE-2.0) for the software contained in this image. diff --git a/tomee/README.md b/tomee/README.md index 37092eef0d96..37f23153294d 100644 --- a/tomee/README.md +++ b/tomee/README.md @@ -20,25 +20,66 @@ WARNING: [the Docker Community](https://github.com/tomitribe/docker-tomee) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`8-jre-7.0.7-plume`, `7.0.7-plume`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.0/jre8/plume/Dockerfile) -- [`8-jre-7.0.7-plus`, `7.0.7-plus`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.0/jre8/plus/Dockerfile) -- [`8-jre-7.0.7-webprofile`, `7.0`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.0/jre8/webprofile/Dockerfile) -- [`8-jre-7.1.2-plume`, `7.1.2-plume`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.1/jre8/plume/Dockerfile) -- [`8-jre-7.1.2-plus`, `7.1.2-plus`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.1/jre8/plus/Dockerfile) -- [`8-jre-7.1.2-microprofile`, `7.1.2-microprofile`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.1/jre8/microprofile/Dockerfile) -- [`8-jre-7.1.2-webprofile`, `7.1.2-webprofile`, `7`, `7.1`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-7.1/jre8/webprofile/Dockerfile) -- [`8-jre-8.0.1-plume`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre8/plume/Dockerfile) -- [`8-jre-8.0.1-plus`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre8/plus/Dockerfile) -- [`8-jre-8.0.1-microprofile`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre8/microprofile/Dockerfile) -- [`8-jre-8.0.1-webprofile`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre8/webprofile/Dockerfile) -- [`11-jre-8.0.1-plume`, `8.0.1-plume`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre11/plume/Dockerfile) -- [`11-jre-8.0.1-plus`, `8.0.1-plus`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre11/plus/Dockerfile) -- [`11-jre-8.0.1-microprofile`, `8.0.1-microprofile`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre11/microprofile/Dockerfile) -- [`11-jre-8.0.1-webprofile`, `8.0.1-webprofile`, `latest`, `8`](https://github.com/tomitribe/docker-tomee/blob/c7642e963c08920560906159e126ea22b9ada61d/TomEE-8.0/jre11/webprofile/Dockerfile) +- [`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) # Quick reference (cont.) @@ -46,14 +87,14 @@ WARNING: [https://github.com/tomitribe/docker-tomee/issues](https://github.com/tomitribe/docker-tomee/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/tomee/) + [`amd64`](https://hub.docker.com/r/amd64/tomee/), [`arm64v8`](https://hub.docker.com/r/arm64v8/tomee/) - **Published image artifact details**: [repo-info repo's `repos/tomee/` directory](https://github.com/docker-library/repo-info/blob/master/repos/tomee) ([history](https://github.com/docker-library/repo-info/commits/master/repos/tomee)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/tomee`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ftomee) + [official-images repo's `library/tomee` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ftomee) [official-images repo's `library/tomee` file](https://github.com/docker-library/official-images/blob/master/library/tomee) ([history](https://github.com/docker-library/official-images/commits/master/library/tomee)) - **Source of this description**: @@ -123,6 +164,22 @@ You can also use this image as base image for deploying your war application. To COPY / /usr/local/tomee/webapps/ ``` +# Image Variants + +The `tomee` images come in many flavors, each designed for a specific use case. + +## `tomee:` + +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. + +## `tomee:-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](http://www.apache.org/licenses/LICENSE-2.0) for the software contained in this image. diff --git a/traefik/README.md b/traefik/README.md index c3cecc1001bf..257cdbbbcb42 100644 --- a/traefik/README.md +++ b/traefik/README.md @@ -17,33 +17,35 @@ WARNING: # Quick reference - **Maintained by**: - [the Traefik Project](https://github.com/containous/traefik-library-image) + [the Traefik Project](https://github.com/traefik/traefik-library-image) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`v2.2.1-windowsservercore-1809`, `2.2.1-windowsservercore-1809`, `v2.2-windowsservercore-1809`, `2.2-windowsservercore-1809`, `chevrotin-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/containous/traefik-library-image/blob/4aa0b86550fec343ad25e330624c887ad48e5e08/windows/1809/Dockerfile) -- [`v2.2.1`, `2.2.1`, `v2.2`, `2.2`, `chevrotin`, `latest`](https://github.com/containous/traefik-library-image/blob/4aa0b86550fec343ad25e330624c887ad48e5e08/alpine/Dockerfile) -- [`v1.7.24-windowsservercore-1809`, `1.7.24-windowsservercore-1809`, `v1.7-windowsservercore-1809`, `1.7-windowsservercore-1809`, `maroilles-windowsservercore-1809`](https://github.com/containous/traefik-library-image/blob/7b90db1b9b495c897bb92a8d3de4f98957fd460d/windows/1809/Dockerfile) -- [`v1.7.24-alpine`, `1.7.24-alpine`, `v1.7-alpine`, `1.7-alpine`, `maroilles-alpine`](https://github.com/containous/traefik-library-image/blob/7b90db1b9b495c897bb92a8d3de4f98957fd460d/alpine/Dockerfile) -- [`v1.7.24`, `1.7.24`, `v1.7`, `1.7`, `maroilles`](https://github.com/containous/traefik-library-image/blob/7b90db1b9b495c897bb92a8d3de4f98957fd460d/scratch/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/containous/traefik-library-image/issues](https://github.com/containous/traefik-library-image/issues) + [https://github.com/traefik/traefik-library-image/issues](https://github.com/traefik/traefik-library-image/issues) - **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/), [`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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/traefik`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Ftraefik) + [official-images repo's `library/traefik` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Ftraefik) [official-images repo's `library/traefik` file](https://github.com/docker-library/official-images/blob/master/library/traefik) ([history](https://github.com/docker-library/official-images/commits/master/library/traefik)) - **Source of this description**: @@ -80,13 +82,13 @@ Start Traefik: 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.0 +traefik:v2.5 ``` Start a backend server, named `test`: ```bash -docker run -d --name test containous/whoami +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`: @@ -112,11 +114,11 @@ X-Real-Ip: 172.17.0.1 The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the routers, services, and middlewares. -![Web UI](https://raw.githubusercontent.com/containous/traefik/v2.0/docs/content/assets/img/webui-dashboard.png) +![Web UI](https://raw.githubusercontent.com/traefik/traefik/v2.5/docs/content/assets/img/webui-dashboard.png) # Traefik v1 - Example usage -Grab a [sample configuration file](https://raw.githubusercontent.com/containous/traefik/v1.7/traefik.sample.toml) and rename it to `traefik.toml`. Enable `docker` provider and web UI: +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: ```toml ## traefik.toml @@ -141,7 +143,7 @@ traefik:v1.7 Start a backend server, named `test`: ```bash -docker run -d --name test containous/whoami +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`): @@ -167,16 +169,16 @@ X-Forwarded-Server: f2e05c433120 The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the frontends/backends and also a health dashboard. -![Web UI Providers](https://raw.githubusercontent.com/containous/traefik/v1.7/docs/img/web.frontend.png) +![Web UI Providers](https://raw.githubusercontent.com/traefik/traefik/v1.7/docs/img/web.frontend.png) # Documentation You can find the complete documentation: -- for [v1.7](https://docs.traefik.io/v1.7) -- for [v2.0](https://docs.traefik.io/v2.0) +- for [v2.x](https://doc.traefik.io/traefik/) +- for [v1.7](https://doc.traefik.io/traefik/v1.7) -A community support is available at [https://community.containo.us](https://community.containo.us) +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). @@ -199,7 +201,7 @@ For information about how to get Docker running on Windows, please see the relev # License -View [license information](https://github.com/containous/traefik/blob/master/LICENSE.md) for the software contained in this image. +View [license information](https://github.com/traefik/traefik/blob/master/LICENSE.md) 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/traefik/content.md b/traefik/content.md index a93f1471397f..e51dfd914812 100644 --- a/traefik/content.md +++ b/traefik/content.md @@ -29,13 +29,13 @@ Start Traefik: 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.0 +traefik:v2.5 ``` Start a backend server, named `test`: ```bash -docker run -d --name test containous/whoami +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`: @@ -61,11 +61,11 @@ X-Real-Ip: 172.17.0.1 The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the routers, services, and middlewares. -![Web UI](https://raw.githubusercontent.com/containous/traefik/v2.0/docs/content/assets/img/webui-dashboard.png) +![Web UI](https://raw.githubusercontent.com/traefik/traefik/v2.5/docs/content/assets/img/webui-dashboard.png) # Traefik v1 - Example usage -Grab a [sample configuration file](https://raw.githubusercontent.com/containous/traefik/v1.7/traefik.sample.toml) and rename it to `traefik.toml`. Enable `docker` provider and web UI: +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: ```toml ## traefik.toml @@ -90,7 +90,7 @@ traefik:v1.7 Start a backend server, named `test`: ```bash -docker run -d --name test containous/whoami +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`): @@ -116,15 +116,15 @@ X-Forwarded-Server: f2e05c433120 The web UI [http://localhost:8080](http://localhost:8080) will give you an overview of the frontends/backends and also a health dashboard. -![Web UI Providers](https://raw.githubusercontent.com/containous/traefik/v1.7/docs/img/web.frontend.png) +![Web UI Providers](https://raw.githubusercontent.com/traefik/traefik/v1.7/docs/img/web.frontend.png) # Documentation You can find the complete documentation: -- for [v1.7](https://docs.traefik.io/v1.7) -- for [v2.0](https://docs.traefik.io/v2.0) +- for [v2.x](https://doc.traefik.io/traefik/) +- for [v1.7](https://doc.traefik.io/traefik/v1.7) -A community support is available at [https://community.containo.us](https://community.containo.us) +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/github-repo b/traefik/github-repo index fce1f64e6393..ecf3af618cf6 100644 --- a/traefik/github-repo +++ b/traefik/github-repo @@ -1 +1 @@ -https://github.com/containous/traefik-library-image +https://github.com/traefik/traefik-library-image diff --git a/traefik/license.md b/traefik/license.md index 771cbe787039..e234732351e0 100644 --- a/traefik/license.md +++ b/traefik/license.md @@ -1 +1 @@ -View [license information](https://github.com/containous/traefik/blob/master/LICENSE.md) for the software contained in this image. +View [license information](https://github.com/traefik/traefik/blob/master/LICENSE.md) for the software contained in this image. diff --git a/ubuntu/README.md b/ubuntu/README.md index 93518a3726aa..baf7ec070f12 100644 --- a/ubuntu/README.md +++ b/ubuntu/README.md @@ -17,19 +17,20 @@ WARNING: # Quick reference - **Maintained by**: - [Canonical](https://partner-images.canonical.com/core/) and [Tianon (Debian Developer)](https://github.com/tianon/docker-brew-ubuntu-core) + [Canonical](https://launchpad.net/cloud-images) and [Tianon (Debian Developer)](https://git.launchpad.net/cloud-images/+oci/ubuntu-base) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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-20200403`, `bionic`](https://github.com/tianon/docker-brew-ubuntu-core/blob/451851eab04432157249eb444d5a42714e2a7112/bionic/Dockerfile) -- [`19.10`, `eoan-20200410`, `eoan`](https://github.com/tianon/docker-brew-ubuntu-core/blob/451851eab04432157249eb444d5a42714e2a7112/eoan/Dockerfile) -- [`20.04`, `focal-20200423`, `focal`, `latest`, `rolling`](https://github.com/tianon/docker-brew-ubuntu-core/blob/451851eab04432157249eb444d5a42714e2a7112/focal/Dockerfile) -- [`20.10`, `groovy-20200505`, `groovy`, `devel`](https://github.com/tianon/docker-brew-ubuntu-core/blob/451851eab04432157249eb444d5a42714e2a7112/groovy/Dockerfile) -- [`14.04`, `trusty-20191217`, `trusty`](https://github.com/tianon/docker-brew-ubuntu-core/blob/451851eab04432157249eb444d5a42714e2a7112/trusty/Dockerfile) -- [`16.04`, `xenial-20200326`, `xenial`](https://github.com/tianon/docker-brew-ubuntu-core/blob/451851eab04432157249eb444d5a42714e2a7112/xenial/Dockerfile) +- [`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) # Quick reference (cont.) @@ -37,14 +38,14 @@ 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/), [`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/), [`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/) - **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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/ubuntu`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fubuntu) + [official-images repo's `library/ubuntu` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fubuntu) [official-images repo's `library/ubuntu` file](https://github.com/docker-library/official-images/blob/master/library/ubuntu) ([history](https://github.com/docker-library/official-images/commits/master/library/ubuntu)) - **Source of this description**: @@ -62,7 +63,7 @@ Development of Ubuntu is led by Canonical Ltd. Canonical generates revenue throu # What's in this image? -This image is built from official rootfs tarballs provided by Canonical (specifically, https://partner-images.canonical.com/core/). +This image is built from official rootfs tarballs provided by Canonical (see `dist-*` tags at https://git.launchpad.net/cloud-images/+oci/ubuntu-base). The `ubuntu:latest` tag points to the "latest LTS", since that's the version recommended for general use. The `ubuntu:rolling` tag points to the latest release (regardless of LTS status). @@ -80,6 +81,16 @@ RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* ENV LANG en_US.utf8 ``` +# 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) + # License View [license information](https://www.ubuntu.com/about/about-ubuntu/licensing) for the software contained in this image. diff --git a/ubuntu/content.md b/ubuntu/content.md index 7841766ec815..d8c2e37c6143 100644 --- a/ubuntu/content.md +++ b/ubuntu/content.md @@ -10,7 +10,7 @@ Development of Ubuntu is led by Canonical Ltd. Canonical generates revenue throu # What's in this image? -This image is built from official rootfs tarballs provided by Canonical (specifically, https://partner-images.canonical.com/core/). +This image is built from official rootfs tarballs provided by Canonical (see `dist-*` tags at https://git.launchpad.net/cloud-images/+oci/ubuntu-base). The `%%IMAGE%%:latest` tag points to the "latest LTS", since that's the version recommended for general use. The `%%IMAGE%%:rolling` tag points to the latest release (regardless of LTS status). @@ -27,3 +27,13 @@ RUN apt-get update && apt-get install -y locales && rm -rf /var/lib/apt/lists/* && localedef -i en_US -c -f UTF-8 -A /usr/share/locale/locale.alias en_US.UTF-8 ENV LANG en_US.utf8 ``` + +# 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) diff --git a/ubuntu/github-repo b/ubuntu/github-repo index 8adaa2c0cead..e58535c256a5 100644 --- a/ubuntu/github-repo +++ b/ubuntu/github-repo @@ -1 +1 @@ -https://github.com/tianon/docker-brew-ubuntu-core +https://git.launchpad.net/cloud-images/+oci/ubuntu-base diff --git a/ubuntu/maintainer.md b/ubuntu/maintainer.md index a6ead816ed37..541c9f2f5909 100644 --- a/ubuntu/maintainer.md +++ b/ubuntu/maintainer.md @@ -1 +1 @@ -[Canonical](https://partner-images.canonical.com/core/) and [Tianon (Debian Developer)](%%GITHUB-REPO%%) +[Canonical](https://launchpad.net/cloud-images) and [Tianon (Debian Developer)](%%GITHUB-REPO%%) diff --git a/update.sh b/update.sh index 5e845598ee8b..0b73bf051ba3 100755 --- a/update.sh +++ b/update.sh @@ -106,8 +106,10 @@ for image in "${images[@]}"; do deprecated= if [ -f "$repo/deprecated.md" ]; then - deprecated=$'# **DEPRECATION NOTICE**\n\n' - deprecated+="$(cat "$repo/deprecated.md")" + deprecated="$(< "$repo/deprecated.md")" + if [ "${deprecated:0:2}" != '# ' ]; then + deprecated=$'# **DEPRECATION NOTICE**\n\n'"$deprecated" + fi deprecated+=$'\n\n' fi @@ -125,6 +127,12 @@ for image in "${images[@]}"; do { cat "$helperDir/autogenerated-warning.md" echo + + if [ -n "$ARCH_SPECIFIC_DOCS" ]; then + echo '**Note:** this is the "per-architecture" repository for the `'"$BASHBREW_ARCH"'` builds of [the `'"$repo"'` official image](https://hub.docker.com/_/'"$repo"') -- for more information, see ["Architectures other than amd64?" in the official images documentation](https://github.com/docker-library/official-images#architectures-other-than-amd64) and ["An image'\''s source changed in Git, now what?" in the official images FAQ](https://github.com/docker-library/faq#an-images-source-changed-in-git-now-what).' + echo + fi + echo -n "$deprecated" cat "$helperDir/template.md" } > "$targetFile" diff --git a/varnish/README.md b/varnish/README.md index 07800daac494..d23cefc79802 100644 --- a/varnish/README.md +++ b/varnish/README.md @@ -20,12 +20,15 @@ WARNING: [the Varnish Docker Community](https://github.com/varnish/docker-varnish) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.0`, `6.0.6-1`, `6.0.6`, `stable`](https://github.com/varnish/docker-varnish/blob/d32d16eb38cd161f0e626880cbd334da7d301027/stable/debian/Dockerfile) -- [`6.4`, `6.4.0-1`, `6.4.0`, `6`, `latest`, `fresh`](https://github.com/varnish/docker-varnish/blob/d32d16eb38cd161f0e626880cbd334da7d301027/fresh/debian/Dockerfile) +- [`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) # Quick reference (cont.) @@ -33,14 +36,14 @@ WARNING: [https://github.com/varnish/docker-varnish/issues](https://github.com/varnish/docker-varnish/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/varnish/) + [`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/) - **Published image artifact details**: [repo-info repo's `repos/varnish/` directory](https://github.com/docker-library/repo-info/blob/master/repos/varnish) ([history](https://github.com/docker-library/repo-info/commits/master/repos/varnish)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/varnish`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fvarnish) + [official-images repo's `library/varnish` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fvarnish) [official-images repo's `library/varnish` file](https://github.com/docker-library/official-images/blob/master/library/varnish) ([history](https://github.com/docker-library/official-images/commits/master/library/varnish)) - **Source of this description**: @@ -61,23 +64,49 @@ Varnish is an HTTP accelerator designed for content-heavy dynamic web sites as w Create a `default.vcl` file: ```vcl -vcl 4.0; +# specify the VCL syntax version to use +vcl 4.1; -backend default { - .host = "www.nytimes.com:80"; +# 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"); } ``` Then run: ```console -$ docker run --name my-running-varnish -v /path/to/default.vcl:/etc/varnish/default.vcl:ro --tmpfs /var/lib/varnish:exec -d varnish +# we need the configuration file at /etc/varnish/default.vcl, +# 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 \ + -v /path/to/default.vcl:/etc/varnish/default.vcl:ro \ + --tmpfs /var/lib/varnish/varnishd:exec \ + -p 8080:80 \ + 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): ```dockerfile -FROM varnish:6.2 +FROM varnish COPY default.vcl /etc/varnish/ ``` @@ -85,16 +114,126 @@ COPY default.vcl /etc/varnish/ Place this file in the same directory as your `default.vcl`, run `docker build -t my-varnish .`, then start your container: ```console -$ docker run --name my-running-varnish --tmpfs /var/lib/varnish:exec -d my-varnish +$ docker --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 my-varnish +``` + +## Reloading the configuration + +The images all ship with [varnishreload](https://github.com/varnishcache/pkg-varnish-cache/blob/master/systemd/varnishreload#L42) which allows you to easily update the running configuration without restarting the container (and therefore losing your cache). At its most basic, you just need this: + +```console +# update the default.vcl in your container +docker cp new_default.vcl running_container:/etc/varnish/default.vcl +# run varnishreload +docker exec running_container varnishreload +``` + +Note that `varnishreload` also supports reloading other files (it doesn't have to be `default.vcl`), labels (`l`), and garbage collection of old labeles (`-m`) among others. To know more, run + +```console +docker run varnish varnishreload -h +``` + +## Additional configuration + +### Cache size (VARNISH_SIZE) + +By default, the containers will use a cache size of 100MB, which is usually a bit too small, but you can quickly set it through the `VARNISH_SIZE` environment variable: + +```console +$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G varnish +``` + +### Listening ports (VARNISH_HTTP_PORT/VARNISH_PROXY_PORT) + +Varnish will listen to HTTP traffic on port `80`, and this can be overridden by setting the environment variable `VARNISH_HTTP_PORT`. Similarly, the variable `VARNISH_PROXY_PORT` (defaulting to `8443`) dictate the listening port for the [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) used notably to interact with [hitch](https://hub.docker.com/_/hitch) (which, coincidentally, uses `8443` as a default too!). + +```console +# instruct varnish to listening to port 7777 instead of 80 +$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:7777 -e VARNISH_HTTP_PORT=7777 varnish ``` -### Exposing the port +### 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): ```console -+$ docker run --name my-running-varnish --tmpfs /var/lib/varnish:exec -d -p 8080:80 my-varnish +# extend the default keep period +$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G varnish -p default_keep=300 +``` + +If your first argument after `varnish` doesn't start with `-`, it will be interpreted as a command to override the default one: + +```console +# show the command-line options +$ docker run varnish varnishd -? + +# list parameters usable with -p +$ docker run varnish varnishd -x parameter + +# run the server with your own parameters (don't forget -F to not daemonize) +$ docker run varnish varnishd -F -a :8080 -b 127.0.0.1:8181 -t 600 -p feature=+http2 ``` -Then you can hit `http://localhost:8080` or `http://host-ip:8080` in your browser. +## vmods (since 7.1) + +As mentioned above, you can use [vmod_dynamic](https://github.com/nigoroll/libvmod-dynamic) for backend resolution. The [varnish-modules](https://github.com/varnish/varnish-modules) collection is also included in the image. All the documentation regarding usage and syntax can be found in the [src/](https://github.com/varnish/varnish-modules/tree/master/src) directory of the repository. + +On top of this, images include [install-vmod](https://github.com/varnish/toolbox/tree/master/install-vmod), a helper script to quickly download, compile and install vmods while creating your own images. Note that images set the `ENV` variable `VMOD_DEPS` to ease the task further. + +### Debian + +```dockerfile +FROM varnish:7.1 + +# set the user to root, and install build dependencies +USER root +RUN set -e; \ + apt-get update; \ + apt-get -y install $VMOD_DEPS /pkgs/*.deb; \ + \ +# install one, possibly multiple vmods + install-vmod https://github.com/varnish/varnish-modules/releases/download/0.20.0/varnish-modules-0.20.0.tar.gz; \ + \ +# clean up and set the user back to varnish + apt-get -y purge --auto-remove $VMOD_DEPS varnish-dev; \ + rm -rf /var/lib/apt/lists/* +USER varnish +``` + +### Alpine + +```dockerfile +FROM varnish:7.1-alpine + +# install build dependencies +USER root +RUN set -e; \ + apk add --no-cache $VMOD_DEPS; \ + \ +# install one, possibly multiple vmods + install-vmod https://github.com/varnish/varnish-modules/releases/download/0.20.0/varnish-modules-0.20.0.tar.gz; \ + \ +# clean up + apk del --no-network $VMOD_DEPS +USER varnish +``` + +# Image Variants + +The `varnish` images come in many flavors, each designed for a specific use case. + +## `varnish:` + +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. + +## `varnish:-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 diff --git a/varnish/content.md b/varnish/content.md index 2b389fce230a..b76c7937e2f0 100644 --- a/varnish/content.md +++ b/varnish/content.md @@ -13,23 +13,49 @@ Varnish is an HTTP accelerator designed for content-heavy dynamic web sites as w Create a `default.vcl` file: ```vcl -vcl 4.0; +# specify the VCL syntax version to use +vcl 4.1; -backend default { - .host = "www.nytimes.com:80"; +# 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"); } ``` Then run: ```console -$ docker run --name my-running-varnish -v /path/to/default.vcl:/etc/varnish/default.vcl:ro --tmpfs /var/lib/varnish:exec -d %%IMAGE%% +# we need the configuration file at /etc/varnish/default.vcl, +# 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 \ + -v /path/to/default.vcl:/etc/varnish/default.vcl:ro \ + --tmpfs /var/lib/varnish/varnishd:exec \ + -p 8080:80 \ + %%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): ```dockerfile -FROM %%IMAGE%%:6.2 +FROM %%IMAGE%% COPY default.vcl /etc/varnish/ ``` @@ -37,13 +63,107 @@ COPY default.vcl /etc/varnish/ Place this file in the same directory as your `default.vcl`, run `docker build -t my-varnish .`, then start your container: ```console -$ docker run --name my-running-varnish --tmpfs /var/lib/varnish:exec -d my-varnish +$ docker --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 my-varnish +``` + +## Reloading the configuration + +The images all ship with [varnishreload](https://github.com/varnishcache/pkg-varnish-cache/blob/master/systemd/varnishreload#L42) which allows you to easily update the running configuration without restarting the container (and therefore losing your cache). At its most basic, you just need this: + +```console +# update the default.vcl in your container +docker cp new_default.vcl running_container:/etc/varnish/default.vcl +# run varnishreload +docker exec running_container varnishreload +``` + +Note that `varnishreload` also supports reloading other files (it doesn't have to be `default.vcl`), labels (`l`), and garbage collection of old labeles (`-m`) among others. To know more, run + +```console +docker run varnish varnishreload -h +``` + +## Additional configuration + +### Cache size (VARNISH_SIZE) + +By default, the containers will use a cache size of 100MB, which is usually a bit too small, but you can quickly set it through the `VARNISH_SIZE` environment variable: + +```console +$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G %%IMAGE%% +``` + +### Listening ports (VARNISH_HTTP_PORT/VARNISH_PROXY_PORT) + +Varnish will listen to HTTP traffic on port `80`, and this can be overridden by setting the environment variable `VARNISH_HTTP_PORT`. Similarly, the variable `VARNISH_PROXY_PORT` (defaulting to `8443`) dictate the listening port for the [PROXY protocol](https://www.haproxy.org/download/1.8/doc/proxy-protocol.txt) used notably to interact with [hitch](https://hub.docker.com/_/hitch) (which, coincidentally, uses `8443` as a default too!). + +```console +# instruct varnish to listening to port 7777 instead of 80 +$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:7777 -e VARNISH_HTTP_PORT=7777 %%IMAGE%% ``` -### Exposing the port +### 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): ```console -+$ docker run --name my-running-varnish --tmpfs /var/lib/varnish:exec -d -p 8080:80 my-varnish +# extend the default keep period +$ docker run --tmpfs /var/lib/varnish/varnishd:exec -p 8080:80 -e VARNISH_SIZE=2G %%IMAGE%% -p default_keep=300 +``` + +If your first argument after `%%IMAGE%%` doesn't start with `-`, it will be interpreted as a command to override the default one: + +```console +# show the command-line options +$ docker run %%IMAGE%% varnishd -? + +# list parameters usable with -p +$ docker run %%IMAGE%% varnishd -x parameter + +# run the server with your own parameters (don't forget -F to not daemonize) +$ docker run %%IMAGE%% varnishd -F -a :8080 -b 127.0.0.1:8181 -t 600 -p feature=+http2 ``` -Then you can hit `http://localhost:8080` or `http://host-ip:8080` in your browser. +## vmods (since 7.1) + +As mentioned above, you can use [vmod_dynamic](https://github.com/nigoroll/libvmod-dynamic) for backend resolution. The [varnish-modules](https://github.com/varnish/varnish-modules) collection is also included in the image. All the documentation regarding usage and syntax can be found in the [src/](https://github.com/varnish/varnish-modules/tree/master/src) directory of the repository. + +On top of this, images include [install-vmod](https://github.com/varnish/toolbox/tree/master/install-vmod), a helper script to quickly download, compile and install vmods while creating your own images. Note that images set the `ENV` variable `VMOD_DEPS` to ease the task further. + +### Debian + +```dockerfile +FROM %%IMAGE%%:7.1 + +# set the user to root, and install build dependencies +USER root +RUN set -e; \ + apt-get update; \ + apt-get -y install $VMOD_DEPS /pkgs/*.deb; \ + \ +# install one, possibly multiple vmods + install-vmod https://github.com/varnish/varnish-modules/releases/download/0.20.0/varnish-modules-0.20.0.tar.gz; \ + \ +# clean up and set the user back to varnish + apt-get -y purge --auto-remove $VMOD_DEPS varnish-dev; \ + rm -rf /var/lib/apt/lists/* +USER varnish +``` + +### Alpine + +```dockerfile +FROM %%IMAGE%%:7.1-alpine + +# install build dependencies +USER root +RUN set -e; \ + apk add --no-cache $VMOD_DEPS; \ + \ +# install one, possibly multiple vmods + install-vmod https://github.com/varnish/varnish-modules/releases/download/0.20.0/varnish-modules-0.20.0.tar.gz; \ + \ +# clean up + apk del --no-network $VMOD_DEPS +USER varnish +``` diff --git a/vault/README.md b/vault/README.md index d4b70e385a2c..bb41736f1ebe 100644 --- a/vault/README.md +++ b/vault/README.md @@ -20,12 +20,14 @@ WARNING: [HashiCorp](https://github.com/hashicorp/docker-vault) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.1`, `latest`](https://github.com/hashicorp/docker-vault/blob/8e01b9c30e7a45772d44d1b52a6562c86765bf62/0.X/Dockerfile) -- [`1.3.5`](https://github.com/hashicorp/docker-vault/blob/1abb18d8e24864f084fd6ae3123f895f94bc5c97/0.X/Dockerfile) +- [`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.) @@ -40,7 +42,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/vault`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fvault) + [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**: @@ -53,7 +55,7 @@ Vault is a tool for securely accessing secrets. A secret is anything that you wa - [Vault documentation](https://www.vaultproject.io/) - [Vault on GitHub](https://github.com/hashicorp/vault) -![logo](https://raw.githubusercontent.com/docker-library/docs/fab4b16599d1424cee888d47af850e0ba07e6a37/vault/logo.svg?sanitize=true) +![logo](https://raw.githubusercontent.com/docker-library/docs/90d4d43bdfccd5cb21e5fd964d32b0074af0f357/vault/logo.svg?sanitize=true) # Using the Container @@ -93,18 +95,26 @@ As an example: $ 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 +## Running Vault in Server Mode for Development ```console -$ docker run --cap-add=IPC_LOCK -e 'VAULT_LOCAL_CONFIG={"backend": {"file": {"path": "/vault/file"}}, "default_lease_ttl": "168h", "max_lease_ttl": "720h"}' vault server +$ 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 using the `file` storage backend at path `/vault/file`, with a default secret lease duration of one week and a maximum of 30 days. +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 diff --git a/vault/content.md b/vault/content.md index 03ab0129bdec..d3a27503d7e0 100644 --- a/vault/content.md +++ b/vault/content.md @@ -45,16 +45,24 @@ As an example: $ 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 +## Running Vault in Server Mode for Development ```console -$ docker run --cap-add=IPC_LOCK -e 'VAULT_LOCAL_CONFIG={"backend": {"file": {"path": "/vault/file"}}, "default_lease_ttl": "168h", "max_lease_ttl": "720h"}' %%IMAGE%% server +$ 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 using the `file` storage backend at path `/vault/file`, with a default secret lease duration of one week and a maximum of 30 days. +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/logo.svg b/vault/logo.svg index f9d995f58897..86094d3162f5 100644 --- a/vault/logo.svg +++ b/vault/logo.svg @@ -1,4 +1,4 @@ - + diff --git a/websphere-liberty/README-short.txt b/websphere-liberty/README-short.txt index 95d740bbea44..e5e2c189ce77 100644 --- a/websphere-liberty/README-short.txt +++ b/websphere-liberty/README-short.txt @@ -1 +1 @@ -Official IBM WebSphere Application Server for Developers Liberty image. +WebSphere Liberty multi-architecture images based on Ubuntu 18.04 diff --git a/websphere-liberty/README.md b/websphere-liberty/README.md index 71fbc94bd367..9ee844159d50 100644 --- a/websphere-liberty/README.md +++ b/websphere-liberty/README.md @@ -24,15 +24,30 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`beta`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/beta/Dockerfile) -- [`kernel`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/latest/kernel/Dockerfile.ubuntu.ibmjava8) -- [`full`, `latest`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/latest/full/Dockerfile.ubuntu.ibmjava8) -- [`20.0.0.5-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/20.0.0.5/kernel/Dockerfile.ubuntu.ibmjava8) -- [`20.0.0.5-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/20.0.0.5/full/Dockerfile.ubuntu.ibmjava8) -- [`20.0.0.3-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/20.0.0.3/kernel/Dockerfile.ubuntu.ibmjava8) -- [`20.0.0.3-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/20.0.0.3/full/Dockerfile.ubuntu.ibmjava8) -- [`19.0.0.12-kernel-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/19.0.0.12/kernel/Dockerfile.ubuntu.ibmjava8) -- [`19.0.0.12-full-java8-ibmjava`](https://github.com/WASdev/ci.docker/blob/c89d127a536ed68bbf8d3d5ad92da443fb1a87d0/ga/19.0.0.12/full/Dockerfile.ubuntu.ibmjava8) +- [`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) # Quick reference (cont.) @@ -40,14 +55,14 @@ WARNING: [https://github.com/WASdev/ci.docker/issues](https://github.com/WASdev/ci.docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/websphere-liberty/), [`i386`](https://hub.docker.com/r/i386/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/), [`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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/websphere-liberty`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fwebsphere-liberty) + [official-images repo's `library/websphere-liberty` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fwebsphere-liberty) [official-images repo's `library/websphere-liberty` file](https://github.com/docker-library/official-images/blob/master/library/websphere-liberty) ([history](https://github.com/docker-library/official-images/commits/master/library/websphere-liberty)) - **Source of this description**: @@ -55,9 +70,9 @@ WARNING: # Overview -The images in this repository contain WebSphere Liberty application server and the IBM Java Runtime Environment. For more information please see our [official repository](https://github.com/WASdev/ci.docker). +All of the images in this repository use Ubuntu as the Operating System. For variants that use the Universal Base Image, please see [this repository](https://hub.docker.com/r/ibmcom/websphere-liberty/). -This repository contains WebSphere Liberty based on top of IBM Java 8 with Ubuntu images only. See [here](https://hub.docker.com/r/ibmcom/websphere-liberty/) for WebSphere Liberty based on Red Hat's Universal Base Image, which includes additional java options. +For more information on these images please see our [GitHub repository](https://github.com/WASdev/ci.docker#container-images). # Image User @@ -187,13 +202,15 @@ To elaborate these capabilities this section assumes the standalone Spring Boot FROM websphere-liberty:kernel as staging COPY --chown=1001:0 hellospringboot.jar /staging/myFatApp.jar COPY --chown=1001:0 server.xml /config/ - RUN configure.sh && springBootUtility thin \ + RUN springBootUtility thin \ --sourceAppPath=/staging/myFatApp.jar \ --targetThinAppPath=/staging/myThinApp.jar \ --targetLibCachePath=/staging/lib.index.cache FROM websphere-liberty:kernel + COPY --chown=1001:0 server.xml /config COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar + RUN configure.sh ``` For Spring Boot applications packaged with library dependencies that rarely change across continuous application updates, you can use the capabilities mentioned above to to share library caches across containers and to create even more efficient docker layers that leverage the docker build cache. diff --git a/websphere-liberty/content.md b/websphere-liberty/content.md index 53e445b93479..594967161d40 100644 --- a/websphere-liberty/content.md +++ b/websphere-liberty/content.md @@ -1,8 +1,8 @@ # Overview -The images in this repository contain WebSphere Liberty application server and the IBM Java Runtime Environment. For more information please see our [official repository](https://github.com/WASdev/ci.docker). +All of the images in this repository use Ubuntu as the Operating System. For variants that use the Universal Base Image, please see [this repository](https://hub.docker.com/r/ibmcom/websphere-liberty/). -This repository contains WebSphere Liberty based on top of IBM Java 8 with Ubuntu images only. See [here](https://hub.docker.com/r/ibmcom/websphere-liberty/) for WebSphere Liberty based on Red Hat's Universal Base Image, which includes additional java options. +For more information on these images please see our [GitHub repository](https://github.com/WASdev/ci.docker#container-images). # Image User @@ -132,13 +132,15 @@ To elaborate these capabilities this section assumes the standalone Spring Boot FROM %%IMAGE%%:kernel as staging COPY --chown=1001:0 hellospringboot.jar /staging/myFatApp.jar COPY --chown=1001:0 server.xml /config/ - RUN configure.sh && springBootUtility thin \ + RUN springBootUtility thin \ --sourceAppPath=/staging/myFatApp.jar \ --targetThinAppPath=/staging/myThinApp.jar \ --targetLibCachePath=/staging/lib.index.cache FROM %%IMAGE%%:kernel + COPY --chown=1001:0 server.xml /config COPY --from=staging /staging/lib.index.cache /lib.index.cache COPY --from=staging /staging/myThinApp.jar /config/dropins/spring/myThinApp.jar + RUN configure.sh ``` For Spring Boot applications packaged with library dependencies that rarely change across continuous application updates, you can use the capabilities mentioned above to to share library caches across containers and to create even more efficient docker layers that leverage the docker build cache. diff --git a/wordpress/README.md b/wordpress/README.md index 07a9e95a8268..afbb28f10ae4 100644 --- a/wordpress/README.md +++ b/wordpress/README.md @@ -20,22 +20,22 @@ WARNING: [the Docker Community](https://github.com/docker-library/wordpress) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.4.1-php7.2-apache`, `5.4-php7.2-apache`, `5-php7.2-apache`, `php7.2-apache`, `5.4.1-php7.2`, `5.4-php7.2`, `5-php7.2`, `php7.2`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.2/apache/Dockerfile) -- [`5.4.1-php7.2-fpm`, `5.4-php7.2-fpm`, `5-php7.2-fpm`, `php7.2-fpm`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.2/fpm/Dockerfile) -- [`5.4.1-php7.2-fpm-alpine`, `5.4-php7.2-fpm-alpine`, `5-php7.2-fpm-alpine`, `php7.2-fpm-alpine`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.2/fpm-alpine/Dockerfile) -- [`5.4.1-apache`, `5.4-apache`, `5-apache`, `apache`, `5.4.1`, `5.4`, `5`, `latest`, `5.4.1-php7.3-apache`, `5.4-php7.3-apache`, `5-php7.3-apache`, `php7.3-apache`, `5.4.1-php7.3`, `5.4-php7.3`, `5-php7.3`, `php7.3`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.3/apache/Dockerfile) -- [`5.4.1-fpm`, `5.4-fpm`, `5-fpm`, `fpm`, `5.4.1-php7.3-fpm`, `5.4-php7.3-fpm`, `5-php7.3-fpm`, `php7.3-fpm`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.3/fpm/Dockerfile) -- [`5.4.1-fpm-alpine`, `5.4-fpm-alpine`, `5-fpm-alpine`, `fpm-alpine`, `5.4.1-php7.3-fpm-alpine`, `5.4-php7.3-fpm-alpine`, `5-php7.3-fpm-alpine`, `php7.3-fpm-alpine`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.3/fpm-alpine/Dockerfile) -- [`5.4.1-php7.4-apache`, `5.4-php7.4-apache`, `5-php7.4-apache`, `php7.4-apache`, `5.4.1-php7.4`, `5.4-php7.4`, `5-php7.4`, `php7.4`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.4/apache/Dockerfile) -- [`5.4.1-php7.4-fpm`, `5.4-php7.4-fpm`, `5-php7.4-fpm`, `php7.4-fpm`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.4/fpm/Dockerfile) -- [`5.4.1-php7.4-fpm-alpine`, `5.4-php7.4-fpm-alpine`, `5-php7.4-fpm-alpine`, `php7.4-fpm-alpine`](https://github.com/docker-library/wordpress/blob/8215003254de4bf0a8ddd717c3c393e778b872ce/php7.4/fpm-alpine/Dockerfile) -- [`cli-2.4.0-php7.2`, `cli-2.4-php7.2`, `cli-2-php7.2`, `cli-php7.2`](https://github.com/docker-library/wordpress/blob/c63f536e5d24b474c93e6c4b8deeacf95a89eb64/php7.2/cli/Dockerfile) -- [`cli-2.4.0`, `cli-2.4`, `cli-2`, `cli`, `cli-2.4.0-php7.3`, `cli-2.4-php7.3`, `cli-2-php7.3`, `cli-php7.3`](https://github.com/docker-library/wordpress/blob/c63f536e5d24b474c93e6c4b8deeacf95a89eb64/php7.3/cli/Dockerfile) -- [`cli-2.4.0-php7.4`, `cli-2.4-php7.4`, `cli-2-php7.4`, `cli-php7.4`](https://github.com/docker-library/wordpress/blob/c63f536e5d24b474c93e6c4b8deeacf95a89eb64/php7.4/cli/Dockerfile) +- [`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) # Quick reference (cont.) @@ -50,7 +50,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/wordpress`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fwordpress) + [official-images repo's `library/wordpress` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fwordpress) [official-images repo's `library/wordpress` file](https://github.com/docker-library/official-images/blob/master/library/wordpress) ([history](https://github.com/docker-library/official-images/commits/master/library/wordpress)) - **Source of this description**: @@ -70,7 +70,7 @@ WordPress is a free and open source blogging tool and a content management syste $ docker run --name some-wordpress --network some-network -d wordpress ``` -The following environment variables are also honored for configuring your WordPress instance: +The following environment variables are also honored for configuring your WordPress instance (by [a custom `wp-config.php` implementation](https://github.com/docker-library/wordpress/blob/master/wp-config-docker.php)): - `-e WORDPRESS_DB_HOST=...` - `-e WORDPRESS_DB_USER=...` @@ -81,7 +81,7 @@ The following environment variables are also honored for configuring your WordPr - `-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) -If the `WORDPRESS_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `wordpress` container, provided that the `WORDPRESS_DB_USER` specified has the necessary permissions to create it. +The `WORDPRESS_DB_NAME` needs to already exist on the given MySQL server; it will not be created by the `wordpress` container. 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: @@ -91,13 +91,6 @@ $ docker run --name some-wordpress -p 8080:80 -d wordpress 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 `mysql` container, specify the hostname and port with `WORDPRESS_DB_HOST` along with the password in `WORDPRESS_DB_PASSWORD` and the username in `WORDPRESS_DB_USER` (if it is something other than `root`): - -```console -$ docker run --name some-wordpress -e WORDPRESS_DB_HOST=10.1.2.3:3306 \ - -e WORDPRESS_DB_USER=... -e WORDPRESS_DB_PASSWORD=... -d wordpress -``` - When running WordPress with TLS behind a reverse proxy such as NGINX which is responsible for doing TLS termination, be sure to set `X-Forwarded-Proto` appropriately (see ["Using a Reverse Proxy" in "Administration Over SSL" in upstream's documentation](https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy)). No additional environment variables or configuration should be necessary (this image automatically adds the noted `HTTP_X_FORWARDED_PROTO` code to `wp-config.php` if *any* of the above-noted environment variables are specified). If your database requires SSL, [WordPress ticket #28625](https://core.trac.wordpress.org/ticket/28625) has the relevant details regarding support for that with WordPress upstream. As a workaround, [the "Secure DB Connection" plugin](https://wordpress.org/plugins/secure-db-connection/) can be extracted into the WordPress directory and the appropriate values described in the configuration of that plugin added in `wp-config.php`. @@ -158,25 +151,69 @@ Run `docker stack deploy -c stack.yml wordpress` (or `docker-compose -f stack.ym This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins (e.g. [it cannot send e-mails](https://github.com/docker-library/wordpress/issues/30)). 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 [`wordpress` Dockerfile](https://github.com/docker-library/wordpress/blob/618490d4bdff6c5774b84b717979bfe3d6ba8ad1/apache/Dockerfile#L5-L9) has an example of doing this. - -The following Docker Hub features can help with the task of keeping your dependent images up-to-date: - -- [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 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, [an older `Dockerfile` for `wordpress`](https://github.com/docker-library/wordpress/blob/618490d4bdff6c5774b84b717979bfe3d6ba8ad1/apache/Dockerfile#L5-L9) has a simplified example of doing this and [a newer version of that same `Dockerfile`](https://github.com/docker-library/wordpress/blob/5bbbfa8909232af10ea3fea8b80302a6041a2d04/latest/php7.4/apache/Dockerfile#L18-L62) has a much more thorough example. ## Include pre-installed themes / plugins -Mount the volume containing your themes or plugins to the proper directory; and then apply them through the wp-admin webui. Ensure read/write/execute permissions are in place for the user. +Mount the volume containing your themes or plugins to the proper directory; and then apply them through the "wp-admin" UI. Ensure read/write/execute permissions are in place for the user: - Themes go in a subdirectory in `/var/www/html/wp-content/themes/` - Plugins go in a subdirectory in `/var/www/html/wp-content/plugins/` +If you wish to provide additional content in an image for deploying in multiple installations, place it in the same directories under `/usr/src/wordpress/` instead (which gets copied to `/var/www/html/` on the container's initial startup). + +## Static image / updates-via-redeploy + +The default configuration for this image matches the official WordPress defaults in which automatic updates are enabled (so the initial install comes from the image, but after that it becomes self-managing within the `/var/www/html/` data volume). + +If you wish to have a more static deployment (similar to other containerized applications) and deploy new containers to update WordPress + themes/plugins, then you'll want to use something like the following (and run the resulting image read-only): + +```dockerfile +FROM wordpress:apache +WORKDIR /usr/src/wordpress +RUN set -eux; \ + find /etc/apache2 -name '*.conf' -type f -exec sed -ri -e "s!/var/www/html!$PWD!g" -e "s!Directory /var/www/!Directory $PWD!g" '{}' +; \ + cp -s wp-config-docker.php wp-config.php +COPY custom-theme/ ./wp-content/themes/custom-theme/ +COPY custom-plugin/ ./wp-content/plugins/custom-plugin/ +``` + +For FPM-based images, remove the `find` instruction and adjust the `SCRIPT_FILENAME` paths in your reverse proxy from `/var/www/html` to `/usr/src/wordpress`. + +Run the result read-only, providing writeable storage for `/tmp`, `/run`, and (optionally) `wp-content/uploads`: + +```console +$ docker run ... \ + --read-only \ + --tmpfs /tmp \ + --tmpfs /run \ + --mount type=...,src=...,dst=/usr/src/wordpress/wp-content/uploads \ + ... \ + --env WORDPRESS_DB_HOST=... \ + --env WORDPRESS_AUTH_KEY=... \ + --env ... \ + custom-wordpress:tag +``` + +**Note:** be sure to rebuild and redeploy regularly to ensure you get all the latest WordPress security updates. + ## Running as an arbitrary user -See [the "Running as an arbitrary user" section of the `php` image documentation](https://hub.docker.com/_/php/). +See [the "Running as an arbitrary user" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#running-as-an-arbitrary-user). When running WP-CLI via the `cli` variants of this image, it is important to note that they're based on Alpine, and have a default `USER` of Alpine's `www-data`, whose UID is `82` (compared to the Debian-based WordPress variants whose default effective UID is `33`), so when running `wordpress:cli` against an existing Debian-based WordPress install, something like `--user 33:33` is likely going to be necessary (possibly also something like `-e HOME=/tmp` depending on the `wp` command invoked and whether it tries to use `~/.wp-cli`). See [docker-library/wordpress#256](https://github.com/docker-library/wordpress/issues/256) for more discussion around this. +## Configuring PHP directives + +See [the "Configuration" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#configuration). + +For example, to adjust common `php.ini` flags like `upload_max_filesize`, you could create a `custom.ini` with the desired parameters and place it in the `$PHP_INI_DIR/conf.d/` directory: + +```dockerfile +FROM wordpress:tag +COPY custom.ini $PHP_INI_DIR/conf.d/ +``` + # Image Variants The `wordpress` images come in many flavors, each designed for a specific use case. @@ -185,13 +222,21 @@ The `wordpress` 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. -## `wordpress:-alpine` +## `wordpress:-fpm` -This image is based on the popular [Alpine Linux project](http://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 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 is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +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. -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). +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/) +- [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) +- [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) + +**WARNING:** the FastCGI protocol is inherently trusting, and thus *extremely* insecure to expose outside of a private container network -- unless you know *exactly* what you are doing (and are willing to accept the extreme risk), do not use Docker's `--publish` (`-p`) flag with this image variant. ## `wordpress:cli` @@ -203,11 +248,16 @@ The simplest way to use it with an existing WordPress container would be somethi $ docker run -it --rm \ --volumes-from some-wordpress \ --network container:some-wordpress \ + -e WORDPRESS_DB_USER=... \ + -e WORDPRESS_DB_PASSWORD=... \ + # [and other used environment variables] wordpress:cli user list ``` Generally speaking, for WP-CLI to interact with a WordPress install, it needs access to the on-disk files of the WordPress install, and access to the database (and the easiest way to accomplish that such that `wp-config.php` does not require changes is to simply join the networking context of the existing and presumably working WordPress container, but there are many other ways to accomplish that which will be left as an exercise for the reader). +**NOTE:** Since March 2021, WordPress images use a customized `wp-config.php` that pulls the values directly from the environment variables defined above (see `wp-config-docker.php` in [docker-library/wordpress#572](https://github.com/docker-library/wordpress/pull/572) and [docker-library/wordpress#577](https://github.com/docker-library/wordpress/pull/577)). As a result of reading environment variables directly, the cli container also needs the same set of environment variables to properly evaluate `wp-config.php`. + # License View [license information](https://wordpress.org/about/license/) for the software contained in this image. diff --git a/wordpress/content.md b/wordpress/content.md index b8f05a8ee0e8..3f60fe112d1c 100644 --- a/wordpress/content.md +++ b/wordpress/content.md @@ -12,7 +12,7 @@ WordPress is a free and open source blogging tool and a content management syste $ docker run --name some-%%REPO%% --network some-network -d %%IMAGE%% ``` -The following environment variables are also honored for configuring your WordPress instance: +The following environment variables are also honored for configuring your WordPress instance (by [a custom `wp-config.php` implementation](https://github.com/docker-library/wordpress/blob/master/wp-config-docker.php)): - `-e WORDPRESS_DB_HOST=...` - `-e WORDPRESS_DB_USER=...` @@ -23,7 +23,7 @@ The following environment variables are also honored for configuring your WordPr - `-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) -If the `WORDPRESS_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 `WORDPRESS_DB_USER` specified has the necessary permissions to create it. +The `WORDPRESS_DB_NAME` needs to already exist on the given MySQL server; it will not be created by the `%%REPO%%` container. 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: @@ -33,13 +33,6 @@ $ docker run --name some-%%REPO%% -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 `mysql` container, specify the hostname and port with `WORDPRESS_DB_HOST` along with the password in `WORDPRESS_DB_PASSWORD` and the username in `WORDPRESS_DB_USER` (if it is something other than `root`): - -```console -$ docker run --name some-%%REPO%% -e WORDPRESS_DB_HOST=10.1.2.3:3306 \ - -e WORDPRESS_DB_USER=... -e WORDPRESS_DB_PASSWORD=... -d %%IMAGE%% -``` - When running WordPress with TLS behind a reverse proxy such as NGINX which is responsible for doing TLS termination, be sure to set `X-Forwarded-Proto` appropriately (see ["Using a Reverse Proxy" in "Administration Over SSL" in upstream's documentation](https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy)). No additional environment variables or configuration should be necessary (this image automatically adds the noted `HTTP_X_FORWARDED_PROTO` code to `wp-config.php` if *any* of the above-noted environment variables are specified). If your database requires SSL, [WordPress ticket #28625](https://core.trac.wordpress.org/ticket/28625) has the relevant details regarding support for that with WordPress upstream. As a workaround, [the "Secure DB Connection" plugin](https://wordpress.org/plugins/secure-db-connection/) can be extracted into the WordPress directory and the appropriate values described in the configuration of that plugin added in `wp-config.php`. @@ -49,7 +42,7 @@ If your database requires SSL, [WordPress ticket #28625](https://core.trac.wordp 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-wordpress -e WORDPRESS_DB_PASSWORD_FILE=/run/secrets/mysql-root ... -d %%IMAGE%%:tag +$ docker run --name some-%%REPO%% -e WORDPRESS_DB_PASSWORD_FILE=/run/secrets/mysql-root ... -d %%IMAGE%%:tag ``` 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`. @@ -62,21 +55,65 @@ Run `docker stack deploy -c stack.yml %%REPO%%` (or `docker-compose -f stack.yml This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins (e.g. [it cannot send e-mails](https://github.com/docker-library/wordpress/issues/30)). 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 [`wordpress` Dockerfile](https://github.com/docker-library/wordpress/blob/618490d4bdff6c5774b84b717979bfe3d6ba8ad1/apache/Dockerfile#L5-L9) has an example of doing this. - -The following Docker Hub features can help with the task of keeping your dependent images up-to-date: - -- [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 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, [an older `Dockerfile` for `%%IMAGE%%`](https://github.com/docker-library/wordpress/blob/618490d4bdff6c5774b84b717979bfe3d6ba8ad1/apache/Dockerfile#L5-L9) has a simplified example of doing this and [a newer version of that same `Dockerfile`](https://github.com/docker-library/wordpress/blob/5bbbfa8909232af10ea3fea8b80302a6041a2d04/latest/php7.4/apache/Dockerfile#L18-L62) has a much more thorough example. ## Include pre-installed themes / plugins -Mount the volume containing your themes or plugins to the proper directory; and then apply them through the wp-admin webui. Ensure read/write/execute permissions are in place for the user. +Mount the volume containing your themes or plugins to the proper directory; and then apply them through the "wp-admin" UI. Ensure read/write/execute permissions are in place for the user: - Themes go in a subdirectory in `/var/www/html/wp-content/themes/` - Plugins go in a subdirectory in `/var/www/html/wp-content/plugins/` +If you wish to provide additional content in an image for deploying in multiple installations, place it in the same directories under `/usr/src/wordpress/` instead (which gets copied to `/var/www/html/` on the container's initial startup). + +## Static image / updates-via-redeploy + +The default configuration for this image matches the official WordPress defaults in which automatic updates are enabled (so the initial install comes from the image, but after that it becomes self-managing within the `/var/www/html/` data volume). + +If you wish to have a more static deployment (similar to other containerized applications) and deploy new containers to update WordPress + themes/plugins, then you'll want to use something like the following (and run the resulting image read-only): + +```dockerfile +FROM %%IMAGE%%:apache +WORKDIR /usr/src/wordpress +RUN set -eux; \ + find /etc/apache2 -name '*.conf' -type f -exec sed -ri -e "s!/var/www/html!$PWD!g" -e "s!Directory /var/www/!Directory $PWD!g" '{}' +; \ + cp -s wp-config-docker.php wp-config.php +COPY custom-theme/ ./wp-content/themes/custom-theme/ +COPY custom-plugin/ ./wp-content/plugins/custom-plugin/ +``` + +For FPM-based images, remove the `find` instruction and adjust the `SCRIPT_FILENAME` paths in your reverse proxy from `/var/www/html` to `/usr/src/wordpress`. + +Run the result read-only, providing writeable storage for `/tmp`, `/run`, and (optionally) `wp-content/uploads`: + +```console +$ docker run ... \ + --read-only \ + --tmpfs /tmp \ + --tmpfs /run \ + --mount type=...,src=...,dst=/usr/src/wordpress/wp-content/uploads \ + ... \ + --env WORDPRESS_DB_HOST=... \ + --env WORDPRESS_AUTH_KEY=... \ + --env ... \ + custom-wordpress:tag +``` + +**Note:** be sure to rebuild and redeploy regularly to ensure you get all the latest WordPress security updates. + ## Running as an arbitrary user -See [the "Running as an arbitrary user" section of the `php` image documentation](https://hub.docker.com/_/php/). +See [the "Running as an arbitrary user" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#running-as-an-arbitrary-user). When running WP-CLI via the `cli` variants of this image, it is important to note that they're based on Alpine, and have a default `USER` of Alpine's `www-data`, whose UID is `82` (compared to the Debian-based WordPress variants whose default effective UID is `33`), so when running `%%IMAGE%%:cli` against an existing Debian-based WordPress install, something like `--user 33:33` is likely going to be necessary (possibly also something like `-e HOME=/tmp` depending on the `wp` command invoked and whether it tries to use `~/.wp-cli`). See [docker-library/wordpress#256](https://github.com/docker-library/wordpress/issues/256) for more discussion around this. + +## Configuring PHP directives + +See [the "Configuration" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#configuration). + +For example, to adjust common `php.ini` flags like `upload_max_filesize`, you could create a `custom.ini` with the desired parameters and place it in the `$PHP_INI_DIR/conf.d/` directory: + +```dockerfile +FROM %%IMAGE%%:tag +COPY custom.ini $PHP_INI_DIR/conf.d/ +``` diff --git a/wordpress/variant-cli.md b/wordpress/variant-cli.md index 6e4d2933b2ba..b27341d01b49 100644 --- a/wordpress/variant-cli.md +++ b/wordpress/variant-cli.md @@ -8,7 +8,12 @@ The simplest way to use it with an existing WordPress container would be somethi $ docker run -it --rm \ --volumes-from some-wordpress \ --network container:some-wordpress \ - wordpress:cli user list + -e WORDPRESS_DB_USER=... \ + -e WORDPRESS_DB_PASSWORD=... \ + # [and other used environment variables] + %%IMAGE%%:cli user list ``` Generally speaking, for WP-CLI to interact with a WordPress install, it needs access to the on-disk files of the WordPress install, and access to the database (and the easiest way to accomplish that such that `wp-config.php` does not require changes is to simply join the networking context of the existing and presumably working WordPress container, but there are many other ways to accomplish that which will be left as an exercise for the reader). + +**NOTE:** Since March 2021, WordPress images use a customized `wp-config.php` that pulls the values directly from the environment variables defined above (see `wp-config-docker.php` in [docker-library/wordpress#572](https://github.com/docker-library/wordpress/pull/572) and [docker-library/wordpress#577](https://github.com/docker-library/wordpress/pull/577)). As a result of reading environment variables directly, the cli container also needs the same set of environment variables to properly evaluate `wp-config.php`. diff --git a/wordpress/variant-fpm.md b/wordpress/variant-fpm.md new file mode 120000 index 000000000000..5ed64ee63493 --- /dev/null +++ b/wordpress/variant-fpm.md @@ -0,0 +1 @@ +../php/variant-fpm.md \ No newline at end of file diff --git a/xwiki/README.md b/xwiki/README.md index 207905d3fd7e..eabbdcf4c373 100644 --- a/xwiki/README.md +++ b/xwiki/README.md @@ -24,10 +24,15 @@ WARNING: # Supported tags and respective `Dockerfile` links -- [`11`, `11.10`, `11.10.5`, `11-mysql-tomcat`, `11.10-mysql-tomcat`, `11.10.5-mysql-tomcat`, `lts-mysql-tomcat`, `lts-mysql`, `lts`](https://github.com/xwiki-contrib/docker-xwiki/blob/f6c69a5d6c525829713209cb2a0d8ce14b8a5038/11/mysql-tomcat/Dockerfile) -- [`11-postgres-tomcat`, `11.10-postgres-tomcat`, `11.10.5-postgres-tomcat`, `lts-postgres-tomcat`, `lts-postgres`](https://github.com/xwiki-contrib/docker-xwiki/blob/f6c69a5d6c525829713209cb2a0d8ce14b8a5038/11/postgres-tomcat/Dockerfile) -- [`12`, `12.3`, `12-mysql-tomcat`, `12.3-mysql-tomcat`, `mysql-tomcat`, `stable-mysql-tomcat`, `stable-mysql`, `stable`, `latest`](https://github.com/xwiki-contrib/docker-xwiki/blob/ebb23e6def6d52dc5dc79bb5844f71f68aba0728/12/mysql-tomcat/Dockerfile) -- [`12-postgres-tomcat`, `12.3-postgres-tomcat`, `postgres-tomcat`, `stable-postgres-tomcat`, `stable-postgres`](https://github.com/xwiki-contrib/docker-xwiki/blob/ebb23e6def6d52dc5dc79bb5844f71f68aba0728/12/postgres-tomcat/Dockerfile) +- [`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) # Quick reference (cont.) @@ -42,7 +47,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/xwiki`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fxwiki) + [official-images repo's `library/xwiki` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fxwiki) [official-images repo's `library/xwiki` file](https://github.com/docker-library/official-images/blob/master/library/xwiki) ([history](https://github.com/docker-library/official-images/commits/master/library/xwiki)) - **Source of this description**: diff --git a/yourls/README.md b/yourls/README.md index bc825d7c1b4d..bb82dc0d2e08 100644 --- a/yourls/README.md +++ b/yourls/README.md @@ -17,21 +17,21 @@ WARNING: # Quick reference - **Maintained by**: - [YOURLS](https://github.com/YOURLS/docker-yourls) + [YOURLS](https://github.com/YOURLS/docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.7.9-apache`, `1.7-apache`, `1-apache`, `apache`, `1.7.9`, `1.7`, `1`, `latest`](https://github.com/YOURLS/docker-yourls/blob/fe07662938efe12d7c8c82bea32d1d34874d0665/apache/Dockerfile) -- [`1.7.9-fpm`, `1.7-fpm`, `1-fpm`, `fpm`](https://github.com/YOURLS/docker-yourls/blob/fe07662938efe12d7c8c82bea32d1d34874d0665/fpm/Dockerfile) -- [`1.7.9-fpm-alpine`, `1.7-fpm-alpine`, `1-fpm-alpine`, `fpm-alpine`](https://github.com/YOURLS/docker-yourls/blob/fe07662938efe12d7c8c82bea32d1d34874d0665/fpm-alpine/Dockerfile) +- [`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) # Quick reference (cont.) - **Where to file issues**: - [https://github.com/YOURLS/docker-yourls/issues](https://github.com/YOURLS/docker-yourls/issues) + [https://github.com/YOURLS/docker/issues](https://github.com/YOURLS/docker/issues) - **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/) @@ -41,7 +41,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/yourls`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fyourls) + [official-images repo's `library/yourls` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fyourls) [official-images repo's `library/yourls` file](https://github.com/docker-library/official-images/blob/master/library/yourls) ([history](https://github.com/docker-library/official-images/commits/master/library/yourls)) - **Source of this description**: @@ -53,10 +53,12 @@ YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener > [github.com/YOURLS/YOURLS](https://github.com/YOURLS/YOURLS) -![logo](https://raw.githubusercontent.com/docker-library/docs/56798ba4051d863557e7e6256c452a9265745675/yourls/logo.png) +![logo](https://raw.githubusercontent.com/docker-library/docs/1b75e08d68679797623d98ba82ca80090f5a26d2/yourls/logo.svg?sanitize=true) # How to use this image +## Start a `yourls` server instance + ```console $ docker run --name some-yourls --link some-mysql:mysql \ -e YOURLS_SITE="https://example.com" \ @@ -65,20 +67,16 @@ $ docker run --name some-yourls --link some-mysql:mysql \ -d yourls ``` -The YOURLS instance accepts [a number of environment variables for configuration](https://yourls.org/#Config). -A few notable/important examples for using this Docker image include: +The YOURLS instance accepts a number of environment variables for configuration, see *Environment Variables* section below. -- `-e YOURLS_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) -- `-e YOURLS_DB_USER=...` (defaults to "root") -- `-e YOURLS_DB_PASS=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) -- `-e YOURLS_DB_NAME=...` (defaults to "yourls") -- `-e YOURLS_DB_PREFIX=...` (defaults to "yourls_", only set this when you need to override the default table prefix) -- `-e YOURLS_COOKIEKEY=...` (default to unique random SHA1s) -- `-e YOURLS_SITE=...` (yourls instance url) -- `-e YOURLS_USER=...` (yourls instance user name) -- `-e YOURLS_PASS=...` (yourls instance user password) +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 the `YOURLS_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `yourls` container, provided that the `YOURLS_DB_USER` specified has the necessary permissions to create it. +```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 +``` + +## 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: @@ -86,15 +84,63 @@ If you'd like to be able to access the instance from the host without the contai $ docker run --name some-yourls --link some-mysql:mysql -p 8080:80 -d yourls ``` -Then, access it via `http://localhost:8080/admin/` or `http://host-ip:8080/admin/` in a browser. +Then, access it via `http://localhost:8080/admin/` or `http://:8080/admin/` in a browser. -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`): +**Note:** On first instantiation, reaching the root folder will generate an error. Access the YOURLS administration interface via the path `/admin/`. + +## 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). +A few notable/important examples for using this Docker image include the following. + +### `YOURLS_SITE` + +**Required.** +YOURLS instance URL, no trailing slash, lowercase. + +Example: `YOURLS_SITE="https://example.com"` + +### `YOURLS_USER` + +**Required.** +YOURLS instance username. + +Example: `YOURLS_USER="example_username"` + +### `YOURLS_PASS` + +**Required.** +YOURLS instance password. + +Example: `YOURLS_PASS="example_password"` + +### `YOURLS_DB_HOST`, `YOURLS_DB_USER`, `YOURLS_DB_PASS` + +**Optional if linked `mysql` container.** + +Host, user (defaults to `root`) and password for the database. + +### `YOURLS_DB_NAME` + +**Optional.** +Database name, defaults to `yourls`. The database must have been created before installing YOURLS. + +### `YOURLS_DB_PREFIX` + +**Optional.** +Database tables prefix, defaults to `yourls_`. Only set this when you need to override the default table prefix. + +## 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: ```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 +$ docker run --name some-yourls -e YOURLS_DB_PASS_FILE=/run/secrets/mysql-root ... -d yourls:tag ``` +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) Example `stack.yml` for `yourls`: @@ -116,15 +162,16 @@ services: YOURLS_PASS: example_password mysql: - image: mysql:5.7 + image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: yourls ``` -[![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/be1a84b44ec3c028aa0ac5a9c8e413e43dfe05e4/yourls/stack.yml) +[![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://host-ip:8080/admin/` (as appropriate). +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). ## Adding additional libraries / extensions @@ -144,13 +191,21 @@ The `yourls` 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. -## `yourls:-alpine` +## `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. + +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. -This image is based on the popular [Alpine Linux project](http://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. +Some potentially helpful resources: -This variant is highly recommended when final image size being as small as possible is desired. The main caveat to note is that it does use [musl libc](http://www.musl-libc.org) instead of [glibc and friends](http://www.etalabs.net/compare_libcs.html), so certain software might run into issues depending on the depth of their libc requirements. However, most software doesn't have an issue with this, so this variant is usually a very safe choice. 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. +- [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/) +- [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558) +- [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress) -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). +**WARNING:** the FastCGI protocol is inherently trusting, and thus *extremely* insecure to expose outside of a private container network -- unless you know *exactly* what you are doing (and are willing to accept the extreme risk), do not use Docker's `--publish` (`-p`) flag with this image variant. # License diff --git a/yourls/content.md b/yourls/content.md index 4fc227ecf945..404ab6d96da2 100644 --- a/yourls/content.md +++ b/yourls/content.md @@ -8,6 +8,8 @@ YOURLS is a set of PHP scripts that will allow you to run Your Own URL Shortener # How to use this image +## Start a `%%IMAGE%%` server instance + ```console $ docker run --name some-%%REPO%% --link some-mysql:mysql \ -e YOURLS_SITE="https://example.com" \ @@ -16,20 +18,16 @@ $ docker run --name some-%%REPO%% --link some-mysql:mysql \ -d %%IMAGE%% ``` -The YOURLS instance accepts [a number of environment variables for configuration](https://yourls.org/#Config). -A few notable/important examples for using this Docker image include: +The YOURLS instance accepts a number of environment variables for configuration, see *Environment Variables* section below. -- `-e YOURLS_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container) -- `-e YOURLS_DB_USER=...` (defaults to "root") -- `-e YOURLS_DB_PASS=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container) -- `-e YOURLS_DB_NAME=...` (defaults to "yourls") -- `-e YOURLS_DB_PREFIX=...` (defaults to "yourls_", only set this when you need to override the default table prefix) -- `-e YOURLS_COOKIEKEY=...` (default to unique random SHA1s) -- `-e YOURLS_SITE=...` (yourls instance url) -- `-e YOURLS_USER=...` (yourls instance user name) -- `-e YOURLS_PASS=...` (yourls instance user password) +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 the `YOURLS_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `yourls` container, provided that the `YOURLS_DB_USER` specified has the necessary permissions to create it. +```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%% +``` + +## 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: @@ -37,18 +35,66 @@ If you'd like to be able to access the instance from the host without the contai $ docker run --name some-%%REPO%% --link some-mysql:mysql -p 8080:80 -d %%IMAGE%% ``` -Then, access it via `http://localhost:8080/admin/` or `http://host-ip:8080/admin/` in a browser. +Then, access it via `http://localhost:8080/admin/` or `http://:8080/admin/` in a browser. -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`): +**Note:** On first instantiation, reaching the root folder will generate an error. Access the YOURLS administration interface via the path `/admin/`. + +## 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). +A few notable/important examples for using this Docker image include the following. + +### `YOURLS_SITE` + +**Required.** +YOURLS instance URL, no trailing slash, lowercase. + +Example: `YOURLS_SITE="https://example.com"` + +### `YOURLS_USER` + +**Required.** +YOURLS instance username. + +Example: `YOURLS_USER="example_username"` + +### `YOURLS_PASS` + +**Required.** +YOURLS instance password. + +Example: `YOURLS_PASS="example_password"` + +### `YOURLS_DB_HOST`, `YOURLS_DB_USER`, `YOURLS_DB_PASS` + +**Optional if linked `mysql` container.** + +Host, user (defaults to `root`) and password for the database. + +### `YOURLS_DB_NAME` + +**Optional.** +Database name, defaults to `yourls`. The database must have been created before installing YOURLS. + +### `YOURLS_DB_PREFIX` + +**Optional.** +Database tables prefix, defaults to `yourls_`. Only set this when you need to override the default table prefix. + +## 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: ```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%% +$ docker run --name some-%%REPO%% -e YOURLS_DB_PASS_FILE=/run/secrets/mysql-root ... -d %%IMAGE%%:tag ``` +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%% -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://host-ip:8080/admin/` (as appropriate). +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). ## Adding additional libraries / extensions diff --git a/yourls/github-repo b/yourls/github-repo index b4d52b5a741e..8f03e3682b1e 100644 --- a/yourls/github-repo +++ b/yourls/github-repo @@ -1 +1 @@ -https://github.com/YOURLS/docker-yourls +https://github.com/YOURLS/docker diff --git a/yourls/logo.png b/yourls/logo.png deleted file mode 100644 index 91fc1507c3e5..000000000000 Binary files a/yourls/logo.png and /dev/null differ diff --git a/yourls/logo.svg b/yourls/logo.svg new file mode 100644 index 000000000000..0cc469556a4d --- /dev/null +++ b/yourls/logo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/yourls/stack.yml b/yourls/stack.yml index 1f353855edca..2c467f98effd 100644 --- a/yourls/stack.yml +++ b/yourls/stack.yml @@ -14,7 +14,8 @@ services: YOURLS_PASS: example_password mysql: - image: mysql:5.7 + image: mysql restart: always environment: MYSQL_ROOT_PASSWORD: example + MYSQL_DATABASE: yourls diff --git a/yourls/variant-fpm.md b/yourls/variant-fpm.md new file mode 120000 index 000000000000..5ed64ee63493 --- /dev/null +++ b/yourls/variant-fpm.md @@ -0,0 +1 @@ +../php/variant-fpm.md \ No newline at end of file diff --git a/znc/README.md b/znc/README.md index 7326656ea848..91fb9aebe8e0 100644 --- a/znc/README.md +++ b/znc/README.md @@ -20,12 +20,12 @@ WARNING: [the ZNC Community](https://github.com/znc/znc-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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.8.0`, `1.8`, `latest`](https://github.com/znc/znc-docker/blob/91f58af10b62197187af1f0a9695488e88279e98/full/Dockerfile) -- [`1.8.0-slim`, `1.8-slim`, `slim`](https://github.com/znc/znc-docker/blob/91f58af10b62197187af1f0a9695488e88279e98/slim/Dockerfile) +- [`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) # Quick reference (cont.) @@ -40,7 +40,7 @@ WARNING: (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/znc`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fznc) + [official-images repo's `library/znc` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fznc) [official-images repo's `library/znc` file](https://github.com/docker-library/official-images/blob/master/library/znc) ([history](https://github.com/docker-library/official-images/commits/master/library/znc)) - **Source of this description**: @@ -65,10 +65,10 @@ $ docker run -it -v znc-cfg:/znc-data znc --makeconf To run ZNC: ```console -$ docker run -p 6697:6697 -v znc-cfg:/znc-data znc +$ docker run -p 12345:12345 -v znc-cfg:/znc-data znc ``` -The port should match the port you used during `--makeconf`. Note that 6667 is often blocked by web browsers, and therefore is not recommended. +The port (12345 in the example above) should match the port you used during `--makeconf`. Note that 6667 and 6697 are often blocked by web browsers, and therefore are not recommended for ZNC. If you use any external module, put the .cpp, .py or .pm file to `/znc-data/modules` (you may need to create that directory). diff --git a/znc/content.md b/znc/content.md index 3018cc833cee..bb7e79cca9ff 100644 --- a/znc/content.md +++ b/znc/content.md @@ -17,10 +17,10 @@ $ docker run -it -v znc-cfg:/znc-data %%IMAGE%% --makeconf To run ZNC: ```console -$ docker run -p 6697:6697 -v znc-cfg:/znc-data %%IMAGE%% +$ docker run -p 12345:12345 -v znc-cfg:/znc-data %%IMAGE%% ``` -The port should match the port you used during `--makeconf`. Note that 6667 is often blocked by web browsers, and therefore is not recommended. +The port (12345 in the example above) should match the port you used during `--makeconf`. Note that 6667 and 6697 are often blocked by web browsers, and therefore are not recommended for ZNC. If you use any external module, put the .cpp, .py or .pm file to `/znc-data/modules` (you may need to create that directory). diff --git a/zookeeper/README.md b/zookeeper/README.md index 01b2ff8b5f93..0e92437ec62e 100644 --- a/zookeeper/README.md +++ b/zookeeper/README.md @@ -20,13 +20,18 @@ WARNING: [the Docker Community](https://github.com/31z4/zookeeper-docker) - **Where to get help**: - [the Docker Community Forums](https://forums.docker.com/), [the Docker Community Slack](http://dockr.ly/slack), or [Stack Overflow](https://stackoverflow.com/search?tab=newest&q=docker) + [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 -- [`3.4.14`, `3.4`](https://github.com/31z4/zookeeper-docker/blob/1ed5af662e6749021687fbf2a9b445b1adf2fb46/3.4.14/Dockerfile) -- [`3.5.7`, `3.5`](https://github.com/31z4/zookeeper-docker/blob/415ec2ced7dea27398befc9cb9ff5de299323be8/3.5.7/Dockerfile) -- [`3.6.1`, `3.6`, `latest`](https://github.com/31z4/zookeeper-docker/blob/c0039669a527a56b19ceb30a6523ed206fbf245d/3.6.1/Dockerfile) +- [`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) # Quick reference (cont.) @@ -34,14 +39,14 @@ WARNING: [https://github.com/31z4/zookeeper-docker/issues](https://github.com/31z4/zookeeper-docker/issues) - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64)) - [`amd64`](https://hub.docker.com/r/amd64/zookeeper/) + [`amd64`](https://hub.docker.com/r/amd64/zookeeper/), [`arm64v8`](https://hub.docker.com/r/arm64v8/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)) (image metadata, transfer size, etc) - **Image updates**: - [official-images PRs with label `library/zookeeper`](https://github.com/docker-library/official-images/pulls?q=label%3Alibrary%2Fzookeeper) + [official-images repo's `library/zookeeper` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fzookeeper) [official-images repo's `library/zookeeper` file](https://github.com/docker-library/official-images/blob/master/library/zookeeper) ([history](https://github.com/docker-library/official-images/commits/master/library/zookeeper)) - **Source of this description**: @@ -93,7 +98,7 @@ services: - 2181:2181 environment: ZOO_MY_ID: 1 - ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo2: image: zookeeper @@ -103,7 +108,7 @@ services: - 2182:2181 environment: ZOO_MY_ID: 2 - ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181 + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo3: image: zookeeper @@ -113,12 +118,12 @@ services: - 2183:2181 environment: ZOO_MY_ID: 3 - ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181 + 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/ef162dce5998011e1753c3337dcbe61200c522d2/zookeeper/stack.yml) +[![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 3.5 in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Please note, that Zookeeper 3.4 has slightly different `ZOO_SERVERS` format. 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 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. > 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. @@ -174,7 +179,7 @@ Defaults to `true`. Zookeeper's [`standaloneEnabled`](https://zookeeper.apache.o Defaults to `true`. Zookeeper's [`admin.enableServer`](http://zookeeper.apache.org/doc/r3.5.7/zookeeperAdmin.html#sc_adminserver_config) -> New in 3.5.0: The AdminServer is an embedded Jetty server that provides an HTTP interface to the four letter word commands. By default, the server is started on port 8080, and commands are issued by going to the URL "/commands/[command name]", e.g., http://localhost:8080/commands/stat. +> The AdminServer is an embedded Jetty server that provides an HTTP interface to the four letter word commands. By default, the server is started on port 8080, and commands are issued by going to the URL "/commands/[command name]", e.g., http://localhost:8080/commands/stat. ### `ZOO_AUTOPURGE_PURGEINTERVAL` @@ -196,7 +201,17 @@ Defaults to `srvr`. Zookeeper's [`4lw.commands.whitelist`](https://zookeeper.apa ## Advanced configuration -Not every Zookeeper configuration setting is exposed via the environment variables listed above. These variables are only meant to cover minimum configuration keywords and some often changing options. If [mounting your custom config file](#configuration) as a volume doesn't work for you, consider using `JVMFLAGS` environment variable. Many of the Zookeeper advanced configuration options can be set there using Java system properties in the form of `-Dproperty=value`. For example, you can use Netty instead of NIO (default option) as a server communication framework: +### `ZOO_CFG_EXTRA` + +Not every Zookeeper configuration setting is exposed via the environment variables listed above. These variables are only meant to cover minimum configuration keywords and some often changing options. If [mounting your custom config file](#configuration) as a volume doesn't work for you, consider using `ZOO_CFG_EXTRA` environment variable. You can add arbitrary configuration parameters to Zookeeper configuration file using this variable. The following example shows how to enable Prometheus metrics exporter on port `7070`: + +```console +$ docker run --name some-zookeeper --restart always -e ZOO_CFG_EXTRA="metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7070" zookeeper +``` + +### `JVMFLAGS` + +Many of the Zookeeper advanced configuration options can be set there using Java system properties in the form of `-Dproperty=value`. For example, you can use Netty instead of NIO (default option) as a server communication framework: ```console $ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory" zookeeper @@ -220,9 +235,7 @@ The id must be unique within the ensemble and should have a value between 1 and ### `ZOO_SERVERS` -This variable allows you to specify a list of machines of the Zookeeper ensemble. Each entry has the form of `server.id=host:port:port`. Entries are separated with space. Do note that this variable will not have any effect if you start the container with a `/conf` directory that already contains the `zoo.cfg` file. - -In 3.5, the syntax of this has changed. Servers should be specified as such: `server.id=::[:role];[:]` [Zookeeper Dynamic Reconfiguration](https://zookeeper.apache.org/doc/r3.5.7/zookeeperReconfig.html) +This variable allows you to specify a list of machines of the Zookeeper ensemble. Each entry should be specified as such: `server.id=::[:role];[:]` [Zookeeper Dynamic Reconfiguration](https://zookeeper.apache.org/doc/r3.5.7/zookeeperReconfig.html). Entries are separated with space. Do note that this variable will not have any effect if you start the container with a `/conf` directory that already contains the `zoo.cfg` file. ## Where to store data diff --git a/zookeeper/content.md b/zookeeper/content.md index 67c86a889af9..96a332509060 100644 --- a/zookeeper/content.md +++ b/zookeeper/content.md @@ -30,7 +30,7 @@ $ docker run -it --rm --link some-zookeeper:zookeeper %%IMAGE%% zkCli.sh -server ## %%STACK%% -This will start Zookeeper 3.5 in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Please note, that Zookeeper 3.4 has slightly different `ZOO_SERVERS` format. 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 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. > 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. @@ -86,7 +86,7 @@ Defaults to `true`. Zookeeper's [`standaloneEnabled`](https://zookeeper.apache.o Defaults to `true`. Zookeeper's [`admin.enableServer`](http://zookeeper.apache.org/doc/r3.5.7/zookeeperAdmin.html#sc_adminserver_config) -> New in 3.5.0: The AdminServer is an embedded Jetty server that provides an HTTP interface to the four letter word commands. By default, the server is started on port 8080, and commands are issued by going to the URL "/commands/[command name]", e.g., http://localhost:8080/commands/stat. +> The AdminServer is an embedded Jetty server that provides an HTTP interface to the four letter word commands. By default, the server is started on port 8080, and commands are issued by going to the URL "/commands/[command name]", e.g., http://localhost:8080/commands/stat. ### `ZOO_AUTOPURGE_PURGEINTERVAL` @@ -108,7 +108,17 @@ Defaults to `srvr`. Zookeeper's [`4lw.commands.whitelist`](https://zookeeper.apa ## Advanced configuration -Not every Zookeeper configuration setting is exposed via the environment variables listed above. These variables are only meant to cover minimum configuration keywords and some often changing options. If [mounting your custom config file](#configuration) as a volume doesn't work for you, consider using `JVMFLAGS` environment variable. Many of the Zookeeper advanced configuration options can be set there using Java system properties in the form of `-Dproperty=value`. For example, you can use Netty instead of NIO (default option) as a server communication framework: +### `ZOO_CFG_EXTRA` + +Not every Zookeeper configuration setting is exposed via the environment variables listed above. These variables are only meant to cover minimum configuration keywords and some often changing options. If [mounting your custom config file](#configuration) as a volume doesn't work for you, consider using `ZOO_CFG_EXTRA` environment variable. You can add arbitrary configuration parameters to Zookeeper configuration file using this variable. The following example shows how to enable Prometheus metrics exporter on port `7070`: + +```console +$ docker run --name some-zookeeper --restart always -e ZOO_CFG_EXTRA="metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7070" %%IMAGE%% +``` + +### `JVMFLAGS` + +Many of the Zookeeper advanced configuration options can be set there using Java system properties in the form of `-Dproperty=value`. For example, you can use Netty instead of NIO (default option) as a server communication framework: ```console $ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory" %%IMAGE%% @@ -132,9 +142,7 @@ The id must be unique within the ensemble and should have a value between 1 and ### `ZOO_SERVERS` -This variable allows you to specify a list of machines of the Zookeeper ensemble. Each entry has the form of `server.id=host:port:port`. Entries are separated with space. Do note that this variable will not have any effect if you start the container with a `/conf` directory that already contains the `zoo.cfg` file. - -In 3.5, the syntax of this has changed. Servers should be specified as such: `server.id=::[:role];[:]` [Zookeeper Dynamic Reconfiguration](https://zookeeper.apache.org/doc/r3.5.7/zookeeperReconfig.html) +This variable allows you to specify a list of machines of the Zookeeper ensemble. Each entry should be specified as such: `server.id=::[:role];[:]` [Zookeeper Dynamic Reconfiguration](https://zookeeper.apache.org/doc/r3.5.7/zookeeperReconfig.html). Entries are separated with space. Do note that this variable will not have any effect if you start the container with a `/conf` directory that already contains the `zoo.cfg` file. ## Where to store data diff --git a/zookeeper/stack.yml b/zookeeper/stack.yml index 1e6ce31863b6..cec88f0dce55 100644 --- a/zookeeper/stack.yml +++ b/zookeeper/stack.yml @@ -9,7 +9,7 @@ services: - 2181:2181 environment: ZOO_MY_ID: 1 - ZOO_SERVERS: server.1=0.0.0.0:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo2: image: zookeeper @@ -19,7 +19,7 @@ services: - 2182:2181 environment: ZOO_MY_ID: 2 - ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=0.0.0.0:2888:3888;2181 server.3=zoo3:2888:3888;2181 + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181 zoo3: image: zookeeper @@ -29,4 +29,4 @@ services: - 2183:2181 environment: ZOO_MY_ID: 3 - ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=0.0.0.0:2888:3888;2181 + ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181