This is page 7 of 25. Use http://codebase.md/id/docs/get_started/create/presentation_layout.html?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .ci
│ ├── check-markdownfmt.sh
│ ├── check-metadata.sh
│ ├── check-pr-no-readme.sh
│ ├── check-required-files.sh
│ ├── check-short.sh
│ ├── check-ymlfmt.sh
│ └── get-markdownfmt.sh
├── .common-templates
│ ├── maintainer-community.md
│ ├── maintainer-docker.md
│ ├── maintainer-hashicorp.md
│ └── maintainer-influxdata.md
├── .dockerignore
├── .github
│ └── workflows
│ └── ci.yml
├── .template-helpers
│ ├── arches.sh
│ ├── autogenerated-warning.md
│ ├── compose.md
│ ├── generate-dockerfile-links-partial.sh
│ ├── generate-dockerfile-links-partial.tmpl
│ ├── get-help.md
│ ├── issues.md
│ ├── license-common.md
│ ├── template.md
│ ├── variant-alpine.md
│ ├── variant-default-buildpack-deps.md
│ ├── variant-default-debian.md
│ ├── variant-default-ubuntu.md
│ ├── variant-onbuild.md
│ ├── variant-slim.md
│ ├── variant-windowsservercore.md
│ ├── variant.md
│ └── variant.sh
├── adminer
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── aerospike
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── almalinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── alpine
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── alt
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── amazoncorretto
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── amazonlinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── api-firewall
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── arangodb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── archlinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── backdrop
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── bash
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── bonita
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── buildpack-deps
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── busybox
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-glibc.md
│ ├── variant-musl.md
│ ├── variant-uclibc.md
│ └── variant.md
├── caddy
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo-120.png
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── cassandra
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── chronograf
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── cirros
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clearlinux
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clefos
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clickhouse
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clojure
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── composer
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── convertigo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── couchbase
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── couchdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── crate
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── dart
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── debian
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-slim.md
│ └── variant.md
├── docker
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-rootless.md
│ └── variant-windowsservercore.md
├── Dockerfile
├── drupal
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-fpm.md
├── eclipse-mosquitto
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── eclipse-temurin
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── eggdrop
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── elasticsearch
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-alpine.md
├── elixir
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── emqx
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── erlang
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── fedora
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── flink
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── fluentd
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── friendica
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── gazebo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── gcc
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── generate-repo-stub-readme.sh
├── geonetwork
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-postgres.md
│ └── variant.md
├── get-categories.sh
├── ghost
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── golang
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-alpine.md
│ └── variant-tip.md
├── gradle
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── groovy
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── haproxy
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── haskell
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
├── haxe
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── hello-world
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── update.sh
├── hitch
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── httpd
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── hylang
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ibm-semeru-runtimes
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ibmjava
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── influxdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-data.md
│ └── variant-meta.md
├── irssi
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── jetty
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── joomla
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── jruby
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── julia
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── kapacitor
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── kibana
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── kong
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── krakend
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo-120.png
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── LICENSE
├── lightstreamer
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── liquibase
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── logstash
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-alpine.md
├── mageia
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mariadb
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── markdownfmt.sh
├── matomo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── maven
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mediawiki
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── memcached
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── metadata.json
├── metadata.sh
├── mongo
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mongo-express
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── monica
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mono
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mysql
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── nats
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── neo4j
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── neurodebian
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── nextcloud
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── nginx
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-perl.md
├── node
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── notary
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── odoo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── open-liberty
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── openjdk
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-alpine.md
│ ├── variant-oracle.md
│ └── variant-slim.md
├── oraclelinux
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
├── orientdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── parallel-update.sh
├── percona
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── perl
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── photon
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── php
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-apache.md
│ ├── variant-cli.md
│ ├── variant-fpm.md
│ └── variant.md
├── php-zendserver
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── phpmyadmin
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── plone
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── postfixadmin
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-apache.md
│ ├── variant-fpm-alpine.md
│ └── variant-fpm.md
├── postgres
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── push.pl
├── push.sh
├── pypy
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── python
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
├── r-base
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rabbitmq
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rakudo-star
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── README.md
├── redis
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── redmine
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── registry
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rethinkdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rocket.chat
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rockylinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ros
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ruby
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rust
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── sapmachine
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── satosa
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── scratch
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── silverpeas
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── solr
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── sonarqube
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── spark
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── spiped
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── storm
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── swift
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── swipl
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── teamspeak
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── telegraf
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── tomcat
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── tomee
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── traefik
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-alpine.md
├── ubuntu
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── unit
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── update.sh
├── varnish
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── websphere-liberty
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── wordpress
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-cli.md
│ └── variant-fpm.md
├── xwiki
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ymlfmt.sh
├── yourls
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-fpm.md
├── znc
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
└── zookeeper
├── compose.yaml
├── content.md
├── github-repo
├── license.md
├── logo.png
├── maintainer.md
├── metadata.json
├── README-short.txt
└── README.md
```
# Files
--------------------------------------------------------------------------------
/joomla/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "joomla/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "joomla/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [Joomla!](https://github.com/joomla-docker/docker-joomla)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`5.3.0-php8.1-apache`, `5.3-php8.1-apache`, `5-php8.1-apache`, `php8.1-apache`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.1/apache/Dockerfile)
28 |
29 | - [`5.3.0-php8.1-fpm-alpine`, `5.3-php8.1-fpm-alpine`, `5-php8.1-fpm-alpine`, `php8.1-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.1/fpm-alpine/Dockerfile)
30 |
31 | - [`5.3.0-php8.1-fpm`, `5.3-php8.1-fpm`, `5-php8.1-fpm`, `php8.1-fpm`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.1/fpm/Dockerfile)
32 |
33 | - [`5.3.0-php8.2-apache`, `5.3-php8.2-apache`, `5-php8.2-apache`, `php8.2-apache`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.2/apache/Dockerfile)
34 |
35 | - [`5.3.0-php8.2-fpm-alpine`, `5.3-php8.2-fpm-alpine`, `5-php8.2-fpm-alpine`, `php8.2-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.2/fpm-alpine/Dockerfile)
36 |
37 | - [`5.3.0-php8.2-fpm`, `5.3-php8.2-fpm`, `5-php8.2-fpm`, `php8.2-fpm`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.2/fpm/Dockerfile)
38 |
39 | - [`5.3.0`, `5.3`, `5`, `latest`, `5.3.0-apache`, `5.3-apache`, `5-apache`, `apache`, `5.3.0-php8.3`, `5.3-php8.3`, `5-php8.3`, `php8.3`, `5.3.0-php8.3-apache`, `5.3-php8.3-apache`, `5-php8.3-apache`, `php8.3-apache`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.3/apache/Dockerfile)
40 |
41 | - [`5.3.0-php8.3-fpm-alpine`, `5.3-php8.3-fpm-alpine`, `5-php8.3-fpm-alpine`, `php8.3-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.3/fpm-alpine/Dockerfile)
42 |
43 | - [`5.3.0-php8.3-fpm`, `5.3-php8.3-fpm`, `5-php8.3-fpm`, `php8.3-fpm`](https://github.com/joomla-docker/docker-joomla/blob/b80c1739fa4d78db58f408336c097a98ae94e534/5.3/php8.3/fpm/Dockerfile)
44 |
45 | - [`4.4.13-php8.1-apache`, `4.4-php8.1-apache`, `4-php8.1-apache`](https://github.com/joomla-docker/docker-joomla/blob/2b32f0a2ba4ad99f15c0acd26b2f862c038ff3f5/4.4/php8.1/apache/Dockerfile)
46 |
47 | - [`4.4.13-php8.1-fpm-alpine`, `4.4-php8.1-fpm-alpine`, `4-php8.1-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/2b32f0a2ba4ad99f15c0acd26b2f862c038ff3f5/4.4/php8.1/fpm-alpine/Dockerfile)
48 |
49 | - [`4.4.13-php8.1-fpm`, `4.4-php8.1-fpm`, `4-php8.1-fpm`](https://github.com/joomla-docker/docker-joomla/blob/2b32f0a2ba4ad99f15c0acd26b2f862c038ff3f5/4.4/php8.1/fpm/Dockerfile)
50 |
51 | - [`4.4.13`, `4.4`, `4`, `4.4.13-apache`, `4.4-apache`, `4-apache`, `4.4.13-php8.2`, `4.4-php8.2`, `4-php8.2`, `4.4.13-php8.2-apache`, `4.4-php8.2-apache`, `4-php8.2-apache`](https://github.com/joomla-docker/docker-joomla/blob/2b32f0a2ba4ad99f15c0acd26b2f862c038ff3f5/4.4/php8.2/apache/Dockerfile)
52 |
53 | - [`4.4.13-php8.2-fpm-alpine`, `4.4-php8.2-fpm-alpine`, `4-php8.2-fpm-alpine`](https://github.com/joomla-docker/docker-joomla/blob/2b32f0a2ba4ad99f15c0acd26b2f862c038ff3f5/4.4/php8.2/fpm-alpine/Dockerfile)
54 |
55 | - [`4.4.13-php8.2-fpm`, `4.4-php8.2-fpm`, `4-php8.2-fpm`](https://github.com/joomla-docker/docker-joomla/blob/2b32f0a2ba4ad99f15c0acd26b2f862c038ff3f5/4.4/php8.2/fpm/Dockerfile)
56 |
57 | # Quick reference (cont.)
58 |
59 | - **Where to file issues**:
60 | [https://github.com/joomla-docker/docker-joomla/issues](https://github.com/joomla-docker/docker-joomla/issues?q=)
61 |
62 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
63 | [`amd64`](https://hub.docker.com/r/amd64/joomla/), [`arm32v5`](https://hub.docker.com/r/arm32v5/joomla/), [`arm32v6`](https://hub.docker.com/r/arm32v6/joomla/), [`arm32v7`](https://hub.docker.com/r/arm32v7/joomla/), [`arm64v8`](https://hub.docker.com/r/arm64v8/joomla/), [`i386`](https://hub.docker.com/r/i386/joomla/), [`mips64le`](https://hub.docker.com/r/mips64le/joomla/), [`ppc64le`](https://hub.docker.com/r/ppc64le/joomla/), [`riscv64`](https://hub.docker.com/r/riscv64/joomla/), [`s390x`](https://hub.docker.com/r/s390x/joomla/)
64 |
65 | - **Published image artifact details**:
66 | [repo-info repo's `repos/joomla/` directory](https://github.com/docker-library/repo-info/blob/master/repos/joomla) ([history](https://github.com/docker-library/repo-info/commits/master/repos/joomla))
67 | (image metadata, transfer size, etc)
68 |
69 | - **Image updates**:
70 | [official-images repo's `library/joomla` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjoomla)
71 | [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))
72 |
73 | - **Source of this description**:
74 | [docs repo's `joomla/` directory](https://github.com/docker-library/docs/tree/master/joomla) ([history](https://github.com/docker-library/docs/commits/master/joomla))
75 |
76 | # What is Joomla?
77 |
78 | Joomla is a free and open-source content management system (CMS) for publishing web content. It is built on a model–view–controller web application framework that can be used independently of the CMS. Joomla is written in PHP, uses object-oriented programming (OOP) techniques and software design patterns, stores data in a MySQL, MS SQL, or PostgreSQL database, and includes features such as page caching, RSS feeds, printable versions of pages, news flashes, blogs, search, and support for language internationalization.
79 |
80 | > [wikipedia.org/wiki/Joomla](https://en.wikipedia.org/wiki/Joomla)
81 |
82 | 
83 |
84 | # How to use this image
85 |
86 | ```console
87 | $ docker run --name some-joomla --network some-network -d joomla
88 | ```
89 |
90 | The following environment variables are honored for configuring your Joomla instance:
91 |
92 | - `-e JOOMLA_DB_HOST=...` (defaults to the IP and port of the linked `mysql` container)
93 | - `-e JOOMLA_DB_USER=...` (defaults to "root")
94 | - `-e JOOMLA_DB_PASSWORD=...` (defaults to the value of the `MYSQL_ROOT_PASSWORD` environment variable from the linked `mysql` container)
95 | - `-e JOOMLA_DB_PASSWORD_FILE=...` (path to a file containing the database password)
96 | - `-e JOOMLA_DB_NAME=...` (defaults to "joomla")
97 | - `-e JOOMLA_DB_TYPE=...` (defaults to "mysqli" options: mysqli, pgsql)
98 |
99 | If the `JOOMLA_DB_NAME` specified does not already exist on the given MySQL server, it will be created automatically upon startup of the `joomla` container, provided that the `JOOMLA_DB_USER` specified has the necessary permissions to create it.
100 |
101 | The following environment variables are also honored for configuring auto deployment (skip the browser setup) for your Joomla instance:
102 |
103 | - `-e JOOMLA_SITE_NAME=...` (name of the Joomla site)
104 | - `-e JOOMLA_ADMIN_USER=...` (full name of the Joomla administrator)
105 | - `-e JOOMLA_ADMIN_USERNAME=...` (username of the Joomla administrator)
106 | - `-e JOOMLA_ADMIN_PASSWORD=...` (password of the Joomla administrator)
107 | - `-e JOOMLA_ADMIN_EMAIL=...` (email address of the Joomla administrator)
108 | - `-e JOOMLA_EXTENSIONS_URLS=...` (semicolon-separated list of URLs to install Joomla extensions from)
109 | - `-e JOOMLA_EXTENSIONS_PATHS=...` (semicolon-separated list of file paths to install Joomla extensions from)
110 | - `-e JOOMLA_SMTP_HOST=...` (SMTP host for outgoing email)
111 | - `-e JOOMLA_SMTP_HOST_PORT=...` (SMTP port for outgoing email)
112 |
113 | 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:
114 |
115 | ```console
116 | $ docker run --name some-joomla --network some-network -p 8080:80 -d joomla
117 | ```
118 |
119 | Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser.
120 |
121 | If you'd like to use an external database instead of a MySQL container, specify the hostname and port with `JOOMLA_DB_HOST` along with the password in `JOOMLA_DB_PASSWORD` and the username in `JOOMLA_DB_USER` (if it is something other than `root`):
122 |
123 | ```console
124 | $ docker run --name some-joomla --network some-network -e JOOMLA_DB_HOST=10.1.2.3:3306 \
125 | -e JOOMLA_DB_USER=... -e JOOMLA_DB_PASSWORD=... -d joomla
126 | ```
127 |
128 | ## ... via [`docker compose`](https://github.com/docker/compose)
129 |
130 | Example `compose.yaml` for `joomla`:
131 |
132 | ```yaml
133 | services:
134 |
135 | joomla:
136 | image: joomla
137 | restart: always
138 | ports:
139 | - 8080:80
140 | environment:
141 | JOOMLA_DB_HOST: db
142 | JOOMLA_DB_USER: joomla
143 | JOOMLA_DB_PASSWORD: examplepass
144 | JOOMLA_DB_NAME: joomla_db
145 | JOOMLA_SITE_NAME: Joomla
146 | JOOMLA_ADMIN_USER: Joomla Hero
147 | JOOMLA_ADMIN_USERNAME: joomla
148 | JOOMLA_ADMIN_PASSWORD: joomla@secured
149 | JOOMLA_ADMIN_EMAIL: [email protected]
150 | volumes:
151 | - joomla_data:/var/www/html
152 | networks:
153 | - joomla_network
154 |
155 | db:
156 | image: mysql:8.0
157 | restart: always
158 | environment:
159 | MYSQL_DATABASE: joomla_db
160 | MYSQL_USER: joomla
161 | MYSQL_PASSWORD: examplepass
162 | MYSQL_RANDOM_ROOT_PASSWORD: '1'
163 | volumes:
164 | - db_data:/var/lib/mysql
165 | networks:
166 | - joomla_network
167 |
168 | volumes:
169 | joomla_data:
170 | db_data:
171 |
172 | networks:
173 | joomla_network:
174 | ```
175 |
176 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
177 |
178 | ## Adding additional libraries / extensions
179 |
180 | This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins. There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size.
181 |
182 | If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, the [`joomla` Dockerfile](https://github.com/joomla-docker/docker-joomla/blob/360f6bd96c80f72b020d2d9c8aae9daa6bca2887/5.1/php8.3/apache/Dockerfile#L51-L64) has an example of doing this.
183 |
184 | The following Docker Hub features can help with the task of keeping your dependent images up-to-date:
185 |
186 | - [Automated Builds](https://docs.docker.com/docker-hub/builds/) let Docker Hub automatically build your Dockerfile each time you push changes to it.
187 |
188 | # Image Variants
189 |
190 | The `joomla` images come in many flavors, each designed for a specific use case.
191 |
192 | ## `joomla:<version>`
193 |
194 | 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.
195 |
196 | ## `joomla:<version>-alpine`
197 |
198 | 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.
199 |
200 | 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.
201 |
202 | 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).
203 |
204 | # License
205 |
206 | View [license information](http://www.gnu.org/licenses/gpl-2.0.txt) for the software contained in this image.
207 |
208 | 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).
209 |
210 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `joomla/` directory](https://github.com/docker-library/repo-info/tree/master/repos/joomla).
211 |
212 | 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.
213 |
```
--------------------------------------------------------------------------------
/node/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "node/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "node/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [The Node.js Docker Team](https://github.com/nodejs/docker-node)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`24-alpine3.20`, `24.0-alpine3.20`, `24.0.1-alpine3.20`, `alpine3.20`, `current-alpine3.20`](https://github.com/nodejs/docker-node/blob/d9138b93aec8cd4b4febaae0b4e40b3272015ca6/24/alpine3.20/Dockerfile)
28 |
29 | - [`24-alpine`, `24-alpine3.21`, `24.0-alpine`, `24.0-alpine3.21`, `24.0.1-alpine`, `24.0.1-alpine3.21`, `alpine`, `alpine3.21`, `current-alpine`, `current-alpine3.21`](https://github.com/nodejs/docker-node/blob/d9138b93aec8cd4b4febaae0b4e40b3272015ca6/24/alpine3.21/Dockerfile)
30 |
31 | - [`24`, `24-bookworm`, `24.0`, `24.0-bookworm`, `24.0.1`, `24.0.1-bookworm`, `bookworm`, `current`, `current-bookworm`, `latest`](https://github.com/nodejs/docker-node/blob/d9138b93aec8cd4b4febaae0b4e40b3272015ca6/24/bookworm/Dockerfile)
32 |
33 | - [`24-bookworm-slim`, `24-slim`, `24.0-bookworm-slim`, `24.0-slim`, `24.0.1-bookworm-slim`, `24.0.1-slim`, `bookworm-slim`, `current-bookworm-slim`, `current-slim`, `slim`](https://github.com/nodejs/docker-node/blob/d9138b93aec8cd4b4febaae0b4e40b3272015ca6/24/bookworm-slim/Dockerfile)
34 |
35 | - [`24-bullseye`, `24.0-bullseye`, `24.0.1-bullseye`, `bullseye`, `current-bullseye`](https://github.com/nodejs/docker-node/blob/d9138b93aec8cd4b4febaae0b4e40b3272015ca6/24/bullseye/Dockerfile)
36 |
37 | - [`24-bullseye-slim`, `24.0-bullseye-slim`, `24.0.1-bullseye-slim`, `bullseye-slim`, `current-bullseye-slim`](https://github.com/nodejs/docker-node/blob/d9138b93aec8cd4b4febaae0b4e40b3272015ca6/24/bullseye-slim/Dockerfile)
38 |
39 | - [`23-alpine3.20`, `23.11-alpine3.20`, `23.11.0-alpine3.20`](https://github.com/nodejs/docker-node/blob/f6908ff3eb35a5d0c8fc60086fd29ae16e3abdba/23/alpine3.20/Dockerfile)
40 |
41 | - [`23-alpine`, `23-alpine3.21`, `23.11-alpine`, `23.11-alpine3.21`, `23.11.0-alpine`, `23.11.0-alpine3.21`](https://github.com/nodejs/docker-node/blob/f6908ff3eb35a5d0c8fc60086fd29ae16e3abdba/23/alpine3.21/Dockerfile)
42 |
43 | - [`23`, `23-bookworm`, `23.11`, `23.11-bookworm`, `23.11.0`, `23.11.0-bookworm`](https://github.com/nodejs/docker-node/blob/f6908ff3eb35a5d0c8fc60086fd29ae16e3abdba/23/bookworm/Dockerfile)
44 |
45 | - [`23-bookworm-slim`, `23-slim`, `23.11-bookworm-slim`, `23.11-slim`, `23.11.0-bookworm-slim`, `23.11.0-slim`](https://github.com/nodejs/docker-node/blob/f6908ff3eb35a5d0c8fc60086fd29ae16e3abdba/23/bookworm-slim/Dockerfile)
46 |
47 | - [`23-bullseye`, `23.11-bullseye`, `23.11.0-bullseye`](https://github.com/nodejs/docker-node/blob/f6908ff3eb35a5d0c8fc60086fd29ae16e3abdba/23/bullseye/Dockerfile)
48 |
49 | - [`23-bullseye-slim`, `23.11-bullseye-slim`, `23.11.0-bullseye-slim`](https://github.com/nodejs/docker-node/blob/f6908ff3eb35a5d0c8fc60086fd29ae16e3abdba/23/bullseye-slim/Dockerfile)
50 |
51 | - [`22-alpine3.20`, `22.15-alpine3.20`, `22.15.0-alpine3.20`, `jod-alpine3.20`, `lts-alpine3.20`](https://github.com/nodejs/docker-node/blob/9bb97e784231f01e61df4d22aaa95a110432a1c7/22/alpine3.20/Dockerfile)
52 |
53 | - [`22-alpine`, `22-alpine3.21`, `22.15-alpine`, `22.15-alpine3.21`, `22.15.0-alpine`, `22.15.0-alpine3.21`, `jod-alpine`, `jod-alpine3.21`, `lts-alpine`, `lts-alpine3.21`](https://github.com/nodejs/docker-node/blob/9bb97e784231f01e61df4d22aaa95a110432a1c7/22/alpine3.21/Dockerfile)
54 |
55 | - [`22`, `22-bookworm`, `22.15`, `22.15-bookworm`, `22.15.0`, `22.15.0-bookworm`, `jod`, `jod-bookworm`, `lts`, `lts-bookworm`, `lts-jod`](https://github.com/nodejs/docker-node/blob/9bb97e784231f01e61df4d22aaa95a110432a1c7/22/bookworm/Dockerfile)
56 |
57 | - [`22-bookworm-slim`, `22-slim`, `22.15-bookworm-slim`, `22.15-slim`, `22.15.0-bookworm-slim`, `22.15.0-slim`, `jod-bookworm-slim`, `jod-slim`, `lts-bookworm-slim`, `lts-slim`](https://github.com/nodejs/docker-node/blob/9bb97e784231f01e61df4d22aaa95a110432a1c7/22/bookworm-slim/Dockerfile)
58 |
59 | - [`22-bullseye`, `22.15-bullseye`, `22.15.0-bullseye`, `jod-bullseye`, `lts-bullseye`](https://github.com/nodejs/docker-node/blob/9bb97e784231f01e61df4d22aaa95a110432a1c7/22/bullseye/Dockerfile)
60 |
61 | - [`22-bullseye-slim`, `22.15-bullseye-slim`, `22.15.0-bullseye-slim`, `jod-bullseye-slim`, `lts-bullseye-slim`](https://github.com/nodejs/docker-node/blob/9bb97e784231f01e61df4d22aaa95a110432a1c7/22/bullseye-slim/Dockerfile)
62 |
63 | - [`20-alpine3.20`, `20.19-alpine3.20`, `20.19.1-alpine3.20`, `iron-alpine3.20`](https://github.com/nodejs/docker-node/blob/59723c6c97abbac39c8fbc4fa09ab52ba33d42db/20/alpine3.20/Dockerfile)
64 |
65 | - [`20-alpine`, `20-alpine3.21`, `20.19-alpine`, `20.19-alpine3.21`, `20.19.1-alpine`, `20.19.1-alpine3.21`, `iron-alpine`, `iron-alpine3.21`](https://github.com/nodejs/docker-node/blob/59723c6c97abbac39c8fbc4fa09ab52ba33d42db/20/alpine3.21/Dockerfile)
66 |
67 | - [`20`, `20-bookworm`, `20.19`, `20.19-bookworm`, `20.19.1`, `20.19.1-bookworm`, `iron`, `iron-bookworm`](https://github.com/nodejs/docker-node/blob/59723c6c97abbac39c8fbc4fa09ab52ba33d42db/20/bookworm/Dockerfile)
68 |
69 | - [`20-bookworm-slim`, `20-slim`, `20.19-bookworm-slim`, `20.19-slim`, `20.19.1-bookworm-slim`, `20.19.1-slim`, `iron-bookworm-slim`, `iron-slim`](https://github.com/nodejs/docker-node/blob/59723c6c97abbac39c8fbc4fa09ab52ba33d42db/20/bookworm-slim/Dockerfile)
70 |
71 | - [`20-bullseye`, `20.19-bullseye`, `20.19.1-bullseye`, `iron-bullseye`](https://github.com/nodejs/docker-node/blob/59723c6c97abbac39c8fbc4fa09ab52ba33d42db/20/bullseye/Dockerfile)
72 |
73 | - [`20-bullseye-slim`, `20.19-bullseye-slim`, `20.19.1-bullseye-slim`, `iron-bullseye-slim`](https://github.com/nodejs/docker-node/blob/59723c6c97abbac39c8fbc4fa09ab52ba33d42db/20/bullseye-slim/Dockerfile)
74 |
75 | - [`18-alpine3.20`, `18.20-alpine3.20`, `18.20.8-alpine3.20`, `hydrogen-alpine3.20`](https://github.com/nodejs/docker-node/blob/ba2b3e61e6aaf4643108fb5f1cda9ee5238efde5/18/alpine3.20/Dockerfile)
76 |
77 | - [`18-alpine`, `18-alpine3.21`, `18.20-alpine`, `18.20-alpine3.21`, `18.20.8-alpine`, `18.20.8-alpine3.21`, `hydrogen-alpine`, `hydrogen-alpine3.21`](https://github.com/nodejs/docker-node/blob/ba2b3e61e6aaf4643108fb5f1cda9ee5238efde5/18/alpine3.21/Dockerfile)
78 |
79 | - [`18`, `18-bookworm`, `18.20`, `18.20-bookworm`, `18.20.8`, `18.20.8-bookworm`, `hydrogen`, `hydrogen-bookworm`](https://github.com/nodejs/docker-node/blob/ba2b3e61e6aaf4643108fb5f1cda9ee5238efde5/18/bookworm/Dockerfile)
80 |
81 | - [`18-bookworm-slim`, `18-slim`, `18.20-bookworm-slim`, `18.20-slim`, `18.20.8-bookworm-slim`, `18.20.8-slim`, `hydrogen-bookworm-slim`, `hydrogen-slim`](https://github.com/nodejs/docker-node/blob/ba2b3e61e6aaf4643108fb5f1cda9ee5238efde5/18/bookworm-slim/Dockerfile)
82 |
83 | - [`18-bullseye`, `18.20-bullseye`, `18.20.8-bullseye`, `hydrogen-bullseye`](https://github.com/nodejs/docker-node/blob/ba2b3e61e6aaf4643108fb5f1cda9ee5238efde5/18/bullseye/Dockerfile)
84 |
85 | - [`18-bullseye-slim`, `18.20-bullseye-slim`, `18.20.8-bullseye-slim`, `hydrogen-bullseye-slim`](https://github.com/nodejs/docker-node/blob/ba2b3e61e6aaf4643108fb5f1cda9ee5238efde5/18/bullseye-slim/Dockerfile)
86 |
87 | # Quick reference (cont.)
88 |
89 | - **Where to file issues**:
90 | [https://github.com/nodejs/docker-node/issues](https://github.com/nodejs/docker-node/issues?q=)
91 |
92 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
93 | [`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/)
94 |
95 | - **Published image artifact details**:
96 | [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))
97 | (image metadata, transfer size, etc)
98 |
99 | - **Image updates**:
100 | [official-images repo's `library/node` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnode)
101 | [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))
102 |
103 | - **Source of this description**:
104 | [docs repo's `node/` directory](https://github.com/docker-library/docs/tree/master/node) ([history](https://github.com/docker-library/docs/commits/master/node))
105 |
106 | # What is Node.js?
107 |
108 | Node.js is a software platform for scalable server-side and networking applications. Node.js applications are written in JavaScript and can be run within the Node.js runtime on Mac OS X, Windows, and Linux without changes.
109 |
110 | Node.js applications are designed to maximize throughput and efficiency, using non-blocking I/O and asynchronous events. Node.js applications run single-threaded, although Node.js uses multiple threads for file and network events. Node.js is commonly used for real-time applications due to its asynchronous nature.
111 |
112 | Node.js internally uses the Google V8 JavaScript engine to execute code; a large percentage of the basic modules are written in JavaScript. Node.js contains a built-in, asynchronous I/O library for file, socket, and HTTP communication. The HTTP and socket support allows Node.js to act as a web server without additional software such as Apache.
113 |
114 | > [wikipedia.org/wiki/Node.js](https://en.wikipedia.org/wiki/Node.js)
115 |
116 | 
117 |
118 | # How to use this image
119 |
120 | See [How To Use This Image](https://github.com/nodejs/docker-node/blob/master/README.md#how-to-use-this-image) on GitHub for up-to-date documentation.
121 |
122 | # Image Variants
123 |
124 | The `node` images come in many flavors, each designed for a specific use case.
125 |
126 | ## `node:<version>`
127 |
128 | 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.
129 |
130 | Some of these tags may have names like bookworm or bullseye in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian.
131 |
132 | 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.
133 |
134 | ## `node:<version>-alpine`
135 |
136 | 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.
137 |
138 | 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.
139 |
140 | 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).
141 |
142 | ## `node:<version>-slim`
143 |
144 | 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.
145 |
146 | # License
147 |
148 | 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.
149 |
150 | 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).
151 |
152 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `node/` directory](https://github.com/docker-library/repo-info/tree/master/repos/node).
153 |
154 | 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.
155 |
```
--------------------------------------------------------------------------------
/zookeeper/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "zookeeper/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "zookeeper/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [the Docker Community](https://github.com/31z4/zookeeper-docker)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`3.8.4`, `3.8`, `3.8.4-jre-17`, `3.8-jre-17`](https://github.com/31z4/zookeeper-docker/blob/ec1050affd761a7886c1f1f5d18165c19d3143e8/3.8.4/Dockerfile)
28 |
29 | - [`3.9.3`, `3.9`, `3.9.3-jre-17`, `3.9-jre-17`, `latest`](https://github.com/31z4/zookeeper-docker/blob/268d33caa089426f4f173ba0bac9277919f88dc7/3.9.3/Dockerfile)
30 |
31 | # Quick reference (cont.)
32 |
33 | - **Where to file issues**:
34 | [https://github.com/31z4/zookeeper-docker/issues](https://github.com/31z4/zookeeper-docker/issues?q=)
35 |
36 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
37 | [`amd64`](https://hub.docker.com/r/amd64/zookeeper/), [`arm64v8`](https://hub.docker.com/r/arm64v8/zookeeper/), [`ppc64le`](https://hub.docker.com/r/ppc64le/zookeeper/), [`s390x`](https://hub.docker.com/r/s390x/zookeeper/)
38 |
39 | - **Published image artifact details**:
40 | [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))
41 | (image metadata, transfer size, etc)
42 |
43 | - **Image updates**:
44 | [official-images repo's `library/zookeeper` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fzookeeper)
45 | [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))
46 |
47 | - **Source of this description**:
48 | [docs repo's `zookeeper/` directory](https://github.com/docker-library/docs/tree/master/zookeeper) ([history](https://github.com/docker-library/docs/commits/master/zookeeper))
49 |
50 | # What is Apache Zookeeper?
51 |
52 | Apache ZooKeeper is a software project of the Apache Software Foundation, providing an open source distributed configuration service, synchronization service, and naming registry for large distributed systems. ZooKeeper was a sub-project of Hadoop but is now a top-level project in its own right.
53 |
54 | > [wikipedia.org/wiki/Apache_ZooKeeper](https://en.wikipedia.org/wiki/Apache_ZooKeeper)
55 |
56 | 
57 |
58 | # How to use this image
59 |
60 | ## Start a Zookeeper server instance
61 |
62 | ```console
63 | $ docker run --name some-zookeeper --restart always -d zookeeper
64 | ```
65 |
66 | This image includes `EXPOSE 2181 2888 3888 8080` (the zookeeper client port, follower port, election port, AdminServer port respectively), so standard container linking will make it automatically available to the linked containers. Since the Zookeeper "fails fast" it's better to always restart it.
67 |
68 | ## Connect to Zookeeper from an application in another Docker container
69 |
70 | ```console
71 | $ docker run --name some-app --link some-zookeeper:zookeeper -d application-that-uses-zookeeper
72 | ```
73 |
74 | ## Connect to Zookeeper from the Zookeeper command line client
75 |
76 | ```console
77 | $ docker run -it --rm --link some-zookeeper:zookeeper zookeeper zkCli.sh -server zookeeper
78 | ```
79 |
80 | ## ... via [`docker compose`](https://github.com/docker/compose)
81 |
82 | Example `compose.yaml` for `zookeeper`:
83 |
84 | ```yaml
85 | services:
86 | zoo1:
87 | image: zookeeper
88 | restart: always
89 | hostname: zoo1
90 | ports:
91 | - 2181:2181
92 | environment:
93 | ZOO_MY_ID: 1
94 | ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
95 |
96 | zoo2:
97 | image: zookeeper
98 | restart: always
99 | hostname: zoo2
100 | ports:
101 | - 2182:2181
102 | environment:
103 | ZOO_MY_ID: 2
104 | ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
105 |
106 | zoo3:
107 | image: zookeeper
108 | restart: always
109 | hostname: zoo3
110 | ports:
111 | - 2183:2181
112 | environment:
113 | ZOO_MY_ID: 3
114 | ZOO_SERVERS: server.1=zoo1:2888:3888;2181 server.2=zoo2:2888:3888;2181 server.3=zoo3:2888:3888;2181
115 | ```
116 |
117 | This will start Zookeeper in [replicated mode](https://zookeeper.apache.org/doc/current/zookeeperStarted.html#sc_RunningReplicatedZooKeeper). Run `docker compose up` and wait for it to initialize completely. Ports `2181-2183` will be exposed.
118 |
119 | > 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.
120 |
121 | Consider using [Docker Swarm](https://www.docker.com/products/docker-swarm) when running Zookeeper in replicated mode.
122 |
123 | ## Configuration
124 |
125 | Zookeeper configuration is located in `/conf`. One way to change it is mounting your config file as a volume:
126 |
127 | ```console
128 | $ docker run --name some-zookeeper --restart always -d -v $(pwd)/zoo.cfg:/conf/zoo.cfg zookeeper
129 | ```
130 |
131 | ## Environment variables
132 |
133 | ZooKeeper recommended defaults are used if `zoo.cfg` file is not provided. They can be overridden using the following environment variables.
134 |
135 | ```console
136 | $ docker run -e "ZOO_INIT_LIMIT=10" --name some-zookeeper --restart always -d zookeeper
137 | ```
138 |
139 | ### `ZOO_TICK_TIME`
140 |
141 | Defaults to `2000`. ZooKeeper's `tickTime`
142 |
143 | > The length of a single tick, which is the basic time unit used by ZooKeeper, as measured in milliseconds. It is used to regulate heartbeats, and timeouts. For example, the minimum session timeout will be two ticks
144 |
145 | ### `ZOO_INIT_LIMIT`
146 |
147 | Defaults to `5`. ZooKeeper's `initLimit`
148 |
149 | > Amount of time, in ticks (see tickTime), to allow followers to connect and sync to a leader. Increased this value as needed, if the amount of data managed by ZooKeeper is large.
150 |
151 | ### `ZOO_SYNC_LIMIT`
152 |
153 | Defaults to `2`. ZooKeeper's `syncLimit`
154 |
155 | > Amount of time, in ticks (see tickTime), to allow followers to sync with ZooKeeper. If followers fall too far behind a leader, they will be dropped.
156 |
157 | ### `ZOO_MAX_CLIENT_CNXNS`
158 |
159 | Defaults to `60`. ZooKeeper's `maxClientCnxns`
160 |
161 | > Limits the number of concurrent connections (at the socket level) that a single client, identified by IP address, may make to a single member of the ZooKeeper ensemble.
162 |
163 | ### `ZOO_STANDALONE_ENABLED`
164 |
165 | Defaults to `true`. Zookeeper's [`standaloneEnabled`](https://zookeeper.apache.org/doc/r3.5.7/zookeeperReconfig.html#sc_reconfig_standaloneEnabled)
166 |
167 | > Prior to 3.5.0, one could run ZooKeeper in Standalone mode or in a Distributed mode. These are separate implementation stacks, and switching between them during run time is not possible. By default (for backward compatibility) standaloneEnabled is set to true. The consequence of using this default is that if started with a single server the ensemble will not be allowed to grow, and if started with more than one server it will not be allowed to shrink to contain fewer than two participants.
168 |
169 | ### `ZOO_ADMINSERVER_ENABLED`
170 |
171 | Defaults to `true`. Zookeeper's [`admin.enableServer`](http://zookeeper.apache.org/doc/r3.5.7/zookeeperAdmin.html#sc_adminserver_config)
172 |
173 | > 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.
174 |
175 | ### `ZOO_AUTOPURGE_PURGEINTERVAL`
176 |
177 | Defaults to `0`. Zookeeper's [`autoPurge.purgeInterval`](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_advancedConfiguration)
178 |
179 | > The time interval in hours for which the purge task has to be triggered. Set to a positive integer (1 and above) to enable the auto purging. Defaults to 0.
180 |
181 | ### `ZOO_AUTOPURGE_SNAPRETAINCOUNT`
182 |
183 | Defaults to `3`. Zookeeper's [`autoPurge.snapRetainCount`](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_advancedConfiguration)
184 |
185 | > When enabled, ZooKeeper auto purge feature retains the autopurge.snapRetainCount most recent snapshots and the corresponding transaction logs in the dataDir and dataLogDir respectively and deletes the rest. Defaults to 3. Minimum value is 3.
186 |
187 | ### `ZOO_4LW_COMMANDS_WHITELIST`
188 |
189 | Defaults to `srvr`. Zookeeper's [`4lw.commands.whitelist`](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_clusterOptions)
190 |
191 | > A list of comma separated Four Letter Words commands that user wants to use. A valid Four Letter Words command must be put in this list else ZooKeeper server will not enable the command. By default the whitelist only contains "srvr" command which zkServer.sh uses. The rest of four letter word commands are disabled by default.
192 |
193 | ## Advanced configuration
194 |
195 | ### `ZOO_CFG_EXTRA`
196 |
197 | 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`:
198 |
199 | ```console
200 | $ docker run --name some-zookeeper --restart always -e ZOO_CFG_EXTRA="metricsProvider.className=org.apache.zookeeper.metrics.prometheus.PrometheusMetricsProvider metricsProvider.httpPort=7070" zookeeper
201 | ```
202 |
203 | ### `JVMFLAGS`
204 |
205 | 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:
206 |
207 | ```console
208 | $ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Dzookeeper.serverCnxnFactory=org.apache.zookeeper.server.NettyServerCnxnFactory" zookeeper
209 | ```
210 |
211 | See [Advanced Configuration](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_advancedConfiguration) for the full list of supported Java system properties.
212 |
213 | Another example use case for the `JVMFLAGS` is setting a maximum JWM heap size of 1 GB:
214 |
215 | ```console
216 | $ docker run --name some-zookeeper --restart always -e JVMFLAGS="-Xmx1024m" zookeeper
217 | ```
218 |
219 | ## Replicated mode
220 |
221 | Environment variables below are mandatory if you want to run Zookeeper in replicated mode.
222 |
223 | ### `ZOO_MY_ID`
224 |
225 | The id must be unique within the ensemble and should have a value between 1 and 255. Do note that this variable will not have any effect if you start the container with a `/data` directory that already contains the `myid` file.
226 |
227 | ### `ZOO_SERVERS`
228 |
229 | This variable allows you to specify a list of machines of the Zookeeper ensemble. Each entry should be specified as such: `server.id=<address1>:<port1>:<port2>[:role];[<client port address>:]<client port>` [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.
230 |
231 | ## Where to store data
232 |
233 | This image is configured with volumes at `/data` and `/datalog` to hold the Zookeeper in-memory database snapshots and the transaction log of updates to the database, respectively.
234 |
235 | > Be careful where you put the transaction log. A dedicated transaction log device is key to consistent good performance. Putting the log on a busy device will adversely affect performance.
236 |
237 | ## How to configure logging
238 |
239 | By default, ZooKeeper redirects stdout/stderr outputs to the console. Since 3.8 ZooKeeper is shipped with [LOGBack](https://logback.qos.ch/) as the logging backend. The ZooKeeper default `logback.xml` file resides in the `/conf` directory. To override default logging configuration mount your custom config as a volume:
240 |
241 | ```console
242 | $ docker run --name some-zookeeper --restart always -d -v $(pwd)/logback.xml:/conf/logback.xml zookeeper
243 | ```
244 |
245 | Check [ZooKeeper Logging](https://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_logging) for more details.
246 |
247 | ### Logging in 3.7
248 |
249 | You can redirect to a file located in `/logs` by passing environment variable `ZOO_LOG4J_PROP` as follows:
250 |
251 | ```console
252 | $ docker run --name some-zookeeper --restart always -e ZOO_LOG4J_PROP="INFO,ROLLINGFILE" zookeeper
253 | ```
254 |
255 | This will write logs to `/logs/zookeeper.log`. This image is configured with a volume at `/logs` for your convenience.
256 |
257 | # License
258 |
259 | View [license information](https://github.com/apache/zookeeper/blob/master/LICENSE.txt) for the software contained in this image.
260 |
261 | 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).
262 |
263 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `zookeeper/` directory](https://github.com/docker-library/repo-info/tree/master/repos/zookeeper).
264 |
265 | 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.
266 |
```
--------------------------------------------------------------------------------
/swift/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "swift/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "swift/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [the Swift Community](https://github.com/apple/swift-docker)
21 |
22 | - **Where to get help**:
23 | [Swift Docker Community Forums](https://forums.swift.org/c/server/docker)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`6.1.0`, `6.1`, `6.1.0-noble`, `6.1-noble`, `noble`, `latest`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/ubuntu/24.04/Dockerfile)
28 |
29 | - [`6.1.0-slim`, `6.1-slim`, `6.1.0-noble-slim`, `6.1-noble-slim`, `noble-slim`, `slim`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/ubuntu/24.04/slim/Dockerfile)
30 |
31 | - [`6.1.0-jammy`, `6.1-jammy`, `jammy`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/ubuntu/22.04/Dockerfile)
32 |
33 | - [`6.1.0-jammy-slim`, `6.1-jammy-slim`, `jammy-slim`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/ubuntu/22.04/slim/Dockerfile)
34 |
35 | - [`6.1.0-focal-slim`, `6.1-focal-slim`, `focal-slim`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/ubuntu/20.04/slim/Dockerfile)
36 |
37 | - [`6.1.0-focal`, `6.1-focal`, `focal`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/ubuntu/20.04/Dockerfile)
38 |
39 | - [`6.1.0-bookworm`, `6.1-bookworm`, `bookworm`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/debian/12/Dockerfile)
40 |
41 | - [`6.1.0-amazonlinux2`, `6.1-amazonlinux2`, `amazonlinux2`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/amazonlinux/2/Dockerfile)
42 |
43 | - [`6.1.0-amazonlinux2-slim`, `6.1-amazonlinux2-slim`, `amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/amazonlinux/2/slim/Dockerfile)
44 |
45 | - [`6.1.0-rhel-ubi9`, `6.1-rhel-ubi9`, `rhel-ubi9`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/rhel-ubi/9/Dockerfile)
46 |
47 | - [`6.1.0-rhel-ubi9-slim`, `6.1-rhel-ubi9-slim`, `rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/rhel-ubi/9/slim/Dockerfile)
48 |
49 | - [`6.1.0-windowsservercore-ltsc2022`, `6.1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/fad056fa5f65f926323f0ff61129cb4e6b1eec11/6.1/windows/LTSC2022/Dockerfile)
50 |
51 | - [`6.0.3`, `6.0`, `6.0.3-noble`, `6.0-noble`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/24.04/Dockerfile)
52 |
53 | - [`6.0.3-slim`, `6.0-slim`, `6.0.3-noble-slim`, `6.0-noble-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/24.04/slim/Dockerfile)
54 |
55 | - [`6.0.3-jammy`, `6.0-jammy`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/22.04/Dockerfile)
56 |
57 | - [`6.0.3-jammy-slim`, `6.0-jammy-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/22.04/slim/Dockerfile)
58 |
59 | - [`6.0.3-focal-slim`, `6.0-focal-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/20.04/slim/Dockerfile)
60 |
61 | - [`6.0.3-focal`, `6.0-focal`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/ubuntu/20.04/Dockerfile)
62 |
63 | - [`6.0.3-bookworm`, `6.0-bookworm`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/debian/12/Dockerfile)
64 |
65 | - [`6.0.3-amazonlinux2`, `6.0-amazonlinux2`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/amazonlinux/2/Dockerfile)
66 |
67 | - [`6.0.3-amazonlinux2-slim`, `6.0-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/amazonlinux/2/slim/Dockerfile)
68 |
69 | - [`6.0.3-rhel-ubi9`, `6.0-rhel-ubi9`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/rhel-ubi/9/Dockerfile)
70 |
71 | - [`6.0.3-rhel-ubi9-slim`, `6.0-rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/rhel-ubi/9/slim/Dockerfile)
72 |
73 | - [`6.0.3-windowsservercore-ltsc2022`, `6.0-windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/f44060cdf224436060d2df98a5c3f63f2600de63/6.0/windows/LTSC2022/Dockerfile)
74 |
75 | - [`5.10.1`, `5.10`, `5.10.1-jammy`, `5.10-jammy`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/22.04/Dockerfile)
76 |
77 | - [`5.10.1-slim`, `5.10-slim`, `5.10.1-jammy-slim`, `5.10-jammy-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/22.04/slim/Dockerfile)
78 |
79 | - [`5.10.1-focal-slim`, `5.10-focal-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/20.04/slim/Dockerfile)
80 |
81 | - [`5.10.1-focal`, `5.10-focal`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/20.04/Dockerfile)
82 |
83 | - [`5.10.1-noble`, `5.10-noble`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/ubuntu/24.04/Dockerfile)
84 |
85 | - [`5.10.1-noble-slim`, `5.10-noble-slim`](https://github.com/apple/swift-docker/blob/38e4244ebab3d6a4e702fb30449827d6c28ee1fd/5.10/ubuntu/24.04/slim/Dockerfile)
86 |
87 | - [`5.10.1-bookworm`, `5.10-bookworm`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/debian/12/Dockerfile)
88 |
89 | - [`5.10.1-amazonlinux2`, `5.10-amazonlinux2`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/amazonlinux/2/Dockerfile)
90 |
91 | - [`5.10.1-amazonlinux2-slim`, `5.10-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/amazonlinux/2/slim/Dockerfile)
92 |
93 | - [`5.10.1-rhel-ubi9`, `5.10-rhel-ubi9`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/rhel-ubi/9/Dockerfile)
94 |
95 | - [`5.10.1-rhel-ubi9-slim`, `5.10-rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/rhel-ubi/9/slim/Dockerfile)
96 |
97 | - [`5.10.1-windowsservercore-ltsc2022`, `5.10-windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/53c4d44e4b556d7bab6ff94c80e5bd0444cdc17d/5.10/windows/LTSC2022/Dockerfile)
98 |
99 | - [`5.9.2`, `5.9`, `5.9.2-jammy`, `5.9-jammy`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/ubuntu/22.04/Dockerfile)
100 |
101 | - [`5.9.2-slim`, `5.9-slim`, `5.9.2-jammy-slim`, `5.9-jammy-slim`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/ubuntu/22.04/slim/Dockerfile)
102 |
103 | - [`5.9.2-focal-slim`, `5.9-focal-slim`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/ubuntu/20.04/slim/Dockerfile)
104 |
105 | - [`5.9.2-focal`, `5.9-focal`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/ubuntu/20.04/Dockerfile)
106 |
107 | - [`5.9.2-amazonlinux2`, `5.9-amazonlinux2`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/amazonlinux/2/Dockerfile)
108 |
109 | - [`5.9.2-amazonlinux2-slim`, `5.9-amazonlinux2-slim`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/amazonlinux/2/slim/Dockerfile)
110 |
111 | - [`5.9.2-rhel-ubi9`, `5.9-rhel-ubi9`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/rhel-ubi/9/Dockerfile)
112 |
113 | - [`5.9.2-rhel-ubi9-slim`, `5.9-rhel-ubi9-slim`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/rhel-ubi/9/slim/Dockerfile)
114 |
115 | - [`5.9.2-windowsservercore-ltsc2022`, `5.9-windowsservercore-ltsc2022`](https://github.com/apple/swift-docker/blob/51f0941d5f6d92af9df8aa89fa75841f5036c127/5.9/windows/LTSC2022/Dockerfile)
116 |
117 | # Quick reference (cont.)
118 |
119 | - **Where to file issues**:
120 | [https://bugs.swift.org](https://bugs.swift.org) Component: Docker
121 |
122 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
123 | [`amd64`](https://hub.docker.com/r/amd64/swift/), [`arm64v8`](https://hub.docker.com/r/arm64v8/swift/), [`windows-amd64`](https://hub.docker.com/r/winamd64/swift/)
124 |
125 | - **Published image artifact details**:
126 | [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))
127 | (image metadata, transfer size, etc)
128 |
129 | - **Image updates**:
130 | [official-images repo's `library/swift` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fswift)
131 | [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))
132 |
133 | - **Source of this description**:
134 | [docs repo's `swift/` directory](https://github.com/docker-library/docs/tree/master/swift) ([history](https://github.com/docker-library/docs/commits/master/swift))
135 |
136 | # What is Swift?
137 |
138 | Swift is a high-performance system programming language. It has a clean and modern syntax, offers seamless access to existing C and Objective-C code and frameworks, and is memory safe by default.
139 |
140 | Although inspired by Objective-C and many other languages, Swift is not itself a C-derived language. As a complete and independent language, Swift packages core features like flow control, data structures, and functions, with high-level constructs like objects, protocols, closures, and generics. Swift embraces modules, eliminating the need for headers and the code duplication they entail.
141 |
142 | To learn more about the programming language, visit [swift.org](https://swift.org).
143 |
144 | > [swift.org](https://swift.org/about/)
145 | > [Swift on Github](https://github.com/apple/swift)
146 |
147 | 
148 |
149 | # How to use this image
150 |
151 | ##### Start a REPL
152 |
153 | Swift requires [a little bit of extra security privilege](https://github.com/apple/swift-docker/issues/9#issuecomment-272527182) to run the REPL. The following command creates an ephemeral container, attaches your terminal to it and starts the Swift REPL. A great way to try out pre-release builds!
154 |
155 | ```bash
156 | docker run --cap-add sys_ptrace -it --rm swift swift
157 | ```
158 |
159 | ##### Pull the Docker Image From Docker Hub:
160 |
161 | ```bash
162 | docker pull swift
163 | ```
164 |
165 | ##### Create a Container from the Image and Attach It:
166 |
167 | ```bash
168 | docker run -it --name swiftfun swift /bin/bash
169 | ```
170 |
171 | ##### To Start and Attach Your Image Later:
172 |
173 | Start your image with name `swiftfun`
174 |
175 | ```bash
176 | docker start swiftfun
177 | ```
178 |
179 | and then attach it
180 |
181 | ```bash
182 | docker attach swiftfun
183 | ```
184 |
185 | # Image Variants
186 |
187 | The `swift` images come in many flavors, each designed for a specific use case.
188 |
189 | ## `swift:<version>`
190 |
191 | 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.
192 |
193 | Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian.
194 |
195 | Some of these tags may have names like focal, jammy, or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu.
196 |
197 | ## `swift:<version>-slim`
198 |
199 | This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `swift`. Unless you are working in an environment where *only* the `swift` image will be deployed and you have space constraints, we highly recommend using the default image of this repository.
200 |
201 | ## `swift:<version>-windowsservercore`
202 |
203 | 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.
204 |
205 | For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft:
206 |
207 | - [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server)
208 | - [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10)
209 |
210 | # License
211 |
212 | View [license information](https://swift.org/LICENSE.txt) for the software contained in this image.
213 |
214 | 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).
215 |
216 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `swift/` directory](https://github.com/docker-library/repo-info/tree/master/repos/swift).
217 |
218 | 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.
219 |
```
--------------------------------------------------------------------------------
/cassandra/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "cassandra/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "cassandra/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [the Docker Community](https://github.com/docker-library/cassandra)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`5.0.4`, `5.0`, `5`, `latest`, `5.0.4-jammy`, `5.0-jammy`, `5-jammy`, `jammy`](https://github.com/docker-library/cassandra/blob/0f32c04c976068ddf4b094044bd333ca46d42887/5.0/Dockerfile)
28 |
29 | - [`4.1.8`, `4.1`, `4`, `4.1.8-jammy`, `4.1-jammy`, `4-jammy`](https://github.com/docker-library/cassandra/blob/4acdd8cbbc6f21083e9b8176452a2728fa08f2c7/4.1/Dockerfile)
30 |
31 | - [`4.0.17`, `4.0`, `4.0.17-jammy`, `4.0-jammy`](https://github.com/docker-library/cassandra/blob/4acdd8cbbc6f21083e9b8176452a2728fa08f2c7/4.0/Dockerfile)
32 |
33 | - [`3.11.19`, `3.11`, `3`, `3.11.19-jammy`, `3.11-jammy`, `3-jammy`](https://github.com/docker-library/cassandra/blob/4acdd8cbbc6f21083e9b8176452a2728fa08f2c7/3.11/Dockerfile)
34 |
35 | - [`3.0.32`, `3.0`, `3.0.32-jammy`, `3.0-jammy`](https://github.com/docker-library/cassandra/blob/4acdd8cbbc6f21083e9b8176452a2728fa08f2c7/3.0/Dockerfile)
36 |
37 | # Quick reference (cont.)
38 |
39 | - **Where to file issues**:
40 | [https://github.com/docker-library/cassandra/issues](https://github.com/docker-library/cassandra/issues?q=)
41 |
42 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
43 | [`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/)
44 |
45 | - **Published image artifact details**:
46 | [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))
47 | (image metadata, transfer size, etc)
48 |
49 | - **Image updates**:
50 | [official-images repo's `library/cassandra` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcassandra)
51 | [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))
52 |
53 | - **Source of this description**:
54 | [docs repo's `cassandra/` directory](https://github.com/docker-library/docs/tree/master/cassandra) ([history](https://github.com/docker-library/docs/commits/master/cassandra))
55 |
56 | # What is Cassandra?
57 |
58 | Apache Cassandra is an open source distributed database management system designed to handle large amounts of data across many commodity servers, providing high availability with no single point of failure. Cassandra offers robust support for clusters spanning multiple datacenters, with asynchronous masterless replication allowing low latency operations for all clients.
59 |
60 | > [wikipedia.org/wiki/Apache_Cassandra](https://en.wikipedia.org/wiki/Apache_Cassandra)
61 |
62 | 
63 |
64 | # How to use this image
65 |
66 | ## Start a `cassandra` server instance
67 |
68 | Starting a Cassandra instance is simple:
69 |
70 | ```console
71 | $ docker run --name some-cassandra --network some-network -d cassandra:tag
72 | ```
73 |
74 | ... where `some-cassandra` is the name you want to assign to your container and `tag` is the tag specifying the Cassandra version you want. See the list above for relevant tags.
75 |
76 | ## Make a cluster
77 |
78 | Using the environment variables documented below, there are two cluster scenarios: instances on the same machine and instances on separate machines. For the same machine, start the instance as described above. To start other instances, just tell each new node where the first is.
79 |
80 | ```console
81 | $ docker run --name some-cassandra2 -d --network some-network -e CASSANDRA_SEEDS=some-cassandra cassandra:tag
82 | ```
83 |
84 | For separate machines (ie, two VMs on a cloud provider), you need to tell Cassandra what IP address to advertise to the other nodes (since the address of the container is behind the docker bridge).
85 |
86 | Assuming the first machine's IP address is `10.42.42.42` and the second's is `10.43.43.43`, start the first with exposed gossip port:
87 |
88 | ```console
89 | $ docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.42.42.42 -p 7000:7000 cassandra:tag
90 | ```
91 |
92 | Then start a Cassandra container on the second machine, with the exposed gossip port and seed pointing to the first machine:
93 |
94 | ```console
95 | $ docker run --name some-cassandra -d -e CASSANDRA_BROADCAST_ADDRESS=10.43.43.43 -p 7000:7000 -e CASSANDRA_SEEDS=10.42.42.42 cassandra:tag
96 | ```
97 |
98 | ## Connect to Cassandra from `cqlsh`
99 |
100 | The following command starts another Cassandra container instance and runs `cqlsh` (Cassandra Query Language Shell) against your original Cassandra container, allowing you to execute CQL statements against your database instance:
101 |
102 | ```console
103 | $ docker run -it --network some-network --rm cassandra cqlsh some-cassandra
104 | ```
105 |
106 | More information about the CQL can be found in the [Cassandra documentation](https://cassandra.apache.org/doc/latest/cql/index.html).
107 |
108 | ## Container shell access and viewing Cassandra logs
109 |
110 | 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 `cassandra` container:
111 |
112 | ```console
113 | $ docker exec -it some-cassandra bash
114 | ```
115 |
116 | The Cassandra Server log is available through Docker's container log:
117 |
118 | ```console
119 | $ docker logs some-cassandra
120 | ```
121 |
122 | ## Configuring Cassandra
123 |
124 | The best way to provide configuration to the `cassandra` image is to provide a custom `/etc/cassandra/cassandra.yaml` file. There are many ways to provide this file to the container (via short `Dockerfile` with `FROM` + `COPY`, via [Docker Configs](https://docs.docker.com/engine/swarm/configs/), via runtime bind-mount, etc), the details of which are left as an exercise for the reader.
125 |
126 | To use a different file name (for example, to avoid all image-provided configuration behavior), use `-Dcassandra.config=/path/to/cassandra.yaml` as an argument to the image (as in, `docker run ... cassandra -Dcassandra.config=/path/to/cassandra.yaml`).
127 |
128 | There are a small number of environment variables supported by the image which will modify `/etc/cassandra/cassandra.yaml` in some way (but the script is modifying YAML, so is naturally fragile):
129 |
130 | - `CASSANDRA_LISTEN_ADDRESS`: This variable is for controlling which IP address to listen for incoming connections on. The default value is `auto`, which will set the [`listen_address`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__listen_address) option in `cassandra.yaml` to the IP address of the container as it starts. This default should work in most use cases.
131 |
132 | - `CASSANDRA_BROADCAST_ADDRESS`: This variable is for controlling which IP address to advertise to other nodes. The default value is the value of `CASSANDRA_LISTEN_ADDRESS`. It will set the [`broadcast_address`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__broadcast_address) and [`broadcast_rpc_address`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__broadcast_rpc_address) options in `cassandra.yaml`.
133 |
134 | - `CASSANDRA_RPC_ADDRESS`: This variable is for controlling which address to bind the thrift rpc server to. If you do not specify an address, the wildcard address (`0.0.0.0`) will be used. It will set the [`rpc_address`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__rpc_address) option in `cassandra.yaml`.
135 |
136 | - `CASSANDRA_START_RPC`: This variable is for controlling if the thrift rpc server is started. It will set the [`start_rpc`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__start_rpc) option in `cassandra.yaml`.
137 |
138 | - `CASSANDRA_SEEDS`: This variable is the comma-separated list of IP addresses used by gossip for bootstrapping new nodes joining a cluster. It will set the `seeds` value of the [`seed_provider`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__seed_provider) option in `cassandra.yaml`. The `CASSANDRA_BROADCAST_ADDRESS` will be added the seeds passed in so that the server will talk to itself as well.
139 |
140 | - `CASSANDRA_CLUSTER_NAME`: This variable sets the name of the cluster and must be the same for all nodes in the cluster. It will set the [`cluster_name`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__cluster_name) option of `cassandra.yaml`.
141 |
142 | - `CASSANDRA_NUM_TOKENS`: This variable sets number of tokens for this node. It will set the [`num_tokens`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__num_tokens) option of `cassandra.yaml`.
143 |
144 | - `CASSANDRA_DC`: This variable sets the datacenter name of this node. It will set the [`dc`](http://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archsnitchGossipPF.html) option of `cassandra-rackdc.properties`. You must set `CASSANDRA_ENDPOINT_SNITCH` to use the ["GossipingPropertyFileSnitch"](https://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archsnitchGossipPF.html) in order for Cassandra to apply `cassandra-rackdc.properties`, otherwise this variable will have no effect.
145 |
146 | - `CASSANDRA_RACK`: This variable sets the rack name of this node. It will set the [`rack`](http://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archsnitchGossipPF.html) option of `cassandra-rackdc.properties`. You must set `CASSANDRA_ENDPOINT_SNITCH` to use the ["GossipingPropertyFileSnitch"](https://docs.datastax.com/en/cassandra/3.0/cassandra/architecture/archsnitchGossipPF.html) in order for Cassandra to apply `cassandra-rackdc.properties`, otherwise this variable will have no effect.
147 |
148 | - `CASSANDRA_ENDPOINT_SNITCH`: This variable sets the snitch implementation this node will use. It will set the [`endpoint_snitch`](http://docs.datastax.com/en/cassandra/3.0/cassandra/configuration/configCassandra_yaml.html?scroll=configCassandra_yaml__endpoint_snitch) option of `cassandra.yml`.
149 |
150 | # Caveats
151 |
152 | ## Where to Store Data
153 |
154 | Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `cassandra` images to familiarize themselves with the options available, including:
155 |
156 | - 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.
157 | - 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.
158 |
159 | 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:
160 |
161 | 1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`.
162 | 2. Start your `cassandra` container like this:
163 |
164 | ```console
165 | $ docker run --name some-cassandra -v /my/own/datadir:/var/lib/cassandra -d cassandra:tag
166 | ```
167 |
168 | The `-v /my/own/datadir:/var/lib/cassandra` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/cassandra` inside the container, where Cassandra by default will write its data files.
169 |
170 | ## No connections until Cassandra init completes
171 |
172 | 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.
173 |
174 | # License
175 |
176 | View [license information](https://git-wip-us.apache.org/repos/asf?p=cassandra.git;a=blob;f=LICENSE.txt;hb=cassandra-3.11.1) for the software contained in this image.
177 |
178 | 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).
179 |
180 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `cassandra/` directory](https://github.com/docker-library/repo-info/tree/master/repos/cassandra).
181 |
182 | 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.
183 |
```
--------------------------------------------------------------------------------
/couchdb/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "couchdb/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "couchdb/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [Apache CouchDB](https://github.com/apache/couchdb-docker)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`latest`, `3.5.0`, `3.5`, `3`](https://github.com/apache/couchdb-docker/blob/2660034027fec97097f88afcc6f8a4416c364b24/3.5.0/Dockerfile)
28 |
29 | - [`3.5.0-nouveau`, `3.5-nouveau`, `3-nouveau`](https://github.com/apache/couchdb-docker/blob/2660034027fec97097f88afcc6f8a4416c364b24/3.5.0-nouveau/Dockerfile)
30 |
31 | - [`3.4.3`, `3.4`](https://github.com/apache/couchdb-docker/blob/2660034027fec97097f88afcc6f8a4416c364b24/3.4.3/Dockerfile)
32 |
33 | - [`3.4.3-nouveau`, `3.4-nouveau`](https://github.com/apache/couchdb-docker/blob/2660034027fec97097f88afcc6f8a4416c364b24/3.4.3-nouveau/Dockerfile)
34 |
35 | # Quick reference (cont.)
36 |
37 | - **Where to file issues**:
38 | [https://github.com/apache/couchdb-docker/issues](https://github.com/apache/couchdb-docker/issues?q=)
39 |
40 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
41 | [`amd64`](https://hub.docker.com/r/amd64/couchdb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/couchdb/), [`s390x`](https://hub.docker.com/r/s390x/couchdb/)
42 |
43 | - **Published image artifact details**:
44 | [repo-info repo's `repos/couchdb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/couchdb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/couchdb))
45 | (image metadata, transfer size, etc)
46 |
47 | - **Image updates**:
48 | [official-images repo's `library/couchdb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcouchdb)
49 | [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))
50 |
51 | - **Source of this description**:
52 | [docs repo's `couchdb/` directory](https://github.com/docker-library/docs/tree/master/couchdb) ([history](https://github.com/docker-library/docs/commits/master/couchdb))
53 |
54 | # What is Apache CouchDB?
55 |
56 | Apache CouchDB™ lets you access your data where you need it by defining the Couch Replication Protocol that is implemented by a variety of projects and products that span every imaginable computing environment from globally distributed server-clusters, over mobile phones to web browsers. Software that is compatible with the Couch Replication Protocol include PouchDB and Cloudant.
57 |
58 | Store your data safely, on your own servers, or with any leading cloud provider. Your web- and native applications love CouchDB, because it speaks JSON natively and supports binary for all your data storage needs. The Couch Replication Protocol lets your data flow seamlessly between server clusters to mobile phones and web browsers, enabling a compelling, offline-first user-experience while maintaining high performance and strong reliability. CouchDB comes with a developer-friendly query language, and optionally MapReduce for simple, efficient, and comprehensive data retrieval.
59 |
60 | > [couchdb.apache.org](https://couchdb.apache.org)
61 |
62 | 
63 |
64 | # How to use this image
65 |
66 | ## Start a CouchDB instance
67 |
68 | Starting a CouchDB instance is simple:
69 |
70 | ```console
71 | $ docker run -d --name my-couchdb couchdb:tag
72 | ```
73 |
74 | where `my-couchdb` is the name you want to assign to your container, and `tag` is the tag specifying the CouchDB version you want. See the list above for relevant tags.
75 |
76 | ## Connect to CouchDB from an application in another Docker container
77 |
78 | This image exposes the standard CouchDB port `5984`, so standard container linking will make it automatically available to the linked containers. Start your application container like this in order to link it to the Cassandra container:
79 |
80 | ```console
81 | $ docker run --name my-couchdb-app --link my-couchdb:couchdb -d app-that-uses-couchdb
82 | ```
83 |
84 | ## Exposing CouchDB to the outside world
85 |
86 | If you want to expose the port to the outside world, run
87 |
88 | ```console
89 | $ docker run -p 5984:5984 -d couchdb
90 | ```
91 |
92 | *WARNING*: Do not do this until you have established an admin user and setup permissions correctly on any databases you have created.
93 |
94 | If you intend to network this CouchDB instance with others in a cluster, you will need to map additional ports; see the [official CouchDB documentation](http://docs.couchdb.org/en/stable/setup/cluster.html) for details.
95 |
96 | ## Make a cluster
97 |
98 | Start your multiple CouchDB instances, then follow the Setup Wizard in the [official CouchDB documentation](http://docs.couchdb.org/en/stable/setup/cluster.html) to complete the process.
99 |
100 | For a CouchDB cluster you need to provide the `NODENAME` setting as well as the erlang cookie. Settings to Erlang can be made with the environment variable `ERL_FLAGS`, e.g. `ERL_FLAGS=-setcookie "brumbrum"`. Further information can be found [here](http://docs.couchdb.org/en/stable/cluster/setup.html).
101 |
102 | There is also a [Kubernetes helm chart](https://github.com/helm/charts/tree/master/incubator/couchdb) available.
103 |
104 | ## Container shell access, `remsh`, and viewing logs
105 |
106 | 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 `couchdb` container:
107 |
108 | ```console
109 | $ docker exec -it my-couchdb bash
110 | ```
111 |
112 | If you need direct access to the Erlang runtime:
113 |
114 | ```console
115 | $ docker exec -it my-couchdb /opt/couchdb/bin/remsh
116 | ```
117 |
118 | The CouchDB log is available through Docker's container log:
119 |
120 | ```console
121 | $ docker logs my-couchdb
122 | ```
123 |
124 | ## Configuring CouchDB
125 |
126 | The best way to provide configuration to the `couchdb` image is to provide a custom `ini` file to CouchDB, preferably stored in the `/opt/couchdb/etc/local.d/` directory. There are many ways to provide this file to the container (via short `Dockerfile` with `FROM` + `COPY`, via [Docker Configs](https://docs.docker.com/engine/swarm/configs/), via runtime bind-mount, etc), the details of which are left as an exercise for the reader.
127 |
128 | Keep in mind that run-time reconfiguration of CouchDB will overwrite the [last file in the configuration chain](http://docs.couchdb.org/en/stable/config/intro.html#configuration-files), and that this Docker container creates the `/opt/couchdb/etc/local.d/docker.ini` file at startup.
129 |
130 | CouchDB also uses `/opt/couchdb/etc/vm.args` to store Erlang runtime-specific changes. Changing these values is less common. If you need to change the epmd port, for instance, you will want to bind mount this file as well. (Note: files cannot be bind-mounted on Windows hosts.)
131 |
132 | In addition, a few environment variables are provided to set very common parameters:
133 |
134 | - `COUCHDB_USER` and `COUCHDB_PASSWORD` will create an ini-file based local admin user with the given username and password in the file `/opt/couchdb/etc/local.d/docker.ini`.
135 | - `COUCHDB_SECRET` will set the CouchDB shared cluster secret value, in the file `/opt/couchdb/etc/local.d/docker.ini`.
136 | - `NODENAME` will set the name of the CouchDB node inside the container to `couchdb@${NODENAME}`, in the file `/opt/couchdb/etc/vm.args`. This is used for clustering purposes and can be ignored for single-node setups.
137 | - Erlang Environment Variables like `ERL_FLAGS` will be used by Erlang itself. For a complete list have a look [here](http://erlang.org/doc/man/erl.html#environment-variables)
138 |
139 | # Caveats
140 |
141 | ## Where to Store Data
142 |
143 | Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `couchdb` images to familiarize themselves with the options available, including:
144 |
145 | - 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.
146 | - 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.
147 |
148 | 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:
149 |
150 | 1. Create a data directory on a suitable volume on your host system, e.g. `/home/couchdb/data`.
151 | 2. Start your `couchdb` container like this:
152 |
153 | ```bash
154 | $ docker run --name some-%%REPO% -v /home/couchdb/data:/opt/couchdb/data -d couchdb:tag
155 | ```
156 |
157 | The `-v /home/couchdb/data:/opt/couchdb/data` part of the command mounts the `/home/couchdb/data` directory from the underlying host system as `/opt/couchdb/data` inside the container, where CouchDB by default will write its data files.
158 |
159 | ## No system databases until the installation is finalized
160 |
161 | Please note that CouchDB no longer autocreates system databases for you, as it is not known at startup time if this is a single-node or clustered CouchDB installation. In a cluster, the databases must only be created once all nodes have been joined together.
162 |
163 | If you use the [Cluster Setup Wizard](http://docs.couchdb.org/en/stable/setup/cluster.html#the-cluster-setup-wizard) or the [Cluster Setup API](http://docs.couchdb.org/en/stable/setup/cluster.html#the-cluster-setup-api), these databases will be created for you when you complete the process.
164 |
165 | If you choose not to use the Cluster Setup wizard or API, you will have to create `_global_changes`, `_replicator` and `_users` manually.
166 |
167 | ## Admin party mode
168 |
169 | The node will also start in [admin party mode](https://docs.couchdb.org/en/stable/intro/security.html#the-admin-party). Be sure to create an admin user! The [Cluster Setup Wizard](http://docs.couchdb.org/en/stable/setup/cluster.html#the-cluster-setup-wizard) or the [Cluster Setup API](http://docs.couchdb.org/en/stable/setup/cluster.html#the-cluster-setup-api) will do this for you.
170 |
171 | You can also use the two environment variables `COUCHDB_USER` and `COUCHDB_PASSWORD` to set up an admin user:
172 |
173 | ```console
174 | $ docker run -e COUCHDB_USER=admin -e COUCHDB_PASSWORD=password -d couchdb
175 | ```
176 |
177 | Note that if you are setting up a clustered CouchDB, you will want to pre-hash this password and use the identical hashed text across all nodes to ensure sessions work correctly when a load balancer is placed in front of the cluster. Hashing can be accomplished by running the container with the `/opt/couchdb/etc/local.d` directory mounted as a volume, allowing CouchDB to hash the password you set, then copying out the hashed version and using this value in the future.
178 |
179 | ## Using a persistent CouchDB configuration file
180 |
181 | The CouchDB configuration is specified in `.ini` files in `/opt/couchdb/etc`. Take a look at the [CouchDB configuration documentation](http://docs.couchdb.org/en/stable/config/index.html) to learn more about CouchDB's configuration structure.
182 |
183 | If you want to use a customized CouchDB configuration, you can create your configuration file in a directory on the host machine and then mount that directory as `/opt/couchdb/etc/local.d` inside the `couchdb` container.
184 |
185 | ```console
186 | $ docker run --name my-couchdb -v /home/couchdb/etc:/opt/couchdb/etc/local.d -d couchdb
187 | ```
188 |
189 | The `-v /home/couchdb/etc:/opt/couchdb/etc/local.d` part of the command mounts the `/home/couchdb/etc` directory from the underlying host system as `/opt/couchdb/etc/local.d` inside the container, where CouchDB by default will write its dynamic configuration files.
190 |
191 | You can also use `couchdb` as the base image for your own couchdb instance and provide your own version of the `local.ini` config file:
192 |
193 | Example Dockerfile:
194 |
195 | ```dockerfile
196 | FROM couchdb
197 |
198 | COPY local.ini /opt/couchdb/etc/
199 | ```
200 |
201 | and then build and run
202 |
203 | ```console
204 | $ docker build -t you/awesome-couchdb .
205 | $ docker run -d -p 5984:5984 you/awesome-couchdb
206 | ```
207 |
208 | Remember that, with this approach, any newly written changes will still appear in the `/opt/couchdb/etc/local.d` directory, so it is still recommended to map this to a host path for persistence.
209 |
210 | ## Logging
211 |
212 | By default containers run from this image only log to `stdout`. You can enable logging to file in the [configuration](http://docs.couchdb.org/en/2.1.0/config/logging.html).
213 |
214 | For example in `local.ini`:
215 |
216 | ```ini
217 | [log]
218 | writer = file
219 | file = /opt/couchdb/log/couch.log
220 | ```
221 |
222 | It is recommended to then mount this path to a directory on the host, as CouchDB logging can be quite voluminous.
223 |
224 | # License
225 |
226 | Apache CouchDB is licensed under the [Apache License](https://github.com/apache/couchdb/blob/master/LICENSE).
227 |
228 | 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).
229 |
230 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `couchdb/` directory](https://github.com/docker-library/repo-info/tree/master/repos/couchdb).
231 |
232 | 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.
233 |
```
--------------------------------------------------------------------------------
/rabbitmq/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "rabbitmq/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "rabbitmq/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [the Docker Community](https://github.com/docker-library/rabbitmq)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`4.1.0`, `4.1`, `4`, `latest`](https://github.com/docker-library/rabbitmq/blob/85ffaf0cfe4310ab046b8ccad93c624c6dffe4bc/4.1/ubuntu/Dockerfile)
28 |
29 | - [`4.1.0-management`, `4.1-management`, `4-management`, `management`](https://github.com/docker-library/rabbitmq/blob/01055a3ed6f0a7a40d4ff1d17d3f0758039e431f/4.1/ubuntu/management/Dockerfile)
30 |
31 | - [`4.1.0-alpine`, `4.1-alpine`, `4-alpine`, `alpine`](https://github.com/docker-library/rabbitmq/blob/85ffaf0cfe4310ab046b8ccad93c624c6dffe4bc/4.1/alpine/Dockerfile)
32 |
33 | - [`4.1.0-management-alpine`, `4.1-management-alpine`, `4-management-alpine`, `management-alpine`](https://github.com/docker-library/rabbitmq/blob/01055a3ed6f0a7a40d4ff1d17d3f0758039e431f/4.1/alpine/management/Dockerfile)
34 |
35 | - [`4.0.9`, `4.0`](https://github.com/docker-library/rabbitmq/blob/101d600e8f6ba9543a7e9dd9e156a2f7972218cf/4.0/ubuntu/Dockerfile)
36 |
37 | - [`4.0.9-management`, `4.0-management`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/4.0/ubuntu/management/Dockerfile)
38 |
39 | - [`4.0.9-alpine`, `4.0-alpine`](https://github.com/docker-library/rabbitmq/blob/101d600e8f6ba9543a7e9dd9e156a2f7972218cf/4.0/alpine/Dockerfile)
40 |
41 | - [`4.0.9-management-alpine`, `4.0-management-alpine`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/4.0/alpine/management/Dockerfile)
42 |
43 | - [`3.13.7`, `3.13`, `3`](https://github.com/docker-library/rabbitmq/blob/42f61ae85d877c377e97c892d97ed4a65f1c7809/3.13/ubuntu/Dockerfile)
44 |
45 | - [`3.13.7-management`, `3.13-management`, `3-management`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/3.13/ubuntu/management/Dockerfile)
46 |
47 | - [`3.13.7-alpine`, `3.13-alpine`, `3-alpine`](https://github.com/docker-library/rabbitmq/blob/42f61ae85d877c377e97c892d97ed4a65f1c7809/3.13/alpine/Dockerfile)
48 |
49 | - [`3.13.7-management-alpine`, `3.13-management-alpine`, `3-management-alpine`](https://github.com/docker-library/rabbitmq/blob/36e4d246e934a96b1c3a920e398f96434f3fc34c/3.13/alpine/management/Dockerfile)
50 |
51 | # Quick reference (cont.)
52 |
53 | - **Where to file issues**:
54 | [https://github.com/docker-library/rabbitmq/issues](https://github.com/docker-library/rabbitmq/issues?q=)
55 |
56 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
57 | [`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/)
58 |
59 | - **Published image artifact details**:
60 | [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))
61 | (image metadata, transfer size, etc)
62 |
63 | - **Image updates**:
64 | [official-images repo's `library/rabbitmq` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frabbitmq)
65 | [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))
66 |
67 | - **Source of this description**:
68 | [docs repo's `rabbitmq/` directory](https://github.com/docker-library/docs/tree/master/rabbitmq) ([history](https://github.com/docker-library/docs/commits/master/rabbitmq))
69 |
70 | # What is RabbitMQ?
71 |
72 | RabbitMQ is open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP). The RabbitMQ server is written in the Erlang programming language and is built on the Open Telecom Platform framework for clustering and failover. Client libraries to interface with the broker are available for all major programming languages.
73 |
74 | > [wikipedia.org/wiki/RabbitMQ](https://en.wikipedia.org/wiki/RabbitMQ)
75 |
76 | 
77 |
78 | # How to use this image
79 |
80 | ## Running the daemon
81 |
82 | One of the important things to note about RabbitMQ is that it stores data based on what it calls the "Node Name", which defaults to the hostname. What this means for usage in Docker is that we should specify `-h`/`--hostname` explicitly for each daemon so that we don't get a random hostname and can keep track of our data:
83 |
84 | ```console
85 | $ docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3
86 | ```
87 |
88 | This will start a RabbitMQ container listening on the default port of 5672. If you give that a minute, then do `docker logs some-rabbit`, you'll see in the output a block similar to:
89 |
90 | =INFO REPORT==== 6-Jul-2015::20:47:02 ===
91 | node : rabbit@my-rabbit
92 | home dir : /var/lib/rabbitmq
93 | config file(s) : /etc/rabbitmq/rabbitmq.config
94 | cookie hash : UoNOcDhfxW9uoZ92wh6BjA==
95 | log : tty
96 | sasl log : tty
97 | database dir : /var/lib/rabbitmq/mnesia/rabbit@my-rabbit
98 |
99 | 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.
100 |
101 | ### Environment Variables
102 |
103 | 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)
104 |
105 | **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.
106 |
107 | ```bash
108 | # Unavailable in 3.9 and up
109 | RABBITMQ_DEFAULT_PASS_FILE
110 | RABBITMQ_DEFAULT_USER_FILE
111 | RABBITMQ_MANAGEMENT_SSL_CACERTFILE
112 | RABBITMQ_MANAGEMENT_SSL_CERTFILE
113 | RABBITMQ_MANAGEMENT_SSL_DEPTH
114 | RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT
115 | RABBITMQ_MANAGEMENT_SSL_KEYFILE
116 | RABBITMQ_MANAGEMENT_SSL_VERIFY
117 | RABBITMQ_SSL_CACERTFILE
118 | RABBITMQ_SSL_CERTFILE
119 | RABBITMQ_SSL_DEPTH
120 | RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT
121 | RABBITMQ_SSL_KEYFILE
122 | RABBITMQ_SSL_VERIFY
123 | RABBITMQ_VM_MEMORY_HIGH_WATERMARK
124 | ```
125 |
126 | ### Setting default user and password
127 |
128 | 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.
129 |
130 | ```console
131 | $ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password rabbitmq:3-management
132 | ```
133 |
134 | 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
135 |
136 | ### Setting default vhost
137 |
138 | If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables:
139 |
140 | ```console
141 | $ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost rabbitmq:3-management
142 | ```
143 |
144 | ### Memory Limits
145 |
146 | 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)).
147 |
148 | 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.
149 |
150 | ### Erlang Cookie
151 |
152 | 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`).
153 |
154 | For example, you can provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)):
155 |
156 | ```console
157 | docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... rabbitmq
158 | ```
159 |
160 | (Note that it will likely also be necessary to specify `uid=XXX,gid=XXX,mode=0600` in order for Erlang in the container to be able to read the cookie file properly. See [Docker's `--secret` documentation for more details](https://docs.docker.com/reference/cli/docker/service/create/#secret).)
161 |
162 | ### Management Plugin
163 |
164 | There is a second set of tags provided with the [management plugin](https://www.rabbitmq.com/management.html) installed and enabled by default, which is available on the standard management port of 15672, with the default username and password of `guest` / `guest`:
165 |
166 | ```console
167 | $ docker run -d --hostname my-rabbit --name some-rabbit rabbitmq:3-management
168 | ```
169 |
170 | You can access it by visiting `http://container-ip:15672` in a browser or, if you need access outside the host, on port 8080:
171 |
172 | ```console
173 | $ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 rabbitmq:3-management
174 | ```
175 |
176 | You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser.
177 |
178 | ### Enabling Plugins
179 |
180 | Creating a Dockerfile will have them enabled at runtime. To see the full list of plugins present on the image `rabbitmq-plugins list`
181 |
182 | ```Dockerfile
183 | FROM rabbitmq:3.8-management
184 | RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp
185 | ```
186 |
187 | You can also mount a file at `/etc/rabbitmq/enabled_plugins` with contents as an erlang list of atoms ending with a period.
188 |
189 | Example `enabled_plugins`
190 |
191 | ```bash
192 | [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].
193 | ```
194 |
195 | ### Additional Configuration
196 |
197 | 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.
198 |
199 | 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.
200 |
201 | ### Health/Liveness/Readiness Checking
202 |
203 | 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.
204 |
205 | # Image Variants
206 |
207 | The `rabbitmq` images come in many flavors, each designed for a specific use case.
208 |
209 | ## `rabbitmq:<version>`
210 |
211 | 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.
212 |
213 | ## `rabbitmq:<version>-alpine`
214 |
215 | 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.
216 |
217 | 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.
218 |
219 | 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).
220 |
221 | # License
222 |
223 | View [license information](https://www.rabbitmq.com/mpl.html) for the software contained in this image.
224 |
225 | 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).
226 |
227 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `rabbitmq/` directory](https://github.com/docker-library/repo-info/tree/master/repos/rabbitmq).
228 |
229 | 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.
230 |
```
--------------------------------------------------------------------------------
/arangodb/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "arangodb/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "arangodb/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [ArangoDB](https://github.com/arangodb/arangodb-docker)
21 |
22 | - **Where to get help**:
23 | [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)
24 |
25 | # Supported tags and respective `Dockerfile` links
26 |
27 | - [`3.11`, `3.11.13`](https://github.com/arangodb/arangodb-docker/blob/52a0ac78f9cbae17665743bfc1e5b7c75329d268/alpine/3.11.13/Dockerfile)
28 |
29 | - [`3.12`, `3.12.4.3`, `latest`](https://github.com/arangodb/arangodb-docker/blob/351d27922fd2060deb86a76a26a99ff1bb2f3c12/alpine/3.12.4.3/Dockerfile)
30 |
31 | # Quick reference (cont.)
32 |
33 | - **Where to file issues**:
34 | [https://github.com/arangodb/arangodb-docker/issues](https://github.com/arangodb/arangodb-docker/issues?q=)
35 |
36 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
37 | [`amd64`](https://hub.docker.com/r/amd64/arangodb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/arangodb/)
38 |
39 | - **Published image artifact details**:
40 | [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))
41 | (image metadata, transfer size, etc)
42 |
43 | - **Image updates**:
44 | [official-images repo's `library/arangodb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Farangodb)
45 | [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))
46 |
47 | - **Source of this description**:
48 | [docs repo's `arangodb/` directory](https://github.com/docker-library/docs/tree/master/arangodb) ([history](https://github.com/docker-library/docs/commits/master/arangodb))
49 |
50 | # What is ArangoDB?
51 |
52 | ArangoDB is a scalable graph database system to drive value from connected data, faster. Native graphs, an integrated search engine, and JSON support, via a single query language.
53 |
54 | ArangoDB runs everywhere: On-prem, in the cloud, and as a managed cloud service: [ArangoGraph Insights Platform](https://cloud.arangodb.com/home).
55 |
56 | > [arangodb.com](https://arangodb.com)
57 |
58 | 
59 |
60 | ## Key Features in ArangoDB
61 |
62 | **Native Graph** Store both data and relationships, for faster queries even with multiple levels of joins and deeper insights that simply aren't possible with traditional relational and document database systems.
63 |
64 | **Document Store** Every node in your graph is a JSON document: flexible, extensible, and easily imported from your existing document database.
65 |
66 | **ArangoSearch** Natively integrated cross-platform indexing, text-search and ranking engine for information retrieval, optimized for speed and memory.
67 |
68 | #### ArangoDB Documentation
69 |
70 | - [Learn ArangoDB](https://arangodb.com/learn/)
71 | - [Documentation](https://docs.arangodb.com/)
72 |
73 | ## How to use this image
74 |
75 | ### Start an ArangoDB instance
76 |
77 | In order to start an ArangoDB instance, run:
78 |
79 | ```console
80 | docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance arangodb
81 | ```
82 |
83 | Docker chooses the processor architecture for the image that matches your host CPU by default. If this is not the case, for example, because you have the `DOCKER_DEFAULT_PLATFORM` environment variable set to a different architecture, you can pass the `--platform` flag to the `docker run` command to specify the appropriate operating system and architecture for the container. For x86-64, use `linux/amd64`. On ARM, especially Apple silicon with no emulation for the required AVX instruction set extension, use `linux/arm64/v8`:
84 |
85 | ```console
86 | docker run -d -p 8529:8529 -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name arangodb-instance --platform linux/arm64/v8 arangodb
87 | ```
88 |
89 | This creates and launches the arangodb Docker instance as a background process. The Identifier of the process is printed. By default, ArangoDB listens on port `8529` for requests.
90 |
91 | In order to get the IP ArangoDB listens on, run:
92 |
93 | ```console
94 | docker inspect --format '{{ .NetworkSettings.IPAddress }}' arangodb-instance
95 | ```
96 |
97 | ### Initialize the server language
98 |
99 | When using Docker, you need to specify the language you want to initialize the server to on the first run in one of the following ways:
100 |
101 | - Set the environment variable `LANG` to a locale in the `docker run` command, e.g. `-e LANG=sv` for a Swedish locale.
102 |
103 | - Use an `arangod.conf` configuration file that sets a language and mount it into the container. For example, create a configuration file on your host system in which you set `icu-language = sv` at the top (before any `[section]`) and then mount the file over the default configuration file like `docker run -v /your-host-path/arangod.conf:/etc/arangodb3/arangod.conf ...`.
104 |
105 | Note that you cannot set the language using only a startup option on the command-line, like `docker run ... arangodb --icu-language sv`.
106 |
107 | If you don't specify a language explicitly, the default is `en_US` up to ArangoDB v3.11 and `en_US_POSIX` from ArangoDB v3.12 onward.
108 |
109 | ### Using the instance
110 |
111 | To use the running instance from an application, link the container:
112 |
113 | ```console
114 | docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --name my-app --link arangodb-instance:db-link arangodb
115 | ```
116 |
117 | This uses the instance named `arangodb-instance` and links it into the application container. The application container contains environment variables, which can be used to access the database.
118 |
119 | DB_LINK_PORT_8529_TCP=tcp://172.17.0.17:8529
120 | DB_LINK_PORT_8529_TCP_ADDR=172.17.0.17
121 | DB_LINK_PORT_8529_TCP_PORT=8529
122 | DB_LINK_PORT_8529_TCP_PROTO=tcp
123 | DB_LINK_NAME=/naughty_ardinghelli/db-link
124 |
125 | ### Exposing the port to the outside world
126 |
127 | If you want to expose the port to the outside world, run:
128 |
129 | ```console
130 | docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d arangodb
131 | ```
132 |
133 | ArangoDB listen on port 8529 for request and the image includes `EXPOSE
134 | 8529`. The `-p 8529:8529` exposes this port on the host.
135 |
136 | ### Choosing an authentication method
137 |
138 | The ArangoDB image provides several authentication methods which can be specified via environment variables (-e) when using `docker run`
139 |
140 | 1. `ARANGO_RANDOM_ROOT_PASSWORD=1`
141 |
142 | Generate a random root password when starting. The password will be printed to stdout (may be inspected later using `docker logs`)
143 |
144 | 2. `ARANGO_NO_AUTH=1`
145 |
146 | Disable authentication. Useful for testing.
147 |
148 | **WARNING** Doing so in production will expose all your data. Make sure that ArangoDB is not directly accessible from the internet!
149 |
150 | 3. `ARANGO_ROOT_PASSWORD=somepassword`
151 |
152 | Specify your own root password.
153 |
154 | Note: this way of specifying logins only applies to single server installations. With clusters you have to provision the users via the root user with empty password once the system is up.
155 |
156 | ### Command line options
157 |
158 | You can pass arguments to the ArangoDB server by appending them to the end of the Docker command:
159 |
160 | ```console
161 | docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 arangodb --help
162 | ```
163 |
164 | The entrypoint script starts the `arangod` binary by default and forwards your arguments.
165 |
166 | You may also start other binaries, such as the ArangoShell:
167 |
168 | ```console
169 | docker run -it arangodb arangosh --server.database myDB ...
170 | ```
171 |
172 | Note that you need to set up networking for containers if `arangod` runs in one container and you want to access it with `arangosh` running in another container. It is easier to execute it in the same container instead. Use `docker ps` to find out the container ID / name of a running container:
173 |
174 | ```console
175 | docker ps
176 | ```
177 |
178 | It prints something similar to the following:
179 |
180 | ```console
181 | CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
182 | 1234567890ab arangodb "/entrypoint.sh aran…" 2 hours ago Up 2 hours 0.0.0.0:8529->8529/tcp jolly_joker
183 | ```
184 |
185 | Then use `docker exec` and the ID / name to run something inside of the existing container:
186 |
187 | ```console
188 | docker exec -it jolly_joker arangosh
189 | ```
190 |
191 | For more information, see the ArangoDB documentation about [Configuration](https://docs.arangodb.com/stable/operations/administration/configuration/).
192 |
193 | ### Limiting resource utilization
194 |
195 | `arangod` checks the following environment variables, which can be used to restrict how much memory and how many CPU cores it should use:
196 |
197 | - `ARANGODB_OVERRIDE_DETECTED_TOTAL_MEMORY` *(introduced in v3.6.3)*
198 |
199 | 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.
200 |
201 | 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).
202 |
203 | Setting this option can in particular be useful in two cases:
204 |
205 | 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.
206 | 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.
207 |
208 | - `ARANGODB_OVERRIDE_DETECTED_NUMBER_OF_CORES` *(introduced in v3.7.1)*
209 |
210 | This variable can be used to override the automatic detection of the number of CPU cores present on the system.
211 |
212 | 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.
213 |
214 | 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.
215 |
216 | ## Persistent Data
217 |
218 | 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.
219 |
220 | 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.
221 |
222 | See `docker inspect --format "{{ .Config.Volumes }}" arangodb` for all volumes.
223 |
224 | A good explanation about persistence and docker container can be found here: [Docker In-depth: Volumes](http://container42.com/2014/11/03/docker-indepth-volumes/), [Why Docker Data Containers are Good](https://medium.com/@ramangupta/why-docker-data-containers-are-good-589b3c6c749e)
225 |
226 | ### Using host directories
227 |
228 | You can map the container's volumes to a directory on the host, so that the data is kept between runs of the container. This path `/tmp/arangodb` is in general not the correct place to store you persistent files - it is just an example!
229 |
230 | ```console
231 | unix> mkdir /tmp/arangodb
232 | unix> docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 -p 8529:8529 -d \
233 | -v /tmp/arangodb:/var/lib/arangodb3 \
234 | arangodb
235 | ```
236 |
237 | This will use the `/tmp/arangodb` directory of the host as database directory for ArangoDB inside the container.
238 |
239 | ### Using a data container
240 |
241 | Alternatively you can create a container holding the data.
242 |
243 | ```console
244 | docker create --name arangodb-persist arangodb true
245 | ```
246 |
247 | And use this data container in your ArangoDB container.
248 |
249 | ```console
250 | docker run -e ARANGO_RANDOM_ROOT_PASSWORD=1 --volumes-from arangodb-persist -p 8529:8529 arangodb
251 | ```
252 |
253 | If want to save a few bytes you can alternatively use [busybox](https://hub.docker.com/_/busybox) or [alpine](https://hub.docker.com/_/alpine) for creating the volume only containers. Please note that you need to provide the used volumes in this case. For example
254 |
255 | ```console
256 | docker run -d --name arangodb-persist -v /var/lib/arangodb3 busybox true
257 | ```
258 |
259 | ### Usage as a base image
260 |
261 | If you are using the image as a base image please make sure to wrap any CMD in the [exec](https://docs.docker.com/reference/dockerfile/#cmd) form. Otherwise the default entrypoint will not do its bootstrapping work.
262 |
263 | When deriving the image, you can control the instantiation via putting files into `/docker-entrypoint-initdb.d/`.
264 |
265 | - `*.sh` - files ending with .sh will be run as a bash shellscript.
266 | - `*.js` - files will be executed with arangosh. You can specify additional arangosh arguments via the `ARANGOSH_ARGS` environment variable.
267 | - `dumps/` - in this directory you can place subdirectories containing database dumps generated using [arangodump](https://docs.arangodb.com/stable/components/tools/arangodump/). They can be restored using [arangorestore](https://docs.arangodb.com/stable/components/tools/arangorestore/).
268 |
269 | # License
270 |
271 | The official Docker images of the ArangoDB Community Edition are governed by the [ArangoDB Community License](https://arangodb.com/community-license/). It limits deployments to a 100 GB on dataset size in production and you cannot use it for any commercial purposes, only internal business purposes.
272 |
273 | The source code of the Community Edition is available under the [Business Source License 1.1 (BUSL-1.1)](https://github.com/arangodb/arangodb/blob/devel/LICENSE). Copying, modification, redistribution, non-commercial use, and commercial use in a non-production context are always allowed. Additionally, you can deploy BUSL-licensed ArangoDB source code for any purpose (including production) as long as you are not creating a commercial derivative work or offering, or are including it in a commercial product, application, or service. On the fourth anniversary of the first publicly available distribution of a specific version, the license changes to the permissive Apache 2.0 open-source license.
274 |
275 | Up to ArangoDB version 3.11, ArangoDB is licensed under the [Apache 2.0 License](https://github.com/arangodb/arangodb/blob/3.11/LICENSE).
276 |
277 | ArangoDB contains [software of third parties under their respective licenses](https://github.com/arangodb/arangodb/blob/devel/LICENSES-OTHER-COMPONENTS.md).
278 |
279 | 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).
280 |
281 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `arangodb/` directory](https://github.com/docker-library/repo-info/tree/master/repos/arangodb).
282 |
283 | 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.
284 |
```