This is page 3 of 22. Use http://codebase.md/id/docs/get_started/create/presentation_layout.html?lines=false&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
--------------------------------------------------------------------------------
/adminer/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "adminer/README.md"
IT IS AUTO-GENERATED
(from the other files in "adminer/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[Tim Düsterhus (of the Docker Community)](https://github.com/TimWolla/docker-adminer)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`5.2.1`, `5`, `latest`, `5.2.1-standalone`, `5-standalone`, `standalone`](https://github.com/TimWolla/docker-adminer/blob/98b870868bdd5adb179e79aa9b11cc01086ec1db/5/Dockerfile)
- [`5.2.1-fastcgi`, `5-fastcgi`, `fastcgi`](https://github.com/TimWolla/docker-adminer/blob/98b870868bdd5adb179e79aa9b11cc01086ec1db/5/fastcgi/Dockerfile)
- [`4.17.1`, `4`, `4.17.1-standalone`, `4-standalone`](https://github.com/TimWolla/docker-adminer/blob/0c0fd187e8646ad61fe592a80d66abec2c1dc951/4/Dockerfile)
- [`4.17.1-fastcgi`, `4-fastcgi`](https://github.com/TimWolla/docker-adminer/blob/0c0fd187e8646ad61fe592a80d66abec2c1dc951/4/fastcgi/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/TimWolla/docker-adminer/issues](https://github.com/TimWolla/docker-adminer/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/adminer/), [`arm32v6`](https://hub.docker.com/r/arm32v6/adminer/), [`arm32v7`](https://hub.docker.com/r/arm32v7/adminer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/adminer/), [`i386`](https://hub.docker.com/r/i386/adminer/), [`ppc64le`](https://hub.docker.com/r/ppc64le/adminer/), [`riscv64`](https://hub.docker.com/r/riscv64/adminer/), [`s390x`](https://hub.docker.com/r/s390x/adminer/)
- **Published image artifact details**:
[repo-info repo's `repos/adminer/` directory](https://github.com/docker-library/repo-info/blob/master/repos/adminer) ([history](https://github.com/docker-library/repo-info/commits/master/repos/adminer))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/adminer` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fadminer)
[official-images repo's `library/adminer` file](https://github.com/docker-library/official-images/blob/master/library/adminer) ([history](https://github.com/docker-library/official-images/commits/master/library/adminer))
- **Source of this description**:
[docs repo's `adminer/` directory](https://github.com/docker-library/docs/tree/master/adminer) ([history](https://github.com/docker-library/docs/commits/master/adminer))
# Adminer
## What is Adminer?
Adminer (formerly phpMinAdmin) is a full-featured database management tool written in PHP. Conversely to phpMyAdmin, it consist of a single file ready to deploy to the target server. Adminer is available for MySQL, PostgreSQL, SQLite, MS SQL, Oracle, Firebird, SimpleDB, Elasticsearch and MongoDB.
> [adminer.org](https://www.adminer.org)

## How to use this image
### Standalone
```console
$ docker run --link some_database:db -p 8080:8080 adminer
```
Then you can hit `http://localhost:8080` or `http://host-ip:8080` in your browser.
### FastCGI
If you are already running a FastCGI capable web server you might prefer running Adminer via FastCGI:
```console
$ docker run --link some_database:db -p 9000:9000 adminer:fastcgi
```
Then point your web server to port 9000 of the container.
Note: This exposes the FastCGI socket to the Internet. Make sure to add proper firewall rules or use a private Docker network instead to prevent a direct access.
### ... via [`docker compose`](https://github.com/docker/compose)
Example `compose.yaml` for `adminer`:
```yaml
# Use root/example as user/password credentials
services:
adminer:
image: adminer
restart: always
ports:
- 8080:8080
db:
image: mysql:5.6
restart: always
environment:
MYSQL_ROOT_PASSWORD: example
```
Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
### Loading plugins
This image bundles all official Adminer plugins. You can find the list of plugins on GitHub: https://github.com/vrana/adminer/tree/master/plugins.
To load plugins you can pass a list of filenames in `ADMINER_PLUGINS`:
```console
$ docker run --link some_database:db -p 8080:8080 -e ADMINER_PLUGINS='tables-filter tinymce' adminer
```
If a plugin *requires* parameters to work correctly instead of adding the plugin to `ADMINER_PLUGINS`, you need to add a custom file to the container:
```console
$ docker run --link some_database:db -p 8080:8080 -e ADMINER_PLUGINS='login-servers' adminer
Unable to load plugin file "login-servers", because it has required parameters: servers
Create a file "/var/www/html/plugins-enabled/login-servers.php" with the following contents to load the plugin:
<?php
require_once('plugins/login-servers.php');
/** Set supported servers
* @param array array($domain) or array($domain => $description) or array($category => array())
* @param string
*/
return new AdminerLoginServers(
$servers = ???,
$driver = 'server'
);
```
To load a custom plugin you can add PHP scripts that return the instance of the plugin object to `/var/www/html/plugins-enabled/`.
### Choosing a design
The image bundles all the designs that are available in the source package of adminer. You can find the list of designs on GitHub: https://github.com/vrana/adminer/tree/master/designs.
To use a bundled design you can pass its name in `ADMINER_DESIGN`:
```console
$ docker run --link some_database:db -p 8080:8080 -e ADMINER_DESIGN='nette' adminer
```
To use a custom design you can add a file called `/var/www/html/adminer.css`.
### Usage with external server
You can specify the default host with the `ADMINER_DEFAULT_SERVER` environment variable. This is useful if you are connecting to an external server or a docker container named something other than the default `db`.
```console
docker run -p 8080:8080 -e ADMINER_DEFAULT_SERVER=mysql adminer
```
## Supported Drivers
While Adminer supports a wide range of database drivers this image only supports the following out of the box:
- MySQL
- PostgreSQL
- SQLite
- SimpleDB
- Elasticsearch
To add support for the other drivers you will need to install the following PHP extensions on top of this image:
- `pdo_dblib` (MS SQL)
- `oci8` (Oracle)
- `interbase` (Firebird)
- `mongodb` (MongoDB)
# License
View [license information](https://github.com/vrana/adminer/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `adminer/` directory](https://github.com/docker-library/repo-info/tree/master/repos/adminer).
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.
```
--------------------------------------------------------------------------------
/groovy/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "groovy/README.md"
IT IS AUTO-GENERATED
(from the other files in "groovy/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[the Apache Groovy project](https://github.com/groovy/docker-groovy)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`4.0.25-jdk8`, `4.0-jdk8`, `jdk8`, `4.0.25-jdk8-jammy`, `4.0-jdk8-jammy`, `jdk8-jammy`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk8/Dockerfile)
- [`4.0.25-jdk11`, `4.0-jdk11`, `jdk11`, `4.0.25-jdk11-jammy`, `4.0-jdk11-jammy`, `jdk11-jammy`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk11/Dockerfile)
- [`4.0.25-jdk11-alpine`, `4.0-jdk11-alpine`, `jdk11-alpine`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk11-alpine/Dockerfile)
- [`4.0.25-jdk17`, `4.0-jdk17`, `jdk17`, `4.0.25-jdk`, `4.0-jdk`, `4.0.25`, `4.0`, `4`, `jdk`, `latest`, `4.0.25-jdk17-jammy`, `4.0-jdk17-jammy`, `jdk17-jammy`, `4.0.25-jdk-jammy`, `4.0-jdk-jammy`, `4.0.25-jammy`, `4.0-jammy`, `4-jammy`, `jdk-jammy`, `jammy`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk17/Dockerfile)
- [`4.0.25-jdk17-alpine`, `4.0-jdk17-alpine`, `jdk17-alpine`, `4.0.25-jdk-alpine`, `4.0-jdk-alpine`, `4.0.25-alpine`, `4.0-alpine`, `4-alpine`, `jdk-alpine`, `alpine`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk17-alpine/Dockerfile)
- [`4.0.25-jdk21`, `4.0-jdk21`, `jdk21`, `4.0.25-jdk21-jammy`, `4.0-jdk21-jammy`, `jdk21-jammy`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk21/Dockerfile)
- [`4.0.25-jdk21-alpine`, `4.0-jdk21-alpine`, `jdk21-alpine`](https://github.com/groovy/docker-groovy/blob/0bf66b24590f71de06ad45107716beacd4a07c06/jdk21-alpine/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/groovy/docker-groovy/issues](https://github.com/groovy/docker-groovy/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/groovy/), [`arm32v7`](https://hub.docker.com/r/arm32v7/groovy/), [`arm64v8`](https://hub.docker.com/r/arm64v8/groovy/), [`ppc64le`](https://hub.docker.com/r/ppc64le/groovy/), [`s390x`](https://hub.docker.com/r/s390x/groovy/)
- **Published image artifact details**:
[repo-info repo's `repos/groovy/` directory](https://github.com/docker-library/repo-info/blob/master/repos/groovy) ([history](https://github.com/docker-library/repo-info/commits/master/repos/groovy))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/groovy` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fgroovy)
[official-images repo's `library/groovy` file](https://github.com/docker-library/official-images/blob/master/library/groovy) ([history](https://github.com/docker-library/official-images/commits/master/library/groovy))
- **Source of this description**:
[docs repo's `groovy/` directory](https://github.com/docker-library/docs/tree/master/groovy) ([history](https://github.com/docker-library/docs/commits/master/groovy))
# What is Groovy?
[Apache Groovy](http://groovy-lang.org/) is a powerful, optionally typed and dynamic language, with static-typing and static compilation capabilities, for the Java platform aimed at improving developer productivity thanks to a concise, familiar and easy to learn syntax. It integrates smoothly with any Java program, and immediately delivers to your application powerful features, including scripting capabilities, Domain-Specific Language authoring, runtime and compile-time meta-programming and functional programming.

# How to use this image
Note that if you are mounting a volume and the uid running Docker is not `1000`, you should run as user `root` (`-u root`).
## Starting Groovysh
`docker run -it --rm groovy`
## Running a Groovy script
`docker run --rm -v "$PWD":/home/groovy/scripts -w /home/groovy/scripts groovy groovy <script> <script-args>`
## Reusing the Grapes cache
The local Grapes cache can be reused across containers by creating a volume and mounting it in `/home/groovy/.groovy/grapes`.
```console
docker volume create --name grapes-cache
docker run --rm -it -v grapes-cache:/home/groovy/.groovy/grapes groovy
```
# Image Variants
The `groovy` images come in many flavors, each designed for a specific use case.
## `groovy:<version>`
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
Some of these tags may have names like jammy in them. These are the suite code names for releases of [Ubuntu](https://wiki.ubuntu.com/Releases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Ubuntu.
## `groovy:<version>-alpine`
This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
# License
View [license information](http://www.apache.org/licenses/LICENSE-2.0.html) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `groovy/` directory](https://github.com/docker-library/repo-info/tree/master/repos/groovy).
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.
```
--------------------------------------------------------------------------------
/spark/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "spark/README.md"
IT IS AUTO-GENERATED
(from the other files in "spark/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[Apache Spark](https://spark.apache.org/committers.html)
- **Where to get help**:
[Apache Spark™ community](https://spark.apache.org/community.html)
# Supported tags and respective `Dockerfile` links
- [`4.0.0-preview2-scala2.13-java21-python3-ubuntu`, `4.0.0-preview2-java21-python3`, `4.0.0-preview2-java21`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java21-python3-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java21-r-ubuntu`, `4.0.0-preview2-java21-r`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java21-r-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java21-ubuntu`, `4.0.0-preview2-java21-scala`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java21-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java21-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java21-python3-r-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java17-python3-ubuntu`, `4.0.0-preview2-python3`, `4.0.0-preview2`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java17-python3-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java17-r-ubuntu`, `4.0.0-preview2-r`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java17-r-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java17-ubuntu`, `4.0.0-preview2-scala`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java17-ubuntu/Dockerfile)
- [`4.0.0-preview2-scala2.13-java17-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/059a2817e53ac7c0c408196f9eb91397a99ec84e/4.0.0-preview2/scala2.13-java17-python3-r-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java17-python3-ubuntu`, `3.5.5-java17-python3`, `3.5.5-java17`, `python3-java17`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java17-python3-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java17-r-ubuntu`, `3.5.5-java17-r`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java17-r-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java17-ubuntu`, `3.5.5-java17-scala`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java17-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java17-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java17-python3-r-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java11-python3-ubuntu`, `3.5.5-python3`, `3.5.5`, `python3`, `latest`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java11-python3-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java11-r-ubuntu`, `3.5.5-r`, `r`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java11-r-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java11-ubuntu`, `3.5.5-scala`, `scala`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java11-ubuntu/Dockerfile)
- [`3.5.5-scala2.12-java11-python3-r-ubuntu`](https://github.com/apache/spark-docker/blob/86f243f6df77cf247f8eb9931558d719e0c56144/3.5.5/scala2.12-java11-python3-r-ubuntu/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
https://issues.apache.org/jira/browse/SPARK
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/spark/), [`arm64v8`](https://hub.docker.com/r/arm64v8/spark/)
- **Published image artifact details**:
[repo-info repo's `repos/spark/` directory](https://github.com/docker-library/repo-info/blob/master/repos/spark) ([history](https://github.com/docker-library/repo-info/commits/master/repos/spark))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/spark` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fspark)
[official-images repo's `library/spark` file](https://github.com/docker-library/official-images/blob/master/library/spark) ([history](https://github.com/docker-library/official-images/commits/master/library/spark))
- **Source of this description**:
[docs repo's `spark/` directory](https://github.com/docker-library/docs/tree/master/spark) ([history](https://github.com/docker-library/docs/commits/master/spark))
# What is Apache Spark™?
Apache Spark™ is a multi-language engine for executing data engineering, data science, and machine learning on single-node machines or clusters. It provides high-level APIs in Scala, Java, Python, and R, and an optimized engine that supports general computation graphs for data analysis. It also supports a rich set of higher-level tools including Spark SQL for SQL and DataFrames, pandas API on Spark for pandas workloads, MLlib for machine learning, GraphX for graph processing, and Structured Streaming for stream processing.

## Online Documentation
You can find the latest Spark documentation, including a programming guide, on the [project web page](https://spark.apache.org/documentation.html). This README file only contains basic setup instructions.
## Interactive Scala Shell
The easiest way to start using Spark is through the Scala shell:
```console
docker run -it spark /opt/spark/bin/spark-shell
```
Try the following command, which should return 1,000,000,000:
```scala
scala> spark.range(1000 * 1000 * 1000).count()
```
## Interactive Python Shell
The easiest way to start using PySpark is through the Python shell:
```console
docker run -it spark:python3 /opt/spark/bin/pyspark
```
And run the following command, which should also return 1,000,000,000:
```python
>>> spark.range(1000 * 1000 * 1000).count()
```
## Interactive R Shell
The easiest way to start using R on Spark is through the R shell:
```console
docker run -it spark:r /opt/spark/bin/sparkR
```
## Running Spark on Kubernetes
https://spark.apache.org/docs/latest/running-on-kubernetes.html
## Configuration and environment variables
See more in https://github.com/apache/spark-docker/blob/master/OVERVIEW.md#environment-variable
# License
Apache Spark, Spark, Apache, the Apache feather logo, and the Apache Spark project logo are trademarks of The Apache Software Foundation.
Licensed under the [Apache License, Version 2.0](https://www.apache.org/licenses/LICENSE-2.0).
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `spark/` directory](https://github.com/docker-library/repo-info/tree/master/repos/spark).
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
```
--------------------------------------------------------------------------------
/notary/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "notary/README.md"
IT IS AUTO-GENERATED
(from the other files in "notary/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[Docker, Inc.](https://github.com/docker/notary-official-images)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`server-0.7.0`, `server`](https://github.com/docker/notary-official-images/blob/77b9b7833f8dd6be07104b214193788795a320ff/notary-server/Dockerfile)
- [`signer-0.7.0`, `signer`](https://github.com/docker/notary-official-images/blob/77b9b7833f8dd6be07104b214193788795a320ff/notary-signer/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/docker/notary-official-images/issues](https://github.com/docker/notary-official-images/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/notary/), [`arm32v6`](https://hub.docker.com/r/arm32v6/notary/), [`arm64v8`](https://hub.docker.com/r/arm64v8/notary/), [`i386`](https://hub.docker.com/r/i386/notary/), [`ppc64le`](https://hub.docker.com/r/ppc64le/notary/), [`s390x`](https://hub.docker.com/r/s390x/notary/)
- **Published image artifact details**:
[repo-info repo's `repos/notary/` directory](https://github.com/docker-library/repo-info/blob/master/repos/notary) ([history](https://github.com/docker-library/repo-info/commits/master/repos/notary))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/notary` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fnotary)
[official-images repo's `library/notary` file](https://github.com/docker-library/official-images/blob/master/library/notary) ([history](https://github.com/docker-library/official-images/commits/master/library/notary))
- **Source of this description**:
[docs repo's `notary/` directory](https://github.com/docker-library/docs/tree/master/notary) ([history](https://github.com/docker-library/docs/commits/master/notary))
# How to use this repository
The Notary respository contains two distinct applications, Notary Server, and Notary Signer. The images for these applications are tagged "server-\*" and "signer-\*" respectively. While the server can be configured to run entirely in memory, this configuration is not be appropriate for a production deployment so you should expect to run both a server *and* and signer.
Ensure that the images you are running have similar version tags. That is, if you are running the server-0.2.0 tag, you should also be running the similar signer-0.2.0 tag. Running different versions of the server and signer will never be a supported configuration.
# Notary Server
The Notary server manages JSON formatted TUF (The Update Framework) metadata for Notary clients and the docker command line tool's Docker Content Trust features. It requires a companion Notary signer instance and a MySQL (or MariaDB) database.
## How to use this image
The following sample configuration is included in the image:
{
"server": {
"http_addr": ":4443",
"tls_key_file": "/certs/notary-server.key",
"tls_cert_file": "/certs/notary-server.crt"
},
"trust_service": {
"type": "remote",
"hostname": "notarysigner",
"port": "7899",
"tls_ca_file": "/certs/root-ca.crt",
"key_algorithm": "ecdsa",
"tls_client_cert": "/certs/notary-server.crt",
"tls_client_key": "/certs/notary-server.key"
},
"logging": {
"level": "info"
},
"storage": {
"backend": "mysql",
"db_url": "server@tcp(mysql:3306)/notaryserver?parseTime=True"
}
}
The components you *must* provide are the certificates and keys, and the links for the `notarysigner` and `mysql` hostnames. The `root-ca.crt` file enables the Notary server to identify valid signers, which it communicates with over mutual TLS using a GRPC interface. The `notary-server.crt` and`notary-server.key` are used to identify this service to both external clients, and signer instances. All the certificate and key files must be readable by the notary user which is created inside the container and owns the notary-server process.
If you require a different configuration, you should wrap this image with your own Dockerfile.
For more details on how to configure your Notary server, please read the [docs](https://github.com/theupdateframework/notary/blob/master/docs/reference/server-config.md).
# Notary Signer
The Notary signer is a support service for the Notary server. It manages private keys and performs all signing operations. It requires a MySQL (or MariaDB) database.
## How to use this image
The following sample configuration is included in the image:
{
"server": {
"http_addr": ":4444",
"grpc_addr": ":7899",
"tls_cert_file": "/certs/notary-signer.crt",
"tls_key_file": "/certs/notary-signer.key",
"client_ca_file": "/certs/notary-server.crt"
},
"logging": {
"level": "info"
},
"storage": {
"backend": "mysql",
"db_url": "signer@tcp(mysql:3306)/notarysigner?parseTime=True"
}
}
The components you *must* provide are the certificates and keys, and the link for the `mysql` hostname. The `notary-server.crt` file enables the Notary signer to identify valid servers, which it communicates with over mutual TLS using a GRPC interface. The `notary-server.crt` and`notary-server.key` are used to identify this service to both external clients, and signer instances. All the certificate and key files must be readable by the notary user which is created inside the container and owns the notary-signer process.
If you require a different configuration, you should wrap this image with your own Dockerfile.
For more details on how to configure your Notary signer, please read the [docs](https://github.com/theupdateframework/notary/blob/master/docs/reference/signer-config.md).
## Database Migrations
Notary server and signer both use the [migrate tool](https://github.com/golang-migrate/migrate) to manage database updates. The migration files can be found [here](https://github.com/theupdateframework/notary/tree/master/migrations/) and are an ordered list of plain SQL files. The migrate tool manages schema versions to ensure that migrations start and end at the correct point.
We strongly recommend you create separate databases and users with restricted permissions such that the server cannot access the signer's database and vice versa.
# License
View [license information](https://github.com/theupdateframework/notary/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `notary/` directory](https://github.com/docker-library/repo-info/tree/master/repos/notary).
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.
```
--------------------------------------------------------------------------------
/bash/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "bash/README.md"
IT IS AUTO-GENERATED
(from the other files in "bash/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[Tianon (of the Docker Community)](https://github.com/tianon/docker-bash), [with Chet's support (from Bash upstream)](https://github.com/docker-library/official-images/pull/2217#issue-181031192)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`devel-20250504`, `devel`, `devel-20250504-alpine3.21`, `devel-alpine3.21`](https://github.com/tianon/docker-bash/blob/255a35c25008695e4399b376ee36b1f6a02c0506/devel/Dockerfile)
- [`5.3-rc1`, `5.3-rc`, `rc`, `5.3-rc1-alpine3.21`, `5.3-rc-alpine3.21`, `rc-alpine3.21`](https://github.com/tianon/docker-bash/blob/82c9b997d8f8a2ea8f3e451389c0612ca9a31442/5.3-rc/Dockerfile)
- [`5.2.37`, `5.2`, `5`, `latest`, `5.2.37-alpine3.21`, `5.2-alpine3.21`, `5-alpine3.21`, `alpine3.21`](https://github.com/tianon/docker-bash/blob/712b1f0c63d45c37d1072e6e9e635da1edfb0734/5.2/Dockerfile)
- [`5.1.16`, `5.1`, `5.1.16-alpine3.21`, `5.1-alpine3.21`](https://github.com/tianon/docker-bash/blob/712b1f0c63d45c37d1072e6e9e635da1edfb0734/5.1/Dockerfile)
- [`5.0.18`, `5.0`, `5.0.18-alpine3.21`, `5.0-alpine3.21`](https://github.com/tianon/docker-bash/blob/4811b83a9b81e2af6587fbe01c7932a078cb1acc/5.0/Dockerfile)
- [`4.4.23`, `4.4`, `4`, `4.4.23-alpine3.21`, `4.4-alpine3.21`, `4-alpine3.21`](https://github.com/tianon/docker-bash/blob/9d45ba25a4e765a55bac62098e4f0360dc3c79b3/4.4/Dockerfile)
- [`4.3.48`, `4.3`, `4.3.48-alpine3.21`, `4.3-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/4.3/Dockerfile)
- [`4.2.53`, `4.2`, `4.2.53-alpine3.21`, `4.2-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/4.2/Dockerfile)
- [`4.1.17`, `4.1`, `4.1.17-alpine3.21`, `4.1-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/4.1/Dockerfile)
- [`4.0.44`, `4.0`, `4.0.44-alpine3.21`, `4.0-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/4.0/Dockerfile)
- [`3.2.57`, `3.2`, `3`, `3.2.57-alpine3.21`, `3.2-alpine3.21`, `3-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/3.2/Dockerfile)
- [`3.1.23`, `3.1`, `3.1.23-alpine3.21`, `3.1-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/3.1/Dockerfile)
- [`3.0.22`, `3.0`, `3.0.22-alpine3.21`, `3.0-alpine3.21`](https://github.com/tianon/docker-bash/blob/ddea3cd1ca0fc97dc8ba41ddac489eec71ee8081/3.0/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/tianon/docker-bash/issues](https://github.com/tianon/docker-bash/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/bash/), [`arm32v6`](https://hub.docker.com/r/arm32v6/bash/), [`arm32v7`](https://hub.docker.com/r/arm32v7/bash/), [`arm64v8`](https://hub.docker.com/r/arm64v8/bash/), [`i386`](https://hub.docker.com/r/i386/bash/), [`ppc64le`](https://hub.docker.com/r/ppc64le/bash/), [`riscv64`](https://hub.docker.com/r/riscv64/bash/), [`s390x`](https://hub.docker.com/r/s390x/bash/)
- **Published image artifact details**:
[repo-info repo's `repos/bash/` directory](https://github.com/docker-library/repo-info/blob/master/repos/bash) ([history](https://github.com/docker-library/repo-info/commits/master/repos/bash))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/bash` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbash)
[official-images repo's `library/bash` file](https://github.com/docker-library/official-images/blob/master/library/bash) ([history](https://github.com/docker-library/official-images/commits/master/library/bash))
- **Source of this description**:
[docs repo's `bash/` directory](https://github.com/docker-library/docs/tree/master/bash) ([history](https://github.com/docker-library/docs/commits/master/bash))
# What is Bash?
Bash is the [GNU](http://www.gnu.org/) Project's Bourne Again SHell, a complete implementation of the [IEEE POSIX and Open Group shell specification](http://www.opengroup.org/onlinepubs/9699919799/nfindex.html) with interactive command line editing, job control on architectures that support it, csh-like features such as history substitution and brace expansion, and a slew of other features.
> [tiswww.case.edu/php/chet/bash/bashtop.html](https://tiswww.case.edu/php/chet/bash/bashtop.html)

# How to use this image
The primary use cases this image is targeting are testing new features of more recent Bash versions before your primary distribution updates packages and testing shell scripts against different Bash versions to ensure compatibility. There are likely other interesting use cases as well, but those are the primary two the image was initially created to solve!
## Notes
There are a few main things that are important to note regarding this image:
1. Bash itself is installed at `/usr/local/bin/bash`, not `/bin/bash`, so the recommended shebang is `#!/usr/bin/env bash`, not `#!/bin/bash` (or explicitly running your script via `bash /.../script.sh` instead of letting the shebang invoke Bash automatically). The image does not include `/bin/bash`, but if it is installed via the package manager included in the image, that package will install to `/bin/bash` and might cause confusion (although `/usr/local/bin` is ahead of `/bin` in `$PATH`, so as long as plain `bash` or `/usr/bin/env` are used consistently, the image-provided Bash will be preferred).
2. Bash is the only thing included, so if your scripts rely on external tools (such as `jq`, for example), those will need to be added manually (via `apk add --no-cache jq`, for example).
## Interactive shell
```console
$ docker run -it --rm bash:4.4
bash-4.4# which bash
/usr/local/bin/bash
bash-4.4# echo $BASH_VERSION
4.4.0(1)-release
```
## Testing scripts via bind-mount
```console
$ docker run -it --rm -v /path/to/script.sh:/script.sh:ro bash:4.4 bash /script.sh
...
$ docker run -it --rm -v /path/to/script.sh:/script.sh:ro bash:3.2 bash /script.sh
...
```
## Testing scripts via `Dockerfile`
```dockerfile
FROM bash:4.4
COPY script.sh /
CMD ["bash", "/script.sh"]
```
Then, build and run the Docker image:
```console
$ docker build -t my-bash-app .
...
$ docker run -it --rm --name my-running-app my-bash-app
...
```
# License
Bash is free software, distributed under the terms of the [GNU General Public License, version 3](http://www.gnu.org/licenses/gpl.html).
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `bash/` directory](https://github.com/docker-library/repo-info/tree/master/repos/bash).
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.
```
--------------------------------------------------------------------------------
/chronograf/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "chronograf/README.md"
IT IS AUTO-GENERATED
(from the other files in "chronograf/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[InfluxData](https://github.com/influxdata/influxdata-docker)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`1.7`, `1.7.17`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.7/Dockerfile)
- [`1.7-alpine`, `1.7.17-alpine`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.7/alpine/Dockerfile)
- [`1.8`, `1.8.10`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.8/Dockerfile)
- [`1.8-alpine`, `1.8.10-alpine`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.8/alpine/Dockerfile)
- [`1.9`, `1.9.4`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.9/Dockerfile)
- [`1.9-alpine`, `1.9.4-alpine`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.9/alpine/Dockerfile)
- [`1.10`, `1.10.7`, `latest`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.10/Dockerfile)
- [`1.10-alpine`, `1.10.7-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/9b7081d7e554666a4f6bb8f93f5dac5e0b3b6722/chronograf/1.10/alpine/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/chronograf/), [`arm32v7`](https://hub.docker.com/r/arm32v7/chronograf/), [`arm64v8`](https://hub.docker.com/r/arm64v8/chronograf/)
- **Published image artifact details**:
[repo-info repo's `repos/chronograf/` directory](https://github.com/docker-library/repo-info/blob/master/repos/chronograf) ([history](https://github.com/docker-library/repo-info/commits/master/repos/chronograf))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/chronograf` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fchronograf)
[official-images repo's `library/chronograf` file](https://github.com/docker-library/official-images/blob/master/library/chronograf) ([history](https://github.com/docker-library/official-images/commits/master/library/chronograf))
- **Source of this description**:
[docs repo's `chronograf/` directory](https://github.com/docker-library/docs/tree/master/chronograf) ([history](https://github.com/docker-library/docs/commits/master/chronograf))
# Chronograf
Chronograf is InfluxData's open source web application. Use Chronograf with the other components of the [TICK](https://www.influxdata.com/products/) stack for infrastructure monitoring, alert management, data visualization, and database management.

## Using this image
### Running the container
Chronograf runs on port 8888. It can be run and accessed by exposing that port:
```console
$ docker run -p 8888:8888 chronograf
```
### Mounting a volume
The Chronograf image exposes a shared volume under `/var/lib/chronograf`, so you can mount a host directory to that point to access persisted container data. A typical invocation of the container might be:
```console
$ docker run -p 8888:8888 \
-v $PWD:/var/lib/chronograf \
chronograf
```
Modify `$PWD` to the directory where you want to store data associated with the InfluxDB container.
You can also have Docker control the volume mountpoint by using a named volume.
```console
$ docker run -p 8888:8888 \
-v chronograf:/var/lib/chronograf \
chronograf
```
### Using the container with InfluxDB
The instructions here are very similar to the instructions when using `telegraf` with `influxdb`. These examples assume you are using Docker's built-in service discovery capability. In order to do so, we'll first create a new network:
```console
$ docker network create influxdb
```
Next, we'll start our InfluxDB container named `influxdb`:
```console
$ docker run -d --name=influxdb \
--net=influxdb \
influxdb
```
We can now start a Chronograf container that references this database.
```console
$ docker run -p 8888:8888 \
--net=influxdb \
chronograf --influxdb-url=http://influxdb:8086
```
Try combining this with Telegraf to get dashboards for your infrastructure within minutes!
#### Running as root
Starting in v1.10.5, Chronograf no longer run as the root user by default. If a user wants to revert this change they can set `CHRONOGRAF_AS_ROOT=true` as an environment variable.
## Official Documentation
See the [official docs](https://docs.influxdata.com/chronograf/latest/) for information on creating visualizations.
# Image Variants
The `chronograf` images come in many flavors, each designed for a specific use case.
## `chronograf:<version>`
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.
## `chronograf:<version>-alpine`
This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
# License
View [license information](https://github.com/influxdata/chronograf/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `chronograf/` directory](https://github.com/docker-library/repo-info/tree/master/repos/chronograf).
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.
```
--------------------------------------------------------------------------------
/matomo/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "matomo/README.md"
IT IS AUTO-GENERATED
(from the other files in "matomo/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[Matomo](https://github.com/matomo-org/docker) (a Matomo community contributor)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`5.3.2-apache`, `5.3-apache`, `5-apache`, `apache`, `5.3.2`, `5.3`, `5`, `latest`](https://github.com/matomo-org/docker/blob/82fa89f13413cae2cc185416dce5ce4a6baeb618/apache/Dockerfile)
- [`5.3.2-fpm`, `5.3-fpm`, `5-fpm`, `fpm`](https://github.com/matomo-org/docker/blob/82fa89f13413cae2cc185416dce5ce4a6baeb618/fpm/Dockerfile)
- [`5.3.2-fpm-alpine`, `5.3-fpm-alpine`, `5-fpm-alpine`, `fpm-alpine`](https://github.com/matomo-org/docker/blob/82fa89f13413cae2cc185416dce5ce4a6baeb618/fpm-alpine/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/matomo/), [`arm32v5`](https://hub.docker.com/r/arm32v5/matomo/), [`arm32v6`](https://hub.docker.com/r/arm32v6/matomo/), [`arm32v7`](https://hub.docker.com/r/arm32v7/matomo/), [`arm64v8`](https://hub.docker.com/r/arm64v8/matomo/), [`i386`](https://hub.docker.com/r/i386/matomo/), [`mips64le`](https://hub.docker.com/r/mips64le/matomo/), [`ppc64le`](https://hub.docker.com/r/ppc64le/matomo/), [`riscv64`](https://hub.docker.com/r/riscv64/matomo/), [`s390x`](https://hub.docker.com/r/s390x/matomo/)
- **Published image artifact details**:
[repo-info repo's `repos/matomo/` directory](https://github.com/docker-library/repo-info/blob/master/repos/matomo) ([history](https://github.com/docker-library/repo-info/commits/master/repos/matomo))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/matomo` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fmatomo)
[official-images repo's `library/matomo` file](https://github.com/docker-library/official-images/blob/master/library/matomo) ([history](https://github.com/docker-library/official-images/commits/master/library/matomo))
- **Source of this description**:
[docs repo's `matomo/` directory](https://github.com/docker-library/docs/tree/master/matomo) ([history](https://github.com/docker-library/docs/commits/master/matomo))
# Matomo (formerly Piwik)
[Matomo](https://matomo.org/) (formerly Piwik) is the leading open-source analytics platform that gives you more than just powerful analytics:
- Free open-source software
- 100% data ownership
- User privacy protection
- User-centric insights
- Customisable and extensible

# How to use this image
You can run the Matomo container and service like so:
```bash
docker run -d --link some-mysql:db matomo
```
This assumes you've already launched a suitable MySQL or MariaDB database container.
## Persistent data
Use a Docker volume to keep persistent data:
```bash
docker run -d -p 8080:80 --link some-mysql:db -v matomo:/var/www/html matomo
```
## Matomo Installation
Once you're up and running, you'll arrive at the configuration wizard page. If you're using the compose file, at the `Database Setup` step, please enter the following:
- Database Server: `db`
- Login: MYSQL_USER
- Password: MYSQL_PASSWORD
- Database Name: MYSQL_DATABASE
And leave the rest as default.
Then you can continue the installation with the super user.
The following environment variables are also honored for configuring your Matomo instance:
- `MATOMO_DATABASE_HOST`
- `MATOMO_DATABASE_ADAPTER`
- `MATOMO_DATABASE_TABLES_PREFIX`
- `MATOMO_DATABASE_USERNAME`
- `MATOMO_DATABASE_PASSWORD`
- `MATOMO_DATABASE_DBNAME`
The PHP memory limit can be configured with the following environment variable:
- `PHP_MEMORY_LIMIT`
## Docker Compose examples and log import instructions
A minimal set-up using Docker Compose is available in the [.examples folder](https://github.com/matomo-org/docker/tree/master/.examples).
If you want to use the import logs script, you can then run the following container as needed, in order to execute the python import logs script:
```bash
docker run --rm --volumes-from="matomo-app-1" --link matomo-app-1 python:3-alpine python /var/www/html/misc/log-analytics/import_logs.py --url=http://ip.of.your.matomo.example --login=yourlogin --password=yourpassword --idsite=1 --recorders=4 /var/www/html/logs/access.log
```
## Contribute
Pull requests are very welcome!
We'd love to hear your feedback and suggestions in the issue tracker: [[https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues?q=)]([https://github.com/matomo-org/docker/issues](https://github.com/matomo-org/docker/issues?q=)).
## GeoIP
~~This product includes GeoLite data created by MaxMind, available from [https://www.maxmind.com](https://www.maxmind.com).~~ https://blog.maxmind.com/2019/12/18/significant-changes-to-accessing-and-using-geolite2-databases/
# Image Variants
The `matomo` images come in many flavors, each designed for a specific use case.
## `matomo:<version>`
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.
## `matomo:<version>-alpine`
This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
# License
View [license information](https://github.com/matomo-org/matomo/blob/master/LEGALNOTICE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `matomo/` directory](https://github.com/docker-library/repo-info/tree/master/repos/matomo).
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.
```
--------------------------------------------------------------------------------
/composer/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "composer/README.md"
IT IS AUTO-GENERATED
(from the other files in "composer/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[Rob Bast](https://github.com/alcohol), with [contributions](https://github.com/composer/docker/graphs/contributors) from the community.
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`2.2.25`, `2.2`, `lts`](https://github.com/composer/docker/blob/722eb1639245daf4cf6980d2de8737e204f56384/lts/Dockerfile)
- [`1.10.27`, `1.10`, `1`](https://github.com/composer/docker/blob/722eb1639245daf4cf6980d2de8737e204f56384/legacy/Dockerfile)
- [`2.8.8`, `2.8`, `2`, `latest`](https://github.com/composer/docker/blob/bb857457676cec69169962eadc2265beaa2d98f9/latest/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/composer/docker/issues](https://github.com/composer/docker/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/composer/), [`arm32v6`](https://hub.docker.com/r/arm32v6/composer/), [`arm32v7`](https://hub.docker.com/r/arm32v7/composer/), [`arm64v8`](https://hub.docker.com/r/arm64v8/composer/), [`i386`](https://hub.docker.com/r/i386/composer/), [`ppc64le`](https://hub.docker.com/r/ppc64le/composer/), [`riscv64`](https://hub.docker.com/r/riscv64/composer/), [`s390x`](https://hub.docker.com/r/s390x/composer/)
- **Published image artifact details**:
[repo-info repo's `repos/composer/` directory](https://github.com/docker-library/repo-info/blob/master/repos/composer) ([history](https://github.com/docker-library/repo-info/commits/master/repos/composer))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/composer` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fcomposer)
[official-images repo's `library/composer` file](https://github.com/docker-library/official-images/blob/master/library/composer) ([history](https://github.com/docker-library/official-images/commits/master/library/composer))
- **Source of this description**:
[docs repo's `composer/` directory](https://github.com/docker-library/docs/tree/master/composer) ([history](https://github.com/docker-library/docs/commits/master/composer))
# What is Composer?
Composer is a tool for dependency management in PHP, written in PHP. It allows you to declare the libraries your project depends on and it will manage (install/update) them for you.
You can read more about Composer in our [official documentation](https://getcomposer.org/doc/).

# How to use this image
### Basic usage
```console
$ docker run --rm --interactive --tty \
--volume $PWD:/app \
composer <command>
```
### Persist cache / global configuration
You can bind mount the Composer home directory from your host to the container to enable a persistent cache or share global configuration:
```console
$ docker run --rm --interactive --tty \
--volume $PWD:/app \
--volume ${COMPOSER_HOME:-$HOME/.composer}:/tmp \
composer <command>
```
**Note:** this relies on the fact that the `COMPOSER_HOME` value is set to `/tmp` in the image by default.
Or if your environment follows the XDG specification:
```console
$ docker run --rm --interactive --tty \
--env COMPOSER_HOME \
--env COMPOSER_CACHE_DIR \
--volume ${COMPOSER_HOME:-$HOME/.config/composer}:$COMPOSER_HOME \
--volume ${COMPOSER_CACHE_DIR:-$HOME/.cache/composer}:$COMPOSER_CACHE_DIR \
--volume $PWD:/app \
composer <command>
```
### Filesystem permissions
By default, Composer runs as root inside the container. This can lead to permission issues on your host filesystem. You can work around this by running the container with a different user:
```console
$ docker run --rm --interactive --tty \
--volume $PWD:/app \
--user $(id -u):$(id -g) \
composer <command>
```
See: https://docs.docker.com/engine/reference/run/#user for details.
> Note: Docker for Mac behaves differently and this tip might not apply to Docker for Mac users.
### Private repositories / SSH agent
When you need to access private repositories, you will either need to share your configured credentials, or mount your `ssh-agent` socket inside the running container:
```console
$ eval $(ssh-agent); \
docker run --rm --interactive --tty \
--volume $PWD:/app \
--volume $SSH_AUTH_SOCK:/ssh-auth.sock \
--env SSH_AUTH_SOCK=/ssh-auth.sock \
composer <command>
```
**Note:** On OSX this requires Docker For Mac v2.2.0.0 or later, see [docker/for-mac#410](https://github.com/docker/for-mac/issues/410).
When combining the use of private repositories with running Composer as another user, you can run into non-existent user errors (thrown by ssh). To work around this, bind mount the host passwd and group files (read-only) into the container:
```console
$ eval $(ssh-agent); \
docker run --rm --interactive --tty \
--volume $PWD:/app \
--volume $SSH_AUTH_SOCK:/ssh-auth.sock \
--volume /etc/passwd:/etc/passwd:ro \
--volume /etc/group:/etc/group:ro \
--env SSH_AUTH_SOCK=/ssh-auth.sock \
--user $(id -u):$(id -g) \
composer <command>
```
# Troubleshooting
### PHP version & extensions
Our image is aimed at quickly running Composer without the need for having a PHP runtime installed on your host. You should not rely on the PHP version in our container. We do not provide a Composer image for each supported PHP version because we do not want to encourage using Composer as a base image or a production image.
We try to deliver an image that is as lean as possible, built for running Composer only. Sometimes dependencies or Composer [scripts](https://getcomposer.org/doc/articles/scripts.md) require the availability of certain PHP extensions.
Suggestions:
- (optimal) create your own build image and [install](https://getcomposer.org/doc/faqs/how-to-install-composer-programmatically.md) Composer inside it.
**Note:** Docker 17.05 introduced [multi-stage builds](https://docs.docker.com/develop/develop-images/multistage-build/), simplifying this enormously:
```dockerfile
COPY --from=composer /usr/bin/composer /usr/bin/composer
```
- (alternatively) specify the target [platform](https://getcomposer.org/doc/06-config.md#platform) / extension(s) in your `composer.json`:
```json
{
"config": {
"platform": {
"php": "MAJOR.MINOR.PATCH",
"ext-something": "MAJOR.MINOR.PATCH"
}
}
}
```
- (discouraged) pass the [`--ignore-platform-reqs`](https://getcomposer.org/doc/03-cli.md#install-i) and / or `--no-scripts` flags to `install` or `update`:
```console
$ docker run --rm --interactive --tty \
--volume $PWD:/app \
composer install --ignore-platform-reqs --no-scripts
```
# License
View [license information](https://github.com/composer/composer/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `composer/` directory](https://github.com/docker-library/repo-info/tree/master/repos/composer).
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.
```
--------------------------------------------------------------------------------
/jruby/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "jruby/README.md"
IT IS AUTO-GENERATED
(from the other files in "jruby/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[the Docker Community](https://github.com/jruby/docker-jruby)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`latest`, `10`, `10.0`, `10.0.0`, `10.0-jre`, `10.0-jre21`, `10.0.0-jre`, `10.0.0-jre21`, `10.0.0.1`, `10.0.0.1-jre`, `10.0.0.1-jre21`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/10.0/jre21/Dockerfile)
- [`10-jdk`, `10-jdk21`, `10.0-jdk`, `10.0-jdk21`, `10.0.0-jdk`, `10.0.0-jdk21`, `10.0.0.1-jdk`, `10.0.0.1-jdk21`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/10.0/jdk21/Dockerfile)
- [`10.0-jre24`, `10.0.0-jre24`, `10.0.0.1-jre24`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/10.0/jre24/Dockerfile)
- [`10.0-jdk24`, `10.0.0-jdk24`, `10.0.0.1-jdk24`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/10.0/jdk24/Dockerfile)
- [`9`, `9.4`, `9.4.12`, `9.4-jre`, `9.4-jre8`, `9.4.12-jre`, `9.4.12-jre8`, `9.4.12.1`, `9.4.12.1-jre`, `9.4.12.1-jre8`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jre8/Dockerfile)
- [`9-jdk`, `9-jdk8`, `9.4-jdk`, `9.4-jdk8`, `9.4.12-jdk`, `9.4.12-jdk8`, `9.4.12.1-jdk`, `9.4.12.1-jdk8`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jdk8/Dockerfile)
- [`9.4-jre11`, `9.4.12-jre11`, `9.4.12.1-jre11`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jre11/Dockerfile)
- [`9.4-jdk11`, `9.4.12-jdk11`, `9.4.12.1-jdk11`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jdk11/Dockerfile)
- [`9.4-jdk17`, `9.4.12-jdk17`, `9.4.12.1-jdk17`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jdk17/Dockerfile)
- [`9.4-jre17`, `9.4.12-jre17`, `9.4.12.1-jre17`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jre17/Dockerfile)
- [`9.4-jdk21`, `9.4.12-jdk21`, `9.4.12.1-jdk21`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jdk21/Dockerfile)
- [`9.4-jre21`, `9.4.12-jre21`, `9.4.12.1-jre21`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.4/jre21/Dockerfile)
- [`9.3`, `9.3.15`, `9.3-jre`, `9.3-jre8`, `9.3.15-jre`, `9.3.15-jre8`, `9.3.15.0`, `9.3.15.0-jre`, `9.3.15.0-jre8`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jre8/Dockerfile)
- [`9.3-jdk`, `9.3-jdk8`, `9.3.15-jdk`, `9.3.15-jdk8`, `9.3.15.0-jdk`, `9.3.15.0-jdk8`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jdk8/Dockerfile)
- [`9.3-jre11`, `9.3.15-jre11`, `9.3.15.0-jre11`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jre11/Dockerfile)
- [`9.3-jdk11`, `9.3.15-jdk11`, `9.3.15.0-jdk11`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jdk11/Dockerfile)
- [`9.3-jdk17`, `9.3.15-jdk17`, `9.3.15.0-jdk17`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jdk17/Dockerfile)
- [`9.3-jre17`, `9.3.15-jre17`, `9.3.15.0-jre17`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jre17/Dockerfile)
- [`9.3-jdk21`, `9.3.15-jdk21`, `9.3.15.0-jdk21`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jdk21/Dockerfile)
- [`9.3-jre21`, `9.3.15-jre21`, `9.3.15.0-jre21`](https://github.com/jruby/docker-jruby/blob/fc0883dada1cb29607c6a8aa7edce14aac7642e0/9.3/jre21/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/jruby/docker-jruby/issues](https://github.com/jruby/docker-jruby/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/jruby/), [`arm64v8`](https://hub.docker.com/r/arm64v8/jruby/)
- **Published image artifact details**:
[repo-info repo's `repos/jruby/` directory](https://github.com/docker-library/repo-info/blob/master/repos/jruby) ([history](https://github.com/docker-library/repo-info/commits/master/repos/jruby))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/jruby` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fjruby)
[official-images repo's `library/jruby` file](https://github.com/docker-library/official-images/blob/master/library/jruby) ([history](https://github.com/docker-library/official-images/commits/master/library/jruby))
- **Source of this description**:
[docs repo's `jruby/` directory](https://github.com/docker-library/docs/tree/master/jruby) ([history](https://github.com/docker-library/docs/commits/master/jruby))
# What is JRuby?
JRuby (http://www.jruby.org) is an implementation of Ruby (http://www.ruby-lang.org) on the JVM.
Ruby is a dynamic, reflective, object-oriented, general-purpose, open-source programming language. According to its authors, Ruby was influenced by Perl, Smalltalk, Eiffel, Ada, and Lisp. It supports multiple programming paradigms, including functional, object-oriented, and imperative. It also has a dynamic type system and automatic memory management.
> [wikipedia.org/wiki/Ruby_(programming_language)](https://en.wikipedia.org/wiki/Ruby_%28programming_language%29)
JRuby leverages the robustness and speed of the JVM while providing the same Ruby that you already know and love. With JRuby you are able to take advantage of real native threads, enhanced garbage collection, and even import and use java libraries.

# How to use this image
## Create a `Dockerfile` in your Ruby app project
```dockerfile
FROM jruby:9
# throw errors if Gemfile has been modified since Gemfile.lock
RUN bundle config --global frozen 1
WORKDIR /usr/src/app
COPY Gemfile Gemfile.lock ./
RUN bundle install
COPY . .
CMD ["./your-daemon-or-script.rb"]
```
Put this file in the root of your app, next to the `Gemfile`.
You can then build and run the Ruby image:
```console
$ docker build -t my-ruby-app .
$ docker run -it --name my-running-script my-ruby-app
```
### Generate a `Gemfile.lock`
The above example `Dockerfile` expects a `Gemfile.lock` in your app directory. This `docker run` will help you generate one. Run it in the root of your app, next to the `Gemfile`:
```console
$ docker run --rm -v "$PWD":/usr/src/app -w /usr/src/app jruby:9 bundle install --system
```
## Run a single Ruby script
For many simple, single file projects, you may find it inconvenient to write a complete `Dockerfile`. In such cases, you can run a Ruby script by using the Ruby Docker image directly:
```console
$ docker run -it --rm --name my-running-script -v "$PWD":/usr/src/myapp -w /usr/src/myapp jruby:9 jruby your-daemon-or-script.rb
```
# License
View [license information](https://github.com/jruby/jruby/blob/master/COPYING) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `jruby/` directory](https://github.com/docker-library/repo-info/tree/master/repos/jruby).
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.
```
--------------------------------------------------------------------------------
/api-firewall/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "api-firewall/README.md"
IT IS AUTO-GENERATED
(from the other files in "api-firewall/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
The Wallarm Team
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`0.9.1`, `latest`](https://github.com/wallarm/api-firewall-docker/blob/c2776cc6a5adedddcdeb49e8613f64704ccb4c27/0.9.1/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/wallarm/api-firewall/issues](https://github.com/wallarm/api-firewall/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/api-firewall/), [`arm64v8`](https://hub.docker.com/r/arm64v8/api-firewall/), [`i386`](https://hub.docker.com/r/i386/api-firewall/)
- **Published image artifact details**:
[repo-info repo's `repos/api-firewall/` directory](https://github.com/docker-library/repo-info/blob/master/repos/api-firewall) ([history](https://github.com/docker-library/repo-info/commits/master/repos/api-firewall))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/api-firewall` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fapi-firewall)
[official-images repo's `library/api-firewall` file](https://github.com/docker-library/official-images/blob/master/library/api-firewall) ([history](https://github.com/docker-library/official-images/commits/master/library/api-firewall))
- **Source of this description**:
[docs repo's `api-firewall/` directory](https://github.com/docker-library/docs/tree/master/api-firewall) ([history](https://github.com/docker-library/docs/commits/master/api-firewall))

# What is API Firewall?
Wallarm API Firewall is an open-source light-weighted proxy designed to protect REST API endpoints in cloud-native environments by hardening based on a strict OpenAPI/Swagger schema validation. Wallarm API Firewall relies on a positive security model allowing calls that match a predefined API specification for requests and responses, while rejecting everything else.
The **key features** of API Firewall are:
- Protect REST API endpoints by blocking requests and responses that do not match the OAS/Swagger schema
- Discover Shadow API endpoints
- If using OAuth 2.0 protocol-based authentication, validate access tokens
- Quick and easy deployment and configuration
- Customization of request and response processing modes, response codes and log format
# Use cases
- Block abnormal requests and responses that do not match the OpenAPI 3.0 specification (if running API Firewall in the blocking mode)
- Discover Shadow APIs and undocumented endpoints (if running API Firewall in the logging mode)
- Log abnormal requests and responses that do not match the OpenAPI 3.0 specification (if running API Firewall in the logging mode)
# API schema validation and positive security model
When starting API Firewall, you should provide the [OpenAPI 3.0 specification](https://swagger.io/specification/) of the application to be protected with API Firewall. The started API Firewall will operate as a reverse proxy and validate whether requests and responses match the schema defined in the specification.
The traffic that does not match the schema will be logged using the [`STDOUT` and `STDERR` Docker services](https://docs.docker.com/config/containers/logging/) or blocked (depending on the configured API Firewall operation mode). If operating in the logging mode and detecting the traffic on endpoints that are not included in the specification, API Firewall also logs these endpoints as the shadow ones (except for endpoints returning the code `404`).

Provided API schema should be described using the [OpenAPI 3.0 specification](https://swagger.io/specification/) in the YAML or JSON file (`.yaml`, `.yml`, `.json` file extensions).
By allowing you to set the traffic requirements with the OpenAPI 3.0 specification, Wallarm API Firewall relies on a positive security model.
# Technical characteristics
API Firewall works as a reverse proxy with a built-in OpenAPI 3.0 request and response validator. The validator is written in Go and optimized for extreme performance and near-zero added latency.
# Starting API Firewall
To download, install, and start Wallarm API Firewall on Docker, see the [instructions](https://docs.wallarm.com/api-firewall/installation-guides/docker-container/).
# Demos
You can try API Firewall by running the demo environment that deploys an example application protected with Wallarm API Firewall. There are two available demo environments:
- [Wallarm API Firewall demo with Docker Compose](https://github.com/wallarm/api-firewall/tree/main/demo/docker-compose)
- [Wallarm API Firewall demo with Kubernetes](https://github.com/wallarm/api-firewall/tree/main/demo/kubernetes)
# Wallarm's blog articles related to API Firewall
- [Discovering Shadow APIs with API Firewall](https://lab.wallarm.com/discovering-shadow-apis-with-a-api-firewall/)
- [Wallarm API Firewall outperforms NGINX in a production environment](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/)
# Performance
When creating API Firewall, we prioritized speed and efficiency to ensure that our customers would have the fastest APIs possible. Our latest tests demonstrate that the average time required for API Firewall to process one request is 1.339 ms:
```console
$ ab -c 200 -n 10000 -p ./large.json -T application/json http://127.0.0.1:8282/test/signup
Document Path: /test/signup
Document Length: 20 bytes
Concurrency Level: 200
Time taken for tests: 0.769 seconds
Complete requests: 10000
Failed requests: 0
Total transferred: 2150000 bytes
Total body sent: 283770000
HTML transferred: 200000 bytes
Requests per second: 13005.81 [#/sec] (mean)
Time per request: 15.378 [ms] (mean)
Time per request: 0.077 [ms] (mean, across all concurrent requests)
Transfer rate: 2730.71 [Kbytes/sec] received
360415.95 kb/s sent
363146.67 kb/s total
Connection Times (ms)
min mean[+/-sd] median max
Connect: 0 5 1.6 5 12
Processing: 2 10 5.4 9 59
Waiting: 2 8 5.2 7 56
Total: 3 15 5.7 14 68
Percentage of the requests served within a certain time (ms)
50% 14
66% 15
75% 16
80% 17
90% 18
95% 23
98% 36
99% 44
100% 68 (longest request)
```
These performance results are not the only ones we have got during API Firewall testing. Other results along with the methods used to improve API Firewall performance are described in this [Wallarm's blog article](https://lab.wallarm.com/wallarm-api-firewall-outperforms-nginx-in-a-production-environment/).
# License
View [license information](https://www.mozilla.org/en-US/MPL/2.0/) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `api-firewall/` directory](https://github.com/docker-library/repo-info/tree/master/repos/api-firewall).
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
```
--------------------------------------------------------------------------------
/krakend/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "krakend/README.md"
IT IS AUTO-GENERATED
(from the other files in "krakend/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[the KrakenD Maintainers](https://github.com/krakend/krakend-ce)
- **Where to get help**:
[documentation](https://www.krakend.io/docs/overview/introduction/), [community support](https://groups.google.com/a/krakend.io/g/community), [open an issue](https://github.com/krakend/krakend-ce/issues), [other support channels](https://www.krakend.io/support/)
# Supported tags and respective `Dockerfile` links
- [`2.10.0`, `2.10`, `2`, `latest`](https://github.com/krakendio/docker-library/blob/e251c6c6db51dcd34e11cc507830cfc200d652c1/2.10.0/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/krakend/krakend-ce/issues](https://github.com/krakend/krakend-ce/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/krakend/), [`arm64v8`](https://hub.docker.com/r/arm64v8/krakend/)
- **Published image artifact details**:
[repo-info repo's `repos/krakend/` directory](https://github.com/docker-library/repo-info/blob/master/repos/krakend) ([history](https://github.com/docker-library/repo-info/commits/master/repos/krakend))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/krakend` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fkrakend)
[official-images repo's `library/krakend` file](https://github.com/docker-library/official-images/blob/master/library/krakend) ([history](https://github.com/docker-library/official-images/commits/master/library/krakend))
- **Source of this description**:
[docs repo's `krakend/` directory](https://github.com/docker-library/docs/tree/master/krakend) ([history](https://github.com/docker-library/docs/commits/master/krakend))

# What is KrakenD?
[KrakenD](https://www.krakend.io/) is a stateless, high-performance, enterprise-ready, open-source API gateway written in Go. Its engine (formerly known as *KrakenD Framework*) is now a **Linux Foundation Project** codenamed [Lura Project](https://luraproject.org/). Lura is the only enterprise-grade API Gateway hosted in a neutral, open forum.
KrakenD is lightweight and straightforward, as it only requires writing the configuration file. No Go knowledge is required. It offers connectivity to internal and external services, data transformation and filtering, and aggregation of multiple data sources (APIs, gRPC, queues and pub/sub, lambda, etc.) simultaneously or in cascade. It protects access to your API, throughputs its usage, and integrates with many third-parties.
All features are designed to offer extraordinary performance and infinite scalability.
## How to use this image
KrakenD only needs a single configuration file to create an API Gateway, although you can have a complex setup reflecting your organization structure. The configuration file(s) can live anywhere in the container, but the default location (the workdir) is `/etc/krakend`.
To use the image, `COPY` your `krakend.json` file inside the container or mount it using a volume. The configuration is checked only once during the startup and never used again. Don't have a config file yet? Generate it with the [KrakenD Designer UI](https://designer.krakend.io).
⚠️ **NOTICE**: KrakenD does not use live reload when your configuration changes. Restart the container.
### Quick start
You can start an empty gateway with a health check with the following commands:
```bash
docker run -d -p 8080:8080 -v "$PWD:/etc/krakend/" krakend
curl http://localhost:8080/__health
{"agents":{},"now":"2024-05-23 14:35:55.552591448 +0000 UTC m=+26.856583003","status":"ok"}
```
### More Examples
The following are several examples of running KrakenD. By default, the command `run` is executed, but you can pass other commands and flags at the end of the run command.
The configuration files are taken from the current directory (`$PWD`). Therefore, all examples expect to find at least the file `krakend.json`.
#### Run with the debug enabled (flag `-d`):
This flag is **SAFE to use in production**. It's meant to enable KrakenD as a fake backend itself by enabling a [`/__debug` endpoint](https://www.krakend.io/docs/endpoints/debug-endpoint/)
```bash
docker run -p 8080:8080 -v "${PWD}:/etc/krakend/" krakend run -d -c /etc/krakend/krakend.json
```
#### Checking the syntax of your configuration file
See the [check command](https://www.krakend.io/docs/commands/check/)
```bash
docker run -it -v $PWD:/etc/krakend/ krakend check --config krakend.json
```
#### Show the help:
```bash
docker run --rm -it krakend help
```
### Building your custom KrakenD image
Most production deployments will not want to rely on mounting a volume for the container but to use their image based on `krakend`:
Your `Dockerfile` could look like this:
```Dockerfile
FROM krakend:<version>
# NOTE: Avoid using :latest image on production. Stick to a major version instead.
COPY krakend.json ./
# Check and test that the file is valid
RUN krakend check -t --lint-no-network -c krakend.json
```
If you want to manage your KrakenD configuration using multiple files and folders, reusing templates, and distributing the configuration amongst your teams, you can use the [flexible configuration (FC)](https://www.krakend.io/docs/configuration/flexible-config/). The following `Dockerfile` combines FC, the `krakend check` command, and a 2-step build.
```Dockerfile
FROM krakend:<version> as builder
COPY krakend.tmpl .
COPY config .
# Save temporary output file to /tmp to avoid permission errors
RUN FC_ENABLE=1 \
FC_OUT=/tmp/krakend.json \
FC_PARTIALS="/etc/krakend/partials" \
FC_SETTINGS="/etc/krakend/settings" \
FC_TEMPLATES="/etc/krakend/templates" \
krakend check -d -t -c krakend.tmpl
# Copy the output file only and discard any other files
FROM krakend:<version>
COPY --from=builder /tmp/krakend.json .
```
Then build with `docker build -t my_krakend .`
The configuration above assumes you have a folder structure like the following:
.
├── config
│ ├── partials
│ ├── settings
│ │ └── env.json
│ └── templates
│ └── some.tmpl
├── Dockerfile
└── krakend.tmpl
### Docker Compose example
Finally, a simple `docker compose` file to start KrakenD with your API would be:
```yaml
services:
krakend:
image: krakend:<version>
ports:
- "8080:8080"
volumes:
- ./:/etc/krakend
```
And another one that uses the flexible configuration and a custom template filename (`my_krakend.tmpl`) on each start:
```yaml
services:
krakend:
image: krakend:<version>
ports:
- "8080:8080"
volumes:
- ./:/etc/krakend
environment:
- FC_ENABLE=1
- FC_OUT=/tmp/krakend.json
- FC_PARTIALS="/etc/krakend/config/partials"
- FC_SETTINGS="/etc/krakend/config/settings/prod"
- FC_TEMPLATES="/etc/krakend/config/templates"
command:
command: ["krakend", "run", "-c", "krakend.tmpl", "-d"]
```
### Container permissions and commands
All `krakend` commands are executed as `krakend` user (uid=1000), and the rest of the commands (e.g., `sh`) are executed as root.
You can directly use sub-commands of `krakend` like `run`, `help`, `version`, `check`, `check-plugin`, or `test-plugin` as the entrypoint will add the `krakend` command automatically. For example, the following lines are equivalent:
```bash
docker run --rm -it krakend help
docker run --rm -it krakend krakend help
```
# License
View [license information](https://github.com/krakend/krakend-ce/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `krakend/` directory](https://github.com/docker-library/repo-info/tree/master/repos/krakend).
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
```
--------------------------------------------------------------------------------
/httpd/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "httpd/README.md"
IT IS AUTO-GENERATED
(from the other files in "httpd/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[the Docker Community](https://github.com/docker-library/httpd)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`2.4.63`, `2.4`, `2`, `latest`, `2.4.63-bookworm`, `2.4-bookworm`, `2-bookworm`, `bookworm`](https://github.com/docker-library/httpd/blob/329f85a9ad75526de865749a41b273ead99fb69b/2.4/Dockerfile)
- [`2.4.63-alpine`, `2.4-alpine`, `2-alpine`, `alpine`, `2.4.63-alpine3.21`, `2.4-alpine3.21`, `2-alpine3.21`, `alpine3.21`](https://github.com/docker-library/httpd/blob/329f85a9ad75526de865749a41b273ead99fb69b/2.4/alpine/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/docker-library/httpd/issues](https://github.com/docker-library/httpd/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/httpd/), [`arm32v5`](https://hub.docker.com/r/arm32v5/httpd/), [`arm32v6`](https://hub.docker.com/r/arm32v6/httpd/), [`arm32v7`](https://hub.docker.com/r/arm32v7/httpd/), [`arm64v8`](https://hub.docker.com/r/arm64v8/httpd/), [`i386`](https://hub.docker.com/r/i386/httpd/), [`mips64le`](https://hub.docker.com/r/mips64le/httpd/), [`ppc64le`](https://hub.docker.com/r/ppc64le/httpd/), [`riscv64`](https://hub.docker.com/r/riscv64/httpd/), [`s390x`](https://hub.docker.com/r/s390x/httpd/)
- **Published image artifact details**:
[repo-info repo's `repos/httpd/` directory](https://github.com/docker-library/repo-info/blob/master/repos/httpd) ([history](https://github.com/docker-library/repo-info/commits/master/repos/httpd))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/httpd` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fhttpd)
[official-images repo's `library/httpd` file](https://github.com/docker-library/official-images/blob/master/library/httpd) ([history](https://github.com/docker-library/official-images/commits/master/library/httpd))
- **Source of this description**:
[docs repo's `httpd/` directory](https://github.com/docker-library/docs/tree/master/httpd) ([history](https://github.com/docker-library/docs/commits/master/httpd))
# What is httpd?
The Apache HTTP Server, colloquially called Apache, is a Web server application notable for playing a key role in the initial growth of the World Wide Web. Originally based on the NCSA HTTPd server, development of Apache began in early 1995 after work on the NCSA code stalled. Apache quickly overtook NCSA HTTPd as the dominant HTTP server, and has remained the most popular HTTP server in use since April 1996.
> [wikipedia.org/wiki/Apache_HTTP_Server](http://en.wikipedia.org/wiki/Apache_HTTP_Server)

# How to use this image.
This image only contains Apache httpd with the defaults from upstream. There is no PHP installed, but it should not be hard to extend. On the other hand, if you just want PHP with Apache httpd see the [PHP image](https://hub.docker.com/_/php/) and look at the `-apache` tags. If you want to run a simple HTML server, add a simple Dockerfile to your project where `public-html/` is the directory containing all your HTML.
### Create a `Dockerfile` in your project
```dockerfile
FROM httpd:2.4
COPY ./public-html/ /usr/local/apache2/htdocs/
```
Then, run the commands to build and run the Docker image:
```console
$ docker build -t my-apache2 .
$ docker run -dit --name my-running-app -p 8080:80 my-apache2
```
Visit http://localhost:8080 and you will see It works!
### Without a `Dockerfile`
If you don't want to include a `Dockerfile` in your project, it is sufficient to do the following:
```console
$ docker run -dit --name my-apache-app -p 8080:80 -v "$PWD":/usr/local/apache2/htdocs/ httpd:2.4
```
### Configuration
To customize the configuration of the httpd server, first obtain the upstream default configuration from the container:
```console
$ docker run --rm httpd:2.4 cat /usr/local/apache2/conf/httpd.conf > my-httpd.conf
```
You can then `COPY` your custom configuration in as `/usr/local/apache2/conf/httpd.conf`:
```dockerfile
FROM httpd:2.4
COPY ./my-httpd.conf /usr/local/apache2/conf/httpd.conf
```
#### SSL/HTTPS
If you want to run your web traffic over SSL, the simplest setup is to `COPY` or mount (`-v`) your `server.crt` and `server.key` into `/usr/local/apache2/conf/` and then customize the `/usr/local/apache2/conf/httpd.conf` by removing the comment symbol from the following lines:
```apacheconf
...
#LoadModule socache_shmcb_module modules/mod_socache_shmcb.so
...
#LoadModule ssl_module modules/mod_ssl.so
...
#Include conf/extra/httpd-ssl.conf
...
```
The `conf/extra/httpd-ssl.conf` configuration file will use the certificate files previously added and tell the daemon to also listen on port 443. Be sure to also add something like `-p 443:443` to your `docker run` to forward the https port.
This could be accomplished with a `sed` line similar to the following:
```dockerfile
RUN sed -i \
-e 's/^#\(Include .*httpd-ssl.conf\)/\1/' \
-e 's/^#\(LoadModule .*mod_ssl.so\)/\1/' \
-e 's/^#\(LoadModule .*mod_socache_shmcb.so\)/\1/' \
conf/httpd.conf
```
The previous steps should work well for development, but we recommend customizing your conf files for production, see [httpd.apache.org](https://httpd.apache.org/docs/2.4/ssl/ssl_faq.html) for more information about SSL setup.
# Image Variants
The `httpd` images come in many flavors, each designed for a specific use case.
## `httpd:<version>`
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
Some of these tags may have names like bookworm in them. These are the suite code names for releases of [Debian](https://wiki.debian.org/DebianReleases) and indicate which release the image is based on. If your image needs to install any additional packages beyond what comes with the image, you'll likely want to specify one of these explicitly to minimize breakage when there are new releases of Debian.
## `httpd:<version>-alpine`
This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
# License
View [license information](https://www.apache.org/licenses/) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `httpd/` directory](https://github.com/docker-library/repo-info/tree/master/repos/httpd).
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.
```
--------------------------------------------------------------------------------
/emqx/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "emqx/README.md"
IT IS AUTO-GENERATED
(from the other files in "emqx/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[EMQ Technologies](https://github.com/emqx)
- **Where to get help**:
[Discussions](https://github.com/emqx/emqx/discussions) or [Discord](https://discord.gg/xYGf3fQnES)
# Supported tags and respective `Dockerfile` links
- [`5.7.2`, `5.7`](https://github.com/emqx/emqx-docker/blob/35e70c8e602687db5a447c9573bde8ab77335fdc/5.7/Dockerfile)
- [`5.8.6`, `5.8`, `5`, `latest`](https://github.com/emqx/emqx-docker/blob/7324fb36f81404915f97472652e2572f1dda5066/5.8/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/emqx/emqx-docker/issues](https://github.com/emqx/emqx-docker/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/emqx/), [`arm64v8`](https://hub.docker.com/r/arm64v8/emqx/)
- **Published image artifact details**:
[repo-info repo's `repos/emqx/` directory](https://github.com/docker-library/repo-info/blob/master/repos/emqx) ([history](https://github.com/docker-library/repo-info/commits/master/repos/emqx))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/emqx` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Femqx)
[official-images repo's `library/emqx` file](https://github.com/docker-library/official-images/blob/master/library/emqx) ([history](https://github.com/docker-library/official-images/commits/master/library/emqx))
- **Source of this description**:
[docs repo's `emqx/` directory](https://github.com/docker-library/docs/tree/master/emqx) ([history](https://github.com/docker-library/docs/commits/master/emqx))
# What is EMQX
[EMQX](https://emqx.io/) is the world's most scalable open-source MQTT broker with a high performance that connects 100M+ IoT devices in 1 cluster, while maintaining 1M message per second throughput and sub-millisecond latency.
EMQX supports multiple open standard protocols like MQTT, HTTP, QUIC, and WebSocket. It's 100% compliant with MQTT 5.0 and 3.x standard, and secures bi-directional communication with MQTT over TLS/SSL and various authentication mechanisms.
With the built-in powerful SQL-based rules engine, EMQX can extract, filter, enrich and transform IoT data in real-time. In addition, it ensures high availability and horizontal scalability with a masterless distributed architecture, and provides ops-friendly user experience and great observability.
EMQX boasts more than 20K+ enterprise users across 50+ countries and regions, connecting 100M+ IoT devices worldwide, and is trusted by over 400 customers in mission-critical scenarios of IoT, IIoT, connected vehicles, and more, including over 70 Fortune 500 companies like HPE, VMware, Verifone, SAIC Volkswagen, and Ericsson.

# How to use this image
### Run EMQX
Execute some command under this docker image
```console
$ docker run -d --name emqx emqx:${tag}
```
For example
```console
$ docker run -d --name emqx -p 18083:18083 -p 1883:1883 emqx:latest
```
The EMQX broker runs as Linux user `emqx` in the docker container.
### Configuration
All EMQX Configuration in [`etc/emqx.conf`](https://github.com/emqx/emqx/blob/master/apps/emqx/etc/emqx.conf) can be configured via environment variables.
Example:
EMQX_DASHBOARD__DEFAULT_PASSWORD <--> dashboard.default_password
EMQX_NODE__COOKIE <--> node.cookie
EMQX_LISTENERS__SSL__default__ENABLE <--> listeners.ssl.default.enable
Note: The lowercase use of 'default' is not a typo. It is used to demonstrate that lowercase environment variables are equivalent.
- Prefix `EMQX_` is removed
- All upper case letters are replaced with lower case letters
- `__` is replaced with `.`
For example, set MQTT TCP port to 1883
```console
$ docker run -d --name emqx -e EMQX_DASHBOARD__DEFAULT_PASSWORD=mysecret -p 18083:18083 -p 1883:1883 emqx:latest
```
Please read more about EMQX configuration in the [official documentation](https://docs.emqx.com/en/emqx/latest/configuration/configuration.html)
#### EMQX node name configuration
Environment variable `EMQX_NODE__NAME` allows you to specify an EMQX node name, which defaults to `<container_name>@<container_ip>`.
If not specified, EMQX determines its node name based on the running environment or other environment variables used for node discovery.
### Cluster
EMQX supports a variety of clustering methods, see our [documentation](https://docs.emqx.com/en/emqx/latest/deploy/cluster/create-cluster.html) for details.
Let's create a static node list cluster from Docker Compose.
- Create `compose.yaml`:
```yaml
services:
emqx1:
image: emqx:latest
environment:
- "[email protected]"
- "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
- "EMQX_CLUSTER__STATIC__SEEDS=[[email protected], [email protected]]"
networks:
emqx-bridge:
aliases:
- node1.emqx.io
emqx2:
image: emqx:latest
environment:
- "[email protected]"
- "EMQX_CLUSTER__DISCOVERY_STRATEGY=static"
- "EMQX_CLUSTER__STATIC__SEEDS=[[email protected], [email protected]]"
networks:
emqx-bridge:
aliases:
- node2.emqx.io
networks:
emqx-bridge:
driver: bridge
```
- Start the Docker Compose services
```bash
docker compose -p my_emqx up -d
```
- View cluster
```bash
$ docker exec -it my_emqx_emqx1_1 sh -c "emqx ctl cluster status"
Cluster status: #{running_nodes => ['[email protected]','[email protected]'],
stopped_nodes => []}
```
### Persistence
If you want to persist the EMQX docker container, you need to keep the following directories:
- `/opt/emqx/data`
- `/opt/emqx/log`
Since data in these folders are partially stored under the `/opt/emqx/data/mnesia/${node_name}`, the user also needs to reuse the same node name to see the previous state. To make this work, one needs to set the host part of `EMQX_NODE__NAME` to something static that does not change when you restart or recreate the container. It could be container name, hostname or loopback IP address `127.0.0.1` if you only have one node.
In if you use Docker Compose, the configuration would look something like this:
```YAML
volumes:
vol-emqx-data:
name: foo-emqx-data
vol-emqx-log:
name: foo-emqx-log
services:
emqx:
image: emqx:latest
restart: always
environment:
EMQX_NODE__NAME: [email protected]
volumes:
- vol-emqx-data:/opt/emqx/data
- vol-emqx-log:/opt/emqx/log
```
### Kernel Tuning
Under Linux host machine, the easiest way is [Tuning guide](https://docs.emqx.com/en/emqx/latest/performance/tune.html).
If you want tune Linux kernel by docker, you must ensure your docker is latest version (>=1.12).
```bash
docker run -d --name emqx -p 18083:18083 -p 1883:1883 \
--sysctl fs.file-max=2097152 \
--sysctl fs.nr_open=2097152 \
--sysctl net.core.somaxconn=32768 \
--sysctl net.ipv4.tcp_max_syn_backlog=16384 \
--sysctl net.core.netdev_max_backlog=16384 \
--sysctl net.ipv4.ip_local_port_range=1000 65535 \
--sysctl net.core.rmem_default=262144 \
--sysctl net.core.wmem_default=262144 \
--sysctl net.core.rmem_max=16777216 \
--sysctl net.core.wmem_max=16777216 \
--sysctl net.core.optmem_max=16777216 \
--sysctl net.ipv4.tcp_rmem=1024 4096 16777216 \
--sysctl net.ipv4.tcp_wmem=1024 4096 16777216 \
--sysctl net.ipv4.tcp_max_tw_buckets=1048576 \
--sysctl net.ipv4.tcp_fin_timeout=15 \
emqx:latest
```
> REMEMBER: DO NOT RUN EMQX DOCKER PRIVILEGED OR MOUNT SYSTEM PROC IN CONTAINER TO TUNE LINUX KERNEL, IT IS UNSAFE.
# License
View [license information](https://github.com/emqx/emqx/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `emqx/` directory](https://github.com/docker-library/repo-info/tree/master/repos/emqx).
As for any pre-built image usage, it is the image user's responsibility to ensure that any use of this image complies with any relevant licenses for all software contained within.
```
--------------------------------------------------------------------------------
/buildpack-deps/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "buildpack-deps/README.md"
IT IS AUTO-GENERATED
(from the other files in "buildpack-deps/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[the Docker Community](https://github.com/docker-library/buildpack-deps)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`bookworm-curl`, `stable-curl`, `curl`](https://github.com/docker-library/buildpack-deps/blob/3e18c3af1f5dce6a48abf036857f9097b6bd79cc/debian/bookworm/curl/Dockerfile)
- [`bookworm-scm`, `stable-scm`, `scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bookworm/scm/Dockerfile)
- [`bookworm`, `stable`, `latest`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bookworm/Dockerfile)
- [`bullseye-curl`, `oldstable-curl`](https://github.com/docker-library/buildpack-deps/blob/93d6db0797f91ab674535553b7e0e762941a02d0/debian/bullseye/curl/Dockerfile)
- [`bullseye-scm`, `oldstable-scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bullseye/scm/Dockerfile)
- [`bullseye`, `oldstable`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/debian/bullseye/Dockerfile)
- [`sid-curl`, `unstable-curl`](https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/curl/Dockerfile)
- [`sid-scm`, `unstable-scm`](https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/scm/Dockerfile)
- [`sid`, `unstable`](https://github.com/docker-library/buildpack-deps/blob/2b3a8b7d1f8875865034be3bab98ddd737e37d5e/debian/sid/Dockerfile)
- [`trixie-curl`, `testing-curl`](https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5/debian/trixie/curl/Dockerfile)
- [`trixie-scm`, `testing-scm`](https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5/debian/trixie/scm/Dockerfile)
- [`trixie`, `testing`](https://github.com/docker-library/buildpack-deps/blob/1f4fe499c668d9a2e1578aa8db4f0b2d14482cf5/debian/trixie/Dockerfile)
- [`focal-curl`, `20.04-curl`](https://github.com/docker-library/buildpack-deps/blob/93d6db0797f91ab674535553b7e0e762941a02d0/ubuntu/focal/curl/Dockerfile)
- [`focal-scm`, `20.04-scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/focal/scm/Dockerfile)
- [`focal`, `20.04`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/focal/Dockerfile)
- [`jammy-curl`, `22.04-curl`](https://github.com/docker-library/buildpack-deps/blob/93d6db0797f91ab674535553b7e0e762941a02d0/ubuntu/jammy/curl/Dockerfile)
- [`jammy-scm`, `22.04-scm`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/jammy/scm/Dockerfile)
- [`jammy`, `22.04`](https://github.com/docker-library/buildpack-deps/blob/d0ecd4b7313e9bc6b00d9a4fe62ad5787bc197ae/ubuntu/jammy/Dockerfile)
- [`noble-curl`, `24.04-curl`](https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/curl/Dockerfile)
- [`noble-scm`, `24.04-scm`](https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/scm/Dockerfile)
- [`noble`, `24.04`](https://github.com/docker-library/buildpack-deps/blob/60dc5f9555c521de086b2f5770514faf69ee2cc4/ubuntu/noble/Dockerfile)
- [`oracular-curl`, `24.10-curl`](https://github.com/docker-library/buildpack-deps/blob/f24f02bc0fda57d7f0e30b205df4a38114712b0a/ubuntu/oracular/curl/Dockerfile)
- [`oracular-scm`, `24.10-scm`](https://github.com/docker-library/buildpack-deps/blob/f24f02bc0fda57d7f0e30b205df4a38114712b0a/ubuntu/oracular/scm/Dockerfile)
- [`oracular`, `24.10`](https://github.com/docker-library/buildpack-deps/blob/f24f02bc0fda57d7f0e30b205df4a38114712b0a/ubuntu/oracular/Dockerfile)
- [`plucky-curl`, `25.04-curl`](https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/curl/Dockerfile)
- [`plucky-scm`, `25.04-scm`](https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/scm/Dockerfile)
- [`plucky`, `25.04`](https://github.com/docker-library/buildpack-deps/blob/ab3ae04e943ecb240a9691dfa1de219b4a3e32a0/ubuntu/plucky/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/docker-library/buildpack-deps/issues](https://github.com/docker-library/buildpack-deps/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/buildpack-deps/), [`arm32v5`](https://hub.docker.com/r/arm32v5/buildpack-deps/), [`arm32v7`](https://hub.docker.com/r/arm32v7/buildpack-deps/), [`arm64v8`](https://hub.docker.com/r/arm64v8/buildpack-deps/), [`i386`](https://hub.docker.com/r/i386/buildpack-deps/), [`mips64le`](https://hub.docker.com/r/mips64le/buildpack-deps/), [`ppc64le`](https://hub.docker.com/r/ppc64le/buildpack-deps/), [`riscv64`](https://hub.docker.com/r/riscv64/buildpack-deps/), [`s390x`](https://hub.docker.com/r/s390x/buildpack-deps/)
- **Published image artifact details**:
[repo-info repo's `repos/buildpack-deps/` directory](https://github.com/docker-library/repo-info/blob/master/repos/buildpack-deps) ([history](https://github.com/docker-library/repo-info/commits/master/repos/buildpack-deps))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/buildpack-deps` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fbuildpack-deps)
[official-images repo's `library/buildpack-deps` file](https://github.com/docker-library/official-images/blob/master/library/buildpack-deps) ([history](https://github.com/docker-library/official-images/commits/master/library/buildpack-deps))
- **Source of this description**:
[docs repo's `buildpack-deps/` directory](https://github.com/docker-library/docs/tree/master/buildpack-deps) ([history](https://github.com/docker-library/docs/commits/master/buildpack-deps))
# What is `buildpack-deps`?
In spirit, `buildpack-deps` is similar to [Heroku's stack images](https://github.com/heroku/stack-images/blob/master/bin/cedar.sh). It includes a large number of "development header" packages needed by various things like Ruby Gems, PyPI modules, etc. For example, `buildpack-deps` would let you do a `bundle install` in an arbitrary application directory without knowing beforehand that `ssl.h` is required to build a dependent module.

# How to use this image
This stack is designed to be the foundation of a language-stack image.
## What's included?
The main tags of this image are the full batteries-included approach. With them, a majority of arbitrary `gem install` / `npm install` / `pip install` should be successful without additional header/development packages.
For some language stacks, that doesn't make sense, particularly if linking to arbitrary external C libraries is much less common (as in Go and Java, for example), which is where these other smaller variants can come in handy.
### `curl`
This variant includes just the `curl`, `wget`, and `ca-certificates` packages. This is perfect for cases like the Java JRE, where downloading JARs is very common and necessary, but checking out code isn't.
### `scm`
This variant is based on `curl`, but also adds various source control management tools. As of this writing, the current list of included tools is `bzr`, `git`, `hg`, and `svn`. Intentionally missing is `cvs` due to the dwindling relevance it has (sorry CVS). This image is perfect for cases like the Java JDK, where downloading JARs is very common (hence the `curl` base still), but checking out code also becomes more common as well (compared to the JRE).
# License
View [license information](https://www.debian.org/social_contract#guidelines) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `buildpack-deps/` directory](https://github.com/docker-library/repo-info/tree/master/repos/buildpack-deps).
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.
```
--------------------------------------------------------------------------------
/php-zendserver/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "php-zendserver/README.md"
IT IS AUTO-GENERATED
(from the other files in "php-zendserver/" combined with a set of templates)
********************************************************************************
-->
# **DEPRECATION NOTICE**
This image is not actively maintained (and [has not been for years](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp-zendserver)). It is highly recommended for users to seek out alternatives.
# Quick reference
- **Maintained by**:
[Perforce Software, Inc.](https://github.com/zendtech/php-zendserver-docker)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
**No supported tags**
# Quick reference (cont.)
- **Where to file issues**:
[Zend Support Center](https://www.zend.com/en/support-center)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
**No supported architectures**
- **Published image artifact details**:
[repo-info repo's `repos/php-zendserver/` directory](https://github.com/docker-library/repo-info/blob/master/repos/php-zendserver) ([history](https://github.com/docker-library/repo-info/commits/master/repos/php-zendserver))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/php-zendserver` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fphp-zendserver)
[official-images repo's `library/php-zendserver` file](https://github.com/docker-library/official-images/blob/master/library/php-zendserver) ([history](https://github.com/docker-library/official-images/commits/master/library/php-zendserver))
- **Source of this description**:
[docs repo's `php-zendserver/` directory](https://github.com/docker-library/docs/tree/master/php-zendserver) ([history](https://github.com/docker-library/docs/commits/master/php-zendserver))
# What is Zend Server?
Zend Server is the integrated application platform for PHP mobile and web apps. Zend Server provides you with a highly available PHP production environment which includes, amongst other features, a highly reliable PHP stack, application monitoring, troubleshooting, and the all-new Z-Ray.
### Boost your Development with Z-Ray
Using Zend Server Z-Ray is akin to wearing X-Ray goggles, effortlessly giving developers deep insight into how their code is running as they are developing it – all without having to change any of their habits or workflow. With Z-Ray, developers can immediately understand the impact of their code changes, enabling them to both improve quality and solve issues long before their code reaches production. In addition to the obvious benefits of this 'Left Shifting' – better performance, fewer production issues and faster recovery times – using Z-Ray is also downright fun!
### Powering Continuous Delivery
Zend Server is the platform that enables Continuous Delivery, which provides consistency, automation and collaboration capabilities throughout the application delivery cycle. Patterns are available to integrate Zend Server with: Chef, Jenkins, Nagios, Vmware, Puppet.
### Additional Resources
- [http://www.zend.com/](http://www.zend.com/)
- [http://support.roguewave.com/](http://support.roguewave.com/)
- [http://files.zend.com/help/Zend-Server/zend-server.htm#faqs.htm](http://files.zend.com/help/Zend-Server/zend-server.htm#faqs.htm)
- [http://files.zend.com/help/Zend-Server/zend-server.htm#getting\_started.htm](http://files.zend.com/help/Zend-Server/zend-server.htm#getting_started.htm)
# PHP-ZendServer
This is a cluster-enabled version of a Dockerized Zend Server container. With Zend Server on Docker, you'll get your PHP applications up and running on a highly available PHP production environment which includes, amongst other features, a highly reliable PHP stack, application monitoring, troubleshooting, and the new and innovative new technology - Z-Ray. Z-Ray gives developers unprecedented visibility into their code by tracking and displaying in a toolbar live and detailed info on how the various elements constructing their page are performing.
For development purposes we provide you with a time limited trial license. For production use you must provide a valid Zend Server license using the instructions below in the Usage section.
## Usage
#### Launching the Container from Docker-Hub
Zend Server is shared on [Docker-Hub] as **php-zendserver**.
##### Single instance
To start a single Zend Server instance, execute:
$ docker run php-zendserver
- You can specify the PHP and Zend Server version by adding ':<php-version>' or ':<ZS-version>-php<version>' to the 'docker run' command.
for example:
$docker run php-zendserver:8.5-php5.6
#### Availible versions:
- Zend Server 8
- Zend Server 9 (With PHP 7 GA)(Default version)
- Zend Server 2019 with multi PHP Version Support (7.1, 7.2 & 7.3)
##### Cluster
To start a Zend Server cluster, execute the following command for each cluster node:
$ docker run -e MYSQL_HOSTNAME=<db-ip> -e MYSQL_PORT=3306 -e MYSQL_USERNAME=<username> -e MYSQL_PASSWORD=<password> -e MYSQL_DBNAME=zend php-zendserver
#### Bring your own license
To use your own Zend Server license: $ docker run php-zendserver -e ZEND_LICENSE_KEY=<license-key> -e ZEND_LICENSE_ORDER=<order-number>
#### Launching the Container from Dockerfile
From a local folder containing this repo's clone, execute the following command to generate the image. The **image-id** will be outputted:
$ docker build .
##### Single instance from custom image
To start a single Zend Server instance, execute:
$ docker run <image-id>
#### Cluster from custom image
To start a Zend Server cluster, execute the following command on each cluster node:
$ docker run -e MYSQL_HOSTNAME=<db-ip> -e MYSQL_PORT=3306 -e MYSQL_USERNAME=<username> -e MYSQL_PASSWORD=<password> -e MYSQL_DBNAME=zend <image-id>
#### Accessing Zend server
Once started, the container will output the information required to access the PHP application and the Zend Server UI, including an automatically generated admin password.
#### Port forwarding (For remote access)
To access the container **remotely**, port forwarding must be configured, either manually or using docker. For example, this command redirects port 80 to port 88, and port 10081 (Zend Server UI port) to port 10088:
$ docker run -p 88:80 -p 10088:10081 php-zendserver
##### For clustered instances:
To start a Zend Server cluster you must provide a Mysql compatible database:
$ docker run -p 88:80 -p 10088:10081 -e MYSQL_HOSTNAME=<db-ip> -e MYSQL_PORT=3306 -e MYSQL_USERNAME=<username> -e MYSQL_PASSWORD=<password> -e MYSQL_DBNAME=zend <image-id>
Please note, when running multiple instances only one instance can be bound to a port. If you are running a cluster, either assign a port redirect to one node only, or assign a different port to each container.
#### Adding application files
Application files can be automatically pulled from a Git repo by setting the **GIT_URL** env var to the repo's URL. Alternatively, if building an image from Dockerfile, place the app files in the "app/" folder.
The files will be copied to the containers /var/www/html folder and defined in Zend Server as the default app. An example index.html file is included. this feature is available in Zend Server 8 and above.
#### Env variables
Env variables are passed in the run command with the "-e" switch.
##### Optional env-variables:
To specify a pre-defined admin password for Zend Server use:
- ZS\_ADMIN\_PASSWORD
Automatically Deploy an app from Git URL:
- GIT\_URL
MySQL vars for clustered ops. *ALL* are required for the node to properly join a cluster:
- MYSQL\_HOSTNAME - ip or hostname of MySQL database
- MYSQL\_PORT - MySQL listening port
- MYSQL\_USERNAME
- MYSQL\_PASSWORD
- MYSQL\_DBNAME - Name of the database Zend Server will use for cluster ops (created automatically if it does not exist).
To specify a pre-purchased license use the following env vars:
- ZEND\_LICENSE\_KEY
- ZEND\_LICENSE\_ORDER
Set Zend Server to production mode by setting the following env var to "true". By default Zend Server is set to "development mode" with Z-Ray enabled:
- ZS\_PRODUCTION
### Minimal Requirements
Each Zend Server Docker container requires 1GB of availible memory.
# License
[Perforce Software, Inc.](https://www.zend.com/end-user-license-agreement)
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `php-zendserver/` directory](https://github.com/docker-library/repo-info/tree/master/repos/php-zendserver).
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.
```
--------------------------------------------------------------------------------
/kapacitor/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "kapacitor/README.md"
IT IS AUTO-GENERATED
(from the other files in "kapacitor/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[InfluxData](https://github.com/influxdata/influxdata-docker)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`1.6`, `1.6.6`](https://github.com/influxdata/influxdata-docker/blob/f4065650506de70c65b6b63234eb5e03e4c33fb6/kapacitor/1.6/Dockerfile)
- [`1.6-alpine`, `1.6.6-alpine`](https://github.com/influxdata/influxdata-docker/blob/f4065650506de70c65b6b63234eb5e03e4c33fb6/kapacitor/1.6/alpine/Dockerfile)
- [`1.7`, `1.7.6`, `latest`](https://github.com/influxdata/influxdata-docker/blob/f4065650506de70c65b6b63234eb5e03e4c33fb6/kapacitor/1.7/Dockerfile)
- [`1.7-alpine`, `1.7.6-alpine`, `alpine`](https://github.com/influxdata/influxdata-docker/blob/f4065650506de70c65b6b63234eb5e03e4c33fb6/kapacitor/1.7/alpine/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/influxdata/influxdata-docker/issues](https://github.com/influxdata/influxdata-docker/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/kapacitor/), [`arm64v8`](https://hub.docker.com/r/arm64v8/kapacitor/)
- **Published image artifact details**:
[repo-info repo's `repos/kapacitor/` directory](https://github.com/docker-library/repo-info/blob/master/repos/kapacitor) ([history](https://github.com/docker-library/repo-info/commits/master/repos/kapacitor))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/kapacitor` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Fkapacitor)
[official-images repo's `library/kapacitor` file](https://github.com/docker-library/official-images/blob/master/library/kapacitor) ([history](https://github.com/docker-library/official-images/commits/master/library/kapacitor))
- **Source of this description**:
[docs repo's `kapacitor/` directory](https://github.com/docker-library/docs/tree/master/kapacitor) ([history](https://github.com/docker-library/docs/commits/master/kapacitor))
# Kapacitor
Kapacitor is an open source data processing engine written in Go. It can process both stream and batch data.
[Kapacitor Official Documentation](https://docs.influxdata.com/kapacitor/latest/introduction/getting_started/)

## Using this image
### Using the default configuration
Start the Kapacitor container with default options:
```console
$ docker run -p 9092:9092 kapacitor
```
Start the Kapacitor container sharing the data directory with the host:
```console
$ docker run -p 9092:9092 \
-v $PWD:/var/lib/kapacitor \
kapacitor
```
Modify `$PWD` to the directory where you want to store data associated with the Kapacitor container.
You can also have Docker control the volume mountpoint by using a named volume.
```console
$ docker run -p 9092:9092 \
-v kapacitor:/var/lib/kapacitor \
kapacitor
```
### Configuration
Kapacitor can be either configured from a config file or using environment variables. To mount a configuration file and use it with the server, you can use this command:
Generate the default configuration file:
```console
$ docker run --rm kapacitor kapacitord config > kapacitor.conf
```
Modify the default configuration, which will now be available under `$PWD`. Then start the Kapacitor container.
```console
$ docker run -p 9092:9092 \
-v $PWD/kapacitor.conf:/etc/kapacitor/kapacitor.conf:ro \
kapacitor
```
Modify `$PWD` to the directory where you want to store the configuration file.
For environment variables, the format is `KAPACITOR_$SECTION_$NAME`. All dashes (`-`) are replaced with underscores (`_`). If the variable isn't in a section, then omit that part. If the config section is an array, use a number to set the nth value in the configuration file.
Examples:
```console
KAPACITOR_HOSTNAME=kapacitor
KAPACITOR_LOGGING_LEVEL=INFO
KAPACITOR_REPORTING_ENABLED=false
KAPACITOR_INFLUXDB_0_URLS_0=http://influxdb:8086
```
Find more about configuring Kapacitor [here](https://docs.influxdata.com/kapacitor/latest/introduction/installation/)
#### Running as root
Starting in v1.7.4, Kapacitor no longer run as the root user by default. If a user wants to revert this change they can set `KAPACITOR_AS_ROOT=true` as an environment variable.
### Exposed Ports
- 9092 TCP -- HTTP API endpoint
#### Subscriptions
Subscriptions allow InfluxDB to push data to Kapacitor for faster alerting instead of requiring Kapacitor to pull data from InfluxDB.
These examples assume you are using a custom configuration file that takes advantage of Docker's built-in service discovery capability. In order to do so, we'll first create a new network:
```console
$ docker network create influxdb
```
Next, we'll start our InfluxDB container named `influxdb`:
```console
$ docker run -d --name=influxdb \
--net=influxdb \
influxdb
```
Start the Kapacitor container with the container hostname matching the container name so Kapacitor can automatically create subscriptions correctly and with the `KAPACITOR_INFLUXDB_0_URLS_0` value set to point at InfluxDB.
```console
$ docker run -p 9092:9092 \
--name=kapacitor \
-h kapacitor \
--net=influxdb \
-e KAPACITOR_INFLUXDB_0_URLS_0=http://influxdb:8086 \
kapacitor
```
You can also start Kapacitor sharing the same network interface of the InfluxDB container. If you do this, Docker will act as if both processes were being run on the same machine.
```console
$ docker run -p 9092:9092 \
--name=kapacitor \
--net=container:influxdb \
kapacitor
```
When run like this, InfluxDB can be communicated with over `localhost`.
### CLI / SHELL
Start the container:
```console
$ docker run --name=kapacitor -d -p 9092:9092 kapacitor
```
Run another container linked to the `kapacitor` container for using the client. Set the env `KAPACITOR_URL` so the client knows how to connect to Kapacitor. Mount in your current directory for accessing TICKscript files.
```console
$ docker run --rm --net=container:kapacitor \
-v $PWD:/root -w=/root -it \
kapacitor bash -l
```
Then, from within the container, you can use the `kapacitor` command to interact with the daemon.
See [this](https://docs.influxdata.com/kapacitor/latest/introduction/getting_started/) for a more detailed getting started guide with Kapacitor.
# Image Variants
The `kapacitor` images come in many flavors, each designed for a specific use case.
## `kapacitor:<version>`
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.
## `kapacitor:<version>-alpine`
This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
# License
View [license information](https://github.com/influxdata/kapacitor/blob/master/LICENSE) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `kapacitor/` directory](https://github.com/docker-library/repo-info/tree/master/repos/kapacitor).
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.
```
--------------------------------------------------------------------------------
/rust/README.md:
--------------------------------------------------------------------------------
```markdown
<!--
********************************************************************************
WARNING:
DO NOT EDIT "rust/README.md"
IT IS AUTO-GENERATED
(from the other files in "rust/" combined with a set of templates)
********************************************************************************
-->
# Quick reference
- **Maintained by**:
[the Rust Project developers](https://github.com/rust-lang/docker-rust)
- **Where to get help**:
[the Docker Community Slack](https://dockr.ly/comm-slack), [Server Fault](https://serverfault.com/help/on-topic), [Unix & Linux](https://unix.stackexchange.com/help/on-topic), or [Stack Overflow](https://stackoverflow.com/help/on-topic)
# Supported tags and respective `Dockerfile` links
- [`1-bullseye`, `1.86-bullseye`, `1.86.0-bullseye`, `bullseye`](https://github.com/rust-lang/docker-rust/blob/4c319c1b759ebc1f3452f2c3b62f75b509baa4e6/stable/bullseye/Dockerfile)
- [`1-slim-bullseye`, `1.86-slim-bullseye`, `1.86.0-slim-bullseye`, `slim-bullseye`](https://github.com/rust-lang/docker-rust/blob/4c319c1b759ebc1f3452f2c3b62f75b509baa4e6/stable/bullseye/slim/Dockerfile)
- [`1-bookworm`, `1.86-bookworm`, `1.86.0-bookworm`, `bookworm`, `1`, `1.86`, `1.86.0`, `latest`](https://github.com/rust-lang/docker-rust/blob/4c319c1b759ebc1f3452f2c3b62f75b509baa4e6/stable/bookworm/Dockerfile)
- [`1-slim-bookworm`, `1.86-slim-bookworm`, `1.86.0-slim-bookworm`, `slim-bookworm`, `1-slim`, `1.86-slim`, `1.86.0-slim`, `slim`](https://github.com/rust-lang/docker-rust/blob/4c319c1b759ebc1f3452f2c3b62f75b509baa4e6/stable/bookworm/slim/Dockerfile)
- [`1-alpine3.20`, `1.86-alpine3.20`, `1.86.0-alpine3.20`, `alpine3.20`](https://github.com/rust-lang/docker-rust/blob/4c319c1b759ebc1f3452f2c3b62f75b509baa4e6/stable/alpine3.20/Dockerfile)
- [`1-alpine3.21`, `1.86-alpine3.21`, `1.86.0-alpine3.21`, `alpine3.21`, `1-alpine`, `1.86-alpine`, `1.86.0-alpine`, `alpine`](https://github.com/rust-lang/docker-rust/blob/4c319c1b759ebc1f3452f2c3b62f75b509baa4e6/stable/alpine3.21/Dockerfile)
# Quick reference (cont.)
- **Where to file issues**:
[https://github.com/rust-lang/docker-rust/issues](https://github.com/rust-lang/docker-rust/issues?q=)
- **Supported architectures**: ([more info](https://github.com/docker-library/official-images#architectures-other-than-amd64))
[`amd64`](https://hub.docker.com/r/amd64/rust/), [`arm32v7`](https://hub.docker.com/r/arm32v7/rust/), [`arm64v8`](https://hub.docker.com/r/arm64v8/rust/), [`i386`](https://hub.docker.com/r/i386/rust/), [`ppc64le`](https://hub.docker.com/r/ppc64le/rust/), [`s390x`](https://hub.docker.com/r/s390x/rust/)
- **Published image artifact details**:
[repo-info repo's `repos/rust/` directory](https://github.com/docker-library/repo-info/blob/master/repos/rust) ([history](https://github.com/docker-library/repo-info/commits/master/repos/rust))
(image metadata, transfer size, etc)
- **Image updates**:
[official-images repo's `library/rust` label](https://github.com/docker-library/official-images/issues?q=label%3Alibrary%2Frust)
[official-images repo's `library/rust` file](https://github.com/docker-library/official-images/blob/master/library/rust) ([history](https://github.com/docker-library/official-images/commits/master/library/rust))
- **Source of this description**:
[docs repo's `rust/` directory](https://github.com/docker-library/docs/tree/master/rust) ([history](https://github.com/docker-library/docs/commits/master/rust))
# What is Rust?
Rust is a systems programming language sponsored by Mozilla Research. It is designed to be a "safe, concurrent, practical language", supporting functional and imperative-procedural paradigms. Rust is syntactically similar to C++, but is designed for better memory safety while maintaining performance.
> [wikipedia.org/wiki/Rust_(programming_language)](https://en.wikipedia.org/wiki/Rust_%28programming_language%29)

# How to use this image
## Start a Rust instance running your app
The most straightforward way to use this image is to use a Rust container as both the build and runtime environment. In your `Dockerfile`, writing something along the lines of the following will compile and run your project:
```dockerfile
FROM rust:1.67
WORKDIR /usr/src/myapp
COPY . .
RUN cargo install --path .
CMD ["myapp"]
```
Then, build and run the Docker image:
```console
$ docker build -t my-rust-app .
$ docker run -it --rm --name my-running-app my-rust-app
```
This creates an image that has all of the rust tooling for the image, which is 1.8gb. If you just want the compiled application:
```dockerfile
FROM rust:1.67 as builder
WORKDIR /usr/src/myapp
COPY . .
RUN cargo install --path .
FROM debian:bullseye-slim
RUN apt-get update && apt-get install -y extra-runtime-dependencies && rm -rf /var/lib/apt/lists/*
COPY --from=builder /usr/local/cargo/bin/myapp /usr/local/bin/myapp
CMD ["myapp"]
```
Note: Some shared libraries may need to be installed as shown in the installation of the `extra-runtime-dependencies` line above.
This method will create an image that is less than 200mb. If you switch to using the Alpine-based rust image, you might be able to save another 60mb.
See https://docs.docker.com/develop/develop-images/multistage-build/ for more information.
## Compile your app inside the Docker container
There may be occasions where it is not appropriate to run your app inside a container. To compile, but not run your app inside the Docker instance, you can write something like:
```console
$ docker run --rm --user "$(id -u)":"$(id -g)" -v "$PWD":/usr/src/myapp -w /usr/src/myapp rust:1.23.0 cargo build --release
```
This will add your current directory, as a volume, to the container, set the working directory to the volume, and run the command `cargo build --release`. This tells Cargo, Rust's build system, to compile the crate in `myapp` and output the executable to `target/release/myapp`.
# Image Variants
The `rust` images come in many flavors, each designed for a specific use case.
## `rust:<version>`
This is the defacto image. If you are unsure about what your needs are, you probably want to use this one. It is designed to be used both as a throw away container (mount your source code and start the container to start your app), as well as the base to build other images off of.
Some of these tags may have names like bookworm or 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.
This tag is based off of [`buildpack-deps`](https://hub.docker.com/_/buildpack-deps/). `buildpack-deps` is designed for the average user of Docker who has many images on their system. It, by design, has a large number of extremely common Debian packages. This reduces the number of packages that images that derive from it need to install, thus reducing the overall size of all images on your system.
## `rust:<version>-slim`
This image does not contain the common packages contained in the default tag and only contains the minimal packages needed to run `rust`. Unless you are working in an environment where *only* the `rust` image will be deployed and you have space constraints, we highly recommend using the default image of this repository.
## `rust:<version>-alpine`
This image is based on the popular [Alpine Linux project](https://alpinelinux.org), available in [the `alpine` official image](https://hub.docker.com/_/alpine). Alpine Linux is much smaller than most distribution base images (~5MB), and thus leads to much slimmer images in general.
This variant is useful when final image size being as small as possible is your primary concern. The main caveat to note is that it does use [musl libc](https://musl.libc.org) instead of [glibc and friends](https://www.etalabs.net/compare_libcs.html), so software will often run into issues depending on the depth of their libc requirements/assumptions. See [this Hacker News comment thread](https://news.ycombinator.com/item?id=10782897) for more discussion of the issues that might arise and some pro/con comparisons of using Alpine-based images.
To minimize image size, it's uncommon for additional related tools (such as `git` or `bash`) to be included in Alpine-based images. Using this image as a base, add the things you need in your own Dockerfile (see the [`alpine` image description](https://hub.docker.com/_/alpine/) for examples of how to install packages if you are unfamiliar).
# License
View [license information](https://www.rust-lang.org/en-US/legal.html) for the software contained in this image.
As with all Docker images, these likely also contain other software which may be under other licenses (such as Bash, etc from the base distribution, along with any direct or indirect dependencies of the primary software being contained).
Some additional license information which was able to be auto-detected might be found in [the `repo-info` repository's `rust/` directory](https://github.com/docker-library/repo-info/tree/master/repos/rust).
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.
```