This is page 14 of 25. Use http://codebase.md/id/docs/get_started/create/publish.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
--------------------------------------------------------------------------------
/hylang/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "hylang/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "hylang/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [Paul Tagliamonte, Hy BDFL](https://github.com/hylang/hy)
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.1.0-python3.13-bookworm`, `1.1-python3.13-bookworm`, `1-python3.13-bookworm`, `python3.13-bookworm`, `1.1.0-bookworm`, `1.1-bookworm`, `1-bookworm`, `bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-bookworm)
32 |
33 | - [`1.1.0-python3.13-bullseye`, `1.1-python3.13-bullseye`, `1-python3.13-bullseye`, `python3.13-bullseye`, `1.1.0-bullseye`, `1.1-bullseye`, `1-bullseye`, `bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-bullseye)
34 |
35 | - [`1.1.0-python3.13-alpine3.21`, `1.1-python3.13-alpine3.21`, `1-python3.13-alpine3.21`, `python3.13-alpine3.21`, `1.1.0-alpine3.21`, `1.1-alpine3.21`, `1-alpine3.21`, `alpine3.21`, `1.1.0-python3.13-alpine`, `1.1-python3.13-alpine`, `1-python3.13-alpine`, `python3.13-alpine`, `1.1.0-alpine`, `1.1-alpine`, `1-alpine`, `alpine`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-alpine3.21)
36 |
37 | - [`1.1.0-python3.13-alpine3.20`, `1.1-python3.13-alpine3.20`, `1-python3.13-alpine3.20`, `python3.13-alpine3.20`, `1.1.0-alpine3.20`, `1.1-alpine3.20`, `1-alpine3.20`, `alpine3.20`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-alpine3.20)
38 |
39 | - [`1.1.0-python3.13-windowsservercore-ltsc2025`, `1.1-python3.13-windowsservercore-ltsc2025`, `1-python3.13-windowsservercore-ltsc2025`, `python3.13-windowsservercore-ltsc2025`, `1.1.0-windowsservercore-ltsc2025`, `1.1-windowsservercore-ltsc2025`, `1-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-windowsservercore-ltsc2025)
40 |
41 | - [`1.1.0-python3.13-windowsservercore-ltsc2022`, `1.1-python3.13-windowsservercore-ltsc2022`, `1-python3.13-windowsservercore-ltsc2022`, `python3.13-windowsservercore-ltsc2022`, `1.1.0-windowsservercore-ltsc2022`, `1.1-windowsservercore-ltsc2022`, `1-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-windowsservercore-ltsc2022)
42 |
43 | - [`1.1.0-python3.13-windowsservercore-1809`, `1.1-python3.13-windowsservercore-1809`, `1-python3.13-windowsservercore-1809`, `python3.13-windowsservercore-1809`, `1.1.0-windowsservercore-1809`, `1.1-windowsservercore-1809`, `1-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-windowsservercore-1809)
44 |
45 | - [`1.1.0-python3.12-bookworm`, `1.1-python3.12-bookworm`, `1-python3.12-bookworm`, `python3.12-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-bookworm)
46 |
47 | - [`1.1.0-python3.12-bullseye`, `1.1-python3.12-bullseye`, `1-python3.12-bullseye`, `python3.12-bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-bullseye)
48 |
49 | - [`1.1.0-python3.12-alpine3.21`, `1.1-python3.12-alpine3.21`, `1-python3.12-alpine3.21`, `python3.12-alpine3.21`, `1.1.0-python3.12-alpine`, `1.1-python3.12-alpine`, `1-python3.12-alpine`, `python3.12-alpine`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-alpine3.21)
50 |
51 | - [`1.1.0-python3.12-alpine3.20`, `1.1-python3.12-alpine3.20`, `1-python3.12-alpine3.20`, `python3.12-alpine3.20`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-alpine3.20)
52 |
53 | - [`1.1.0-python3.12-windowsservercore-ltsc2025`, `1.1-python3.12-windowsservercore-ltsc2025`, `1-python3.12-windowsservercore-ltsc2025`, `python3.12-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-windowsservercore-ltsc2025)
54 |
55 | - [`1.1.0-python3.12-windowsservercore-ltsc2022`, `1.1-python3.12-windowsservercore-ltsc2022`, `1-python3.12-windowsservercore-ltsc2022`, `python3.12-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-windowsservercore-ltsc2022)
56 |
57 | - [`1.1.0-python3.12-windowsservercore-1809`, `1.1-python3.12-windowsservercore-1809`, `1-python3.12-windowsservercore-1809`, `python3.12-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-windowsservercore-1809)
58 |
59 | - [`1.1.0-python3.11-bookworm`, `1.1-python3.11-bookworm`, `1-python3.11-bookworm`, `python3.11-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.11-bookworm)
60 |
61 | - [`1.1.0-python3.11-bullseye`, `1.1-python3.11-bullseye`, `1-python3.11-bullseye`, `python3.11-bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.11-bullseye)
62 |
63 | - [`1.1.0-python3.11-alpine3.21`, `1.1-python3.11-alpine3.21`, `1-python3.11-alpine3.21`, `python3.11-alpine3.21`, `1.1.0-python3.11-alpine`, `1.1-python3.11-alpine`, `1-python3.11-alpine`, `python3.11-alpine`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.11-alpine3.21)
64 |
65 | - [`1.1.0-python3.11-alpine3.20`, `1.1-python3.11-alpine3.20`, `1-python3.11-alpine3.20`, `python3.11-alpine3.20`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.11-alpine3.20)
66 |
67 | - [`1.1.0-python3.10-bookworm`, `1.1-python3.10-bookworm`, `1-python3.10-bookworm`, `python3.10-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.10-bookworm)
68 |
69 | - [`1.1.0-python3.10-bullseye`, `1.1-python3.10-bullseye`, `1-python3.10-bullseye`, `python3.10-bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.10-bullseye)
70 |
71 | - [`1.1.0-python3.10-alpine3.21`, `1.1-python3.10-alpine3.21`, `1-python3.10-alpine3.21`, `python3.10-alpine3.21`, `1.1.0-python3.10-alpine`, `1.1-python3.10-alpine`, `1-python3.10-alpine`, `python3.10-alpine`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.10-alpine3.21)
72 |
73 | - [`1.1.0-python3.10-alpine3.20`, `1.1-python3.10-alpine3.20`, `1-python3.10-alpine3.20`, `python3.10-alpine3.20`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.10-alpine3.20)
74 |
75 | - [`1.1.0-python3.9-bookworm`, `1.1-python3.9-bookworm`, `1-python3.9-bookworm`, `python3.9-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.9-bookworm)
76 |
77 | - [`1.1.0-python3.9-bullseye`, `1.1-python3.9-bullseye`, `1-python3.9-bullseye`, `python3.9-bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.9-bullseye)
78 |
79 | - [`1.1.0-python3.9-alpine3.21`, `1.1-python3.9-alpine3.21`, `1-python3.9-alpine3.21`, `python3.9-alpine3.21`, `1.1.0-python3.9-alpine`, `1.1-python3.9-alpine`, `1-python3.9-alpine`, `python3.9-alpine`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.9-alpine3.21)
80 |
81 | - [`1.1.0-python3.9-alpine3.20`, `1.1-python3.9-alpine3.20`, `1-python3.9-alpine3.20`, `python3.9-alpine3.20`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.9-alpine3.20)
82 |
83 | - [`1.1.0-python3.14-rc-bookworm`, `1.1-python3.14-rc-bookworm`, `1-python3.14-rc-bookworm`, `python3.14-rc-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-bookworm)
84 |
85 | - [`1.1.0-python3.14-rc-bullseye`, `1.1-python3.14-rc-bullseye`, `1-python3.14-rc-bullseye`, `python3.14-rc-bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-bullseye)
86 |
87 | - [`1.1.0-python3.14-rc-alpine3.21`, `1.1-python3.14-rc-alpine3.21`, `1-python3.14-rc-alpine3.21`, `python3.14-rc-alpine3.21`, `1.1.0-python3.14-rc-alpine`, `1.1-python3.14-rc-alpine`, `1-python3.14-rc-alpine`, `python3.14-rc-alpine`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-alpine3.21)
88 |
89 | - [`1.1.0-python3.14-rc-alpine3.20`, `1.1-python3.14-rc-alpine3.20`, `1-python3.14-rc-alpine3.20`, `python3.14-rc-alpine3.20`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-alpine3.20)
90 |
91 | - [`1.1.0-python3.14-rc-windowsservercore-ltsc2025`, `1.1-python3.14-rc-windowsservercore-ltsc2025`, `1-python3.14-rc-windowsservercore-ltsc2025`, `python3.14-rc-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-windowsservercore-ltsc2025)
92 |
93 | - [`1.1.0-python3.14-rc-windowsservercore-ltsc2022`, `1.1-python3.14-rc-windowsservercore-ltsc2022`, `1-python3.14-rc-windowsservercore-ltsc2022`, `python3.14-rc-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-windowsservercore-ltsc2022)
94 |
95 | - [`1.1.0-python3.14-rc-windowsservercore-1809`, `1.1-python3.14-rc-windowsservercore-1809`, `1-python3.14-rc-windowsservercore-1809`, `python3.14-rc-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-windowsservercore-1809)
96 |
97 | - [`1.1.0-pypy3.11-bookworm`, `1.1-pypy3.11-bookworm`, `1-pypy3.11-bookworm`, `pypy3.11-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-bookworm)
98 |
99 | - [`1.1.0-pypy3.11-windowsservercore-ltsc2025`, `1.1-pypy3.11-windowsservercore-ltsc2025`, `1-pypy3.11-windowsservercore-ltsc2025`, `pypy3.11-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-windowsservercore-ltsc2025)
100 |
101 | - [`1.1.0-pypy3.11-windowsservercore-ltsc2022`, `1.1-pypy3.11-windowsservercore-ltsc2022`, `1-pypy3.11-windowsservercore-ltsc2022`, `pypy3.11-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-windowsservercore-ltsc2022)
102 |
103 | - [`1.1.0-pypy3.11-windowsservercore-1809`, `1.1-pypy3.11-windowsservercore-1809`, `1-pypy3.11-windowsservercore-1809`, `pypy3.11-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-windowsservercore-1809)
104 |
105 | - [`1.1.0-pypy3.10-bookworm`, `1.1-pypy3.10-bookworm`, `1-pypy3.10-bookworm`, `pypy3.10-bookworm`, `1.1.0-pypy-bookworm`, `1.1-pypy-bookworm`, `1-pypy-bookworm`, `pypy-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-bookworm)
106 |
107 | - [`1.1.0-pypy3.10-bullseye`, `1.1-pypy3.10-bullseye`, `1-pypy3.10-bullseye`, `pypy3.10-bullseye`, `1.1.0-pypy-bullseye`, `1.1-pypy-bullseye`, `1-pypy-bullseye`, `pypy-bullseye`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-bullseye)
108 |
109 | - [`1.1.0-pypy3.10-windowsservercore-ltsc2025`, `1.1-pypy3.10-windowsservercore-ltsc2025`, `1-pypy3.10-windowsservercore-ltsc2025`, `pypy3.10-windowsservercore-ltsc2025`, `1.1.0-pypy-windowsservercore-ltsc2025`, `1.1-pypy-windowsservercore-ltsc2025`, `1-pypy-windowsservercore-ltsc2025`, `pypy-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-windowsservercore-ltsc2025)
110 |
111 | - [`1.1.0-pypy3.10-windowsservercore-ltsc2022`, `1.1-pypy3.10-windowsservercore-ltsc2022`, `1-pypy3.10-windowsservercore-ltsc2022`, `pypy3.10-windowsservercore-ltsc2022`, `1.1.0-pypy-windowsservercore-ltsc2022`, `1.1-pypy-windowsservercore-ltsc2022`, `1-pypy-windowsservercore-ltsc2022`, `pypy-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-windowsservercore-ltsc2022)
112 |
113 | - [`1.1.0-pypy3.10-windowsservercore-1809`, `1.1-pypy3.10-windowsservercore-1809`, `1-pypy3.10-windowsservercore-1809`, `pypy3.10-windowsservercore-1809`, `1.1.0-pypy-windowsservercore-1809`, `1.1-pypy-windowsservercore-1809`, `1-pypy-windowsservercore-1809`, `pypy-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-windowsservercore-1809)
114 |
115 | ## Shared Tags
116 |
117 | - `1.1.0-python3.13`, `1.1-python3.13`, `1-python3.13`, `python3.13`, `1.1.0`, `1.1`, `1`, `latest`:
118 |
119 | - [`1.1.0-python3.13-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-bookworm)
120 | - [`1.1.0-python3.13-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-windowsservercore-ltsc2025)
121 | - [`1.1.0-python3.13-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-windowsservercore-ltsc2022)
122 | - [`1.1.0-python3.13-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.13-windowsservercore-1809)
123 |
124 | - `1.1.0-python3.12`, `1.1-python3.12`, `1-python3.12`, `python3.12`:
125 |
126 | - [`1.1.0-python3.12-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-bookworm)
127 | - [`1.1.0-python3.12-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-windowsservercore-ltsc2025)
128 | - [`1.1.0-python3.12-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-windowsservercore-ltsc2022)
129 | - [`1.1.0-python3.12-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.12-windowsservercore-1809)
130 |
131 | - `1.1.0-python3.11`, `1.1-python3.11`, `1-python3.11`, `python3.11`:
132 |
133 | - [`1.1.0-python3.11-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.11-bookworm)
134 |
135 | - `1.1.0-python3.10`, `1.1-python3.10`, `1-python3.10`, `python3.10`:
136 |
137 | - [`1.1.0-python3.10-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.10-bookworm)
138 |
139 | - `1.1.0-python3.9`, `1.1-python3.9`, `1-python3.9`, `python3.9`:
140 |
141 | - [`1.1.0-python3.9-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.9-bookworm)
142 |
143 | - `1.1.0-python3.14-rc`, `1.1-python3.14-rc`, `1-python3.14-rc`, `python3.14-rc`:
144 |
145 | - [`1.1.0-python3.14-rc-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-bookworm)
146 | - [`1.1.0-python3.14-rc-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-windowsservercore-ltsc2025)
147 | - [`1.1.0-python3.14-rc-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-windowsservercore-ltsc2022)
148 | - [`1.1.0-python3.14-rc-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.python3.14-rc-windowsservercore-1809)
149 |
150 | - `1.1.0-pypy3.11`, `1.1-pypy3.11`, `1-pypy3.11`, `pypy3.11`:
151 |
152 | - [`1.1.0-pypy3.11-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-bookworm)
153 | - [`1.1.0-pypy3.11-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-windowsservercore-ltsc2025)
154 | - [`1.1.0-pypy3.11-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-windowsservercore-ltsc2022)
155 | - [`1.1.0-pypy3.11-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.11-windowsservercore-1809)
156 |
157 | - `1.1.0-pypy3.10`, `1.1-pypy3.10`, `1-pypy3.10`, `pypy3.10`, `1.1.0-pypy`, `1.1-pypy`, `1-pypy`, `pypy`:
158 |
159 | - [`1.1.0-pypy3.10-bookworm`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-bookworm)
160 | - [`1.1.0-pypy3.10-windowsservercore-ltsc2025`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-windowsservercore-ltsc2025)
161 | - [`1.1.0-pypy3.10-windowsservercore-ltsc2022`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-windowsservercore-ltsc2022)
162 | - [`1.1.0-pypy3.10-windowsservercore-1809`](https://github.com/hylang/docker-hylang/blob/4e68cc28d92c1344289ea9e26cef509f06eae0c1/dockerfiles-generated/Dockerfile.pypy3.10-windowsservercore-1809)
163 |
164 | # Quick reference (cont.)
165 |
166 | - **Where to file issues**:
167 | [https://github.com/hylang/hy/issues](https://github.com/hylang/hy/issues?q=)
168 |
169 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
170 | [`amd64`](https://hub.docker.com/r/amd64/hylang/), [`arm32v5`](https://hub.docker.com/r/arm32v5/hylang/), [`arm32v6`](https://hub.docker.com/r/arm32v6/hylang/), [`arm32v7`](https://hub.docker.com/r/arm32v7/hylang/), [`arm64v8`](https://hub.docker.com/r/arm64v8/hylang/), [`i386`](https://hub.docker.com/r/i386/hylang/), [`mips64le`](https://hub.docker.com/r/mips64le/hylang/), [`ppc64le`](https://hub.docker.com/r/ppc64le/hylang/), [`riscv64`](https://hub.docker.com/r/riscv64/hylang/), [`s390x`](https://hub.docker.com/r/s390x/hylang/), [`windows-amd64`](https://hub.docker.com/r/winamd64/hylang/)
171 |
172 | - **Published image artifact details**:
173 | [repo-info repo's `repos/hylang/` directory](https://github.com/docker-library/repo-info/blob/master/repos/hylang) ([history](https://github.com/docker-library/repo-info/commits/master/repos/hylang))
174 | (image metadata, transfer size, etc)
175 |
176 | - **Image updates**:
177 | [official-images repo's `library/hylang` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhylang)
178 | [official-images repo's `library/hylang` file](https://github.com/docker-library/official-images/blob/master/library/hylang) ([history](https://github.com/docker-library/official-images/commits/master/library/hylang))
179 |
180 | - **Source of this description**:
181 | [docs repo's `hylang/` directory](https://github.com/docker-library/docs/tree/master/hylang) ([history](https://github.com/docker-library/docs/commits/master/hylang))
182 |
183 | # What is Hy?
184 |
185 | Hy (a.k.a., Hylang) is a dialect of the Lisp programming language designed to interoperate with Python by translating expressions into Python's abstract syntax tree (AST). Similar to Clojure's mapping of s-expressions onto the JVM, Hy is meant to operate as a transparent Lisp front end to Python's abstract syntax. Hy also allows for Python libraries (including the standard library) to be imported and accessed alongside Hy code with a compilation step, converting the data structure of both into Python's AST.
186 |
187 | > [wikipedia.org/wiki/Hy](https://en.wikipedia.org/wiki/Hy)
188 |
189 | 
190 |
191 | # How to use this image
192 |
193 | ## Create a `Dockerfile` in your Hy project
194 |
195 | ```dockerfile
196 | FROM hylang:0.10
197 | COPY . /usr/src/myapp
198 | WORKDIR /usr/src/myapp
199 | CMD [ "hy", "./your-daemon-or-script.hy" ]
200 | ```
201 |
202 | You can then build and run the Docker image:
203 |
204 | ```console
205 | $ docker build -t my-hylang-app
206 | $ docker run -it --rm --name my-running-app my-hylang-app
207 | ```
208 |
209 | ## Run a single Hy script
210 |
211 | For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Hy script by using the Hy Docker image directly:
212 |
213 | ```console
214 | $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp hylang:0.10 hy your-daemon-or-script.hy
215 | ```
216 |
217 | # Image Variants
218 |
219 | The `hylang` images come in many flavors, each designed for a specific use case.
220 |
221 | ## `hylang:<version>`
222 |
223 | 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.
224 |
225 | 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.
226 |
227 | ## `hylang:<version>-alpine`
228 |
229 | 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.
230 |
231 | 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.
232 |
233 | 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).
234 |
235 | ## `hylang:<version>-windowsservercore`
236 |
237 | 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.
238 |
239 | For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft:
240 |
241 | - [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server)
242 | - [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10)
243 |
244 | # License
245 |
246 | View [license information](https://github.com/hylang/hy/blob/master/LICENSE) for the software contained in this image.
247 |
248 | 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).
249 |
250 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `hylang/` directory](https://github.com/docker-library/repo-info/tree/master/repos/hylang).
251 |
252 | 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.
253 |
```
--------------------------------------------------------------------------------
/mongo/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "mongo/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "mongo/" 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/mongo)
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 | - [`8.0.9-noble`, `8.0-noble`, `8-noble`, `noble`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/Dockerfile)
32 |
33 | - [`8.0.9-windowsservercore-ltsc2025`, `8.0-windowsservercore-ltsc2025`, `8-windowsservercore-ltsc2025`, `windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-ltsc2025/Dockerfile)
34 |
35 | - [`8.0.9-windowsservercore-ltsc2022`, `8.0-windowsservercore-ltsc2022`, `8-windowsservercore-ltsc2022`, `windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-ltsc2022/Dockerfile)
36 |
37 | - [`8.0.9-windowsservercore-1809`, `8.0-windowsservercore-1809`, `8-windowsservercore-1809`, `windowsservercore-1809`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-1809/Dockerfile)
38 |
39 | - [`8.0.9-nanoserver-ltsc2022`, `8.0-nanoserver-ltsc2022`, `8-nanoserver-ltsc2022`, `nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/nanoserver-ltsc2022/Dockerfile)
40 |
41 | - [`8.0.9-nanoserver-1809`, `8.0-nanoserver-1809`, `8-nanoserver-1809`, `nanoserver-1809`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/nanoserver-1809/Dockerfile)
42 |
43 | - [`7.0.20-jammy`, `7.0-jammy`, `7-jammy`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/Dockerfile)
44 |
45 | - [`7.0.20-windowsservercore-ltsc2025`, `7.0-windowsservercore-ltsc2025`, `7-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-ltsc2025/Dockerfile)
46 |
47 | - [`7.0.20-windowsservercore-ltsc2022`, `7.0-windowsservercore-ltsc2022`, `7-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-ltsc2022/Dockerfile)
48 |
49 | - [`7.0.20-windowsservercore-1809`, `7.0-windowsservercore-1809`, `7-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-1809/Dockerfile)
50 |
51 | - [`7.0.20-nanoserver-ltsc2022`, `7.0-nanoserver-ltsc2022`, `7-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/nanoserver-ltsc2022/Dockerfile)
52 |
53 | - [`7.0.20-nanoserver-1809`, `7.0-nanoserver-1809`, `7-nanoserver-1809`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/nanoserver-1809/Dockerfile)
54 |
55 | - [`6.0.23-jammy`, `6.0-jammy`, `6-jammy`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/Dockerfile)
56 |
57 | - [`6.0.23-windowsservercore-ltsc2025`, `6.0-windowsservercore-ltsc2025`, `6-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-ltsc2025/Dockerfile)
58 |
59 | - [`6.0.23-windowsservercore-ltsc2022`, `6.0-windowsservercore-ltsc2022`, `6-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-ltsc2022/Dockerfile)
60 |
61 | - [`6.0.23-windowsservercore-1809`, `6.0-windowsservercore-1809`, `6-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-1809/Dockerfile)
62 |
63 | - [`6.0.23-nanoserver-ltsc2022`, `6.0-nanoserver-ltsc2022`, `6-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/nanoserver-ltsc2022/Dockerfile)
64 |
65 | - [`6.0.23-nanoserver-1809`, `6.0-nanoserver-1809`, `6-nanoserver-1809`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/nanoserver-1809/Dockerfile)
66 |
67 | ## Shared Tags
68 |
69 | - `8.0.9`, `8.0`, `8`, `latest`:
70 |
71 | - [`8.0.9-noble`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/Dockerfile)
72 | - [`8.0.9-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-ltsc2025/Dockerfile)
73 | - [`8.0.9-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-ltsc2022/Dockerfile)
74 | - [`8.0.9-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-1809/Dockerfile)
75 |
76 | - `8.0.9-windowsservercore`, `8.0-windowsservercore`, `8-windowsservercore`, `windowsservercore`:
77 |
78 | - [`8.0.9-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-ltsc2025/Dockerfile)
79 | - [`8.0.9-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-ltsc2022/Dockerfile)
80 | - [`8.0.9-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/windowsservercore-1809/Dockerfile)
81 |
82 | - `8.0.9-nanoserver`, `8.0-nanoserver`, `8-nanoserver`, `nanoserver`:
83 |
84 | - [`8.0.9-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/nanoserver-ltsc2022/Dockerfile)
85 | - [`8.0.9-nanoserver-1809`](https://github.com/docker-library/mongo/blob/a235aeb62c1741461ec94ba619e475d43c07c07e/8.0/windows/nanoserver-1809/Dockerfile)
86 |
87 | - `7.0.20`, `7.0`, `7`:
88 |
89 | - [`7.0.20-jammy`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/Dockerfile)
90 | - [`7.0.20-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-ltsc2025/Dockerfile)
91 | - [`7.0.20-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-ltsc2022/Dockerfile)
92 | - [`7.0.20-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-1809/Dockerfile)
93 |
94 | - `7.0.20-windowsservercore`, `7.0-windowsservercore`, `7-windowsservercore`:
95 |
96 | - [`7.0.20-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-ltsc2025/Dockerfile)
97 | - [`7.0.20-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-ltsc2022/Dockerfile)
98 | - [`7.0.20-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/windowsservercore-1809/Dockerfile)
99 |
100 | - `7.0.20-nanoserver`, `7.0-nanoserver`, `7-nanoserver`:
101 |
102 | - [`7.0.20-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/nanoserver-ltsc2022/Dockerfile)
103 | - [`7.0.20-nanoserver-1809`](https://github.com/docker-library/mongo/blob/08e3d80394a2bd49ae96524c1611e01c8d2147bd/7.0/windows/nanoserver-1809/Dockerfile)
104 |
105 | - `6.0.23`, `6.0`, `6`:
106 |
107 | - [`6.0.23-jammy`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/Dockerfile)
108 | - [`6.0.23-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-ltsc2025/Dockerfile)
109 | - [`6.0.23-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-ltsc2022/Dockerfile)
110 | - [`6.0.23-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-1809/Dockerfile)
111 |
112 | - `6.0.23-windowsservercore`, `6.0-windowsservercore`, `6-windowsservercore`:
113 |
114 | - [`6.0.23-windowsservercore-ltsc2025`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-ltsc2025/Dockerfile)
115 | - [`6.0.23-windowsservercore-ltsc2022`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-ltsc2022/Dockerfile)
116 | - [`6.0.23-windowsservercore-1809`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/windowsservercore-1809/Dockerfile)
117 |
118 | - `6.0.23-nanoserver`, `6.0-nanoserver`, `6-nanoserver`:
119 |
120 | - [`6.0.23-nanoserver-ltsc2022`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/nanoserver-ltsc2022/Dockerfile)
121 | - [`6.0.23-nanoserver-1809`](https://github.com/docker-library/mongo/blob/9a668aed11c59f0ac6fd1f461d5a767e3fd0d50b/6.0/windows/nanoserver-1809/Dockerfile)
122 |
123 | # Quick reference (cont.)
124 |
125 | - **Where to file issues**:
126 | [https://github.com/docker-library/mongo/issues](https://github.com/docker-library/mongo/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/mongo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/mongo/), [`windows-amd64`](https://hub.docker.com/r/winamd64/mongo/)
130 |
131 | - **Published image artifact details**:
132 | [repo-info repo's `repos/mongo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/mongo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/mongo))
133 | (image metadata, transfer size, etc)
134 |
135 | - **Image updates**:
136 | [official-images repo's `library/mongo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmongo)
137 | [official-images repo's `library/mongo` file](https://github.com/docker-library/official-images/blob/master/library/mongo) ([history](https://github.com/docker-library/official-images/commits/master/library/mongo))
138 |
139 | - **Source of this description**:
140 | [docs repo's `mongo/` directory](https://github.com/docker-library/docs/tree/master/mongo) ([history](https://github.com/docker-library/docs/commits/master/mongo))
141 |
142 | # What is MongoDB?
143 |
144 | MongoDB is a [free and open-source cross-platform document-oriented database](https://en.wikipedia.org/wiki/Document-oriented_database) program. Classified as a [NoSQL](https://en.wikipedia.org/wiki/NoSQL) database program, MongoDB uses [JSON](https://en.wikipedia.org/wiki/JSON)-like documents with [schemata](https://en.wikipedia.org/wiki/Database_schema). MongoDB is developed by [MongoDB Inc.](https://en.wikipedia.org/wiki/MongoDB_Inc.), and is published under a combination of the [Server Side Public License](https://www.mongodb.com/licensing/server-side-public-license) and the [Apache License](https://en.wikipedia.org/wiki/Apache_License).
145 |
146 | First developed by the software company 10gen (now MongoDB Inc.) in October 2007 as a component of a planned platform as a service product, the company shifted to an open source development model in 2009, with 10gen offering commercial support and other services. Since then, MongoDB has been adopted as backend software by a number of major websites and services, including MetLife, Barclays, ADP, UPS, Viacom, and the New York Times, among others. MongoDB is the most popular NoSQL database system.
147 |
148 | > [wikipedia.org/wiki/MongoDB](https://en.wikipedia.org/wiki/MongoDB)
149 |
150 |
151 |
152 | # Security
153 |
154 | By default Mongo's configuration requires no authentication for access, even for the administrative user. It is highly recommended to set a root user name and password if you plan on exposing your Mongo instance to the internet. See the "`MONGO_INITDB_ROOT_USERNAME`, `MONGO_INITDB_ROOT_PASSWORD`" section below for instructions and the [MongoDB Security documentation](https://www.mongodb.com/docs/manual/security/) for a more complete treatment.
155 |
156 | # How to use this image
157 |
158 | ## Start a `mongo` server instance
159 |
160 | ```console
161 | $ docker run --name some-mongo -d mongo:tag
162 | ```
163 |
164 | ... where `some-mongo` is the name you want to assign to your container and `tag` is the tag specifying the MongoDB version you want. See the list above for relevant tags.
165 |
166 | ## Connect to MongoDB from another Docker container
167 |
168 | The MongoDB server in the image listens on the standard MongoDB port, `27017`, so connecting via Docker networks will be the same as connecting to a remote `mongod`. The following example starts another MongoDB container instance and runs the `mongosh` (use `mongo` with `4.x` versions) command line client against the original MongoDB container from the example above, allowing you to execute MongoDB statements against your database instance:
169 |
170 | ```console
171 | $ docker run -it --network some-network --rm mongo mongosh --host some-mongo test
172 | ```
173 |
174 | ... where `some-mongo` is the name of your original `mongo` container.
175 |
176 | ## ... via [`docker compose`](https://github.com/docker/compose)
177 |
178 | Example `compose.yaml` for `mongo`:
179 |
180 | ```yaml
181 | # Use root/example as user/password credentials
182 |
183 | services:
184 |
185 | mongo:
186 | image: mongo
187 | restart: always
188 | environment:
189 | MONGO_INITDB_ROOT_USERNAME: root
190 | MONGO_INITDB_ROOT_PASSWORD: example
191 |
192 | mongo-express:
193 | image: mongo-express
194 | restart: always
195 | ports:
196 | - 8081:8081
197 | environment:
198 | ME_CONFIG_MONGODB_ADMINUSERNAME: root
199 | ME_CONFIG_MONGODB_ADMINPASSWORD: example
200 | ME_CONFIG_MONGODB_URL: mongodb://root:example@mongo:27017/
201 | ME_CONFIG_BASICAUTH: false
202 | ```
203 |
204 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8081` or `http://host-ip:8081` (as appropriate).
205 |
206 | ## Container shell access and viewing MongoDB logs
207 |
208 | The `docker exec` command allows you to run commands inside a Docker container. The following command line will give you a bash shell inside your `mongo` container:
209 |
210 | ```console
211 | $ docker exec -it some-mongo bash
212 | ```
213 |
214 | The MongoDB Server log is available through Docker's container log:
215 |
216 | ```console
217 | $ docker logs some-mongo
218 | ```
219 |
220 | # Configuration
221 |
222 | See the [MongoDB manual](https://docs.mongodb.com/manual/) for information on using and configuring MongoDB for things like replica sets and sharding.
223 |
224 | ## Customize configuration without configuration file
225 |
226 | Most MongoDB configuration can be set through flags to `mongod`. The entrypoint of the image is created to pass its arguments along to `mongod`. See below an example of setting MongoDB to use a different [threading and execution model](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-serviceexecutor) via `docker run`.
227 |
228 | ```console
229 | $ docker run --name some-mongo -d mongo --serviceExecutor adaptive
230 | ```
231 |
232 | And here is the same with a `compose.yaml` file
233 |
234 | ```yaml
235 | services:
236 | mongo:
237 | image: mongo
238 | command: --serviceExecutor adaptive
239 | ```
240 |
241 | To see the full list of possible options, check the MongoDB manual on [`mongod`](https://docs.mongodb.com/manual/reference/program/mongod/) or check the `--help` output of `mongod`:
242 |
243 | ```console
244 | $ docker run -it --rm mongo --help
245 | ```
246 |
247 | ## Setting WiredTiger cache size limits
248 |
249 | By default Mongo will set the `wiredTigerCacheSizeGB` to a value proportional to the host's total memory regardless of memory limits you may have imposed on the container. In such an instance you will want to set the cache size to something appropriate, taking into account any other processes you may be running in the container which would also utilize memory.
250 |
251 | Taking the examples above you can configure the cache size to use 1.5GB as:
252 |
253 | ```console
254 | $ docker run --name some-mongo -d mongo --wiredTigerCacheSizeGB 1.5
255 | ```
256 |
257 | See [the upstream "WiredTiger Options" documentation](https://docs.mongodb.com/manual/reference/program/mongod/#wiredtiger-options) for more details.
258 |
259 | ## Using a custom MongoDB configuration file
260 |
261 | For a more complicated configuration setup, you can still use the MongoDB configuration file. `mongod` does not read a configuration file by default, so the `--config` option with the path to the configuration file needs to be specified. Create a custom configuration file and put it in the container by either creating a custom Dockerfile `FROM mongo` or mounting it from the host machine to the container. See the MongoDB manual for a full list of [configuration file](https://docs.mongodb.com/manual/reference/configuration-options/) options.
262 |
263 | For example, `/my/custom/mongod.conf` is the path to the custom configuration file. Then start the MongoDB container like the following:
264 |
265 | ```console
266 | $ docker run --name some-mongo -v /my/custom:/etc/mongo -d mongo --config /etc/mongo/mongod.conf
267 | ```
268 |
269 | ## Environment Variables
270 |
271 | When you start the `mongo` image, you can adjust the initialization of the MongoDB instance by passing one or more environment variables on the `docker run` command line. Do note that none of the variables below will have any effect if you start the container with a data directory that already contains a database: any pre-existing database will always be left untouched on container startup.
272 |
273 | ### `MONGO_INITDB_ROOT_USERNAME`, `MONGO_INITDB_ROOT_PASSWORD`
274 |
275 | These variables, used in conjunction, create a new user and set that user's password. This user is created in the `admin` [authentication database](https://docs.mongodb.com/manual/core/security-users/#user-authentication-database) and given [the role of `root`](https://docs.mongodb.com/manual/reference/built-in-roles/#root), which is [a "superuser" role](https://docs.mongodb.com/manual/core/security-built-in-roles/#superuser-roles).
276 |
277 | The following is an example of using these two variables to create a MongoDB instance and then using the `mongosh` cli (use `mongo` with `4.x` versions) to connect against the `admin` authentication database.
278 |
279 | ```console
280 | $ docker run -d --network some-network --name some-mongo \
281 | -e MONGO_INITDB_ROOT_USERNAME=mongoadmin \
282 | -e MONGO_INITDB_ROOT_PASSWORD=secret \
283 | mongo
284 |
285 | $ docker run -it --rm --network some-network mongo \
286 | mongosh --host some-mongo \
287 | -u mongoadmin \
288 | -p secret \
289 | --authenticationDatabase admin \
290 | some-db
291 | > db.getName();
292 | some-db
293 | ```
294 |
295 | Both variables are required for a user to be created. If both are present then MongoDB will start with authentication enabled (`mongod --auth`).
296 |
297 | Authentication in MongoDB is fairly complex, so more complex user setup is explicitly left to the user via `/docker-entrypoint-initdb.d/` (see the *Initializing a fresh instance* and *Authentication* sections below for more details).
298 |
299 | ### `MONGO_INITDB_DATABASE`
300 |
301 | This variable allows you to specify the name of a database to be used for creation scripts in `/docker-entrypoint-initdb.d/*.js` (see *Initializing a fresh instance* below). MongoDB is fundamentally designed for "create on first use", so if you do not insert data with your JavaScript files, then no database is created.
302 |
303 | ## Docker Secrets
304 |
305 | 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:
306 |
307 | ```console
308 | $ docker run --name some-mongo -e MONGO_INITDB_ROOT_PASSWORD_FILE=/run/secrets/mongo-root -d mongo
309 | ```
310 |
311 | Currently, this is only supported for `MONGO_INITDB_ROOT_USERNAME` and `MONGO_INITDB_ROOT_PASSWORD`.
312 |
313 | # Initializing a fresh instance
314 |
315 | When a container is started for the first time it will execute files with extensions `.sh` and `.js` that are found in `/docker-entrypoint-initdb.d`. Files will be executed in alphabetical order. `.js` files will be executed by `mongosh` (`mongo` on versions below 6) using the database specified by the `MONGO_INITDB_DATABASE` variable, if it is present, or `test` otherwise. You may also switch databases within the `.js` script.
316 |
317 | # Authentication
318 |
319 | As noted above, authentication in MongoDB is fairly complex (although disabled by default). For details about how MongoDB handles authentication, please see the relevant upstream documentation:
320 |
321 | - [`mongod --auth`](https://docs.mongodb.com/manual/reference/program/mongod/#cmdoption-mongod-auth)
322 | - [Security > Authentication](https://docs.mongodb.com/manual/core/authentication/)
323 | - [Security > Role-Based Access Control](https://docs.mongodb.com/manual/core/authorization/)
324 | - [Security > Role-Based Access Control > Built-In Roles](https://docs.mongodb.com/manual/core/security-built-in-roles/)
325 | - [Security > Enable Auth (tutorial)](https://docs.mongodb.com/manual/tutorial/enable-authentication/)
326 |
327 | In addition to the `/docker-entrypoint-initdb.d` behavior documented above (which is a simple way to configure users for authentication for less complicated deployments), this image also supports `MONGO_INITDB_ROOT_USERNAME` and `MONGO_INITDB_ROOT_PASSWORD` for creating a simple user with [the role `root`](https://docs.mongodb.com/manual/reference/built-in-roles/#root) in the `admin` [authentication database](https://docs.mongodb.com/manual/core/security-users/#user-authentication-database), as described in the *Environment Variables* section above.
328 |
329 | # Caveats
330 |
331 | ## Where to Store Data
332 |
333 | Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `mongo` images to familiarize themselves with the options available, including:
334 |
335 | - Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers.
336 | - 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.
337 |
338 | **WARNING (Windows & OS X)**: When running the Linux-based MongoDB images on Windows and OS X, the file systems used to share between the host system and the Docker container is not compatible with the memory mapped files used by MongoDB ([docs.mongodb.org](https://docs.mongodb.com/manual/administration/production-notes/#fsync---on-directories) and related [jira.mongodb.org](https://jira.mongodb.org/browse/SERVER-8600) bug). This means that it is not possible to run a MongoDB container with the data directory mapped to the host. To persist data between container restarts, we recommend using a local named volume instead (see `docker volume create`). Alternatively you can use the Windows-based images on Windows.
339 |
340 | The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above:
341 |
342 | 1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`.
343 | 2. Start your `mongo` container like this:
344 |
345 | ```console
346 | $ docker run --name some-mongo -v /my/own/datadir:/data/db -d mongo
347 | ```
348 |
349 | The `-v /my/own/datadir:/data/db` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/data/db` inside the container, where MongoDB by default will write its data files.
350 |
351 | This image also defines a volume for `/data/configdb` [for use with `--configsvr` (see docs.mongodb.com for more details)](https://docs.mongodb.com/v3.4/reference/program/mongod/#cmdoption-configsvr).
352 |
353 | ## Creating database dumps
354 |
355 | Most of the normal tools will work, although their usage might be a little convoluted in some cases to ensure they have access to the `mongod` server. A simple way to ensure this is to use `docker exec` and run the tool from the same container, similar to the following:
356 |
357 | ```console
358 | $ docker exec some-mongo sh -c 'exec mongodump -d <database_name> --archive' > /some/path/on/your/host/all-collections.archive
359 | ```
360 |
361 | # Image Variants
362 |
363 | The `mongo` images come in many flavors, each designed for a specific use case.
364 |
365 | ## `mongo:<version>`
366 |
367 | 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.
368 |
369 | Some of these tags may have names like jammy or noble in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu.
370 |
371 | ## `mongo:<version>-windowsservercore`
372 |
373 | 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.
374 |
375 | For information about how to get Docker running on Windows, please see the relevant "Quick Start" guide provided by Microsoft:
376 |
377 | - [Windows Server Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_server)
378 | - [Windows 10 Quick Start](https://msdn.microsoft.com/en-us/virtualization/windowscontainers/quick_start/quick_start_windows_10)
379 |
380 | # License
381 |
382 | View [license information](https://github.com/mongodb/mongo/blob/6ea81c883e7297be99884185c908c7ece385caf8/README#L89-L95) for the software contained in this image.
383 |
384 | It is relevant to note the change from AGPL to SSPLv1 for all versions after October 16, 2018.
385 |
386 | 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).
387 |
388 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `mongo/` directory](https://github.com/docker-library/repo-info/tree/master/repos/mongo).
389 |
390 | 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.
391 |
```
--------------------------------------------------------------------------------
/php/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "php/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "php/" 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/php)
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 | - [`8.4.7-cli-bookworm`, `8.4-cli-bookworm`, `8-cli-bookworm`, `cli-bookworm`, `8.4.7-bookworm`, `8.4-bookworm`, `8-bookworm`, `bookworm`, `8.4.7-cli`, `8.4-cli`, `8-cli`, `cli`, `8.4.7`, `8.4`, `8`, `latest`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bookworm/cli/Dockerfile)
28 |
29 | - [`8.4.7-apache-bookworm`, `8.4-apache-bookworm`, `8-apache-bookworm`, `apache-bookworm`, `8.4.7-apache`, `8.4-apache`, `8-apache`, `apache`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bookworm/apache/Dockerfile)
30 |
31 | - [`8.4.7-fpm-bookworm`, `8.4-fpm-bookworm`, `8-fpm-bookworm`, `fpm-bookworm`, `8.4.7-fpm`, `8.4-fpm`, `8-fpm`, `fpm`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bookworm/fpm/Dockerfile)
32 |
33 | - [`8.4.7-zts-bookworm`, `8.4-zts-bookworm`, `8-zts-bookworm`, `zts-bookworm`, `8.4.7-zts`, `8.4-zts`, `8-zts`, `zts`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bookworm/zts/Dockerfile)
34 |
35 | - [`8.4.7-cli-bullseye`, `8.4-cli-bullseye`, `8-cli-bullseye`, `cli-bullseye`, `8.4.7-bullseye`, `8.4-bullseye`, `8-bullseye`, `bullseye`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bullseye/cli/Dockerfile)
36 |
37 | - [`8.4.7-apache-bullseye`, `8.4-apache-bullseye`, `8-apache-bullseye`, `apache-bullseye`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bullseye/apache/Dockerfile)
38 |
39 | - [`8.4.7-fpm-bullseye`, `8.4-fpm-bullseye`, `8-fpm-bullseye`, `fpm-bullseye`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bullseye/fpm/Dockerfile)
40 |
41 | - [`8.4.7-zts-bullseye`, `8.4-zts-bullseye`, `8-zts-bullseye`, `zts-bullseye`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/bullseye/zts/Dockerfile)
42 |
43 | - [`8.4.7-cli-alpine3.21`, `8.4-cli-alpine3.21`, `8-cli-alpine3.21`, `cli-alpine3.21`, `8.4.7-alpine3.21`, `8.4-alpine3.21`, `8-alpine3.21`, `alpine3.21`, `8.4.7-cli-alpine`, `8.4-cli-alpine`, `8-cli-alpine`, `cli-alpine`, `8.4.7-alpine`, `8.4-alpine`, `8-alpine`, `alpine`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/alpine3.21/cli/Dockerfile)
44 |
45 | - [`8.4.7-fpm-alpine3.21`, `8.4-fpm-alpine3.21`, `8-fpm-alpine3.21`, `fpm-alpine3.21`, `8.4.7-fpm-alpine`, `8.4-fpm-alpine`, `8-fpm-alpine`, `fpm-alpine`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/alpine3.21/fpm/Dockerfile)
46 |
47 | - [`8.4.7-zts-alpine3.21`, `8.4-zts-alpine3.21`, `8-zts-alpine3.21`, `zts-alpine3.21`, `8.4.7-zts-alpine`, `8.4-zts-alpine`, `8-zts-alpine`, `zts-alpine`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/alpine3.21/zts/Dockerfile)
48 |
49 | - [`8.4.7-cli-alpine3.20`, `8.4-cli-alpine3.20`, `8-cli-alpine3.20`, `cli-alpine3.20`, `8.4.7-alpine3.20`, `8.4-alpine3.20`, `8-alpine3.20`, `alpine3.20`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/alpine3.20/cli/Dockerfile)
50 |
51 | - [`8.4.7-fpm-alpine3.20`, `8.4-fpm-alpine3.20`, `8-fpm-alpine3.20`, `fpm-alpine3.20`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/alpine3.20/fpm/Dockerfile)
52 |
53 | - [`8.4.7-zts-alpine3.20`, `8.4-zts-alpine3.20`, `8-zts-alpine3.20`, `zts-alpine3.20`](https://github.com/docker-library/php/blob/ef410b5f840d3bd27d955de75f409f6dce050ccd/8.4/alpine3.20/zts/Dockerfile)
54 |
55 | - [`8.3.21-cli-bookworm`, `8.3-cli-bookworm`, `8.3.21-bookworm`, `8.3-bookworm`, `8.3.21-cli`, `8.3-cli`, `8.3.21`, `8.3`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bookworm/cli/Dockerfile)
56 |
57 | - [`8.3.21-apache-bookworm`, `8.3-apache-bookworm`, `8.3.21-apache`, `8.3-apache`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bookworm/apache/Dockerfile)
58 |
59 | - [`8.3.21-fpm-bookworm`, `8.3-fpm-bookworm`, `8.3.21-fpm`, `8.3-fpm`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bookworm/fpm/Dockerfile)
60 |
61 | - [`8.3.21-zts-bookworm`, `8.3-zts-bookworm`, `8.3.21-zts`, `8.3-zts`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bookworm/zts/Dockerfile)
62 |
63 | - [`8.3.21-cli-bullseye`, `8.3-cli-bullseye`, `8.3.21-bullseye`, `8.3-bullseye`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bullseye/cli/Dockerfile)
64 |
65 | - [`8.3.21-apache-bullseye`, `8.3-apache-bullseye`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bullseye/apache/Dockerfile)
66 |
67 | - [`8.3.21-fpm-bullseye`, `8.3-fpm-bullseye`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bullseye/fpm/Dockerfile)
68 |
69 | - [`8.3.21-zts-bullseye`, `8.3-zts-bullseye`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/bullseye/zts/Dockerfile)
70 |
71 | - [`8.3.21-cli-alpine3.21`, `8.3-cli-alpine3.21`, `8.3.21-alpine3.21`, `8.3-alpine3.21`, `8.3.21-cli-alpine`, `8.3-cli-alpine`, `8.3.21-alpine`, `8.3-alpine`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/alpine3.21/cli/Dockerfile)
72 |
73 | - [`8.3.21-fpm-alpine3.21`, `8.3-fpm-alpine3.21`, `8.3.21-fpm-alpine`, `8.3-fpm-alpine`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/alpine3.21/fpm/Dockerfile)
74 |
75 | - [`8.3.21-zts-alpine3.21`, `8.3-zts-alpine3.21`, `8.3.21-zts-alpine`, `8.3-zts-alpine`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/alpine3.21/zts/Dockerfile)
76 |
77 | - [`8.3.21-cli-alpine3.20`, `8.3-cli-alpine3.20`, `8.3.21-alpine3.20`, `8.3-alpine3.20`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/alpine3.20/cli/Dockerfile)
78 |
79 | - [`8.3.21-fpm-alpine3.20`, `8.3-fpm-alpine3.20`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/alpine3.20/fpm/Dockerfile)
80 |
81 | - [`8.3.21-zts-alpine3.20`, `8.3-zts-alpine3.20`](https://github.com/docker-library/php/blob/6c2ca6009a3d8e4b7aaa3df697a0e12b13948efc/8.3/alpine3.20/zts/Dockerfile)
82 |
83 | - [`8.2.28-cli-bookworm`, `8.2-cli-bookworm`, `8.2.28-bookworm`, `8.2-bookworm`, `8.2.28-cli`, `8.2-cli`, `8.2.28`, `8.2`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bookworm/cli/Dockerfile)
84 |
85 | - [`8.2.28-apache-bookworm`, `8.2-apache-bookworm`, `8.2.28-apache`, `8.2-apache`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bookworm/apache/Dockerfile)
86 |
87 | - [`8.2.28-fpm-bookworm`, `8.2-fpm-bookworm`, `8.2.28-fpm`, `8.2-fpm`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bookworm/fpm/Dockerfile)
88 |
89 | - [`8.2.28-zts-bookworm`, `8.2-zts-bookworm`, `8.2.28-zts`, `8.2-zts`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bookworm/zts/Dockerfile)
90 |
91 | - [`8.2.28-cli-bullseye`, `8.2-cli-bullseye`, `8.2.28-bullseye`, `8.2-bullseye`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bullseye/cli/Dockerfile)
92 |
93 | - [`8.2.28-apache-bullseye`, `8.2-apache-bullseye`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bullseye/apache/Dockerfile)
94 |
95 | - [`8.2.28-fpm-bullseye`, `8.2-fpm-bullseye`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bullseye/fpm/Dockerfile)
96 |
97 | - [`8.2.28-zts-bullseye`, `8.2-zts-bullseye`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/bullseye/zts/Dockerfile)
98 |
99 | - [`8.2.28-cli-alpine3.21`, `8.2-cli-alpine3.21`, `8.2.28-alpine3.21`, `8.2-alpine3.21`, `8.2.28-cli-alpine`, `8.2-cli-alpine`, `8.2.28-alpine`, `8.2-alpine`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/alpine3.21/cli/Dockerfile)
100 |
101 | - [`8.2.28-fpm-alpine3.21`, `8.2-fpm-alpine3.21`, `8.2.28-fpm-alpine`, `8.2-fpm-alpine`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/alpine3.21/fpm/Dockerfile)
102 |
103 | - [`8.2.28-zts-alpine3.21`, `8.2-zts-alpine3.21`, `8.2.28-zts-alpine`, `8.2-zts-alpine`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/alpine3.21/zts/Dockerfile)
104 |
105 | - [`8.2.28-cli-alpine3.20`, `8.2-cli-alpine3.20`, `8.2.28-alpine3.20`, `8.2-alpine3.20`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/alpine3.20/cli/Dockerfile)
106 |
107 | - [`8.2.28-fpm-alpine3.20`, `8.2-fpm-alpine3.20`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/alpine3.20/fpm/Dockerfile)
108 |
109 | - [`8.2.28-zts-alpine3.20`, `8.2-zts-alpine3.20`](https://github.com/docker-library/php/blob/1d34ec5ee5ce9fa76a776c039a9f98533cc096f8/8.2/alpine3.20/zts/Dockerfile)
110 |
111 | - [`8.1.32-cli-bookworm`, `8.1-cli-bookworm`, `8.1.32-bookworm`, `8.1-bookworm`, `8.1.32-cli`, `8.1-cli`, `8.1.32`, `8.1`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bookworm/cli/Dockerfile)
112 |
113 | - [`8.1.32-apache-bookworm`, `8.1-apache-bookworm`, `8.1.32-apache`, `8.1-apache`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bookworm/apache/Dockerfile)
114 |
115 | - [`8.1.32-fpm-bookworm`, `8.1-fpm-bookworm`, `8.1.32-fpm`, `8.1-fpm`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bookworm/fpm/Dockerfile)
116 |
117 | - [`8.1.32-zts-bookworm`, `8.1-zts-bookworm`, `8.1.32-zts`, `8.1-zts`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bookworm/zts/Dockerfile)
118 |
119 | - [`8.1.32-cli-bullseye`, `8.1-cli-bullseye`, `8.1.32-bullseye`, `8.1-bullseye`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bullseye/cli/Dockerfile)
120 |
121 | - [`8.1.32-apache-bullseye`, `8.1-apache-bullseye`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bullseye/apache/Dockerfile)
122 |
123 | - [`8.1.32-fpm-bullseye`, `8.1-fpm-bullseye`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bullseye/fpm/Dockerfile)
124 |
125 | - [`8.1.32-zts-bullseye`, `8.1-zts-bullseye`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/bullseye/zts/Dockerfile)
126 |
127 | - [`8.1.32-cli-alpine3.21`, `8.1-cli-alpine3.21`, `8.1.32-alpine3.21`, `8.1-alpine3.21`, `8.1.32-cli-alpine`, `8.1-cli-alpine`, `8.1.32-alpine`, `8.1-alpine`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/alpine3.21/cli/Dockerfile)
128 |
129 | - [`8.1.32-fpm-alpine3.21`, `8.1-fpm-alpine3.21`, `8.1.32-fpm-alpine`, `8.1-fpm-alpine`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/alpine3.21/fpm/Dockerfile)
130 |
131 | - [`8.1.32-zts-alpine3.21`, `8.1-zts-alpine3.21`, `8.1.32-zts-alpine`, `8.1-zts-alpine`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/alpine3.21/zts/Dockerfile)
132 |
133 | - [`8.1.32-cli-alpine3.20`, `8.1-cli-alpine3.20`, `8.1.32-alpine3.20`, `8.1-alpine3.20`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/alpine3.20/cli/Dockerfile)
134 |
135 | - [`8.1.32-fpm-alpine3.20`, `8.1-fpm-alpine3.20`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/alpine3.20/fpm/Dockerfile)
136 |
137 | - [`8.1.32-zts-alpine3.20`, `8.1-zts-alpine3.20`](https://github.com/docker-library/php/blob/aada98fe2ddd5df2b73e25ecf552c954b299f928/8.1/alpine3.20/zts/Dockerfile)
138 |
139 | # Quick reference (cont.)
140 |
141 | - **Where to file issues**:
142 | [https://github.com/docker-library/php/issues](https://github.com/docker-library/php/issues?q=)
143 |
144 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
145 | [`amd64`](https://hub.docker.com/r/amd64/php/), [`arm32v5`](https://hub.docker.com/r/arm32v5/php/), [`arm32v6`](https://hub.docker.com/r/arm32v6/php/), [`arm32v7`](https://hub.docker.com/r/arm32v7/php/), [`arm64v8`](https://hub.docker.com/r/arm64v8/php/), [`i386`](https://hub.docker.com/r/i386/php/), [`mips64le`](https://hub.docker.com/r/mips64le/php/), [`ppc64le`](https://hub.docker.com/r/ppc64le/php/), [`riscv64`](https://hub.docker.com/r/riscv64/php/), [`s390x`](https://hub.docker.com/r/s390x/php/)
146 |
147 | - **Published image artifact details**:
148 | [repo-info repo's `repos/php/` directory](https://github.com/docker-library/repo-info/blob/master/repos/php) ([history](https://github.com/docker-library/repo-info/commits/master/repos/php))
149 | (image metadata, transfer size, etc)
150 |
151 | - **Image updates**:
152 | [official-images repo's `library/php` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp)
153 | [official-images repo's `library/php` file](https://github.com/docker-library/official-images/blob/master/library/php) ([history](https://github.com/docker-library/official-images/commits/master/library/php))
154 |
155 | - **Source of this description**:
156 | [docs repo's `php/` directory](https://github.com/docker-library/docs/tree/master/php) ([history](https://github.com/docker-library/docs/commits/master/php))
157 |
158 | # What is PHP?
159 |
160 | PHP is a server-side scripting language designed for web development, but which can also be used as a general-purpose programming language. PHP can be added to straight HTML or it can be used with a variety of templating engines and web frameworks. PHP code is usually processed by an interpreter, which is either implemented as a native module on the web-server or as a common gateway interface (CGI).
161 |
162 | > [wikipedia.org/wiki/PHP](https://en.wikipedia.org/wiki/PHP)
163 |
164 | 
165 |
166 | # How to use this image
167 |
168 | ### Create a `Dockerfile` in your PHP project
169 |
170 | ```dockerfile
171 | FROM php:8.2-cli
172 | COPY . /usr/src/myapp
173 | WORKDIR /usr/src/myapp
174 | CMD [ "php", "./your-script.php" ]
175 | ```
176 |
177 | Then, run the commands to build and run the Docker image:
178 |
179 | ```console
180 | $ docker build -t my-php-app .
181 | $ docker run -it --rm --name my-running-app my-php-app
182 | ```
183 |
184 | ### Run a single PHP script
185 |
186 | For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a PHP script by using the PHP Docker image directly:
187 |
188 | ```console
189 | $ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp php:8.2-cli php your-script.php
190 | ```
191 |
192 | ## How to install more PHP extensions
193 |
194 | Many extensions are already compiled into the image, so it's worth checking the output of `php -m` or `php -i` before going through the effort of compiling more.
195 |
196 | We provide the helper scripts `docker-php-ext-configure`, `docker-php-ext-install`, and `docker-php-ext-enable` to more easily install PHP extensions.
197 |
198 | In order to keep the images smaller, PHP's source is kept in a compressed tar file. To facilitate linking of PHP's source with any extension, we also provide the helper script `docker-php-source` to easily extract the tar or delete the extracted source. Note: if you do use `docker-php-source` to extract the source, be sure to delete it in the same layer of the docker image.
199 |
200 | ```Dockerfile
201 | FROM php:8.2-cli
202 | RUN docker-php-source extract \
203 | # do important things \
204 | && docker-php-source delete
205 | ```
206 |
207 | ### PHP Core Extensions
208 |
209 | For example, if you want to have a PHP-FPM image with the `gd` extension, you can inherit the base image that you like, and write your own `Dockerfile` like this:
210 |
211 | ```dockerfile
212 | FROM php:8.2-fpm
213 | RUN apt-get update && apt-get install -y \
214 | libfreetype-dev \
215 | libjpeg62-turbo-dev \
216 | libpng-dev \
217 | && docker-php-ext-configure gd --with-freetype --with-jpeg \
218 | && docker-php-ext-install -j$(nproc) gd
219 | ```
220 |
221 | Remember, you must install dependencies for your extensions manually. If an extension needs custom `configure` arguments, you can use the `docker-php-ext-configure` script like this example. There is no need to run `docker-php-source` manually in this case, since that is handled by the `configure` and `install` scripts.
222 |
223 | If you are having difficulty figuring out which Debian or Alpine packages need to be installed before `docker-php-ext-install`, then have a look at [the `install-php-extensions` project](https://github.com/mlocati/docker-php-extension-installer). This script builds upon the `docker-php-ext-*` scripts and simplifies the installation of PHP extensions by automatically adding and removing Debian (apt) and Alpine (apk) packages. For example, to install the GD extension you simply have to run `install-php-extensions gd`. This tool is contributed by community members and is not included in the images, please refer to their Git repository for installation, usage, and issues.
224 |
225 | See also ["Dockerizing Compiled Software"](https://tianon.xyz/post/2017/12/26/dockerize-compiled-software.html) for a description of the technique Tianon uses for determining the necessary build-time dependencies for any bit of software (which applies directly to compiling PHP extensions).
226 |
227 | ### Default extensions
228 |
229 | Some extensions are compiled by default. This depends on the PHP version you are using. Run `php -m` in the container to get a list for your specific version.
230 |
231 | ### PECL extensions
232 |
233 | Some extensions are not provided with the PHP source, but are instead available through [PECL](https://pecl.php.net/). To install a PECL extension, use `pecl install` to download and compile it, then use `docker-php-ext-enable` to enable it:
234 |
235 | ```dockerfile
236 | FROM php:8.2-cli
237 | RUN pecl install redis-5.3.7 \
238 | && pecl install xdebug-3.2.1 \
239 | && docker-php-ext-enable redis xdebug
240 | ```
241 |
242 | ```dockerfile
243 | FROM php:8.2-cli
244 | RUN apt-get update && apt-get install -y libmemcached-dev libssl-dev zlib1g-dev \
245 | && pecl install memcached-3.2.0 \
246 | && docker-php-ext-enable memcached
247 | ```
248 |
249 | It is *strongly* recommended that users use an explicit version number in their `pecl install` invocations to ensure proper PHP version compatibility (PECL does not check the PHP version compatibility when choosing a version of the extension to install, but does when trying to install it). Beyond the compatibility issue, it's also a good practice to ensure you know when your dependencies receive updates and can control those updates directly.
250 |
251 | Unlike PHP core extensions, PECL extensions should be installed in series to fail properly if something went wrong. Otherwise errors are just skipped by PECL. For example, `pecl install memcached-3.2.0 && pecl install redis-5.3.7` instead of `pecl install memcached-3.2.0 redis-5.3.7`. However, `docker-php-ext-enable memcached redis` is fine to be all in one command.
252 |
253 | ### Other extensions
254 |
255 | Some extensions are not provided via either Core or PECL; these can be installed too, although the process is less automated:
256 |
257 | ```dockerfile
258 | FROM php:8.2-cli
259 | RUN curl -fsSL '[url-to-custom-php-module]' -o module-name.tar.gz \
260 | && mkdir -p module-name \
261 | && sha256sum -c "[shasum-value] module-name.tar.gz" \
262 | && tar -xf module-name.tar.gz -C module-name --strip-components=1 \
263 | && rm module-name.tar.gz \
264 | && ( \
265 | cd module-name \
266 | && phpize \
267 | && ./configure --enable-module-name \
268 | && make -j "$(nproc)" \
269 | && make install \
270 | ) \
271 | && rm -r module-name \
272 | && docker-php-ext-enable module-name
273 | ```
274 |
275 | The `docker-php-ext-*` scripts *can* accept an arbitrary path, but it must be absolute (to disambiguate from built-in extension names), so the above example could also be written as the following:
276 |
277 | ```dockerfile
278 | FROM php:8.2-cli
279 | RUN curl -fsSL '[url-to-custom-php-module]' -o module-name.tar.gz \
280 | && mkdir -p /tmp/module-name \
281 | && sha256sum -c "[shasum-value] module-name.tar.gz" \
282 | && tar -xf module-name.tar.gz -C /tmp/module-name --strip-components=1 \
283 | && rm module-name.tar.gz \
284 | && docker-php-ext-configure /tmp/module-name --enable-module-name \
285 | && docker-php-ext-install /tmp/module-name \
286 | && rm -r /tmp/module-name
287 | ```
288 |
289 | ## Running as an arbitrary user
290 |
291 | For running the Apache variants as an arbitrary user, there are a couple choices:
292 |
293 | - If your kernel [is version 4.11 or newer](https://github.com/moby/moby/issues/8460#issuecomment-312459310), you can add `--sysctl net.ipv4.ip_unprivileged_port_start=0` (which [will be the default in a future version of Docker](https://github.com/moby/moby/pull/41030)) and then `--user` should work as it does for FPM.
294 | - If you adjust the Apache configuration to use an "unprivileged" port (greater than 1024 by default), then `--user` should work as it does for FPM regardless of kernel version.
295 |
296 | For running the FPM variants as an arbitrary user, the `--user` flag to `docker run` should be used (which can accept both a username/group in the container's `/etc/passwd` file like `--user daemon` or a specific UID/GID like `--user 1000:1000`).
297 |
298 | ## "`E: Package 'php-XXX' has no installation candidate`"
299 |
300 | As of [docker-library/php#542](https://github.com/docker-library/php/pull/542), this image blocks the installation of Debian's PHP packages. There is some additional discussion of this change in [docker-library/php#551 (comment)](https://github.com/docker-library/php/issues/551#issuecomment-354849074), but the gist is that installing Debian's PHP packages in this image leads to two conflicting installations of PHP in a single image, which is almost certainly not the intended outcome.
301 |
302 | For those broken by this change and looking for a workaround to apply in the meantime while a proper fix is developed, adding the following simple line to your `Dockerfile` should remove the block (**with the strong caveat that this will allow the installation of a second installation of PHP, which is definitely not what you're looking for unless you *really* know what you're doing**):
303 |
304 | ```dockerfile
305 | RUN rm /etc/apt/preferences.d/no-debian-php
306 | ```
307 |
308 | The *proper* solution to this error is to either use `FROM debian:XXX` and install Debian's PHP packages directly, or to use `docker-php-ext-install`, `pecl`, and/or `phpize` to install the necessary additional extensions and utilities.
309 |
310 | ## Configuration
311 |
312 | This image ships with the default [`php.ini-development`](https://github.com/php/php-src/blob/master/php.ini-development) and [`php.ini-production`](https://github.com/php/php-src/blob/master/php.ini-production) configuration files.
313 |
314 | It is *strongly* recommended to use the production config for images used in production environments!
315 |
316 | The default config can be customized by copying configuration files into the `$PHP_INI_DIR/conf.d/` directory.
317 |
318 | ### Example
319 |
320 | ```dockerfile
321 | FROM php:8.2-fpm-alpine
322 |
323 | # Use the default production configuration
324 | RUN mv "$PHP_INI_DIR/php.ini-production" "$PHP_INI_DIR/php.ini"
325 | ```
326 |
327 | In many production environments, it is also recommended to (build and) enable the PHP core OPcache extension for performance. See [the upstream OPcache documentation](https://www.php.net/manual/en/book.opcache.php) for more details.
328 |
329 | # Image Variants
330 |
331 | The `php` images come in many flavors, each designed for a specific use case.
332 |
333 | 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.
334 |
335 | ## `php:<version>-cli`
336 |
337 | This variant contains the [PHP CLI](https://secure.php.net/manual/en/features.commandline.php) tool with default mods. If you need a web server, this is probably not the image you are looking for. 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 a base from which to build other images.
338 |
339 | It also is the only variant which contains the (not recommended) `php-cgi` binary, which is likely necessary for some things like [PPM](https://github.com/php-pm/php-pm).
340 |
341 | Note that *all* variants of `php` contain the PHP CLI (`/usr/local/bin/php`).
342 |
343 | ## `php:<version>-apache`
344 |
345 | This image contains Debian's Apache httpd in conjunction with PHP (as `mod_php`) and uses `mpm_prefork` by default.
346 |
347 | ### Apache with a `Dockerfile`
348 |
349 | ```dockerfile
350 | FROM php:7.2-apache
351 | COPY src/ /var/www/html/
352 | ```
353 |
354 | Where `src/` is the directory containing all your PHP code. Then, run the commands to build and run the Docker image:
355 |
356 | ```console
357 | $ docker build -t my-php-app .
358 | $ docker run -d --name my-running-app my-php-app
359 | ```
360 |
361 | We recommend that you add a `php.ini` configuration file; see the "Configuration" section for details.
362 |
363 | ### Apache without a `Dockerfile`
364 |
365 | ```console
366 | $ docker run -d -p 80:80 --name my-apache-php-app -v "$PWD":/var/www/html php:7.2-apache
367 | ```
368 |
369 | ### Changing `DocumentRoot` (or other Apache configuration)
370 |
371 | Some applications may wish to change the default `DocumentRoot` in Apache (away from `/var/www/html`). The following demonstrates one way to do so using an environment variable (which can then be modified at container runtime as well):
372 |
373 | ```dockerfile
374 | FROM php:7.1-apache
375 |
376 | ENV APACHE_DOCUMENT_ROOT /path/to/new/root
377 |
378 | RUN sed -ri -e 's!/var/www/html!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/sites-available/*.conf
379 | RUN sed -ri -e 's!/var/www/!${APACHE_DOCUMENT_ROOT}!g' /etc/apache2/apache2.conf /etc/apache2/conf-available/*.conf
380 | ```
381 |
382 | A similar technique could be employed for other Apache configuration options.
383 |
384 | ## `php:<version>-fpm`
385 |
386 | This variant contains [PHP's FastCGI Process Manager (FPM)](https://www.php.net/fpm), which is the recommended FastCGI implementation for PHP.
387 |
388 | 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.
389 |
390 | Some potentially helpful resources:
391 |
392 | - [FPM's Official Configuration Reference](https://www.php.net/manual/en/install.fpm.configuration.php)
393 | - [Simplified example by @md5](https://gist.github.com/md5/d9206eacb5a0ff5d6be0)
394 | - [Very detailed article by Pascal Landau](https://www.pascallandau.com/blog/php-php-fpm-and-nginx-on-docker-in-windows-10/)
395 | - [Stack Overflow discussion](https://stackoverflow.com/q/29905953/433558)
396 | - [Apache httpd Wiki example](https://wiki.apache.org/httpd/PHPFPMWordpress)
397 |
398 | **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.
399 |
400 | ## `php:<version>-alpine`
401 |
402 | 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.
403 |
404 | 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.
405 |
406 | 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).
407 |
408 | # License
409 |
410 | View [license information](http://php.net/license/) for the software contained in this image.
411 |
412 | 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).
413 |
414 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `php/` directory](https://github.com/docker-library/repo-info/tree/master/repos/php).
415 |
416 | 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.
417 |
```
--------------------------------------------------------------------------------
/postgres/README.md:
--------------------------------------------------------------------------------
```markdown
1 | <!--
2 |
3 | ********************************************************************************
4 |
5 | WARNING:
6 |
7 | DO NOT EDIT "postgres/README.md"
8 |
9 | IT IS AUTO-GENERATED
10 |
11 | (from the other files in "postgres/" combined with a set of templates)
12 |
13 | ********************************************************************************
14 |
15 | -->
16 |
17 | # Quick reference
18 |
19 | - **Maintained by**:
20 | [the PostgreSQL Docker Community](https://github.com/docker-library/postgres)
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 | - [`17.5`, `17`, `latest`, `17.5-bookworm`, `17-bookworm`, `bookworm`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/17/bookworm/Dockerfile)
28 |
29 | - [`17.5-bullseye`, `17-bullseye`, `bullseye`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/17/bullseye/Dockerfile)
30 |
31 | - [`17.5-alpine3.21`, `17-alpine3.21`, `alpine3.21`, `17.5-alpine`, `17-alpine`, `alpine`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/17/alpine3.21/Dockerfile)
32 |
33 | - [`17.5-alpine3.20`, `17-alpine3.20`, `alpine3.20`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/17/alpine3.20/Dockerfile)
34 |
35 | - [`16.9`, `16`, `16.9-bookworm`, `16-bookworm`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/16/bookworm/Dockerfile)
36 |
37 | - [`16.9-bullseye`, `16-bullseye`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/16/bullseye/Dockerfile)
38 |
39 | - [`16.9-alpine3.21`, `16-alpine3.21`, `16.9-alpine`, `16-alpine`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/16/alpine3.21/Dockerfile)
40 |
41 | - [`16.9-alpine3.20`, `16-alpine3.20`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/16/alpine3.20/Dockerfile)
42 |
43 | - [`15.13`, `15`, `15.13-bookworm`, `15-bookworm`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/15/bookworm/Dockerfile)
44 |
45 | - [`15.13-bullseye`, `15-bullseye`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/15/bullseye/Dockerfile)
46 |
47 | - [`15.13-alpine3.21`, `15-alpine3.21`, `15.13-alpine`, `15-alpine`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/15/alpine3.21/Dockerfile)
48 |
49 | - [`15.13-alpine3.20`, `15-alpine3.20`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/15/alpine3.20/Dockerfile)
50 |
51 | - [`14.18`, `14`, `14.18-bookworm`, `14-bookworm`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/14/bookworm/Dockerfile)
52 |
53 | - [`14.18-bullseye`, `14-bullseye`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/14/bullseye/Dockerfile)
54 |
55 | - [`14.18-alpine3.21`, `14-alpine3.21`, `14.18-alpine`, `14-alpine`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/14/alpine3.21/Dockerfile)
56 |
57 | - [`14.18-alpine3.20`, `14-alpine3.20`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/14/alpine3.20/Dockerfile)
58 |
59 | - [`13.21`, `13`, `13.21-bookworm`, `13-bookworm`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/13/bookworm/Dockerfile)
60 |
61 | - [`13.21-bullseye`, `13-bullseye`](https://github.com/docker-library/postgres/blob/266748257c85f28eb01a276e84860013ade2eb14/13/bullseye/Dockerfile)
62 |
63 | - [`13.21-alpine3.21`, `13-alpine3.21`, `13.21-alpine`, `13-alpine`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/13/alpine3.21/Dockerfile)
64 |
65 | - [`13.21-alpine3.20`, `13-alpine3.20`](https://github.com/docker-library/postgres/blob/b23470265cc9c4bc283a88bf6c5054e3fca87c16/13/alpine3.20/Dockerfile)
66 |
67 | # Quick reference (cont.)
68 |
69 | - **Where to file issues**:
70 | [https://github.com/docker-library/postgres/issues](https://github.com/docker-library/postgres/issues?q=)
71 |
72 | - **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
73 | [`amd64`](https://hub.docker.com/r/amd64/postgres/), [`arm32v5`](https://hub.docker.com/r/arm32v5/postgres/), [`arm32v6`](https://hub.docker.com/r/arm32v6/postgres/), [`arm32v7`](https://hub.docker.com/r/arm32v7/postgres/), [`arm64v8`](https://hub.docker.com/r/arm64v8/postgres/), [`i386`](https://hub.docker.com/r/i386/postgres/), [`mips64le`](https://hub.docker.com/r/mips64le/postgres/), [`ppc64le`](https://hub.docker.com/r/ppc64le/postgres/), [`riscv64`](https://hub.docker.com/r/riscv64/postgres/), [`s390x`](https://hub.docker.com/r/s390x/postgres/)
74 |
75 | - **Published image artifact details**:
76 | [repo-info repo's `repos/postgres/` directory](https://github.com/docker-library/repo-info/blob/master/repos/postgres) ([history](https://github.com/docker-library/repo-info/commits/master/repos/postgres))
77 | (image metadata, transfer size, etc)
78 |
79 | - **Image updates**:
80 | [official-images repo's `library/postgres` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fpostgres)
81 | [official-images repo's `library/postgres` file](https://github.com/docker-library/official-images/blob/master/library/postgres) ([history](https://github.com/docker-library/official-images/commits/master/library/postgres))
82 |
83 | - **Source of this description**:
84 | [docs repo's `postgres/` directory](https://github.com/docker-library/docs/tree/master/postgres) ([history](https://github.com/docker-library/docs/commits/master/postgres))
85 |
86 | # What is PostgreSQL?
87 |
88 | PostgreSQL, often simply "Postgres", is an object-relational database management system (ORDBMS) with an emphasis on extensibility and standards-compliance. As a database server, its primary function is to store data, securely and supporting best practices, and retrieve it later, as requested by other software applications, be it those on the same computer or those running on another computer across a network (including the Internet). It can handle workloads ranging from small single-machine applications to large Internet-facing applications with many concurrent users. Recent versions also provide replication of the database itself for security and scalability.
89 |
90 | PostgreSQL implements the majority of the SQL:2011 standard, is ACID-compliant and transactional (including most DDL statements) avoiding locking issues using multiversion concurrency control (MVCC), provides immunity to dirty reads and full serializability; handles complex SQL queries using many indexing methods that are not available in other databases; has updateable views and materialized views, triggers, foreign keys; supports functions and stored procedures, and other expandability, and has a large number of extensions written by third parties. In addition to the possibility of working with the major proprietary and open source databases, PostgreSQL supports migration from them, by its extensive standard SQL support and available migration tools. And if proprietary extensions had been used, by its extensibility that can emulate many through some built-in and third-party open source compatibility extensions, such as for Oracle.
91 |
92 | > [wikipedia.org/wiki/PostgreSQL](https://en.wikipedia.org/wiki/PostgreSQL)
93 |
94 | 
95 |
96 | # How to use this image
97 |
98 | ## start a postgres instance
99 |
100 | ```console
101 | $ docker run --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword -d postgres
102 | ```
103 |
104 | The default `postgres` user and database are created in the entrypoint with `initdb`.
105 |
106 | > The postgres database is a default database meant for use by users, utilities and third party applications.
107 | >
108 | > [postgresql.org/docs](https://www.postgresql.org/docs/14/app-initdb.html)
109 |
110 | ## ... or via `psql`
111 |
112 | ```console
113 | $ docker run -it --rm --network some-network postgres psql -h some-postgres -U postgres
114 | psql (14.3)
115 | Type "help" for help.
116 |
117 | postgres=# SELECT 1;
118 | ?column?
119 | ----------
120 | 1
121 | (1 row)
122 | ```
123 |
124 | ## ... via [`docker compose`](https://github.com/docker/compose)
125 |
126 | Example `compose.yaml` for `postgres`:
127 |
128 | ```yaml
129 | # Use postgres/example user/password credentials
130 |
131 | services:
132 |
133 | db:
134 | image: postgres
135 | restart: always
136 | # set shared memory limit when using docker compose
137 | shm_size: 128mb
138 | # or set shared memory limit when deploy via swarm stack
139 | #volumes:
140 | # - type: tmpfs
141 | # target: /dev/shm
142 | # tmpfs:
143 | # size: 134217728 # 128*2^20 bytes = 128Mb
144 | environment:
145 | POSTGRES_PASSWORD: example
146 |
147 | adminer:
148 | image: adminer
149 | restart: always
150 | ports:
151 | - 8080:8080
152 | ```
153 |
154 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
155 |
156 | # How to extend this image
157 |
158 | There are many ways to extend the `postgres` image. Without trying to support every possible use case, here are just a few that we have found useful.
159 |
160 | ## Environment Variables
161 |
162 | The PostgreSQL image uses several environment variables which are easy to miss. The only variable required is `POSTGRES_PASSWORD`, the rest are optional.
163 |
164 | **Warning**: the Docker specific variables will only have an effect if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup.
165 |
166 | ### `POSTGRES_PASSWORD`
167 |
168 | This environment variable is required for you to use the PostgreSQL image. It must not be empty or undefined. This environment variable sets the superuser password for PostgreSQL. The default superuser is defined by the `POSTGRES_USER` environment variable.
169 |
170 | **Note 1:** The PostgreSQL image sets up `trust` authentication locally so you may notice a password is not required when connecting from `localhost` (inside the same container). However, a password will be required if connecting from a different host/container.
171 |
172 | **Note 2:** This variable defines the superuser password in the PostgreSQL instance, as set by the `initdb` script during initial container startup. It has no effect on the `PGPASSWORD` environment variable that may be used by the `psql` client at runtime, as described at [https://www.postgresql.org/docs/14/libpq-envars.html](https://www.postgresql.org/docs/14/libpq-envars.html). `PGPASSWORD`, if used, will be specified as a separate environment variable.
173 |
174 | ### `POSTGRES_USER`
175 |
176 | This optional environment variable is used in conjunction with `POSTGRES_PASSWORD` to set a user and its password. This variable will create the specified user with superuser power and a database with the same name. If it is not specified, then the default user of `postgres` will be used.
177 |
178 | Be aware that if this parameter is specified, PostgreSQL will still show `The files belonging to this database system will be owned by user "postgres"` during initialization. This refers to the Linux system user (from `/etc/passwd` in the image) that the `postgres` daemon runs as, and as such is unrelated to the `POSTGRES_USER` option. See the section titled "Arbitrary `--user` Notes" for more details.
179 |
180 | ### `POSTGRES_DB`
181 |
182 | This optional environment variable can be used to define a different name for the default database that is created when the image is first started. If it is not specified, then the value of `POSTGRES_USER` will be used.
183 |
184 | ### `POSTGRES_INITDB_ARGS`
185 |
186 | This optional environment variable can be used to send arguments to `postgres initdb`. The value is a space separated string of arguments as `postgres initdb` would expect them. This is useful for adding functionality like data page checksums: `-e POSTGRES_INITDB_ARGS="--data-checksums"`.
187 |
188 | ### `POSTGRES_INITDB_WALDIR`
189 |
190 | This optional environment variable can be used to define another location for the Postgres transaction log. By default the transaction log is stored in a subdirectory of the main Postgres data folder (`PGDATA`). Sometimes it can be desireable to store the transaction log in a different directory which may be backed by storage with different performance or reliability characteristics.
191 |
192 | **Note:** on PostgreSQL 9.x, this variable is `POSTGRES_INITDB_XLOGDIR` (reflecting [the changed name of the `--xlogdir` flag to `--waldir` in PostgreSQL 10+](https://wiki.postgresql.org/wiki/New_in_postgres_10#Renaming_of_.22xlog.22_to_.22wal.22_Globally_.28and_location.2Flsn.29)).
193 |
194 | ### `POSTGRES_HOST_AUTH_METHOD`
195 |
196 | This optional variable can be used to control the `auth-method` for `host` connections for `all` databases, `all` users, and `all` addresses. If unspecified then [`scram-sha-256` password authentication](https://www.postgresql.org/docs/14/auth-password.html) is used (in 14+; `md5` in older releases). On an uninitialized database, this will populate `pg_hba.conf` via this approximate line:
197 |
198 | ```console
199 | echo "host all all all $POSTGRES_HOST_AUTH_METHOD" >> pg_hba.conf
200 | ```
201 |
202 | See the PostgreSQL documentation on [`pg_hba.conf`](https://www.postgresql.org/docs/14/auth-pg-hba-conf.html) for more information about possible values and their meanings.
203 |
204 | **Note 1:** It is not recommended to use `trust` since it allows anyone to connect without a password, even if one is set (like via `POSTGRES_PASSWORD`). For more information see the PostgreSQL documentation on [*Trust Authentication*](https://www.postgresql.org/docs/14/auth-trust.html).
205 |
206 | **Note 2:** If you set `POSTGRES_HOST_AUTH_METHOD` to `trust`, then `POSTGRES_PASSWORD` is not required.
207 |
208 | **Note 3:** If you set this to an alternative value (such as `scram-sha-256`), you might need additional `POSTGRES_INITDB_ARGS` for the database to initialize correctly (such as `POSTGRES_INITDB_ARGS=--auth-host=scram-sha-256`).
209 |
210 | ### `PGDATA`
211 |
212 | > **Important Note:** Mount the data volume at `/var/lib/postgresql/data` and not at `/var/lib/postgresql` because mounts at the latter path WILL NOT PERSIST database data when the container is re-created. The Dockerfile that builds the image declares a volume at `/var/lib/postgresql/data` and if no data volume is mounted at that path then the container runtime will automatically create an [anonymous volume](https://docs.docker.com/engine/storage/#volumes) that is not reused across container re-creations. Data will be written to the anonymous volume rather than your intended data volume and won't persist when the container is deleted and re-created.
213 |
214 | This optional variable can be used to define another location - like a subdirectory - for the database files. The default is `/var/lib/postgresql/data`. If the data volume you're using is a filesystem mountpoint (like with GCE persistent disks), or remote folder that cannot be chowned to the `postgres` user (like some NFS mounts), or contains folders/files (e.g. `lost+found`), Postgres `initdb` requires a subdirectory to be created within the mountpoint to contain the data.
215 |
216 | For example:
217 |
218 | ```console
219 | $ docker run -d \
220 | --name some-postgres \
221 | -e POSTGRES_PASSWORD=mysecretpassword \
222 | -e PGDATA=/var/lib/postgresql/data/pgdata \
223 | -v /custom/mount:/var/lib/postgresql/data \
224 | postgres
225 | ```
226 |
227 | This is an environment variable that is not Docker specific. Because the variable is used by the `postgres` server binary (see the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.7)), the entrypoint script takes it into account.
228 |
229 | ## Docker Secrets
230 |
231 | As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to some of 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:
232 |
233 | ```console
234 | $ docker run --name some-postgres -e POSTGRES_PASSWORD_FILE=/run/secrets/postgres-passwd -d postgres
235 | ```
236 |
237 | Currently, this is only supported for `POSTGRES_INITDB_ARGS`, `POSTGRES_PASSWORD`, `POSTGRES_USER`, and `POSTGRES_DB`.
238 |
239 | ## Initialization scripts
240 |
241 | If you would like to do additional initialization in an image derived from this one, add one or more `*.sql`, `*.sql.gz`, or `*.sh` scripts under `/docker-entrypoint-initdb.d` (creating the directory if necessary). After the entrypoint calls `initdb` to create the default `postgres` user and database, it will run any `*.sql` files, run any executable `*.sh` scripts, and source any non-executable `*.sh` scripts found in that directory to do further initialization before starting the service.
242 |
243 | **Warning**: scripts in `/docker-entrypoint-initdb.d` are only run if you start the container with a data directory that is empty; any pre-existing database will be left untouched on container startup. One common problem is that if one of your `/docker-entrypoint-initdb.d` scripts fails (which will cause the entrypoint script to exit) and your orchestrator restarts the container with the already initialized data directory, it will not continue on with your scripts.
244 |
245 | For example, to add an additional user and database, add the following to `/docker-entrypoint-initdb.d/init-user-db.sh`:
246 |
247 | ```bash
248 | #!/usr/bin/env bash
249 | set -e
250 |
251 | psql -v ON_ERROR_STOP=1 --username "$POSTGRES_USER" --dbname "$POSTGRES_DB" <<-EOSQL
252 | CREATE USER docker;
253 | CREATE DATABASE docker;
254 | GRANT ALL PRIVILEGES ON DATABASE docker TO docker;
255 | EOSQL
256 | ```
257 |
258 | These initialization files will be executed in sorted name order as defined by the current locale, which defaults to `en_US.utf8`. Any `*.sql` files will be executed by `POSTGRES_USER`, which defaults to the `postgres` superuser. It is recommended that any `psql` commands that are run inside of a `*.sh` script be executed as `POSTGRES_USER` by using the `--username "$POSTGRES_USER"` flag. This user will be able to connect without a password due to the presence of `trust` authentication for Unix socket connections made inside the container.
259 |
260 | Additionally, as of [docker-library/postgres#253](https://github.com/docker-library/postgres/pull/253), these initialization scripts are run as the `postgres` user (or as the "semi-arbitrary user" specified with the `--user` flag to `docker run`; see the section titled "Arbitrary `--user` Notes" for more details). Also, as of [docker-library/postgres#440](https://github.com/docker-library/postgres/pull/440), the temporary daemon started for these initialization scripts listens only on the Unix socket, so any `psql` usage should drop the hostname portion (see [docker-library/postgres#474 (comment)](https://github.com/docker-library/postgres/issues/474#issuecomment-416914741) for example).
261 |
262 | ## Database Configuration
263 |
264 | There are many ways to set PostgreSQL server configuration. For information on what is available to configure, see the [PostgreSQL docs](https://www.postgresql.org/docs/14/runtime-config.html) for the specific version of PostgreSQL that you are running. Here are a few options for setting configuration:
265 |
266 | - Use a custom config file. Create a config file and get it into the container. If you need a starting place for your config file you can use the sample provided by PostgreSQL which is available in the container at `/usr/share/postgresql/postgresql.conf.sample` (`/usr/local/share/postgresql/postgresql.conf.sample` in Alpine variants).
267 |
268 | - **Important note:** you must set `listen_addresses = '*'`so that other containers will be able to access postgres.
269 |
270 | ```console
271 | $ # get the default config
272 | $ docker run -i --rm postgres cat /usr/share/postgresql/postgresql.conf.sample > my-postgres.conf
273 |
274 | $ # customize the config
275 |
276 | $ # run postgres with custom config
277 | $ docker run -d --name some-postgres -v "$PWD/my-postgres.conf":/etc/postgresql/postgresql.conf -e POSTGRES_PASSWORD=mysecretpassword postgres -c 'config_file=/etc/postgresql/postgresql.conf'
278 | ```
279 |
280 | - Set options directly on the run line. The entrypoint script is made so that any options passed to the docker command will be passed along to the `postgres` server daemon. From the [PostgreSQL docs](https://www.postgresql.org/docs/14/app-postgres.html#id-1.9.5.14.6.3) we see that any option available in a `.conf` file can be set via `-c`.
281 |
282 | ```console
283 | $ docker run -d --name some-postgres -e POSTGRES_PASSWORD=mysecretpassword postgres -c shared_buffers=256MB -c max_connections=200
284 | ```
285 |
286 | ## Locale Customization
287 |
288 | You can extend the Debian-based images with a simple `Dockerfile` to set a different locale. The following example will set the default locale to `de_DE.utf8`:
289 |
290 | ```dockerfile
291 | FROM postgres:14.3
292 | RUN localedef -i de_DE -c -f UTF-8 -A /usr/share/locale/locale.alias de_DE.UTF-8
293 | ENV LANG de_DE.utf8
294 | ```
295 |
296 | Since database initialization only happens on container startup, this allows us to set the language before it is created.
297 |
298 | Also of note, Alpine-based variants starting with Postgres 15 support [ICU locales](https://www.postgresql.org/docs/15/locale.html#id-1.6.11.3.7). Previous Postgres versions based on alpine do *not* support locales; see ["Character sets and locale" in the musl documentation](https://wiki.musl-libc.org/functional-differences-from-glibc.html#Character-sets-and-locale) for more details.
299 |
300 | You can set locales in the Alpine-based images with `POSTGRES_INITDB_ARGS` to set a different locale. The following example will set the default locale for a newly initialized database to `de_DE.utf8`:
301 |
302 | ```console
303 | $ docker run -d -e LANG=de_DE.utf8 -e POSTGRES_INITDB_ARGS="--locale-provider=icu --icu-locale=de-DE" -e POSTGRES_PASSWORD=mysecretpassword postgres:15-alpine
304 | ```
305 |
306 | ## Additional Extensions
307 |
308 | When using the default (Debian-based) variants, installing additional extensions (such as PostGIS) should be as simple as installing the relevant packages (see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/81a0b55/14-3.2/Dockerfile) for a concrete example).
309 |
310 | When using the Alpine variants, any postgres extension not listed in [postgres-contrib](https://www.postgresql.org/docs/14/contrib.html) will need to be compiled in your own image (again, see [github.com/postgis/docker-postgis](https://github.com/postgis/docker-postgis/blob/81a0b55/14-3.2/alpine/Dockerfile) for a concrete example).
311 |
312 | # Arbitrary `--user` Notes
313 |
314 | As of [docker-library/postgres#253](https://github.com/docker-library/postgres/pull/253), this image supports running as a (mostly) arbitrary user via `--user` on `docker run`. As of [docker-library/postgres#1018](https://github.com/docker-library/postgres/pull/1018), this is also the case for the Alpine variants.
315 |
316 | The main caveat to note is that `postgres` doesn't care what UID it runs as (as long as the owner of `/var/lib/postgresql/data` matches), but `initdb` *does* care (and needs the user to exist in `/etc/passwd`):
317 |
318 | ```console
319 | $ docker run -it --rm --user www-data -e POSTGRES_PASSWORD=mysecretpassword postgres
320 | The files belonging to this database system will be owned by user "www-data".
321 | ...
322 |
323 | $ docker run -it --rm --user 1000:1000 -e POSTGRES_PASSWORD=mysecretpassword postgres
324 | initdb: could not look up effective user ID 1000: user does not exist
325 | ```
326 |
327 | The three easiest ways to get around this:
328 |
329 | 1. allow the image to use [the `nss_wrapper` library](https://cwrap.org/nss_wrapper.html) to "fake" `/etc/passwd` contents for you (see [docker-library/postgres#448](https://github.com/docker-library/postgres/pull/448) for more details)
330 |
331 | 2. bind-mount `/etc/passwd` read-only from the host (if the UID you desire is a valid user on your host):
332 |
333 | ```console
334 | $ docker run -it --rm --user "$(id -u):$(id -g)" -v /etc/passwd:/etc/passwd:ro -e POSTGRES_PASSWORD=mysecretpassword postgres
335 | The files belonging to this database system will be owned by user "jsmith".
336 | ...
337 | ```
338 |
339 | 3. initialize the target directory separately from the final runtime (with a `chown` in between):
340 |
341 | ```console
342 | $ docker volume create pgdata
343 | $ docker run -it --rm -v pgdata:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword postgres
344 | The files belonging to this database system will be owned by user "postgres".
345 | ...
346 | ( once it's finished initializing successfully and is waiting for connections, stop it )
347 | $ docker run -it --rm -v pgdata:/var/lib/postgresql/data bash chown -R 1000:1000 /var/lib/postgresql/data
348 | $ docker run -it --rm --user 1000:1000 -v pgdata:/var/lib/postgresql/data postgres
349 | LOG: database system was shut down at 2017-01-20 00:03:23 UTC
350 | LOG: MultiXact member wraparound protections are now enabled
351 | LOG: autovacuum launcher started
352 | LOG: database system is ready to accept connections
353 | ```
354 |
355 | # Caveats
356 |
357 | If there is no database when `postgres` starts in a container, then `postgres` will create the default database for you. While this is the expected behavior of `postgres`, this means that it will not accept incoming connections during that time. This may cause issues when using automation tools, such as `docker compose`, that start several containers simultaneously.
358 |
359 | Also note that the default `/dev/shm` size for containers is 64MB. If the shared memory is exhausted you will encounter `ERROR: could not resize shared memory segment . . . : No space left on device`. You will want to pass [`--shm-size=256MB`](https://docs.docker.com/engine/reference/run/#runtime-constraints-on-resources) for example to `docker run`, or alternatively in [`docker compose`](https://docs.docker.com/compose/compose-file/05-services/#shm_size).
360 |
361 | ## Where to Store Data
362 |
363 | **Important note:** There are several ways to store data used by applications that run in Docker containers. We encourage users of the `postgres` images to familiarize themselves with the options available, including:
364 |
365 | - Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers.
366 | - 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.
367 |
368 | 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:
369 |
370 | 1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`.
371 | 2. Start your `postgres` container like this:
372 |
373 | ```console
374 | $ docker run --name some-postgres -v /my/own/datadir:/var/lib/postgresql/data -e POSTGRES_PASSWORD=mysecretpassword -d postgres:tag
375 | ```
376 |
377 | The `-v /my/own/datadir:/var/lib/postgresql/data` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/lib/postgresql/data` inside the container, where PostgreSQL by default will write its data files.
378 |
379 | # Image Variants
380 |
381 | The `postgres` images come in many flavors, each designed for a specific use case.
382 |
383 | ## `postgres:<version>`
384 |
385 | 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.
386 |
387 | 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.
388 |
389 | ## `postgres:<version>-alpine`
390 |
391 | 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.
392 |
393 | 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.
394 |
395 | 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).
396 |
397 | # License
398 |
399 | View [license information](https://www.postgresql.org/about/licence/) for the software contained in this image.
400 |
401 | 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).
402 |
403 | Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `postgres/` directory](https://github.com/docker-library/repo-info/tree/master/repos/postgres).
404 |
405 | 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.
406 |
```