This is page 11 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
--------------------------------------------------------------------------------
/golang/README.md:
--------------------------------------------------------------------------------
```markdown
  1 | <!--
  2 | 
  3 | ********************************************************************************
  4 | 
  5 | WARNING:
  6 | 
  7 |     DO NOT EDIT "golang/README.md"
  8 | 
  9 |     IT IS AUTO-GENERATED
 10 | 
 11 |     (from the other files in "golang/" 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/golang)
 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 | (See ["What's the difference between 'Shared' and 'Simple' tags?" in the FAQ](https://github.com/docker-library/faq#whats-the-difference-between-shared-and-simple-tags).)
 28 | 
 29 | ## Simple Tags
 30 | 
 31 | -	[`1.24.3-bookworm`, `1.24-bookworm`, `1-bookworm`, `bookworm`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/bookworm/Dockerfile)
 32 | 
 33 | -	[`1.24.3-bullseye`, `1.24-bullseye`, `1-bullseye`, `bullseye`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/bullseye/Dockerfile)
 34 | 
 35 | -	[`1.24.3-alpine3.21`, `1.24-alpine3.21`, `1-alpine3.21`, `alpine3.21`, `1.24.3-alpine`, `1.24-alpine`, `1-alpine`, `alpine`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/alpine3.21/Dockerfile)
 36 | 
 37 | -	[`1.24.3-alpine3.20`, `1.24-alpine3.20`, `1-alpine3.20`, `alpine3.20`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/alpine3.20/Dockerfile)
 38 | 
 39 | -	[`1.24.3-windowsservercore-ltsc2025`, `1.24-windowsservercore-ltsc2025`, `1-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-ltsc2025/Dockerfile)
 40 | 
 41 | -	[`1.24.3-windowsservercore-ltsc2022`, `1.24-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-ltsc2022/Dockerfile)
 42 | 
 43 | -	[`1.24.3-windowsservercore-1809`, `1.24-windowsservercore-1809`, `1-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-1809/Dockerfile)
 44 | 
 45 | -	[`1.24.3-nanoserver-ltsc2025`, `1.24-nanoserver-ltsc2025`, `1-nanoserver-ltsc2025`, `nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/nanoserver-ltsc2025/Dockerfile)
 46 | 
 47 | -	[`1.24.3-nanoserver-ltsc2022`, `1.24-nanoserver-ltsc2022`, `1-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/nanoserver-ltsc2022/Dockerfile)
 48 | 
 49 | -	[`1.24.3-nanoserver-1809`, `1.24-nanoserver-1809`, `1-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/nanoserver-1809/Dockerfile)
 50 | 
 51 | -	[`1.23.9-bookworm`, `1.23-bookworm`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/bookworm/Dockerfile)
 52 | 
 53 | -	[`1.23.9-bullseye`, `1.23-bullseye`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/bullseye/Dockerfile)
 54 | 
 55 | -	[`1.23.9-alpine3.21`, `1.23-alpine3.21`, `1.23.9-alpine`, `1.23-alpine`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/alpine3.21/Dockerfile)
 56 | 
 57 | -	[`1.23.9-alpine3.20`, `1.23-alpine3.20`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/alpine3.20/Dockerfile)
 58 | 
 59 | -	[`1.23.9-windowsservercore-ltsc2025`, `1.23-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-ltsc2025/Dockerfile)
 60 | 
 61 | -	[`1.23.9-windowsservercore-ltsc2022`, `1.23-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-ltsc2022/Dockerfile)
 62 | 
 63 | -	[`1.23.9-windowsservercore-1809`, `1.23-windowsservercore-1809`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-1809/Dockerfile)
 64 | 
 65 | -	[`1.23.9-nanoserver-ltsc2025`, `1.23-nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/nanoserver-ltsc2025/Dockerfile)
 66 | 
 67 | -	[`1.23.9-nanoserver-ltsc2022`, `1.23-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/nanoserver-ltsc2022/Dockerfile)
 68 | 
 69 | -	[`1.23.9-nanoserver-1809`, `1.23-nanoserver-1809`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/nanoserver-1809/Dockerfile)
 70 | 
 71 | -	[`tip-20250509-bookworm`, `tip-bookworm`](https://github.com/docker-library/golang/blob/42865173cb4dcd942ff191edf77c33ae6cb836a1/tip/bookworm/Dockerfile)
 72 | 
 73 | -	[`tip-20250509-bullseye`, `tip-bullseye`](https://github.com/docker-library/golang/blob/42865173cb4dcd942ff191edf77c33ae6cb836a1/tip/bullseye/Dockerfile)
 74 | 
 75 | -	[`tip-20250509-alpine3.21`, `tip-alpine3.21`, `tip-20250509-alpine`, `tip-alpine`](https://github.com/docker-library/golang/blob/42865173cb4dcd942ff191edf77c33ae6cb836a1/tip/alpine3.21/Dockerfile)
 76 | 
 77 | -	[`tip-20250509-alpine3.20`, `tip-alpine3.20`](https://github.com/docker-library/golang/blob/42865173cb4dcd942ff191edf77c33ae6cb836a1/tip/alpine3.20/Dockerfile)
 78 | 
 79 | ## Shared Tags
 80 | 
 81 | -	`1.24.3`, `1.24`, `1`, `latest`:
 82 | 
 83 | 	-	[`1.24.3-bookworm`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/bookworm/Dockerfile)
 84 | 	-	[`1.24.3-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-ltsc2025/Dockerfile)
 85 | 	-	[`1.24.3-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-ltsc2022/Dockerfile)
 86 | 	-	[`1.24.3-windowsservercore-1809`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-1809/Dockerfile)
 87 | 
 88 | -	`1.24.3-windowsservercore`, `1.24-windowsservercore`, `1-windowsservercore`, `windowsservercore`:
 89 | 
 90 | 	-	[`1.24.3-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-ltsc2025/Dockerfile)
 91 | 	-	[`1.24.3-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-ltsc2022/Dockerfile)
 92 | 	-	[`1.24.3-windowsservercore-1809`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/windowsservercore-1809/Dockerfile)
 93 | 
 94 | -	`1.24.3-nanoserver`, `1.24-nanoserver`, `1-nanoserver`, `nanoserver`:
 95 | 
 96 | 	-	[`1.24.3-nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/nanoserver-ltsc2025/Dockerfile)
 97 | 	-	[`1.24.3-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/nanoserver-ltsc2022/Dockerfile)
 98 | 	-	[`1.24.3-nanoserver-1809`](https://github.com/docker-library/golang/blob/6f5593131e9bccda9a4e83f858427d4d0d16b58d/1.24/windows/nanoserver-1809/Dockerfile)
 99 | 
100 | -	`1.23.9`, `1.23`:
101 | 
102 | 	-	[`1.23.9-bookworm`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/bookworm/Dockerfile)
103 | 	-	[`1.23.9-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-ltsc2025/Dockerfile)
104 | 	-	[`1.23.9-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-ltsc2022/Dockerfile)
105 | 	-	[`1.23.9-windowsservercore-1809`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-1809/Dockerfile)
106 | 
107 | -	`1.23.9-windowsservercore`, `1.23-windowsservercore`:
108 | 
109 | 	-	[`1.23.9-windowsservercore-ltsc2025`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-ltsc2025/Dockerfile)
110 | 	-	[`1.23.9-windowsservercore-ltsc2022`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-ltsc2022/Dockerfile)
111 | 	-	[`1.23.9-windowsservercore-1809`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/windowsservercore-1809/Dockerfile)
112 | 
113 | -	`1.23.9-nanoserver`, `1.23-nanoserver`:
114 | 
115 | 	-	[`1.23.9-nanoserver-ltsc2025`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/nanoserver-ltsc2025/Dockerfile)
116 | 	-	[`1.23.9-nanoserver-ltsc2022`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/nanoserver-ltsc2022/Dockerfile)
117 | 	-	[`1.23.9-nanoserver-1809`](https://github.com/docker-library/golang/blob/93f44df27b2ca87cc4342447e0179fe0b8f7d226/1.23/windows/nanoserver-1809/Dockerfile)
118 | 
119 | -	`tip-20250509`, `tip`:
120 | 
121 | 	-	[`tip-20250509-bookworm`](https://github.com/docker-library/golang/blob/42865173cb4dcd942ff191edf77c33ae6cb836a1/tip/bookworm/Dockerfile)
122 | 
123 | # Quick reference (cont.)
124 | 
125 | -	**Where to file issues**:  
126 | 	[https://github.com/docker-library/golang/issues](https://github.com/docker-library/golang/issues?q=)
127 | 
128 | -	**Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))  
129 | 	[`amd64`](https://hub.docker.com/r/amd64/golang/), [`arm32v6`](https://hub.docker.com/r/arm32v6/golang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/golang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/golang/), [`i386`](https://hub.docker.com/r/i386/golang/), [`mips64le`](https://hub.docker.com/r/mips64le/golang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/golang/), [`riscv64`](https://hub.docker.com/r/riscv64/golang/), [`s390x`](https://hub.docker.com/r/s390x/golang/), [`windows-amd64`](https://hub.docker.com/r/winamd64/golang/)
130 | 
131 | -	**Published image artifact details**:  
132 | 	[repo-info repo's `repos/golang/` directory](https://github.com/docker-library/repo-info/blob/master/repos/golang) ([history](https://github.com/docker-library/repo-info/commits/master/repos/golang))  
133 | 	(image metadata, transfer size, etc)
134 | 
135 | -	**Image updates**:  
136 | 	[official-images repo's `library/golang` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgolang)  
137 | 	[official-images repo's `library/golang` file](https://github.com/docker-library/official-images/blob/master/library/golang) ([history](https://github.com/docker-library/official-images/commits/master/library/golang))
138 | 
139 | -	**Source of this description**:  
140 | 	[docs repo's `golang/` directory](https://github.com/docker-library/docs/tree/master/golang) ([history](https://github.com/docker-library/docs/commits/master/golang))
141 | 
142 | # What is Go?
143 | 
144 | Go (a.k.a., Golang) is a programming language first developed at Google. It is a statically-typed language with syntax loosely derived from C, but with additional features such as garbage collection, type safety, some dynamic-typing capabilities, additional built-in types (e.g., variable-length arrays and key-value maps), and a large standard library.
145 | 
146 | > [wikipedia.org/wiki/Go_(programming_language)](http://en.wikipedia.org/wiki/Go_%28programming_language%29)
147 | 
148 | 
149 | 
150 | # How to use this image
151 | 
152 | **Note:** `/go` is world-writable to allow flexibility in the user which runs the container (for example, in a container started with `--user 1000:1000`, running `go get github.com/example/...` into the default `$GOPATH` will succeed). While the `777` directory would be insecure on a regular host setup, there are not typically other processes or users inside the container, so this is equivalent to `700` for Docker usage, but allowing for `--user` flexibility.
153 | 
154 | ## Start a Go instance in your app
155 | 
156 | The most straightforward way to use this image is to use a Go container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project (assuming it uses `go.mod` for dependency management):
157 | 
158 | ```dockerfile
159 | FROM golang:1.24
160 | 
161 | WORKDIR /usr/src/app
162 | 
163 | # pre-copy/cache go.mod for pre-downloading dependencies and only redownloading them in subsequent builds if they change
164 | COPY go.mod go.sum ./
165 | RUN go mod download
166 | 
167 | COPY . .
168 | RUN go build -v -o /usr/local/bin/app ./...
169 | 
170 | CMD ["app"]
171 | ```
172 | 
173 | You can then build and run the Docker image:
174 | 
175 | ```console
176 | $ docker build -t my-golang-app .
177 | $ docker run -it --rm --name my-running-app my-golang-app
178 | ```
179 | 
180 | ## Compile your app inside the Docker container
181 | 
182 | There may be occasions where it is not appropriate to run your app inside a container. To compile, but not run your app inside the Docker instance, you can write something like:
183 | 
184 | ```console
185 | $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.24 go build -v
186 | ```
187 | 
188 | This will add your current directory as a volume to the container, set the working directory to the volume, and run the command `go build` which will tell go to compile the project in the working directory and output the executable to `myapp`. Alternatively, if you have a `Makefile`, you can run the `make` command inside your container.
189 | 
190 | ```console
191 | $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.24 make
192 | ```
193 | 
194 | ## Cross-compile your app inside the Docker container
195 | 
196 | If you need to compile your application for a platform other than `linux/amd64` (such as `windows/386`):
197 | 
198 | ```console
199 | $ docker run --rm -v "$PWD":/usr/src/myapp -w /usr/src/myapp -e GOOS=windows -e GOARCH=386 golang:1.24 go build -v
200 | ```
201 | 
202 | Alternatively, you can build for multiple platforms at once:
203 | 
204 | ```console
205 | $ docker run --rm -it -v "$PWD":/usr/src/myapp -w /usr/src/myapp golang:1.24 bash
206 | $ for GOOS in darwin linux; do
207 | >   for GOARCH in 386 amd64; do
208 | >     export GOOS GOARCH
209 | >     go build -v -o myapp-$GOOS-$GOARCH
210 | >   done
211 | > done
212 | ```
213 | 
214 | ## Git LFS
215 | 
216 | If downloading your dependencies results in an error like "checksum mismatch", you should check whether they are using [Git LFS](https://git-lfs.com/) (and thus need it installed for downloading them and calculating correct `go.sum` values).
217 | 
218 | # Image Variants
219 | 
220 | The `golang` images come in many flavors, each designed for a specific use case.
221 | 
222 | ## `golang:<version>`
223 | 
224 | 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.
225 | 
226 | 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.
227 | 
228 | ## `golang:<version>-alpine`
229 | 
230 | 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.
231 | 
232 | This variant is highly experimental, and *not* officially supported by the Go project (see [golang/go#19938](https://github.com/golang/go/issues/19938) for details).
233 | 
234 | The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), which can lead to unexpected behavior. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
235 | 
236 | To minimize image size, additional related tools (such as `git`, `gcc`, or `bash`) are not included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar). See also [docker-library/golang#250 (comment)](https://github.com/docker-library/golang/issues/250#issuecomment-451201761) for a longer explanation.
237 | 
238 | ## `golang:<version>-windowsservercore`
239 | 
240 | 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.
241 | 
242 | For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft:
243 | 
244 | -	[Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server)
245 | -	[Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10)
246 | 
247 | ## `golang:<version>-tip`
248 | 
249 | The term "tip" in the Go community is used to refer to the latest development branch ([a leftover convention from previously using `hg` for version control](https://github.com/golang/build/blob/6383021611af0e07cbf0a60222e066662557c796/cmd/coordinator/internal/legacydash/build.go#L313-L314)).
250 | 
251 | These tags contains builds of Go's latest development branch, and they are updated on a ~weekly cadence.
252 | 
253 | # License
254 | 
255 | View [license information](http://golang.org/LICENSE) for the software contained in this image.
256 | 
257 | 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).
258 | 
259 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `golang/` directory](https://github.com/docker-library/repo-info/tree/master/repos/golang).
260 | 
261 | 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.
262 | 
```
--------------------------------------------------------------------------------
/phpmyadmin/README.md:
--------------------------------------------------------------------------------
```markdown
  1 | <!--
  2 | 
  3 | ********************************************************************************
  4 | 
  5 | WARNING:
  6 | 
  7 |     DO NOT EDIT "phpmyadmin/README.md"
  8 | 
  9 |     IT IS AUTO-GENERATED
 10 | 
 11 |     (from the other files in "phpmyadmin/" combined with a set of templates)
 12 | 
 13 | ********************************************************************************
 14 | 
 15 | -->
 16 | 
 17 | # Quick reference
 18 | 
 19 | -	**Maintained by**:  
 20 | 	[phpMyAdmin](https://github.com/phpmyadmin/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 | -	[`5.2.2-apache`, `5.2-apache`, `5-apache`, `apache`, `5.2.2`, `5.2`, `5`, `latest`](https://github.com/phpmyadmin/docker/blob/188a0e35423fb615db47e6a0a8209fe7288eb2ed/apache/Dockerfile)
 28 | 
 29 | -	[`5.2.2-fpm`, `5.2-fpm`, `5-fpm`, `fpm`](https://github.com/phpmyadmin/docker/blob/188a0e35423fb615db47e6a0a8209fe7288eb2ed/fpm/Dockerfile)
 30 | 
 31 | -	[`5.2.2-fpm-alpine`, `5.2-fpm-alpine`, `5-fpm-alpine`, `fpm-alpine`](https://github.com/phpmyadmin/docker/blob/216be795f7a1a60c2c27ff5d00b5c8476771e1d1/fpm-alpine/Dockerfile)
 32 | 
 33 | # Quick reference (cont.)
 34 | 
 35 | -	**Where to file issues**:  
 36 | 	[https://github.com/phpmyadmin/docker/issues](https://github.com/phpmyadmin/docker/issues?q=)
 37 | 
 38 | -	**Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))  
 39 | 	[`amd64`](https://hub.docker.com/r/amd64/phpmyadmin/), [`arm32v5`](https://hub.docker.com/r/arm32v5/phpmyadmin/), [`arm32v6`](https://hub.docker.com/r/arm32v6/phpmyadmin/), [`arm32v7`](https://hub.docker.com/r/arm32v7/phpmyadmin/), [`arm64v8`](https://hub.docker.com/r/arm64v8/phpmyadmin/), [`i386`](https://hub.docker.com/r/i386/phpmyadmin/), [`mips64le`](https://hub.docker.com/r/mips64le/phpmyadmin/), [`ppc64le`](https://hub.docker.com/r/ppc64le/phpmyadmin/), [`riscv64`](https://hub.docker.com/r/riscv64/phpmyadmin/), [`s390x`](https://hub.docker.com/r/s390x/phpmyadmin/)
 40 | 
 41 | -	**Published image artifact details**:  
 42 | 	[repo-info repo's `repos/phpmyadmin/` directory](https://github.com/docker-library/repo-info/blob/master/repos/phpmyadmin) ([history](https://github.com/docker-library/repo-info/commits/master/repos/phpmyadmin))  
 43 | 	(image metadata, transfer size, etc)
 44 | 
 45 | -	**Image updates**:  
 46 | 	[official-images repo's `library/phpmyadmin` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphpmyadmin)  
 47 | 	[official-images repo's `library/phpmyadmin` file](https://github.com/docker-library/official-images/blob/master/library/phpmyadmin) ([history](https://github.com/docker-library/official-images/commits/master/library/phpmyadmin))
 48 | 
 49 | -	**Source of this description**:  
 50 | 	[docs repo's `phpmyadmin/` directory](https://github.com/docker-library/docs/tree/master/phpmyadmin) ([history](https://github.com/docker-library/docs/commits/master/phpmyadmin))
 51 | 
 52 | # What is phpMyAdmin?
 53 | 
 54 | phpMyAdmin is a free software tool written in PHP, intended to handle the administration of MySQL over the Web. phpMyAdmin supports a wide range of operations on MySQL and MariaDB. Frequently used operations (managing databases, tables, columns, relations, indexes, users, permissions, etc) can be performed via the user interface, while you still have the ability to directly execute any SQL statement.
 55 | 
 56 | Run phpMyAdmin with Alpine, Apache and PHP FPM.
 57 | 
 58 | 
 59 | 
 60 | # How to use this image
 61 | 
 62 | All of the following examples will bring you phpMyAdmin on `http://localhost:8080` where you can enjoy your happy MySQL and MariaDB administration.
 63 | 
 64 | ## Credentials
 65 | 
 66 | phpMyAdmin connects using your MySQL server credentials. Please check your corresponding database server image for information on the default username and password or how to specify your own custom credentials during installation.
 67 | 
 68 | The official MySQL and MariaDB images use the following environment variables to define these:
 69 | 
 70 | -	`MYSQL_ROOT_PASSWORD` - This variable is mandatory and specifies the password that will be set for the `root` superuser account.
 71 | -	`MYSQL_USER`, `MYSQL_PASSWORD` - These variables are optional, used in conjunction to create a new user and to set that user's password.
 72 | 
 73 | ## Supported Docker Hub tags
 74 | 
 75 | The following tags are available:
 76 | 
 77 | -	`latest`, `fpm`, and `fpm-alpine` are always the most recent released version
 78 | -	Major versions, such as `5`, `5-fpm`, and `5-fpm-alpine`
 79 | -	Specific minor versions, such as `5.0`, `5.0-fpm`, and `5-fpm-alpine`
 80 | -	Specific patch versions, such as `5.0.0`, `5.0.0-fpm`, and `5.0.0-fpm-alpine`. Note that, on rare occasion, there may be an intermediary "docker-only" release, such as 4.9.2-1
 81 | 
 82 | A complete list of tags is [available at Docker Hub](https://hub.docker.com/_/phpmyadmin?tab=tags)
 83 | 
 84 | ## Image variants
 85 | 
 86 | We provide three variations:
 87 | 
 88 | -	"apache" includes a full Apache webserver with PHP and includes everything needed to work out of the box. This is the default when only a version number is requested.
 89 | -	"fpm" only starts a PHP FPM container. Use this variant if you already have a separate webserver. This includes more tools and is therefore a larger image than the "fpm-alpine" variation.
 90 | -	"fpm-alpine" has a very small footprint. It is based on Alpine Linux and only starts a PHP FPM process. Use this variant if you already have a separate webserver. If you need more tools that are not available on Alpine Linux, use the fpm image instead.
 91 | 
 92 | ## Usage with linked server
 93 | 
 94 | First you need to run a MySQL or MariaDB server in Docker, and the phpMyAdmin image needs to be linked to the running database container:
 95 | 
 96 | ```sh
 97 | docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 phpmyadmin
 98 | ```
 99 | 
100 | ## Usage with external server
101 | 
102 | You can specify a MySQL host in the `PMA_HOST` environment variable. You can also use `PMA_PORT` to specify the port of the server in case it's not the default one:
103 | 
104 | ```sh
105 | docker run --name phpmyadmin -d -e PMA_HOST=dbhost -p 8080:80 phpmyadmin
106 | ```
107 | 
108 | ## Usage with arbitrary server
109 | 
110 | You can use arbitrary servers by adding the environment variable `PMA_ARBITRARY=1` to the startup command:
111 | 
112 | ```sh
113 | docker run --name phpmyadmin -d -e PMA_ARBITRARY=1 -p 8080:80 phpmyadmin
114 | ```
115 | 
116 | ## Usage with `docker compose` and an arbitrary server
117 | 
118 | This will run phpMyAdmin with the arbitrary server option - allowing you to specify any MySQL/MariaDB server on the login page.
119 | 
120 | ... via [`docker compose`](https://github.com/docker/compose)
121 | 
122 | Example `compose.yaml` for `phpmyadmin`:
123 | 
124 | ```yaml
125 | services:
126 |   db:
127 |     image: mariadb:10.11
128 |     restart: always
129 |     environment:
130 |       MYSQL_ROOT_PASSWORD: notSecureChangeMe
131 | 
132 |   phpmyadmin:
133 |     image: phpmyadmin
134 |     restart: always
135 |     ports:
136 |       - 8080:80
137 |     environment:
138 |       - PMA_ARBITRARY=1
139 | ```
140 | 
141 | ## Adding Custom Configuration
142 | 
143 | You can add your own custom config.inc.php settings (such as Configuration Storage setup) by creating a file named `config.user.inc.php` with the various user defined settings in it, and then linking it into the container using:
144 | 
145 | ```sh
146 | -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php
147 | ```
148 | 
149 | On the `docker run` line like this:
150 | 
151 | ```sh
152 | docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/config.user.inc.php:/etc/phpmyadmin/config.user.inc.php phpmyadmin
153 | ```
154 | 
155 | Be sure to have `<?php` as your first line of the configuration file or the contents will not be detected as PHP code.
156 | 
157 | Example:
158 | 
159 | ```php
160 | <?php
161 | 
162 | $cfg['ShowPhpInfo'] = true; // Adds a link to phpinfo() on the home page
163 | ```
164 | 
165 | See the following links for config file information:
166 | 
167 | -	https://docs.phpmyadmin.net/en/latest/config.html#config
168 | -	https://docs.phpmyadmin.net/en/latest/setup.html
169 | 
170 | ## Adding custom configuration in `/etc/phpmyadmin/conf.d`
171 | 
172 | you can also consider storing your custom configuration files in the folder `/etc/phpmyadmin/conf.d`, which is very suitable for managing multiple phpMyAdmin configuration files for different hosts,Then you can create `server-1.php`, `server-2.php`, or any file name you want, and store them in the conf.d directory mounted on the host.
173 | 
174 | On the `docker run` line like this:
175 | 
176 | ```sh
177 | docker run --name phpmyadmin -d --link mysql_db_server:db -p 8080:80 -v /some/local/directory/conf.d:/etc/phpmyadmin/conf.d:ro phpmyadmin
178 | ```
179 | 
180 | ## Usage behind a reverse proxy
181 | 
182 | Set the variable `PMA_ABSOLUTE_URI` to the fully-qualified path (`https://pma.example.net/`) where the reverse proxy makes phpMyAdmin available.
183 | 
184 | ## Sessions persistence
185 | 
186 | In order to keep your sessions active between container updates you will need to mount the `/sessions` folder.
187 | 
188 | ```sh
189 | -v /some/local/directory/sessions:/sessions:rw
190 | ```
191 | 
192 | ## Connect to the database over SSL
193 | 
194 | Set the variable `PMA_SSL` to `1` to enable SSL usage from phpMyAdmin to the MySQL server. The default value is `0`. The variable `PMA_SSLS` can be used as a comma seperated sequence of `0` and `1` where multiple hosts are mentioned. Values order must follow the `PMA_HOSTS` and will be computed accordingly.
195 | 
196 | ```sh
197 | docker run --name phpmyadmin -d -e PMA_HOSTS=sslhost -e PMA_SSL=1 -p 8080:80 phpmyadmin
198 | ```
199 | 
200 | ```sh
201 | docker run --name phpmyadmin -d -e PMA_HOSTS='sslhost,nosslhost' -e PMA_SSLS='1,0' -p 8080:80 phpmyadmin
202 | ```
203 | 
204 | ## Environment variables summary
205 | 
206 | -	`PMA_ARBITRARY` - when set to 1 connection to the arbitrary server will be allowed
207 | -	`PMA_HOST` - define address/host name of the MySQL server
208 | -	`PMA_VERBOSE` - define verbose name of the MySQL server
209 | -	`PMA_PORT` - define port of the MySQL server
210 | -	`PMA_HOSTS` - define comma separated list of address/host names of the MySQL servers
211 | -	`PMA_VERBOSES` - define comma separated list of verbose names of the MySQL servers
212 | -	`PMA_PORTS` - define comma separated list of ports of the MySQL servers
213 | -	`PMA_SOCKET` - define socket file for the MySQL connection
214 | -	`PMA_SOCKETS` - define comma separated list of socket files for the MySQL connections
215 | -	`PMA_SSL_DIR` - define the path used for SSL files generated from environement variables, default value is `/etc/phpmyadmin/ssl`
216 | -	`PMA_SSL` - when set to 1, defines SSL usage for the MySQL connection
217 | -	`PMA_SSLS` - comma separated list of `0` and `1` defining SSL usage for the corresponding MySQL connections
218 | -	`PMA_SSL_VERIFY` - when set to 1, enables SSL certificate verification for the MySQL connection.
219 | -	`PMA_SSL_VERIFIES` - comma-separated list of `0` and `1` to enable or disable SSL certificate verification for multiple MySQL connections.
220 | -	`PMA_SSL_CA` - in the context of mutual TLS security, allows setting your CA certificate file as a string inside the default `config.inc.php`.
221 | -	`PMA_SSL_CAS` - in the context of mutual TLS security, allows setting multiple CA certificate files as a comma-separated list of strings inside the default `config.inc.php`.
222 | -	`PMA_SSL_CERT` - in the context of mutual TLS security, allows setting your certificate file as a string inside the default `config.inc.php`.
223 | -	`PMA_SSL_CERTS` - in the context of mutual TLS security, allows setting multiple certificate files as a comma-separated list of strings inside the default `config.inc.php`.
224 | -	`PMA_SSL_KEY` - in the context of mutual TLS security, allows setting your private key file as a string inside the default `config.inc.php`.
225 | -	`PMA_SSL_KEYS` - in the context of mutual TLS security, allows setting multiple private key files as a comma-separated list of strings inside the default `config.inc.php`.
226 | -	`PMA_USER` and `PMA_PASSWORD` - define username and password to use only with the `config` authentication method
227 | -	`PMA_ABSOLUTE_URI` - the full URL to phpMyAdmin. Sometimes needed when used in a reverse-proxy configuration. Don't set this unless needed. See [documentation](https://docs.phpmyadmin.net/en/latest/config.html#cfg_PmaAbsoluteUri).
228 | -	`PMA_CONFIG_BASE64` - if set, this option will override the default `config.inc.php` with the base64 decoded contents of the variable
229 | -	`PMA_USER_CONFIG_BASE64` - if set, this option will override the default `config.user.inc.php` with the base64 decoded contents of the variable
230 | -	`PMA_UPLOADDIR` - if defined, this option will set the path where files can be saved to be available to import ([$cfg['UploadDir']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_UploadDir))
231 | -	`PMA_SAVEDIR` - if defined, this option will set the path where exported files can be saved ([$cfg['SaveDir']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_SaveDir))
232 | -	`PMA_CONTROLHOST` - when set, this points to an alternate database host used for storing the [phpMyAdmin Configuration Storage database](https://docs.phpmyadmin.net/en/latest/setup.html#phpmyadmin-configuration-storage) database
233 | -	`PMA_CONTROLPORT` - if set, will override the default port (3306) for connecting to the control host for storing the [phpMyAdmin Configuration Storage database](https://docs.phpmyadmin.net/en/latest/setup.html#phpmyadmin-configuration-storage) database
234 | -	`PMA_PMADB` - define the name of the database to be used for the [phpMyAdmin Configuration Storage database](https://docs.phpmyadmin.net/en/latest/setup.html#phpmyadmin-configuration-storage). When not set, the advanced features are not enabled by default: they can still potentially be enabled by the user when logging in with the zero conf (zero configuration) feature. Suggested values: `phpmyadmin` or `pmadb`
235 | -	`PMA_CONTROLUSER` - define the username for phpMyAdmin to use for advanced features (the [controluser](https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_controluser))
236 | -	`PMA_CONTROLPASS` - define the password for phpMyAdmin to use with the [controluser](https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_controlpass)
237 | -	`PMA_QUERYHISTORYDB` - when set [to true](https://docs.phpmyadmin.net/en/latest/config.html#cfg_QueryHistoryDB), enables storing [SQL history](https://docs.phpmyadmin.net/en/latest/config.html#cfg_Servers_history) to the [phpMyAdmin Configuration Storage database](https://docs.phpmyadmin.net/en/latest/setup.html#phpmyadmin-configuration-storage). When [false](https://docs.phpmyadmin.net/en/latest/config.html#cfg_QueryHistoryDB), history is stored in the browser and is cleared when logging out
238 | -	`PMA_QUERYHISTORYMAX` - when set to an integer, controls the number of history items. See [documentation](https://docs.phpmyadmin.net/en/latest/config.html#cfg_QueryHistoryMax). Defaults to `25`.
239 | -	`MAX_EXECUTION_TIME` - if set, will override the maximum execution time in seconds (default 600) for phpMyAdmin ([$cfg['ExecTimeLimit']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_ExecTimeLimit)) and PHP [max_execution_time](https://www.php.net/manual/en/info.configuration.php#ini.max-execution-time) (format as `[0-9+]`)
240 | -	`MEMORY_LIMIT` - if set, will override the memory limit (default 512M) for phpMyAdmin ([$cfg['MemoryLimit']](https://docs.phpmyadmin.net/en/latest/config.html#cfg_MemoryLimit)) and PHP [memory_limit](https://www.php.net/manual/en/ini.core.php#ini.memory-limit) (format as `[0-9+](K,M,G)` where K is for Kilobytes, M for Megabytes, G for Gigabytes and 1K = 1024 bytes)
241 | -	`UPLOAD_LIMIT` - if set, this option will override the default value for apache and php-fpm (format as `[0-9+](K,M,G)` default value is 2048K, this will change `upload_max_filesize` and `post_max_size` values)
242 | -	`TZ` - if defined, this option will change the default PHP `date.timezone` from `UTC`. See [documentation](https://www.php.net/manual/en/timezones.php) for supported values.
243 | -	`HIDE_PHP_VERSION` - if defined, this option will hide the PHP version (`expose_php = Off`). Set to any value (such as `HIDE_PHP_VERSION=true`).
244 | -	`APACHE_PORT` - if defined, this option will change the default Apache port from `80` in case you want it to run on a different port like an unprivileged port. Set to any port value (such as `APACHE_PORT=8090`)
245 | 
246 | For usage with Docker secrets, appending `_FILE` to the `PMA_PASSWORD` environment variable is allowed (it overrides `PMA_PASSWORD` if it is set):
247 | 
248 | ```sh
249 | docker run --name phpmyadmin -d -e PMA_PASSWORD_FILE=/run/secrets/db_password.txt -p 8080:80 phpmyadmin
250 | ```
251 | 
252 | #### Variables that can store the file contents using `_BASE64`
253 | 
254 | -	`PMA_SSL_CA`
255 | -	`PMA_SSL_CAS`
256 | -	`PMA_SSL_KEY`
257 | -	`PMA_SSL_KEYS`
258 | -	`PMA_SSL_CERT`
259 | -	`PMA_SSL_CERTS`
260 | 
261 | Also includes: `PMA_CONFIG_BASE64` or `PMA_USER_CONFIG_BASE64`.
262 | 
263 | For example, the variable would be named `PMA_SSL_CA_BASE64` and the value is the base64 encoded contents of the file.
264 | 
265 | #### Variables that can be read from a file using `_FILE`
266 | 
267 | -	`MYSQL_ROOT_PASSWORD`
268 | -	`MYSQL_PASSWORD`
269 | -	`PMA_USER`
270 | -	`PMA_PASSWORD`
271 | -	`PMA_HOSTS`
272 | -	`PMA_HOST`
273 | -	`PMA_CONTROLHOST`
274 | -	`PMA_CONTROLUSER`
275 | -	`PMA_CONTROLPASS`
276 | 
277 | For more detailed documentation see https://docs.phpmyadmin.net/en/latest/setup.html#installing-using-docker
278 | 
279 | Please report any issues with the Docker container to https://github.com/phpmyadmin/docker/issues
280 | 
281 | Please report any issues with phpMyAdmin to https://github.com/phpmyadmin/phpmyadmin/issues
282 | 
283 | # Image Variants
284 | 
285 | The `phpmyadmin` images come in many flavors, each designed for a specific use case.
286 | 
287 | ## `phpmyadmin:<version>`
288 | 
289 | 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.
290 | 
291 | ## `phpmyadmin:<version>-alpine`
292 | 
293 | 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.
294 | 
295 | 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.
296 | 
297 | 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).
298 | 
299 | # License
300 | 
301 | View [license information](https://github.com/phpmyadmin/docker/blob/master/LICENSE) for the software contained in this image.
302 | 
303 | 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).
304 | 
305 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `phpmyadmin/` directory](https://github.com/docker-library/repo-info/tree/master/repos/phpmyadmin).
306 | 
307 | 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.
308 | 
```
--------------------------------------------------------------------------------
/couchbase/README.md:
--------------------------------------------------------------------------------
```markdown
  1 | <!--
  2 | 
  3 | ********************************************************************************
  4 | 
  5 | WARNING:
  6 | 
  7 |     DO NOT EDIT "couchbase/README.md"
  8 | 
  9 |     IT IS AUTO-GENERATED
 10 | 
 11 |     (from the other files in "couchbase/" combined with a set of templates)
 12 | 
 13 | ********************************************************************************
 14 | 
 15 | -->
 16 | 
 17 | # Quick reference
 18 | 
 19 | -	**Maintained by**:  
 20 | 	[the Couchbase Docker Team](https://github.com/couchbase/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 | -	[`7.6.5`, `enterprise`, `enterprise-7.6.5`, `latest`](https://github.com/couchbase/docker/blob/ec16abff6f0551ced6c771bd5606a4392379dd31/enterprise/couchbase-server/7.6.5/Dockerfile)
 28 | 
 29 | -	[`7.6.4`, `enterprise-7.6.4`](https://github.com/couchbase/docker/blob/9990e2cfabc94b37607e5666d9ef1eab69a397a6/enterprise/couchbase-server/7.6.4/Dockerfile)
 30 | 
 31 | -	[`7.6.3`, `enterprise-7.6.3`](https://github.com/couchbase/docker/blob/553d1baa4aa90fe506e1d7bcdf4daec387a110fe/enterprise/couchbase-server/7.6.3/Dockerfile)
 32 | 
 33 | -	[`7.6.2`, `enterprise-7.6.2`](https://github.com/couchbase/docker/blob/ba43d566538a8e0b6315569b94f0a7cf835c222b/enterprise/couchbase-server/7.6.2/Dockerfile)
 34 | 
 35 | -	[`community`, `community-7.6.2`](https://github.com/couchbase/docker/blob/34bb6684dc575f4e0b8b0f16127f5d4188015d8d/community/couchbase-server/7.6.2/Dockerfile)
 36 | 
 37 | -	[`7.6.1`, `enterprise-7.6.1`](https://github.com/couchbase/docker/blob/5268f3a009878a85c70b1461ef32cf8ce21debec/enterprise/couchbase-server/7.6.1/Dockerfile)
 38 | 
 39 | -	[`community-7.6.1`](https://github.com/couchbase/docker/blob/6eb060cef1909e850b0ad4a930cd577a89a6d269/community/couchbase-server/7.6.1/Dockerfile)
 40 | 
 41 | -	[`7.6.0`, `enterprise-7.6.0`](https://github.com/couchbase/docker/blob/203e62f36ce055be75955e073d0000249bf2c040/enterprise/couchbase-server/7.6.0/Dockerfile)
 42 | 
 43 | -	[`community-7.6.0`](https://github.com/couchbase/docker/blob/7148bc241bcdcf8961c34f8adf76ebfb2860ed83/community/couchbase-server/7.6.0/Dockerfile)
 44 | 
 45 | -	[`7.2.7`, `enterprise-7.2.7`](https://github.com/couchbase/docker/blob/ae9a971db27050a4da598137fce7bd3d63396c24/enterprise/couchbase-server/7.2.7/Dockerfile)
 46 | 
 47 | -	[`7.2.6`, `enterprise-7.2.6`](https://github.com/couchbase/docker/blob/857d7bcc814e241fd36aa4dc326dcab37e1d1e73/enterprise/couchbase-server/7.2.6/Dockerfile)
 48 | 
 49 | -	[`7.2.5`, `enterprise-7.2.5`](https://github.com/couchbase/docker/blob/58e0549b1e021259a1ce9bb70d70aac4cc5e71da/enterprise/couchbase-server/7.2.5/Dockerfile)
 50 | 
 51 | -	[`7.2.4`, `enterprise-7.2.4`](https://github.com/couchbase/docker/blob/24bae6aab6520dc97c362b56150db9658d041873/enterprise/couchbase-server/7.2.4/Dockerfile)
 52 | 
 53 | -	[`community-7.2.4`](https://github.com/couchbase/docker/blob/9fc1cf481a8fe8e78d7539cee3a25cdbaa7b5e1e/community/couchbase-server/7.2.4/Dockerfile)
 54 | 
 55 | -	[`7.2.3`, `enterprise-7.2.3`](https://github.com/couchbase/docker/blob/3a446520433f63e3d270f01063b14cb6b6ade12a/enterprise/couchbase-server/7.2.3/Dockerfile)
 56 | 
 57 | -	[`7.2.2`, `enterprise-7.2.2`](https://github.com/couchbase/docker/blob/00de0b8de802ff6909be789b1f86a65d934a38f8/enterprise/couchbase-server/7.2.2/Dockerfile)
 58 | 
 59 | -	[`community-7.2.2`](https://github.com/couchbase/docker/blob/855d163127ee5e4bc6854714ecd6911f70f27906/community/couchbase-server/7.2.2/Dockerfile)
 60 | 
 61 | -	[`7.2.0`, `enterprise-7.2.0`](https://github.com/couchbase/docker/blob/1985fb8f6774c71cb0f00e37a62c0741fad59ece/enterprise/couchbase-server/7.2.0/Dockerfile)
 62 | 
 63 | -	[`community-7.2.0`](https://github.com/couchbase/docker/blob/2bd177d6887d051b6981c8c2591af6eed3ae9505/community/couchbase-server/7.2.0/Dockerfile)
 64 | 
 65 | # Quick reference (cont.)
 66 | 
 67 | -	**Where to file issues**:  
 68 | 	[https://github.com/couchbase/docker/issues](https://github.com/couchbase/docker/issues?q=)
 69 | 
 70 | -	**Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))  
 71 | 	[`amd64`](https://hub.docker.com/r/amd64/couchbase/), [`arm64v8`](https://hub.docker.com/r/arm64v8/couchbase/)
 72 | 
 73 | -	**Published image artifact details**:  
 74 | 	[repo-info repo's `repos/couchbase/` directory](https://github.com/docker-library/repo-info/blob/master/repos/couchbase) ([history](https://github.com/docker-library/repo-info/commits/master/repos/couchbase))  
 75 | 	(image metadata, transfer size, etc)
 76 | 
 77 | -	**Image updates**:  
 78 | 	[official-images repo's `library/couchbase` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcouchbase)  
 79 | 	[official-images repo's `library/couchbase` file](https://github.com/docker-library/official-images/blob/master/library/couchbase) ([history](https://github.com/docker-library/official-images/commits/master/library/couchbase))
 80 | 
 81 | -	**Source of this description**:  
 82 | 	[docs repo's `couchbase/` directory](https://github.com/docker-library/docs/tree/master/couchbase) ([history](https://github.com/docker-library/docs/commits/master/couchbase))
 83 | 
 84 | # Introduction to Couchbase Server
 85 | 
 86 | Built on the most powerful NoSQL technology, Couchbase Server delivers unparalleled performance at scale, in any cloud. With features like memory-first architecture, geo-distributed deployments, and workload isolation, Couchbase Server excels at supporting mission-critical applications at scale while maintaining sub-millisecond latencies and 99.999% availability. Plus, with the most comprehensive SQL-compatible query language (N1QL), migrating from RDBMS to Couchbase Server is easy with ANSI join.
 87 | 
 88 | ## Unmatched agility and flexibility
 89 | 
 90 | Support rapidly changing business requirements with the flexibility of JSON and the power of a comprehensive query language (N1QL). Develop engaging applications with multiple access methods from a single platform: key-value, query, and search. Event-driven workloads allow you to execute data-driven business logic from a centralized platform.
 91 | 
 92 | ## Unparalleled performance at any scale
 93 | 
 94 | Deliver consistent, fast experiences at scale, powered by a memory-first architecture. High-performance indexes and index partitioning provides unparalleled query performance with complex joins, predicates, and aggregate evaluations. And, with end-to-end data compression, Couchbase significantly reduces the cost of network, memory, and storage required for your existing workloads.
 95 | 
 96 | ## Easiest platform to manage
 97 | 
 98 | Deploy Couchbase Server in any cloud, at any scale. Reduce operational overhead with cloud integrations like Kubernetes, and support multi-cloud deployments globally with built-in support for active-active cross datacenter replication (XDCR).
 99 | 
100 | 
101 | 
102 | ## QuickStart with Couchbase Server and Docker
103 | 
104 | Here is how to get a single node Couchbase Server cluster running on Docker containers:
105 | 
106 | **Step - 1 :** Run Couchbase Server docker container
107 | 
108 | `docker run -d --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase`
109 | 
110 | Note: Couchbase Server can require a variety of ports to be exposed depending on the usage scenario. Please see https://docs.couchbase.com/server/current/install/install-ports.html for further information.
111 | 
112 | **Step - 2 :** Next, visit `http://localhost:8091` on the host machine to see the Web Console to start Couchbase Server setup.
113 | 
114 | 
115 | 
116 | Walk through the Setup wizard and accept the default values.
117 | 
118 | -	Note: You may need to lower the RAM allocated to various services to fit within the bounds of the resource of the containers.
119 | -	Enable the beer-sample bucket to load some sample data.
120 | 
121 | 
122 | 
123 | 
124 | 
125 | 
126 | 
127 | 
128 | 
129 | **Note :** For detailed information on configuring the Server, see [Deployment Guidelines](https://docs.couchbase.com/server/current/install/install-production-deployment.html).
130 | 
131 | ### Running A N1QL Query on the Couchbase Server Cluster
132 | 
133 | N1QL is the SQL based query language for Couchbase Server. Simply switch to the Query tab on the Web Console at `http://localhost:8091` and run the following N1QL Query in the query window:
134 | 
135 | 	SELECT name FROM `beer-sample` WHERE brewery_id="mishawaka_brewing";
136 | 
137 | You can also execute N1QL queries from the command line. To run a query from command line query tool, run the cbq command line tool, authenticating using the credentials you provided to the wizard, and execute the N1QL Query on the beer-sample bucket
138 | 
139 | ```console
140 | $ docker exec -it db cbq --user Administrator
141 | cbq> SELECT name FROM `beer-sample` WHERE brewery_id ="mishawaka_brewing";
142 | ```
143 | 
144 | For more query samples, refer to [Run your first N1QL query](https://docs.couchbase.com/server/current/getting-started/try-a-query.html).
145 | 
146 | ### Connect to the Couchbase Server Cluster via Applications and SDKs
147 | 
148 | Couchbase Server SDKs comes in many languages: C, Go, Java, .NET, Node.js, PHP, Python. Simply run your application through the Couchbase Server SDK of your choice on the host, and point it to [http://localhost:8091/pools](http://localhost:8091/pools) to connect to the container.
149 | 
150 | For running a sample application, refer to the [Sample Application](https://docs.couchbase.com/java-sdk/current/hello-world/sample-application.html) guide.
151 | 
152 | ## Requirements and Best Practices
153 | 
154 | ### Container Requirements
155 | 
156 | Official Couchbase Server images on Docker Hub are based on the latest supported version of Ubuntu.
157 | 
158 | **Docker Container Resource Requirements :** For minimum container requirements, you can follow [System Resource Requirements](https://docs.couchbase.com/server/current/install/pre-install.html) for development, test and production environments.
159 | 
160 | ### Best Practices
161 | 
162 | **Avoid a Single Point of Failure :** Couchbase Server's resilience and high-availability are achieved through creating a cluster of independent nodes and replicating data between them so that any individual node failure doesn't lead to loss of access to your data. In a containerized environment, if you were to run multiple nodes on the same piece of physical hardware, you can inadvertently re-introduce a single point of failure. In environments where you control VM placement, we advise ensuring each Couchbase Server node runs on a different piece of physical hardware.
163 | 
164 | **Sizing your containers :** Physical hardware performance characteristics are well understood. Even though containers insert a lightweight layer between Couchbase Server and the underlying OS, there is still a small overhead in running Couchbase Server in containers. For stability and better performance predictability, It is recommended to have at least 2 cores dedicated to the container in development environments and 4 cores dedicated to the container rather than shared across multiple containers for Couchbase Server instances running in production. With an over-committed environment you can end up with containers competing with each other causing unpredictable performance and sometimes stability issues.
165 | 
166 | **Map Couchbase Node Specific Data to a Local Folder :** A Couchbase Server Docker container will write all persistent and node-specific data under the directory `/opt/couchbase/var` by default. It is recommended to map this directory to a directory on the host file system using the `-v` option to `docker run` to get persistence and performance.
167 | 
168 | -	Persistence: Storing `/opt/couchbase/var` outside the container with the `-v` option allows you to delete the container and recreate it later without losing the data in Couchbase Server. You can even update to a container running a later release/version of Couchbase Server without losing your data.
169 | 
170 | -	Performance: In a standard Docker environment using a union file system, leaving `/opt/couchbase/var` inside the container results in some amount of performance degradation.
171 | 
172 | NOTE for SELinux : If you have SELinux enabled, mounting the host volumes in a container requires an extra step. Assuming you are mounting the `~/couchbase` directory on the host file system, you need to run the following command once before running your first container on that host:
173 | 
174 | `mkdir ~/couchbase && chcon -Rt svirt_sandbox_file_t ~/couchbase`
175 | 
176 | **Increase ULIMIT in Production Deployments :** Couchbase Server normally expects the following changes to ulimits:
177 | 
178 | 	ulimit -n 200000 # nofile: max number of open files
179 | 	ulimit -l unlimited # memlock: maximum locked-in-memory address space
180 | 
181 | These ulimit settings are necessary when running under heavy load. If you are just doing light testing and development, you can omit these settings, and everything will still work.
182 | 
183 | To set the ulimits in your container, you will need to run Couchbase Docker containers with the following additional `--ulimit` flags:
184 | 
185 | `docker run -d --ulimit nofile=40960:40960 --ulimit core=100000000:100000000 --ulimit memlock=100000000:100000000 --name db -p 8091-8097:8091-8097 -p 9123:9123 -p 11207:11207 -p 11210:11210 -p 11280:11280 -p 18091-18097:18091-18097 couchbase`
186 | 
187 | Since "unlimited" is not supported as a value, it sets the core and memlock values to 100 GB. If your system has more than 100 GB RAM, you will want to increase this value to match the available RAM on the system.
188 | 
189 | Note: The `--ulimit` flags only work on Docker 1.6 or later.
190 | 
191 | **Network Configuration and Ports :** Couchbase Server communicates on many different ports (see the [Couchbase Server documentation](https://docs.couchbase.com/server/current/install/install-ports.html#ports-listed-by-communication-path)). Also, it is generally not supported that the cluster nodes be placed behind any NAT. For these reasons, Docker's default networking configuration is not ideally suited to Couchbase Server deployments. For production deployments it is recommended to use `--net=host` setting to avoid performance and reliability issues.
192 | 
193 | ## Multi Node Couchbase Server Cluster Deployment Topologies
194 | 
195 | With multi node Couchbase Server clusters, there are 2 popular topologies.
196 | 
197 | ### All Couchbase Server containers on one physical machine
198 | 
199 | This model is commonly used for scale-minimized deployments simulating production deployments for development and test purposes. Placing all containers on a single physical machine means all containers will compete for the same resources. Placing all containers on a single physical machine also eliminates the built-in protection against Couchbase Server node failures afforded by replication. When the single physical machine fails, all containers experience unavailability at the same time, losing all replicas. These restrictions may be acceptable for test systems, however it isn't recommended for applications in production.
200 | 
201 | You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](https://docs.couchbase.com/server/current/install/getting-started-docker.html#multi-node-cluster-one-host).
202 | 
203 | 	┌──────────────────────────────────────────────────────────┐
204 | 	│                     Host OS (Linux)                      │
205 | 	│                                                          │
206 | 	│  ┌───────────────┐ ┌───────────────┐  ┌───────────────┐  │
207 | 	│  │ Container OS  │ │ Container OS  │  │ Container OS  │  │
208 | 	│  │   (Ubuntu)    │ │   (Ubuntu)    │  │   (Ubuntu)    │  │
209 | 	│  │ ┌───────────┐ │ │ ┌───────────┐ │  │ ┌───────────┐ │  │
210 | 	│  │ │ Couchbase │ │ │ │ Couchbase │ │  │ │ Couchbase │ │  │
211 | 	│  │ │  Server   │ │ │ │  Server   │ │  │ │  Server   │ │  │
212 | 	│  │ └───────────┘ │ │ └───────────┘ │  │ └───────────┘ │  │
213 | 	│  └───────────────┘ └───────────────┘  └───────────────┘  │
214 | 	└──────────────────────────────────────────────────────────┘
215 | 
216 | ### Each Couchbase Server container on its own machine
217 | 
218 | This model is commonly used for production deployments. It prevents Couchbase Server nodes from stepping over each other and gives you better performance predictability. This is the supported topology in production with Couchbase Server 5.5 and higher.
219 | 
220 | You can find more details on setting up Couchbase Server in this topology in Couchbase Server [documentation](https://docs.couchbase.com/server/current/install/getting-started-docker.html#multi-node-cluster-many-hosts).
221 | 
222 | 	┌───────────────────────┐  ┌───────────────────────┐  ┌───────────────────────┐
223 | 	│   Host OS (Linux)     │  │   Host OS (Linux)     │  │   Host OS (Linux)     │
224 | 	│  ┌─────────────────┐  │  │  ┌─────────────────┐  │  │  ┌─────────────────┐  │
225 | 	│  │  Container OS   │  │  │  │  Container OS   │  │  │  │  Container OS   │  │
226 | 	│  │    (Ubuntu)     │  │  │  │    (Ubuntu)     │  │  │  │    (Ubuntu)     │  │
227 | 	│  │  ┌───────────┐  │  │  │  │  ┌───────────┐  │  │  │  │  ┌───────────┐  │  │
228 | 	│  │  │ Couchbase │  │  │  │  │  │ Couchbase │  │  │  │  │  │ Couchbase │  │  │
229 | 	│  │  │  Server   │  │  │  │  │  │  Server   │  │  │  │  │  │  Server   │  │  │
230 | 	│  │  └───────────┘  │  │  │  │  └───────────┘  │  │  │  │  └───────────┘  │  │
231 | 	│  └─────────────────┘  │  │  └─────────────────┘  │  │  └─────────────────┘  │
232 | 	└───────────────────────┘  └───────────────────────┘  └───────────────────────┘
233 | 
234 | ## Try Couchbase Cloud Free
235 | 
236 | Couchbase Cloud is a fully managed NoSQL Database-as-a-Service (DBaaS) for mission-critical applications. We deploy Couchbase Cloud in your AWS VPC and manage the workload. You'll enjoy incredible price-performance and operational transparency.
237 | 
238 | Start Free Trial - https://cloud.couchbase.com/sign-up
239 | 
240 | # Additional References
241 | 
242 | -	[Couchbase Server and Containers](https://docs.couchbase.com/server/current/cloud/couchbase-cloud-deployment.html)
243 | 
244 | -	[Getting Started with Couchbase Server and Docker](https://docs.couchbase.com/server/current/install/getting-started-docker.html)
245 | 
246 | # License
247 | 
248 | Couchbase Server comes in two editions: Enterprise Edition and Community Edition. You can find details on the differences between the two and licensing information on the [Couchbase Server Editions](https://docs.couchbase.com/server/current/introduction/editions.html) page.
249 | 
250 | -	**Enterprise Edition** -- The Enterprise Edition license provides for free for development and testing for Couchbase Enterprise Edition. A paid subscription for production deployment is required. Please refer to the [pricing](https://www.couchbase.com/pricing) page for details on Couchbase's Enterprise Edition.
251 | 
252 | -	**Community Edition** -- The Community Edition license provides for free deployment of Couchbase Community Edition for departmental-scale deployments of up to five node clusters. It has recently been changed to disallow use of XDCR, which is now an exclusive Enterprise Edition feature.
253 | 
254 | 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).
255 | 
256 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `couchbase/` directory](https://github.com/docker-library/repo-info/tree/master/repos/couchbase).
257 | 
258 | 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.
259 | 
```
--------------------------------------------------------------------------------
/ros/README.md:
--------------------------------------------------------------------------------
```markdown
  1 | <!--
  2 | 
  3 | ********************************************************************************
  4 | 
  5 | WARNING:
  6 | 
  7 |     DO NOT EDIT "ros/README.md"
  8 | 
  9 |     IT IS AUTO-GENERATED
 10 | 
 11 |     (from the other files in "ros/" combined with a set of templates)
 12 | 
 13 | ********************************************************************************
 14 | 
 15 | -->
 16 | 
 17 | # Quick reference
 18 | 
 19 | -	**Maintained by**:  
 20 | 	[the Open Source Robotics Foundation](https://github.com/osrf/docker_images)
 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 | -	[`noetic-ros-core`, `noetic-ros-core-focal`](https://github.com/osrf/docker_images/blob/b525e9ef659ce448db6150fd5407ef62b2c5b265/ros/noetic/ubuntu/focal/ros-core/Dockerfile)
 28 | 
 29 | -	[`noetic-ros-base`, `noetic-ros-base-focal`, `noetic`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/ubuntu/focal/ros-base/Dockerfile)
 30 | 
 31 | -	[`noetic-robot`, `noetic-robot-focal`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/ubuntu/focal/robot/Dockerfile)
 32 | 
 33 | -	[`noetic-perception`, `noetic-perception-focal`](https://github.com/osrf/docker_images/blob/df19ab7d5993d3b78a908362cdcd1479a8e78b35/ros/noetic/ubuntu/focal/perception/Dockerfile)
 34 | 
 35 | -	[`humble-ros-core`, `humble-ros-core-jammy`](https://github.com/osrf/docker_images/blob/b525e9ef659ce448db6150fd5407ef62b2c5b265/ros/humble/ubuntu/jammy/ros-core/Dockerfile)
 36 | 
 37 | -	[`humble-ros-base`, `humble-ros-base-jammy`, `humble`](https://github.com/osrf/docker_images/blob/20e3ba685bb353a3c00be9ba01c1b7a6823c9472/ros/humble/ubuntu/jammy/ros-base/Dockerfile)
 38 | 
 39 | -	[`humble-perception`, `humble-perception-jammy`](https://github.com/osrf/docker_images/blob/20d40c96b426b8956dec203e236abff2ec29b188/ros/humble/ubuntu/jammy/perception/Dockerfile)
 40 | 
 41 | -	[`iron-ros-core`, `iron-ros-core-jammy`](https://github.com/osrf/docker_images/blob/2ad854492209b8dbab303578a5baedab4d5ab41d/ros/iron/ubuntu/jammy/ros-core/Dockerfile)
 42 | 
 43 | -	[`iron-ros-base`, `iron-ros-base-jammy`, `iron`](https://github.com/osrf/docker_images/blob/bca53bf4c09d771be3ff735da4157203b53ebc2b/ros/iron/ubuntu/jammy/ros-base/Dockerfile)
 44 | 
 45 | -	[`iron-perception`, `iron-perception-jammy`](https://github.com/osrf/docker_images/blob/bca53bf4c09d771be3ff735da4157203b53ebc2b/ros/iron/ubuntu/jammy/perception/Dockerfile)
 46 | 
 47 | -	[`jazzy-ros-core`, `jazzy-ros-core-noble`](https://github.com/osrf/docker_images/blob/b525e9ef659ce448db6150fd5407ef62b2c5b265/ros/jazzy/ubuntu/noble/ros-core/Dockerfile)
 48 | 
 49 | -	[`jazzy-ros-base`, `jazzy-ros-base-noble`, `jazzy`, `latest`](https://github.com/osrf/docker_images/blob/0038f1c3a11aa0fc573d698b39ab5c204aad5a40/ros/jazzy/ubuntu/noble/ros-base/Dockerfile)
 50 | 
 51 | -	[`jazzy-perception`, `jazzy-perception-noble`](https://github.com/osrf/docker_images/blob/0038f1c3a11aa0fc573d698b39ab5c204aad5a40/ros/jazzy/ubuntu/noble/perception/Dockerfile)
 52 | 
 53 | -	[`rolling-ros-core`, `rolling-ros-core-noble`](https://github.com/osrf/docker_images/blob/2e9b4e3c02bff2c70271e6f0fd15d4132e8cbcbb/ros/rolling/ubuntu/noble/ros-core/Dockerfile)
 54 | 
 55 | -	[`rolling-ros-base`, `rolling-ros-base-noble`, `rolling`](https://github.com/osrf/docker_images/blob/2e9b4e3c02bff2c70271e6f0fd15d4132e8cbcbb/ros/rolling/ubuntu/noble/ros-base/Dockerfile)
 56 | 
 57 | -	[`rolling-perception`, `rolling-perception-noble`](https://github.com/osrf/docker_images/blob/2e9b4e3c02bff2c70271e6f0fd15d4132e8cbcbb/ros/rolling/ubuntu/noble/perception/Dockerfile)
 58 | 
 59 | # Quick reference (cont.)
 60 | 
 61 | -	**Where to file issues**:  
 62 | 	[https://github.com/osrf/docker_images/issues](https://github.com/osrf/docker_images/issues?q=)
 63 | 
 64 | -	**Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))  
 65 | 	[`amd64`](https://hub.docker.com/r/amd64/ros/), [`arm32v7`](https://hub.docker.com/r/arm32v7/ros/), [`arm64v8`](https://hub.docker.com/r/arm64v8/ros/)
 66 | 
 67 | -	**Published image artifact details**:  
 68 | 	[repo-info repo's `repos/ros/` directory](https://github.com/docker-library/repo-info/blob/master/repos/ros) ([history](https://github.com/docker-library/repo-info/commits/master/repos/ros))  
 69 | 	(image metadata, transfer size, etc)
 70 | 
 71 | -	**Image updates**:  
 72 | 	[official-images repo's `library/ros` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fros)  
 73 | 	[official-images repo's `library/ros` file](https://github.com/docker-library/official-images/blob/master/library/ros) ([history](https://github.com/docker-library/official-images/commits/master/library/ros))
 74 | 
 75 | -	**Source of this description**:  
 76 | 	[docs repo's `ros/` directory](https://github.com/docker-library/docs/tree/master/ros) ([history](https://github.com/docker-library/docs/commits/master/ros))
 77 | 
 78 | # What is [ROS](https://www.ros.org/)?
 79 | 
 80 | The Robot Operating System (ROS) is a set of software libraries and tools that help you build robot applications. From drivers to state-of-the-art algorithms, and with powerful developer tools, ROS has what you need for your next robotics project. And it's all open source.
 81 | 
 82 | > [wikipedia.org/wiki/Robot_Operating_System](https://en.wikipedia.org/wiki/Robot_Operating_System)
 83 | 
 84 | [](https://www.ros.org/)
 85 | 
 86 | # How to use this image
 87 | 
 88 | ## Creating a `Dockerfile` to install ROS packages
 89 | 
 90 | To create your own ROS docker images and install custom packages, here's a simple example of installing the C++, Python client library demos using the official released Debian packages via apt-get.
 91 | 
 92 | ```dockerfile
 93 | FROM ros:foxy
 94 | 
 95 | # install ros package
 96 | RUN apt-get update && apt-get install -y \
 97 |       ros-${ROS_DISTRO}-demo-nodes-cpp \
 98 |       ros-${ROS_DISTRO}-demo-nodes-py && \
 99 |     rm -rf /var/lib/apt/lists/*
100 | 
101 | # launch ros package
102 | CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"]
103 | ```
104 | 
105 | Note: all ROS images include a default entrypoint that sources the ROS environment setup before executing the configured command, in this case the demo packages launch file. You can then build and run the Docker image like so:
106 | 
107 | ```console
108 | $ docker build -t my/ros:app .
109 | $ docker run -it --rm my/ros:app
110 | [INFO] [launch]: process[talker-1]: started with pid [813]
111 | [INFO] [launch]: process[listener-2]: started with pid [814]
112 | [INFO] [talker]: Publishing: 'Hello World: 1'
113 | [INFO] [listener]: I heard: [Hello World: 1]
114 | [INFO] [talker]: Publishing: 'Hello World: 2'
115 | [INFO] [listener]: I heard: [Hello World: 2]
116 | ...
117 | ```
118 | 
119 | ## Creating a `Dockerfile` to build ROS packages
120 | 
121 | To create your own ROS docker images and build custom packages, here's a simple example of installing a package's build dependencies, compiling it from source, and installing the resulting build artifacts into a final multi-stage image layer.
122 | 
123 | ```dockerfile
124 | ARG FROM_IMAGE=ros:foxy
125 | ARG OVERLAY_WS=/opt/ros/overlay_ws
126 | 
127 | # multi-stage for caching
128 | FROM $FROM_IMAGE AS cacher
129 | 
130 | # clone overlay source
131 | ARG OVERLAY_WS
132 | WORKDIR $OVERLAY_WS/src
133 | RUN echo "\
134 | repositories: \n\
135 |   ros2/demos: \n\
136 |     type: git \n\
137 |     url: https://github.com/ros2/demos.git \n\
138 |     version: ${ROS_DISTRO} \n\
139 | " > ../overlay.repos
140 | RUN vcs import ./ < ../overlay.repos
141 | 
142 | # copy manifests for caching
143 | WORKDIR /opt
144 | RUN mkdir -p /tmp/opt && \
145 |     find ./ -name "package.xml" | \
146 |       xargs cp --parents -t /tmp/opt && \
147 |     find ./ -name "COLCON_IGNORE" | \
148 |       xargs cp --parents -t /tmp/opt || true
149 | 
150 | # multi-stage for building
151 | FROM $FROM_IMAGE AS builder
152 | 
153 | # install overlay dependencies
154 | ARG OVERLAY_WS
155 | WORKDIR $OVERLAY_WS
156 | COPY --from=cacher /tmp/$OVERLAY_WS/src ./src
157 | RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
158 |     apt-get update && rosdep install -y \
159 |       --from-paths \
160 |         src/ros2/demos/demo_nodes_cpp \
161 |         src/ros2/demos/demo_nodes_py \
162 |       --ignore-src \
163 |     && rm -rf /var/lib/apt/lists/*
164 | 
165 | # build overlay source
166 | COPY --from=cacher $OVERLAY_WS/src ./src
167 | ARG OVERLAY_MIXINS="release"
168 | RUN . /opt/ros/$ROS_DISTRO/setup.sh && \
169 |     colcon build \
170 |       --packages-select \
171 |         demo_nodes_cpp \
172 |         demo_nodes_py \
173 |       --mixin $OVERLAY_MIXINS
174 | 
175 | # source entrypoint setup
176 | ENV OVERLAY_WS $OVERLAY_WS
177 | RUN sed --in-place --expression \
178 |       '$isource "$OVERLAY_WS/install/setup.bash"' \
179 |       /ros_entrypoint.sh
180 | 
181 | # run launch file
182 | CMD ["ros2", "launch", "demo_nodes_cpp", "talker_listener_launch.py"]
183 | ```
184 | 
185 | The example above starts by using [`vcstool`](https://github.com/dirk-thomas/vcstool) to clone source repos of interest into the cacher stage. One could similarly `COPY` code from the local build context into the source directory as well. Package manifest files are then cached in a temporary directory where the following builder stage may copy from to install necessary dependencies with [`rosdep`](https://github.com/ros-infrastructure/rosdep). This is done prior to copying the rest of the source files to preserve the multi-stage build cache, given unaltered manifests do not alter declared dependencies, saving time and bandwidth. The overlay is then built using [`colcon`](https://colcon.readthedocs.io/en/released/), the entrypoint updated to source the workspace, and the default command set to launch the demo.
186 | 
187 | Note: `--from-paths` and `--packages-select` are set here as so to only install the dependencies and build for the demo C++ and Python packages, among many in the demo git repo that was cloned. To install the dependencies and build all the packages in the source workspace, merely change the scope by setting `--from-paths src/` and dropping the `--packages-select` arguments.
188 | 
189 | For more advance examples such as daisy chaining multiple overlay workspaces to improve caching of docker image build layers, using tools such as ccache to accelerate compilation with colcon, or using buildkit to save build time and bandwidth even when dependencies change, the project `Dockerfile`s in the ROS 2 [Navigation2](https://github.com/ros-planning/navigation2) repo are excellent resources.
190 | 
191 | ## Deployment use cases
192 | 
193 | This dockerized image of ROS is intended to provide a simplified and consistent platform to build and deploy distributed robotic applications. Built from the [official Ubuntu image](https://hub.docker.com/_/ubuntu/) and ROS's official Debian packages, it includes recent supported releases for quick access and download. This provides roboticists in research and industry with an easy way to develop, reuse and ship software for autonomous actions and task planning, control dynamics, localization and mapping, swarm behavior, as well as general system integration.
194 | 
195 | Developing such complex systems with cutting edge implementations of newly published algorithms remains challenging, as repeatability and reproducibility of robotic software can fall to the wayside in the race to innovate. With the added difficulty in coding, tuning and deploying multiple software components that span across many engineering disciplines, a more collaborative approach becomes attractive. However, the technical difficulties in sharing and maintaining a collection of software over multiple robots and platforms has for a while exceeded time and effort than many smaller labs and businesses could afford.
196 | 
197 | With the advancements and standardization of software containers, roboticists are primed to acquire a host of improved developer tooling for building and shipping software. To help alleviate the growing pains and technical challenges of adopting new practices, we have focused on providing an official resource for using ROS with these new technologies.
198 | 
199 | For a complete listing of supported architectures and base images for each ROS Distribution Release, please read the official REP on target platforms for either [ROS 1](https://www.ros.org/reps/rep-0003.html) or for [ROS 2](https://www.ros.org/reps/rep-2000.html).
200 | 
201 | ## Deployment suggestions
202 | 
203 | The available tags include supported distros along with a hierarchy tags based off the most common meta-package dependencies, designed to have a small footprint and simple configuration:
204 | 
205 | -	`ros-core`: minimal ROS install
206 | -	`ros-base`: basic tools and libraries (also tagged with distro name with LTS version as `latest`)
207 | -	`ros1-bridge`: tools and libraries to run hybrid ROS 1 - ROS 2 systems and bridge messages between them
208 | 
209 | In the interest of keeping `ros-core` tag minimal in image size, developer tools such as `rosdep`, `colcon` and `vcstools` are not shipped in `ros_core`, but in `ros-base` instead.
210 | 
211 | The rest of the common meta-packages such as `desktop` are hosted on repos under OSRF's Docker Hub profile [here](https://hub.docker.com/r/osrf/ros/). These meta-packages include graphical dependencies and hook a host of other large packages such as X11, X server, etc. So in the interest of keeping the official images lean and secure, the desktop packages are just being hosted with OSRF's profile. For an extensive list of available variants, please read the official REP on target platforms for either [ROS 1](https://ros.org/reps/rep-0150.html) or for [ROS 2](https://www.ros.org/reps/rep-2001.html).
212 | 
213 | ### Volumes
214 | 
215 | ROS uses the `~/.ros/` directory for storing logs, and debugging info. If you wish to persist these files beyond the lifecycle of the containers which produced them, the `~/.ros/` folder can be mounted to an external volume on the host, or a derived image can specify volumes to be managed by the Docker engine. By default, the container runs as the `root` user, so `/root/.ros/` would be the full path to these files.
216 | 
217 | For example, if one wishes to use their own `.ros` folder that already resides in their local home directory, with a username of `ubuntu`, we can simply launch the container with an additional volume argument:
218 | 
219 | ```console
220 | $ docker run -v "/home/ubuntu/.ros/:/root/.ros/" ros
221 | ```
222 | 
223 | ### Devices
224 | 
225 | Some application may require device access for acquiring images from connected cameras, control input from human interface device, or GPUS for hardware acceleration. This can be done using the [`--device`](https://docs.docker.com/engine/reference/commandline/run/#add-host-device-to-container---device) run argument to mount the device inside the container, providing processes inside hardware access.
226 | 
227 | ### Networks
228 | 
229 | ROS allows for peer-to-peer networking of processes (potentially distributed across machines) that are loosely coupled using the ROS communication infrastructure. ROS implements several different styles of communication, including synchronous RPC-style communication over services, asynchronous streaming of typed data over topics, combinations of both prior via request/reply and status/feedback over actions, and run-time settings via configuration over parameters. To abide by the best practice of [one process per container](https://docs.docker.com/articles/dockerfile_best-practices/), Docker networks can be used to string together several running ROS processes. For further details see the Deployment example further below.
230 | 
231 | Alternatively, more permissive network settings can be used to share all host network interfaces with the container, such as [`host` network driver](https://docs.docker.com/network/host/), simplifying connectivity with external network participants. Be aware however that this removes the networking namespace separation between containers, and can affect the ability of DDS participants to communicate between containers, as documented [here](https://community.rti.com/kb/how-use-rti-connext-dds-communicate-across-docker-containers-using-host-driver).
232 | 
233 | ## Deployment example
234 | 
235 | ### Docker Compose
236 | 
237 | In this example we'll demonstrate using [`docker compose`](https://docs.docker.com/compose/) to spawn a pair of message publisher and subscriber nodes in separate containers connected through shared software defined network.
238 | 
239 | > Create the directory `~/ros_demos` and add the first `Dockerfile` example from above. In the same directory, also create file `compose.yaml` with the following that runs a C++ publisher with a Python subscriber:
240 | 
241 | ```yaml
242 | services:
243 |   talker:
244 |     build: ./
245 |     command: ros2 run demo_nodes_cpp talker
246 | 
247 |   listener:
248 |     build: ./
249 |     environment:
250 |       - "PYTHONUNBUFFERED=1"
251 |     command: ros2 run demo_nodes_py listener
252 | ```
253 | 
254 | > Use `docker compose` inside the same directory to launch our ROS nodes. Given the containers created derive from the same docker compose project, they will coexist on shared project network:
255 | 
256 | ```console
257 | $ docker compose up -d
258 | ```
259 | 
260 | > Notice that a new network named `ros_demos_default` has been created, as can be shown further with:
261 | 
262 | ```console
263 | $ docker network inspect ros_demos_default
264 | ```
265 | 
266 | > We can monitor the logged output of each container, such as the listener node like so:
267 | 
268 | ```console
269 | $ docker compose logs listener
270 | ```
271 | 
272 | > Finally, we can stop and remove all the relevant containers using `docker compose` from the same directory:
273 | 
274 | ```console
275 | $ docker compose stop
276 | $ docker compose rm
277 | ```
278 | 
279 | > Note: the auto-generated network, `ros_demos_default`, will persist until you explicitly remove it using `docker compose down`.
280 | 
281 | ### ROS 1 Bridge
282 | 
283 | To ease ROS 2 migration, [`ros1_bridge`](https://index.ros.org/p/ros1_bridge) is a ROS 2 package that provides bidirectional communication between ROS 1 and ROS 2. As a minimal example, given the ROS 2 Dockerfile above, we'll create the ROS 1 equivalent below, and name the Dockerfile appropriately.
284 | 
285 | ```dockerfile
286 | FROM ros:noetic
287 | 
288 | # install ros package
289 | RUN apt-get update && apt-get install -y \
290 |       ros-${ROS_DISTRO}-ros-tutorials \
291 |       ros-${ROS_DISTRO}-common-tutorials && \
292 |     rm -rf /var/lib/apt/lists/*
293 | 
294 | # launch ros package
295 | CMD ["roslaunch", "roscpp_tutorials", "talker_listener_launch"]
296 | ```
297 | 
298 | The compose file bellow spawns services for both talker listener demos while connecting the two via a dynamic bridge. You may then view the log output from both pairs of talker and listener nodes cross talking over the `/chatter` topic.
299 | 
300 | ```yaml
301 | services:
302 |   ros1:
303 |     build:
304 |       context: ./
305 |       dockerfile: ros1.Dockerfile
306 | 
307 |   ros2:
308 |     build:
309 |       context: ./
310 |       dockerfile: ros2.Dockerfile
311 | 
312 |   bridge:
313 |     image: ros:foxy-ros1-bridge
314 |     environment:
315 |       - "ROS_HOSTNAME=bridge"
316 |       - "ROS_MASTER_URI=http://ros1:11311"
317 |     command: ros2 run ros1_bridge dynamic_bridge
318 | ```
319 | 
320 | # More Resources
321 | 
322 | [ROS.org](http://www.ros.org/): Main ROS website  
323 | [Q&A](https://answers.ros.org/questions/): Ask questions. Get answers  
324 | [Forums](https://discourse.ros.org/): Hear the latest discussions  
325 | [Blog](http://www.ros.org/news/): Stay up-to-date  
326 | [Packages](https://index.ros.org/?search_packages=true): Discover indexed packages  
327 | [OSRF](https://www.osrfoundation.org/): Open Source Robotics Foundation
328 | 
329 | ## ROS 2
330 | 
331 | [Index](https://docs.ros.org): ROS 2 Documentation  
332 | [Design](https://design.ros2.org/): ROS 2 Design Articles
333 | 
334 | ## ROS 1
335 | 
336 | [Wiki](http://wiki.ros.org/Documentation): ROS 1 Documentation
337 | 
338 | # License
339 | 
340 | View [package index](https://index.ros.org/packages/) for license information on software contained in this image.
341 | 
342 | 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).
343 | 
344 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `ros/` directory](https://github.com/docker-library/repo-info/tree/master/repos/ros).
345 | 
346 | 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.
347 | 
```
--------------------------------------------------------------------------------
/wordpress/README.md:
--------------------------------------------------------------------------------
```markdown
  1 | <!--
  2 | 
  3 | ********************************************************************************
  4 | 
  5 | WARNING:
  6 | 
  7 |     DO NOT EDIT "wordpress/README.md"
  8 | 
  9 |     IT IS AUTO-GENERATED
 10 | 
 11 |     (from the other files in "wordpress/" 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/wordpress)
 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 | -	[`6.8.1-php8.1-apache`, `6.8-php8.1-apache`, `6-php8.1-apache`, `php8.1-apache`, `6.8.1-php8.1`, `6.8-php8.1`, `6-php8.1`, `php8.1`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.1/apache/Dockerfile)
 28 | 
 29 | -	[`6.8.1-php8.1-fpm`, `6.8-php8.1-fpm`, `6-php8.1-fpm`, `php8.1-fpm`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.1/fpm/Dockerfile)
 30 | 
 31 | -	[`6.8.1-php8.1-fpm-alpine`, `6.8-php8.1-fpm-alpine`, `6-php8.1-fpm-alpine`, `php8.1-fpm-alpine`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.1/fpm-alpine/Dockerfile)
 32 | 
 33 | -	[`6.8.1-apache`, `6.8-apache`, `6-apache`, `apache`, `6.8.1`, `6.8`, `6`, `latest`, `6.8.1-php8.2-apache`, `6.8-php8.2-apache`, `6-php8.2-apache`, `php8.2-apache`, `6.8.1-php8.2`, `6.8-php8.2`, `6-php8.2`, `php8.2`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.2/apache/Dockerfile)
 34 | 
 35 | -	[`6.8.1-fpm`, `6.8-fpm`, `6-fpm`, `fpm`, `6.8.1-php8.2-fpm`, `6.8-php8.2-fpm`, `6-php8.2-fpm`, `php8.2-fpm`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.2/fpm/Dockerfile)
 36 | 
 37 | -	[`6.8.1-fpm-alpine`, `6.8-fpm-alpine`, `6-fpm-alpine`, `fpm-alpine`, `6.8.1-php8.2-fpm-alpine`, `6.8-php8.2-fpm-alpine`, `6-php8.2-fpm-alpine`, `php8.2-fpm-alpine`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.2/fpm-alpine/Dockerfile)
 38 | 
 39 | -	[`6.8.1-php8.3-apache`, `6.8-php8.3-apache`, `6-php8.3-apache`, `php8.3-apache`, `6.8.1-php8.3`, `6.8-php8.3`, `6-php8.3`, `php8.3`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.3/apache/Dockerfile)
 40 | 
 41 | -	[`6.8.1-php8.3-fpm`, `6.8-php8.3-fpm`, `6-php8.3-fpm`, `php8.3-fpm`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.3/fpm/Dockerfile)
 42 | 
 43 | -	[`6.8.1-php8.3-fpm-alpine`, `6.8-php8.3-fpm-alpine`, `6-php8.3-fpm-alpine`, `php8.3-fpm-alpine`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.3/fpm-alpine/Dockerfile)
 44 | 
 45 | -	[`6.8.1-php8.4-apache`, `6.8-php8.4-apache`, `6-php8.4-apache`, `php8.4-apache`, `6.8.1-php8.4`, `6.8-php8.4`, `6-php8.4`, `php8.4`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.4/apache/Dockerfile)
 46 | 
 47 | -	[`6.8.1-php8.4-fpm`, `6.8-php8.4-fpm`, `6-php8.4-fpm`, `php8.4-fpm`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.4/fpm/Dockerfile)
 48 | 
 49 | -	[`6.8.1-php8.4-fpm-alpine`, `6.8-php8.4-fpm-alpine`, `6-php8.4-fpm-alpine`, `php8.4-fpm-alpine`](https://github.com/docker-library/wordpress/blob/b8721d7271bf763d999285985277d61e78c584aa/latest/php8.4/fpm-alpine/Dockerfile)
 50 | 
 51 | -	[`cli-2.12.0-php8.1`, `cli-2.12-php8.1`, `cli-2-php8.1`, `cli-php8.1`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.1/alpine/Dockerfile)
 52 | 
 53 | -	[`cli-2.12.0`, `cli-2.12`, `cli-2`, `cli`, `cli-2.12.0-php8.2`, `cli-2.12-php8.2`, `cli-2-php8.2`, `cli-php8.2`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.2/alpine/Dockerfile)
 54 | 
 55 | -	[`cli-2.12.0-php8.3`, `cli-2.12-php8.3`, `cli-2-php8.3`, `cli-php8.3`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.3/alpine/Dockerfile)
 56 | 
 57 | -	[`cli-2.12.0-php8.4`, `cli-2.12-php8.4`, `cli-2-php8.4`, `cli-php8.4`](https://github.com/docker-library/wordpress/blob/50da133eabc137fa07c620c77788c1237cf55c8b/cli/php8.4/alpine/Dockerfile)
 58 | 
 59 | # Quick reference (cont.)
 60 | 
 61 | -	**Where to file issues**:  
 62 | 	[https://github.com/docker-library/wordpress/issues](https://github.com/docker-library/wordpress/issues?q=)
 63 | 
 64 | -	**Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))  
 65 | 	[`amd64`](https://hub.docker.com/r/amd64/wordpress/), [`arm32v5`](https://hub.docker.com/r/arm32v5/wordpress/), [`arm32v6`](https://hub.docker.com/r/arm32v6/wordpress/), [`arm32v7`](https://hub.docker.com/r/arm32v7/wordpress/), [`arm64v8`](https://hub.docker.com/r/arm64v8/wordpress/), [`i386`](https://hub.docker.com/r/i386/wordpress/), [`mips64le`](https://hub.docker.com/r/mips64le/wordpress/), [`ppc64le`](https://hub.docker.com/r/ppc64le/wordpress/), [`riscv64`](https://hub.docker.com/r/riscv64/wordpress/), [`s390x`](https://hub.docker.com/r/s390x/wordpress/)
 66 | 
 67 | -	**Published image artifact details**:  
 68 | 	[repo-info repo's `repos/wordpress/` directory](https://github.com/docker-library/repo-info/blob/master/repos/wordpress) ([history](https://github.com/docker-library/repo-info/commits/master/repos/wordpress))  
 69 | 	(image metadata, transfer size, etc)
 70 | 
 71 | -	**Image updates**:  
 72 | 	[official-images repo's `library/wordpress` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fwordpress)  
 73 | 	[official-images repo's `library/wordpress` file](https://github.com/docker-library/official-images/blob/master/library/wordpress) ([history](https://github.com/docker-library/official-images/commits/master/library/wordpress))
 74 | 
 75 | -	**Source of this description**:  
 76 | 	[docs repo's `wordpress/` directory](https://github.com/docker-library/docs/tree/master/wordpress) ([history](https://github.com/docker-library/docs/commits/master/wordpress))
 77 | 
 78 | # What is WordPress?
 79 | 
 80 | WordPress is a free and open source blogging tool and a content management system (CMS) based on PHP and MySQL, which runs on a web hosting service. Features include a plugin architecture and a template system. WordPress is used by more than 22.0% of the top 10 million websites as of August 2013. WordPress is the most popular blogging system in use on the Web, at more than 60 million websites. The most popular languages used are English, Spanish and Bahasa Indonesia.
 81 | 
 82 | > [wikipedia.org/wiki/WordPress](https://en.wikipedia.org/wiki/WordPress)
 83 | 
 84 | 
 85 | 
 86 | # How to use this image
 87 | 
 88 | ```console
 89 | $ docker run --name some-wordpress --network some-network -d wordpress
 90 | ```
 91 | 
 92 | The following environment variables are also honored for configuring your WordPress instance (by [a custom `wp-config.php` implementation](https://github.com/docker-library/wordpress/blob/master/wp-config-docker.php)):
 93 | 
 94 | -	`-e WORDPRESS_DB_HOST=...`
 95 | -	`-e WORDPRESS_DB_USER=...`
 96 | -	`-e WORDPRESS_DB_PASSWORD=...`
 97 | -	`-e WORDPRESS_DB_NAME=...`
 98 | -	`-e WORDPRESS_TABLE_PREFIX=...`
 99 | -	`-e WORDPRESS_AUTH_KEY=...`, `-e WORDPRESS_SECURE_AUTH_KEY=...`, `-e WORDPRESS_LOGGED_IN_KEY=...`, `-e WORDPRESS_NONCE_KEY=...`, `-e WORDPRESS_AUTH_SALT=...`, `-e WORDPRESS_SECURE_AUTH_SALT=...`, `-e WORDPRESS_LOGGED_IN_SALT=...`, `-e WORDPRESS_NONCE_SALT=...` (default to unique random SHA1s, but only if other environment variable configuration is provided)
100 | -	`-e WORDPRESS_DEBUG=1` (defaults to disabled, non-empty value will enable `WP_DEBUG` in `wp-config.php`)
101 | -	`-e WORDPRESS_CONFIG_EXTRA=...` (defaults to nothing, the value will be evaluated by the `eval()` function in `wp-config.php`. This variable is especially useful for applying extra configuration values this image does not provide by default such as `WP_ALLOW_MULTISITE`; see [docker-library/wordpress#142](https://github.com/docker-library/wordpress/pull/142) for more details)
102 | 
103 | The `WORDPRESS_DB_NAME` needs to already exist on the given MySQL server; it will not be created by the `wordpress` container.
104 | 
105 | 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:
106 | 
107 | ```console
108 | $ docker run --name some-wordpress -p 8080:80 -d wordpress
109 | ```
110 | 
111 | Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser.
112 | 
113 | When running WordPress with TLS behind a reverse proxy such as NGINX which is responsible for doing TLS termination, be sure to set `X-Forwarded-Proto` appropriately (see ["Using a Reverse Proxy" in "Administration Over SSL" in upstream's documentation](https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy)). No additional environment variables or configuration should be necessary (this image automatically adds the noted `HTTP_X_FORWARDED_PROTO` code to `wp-config.php` if *any* of the above-noted environment variables are specified).
114 | 
115 | If your database requires SSL, [WordPress ticket #28625](https://core.trac.wordpress.org/ticket/28625) has the relevant details regarding support for that with WordPress upstream. As a workaround, [the "Secure DB Connection" plugin](https://wordpress.org/plugins/secure-db-connection/) can be extracted into the WordPress directory and the appropriate values described in the configuration of that plugin added in `wp-config.php`.
116 | 
117 | ## Docker Secrets
118 | 
119 | As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/<secret_name>` files. For example:
120 | 
121 | ```console
122 | $ docker run --name some-wordpress -e WORDPRESS_DB_PASSWORD_FILE=/run/secrets/mysql-root ... -d wordpress:tag
123 | ```
124 | 
125 | Currently, this is supported for `WORDPRESS_DB_HOST`, `WORDPRESS_DB_USER`, `WORDPRESS_DB_PASSWORD`, `WORDPRESS_DB_NAME`, `WORDPRESS_AUTH_KEY`, `WORDPRESS_SECURE_AUTH_KEY`, `WORDPRESS_LOGGED_IN_KEY`, `WORDPRESS_NONCE_KEY`, `WORDPRESS_AUTH_SALT`, `WORDPRESS_SECURE_AUTH_SALT`, `WORDPRESS_LOGGED_IN_SALT`, `WORDPRESS_NONCE_SALT`, `WORDPRESS_TABLE_PREFIX`, and `WORDPRESS_DEBUG`.
126 | 
127 | ## ... via [`docker compose`](https://github.com/docker/compose)
128 | 
129 | Example `compose.yaml` for `wordpress`:
130 | 
131 | ```yaml
132 | services:
133 | 
134 |   wordpress:
135 |     image: wordpress
136 |     restart: always
137 |     ports:
138 |       - 8080:80
139 |     environment:
140 |       WORDPRESS_DB_HOST: db
141 |       WORDPRESS_DB_USER: exampleuser
142 |       WORDPRESS_DB_PASSWORD: examplepass
143 |       WORDPRESS_DB_NAME: exampledb
144 |     volumes:
145 |       - wordpress:/var/www/html
146 | 
147 |   db:
148 |     image: mysql:8.0
149 |     restart: always
150 |     environment:
151 |       MYSQL_DATABASE: exampledb
152 |       MYSQL_USER: exampleuser
153 |       MYSQL_PASSWORD: examplepass
154 |       MYSQL_RANDOM_ROOT_PASSWORD: '1'
155 |     volumes:
156 |       - db:/var/lib/mysql
157 | 
158 | volumes:
159 |   wordpress:
160 |   db:
161 | ```
162 | 
163 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
164 | 
165 | ## Adding additional libraries / extensions
166 | 
167 | This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins (e.g. [it cannot send e-mails](https://github.com/docker-library/wordpress/issues/30)). There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size.
168 | 
169 | If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, [an older `Dockerfile` for `wordpress`](https://github.com/docker-library/wordpress/blob/618490d4bdff6c5774b84b717979bfe3d6ba8ad1/apache/Dockerfile#L5-L9) has a simplified example of doing this and [a newer version of that same `Dockerfile`](https://github.com/docker-library/wordpress/blob/5bbbfa8909232af10ea3fea8b80302a6041a2d04/latest/php7.4/apache/Dockerfile#L18-L62) has a much more thorough example.
170 | 
171 | ## Include pre-installed themes / plugins
172 | 
173 | Mount the volume containing your themes or plugins to the proper directory; and then apply them through the "wp-admin" UI. Ensure read/write/execute permissions are in place for the user:
174 | 
175 | -	Themes go in a subdirectory in `/var/www/html/wp-content/themes/`
176 | -	Plugins go in a subdirectory in `/var/www/html/wp-content/plugins/`
177 | 
178 | If you wish to provide additional content in an image for deploying in multiple installations, place it in the same directories under `/usr/src/wordpress/` instead (which gets copied to `/var/www/html/` on the container's initial startup).
179 | 
180 | ## Static image / updates-via-redeploy
181 | 
182 | The default configuration for this image matches the official WordPress defaults in which automatic updates are enabled (so the initial install comes from the image, but after that it becomes self-managing within the `/var/www/html/` data volume).
183 | 
184 | If you wish to have a more static deployment (similar to other containerized applications) and deploy new containers to update WordPress + themes/plugins, then you'll want to use something like the following (and run the resulting image read-only):
185 | 
186 | ```dockerfile
187 | FROM wordpress:apache
188 | WORKDIR /usr/src/wordpress
189 | RUN set -eux; \
190 | 	find /etc/apache2 -name '*.conf' -type f -exec sed -ri -e "s!/var/www/html!$PWD!g" -e "s!Directory /var/www/!Directory $PWD!g" '{}' +; \
191 | 	cp -s wp-config-docker.php wp-config.php
192 | COPY custom-theme/ ./wp-content/themes/custom-theme/
193 | COPY custom-plugin/ ./wp-content/plugins/custom-plugin/
194 | ```
195 | 
196 | For FPM-based images, remove the `find` instruction and adjust the `SCRIPT_FILENAME` paths in your reverse proxy from `/var/www/html` to `/usr/src/wordpress`.
197 | 
198 | Run the result read-only, providing writeable storage for `/tmp`, `/run`, and (optionally) `wp-content/uploads`:
199 | 
200 | ```console
201 | $ docker run ... \
202 | 	--read-only \
203 | 	--tmpfs /tmp \
204 | 	--tmpfs /run \
205 | 	--mount type=...,src=...,dst=/usr/src/wordpress/wp-content/uploads \
206 | 	... \
207 | 	--env WORDPRESS_DB_HOST=... \
208 | 	--env WORDPRESS_AUTH_KEY=... \
209 | 	--env ... \
210 | 	custom-wordpress:tag
211 | ```
212 | 
213 | **Note:** be sure to rebuild and redeploy regularly to ensure you get all the latest WordPress security updates.
214 | 
215 | ## Running as an arbitrary user
216 | 
217 | See [the "Running as an arbitrary user" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#running-as-an-arbitrary-user).
218 | 
219 | When running WP-CLI via the `cli` variants of this image, it is important to note that they're based on Alpine, and have a default `USER` of Alpine's `www-data`, whose UID is `82` (compared to the Debian-based WordPress variants whose default effective UID is `33`), so when running `wordpress:cli` against an existing Debian-based WordPress install, something like `--user 33:33` is likely going to be necessary (possibly also something like `-e HOME=/tmp` depending on the `wp` command invoked and whether it tries to use `~/.wp-cli`). See [docker-library/wordpress#256](https://github.com/docker-library/wordpress/issues/256) for more discussion around this.
220 | 
221 | ## Configuring PHP directives
222 | 
223 | See [the "Configuration" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#configuration).
224 | 
225 | For example, to adjust common `php.ini` flags like `upload_max_filesize`, you could create a `custom.ini` with the desired parameters and place it in the `$PHP_INI_DIR/conf.d/` directory:
226 | 
227 | ```dockerfile
228 | FROM wordpress:tag
229 | COPY custom.ini $PHP_INI_DIR/conf.d/
230 | ```
231 | 
232 | # Image Variants
233 | 
234 | The `wordpress` images come in many flavors, each designed for a specific use case.
235 | 
236 | ## `wordpress:<version>`
237 | 
238 | 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.
239 | 
240 | ## `wordpress:<version>-fpm`
241 | 
242 | This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP.
243 | 
244 | In order to use this image variant, some kind of reverse proxy (such as NGINX, Apache, or other tool which speaks the FastCGI protocol) will be required.
245 | 
246 | Some potentially helpful resources:
247 | 
248 | -	[FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php)
249 | -	[Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0)
250 | -	[Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/)
251 | -	[Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558)
252 | -	[Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress)
253 | 
254 | **WARNING:** the FastCGI protocol is inherently trusting, and thus *extremely* insecure to expose outside of a private container network -- unless you know *exactly* what you are doing (and are willing to accept the extreme risk), do not use Docker's `--publish` (`-p`) flag with this image variant.
255 | 
256 | ## `wordpress:cli`
257 | 
258 | This image variant does not contain WordPress itself, but instead contains [WP-CLI](https://wp-cli.org).
259 | 
260 | The simplest way to use it with an existing WordPress container would be something similar to the following:
261 | 
262 | ```console
263 | $ docker run -it --rm \
264 | 	--volumes-from some-wordpress \
265 | 	--network container:some-wordpress \
266 | 	-e WORDPRESS_DB_USER=... \
267 | 	-e WORDPRESS_DB_PASSWORD=... \
268 | 	# [and other used environment variables]
269 | 	wordpress:cli user list
270 | ```
271 | 
272 | Generally speaking, for WP-CLI to interact with a WordPress install, it needs access to the on-disk files of the WordPress install, and access to the database (and the easiest way to accomplish that such that `wp-config.php` does not require changes is to simply join the networking context of the existing and presumably working WordPress container, but there are many other ways to accomplish that which will be left as an exercise for the reader).
273 | 
274 | **NOTE:** Since March 2021, WordPress images use a customized `wp-config.php` that pulls the values directly from the environment variables defined above (see `wp-config-docker.php` in [docker-library/wordpress#572](https://github.com/docker-library/wordpress/pull/572) and [docker-library/wordpress#577](https://github.com/docker-library/wordpress/pull/577)). As a result of reading environment variables directly, the cli container also needs the same set of environment variables to properly evaluate `wp-config.php`.
275 | 
276 | # License
277 | 
278 | View [license information](https://wordpress.org/about/license/) for the software contained in this image.
279 | 
280 | 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).
281 | 
282 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `wordpress/` directory](https://github.com/docker-library/repo-info/tree/master/repos/wordpress).
283 | 
284 | 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.
285 | 
```
--------------------------------------------------------------------------------
/mariadb/README.md:
--------------------------------------------------------------------------------
```markdown
  1 | <!--
  2 | 
  3 | ********************************************************************************
  4 | 
  5 | WARNING:
  6 | 
  7 |     DO NOT EDIT "mariadb/README.md"
  8 | 
  9 |     IT IS AUTO-GENERATED
 10 | 
 11 |     (from the other files in "mariadb/" combined with a set of templates)
 12 | 
 13 | ********************************************************************************
 14 | 
 15 | -->
 16 | 
 17 | # Quick reference
 18 | 
 19 | -	**Maintained by**:  
 20 | 	[MariaDB Foundation](https://mariadb.org), [MariaDB plc](https://mariadb.com), with contributions from our [community](https://github.com/MariaDB/mariadb-docker)
 21 | 
 22 | -	**Where to get help**:  
 23 | 	[Database Adminstrators (Stack Exchange)](https://dba.stackexchange.com/questions/tagged/docker+mariadb), [MariaDB Knowledge Base](https://mariadb.com/kb/en/docker-and-mariadb/) ([Ask a Question here](https://mariadb.com/kb/en/docker-and-mariadb/ask)).
 24 | 
 25 | Also see the ["Getting Help with MariaDB" article on the MariaDB Knowledge Base](https://mariadb.com/kb/en/getting-help-with-mariadb/).
 26 | 
 27 | # Supported tags and respective `Dockerfile` links
 28 | 
 29 | -	[`11.8.1-ubi9-rc`, `11.8-ubi9-rc`, `11.8.1-ubi-rc`, `11.8-ubi-rc`](https://github.com/MariaDB/mariadb-docker/blob/2d5103917774c4c53ec6bf3c6fdfc7b210e85690/11.8-ubi/Dockerfile)
 30 | 
 31 | -	[`11.8.1-noble-rc`, `11.8-noble-rc`, `11.8.1-rc`, `11.8-rc`](https://github.com/MariaDB/mariadb-docker/blob/2d5103917774c4c53ec6bf3c6fdfc7b210e85690/11.8/Dockerfile)
 32 | 
 33 | -	[`11.7.2-ubi9`, `11.7-ubi9`, `11-ubi9`, `11.7.2-ubi`, `11.7-ubi`, `11-ubi`](https://github.com/MariaDB/mariadb-docker/blob/853447019725b35685d5ec3c007096a266399bea/11.7-ubi/Dockerfile)
 34 | 
 35 | -	[`11.7.2-noble`, `11.7-noble`, `11-noble`, `noble`, `11.7.2`, `11.7`, `11`, `latest`](https://github.com/MariaDB/mariadb-docker/blob/853447019725b35685d5ec3c007096a266399bea/11.7/Dockerfile)
 36 | 
 37 | -	[`11.4.5-ubi9`, `11.4-ubi9`, `lts-ubi9`, `11.4.5-ubi`, `11.4-ubi`, `lts-ubi`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/11.4-ubi/Dockerfile)
 38 | 
 39 | -	[`11.4.5-noble`, `11.4-noble`, `lts-noble`, `11.4.5`, `11.4`, `lts`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/11.4/Dockerfile)
 40 | 
 41 | -	[`10.11.11-ubi9`, `10.11-ubi9`, `10-ubi9`, `10.11.11-ubi`, `10.11-ubi`, `10-ubi`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/10.11-ubi/Dockerfile)
 42 | 
 43 | -	[`10.11.11-jammy`, `10.11-jammy`, `10-jammy`, `10.11.11`, `10.11`, `10`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/10.11/Dockerfile)
 44 | 
 45 | -	[`10.6.21-ubi9`, `10.6-ubi9`, `10.6.21-ubi`, `10.6-ubi`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/10.6-ubi/Dockerfile)
 46 | 
 47 | -	[`10.6.21-focal`, `10.6-focal`, `10.6.21`, `10.6`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/10.6/Dockerfile)
 48 | 
 49 | -	[`10.5.28-focal`, `10.5-focal`, `10.5.28`, `10.5`](https://github.com/MariaDB/mariadb-docker/blob/3bfeae408bde492aad0444cbb13d55a70ceec6e5/10.5/Dockerfile)
 50 | 
 51 | # Quick reference (cont.)
 52 | 
 53 | -	**Where to file issues**:  
 54 | 	Issues can be filed on [https://jira.mariadb.org/](https://jira.mariadb.org/) under the "MDEV" Project and "Docker" Component, or on [GitHub](https://github.com/MariaDB/mariadb-docker/issues)
 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/mariadb/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mariadb/), [`ppc64le`](https://hub.docker.com/r/ppc64le/mariadb/), [`s390x`](https://hub.docker.com/r/s390x/mariadb/)
 58 | 
 59 | -	**Published image artifact details**:  
 60 | 	[repo-info repo's `repos/mariadb/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mariadb) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mariadb))  
 61 | 	(image metadata, transfer size, etc)
 62 | 
 63 | -	**Image updates**:  
 64 | 	[official-images repo's `library/mariadb` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmariadb)  
 65 | 	[official-images repo's `library/mariadb` file](https://github.com/docker-library/official-images/blob/master/library/mariadb) ([history](https://github.com/docker-library/official-images/commits/master/library/mariadb))
 66 | 
 67 | -	**Source of this description**:  
 68 | 	[docs repo's `mariadb/` directory](https://github.com/docker-library/docs/tree/master/mariadb) ([history](https://github.com/docker-library/docs/commits/master/mariadb))
 69 | 
 70 | # What is MariaDB?
 71 | 
 72 | MariaDB Server is one of the most popular database servers in the world. It's made by the original developers of MySQL and guaranteed to stay open source. Notable users include Wikipedia, DBS Bank, and ServiceNow.
 73 | 
 74 | The intent is also to maintain high compatibility with MySQL, ensuring a library binary equivalency and exact matching with MySQL APIs and commands. MariaDB developers continue to develop new features and improve performance to better serve its users.
 75 | 
 76 | 
 77 | 
 78 | # How to use this image
 79 | 
 80 | The mariadb has a number of tags, and of note is `latest`, as the latest stable version, and `lts`, as the last long term support release.
 81 | 
 82 | ## Running the container
 83 | 
 84 | ### Configuration
 85 | 
 86 | #### Port binding
 87 | 
 88 | By default, the database running within the container will listen on port 3306. You can expose the container port 3306 to the host port 3306 with the `-p 3306:3306` argument to `docker run`, like the command below:
 89 | 
 90 | ```console
 91 | $ docker run --name some-mariadb -p 3306:3306 mariadb:latest
 92 | ```
 93 | 
 94 | ### Starting using a minimal configuration
 95 | 
 96 | The environment variables required to use this image involves the setting of the root user password:
 97 | 
 98 | ```console
 99 | $ docker run --detach --name some-mariadb --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
100 | ```
101 | 
102 | or:
103 | 
104 | ```console
105 | $ docker run --detach --name some-mariadb --env MARIADB_ALLOW_EMPTY_ROOT_PASSWORD=1 mariadb:latest
106 | ```
107 | 
108 | or:
109 | 
110 | ```console
111 | $ docker run --detach --name some-mariadb --env MARIADB_RANDOM_ROOT_PASSWORD=1 mariadb:latest
112 | ```
113 | 
114 | ... where the container logs will contain the generated root password.
115 | 
116 | ## ... via [`docker compose`](https://github.com/docker/compose)
117 | 
118 | Example `compose.yaml` for `mariadb`:
119 | 
120 | ```yaml
121 | # Use root/example as user/password credentials
122 | 
123 | services:
124 | 
125 |   db:
126 |     image: mariadb
127 |     restart: always
128 |     environment:
129 |       MARIADB_ROOT_PASSWORD: example
130 | 
131 |   adminer:
132 |     image: adminer
133 |     restart: always
134 |     ports:
135 |       - 8080:8080
136 | ```
137 | 
138 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
139 | 
140 | ### Start a `mariadb` server instance with user, password and database
141 | 
142 | Starting a MariaDB instance with a user, password, and a database:
143 | 
144 | ```console
145 | $ docker run --detach --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_DATABASE=exmple-database --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
146 | ```
147 | 
148 | ### Start a `mariadb` server instance in a network
149 | 
150 | As applications talk to MariaDB, MariaDB needs to start in the same network as the application:
151 | 
152 | ```console
153 | $ docker network create some-network 
154 | $ docker run --detach --network some-network --name some-mariadb --env MARIADB_USER=example-user --env MARIADB_PASSWORD=my_cool_secret --env MARIADB_ROOT_PASSWORD=my-secret-pw mariadb:latest
155 | $ docker run --detach --network some-network --name some-application --env APP_DB_HOST=some-mariadb --env APP_DB_USER=example-user --env APP_DB_PASSWD=my_cool_secret some-application
156 | ```
157 | 
158 | ... where `some-network` is a newly created network (other than `bridge` as the default network), `some-mariadb` is the name you want to assign to your container, `my-secret-pw` is the password to be set for the MariaDB root user. See the list above for relevant tags to match your needs and environment. `some-application` and then environment variable `APP_DB_HOST`, `APP_DB_USER` and `APP_DB_PASSWD` are the application's configuration for its database connection.
159 | 
160 | ## Connect to MariaDB from the MariaDB command line client
161 | 
162 | The following command starts another `mariadb` container instance and runs the `mariadb` command line client against your original `mariadb` container, allowing you to execute SQL statements against your database instance:
163 | 
164 | ```console
165 | $ docker run -it --network some-network --rm mariadb mariadb -h some-mariadb -u example-user
166 | ```
167 | 
168 | ... where `some-mariadb` is the name of your original `mariadb` container (connected to the `some-network` Docker network).
169 | 
170 | This image can also be used as a client for non-Docker or remote instances:
171 | 
172 | ```console
173 | $ docker run -it --rm mariadb mariadb --host <server container IP> --user example-user --password --database test
174 | ```
175 | 
176 | That will give you a standard MariaDB prompt. You can test it with:
177 | 
178 | ```console
179 | MariaDB [(none)]> \s
180 | --------------
181 | client/mariadb  Ver 15.1 Distrib 10.6.16-MariaDB, for Linux (x86_64) using  EditLine wrapper
182 | 
183 | Connection id:		20
184 | Current database:	test
185 | Current user:		example-user@bark
186 | SSL:			Not in use
187 | Current pager:		stdout
188 | Using outfile:		''
189 | Using delimiter:	;
190 | Server:			MariaDB
191 | Server version:		10.6.16-MariaDB Source distribution
192 | Protocol version:	10
193 | Connection:		192.168.178.73 via TCP/IP
194 | Server characterset:	latin1
195 | Db     characterset:	latin1
196 | Client characterset:	utf8mb3
197 | Conn.  characterset:	utf8mb3
198 | TCP port:		3306
199 | Uptime:			6 min 4 sec
200 | 
201 | Threads: 1  Questions: 32  Slow queries: 0  Opens: 20  Open tables: 13  Queries per second avg: 0.087
202 | --------------
203 | ```
204 | 
205 | ... which will give you the version and connection information. You can then use `exit` to leave the MariaDB command line client and the client container.
206 | 
207 | More information about the MariaDB command-line client can be found in the [MariaDB Knowledge Base : MariaDB Command Line Client](https://mariadb.com/kb/en/mariadb-command-line-client/).
208 | 
209 | ## Container shell access
210 | 
211 | The `docker exec` command allows you to run commands inside the running container. The following command line will give you a bash shell inside your `mariadb` container:
212 | 
213 | ```console
214 | $ docker exec -it some-mariadb bash
215 | ```
216 | 
217 | ## MariaDB-Backup
218 | 
219 | As MariaDB-Backup is highly coupled with the server version, it can be useful to use the `mariadb-backup` in the mariadb container of an explicit version:
220 | 
221 | ```console
222 | $ docker run --volume /backup-volume:/backup --rm mariadb:10.6.15 mariadb-backup --help
223 | ```
224 | 
225 | ## Container viewing MariaDB logs
226 | 
227 | The log is available through Docker's container log:
228 | 
229 | ```console
230 | $ docker logs some-mariadb
231 | ```
232 | 
233 | ## Using a custom MariaDB configuration file
234 | 
235 | Custom configuration files should end in `.cnf` and be mounted read only at the directory `/etc/mysql/conf.d`. These files should contain the minimal changes from the MariaDB workload required for your application/environment. A MariaDB configuration file will have a `[mariadb]` group followed by `variable` = `value` settings per [Setting Server System Variables](https://mariadb.com/kb/en/server-system-variables/#setting-server-system-variables) or [option-prefix-variable](https://mariadb.com/kb/en/configuring-mariadb-with-option-files/#option-prefixes).
236 | 
237 | The `mariadb` image configuration contains the Ubuntu MariaDB variables with two custom changes for the container:
238 | 
239 | 	[host-cache-size=0](https://mariadb.com/kb/en/server-system-variables/#host_cache_size)
240 | 	[skip-name-resolve](https://mariadb.com/kb/en/server-system-variables/#skip_name_resolve)
241 | 
242 | These disable the authentication of `user@hostname` users. To re-enable the `skip-name-resolve` use `disable-skip-name-resolve` as variable or argument. When enabled, the `host-cache-size` should be sufficient for the number of containers connecting to the `mariadb`.
243 | 
244 | To view the resulting configuration of your `mariadb` container:
245 | 
246 | ```console
247 | $ docker run --name some-mariadb -v /my/custom:/etc/mysql/conf.d --rm mariadb:latest my_print_defaults --mysqld
248 | ```
249 | 
250 | ### Configuration without a `cnf` file
251 | 
252 | Many configuration options can be passed as flags to `mariadbd`. This will give you the flexibility to customize the container without needing a `cnf` file. For example, if you want to run on port 3808 just run the following:
253 | 
254 | ```console
255 | $ docker run --name some-mariadb -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest --port 3808
256 | ```
257 | 
258 | If you would like to see a complete list of available options, just run:
259 | 
260 | ```console
261 | $ docker run -it --rm mariadb:latest --verbose --help
262 | ```
263 | 
264 | ## Environment Variables
265 | 
266 | When you start the `mariadb` image, you can adjust the initialization of the MariaDB instance by passing one or more environment variables on the `docker run` command line. Do note that all of the variables, except `MARIADB_AUTO_UPGRADE`, will have no effect if you start the container with a data directory that already contains a database. I.e. any pre-existing database will always be left untouched on container startup.
267 | 
268 | One of `MARIADB_RANDOM_ROOT_PASSWORD`, `MARIADB_ROOT_PASSWORD_HASH`, `MARIADB_ROOT_PASSWORD` or `MARIADB_ALLOW_EMPTY_ROOT_PASSWORD` (or equivalents, including `*_FILE`), is required. The other environment variables are optional.
269 | 
270 | There is a large list of environment variables and the complete list is documented on [MariaDB's Knowledge Base : MariaDB Server Docker Official Image Environment Variables](https://mariadb.com/kb/en/mariadb-server-docker-official-image-environment-variables/).
271 | 
272 | ### `MARIADB_AUTO_UPGRADE`
273 | 
274 | When this environment variable is set, this will run the [mariadb-upgrade](https://mariadb.com/kb/en/mariadb-upgrade/), if needed, so any changes in the MariaDB system tables required to expose new features will be made. This may impeed some [downgrade options](https://mariadb.com/kb/en/downgrading-between-major-versions-of-mariadb/). Unless the environment variable `MARIADB_DISABLE_UPGRADE_BACKUP` is set, there will be a backup of the system tables created as `system_mysql_backup_*.sql.zst` in the top level of the data directory to assist in the downgrade if needed.
275 | 
276 | ## Secrets
277 | 
278 | As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/<secret_name>` files. For example:
279 | 
280 | ```console
281 | $ docker run --name some-mysql -e MARIADB_ROOT_PASSWORD_FILE=/run/secrets/mariadb-root -d mariadb:latest
282 | ```
283 | 
284 | # Initializing the database contents
285 | 
286 | When a container is started for the first time, a new database with the specified name will be created and initialized with the provided configuration variables. Furthermore, it will execute files with extensions `.sh`, `.sql`, `.sql.gz`, `.sql.xz` and `.sql.zst` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.sh` files without file execute permission are sourced rather than executed. You can easily populate your `mariadb` services by [mounting a SQL dump into that directory](https://docs.docker.com/storage/bind-mounts/) and provide [custom images](https://docs.docker.com/reference/dockerfile/) with contributed data. SQL files will be imported by default to the database specified by the `MARIADB_DATABASE` variable.
287 | 
288 | # Caveats
289 | 
290 | ## Where to Store Data
291 | 
292 | Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `mariadb` images to familiarize themselves with the options available, including:
293 | 
294 | -	Use a named volume using the container manager to manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers.
295 | -	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.
296 | 
297 | 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:
298 | 
299 | 1.	Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`.
300 | 2.	Start your `mariadb` container like this:
301 | 
302 | 	```console
303 | 	$ docker run --name some-mariadb -v /my/own/datadir:/var/lib/mysql:Z -e MARIADB_ROOT_PASSWORD=my-secret-pw -d mariadb:latest
304 | 	```
305 | 
306 | The `-v /my/own/datadir:/var/lib/mysql:Z` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/mysql` inside the container, where MariaDB by default will write its data files.
307 | 
308 | ## No connections until MariaDB init completes
309 | 
310 | 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.
311 | 
312 | ## Health/Liveness/Readiness Checking
313 | 
314 | See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) for why there is no default `HEALTHCHECK` directive. However, you can use the `healthcheck.sh` script to choose from a (non-exhaustive) list of tests to check for whatever you consider health/liveness/readiness. Refer to the [MariaDB Knowledge Base : Using Healthcheck.sh](https://mariadb.com/kb/en/using-healthcheck-sh-script/) to learn about how to use it and which exact tests are provided.
315 | 
316 | ## Usage against an existing database
317 | 
318 | If you start your `mariadb` container instance with a data directory that already contains a database (specifically, a `mysql` subdirectory), no environment variables that control initialization will be needed or examined, and no pre-existing databases will be changed. The only exception is the non-default `MARIADB_AUTO_UPGRADE` environment variable, that might cause `mysql_upgrade`/`mariadb-upgrade` to run, which might change the system tables.
319 | 
320 | ## Backups and Restores
321 | 
322 | Backing up and restoring databases is important in containers too. The documentation on how to do this can be found on the [MariaDB Knowledge Base : Container Backup and Restoration](https://mariadb.com/kb/en/backups-and-restoration/).
323 | 
324 | ## Frequently Asked Questions / How to reset root and user passwords
325 | 
326 | This is documented on [MariaDB Knowledge Base : Frequenty Asked Questions of Docker Official Image](https://mariadb.com/kb/en/frequenty-asked-questions-of-docker-official-image/#how-to-reset-passwords).
327 | 
328 | ## How to install MariaDB plugins
329 | 
330 | This is documented on [MariaDB Knowledge Base : Adding Plugins to the Docker Official Image](https://mariadb.com/kb/en/adding-plugins-to-the-mariadb-docker-official-image/).
331 | 
332 | # Related Images
333 | 
334 | -	[MariaDB MaxScale](https://hub.docker.com/r/mariadb/maxscale/tags)
335 | -	[MariaDB ColumnStore](https://hub.docker.com/r/mariadb/columnstore/tags)
336 | 
337 | # Compose File Examples
338 | 
339 | Example compose files using this `mariadb` are located in https://github.com/MariaDB/mariadb-docker in the `/examples` folder.
340 | 
341 | # License
342 | 
343 | View [license information](https://mariadb.com/kb/en/library/licensing-faq/) for the software contained in this image.
344 | 
345 | 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).
346 | 
347 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `mariadb/` directory](https://github.com/docker-library/repo-info/tree/master/repos/mariadb).
348 | 
349 | 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.
350 | 
```