This is page 21 of 25. Use http://codebase.md/id/docs/get_started/create/basic_markup.html?lines=true&page={x} to view the full context.
# Directory Structure
```
├── .ci
│ ├── check-markdownfmt.sh
│ ├── check-metadata.sh
│ ├── check-pr-no-readme.sh
│ ├── check-required-files.sh
│ ├── check-short.sh
│ ├── check-ymlfmt.sh
│ └── get-markdownfmt.sh
├── .common-templates
│ ├── maintainer-community.md
│ ├── maintainer-docker.md
│ ├── maintainer-hashicorp.md
│ └── maintainer-influxdata.md
├── .dockerignore
├── .github
│ └── workflows
│ └── ci.yml
├── .template-helpers
│ ├── arches.sh
│ ├── autogenerated-warning.md
│ ├── compose.md
│ ├── generate-dockerfile-links-partial.sh
│ ├── generate-dockerfile-links-partial.tmpl
│ ├── get-help.md
│ ├── issues.md
│ ├── license-common.md
│ ├── template.md
│ ├── variant-alpine.md
│ ├── variant-default-buildpack-deps.md
│ ├── variant-default-debian.md
│ ├── variant-default-ubuntu.md
│ ├── variant-onbuild.md
│ ├── variant-slim.md
│ ├── variant-windowsservercore.md
│ ├── variant.md
│ └── variant.sh
├── adminer
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── aerospike
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── almalinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── alpine
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── alt
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── amazoncorretto
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── amazonlinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── api-firewall
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── arangodb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── archlinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── backdrop
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── bash
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── bonita
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── buildpack-deps
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── busybox
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-glibc.md
│ ├── variant-musl.md
│ ├── variant-uclibc.md
│ └── variant.md
├── caddy
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo-120.png
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── cassandra
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── chronograf
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── cirros
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clearlinux
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clefos
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clickhouse
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── clojure
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── composer
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── convertigo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── couchbase
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── couchdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── crate
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── dart
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── debian
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-slim.md
│ └── variant.md
├── docker
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-rootless.md
│ └── variant-windowsservercore.md
├── Dockerfile
├── drupal
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-fpm.md
├── eclipse-mosquitto
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── eclipse-temurin
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── eggdrop
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── elasticsearch
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-alpine.md
├── elixir
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── emqx
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── erlang
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── fedora
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── flink
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── fluentd
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── friendica
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── gazebo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── gcc
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── generate-repo-stub-readme.sh
├── geonetwork
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-postgres.md
│ └── variant.md
├── get-categories.sh
├── ghost
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── golang
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-alpine.md
│ └── variant-tip.md
├── gradle
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── groovy
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── haproxy
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── haskell
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
├── haxe
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── hello-world
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── update.sh
├── hitch
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── httpd
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── hylang
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ibm-semeru-runtimes
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ibmjava
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── influxdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-data.md
│ └── variant-meta.md
├── irssi
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── jetty
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── joomla
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── jruby
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── julia
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── kapacitor
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── kibana
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── kong
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── krakend
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo-120.png
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── LICENSE
├── lightstreamer
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── liquibase
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── logstash
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-alpine.md
├── mageia
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mariadb
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── markdownfmt.sh
├── matomo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── maven
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mediawiki
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── memcached
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── metadata.json
├── metadata.sh
├── mongo
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mongo-express
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── monica
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mono
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── mysql
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── nats
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── neo4j
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── neurodebian
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── nextcloud
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── nginx
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-perl.md
├── node
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── notary
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── odoo
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── open-liberty
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── openjdk
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-alpine.md
│ ├── variant-oracle.md
│ └── variant-slim.md
├── oraclelinux
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
├── orientdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── parallel-update.sh
├── percona
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── perl
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── photon
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── php
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-apache.md
│ ├── variant-cli.md
│ ├── variant-fpm.md
│ └── variant.md
├── php-zendserver
│ ├── content.md
│ ├── deprecated.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── phpmyadmin
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── plone
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── postfixadmin
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-apache.md
│ ├── variant-fpm-alpine.md
│ └── variant-fpm.md
├── postgres
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── push.pl
├── push.sh
├── pypy
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── python
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
├── r-base
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rabbitmq
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rakudo-star
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── README.md
├── redis
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── redmine
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── registry
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rethinkdb
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rocket.chat
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rockylinux
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ros
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ruby
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── rust
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── sapmachine
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── satosa
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── scratch
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── silverpeas
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── solr
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── sonarqube
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── spark
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── spiped
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── storm
│ ├── compose.yaml
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── swift
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── swipl
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── teamspeak
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── telegraf
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── tomcat
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── tomee
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── traefik
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-alpine.md
├── ubuntu
│ ├── content.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── unit
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── update.sh
├── varnish
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── websphere-liberty
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── wordpress
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ ├── variant-cli.md
│ └── variant-fpm.md
├── xwiki
│ ├── content.md
│ ├── get-help.md
│ ├── github-repo
│ ├── issues.md
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ └── README.md
├── ymlfmt.sh
├── yourls
│ ├── compose.yaml
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.svg
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-fpm.md
├── znc
│ ├── content.md
│ ├── github-repo
│ ├── license.md
│ ├── logo.png
│ ├── maintainer.md
│ ├── metadata.json
│ ├── README-short.txt
│ ├── README.md
│ └── variant-slim.md
└── zookeeper
├── compose.yaml
├── content.md
├── github-repo
├── license.md
├── logo.png
├── maintainer.md
├── metadata.json
├── README-short.txt
└── README.md
```
# Files
--------------------------------------------------------------------------------
/plone/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is Plone?
2 |
3 | [Plone](https://plone.org) is a free and open source content management system built on top of the Zope application server.
4 |
5 | %%LOGO%%
6 |
7 | ## Features
8 |
9 | - Images for Plone 5.x and Plone 4.x
10 | - Enable add-ons via environment variables
11 | - Choose between [Debian](https://www.debian.org/) or [Alpine](http://www.alpinelinux.org/) based images.
12 | - Built-in RelStorage support, configurable via environment variables (requires Plone 5.2.4+)
13 | - Built-in LDAP/AD support via pas.plugins.ldap (requires Plone 5.2.4+)
14 |
15 | ## Usage
16 |
17 | ### Start a single Plone instance
18 |
19 | This will download and start the latest Plone 5 container, based on [Debian](https://www.debian.org/).
20 |
21 | ```console
22 | $ docker run -p 8080:8080 %%IMAGE%%
23 | ```
24 |
25 | This image includes `EXPOSE 8080` (the Plone port), so standard container linking will make it automatically available to the linked containers. Now you can add a Plone Site at http://localhost:8080 - default Zope user and password are `admin/admin`.
26 |
27 | ### Start Plone within a ZEO cluster
28 |
29 | ZEO cluster are best suited for production setups, you will **need** a loadbalancer.
30 |
31 | Start ZEO server in the background
32 |
33 | ```console
34 | $ docker run --name=zeo %%IMAGE%% zeo
35 | ```
36 |
37 | Start 2 Plone clients (also in the background)
38 |
39 | ```console
40 | $ docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8081:8080 %%IMAGE%%
41 | $ docker run --link=zeo -e ZEO_ADDRESS=zeo:8080 -p 8082:8080 %%IMAGE%%
42 | ```
43 |
44 | ### Start Plone in debug mode
45 |
46 | You can also start Plone in debug mode (`fg`) by running
47 |
48 | ```console
49 | $ docker run -p 8080:8080 %%IMAGE%% fg
50 | ```
51 |
52 | ### Add-ons
53 |
54 | You can enable Plone add-ons via the `ADDONS` environment variable
55 |
56 | ```console
57 | $ docker run -p 8080:8080 -e PLONE_ADDONS="eea.facetednavigation Products.PloneFormGen" %%IMAGE%%
58 | ```
59 |
60 | For more information on how to extend this image with your own custom settings, adding more add-ons, building it or mounting volumes, please refer to our [documentation](https://docs.plone.org/manage/docker/docs/index.html)
61 |
62 | ## Supported Environment Variables
63 |
64 | The Plone image uses several environment variable that allow to specify a more specific setup.
65 |
66 | ### For Basic Usage
67 |
68 | - `ADDONS` - Customize Plone via Plone add-ons using this environment variable
69 | - `SITE` - Add Plone instance with this id to `Data.fs` on first run. If NOT provided, you'll have to manually add a Plone Site via web UI
70 | - `ZEO_ADDRESS` - This environment variable allows you to run Plone image as a ZEO client.
71 | - `VERSIONS` - Use specific versions of Plone Add-on or python libraries
72 |
73 | Run Plone and install two addons (eea.facetednavigation and collective.easyform)
74 |
75 | ```console
76 | $ docker run -p 8080:8080 -e SITE="mysite" -e ADDONS="eea.facetednavigation collective.easyform" %%IMAGE%%
77 | ```
78 |
79 | To use specific add-ons versions:
80 |
81 | ```console
82 | -e ADDONS="eea.facetednavigation collective.easyform" \
83 | -e VERSIONS="eea.facetednavigation=13.3 collective.easyform=2.1.0"
84 | ```
85 |
86 | RestAPI:
87 |
88 | ```console
89 | $ docker run -p 8080:8080 -e SITE=plone %%IMAGE%%
90 |
91 | $ curl -H 'Accept: application/json' http://localhost:8080/plone
92 | ```
93 |
94 | ### For Advanced Usage
95 |
96 | **Plone:**
97 |
98 | - `PLONE_ADDONS`, `ADDONS` - Customize Plone via Plone add-ons using this environment variable
99 | - `PLONE_SITE`, `SITE` - Add Plone with this id to `Data.fs` on first run. If NOT provided, you'll have to manually add a Plone Site via web UI
100 | - `PLONE_VERSIONS`, `VERSIONS` - Use specific versions of Plone Add-on or python libraries
101 | - `PLONE_PROFILES, PROFILES` - GenericSetup profiles to include when `SITE` environment provided.
102 | - `PLONE_ZCML`, `ZCML` - Include custom Plone add-ons ZCML files (former `BUILDOUT_ZCML`)
103 | - `PLONE_DEVELOP`, `DEVELOP` - Develop new or existing Plone add-ons (former `BUILDOUT_DEVELOP`)
104 |
105 | **ZEO:**
106 |
107 | - `ZEO_ADDRESS` - This environment variable allows you to run Plone image as a ZEO client.
108 | - `ZEO_READ_ONLY` - Run Plone as a read-only ZEO client. Defaults to `off`.
109 | - `ZEO_CLIENT_READ_ONLY_FALLBACK` - A flag indicating whether a read-only remote storage should be acceptable as a fallback when no writable storages are available. Defaults to `false`.
110 | - `ZEO_SHARED_BLOB_DIR` - Set this to on if the ZEO server and the instance have access to the same directory. Defaults to `off`.
111 | - `ZEO_STORAGE` - Set the storage number of the ZEO storage. Defaults to `1`.
112 | - `ZEO_CLIENT_CACHE_SIZE` - Set the size of the ZEO client cache. Defaults to `128MB`.
113 | - `ZEO_PACK_KEEP_OLD` - Can be set to false to disable the creation of `*.fs.old` files before the pack is run. Defaults to true.
114 | - `HEALTH_CHECK_TIMEOUT` - Time in seconds to wait until health check starts. Defaults to `1` second.
115 | - `HEALTH_CHECK_INTERVAL` - Interval in seconds to check that the Zope application is still healthy. Defaults to `1` second.
116 |
117 | **CORS:**
118 |
119 | - `CORS_ALLOW_ORIGIN` - Origins that are allowed access to the resource. Either a comma separated list of origins, e.g. `http://example.net,http://mydomain.com` or `*`. Defaults to `http://localhost:3000,http://127.0.0.1:3000`
120 | - `CORS_ALLOW_METHODS` - A comma separated list of HTTP method names that are allowed by this CORS policy, e.g. `DELETE,GET,OPTIONS,PATCH,POST,PUT`. Defaults to `DELETE,GET,OPTIONS,PATCH,POST,PUT`
121 | - `CORS_ALLOW_CREDENTIALS` - Indicates whether the resource supports user credentials in the request. Defaults to `true`
122 | - `CORS_EXPOSE_HEADERS` - A comma separated list of response headers clients can access, e.g. `Content-Length,X-My-Header`. Defaults to `Content-Length,X-My-Header`
123 | - `CORS_ALLOW_HEADERS` - A comma separated list of request headers allowed to be sent by the client, e.g. `X-My-Header`. Defaults to `Accept,Authorization,Content-Type,X-Custom-Header`
124 | - `CORS_MAX_AGE` - Indicates how long the results of a preflight request can be cached. Defaults to `3600`
125 |
126 | **RELSTORAGE:**
127 |
128 | - `RELSTORAGE_ADAPTER_OPTIONS` - A comma separated list of RelStorage adapter options to set for the plone instance (using [plone.recipe.zope2instance](https://relstorage.readthedocs.io/en/latest/configure-application.html#configuring-plone)). This is required in order to use RelStorage.
129 |
130 | All other available environment variables match exactly with RelStorage settings, according to the [settings specification available on the docs](https://relstorage.readthedocs.io/en/latest/relstorage-options.html).
131 |
132 | - `RELSTORAGE_NAME` - **name** - The name of the storage.
133 | - `RELSTORAGE_READ_ONLY` - **read-only** - If true, only reads may be executed against the storage.
134 | - `RELSTORAGE_KEEP_HISTORY` - **keep-history** - If this option is set to true (the default), the adapter will create and use a history-preserving database schema (like FileStorage).
135 | - `RELSTORAGE_BLOB_DIR` - **blob-dir** - If supplied, the storage will provide ZODB blob support; this option specifies the name of the directory to hold blob data. The directory will be created if it does not exist. If no value (or an empty value) is provided, then no blob support will be provided. Default: `/plone/instance/var/blobstorage`
136 |
137 | [See more](https://relstorage.readthedocs.io/en/latest/relstorage-options.html)
138 |
139 | ## Documentation
140 |
141 | Full documentation for end users can be found online at [docs.plone.org](https://docs.plone.org/manage/docker/docs/usage/index.html)
142 |
```
--------------------------------------------------------------------------------
/caddy/content.md:
--------------------------------------------------------------------------------
```markdown
1 | %%LOGO%%
2 |
3 | # What is Caddy?
4 |
5 | [Caddy 2](https://caddyserver.com/) is a powerful, enterprise-ready, open source web server with automatic HTTPS written in Go.
6 |
7 | ## How to use this image
8 |
9 | #### ⚠️ A note about persisted data
10 |
11 | Caddy requires write access to two locations: a [data directory](https://caddyserver.com/docs/conventions#data-directory), and a [configuration directory](https://caddyserver.com/docs/conventions#configuration-directory). While it's not necessary to persist the files stored in the configuration directory, it can be convenient. However, it's very important to persist the data directory.
12 |
13 | From the docs:
14 |
15 | > The data directory must not be treated as a cache. Its contents are not ephemeral or merely for the sake of performance. Caddy stores TLS certificates, private keys, OCSP staples, and other necessary information to the data directory. It should not be purged without an understanding of the implications.
16 |
17 | This image provides for two mount-points for volumes: `/data` and `/config`.
18 |
19 | In the examples below, a [named volume](https://docs.docker.com/storage/volumes/) `caddy_data` is mounted to `/data`, so that data will be persisted.
20 |
21 | Note that named volumes are persisted across container restarts and terminations, so if you move to a new image version, the same data and config directories can be re-used.
22 |
23 | ### Basic Usage
24 |
25 | The default config file simply serves files from `/usr/share/caddy`, so if you want to serve `index.html` from the current working directory:
26 |
27 | ```console
28 | $ echo "hello world" > index.html
29 | $ docker run -d -p 80:80 \
30 | -v $PWD/index.html:/usr/share/caddy/index.html \
31 | -v caddy_data:/data \
32 | %%IMAGE%%
33 | ...
34 | $ curl http://localhost/
35 | hello world
36 | ```
37 |
38 | To override the default [`Caddyfile`](https://github.com/caddyserver/dist/blob/master/config/Caddyfile), you can create one in the subfolder `conf` at `$PWD/conf/Caddyfile` and mount this folder at `/etc/caddy`:
39 |
40 | ```console
41 | $ docker run -d -p 80:80 \
42 | -v $PWD/conf:/etc/caddy \
43 | -v caddy_data:/data \
44 | %%IMAGE%%
45 | ```
46 |
47 | #### ⚠️ Do not mount the Caddyfile directly at `/etc/caddy/Caddyfile`
48 |
49 | If vim or another editor is used that changes the inode of the edited file, the changes will only be applied within the container when the container is recreated, which is explained in detail in this [Medium article](https://medium.com/@jonsbun/why-need-to-be-careful-when-mounting-single-files-into-a-docker-container-4f929340834). When using such an editor, Caddy's graceful reload functionality might not work as expected, as described in [this issue](https://github.com/caddyserver/caddy/issues/5735#issuecomment-1675896585).
50 |
51 | ### Automatic TLS with the Caddy image
52 |
53 | The default `Caddyfile` only listens to port `80`, and does not set up automatic TLS. However, if you have a domain name for your site, and its A/AAAA DNS records are properly pointed to this machine's public IP, then you can use this command to simply serve a site over HTTPS:
54 |
55 | ```console
56 | $ docker run -d --cap-add=NET_ADMIN -p 80:80 -p 443:443 -p 443:443/udp \
57 | -v /site:/srv \
58 | -v caddy_data:/data \
59 | -v caddy_config:/config \
60 | %%IMAGE%% caddy file-server --domain example.com
61 | ```
62 |
63 | The key here is that Caddy is able to listen to ports `80` and `443`, both required for the ACME HTTP challenge.
64 |
65 | See [Caddy's docs](https://caddyserver.com/docs/automatic-https) for more information on automatic HTTPS support!
66 |
67 | ### Building your own Caddy-based image
68 |
69 | Most users deploying production sites will not want to rely on mounting files into a container, but will instead base their own images on `%%IMAGE%%`:
70 |
71 | ```Dockerfile
72 | # note: never use the :latest tag in a production site
73 | FROM %%IMAGE%%:<version>
74 |
75 | COPY Caddyfile /etc/caddy/Caddyfile
76 | COPY site /srv
77 | ```
78 |
79 | #### Adding custom Caddy modules
80 |
81 | Caddy is extendable through the use of "modules". See https://caddyserver.com/docs/extending-caddy for full details. You can find a list of available modules on [the Caddy website's download page](https://caddyserver.com/download).
82 |
83 | You can use the `:builder` image as a short-cut to building a new Caddy binary:
84 |
85 | ```Dockerfile
86 | FROM %%IMAGE%%:<version>-builder AS builder
87 |
88 | RUN xcaddy build \
89 | --with github.com/caddyserver/nginx-adapter \
90 | --with github.com/hairyhenderson/[email protected]
91 |
92 | FROM %%IMAGE%%:<version>
93 |
94 | COPY --from=builder /usr/bin/caddy /usr/bin/caddy
95 | ```
96 |
97 | Note the second `FROM` instruction - this produces a much smaller image by simply overlaying the newly-built binary on top of the regular `%%IMAGE%%` image.
98 |
99 | The [`xcaddy`](https://caddyserver.com/docs/build#xcaddy) tool is used to [build a new Caddy entrypoint](https://github.com/caddyserver/caddy/blob/4217217badf220d7d2c25f43f955fdc8454f2c64/cmd/caddy/main.go#L15..L25), with the provided modules. You can specify just a module name, or a name with a version (separated by `@`). You can also specify a specific version (can be a version tag or commit hash) of Caddy to build from. Read more about [`xcaddy` usage](https://github.com/caddyserver/xcaddy#command-usage).
100 |
101 | Note that the "standard" Caddy modules ([`github.com/caddyserver/caddy/master/modules/standard`](https://github.com/caddyserver/caddy/tree/master/modules/standard)) are always included.
102 |
103 | ### Graceful reloads
104 |
105 | Caddy does not require a full restart when configuration is changed. Caddy comes with a [`caddy reload`](https://caddyserver.com/docs/command-line#caddy-reload) command which can be used to reload its configuration with zero downtime.
106 |
107 | When running Caddy in Docker, the recommended way to trigger a config reload is by executing the `caddy reload` command in the running container.
108 |
109 | First, you'll need to determine your container ID or name. Then, pass the container ID to `docker exec`. The working directory is set to `/etc/caddy` so Caddy can find your Caddyfile without additional arguments.
110 |
111 | ```console
112 | $ caddy_container_id=$(docker ps | grep caddy | awk '{print $1;}')
113 | $ docker exec -w /etc/caddy $caddy_container_id caddy reload
114 | ```
115 |
116 | ### Linux capabilities
117 |
118 | Caddy ships with HTTP/3 support enabled by default. To improve the performance of this UDP based protocol, the underlying quic-go library tries to increase the buffer sizes for its socket. The `NET_ADMIN` capability allows it to override the low default limits of the operating system without having to change kernel parameters via sysctl.
119 |
120 | Giving the container this capability is optional and has potential, though unlikely, to have [security implications](https://unix.stackexchange.com/a/508816).
121 |
122 | See https://github.com/quic-go/quic-go/wiki/UDP-Buffer-Sizes for more details.
123 |
124 | ### Docker Compose example
125 |
126 | If you prefer to use `docker compose` to run your stack, here's a sample service definition which goes in a file named `compose.yaml`. The configuration assumes you put a custom Caddyfile into `$PWD/conf` as described [above](#basic-usage).
127 |
128 | ```yaml
129 | services:
130 | caddy:
131 | image: %%IMAGE%%:<version>
132 | restart: unless-stopped
133 | cap_add:
134 | - NET_ADMIN
135 | ports:
136 | - "80:80"
137 | - "443:443"
138 | - "443:443/udp"
139 | volumes:
140 | - $PWD/conf:/etc/caddy
141 | - $PWD/site:/srv
142 | - caddy_data:/data
143 | - caddy_config:/config
144 |
145 | volumes:
146 | caddy_data:
147 | caddy_config:
148 | ```
149 |
150 | Graceful reloads can then be conducted via `docker compose exec -w /etc/caddy caddy caddy reload`.
151 |
```
--------------------------------------------------------------------------------
/friendica/logo.svg:
--------------------------------------------------------------------------------
```
1 | <?xml version="1.0" encoding="UTF-8" standalone="no"?>
2 | <!-- Created with Inkscape (http://www.inkscape.org/) -->
3 |
4 | <svg
5 | xmlns:dc="http://purl.org/dc/elements/1.1/"
6 | xmlns:cc="http://creativecommons.org/ns#"
7 | xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
8 | xmlns:svg="http://www.w3.org/2000/svg"
9 | xmlns="http://www.w3.org/2000/svg"
10 | xmlns:xlink="http://www.w3.org/1999/xlink"
11 | xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
12 | xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
13 | width="96"
14 | height="96"
15 | id="svg2"
16 | version="1.1"
17 | inkscape:version="0.48.0 r9654"
18 | sodipodi:docname="friendica.svg"
19 | inkscape:export-filename="/home/meta/Documents/My random images/friendica.png"
20 | inkscape:export-xdpi="80.552788"
21 | inkscape:export-ydpi="80.552788">
22 | <defs
23 | id="defs4">
24 | <linearGradient
25 | id="highlightgradient">
26 | <stop
27 | id="stop3833"
28 | offset="0"
29 | style="stop-color:#ffffff;stop-opacity:0.74374998;" />
30 | <stop
31 | style="stop-color:#ffffff;stop-opacity:0;"
32 | offset="1"
33 | id="stop3829" />
34 | </linearGradient>
35 | <linearGradient
36 | id="shadowgradient">
37 | <stop
38 | id="stop3833-5"
39 | offset="0"
40 | style="stop-color:#000000;stop-opacity:0.5;" />
41 | <stop
42 | style="stop-color:#818080;stop-opacity:0;"
43 | offset="1"
44 | id="stop3829-9" />
45 | </linearGradient>
46 | <linearGradient
47 | inkscape:collect="always"
48 | xlink:href="#highlightgradient"
49 | id="linearGradient4011"
50 | x1="44.948269"
51 | y1="0"
52 | x2="54.103466"
53 | y2="46.797421"
54 | gradientUnits="userSpaceOnUse"
55 | gradientTransform="scale(1,0.54545455)" />
56 | <linearGradient
57 | inkscape:collect="always"
58 | xlink:href="#shadowgradient"
59 | id="linearGradient4021"
60 | x1="52.016712"
61 | y1="96"
62 | x2="42.867535"
63 | y2="41.837971"
64 | gradientUnits="userSpaceOnUse"
65 | gradientTransform="matrix(1,0,0,0.5,0,48)" />
66 | <filter
67 | inkscape:collect="always"
68 | id="filter4055"
69 | x="-0.03"
70 | width="1.06"
71 | y="-0.12"
72 | height="1.24">
73 | <feGaussianBlur
74 | inkscape:collect="always"
75 | stdDeviation="1.2"
76 | id="feGaussianBlur4057" />
77 | </filter>
78 | <filter
79 | inkscape:collect="always"
80 | id="filter4059"
81 | x="-0.029877551"
82 | width="1.0597551"
83 | y="-0.122"
84 | height="1.244">
85 | <feGaussianBlur
86 | inkscape:collect="always"
87 | stdDeviation="1.22"
88 | id="feGaussianBlur4061" />
89 | </filter>
90 | </defs>
91 | <sodipodi:namedview
92 | id="base"
93 | pagecolor="#ffffff"
94 | bordercolor="#666666"
95 | borderopacity="1.0"
96 | inkscape:pageopacity="0.0"
97 | inkscape:pageshadow="2"
98 | inkscape:zoom="2.9132799"
99 | inkscape:cx="53.033009"
100 | inkscape:cy="2.8284271"
101 | inkscape:document-units="px"
102 | inkscape:current-layer="layer1"
103 | showgrid="true"
104 | width="256px"
105 | inkscape:snap-global="true"
106 | inkscape:window-width="1680"
107 | inkscape:window-height="1010"
108 | inkscape:window-x="194"
109 | inkscape:window-y="0"
110 | inkscape:window-maximized="0">
111 | <inkscape:grid
112 | type="xygrid"
113 | id="grid2985"
114 | empspacing="3"
115 | visible="true"
116 | enabled="true"
117 | snapvisiblegridlinesonly="true"
118 | spacingx="2px"
119 | spacingy="2px" />
120 | </sodipodi:namedview>
121 | <metadata
122 | id="metadata7">
123 | <rdf:RDF>
124 | <cc:Work
125 | rdf:about="">
126 | <dc:format>image/svg+xml</dc:format>
127 | <dc:type
128 | rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
129 | <dc:title />
130 | </cc:Work>
131 | </rdf:RDF>
132 | </metadata>
133 | <g
134 | inkscape:label="Colors"
135 | inkscape:groupmode="layer"
136 | id="layer1"
137 | transform="translate(0,-956.3622)"
138 | style="display:inline">
139 | <path
140 | style="fill:#ffc019;fill-opacity:1;stroke:none"
141 | d="M 16,0 C 7.0091019,0.04308252 0,7.0521845 0,16 0,16 0,57.499123 0,80 0,89.120146 7.0091019,96 16,96 L 32,96 32,70 64,70 63.916016,46.068359 32,46.236328 32,26 64,26 64,0 C 64,0 24,0 16,0 z"
142 | transform="translate(0,956.3622)"
143 | id="rect2993"
144 | inkscape:connector-curvature="0"
145 | sodipodi:nodetypes="cccsccccccccc" />
146 | <path
147 | style="fill:#1872a2;fill-opacity:1;stroke:none"
148 | d="m 80,1052.3622 c 8.990898,0 16.086165,-6.966 16,-16 0,0 0,-41.4991 0,-64 0.07767,-9.01639 -7.067354,-16 -16,-16 l -16,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26 c 0,0 32,0 48,0 z"
149 | id="rect2993-6"
150 | inkscape:connector-curvature="0"
151 | sodipodi:nodetypes="cccsccccccccc" />
152 | </g>
153 | <g
154 | style="display:inline"
155 | inkscape:label="Lines as original logo"
156 | id="g3997"
157 | inkscape:groupmode="layer">
158 | <path
159 | sodipodi:nodetypes="cccccccc"
160 | inkscape:connector-curvature="0"
161 | id="path3999"
162 | d="m 64,0 0,26 -32,0 0,22 m 32,0 0,22 -32,0 0,26"
163 | style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
164 | <rect
165 | ry="16"
166 | rx="16"
167 | y="0"
168 | x="0"
169 | height="96"
170 | width="96"
171 | id="rect4001"
172 | style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none" />
173 | </g>
174 | <g
175 | inkscape:groupmode="layer"
176 | id="layer3"
177 | inkscape:label="Lines with center break"
178 | style="display:none">
179 | <path
180 | style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:butt;stroke-linejoin:miter;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
181 | d="m 64,0 0,26 -32,0 0,22 32,0 0,22 -32,0 0,26"
182 | id="path3926"
183 | inkscape:connector-curvature="0"
184 | sodipodi:nodetypes="cccccccc" />
185 | <rect
186 | style="fill:none;stroke:#000000;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;stroke-miterlimit:4;stroke-opacity:1;stroke-dasharray:none"
187 | id="rect3928"
188 | width="96"
189 | height="96"
190 | x="0"
191 | y="0"
192 | rx="16"
193 | ry="16" />
194 | </g>
195 | <g
196 | inkscape:groupmode="layer"
197 | id="layer2"
198 | inkscape:label="Effects"
199 | style="display:inline">
200 | <rect
201 | style="fill:url(#linearGradient3930);fill-opacity:1;stroke:none"
202 | id="rect3823"
203 | width="96"
204 | height="48.04369"
205 | x="-3.1086245e-15"
206 | y="1.8024861e-14"
207 | ry="15.215644"
208 | rx="15.214664" />
209 | <rect
210 | style="fill:url(#linearGradient3904);fill-opacity:1;stroke:none"
211 | id="rect3823-8"
212 | width="96"
213 | height="47.86721"
214 | x="1.5376101e-14"
215 | y="-96"
216 | ry="15.159752"
217 | rx="15.214664"
218 | transform="scale(1,-1)" />
219 | <rect
220 | style="fill:url(#linearGradient4011);fill-opacity:1;stroke:none;filter:url(#filter4059)"
221 | id="rect4003"
222 | width="98"
223 | height="24"
224 | x="0"
225 | y="0"
226 | rx="15.214664"
227 | ry="8.2994423"
228 | transform="matrix(1.0296115,0,0,1.1963836,-2.901924,-4.7132067)" />
229 | <rect
230 | style="opacity:0.56746030000000003;fill:url(#linearGradient4021);fill-opacity:1;stroke:none;filter:url(#filter4055)"
231 | id="rect4013"
232 | width="96"
233 | height="24"
234 | x="0"
235 | y="72"
236 | rx="14.008356"
237 | ry="12"
238 | transform="matrix(0.9768331,0,0,0.91974646,1.1649641,8.098115)" />
239 | </g>
240 | </svg>
241 |
```
--------------------------------------------------------------------------------
/teamspeak/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is TeamSpeak?
2 |
3 | TeamSpeak offers the ideal voice communication for online gaming, education and training, internal business communication, and staying in touch with friends and family. Our primary focus is delivering a solution that is easy to use, with high security standards, excellent voice quality, and low system and bandwidth usage.
4 |
5 | > [teamspeak.com](https://teamspeak.com/)
6 |
7 | %%LOGO%%
8 |
9 | # How to use this image
10 |
11 | To view the license agreement:
12 |
13 | ```console
14 | $ docker run -e TS3SERVER_LICENSE=view %%IMAGE%%
15 | ```
16 |
17 | To start a TeamSpeak server, accept the license agreement, and map the ports to the host:
18 |
19 | ```console
20 | $ docker run -p 9987:9987/udp -p 10011:10011 -p 30033:30033 -e TS3SERVER_LICENSE=accept %%IMAGE%%
21 | ```
22 |
23 | Then you can connect to `localhost` in your TeamSpeak client. Please write down the server query password, and server admin privilege key that were generated. These are needed to administrate the TeamSpeak server.
24 |
25 | ## Container shell access
26 |
27 | The `docker exec` command allows you to run commands inside a Docker container. The following command line will give you a shell inside your `%%REPO%%` container:
28 |
29 | ```console
30 | $ docker exec -it some-%%REPO%% sh
31 | ```
32 |
33 | The TeamSpeak server log is available through Docker's container log:
34 |
35 | ```console
36 | $ docker logs some-%%REPO%%
37 | ```
38 |
39 | ## %%COMPOSE%%
40 |
41 | Run `docker compose up`, wait for it to initialize completely, and visit `localhost:9987` or `host-ip:9987` (as appropriate) with a TeamSpeak client.
42 |
43 | ## Environment Variables
44 |
45 | When you start the `%%REPO%%` image, you can adjust the configuration of the TeamSpeak server instance by passing one or more environment variables on the `docker run` command line.
46 |
47 | ### `TS3SERVER_LICENSEPATH`
48 |
49 | Sets the path where the TeamSpeak server is looking for the `licensekey.dat`. This variable is the path to the directory where the `licensekey.dat` is supposed to be located. Defaults to /var/ts3server/.
50 |
51 | ### `TS3SERVER_DB_PLUGIN`
52 |
53 | This variable controls what kind of database the TeamSpeak server is using.
54 |
55 | ### `TS3SERVER_DB_PLUGINPARAMETER`
56 |
57 | The content of the this variable is send as `parameter` to the db plugin.
58 |
59 | ### `TS3SERVER_DB_SQLPATH`
60 |
61 | This variable controls where the TeamSpeak server looks for sql files. Defaults to /opt/ts3server/sql/.
62 |
63 | ### `TS3SERVER_DB_SQLCREATEPATH`
64 |
65 | This variable is the path to the sql scripts used to initialize the database. The path is relative to `TS3SERVER_DB_SQLPATH`
66 |
67 | ### `TS3SERVER_DB_CONNECTIONS`
68 |
69 | This variable controls how many concurrent connections to the database are being used. Must be at least 2 and at most 100. Defaults to 10.
70 |
71 | ### `TS3SERVER_DB_CLIENTKEEPDAYS`
72 |
73 | This variable is the amount of days that the TeamSpeak server will keep unused user identities. Users that have been added to a group will not be pruned, but guests will be.
74 |
75 | ### `TS3SERVER_IP_WHITELIST`
76 |
77 | This variable controls where the whitelist is found. The file contains a list of IP addresses which are exempt from the flood protection system. Warning: Do not add any IP addresses that you don't trust, as it will allow them to flood the server.
78 |
79 | ### `TS3SERVER_IP_BLACKLIST`
80 |
81 | This variable controls where the blacklist is found. The file contains a list of IP addresses that, no matter what, can't connect to the server query interface, even after a server restart.
82 |
83 | ### `TS3SERVER_LOG_PATH`
84 |
85 | This variable controls the folder where the server stores its log files. Defaults to /var/ts3server/logs/.
86 |
87 | ### `TS3SERVER_LOG_QUERY_COMMANDS`
88 |
89 | If this variable is set to 1, every query command that is sent to the server will be logged.<br><br>**Warning:** While this can help if you are running into issues with your server, it should be noted that this can cause your log files to become extremely large. Unless you absolutely want all commands to be logged, we recommend this variable to be set to 0 most of the time.
90 |
91 | ### `TS3SERVER_LOG_APPEND`
92 |
93 | If this variable is set to 1, all new log entries are written into a single file per virtual server. We suggest setting this variable to 0 as it will make life easier when looking at the logs.
94 |
95 | ### `TS3SERVER_QUERY_PROTOCOLS`
96 |
97 | Comma separated list of protocols that can be used to connect to the ServerQuery. Possible values are `raw` and `ssh`. If `raw` is specified a raw or "classic" ServerQuery is opened on `10011/tcp`. If `ssh` is specified an encrypted ServerQuery using SSH is opened at `10022/tcp`. Any combination of the aforementioned values can be specified in this parameter, including leaving it empty, which would disable ServerQuery altogether.
98 |
99 | ### `TS3SERVER_QUERY_TIMEOUT`
100 |
101 | Number of seconds before a query connection is disconnected because of inactivity. If value is set to be zero or negative, the timeout will be disabled. The default is a timeout of 300 seconds.
102 |
103 | ### `TS3SERVER_QUERY_SSH_RSA_HOST_KEY`
104 |
105 | Path to the `ssh_host_rsa_key` to be used by query. If it does not exist, it will be created when the server is starting up.
106 |
107 | # Caveats
108 |
109 | ## Inserting license file
110 |
111 | A TeamSpeak server requires a license file when using more then 1 virtual server with 32 slots. For that the licensekey.dat has to be made available to the server. One way is mounting the licensekey.dat into /var/ts3server.
112 |
113 | ```console
114 | $ docker run --name some-%%REPO%% -v /location/to/licensekey.dat:/var/ts3server/licensekey.dat %%IMAGE%%:tag
115 | ```
116 |
117 | When the whole data directory (`/var/ts3server/`) has been mounted somewhere, the `licensekey.dat` can be copied inside that directory and will be loaded after the next restart of the TeamSpeak server.
118 |
119 | ## Where to Store Data
120 |
121 | Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including:
122 |
123 | - Let Docker manage the storage of your database data [by writing the database files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers.
124 | - Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly.
125 |
126 | The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above:
127 |
128 | 1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`.
129 | 2. Start your `%%REPO%%` container like this:
130 |
131 | ```console
132 | $ docker run --name some-%%REPO%% -v /my/own/datadir:/var/ts3server/ -d %%IMAGE%%:tag
133 | ```
134 |
135 | The `-v /my/own/datadir:/var/ts3server/` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/var/ts3server` inside the container, where TeamSpeak by default will write its data files.
136 |
```
--------------------------------------------------------------------------------
/eggdrop/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is Eggdrop?
2 |
3 | Eggdrop is the world's most popular Open Source IRC bot, designed for flexibility and ease of use, and is freely distributable under the GNU General Public License (GPL). It is designed to Linux, BSD, SunOs, Windows, and Mac OS X, among others. The core codebase is extendable via TCL scripts or C modules and bots can be linked to form botnets, enabling the sharing of userfiles and partylines across multiple bots.
4 |
5 | %%LOGO%%
6 |
7 | # How to use this image
8 |
9 | ## First Run
10 |
11 | To run this container the first time, you'll need to pass in, at minimum, a nickname and server via Environmental Variables. At minimum, a docker run command similar to
12 |
13 | ```console
14 | $ docker run -ti -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/for/host/data:/home/eggdrop/eggdrop/data %%IMAGE%%
15 | ```
16 |
17 | should be used. This will modify the appropriate values within the config file, then start your bot with the nickname FooBot and connect it to irc.libera.chat. These variables are only needed for your first run- after the first use, you can edit the config file directly. Additional configuration options are listed in the following sections.
18 |
19 | Please note that, even in daemon mode, the `-i` flag for `docker run` is required.
20 |
21 | ## Environmental Variables
22 |
23 | ### `SERVER`
24 |
25 | This variable sets the IRC server Eggdrop will connect to. Examples are:
26 |
27 | ```console
28 | -e SERVER=just.a.normal.server
29 | -e SERVER="you.need.to.change.this 6667"
30 | -e SERVER="another.example.com 7000 password"
31 | -e SERVER="[2001:db8:618:5c0:263::] 6669 password"
32 | -e SERVER="ssl.example.net +6697"
33 | ```
34 |
35 | Note that specifiying a port or password will require enclosing the entire argument within quotes. Only one server can be specified via an environmental variable. The + denotes an SSL-enabled port. After the first run, it is advised to edit the eggdrop config directly to add additional servers (see Long-term Persistence below).
36 |
37 | ### `NICK`
38 |
39 | This variable sets the nickname used by eggdrop. After the first use, you should change it by editing the eggdrop config directly (see Long-term Persistence below).
40 |
41 | ### `LISTEN`
42 |
43 | This variable will set the TCP port that Eggdrop will listen for incoming connections on (the equivilent of `listen XXXX all` in the config). If you set this, you will likely need to adjust the `-p` flag to match in your `docker run` command.
44 |
45 | ### `EGGOWNER` (available for testing in develop tag only)
46 |
47 | This variable creates the first account handle for Eggdrop. This is the handle you will log in with, and will have full owner permissions. If you use this environment variable, you must also set the EGGOWNER_PASS environment variable or the container will not start. It can only be used the first time Eggdrop is run. If you are providing your own config file (not using one the one generated by docker on first run), you must add "source scripts/docker.tcl" to the end of your config file to enable this functionality. This variable may be removed after the first run of a container.
48 |
49 | ### `EGGOWNER_PASS` (available for testing in develop tag only)
50 |
51 | This variable sets the password for the EGGOWNER handle. Setting it without setting the EGGOWNER environment variable will not do anything. This variable may be removed after the first run of a container.
52 |
53 | ### `CHANNELS` (available for testing in develop tag only)
54 |
55 | This variable contains a list of channels Eggdrop will attempt to create when the container runs (if they do not already exist). The format for this variable is a comma-separated list (CHANNELS=#chan1,chan2,#chan3"). This variable can be removed once a channel has been added.
56 |
57 | ## Long-term Persistence
58 |
59 | After running the eggdrop container for the first time, the configuration file, user file and channel file will all be available inside the container at `/home/eggdrop/eggdrop/data/` . HOWEVER! These files are only as persistent as the container they exist in. If you expect to use a different container over the course of using the Eggdrop docker image (intentionally or not) you will want to create a persistent data store.
60 |
61 | The easiest way to do this is to mount a directory on your host machine to /home/eggdrop/eggdrop/data. If you do this prior to your first run, you can easily edit the eggdrop configuration file that this docker image generated in the directory on the host. Otherwise, you can also drop in existing config, user, or channel files into the mounted data directory for use in the eggdrop container.
62 |
63 | If you use a config file from a previous eggdrop install (ie, you don't use the config file that this image generates, PLEASE do not forget to modify the userfile and channelfile paths to utilize the data dir- this means edit the config file to use `set userfile data/<userfile>` and `set channelfile data/<channelfile>`. If you do not do this, your data IS NOT PERSISTENT. You'll also likely want to daemonize eggdrop (ie, run it in the background).
64 |
65 | To do this, start your container with something similar to
66 |
67 | ```console
68 | $ docker run -i -e NICK=FooBot -e SERVER=irc.libera.chat -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%%
69 | ```
70 |
71 | If you provide your own config file, place it in the data dir and specify it as the argument to the docker container:
72 |
73 | ```console
74 | $ docker run -i -v /path/to/eggdrop/files:/home/eggdrop/eggdrop/data -d %%IMAGE%% mybot.conf
75 | ```
76 |
77 | Any config file used with docker MUST end in .conf, such as eggdrop.conf or mybot.conf
78 |
79 | ## Adding scripts
80 |
81 | An easy way to add scripts would be to create a scripts directory on the host and mount it to `/home/eggdrop/eggdrop/scripts` (or the path of your choosing). This would be accomplished by adding an option similar to
82 |
83 | ```console
84 | -v /path/to/host/scripts:/home/eggdrop/eggdrop/scripts
85 | ```
86 |
87 | to your docker run command line (and then edit your config file to load the scripts from the path that matches where you mounted the scripts dir). It is not recommended to mount your scripts directory on top of the normal eggdrop/scripts path, as this will prevent the scripts included with the image from being accessible to Eggdrop, and likely give you an error when you start Eggdrop. As an alternative, you could instead mount to /home/eggdrop/eggdrop/scripts2 (or something similar) and make sure you update the source command with the new path.
88 |
89 | ## Adding packages required for scripts
90 |
91 | Many scripts require extra OS packages to be installed in order to function, such as tcl-tls, tcl-lib and libsqlite3-tcl. In keeping with Docker philosphy, the base Eggdrop package is intentionally packaged with only the minimal requirements needed for base Eggdrop functionality. However, users may easily add add packages when starting a container like this:
92 |
93 | ```console
94 | docker run -i eggdrop sh -c 'apk add tcl-lib tcl-tls && exec /home/eggdrop/eggdrop/entrypoint.sh eggdrop.conf'
95 | ```
96 |
97 | ## Exposing network ports
98 |
99 | If you want to expose network connections for your bot, you'll also want to use the -p flag to expose whichever port you specified in the config as the listen port (default is 3333). For example, to expose port 3333, add
100 |
101 | -p 3333:3333
102 |
103 | to your docker run command line.
104 |
105 | ## Common Errors
106 |
107 | # compose.yaml
108 |
109 | A `docker-compose.yml` example is hosted at https://github.com/eggheads/eggdrop-docker/blob/master/docker-compose.yml. A common error creating your own Docker Compose file from scratch is not adding:
110 |
111 | stdin_open: true
112 |
113 | Without it, Eggdrop will give you an "END OF FILE ON TERMINAL" error and not start.
114 |
115 | ## Troubleshooting / Support
116 |
117 | For additional help, you can join the #eggdrop channel on Libera
118 |
119 | The git repository for the Dockerfile is maintained at https://github.com/eggheads/eggdrop-docker
120 |
```
--------------------------------------------------------------------------------
/odoo/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is Odoo?
2 |
3 | Odoo, formerly known as OpenERP, is a suite of open-source business apps written in Python and released under the LGPL license. This suite of applications covers all business needs, from Website/Ecommerce down to manufacturing, inventory and accounting, all seamlessly integrated. It is the first time ever a software editor managed to reach such a functional coverage. Odoo is the most installed business software in the world. Odoo is used by 2.000.000 users worldwide ranging from very small companies (1 user) to very large ones (300 000 users).
4 |
5 | > [www.odoo.com](https://www.odoo.com)
6 |
7 | %%LOGO%%
8 |
9 | # How to use this image
10 |
11 | This image requires a running PostgreSQL server.
12 |
13 | ## Start a PostgreSQL server
14 |
15 | ```console
16 | $ docker run -d -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15
17 | ```
18 |
19 | ## Start an Odoo instance
20 |
21 | ```console
22 | $ docker run -p 8069:8069 --name odoo --link db:db -t %%IMAGE%%
23 | ```
24 |
25 | The alias of the container running Postgres must be db for Odoo to be able to connect to the Postgres server.
26 |
27 | ## Stop and restart an Odoo instance
28 |
29 | ```console
30 | $ docker stop %%IMAGE%%
31 | $ docker start -a %%IMAGE%%
32 | ```
33 |
34 | ## Use named volumes to preserve data
35 |
36 | When the Odoo container is created like described above, the odoo filestore is created inside the container. If the container is removed, the filestore is lost. The preferred way to prevent that is by using a Docker named [volume](https://docs.docker.com/storage/volumes/).
37 |
38 | ```console
39 | $ docker run -v odoo-data:/var/lib/odoo -d -p 8069:8069 --name odoo --link db:db -t %%IMAGE%%
40 | ```
41 |
42 | With the above command, the volume named `odoo-data` will persist even if the container is removed and can be re-used by issuing the same command.
43 |
44 | The path `/var/lib/odoo` used as the mount point of the volume must match the odoo `data_dir` in the config file or as CLI parameters.
45 |
46 | Note that the same principle applies to the Postgresql container and a named volume can be used to preserve the database when the container is removed. So the database container could be started like this (before the odoo container):
47 |
48 | ```console
49 | $ docker run -d -v odoo-db:/var/lib/postgresql/data -e POSTGRES_USER=odoo -e POSTGRES_PASSWORD=odoo -e POSTGRES_DB=postgres --name db postgres:15
50 | ```
51 |
52 | ## Stop and restart a PostgreSQL server
53 |
54 | When a PostgreSQL server is restarted, the Odoo instances linked to that server must be restarted as well because the server address has changed and the link is thus broken.
55 |
56 | Restarting a PostgreSQL server does not affect the created databases.
57 |
58 | ## Run Odoo with a custom configuration
59 |
60 | The default configuration file for the server (located at `/etc/odoo/odoo.conf`) can be overriden at startup using volumes. Suppose you have a custom configuration at `/path/to/config/odoo.conf`, then
61 |
62 | ```console
63 | $ docker run -v /path/to/config:/etc/odoo -p 8069:8069 --name odoo --link db:db -t %%IMAGE%%
64 | ```
65 |
66 | Please use [this configuration template](https://github.com/odoo/docker/blob/master/17.0/odoo.conf) to write your custom configuration as we already set some arguments for running Odoo inside a Docker container.
67 |
68 | You can also directly specify Odoo arguments inline. Those arguments must be given after the keyword `--` in the command-line, as follows
69 |
70 | ```console
71 | $ docker run -p 8069:8069 --name odoo --link db:db -t %%IMAGE%% -- --db-filter=odoo_db_.*
72 | ```
73 |
74 | ## Mount custom addons
75 |
76 | You can mount your own Odoo addons within the Odoo container, at `/mnt/extra-addons`
77 |
78 | ```console
79 | $ docker run -v /path/to/addons:/mnt/extra-addons -p 8069:8069 --name odoo --link db:db -t %%IMAGE%%
80 | ```
81 |
82 | **Note:** Altough there is no official Odoo Enterprise Docker image, the Enterprise modules can be mounted by using the above mentionned method.
83 |
84 | ## Run multiple Odoo instances
85 |
86 | ```console
87 | $ docker run -p 8070:8069 --name odoo2 --link db:db -t %%IMAGE%%
88 | $ docker run -p 8071:8069 --name odoo3 --link db:db -t %%IMAGE%%
89 | ```
90 |
91 | **Note:** For plain use of mails and reports functionalities, when the host and container ports differ (e.g. 8070 and 8069), one has to set, in Odoo, `Settings->Parameters->System Parameters` (requires technical features), web.base.url to the container port (e.g. 127.0.0.1:8069).
92 |
93 | ## Environment Variables
94 |
95 | Tweak these environment variables to easily connect to a postgres server:
96 |
97 | - `HOST`: The address of the postgres server. If you used a postgres container, set to the name of the container. Defaults to `db`.
98 | - `PORT`: The port the postgres server is listening to. Defaults to `5432`.
99 | - `USER`: The postgres role with which Odoo will connect. If you used a postgres container, set to the same value as `POSTGRES_USER`. Defaults to `odoo`.
100 | - `PASSWORD`: The password of the postgres role with which Odoo will connect. If you used a postgres container, set to the same value as `POSTGRES_PASSWORD`. Defaults to `odoo`.
101 |
102 | ## Docker Compose examples
103 |
104 | The simplest `compose.yaml` file would be:
105 |
106 | ```yml
107 | services:
108 | web:
109 | image: %%IMAGE%%:17.0
110 | depends_on:
111 | - db
112 | ports:
113 | - "8069:8069"
114 | db:
115 | image: postgres:15
116 | environment:
117 | - POSTGRES_DB=postgres
118 | - POSTGRES_PASSWORD=odoo
119 | - POSTGRES_USER=odoo
120 | ```
121 |
122 | If the default postgres credentials does not suit you, tweak the environment variables:
123 |
124 | ```yml
125 | services:
126 | web:
127 | image: %%IMAGE%%:17.0
128 | depends_on:
129 | - mydb
130 | ports:
131 | - "8069:8069"
132 | environment:
133 | - HOST=mydb
134 | - USER=odoo
135 | - PASSWORD=myodoo
136 | mydb:
137 | image: postgres:15
138 | environment:
139 | - POSTGRES_DB=postgres
140 | - POSTGRES_PASSWORD=myodoo
141 | - POSTGRES_USER=odoo
142 | ```
143 |
144 | Here's a last example showing you how to
145 |
146 | - mount custom addons located in `./addons`
147 | - use a custom configuration file located in `.config/odoo.conf`
148 | - use named volumes for the Odoo and postgres data dir
149 | - use a `secrets` file named `odoo_pg_pass` that contains the postgreql password shared by both services
150 |
151 | ```yml
152 | services:
153 | web:
154 | image: %%IMAGE%%:17.0
155 | depends_on:
156 | - db
157 | ports:
158 | - "8069:8069"
159 | volumes:
160 | - odoo-web-data:/var/lib/odoo
161 | - ./config:/etc/odoo
162 | - ./addons:/mnt/extra-addons
163 | environment:
164 | - PASSWORD_FILE=/run/secrets/postgresql_password
165 | secrets:
166 | - postgresql_password
167 | db:
168 | image: postgres:15
169 | environment:
170 | - POSTGRES_DB=postgres
171 | - POSTGRES_PASSWORD_FILE=/run/secrets/postgresql_password
172 | - POSTGRES_USER=odoo
173 | - PGDATA=/var/lib/postgresql/data/pgdata
174 | volumes:
175 | - odoo-db-data:/var/lib/postgresql/data/pgdata
176 | secrets:
177 | - postgresql_password
178 | volumes:
179 | odoo-web-data:
180 | odoo-db-data:
181 |
182 | secrets:
183 | postgresql_password:
184 | file: odoo_pg_pass
185 | ```
186 |
187 | To start your Odoo instance, go in the directory of the `compose.yaml` file you created from the previous examples and type:
188 |
189 | ```console
190 | docker compose up -d
191 | ```
192 |
193 | # How to upgrade this image
194 |
195 | Odoo images are updated on a regular basis to make them use recent releases (a new release of each version of Odoo is built [every night](http://nightly.odoo.com/)). Please be aware that what follows is about upgrading from an old release to the latest one provided of the same major version, as upgrading from a major version to another is a much more complex process requiring elaborated migration scripts (see [Odoo Upgrade page](https://upgrade.odoo.com) or this [community project](https://github.com/OCA/OpenUpgrade) which aims to write those scripts).
196 |
197 | Suppose you created a database from an Odoo instance named old-odoo, and you want to access this database from a new Odoo instance named new-odoo, e.g. because you've just downloaded a newer Odoo image.
198 |
199 | By default, Odoo 16.0+ uses a filestore (located at `/var/lib/odoo/filestore/`) for attachments. You should restore this filestore in your new Odoo instance by running
200 |
201 | ```console
202 | $ docker run --volumes-from old-odoo -p 8070:8069 --name new-odoo --link db:db -t %%IMAGE%%
203 | ```
204 |
```
--------------------------------------------------------------------------------
/nats/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # [NATS](https://nats.io): A high-performance cloud native messaging system.
2 |
3 | %%LOGO%%
4 |
5 | `nats` is a high performance server for the NATS Messaging System.
6 |
7 | # Example usage
8 |
9 | ```bash
10 | # Run a NATS server
11 | # Each server exposes multiple ports
12 | # 4222 is for clients.
13 | # 8222 is an HTTP management port for information reporting.
14 | # 6222 is a routing port for clustering.
15 | #
16 | # To actually publish the ports when running the container, use the Docker port mapping
17 | # flag "docker run -p <hostport>:<containerport>" to publish and map one or more ports,
18 | # or the -P flag to publish all exposed ports and map them to high-order ports.
19 | #
20 | # This should not be confused with the NATS Server own -p parameter.
21 | # For instance, to run the NATS Server and have it listen on port 4444,
22 | # you would have to run like this:
23 | #
24 | # docker run -p 4444:4444 %%IMAGE%% -p 4444
25 | #
26 | # Or, if you want to publish the port 4444 as a different port, for example 5555:
27 | #
28 | # docker run -p 5555:4444 %%IMAGE%% -p 4444
29 | #
30 | # To enable NATS JetStream, use the -js flag:
31 | #
32 | # docker run -p 4222:4222 %%IMAGE%% -js
33 | #
34 | # And, to persist JetStream data to a volume you can use the -v and -sd flags.
35 | # Keep in mind that -v is a Docker flag, while -js and -sd are NATS Server flags:
36 | #
37 | # docker run -p 4222:4222 -v nats:/data %%IMAGE%% -js -sd /data
38 | #
39 | # Check "docker run" for more information.
40 |
41 | $ docker run -d --name nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%%
42 | [INF] Starting nats-server
43 | [INF] Version: 2.9.8
44 | [INF] Git: [60e335a]
45 | [INF] Cluster: my_cluster
46 | [INF] Name: NB3YN6SPZF6MWTLPGYLRE2AD5VVWSW443RO43YR5GC62I463QPYGOL5C
47 | [INF] ID: NB3YN6SPZF6MWTLPGYLRE2AD5VVWSW443RO43YR5GC62I463QPYGOL5C
48 | [INF] Using configuration file: /etc/nats/nats-server.conf
49 | [INF] Starting http monitor on 0.0.0.0:8222
50 | [INF] Listening for client connections on 0.0.0.0:4222
51 | [INF] Server is ready
52 | [INF] Cluster name is my_cluster
53 | [INF] Listening for route connections on 0.0.0.0:6222
54 | ...
55 |
56 | # To run a second server and cluster them together..
57 | # Note that since you are passing arguments, this overrides the CMD section
58 | # of the Dockerfile, so you need to pass all arguments, including the
59 | # config file.
60 | $ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -c /etc/nats/nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222
61 |
62 | # If you want to verify the routes are connected, try this instead:
63 | $ docker run -d --name=nats-2 --link nats-main -p 4222:4222 -p 6222:6222 -p 8222:8222 %%IMAGE%% -c /etc/nats/nats-server.conf --routes=nats-route://ruser:T0pS3cr3t@nats-main:6222 -DV
64 | [INF] Starting nats-server
65 | [INF] Version: 2.9.8
66 | [INF] Git: [60e335a]
67 | [DBG] Go build: go1.19.3
68 | [INF] Cluster: my_cluster
69 | [INF] Name: NDFNAUTD4RKS2O7CMKMDMTV3DW5NIKFCQDDMXW2A5YXLUZWWX7RYFCKB
70 | [INF] ID: NDFNAUTD4RKS2O7CMKMDMTV3DW5NIKFCQDDMXW2A5YXLUZWWX7RYFCKB
71 | [INF] Using configuration file: /etc/nats/nats-server.conf
72 | [DBG] Created system account: "$SYS"
73 | [INF] Starting http monitor on 0.0.0.0:8222
74 | [INF] Listening for client connections on 0.0.0.0:4222
75 | [DBG] Get non local IPs for "0.0.0.0"
76 | [DBG] ip=172.17.0.2
77 | [INF] Server is ready
78 | [DBG] maxprocs: Leaving GOMAXPROCS=4: CPU quota undefined
79 | [INF] Cluster name is my_cluster
80 | [INF] Listening for route connections on 0.0.0.0:6222
81 | [DBG] Trying to connect to route on nats-main:6222 (172.17.0.3:6222)
82 | [DBG] 172.17.0.3:6222 - rid:4 - Route connect msg sent
83 | [INF] 172.17.0.3:6222 - rid:4 - Route connection created
84 | [DBG] 172.17.0.3:6222 - rid:4 - Registering remote route "NDQAU6HVD44TI2X5R2QRYJEIQR3MMHCFTW2BTSXBILBOZHJ4Z7AR7GGR"
85 | [DBG] 172.17.0.3:6222 - rid:4 - Sent local subscriptions to route
86 | ```
87 |
88 | The server will load the configuration file below. Any command line flags can override these values.
89 |
90 | ## Default Configuration File
91 |
92 | ```bash
93 | # Client port of 4222 on all interfaces
94 | port: 4222
95 |
96 | # HTTP monitoring port
97 | monitor_port: 8222
98 |
99 | # This is for clustering multiple servers together.
100 | cluster {
101 | # It is recommended to set a cluster name
102 | name: "my_cluster"
103 |
104 | # Route connections to be received on any interface on port 6222
105 | port: 6222
106 |
107 | # Routes are protected, so need to use them with --routes flag
108 | # e.g. --routes=nats-route://ruser:T0pS3cr3t@otherdockerhost:6222
109 | authorization {
110 | user: ruser
111 | password: T0pS3cr3t
112 | timeout: 2
113 | }
114 |
115 | # Routes are actively solicited and connected to from this server.
116 | # This Docker image has none by default, but you can pass a
117 | # flag to the nats-server docker image to create one to an existing server.
118 | routes = []
119 | }
120 | ```
121 |
122 | ## Commandline Options
123 |
124 | ```bash
125 | Server Options:
126 | -a, --addr, --net <host> Bind to host address (default: 0.0.0.0)
127 | -p, --port <port> Use port for clients (default: 4222)
128 | -n, --name
129 | --server_name <server_name> Server name (default: auto)
130 | -P, --pid <file> File to store PID
131 | -m, --http_port <port> Use port for http monitoring
132 | -ms,--https_port <port> Use port for https monitoring
133 | -c, --config <file> Configuration file
134 | -t Test configuration and exit
135 | -sl,--signal <signal>[=<pid>] Send signal to nats-server process (stop, quit, reopen, reload)
136 | pid> can be either a PID (e.g. 1) or the path to a PID file (e.g. /var/run/nats-server.pid)
137 | --client_advertise <string> Client URL to advertise to other servers
138 | --ports_file_dir <dir> Creates a ports file in the specified directory (<executable_name>_<pid>.ports).
139 |
140 | Logging Options:
141 | -l, --log <file> File to redirect log output
142 | -T, --logtime Timestamp log entries (default: true)
143 | -s, --syslog Log to syslog or windows event log
144 | -r, --remote_syslog <addr> Syslog server addr (udp://localhost:514)
145 | -D, --debug Enable debugging output
146 | -V, --trace Trace the raw protocol
147 | -VV Verbose trace (traces system account as well)
148 | -DV Debug and trace
149 | -DVV Debug and verbose trace (traces system account as well)
150 | --log_size_limit <limit> Logfile size limit (default: auto)
151 | --max_traced_msg_len <len> Maximum printable length for traced messages (default: unlimited)
152 |
153 | JetStream Options:
154 | -js, --jetstream Enable JetStream functionality
155 | -sd, --store_dir <dir> Set the storage directory
156 |
157 | Authorization Options:
158 | --user <user> User required for connections
159 | --pass <password> Password required for connections
160 | --auth <token> Authorization token required for connections
161 |
162 | TLS Options:
163 | --tls Enable TLS, do not verify clients (default: false)
164 | --tlscert <file> Server certificate file
165 | --tlskey <file> Private key for server certificate
166 | --tlsverify Enable TLS, verify client certificates
167 | --tlscacert <file> Client certificate CA for verification
168 |
169 | Cluster Options:
170 | --routes <rurl-1, rurl-2> Routes to solicit and connect
171 | --cluster <cluster-url> Cluster URL for solicited routes
172 | --cluster_name <string> Cluster Name, if not set one will be dynamically generated
173 | --no_advertise <bool> Do not advertise known cluster information to clients
174 | --cluster_advertise <string> Cluster URL to advertise to other servers
175 | --connect_retries <number> For implicit routes, number of connect retries
176 | --cluster_listen <url> Cluster url from which members can solicit routes
177 |
178 | Profiling Options:
179 | --profile <port> Profiling HTTP port
180 |
181 | Common Options:
182 | -h, --help Show this message
183 | -v, --version Show version
184 | --help_tls TLS help
185 | ```
186 |
```
--------------------------------------------------------------------------------
/rabbitmq/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is RabbitMQ?
2 |
3 | RabbitMQ is open source message broker software (sometimes called message-oriented middleware) that implements the Advanced Message Queuing Protocol (AMQP). The RabbitMQ server is written in the Erlang programming language and is built on the Open Telecom Platform framework for clustering and failover. Client libraries to interface with the broker are available for all major programming languages.
4 |
5 | > [wikipedia.org/wiki/RabbitMQ](https://en.wikipedia.org/wiki/RabbitMQ)
6 |
7 | %%LOGO%%
8 |
9 | # How to use this image
10 |
11 | ## Running the daemon
12 |
13 | One of the important things to note about RabbitMQ is that it stores data based on what it calls the "Node Name", which defaults to the hostname. What this means for usage in Docker is that we should specify `-h`/`--hostname` explicitly for each daemon so that we don't get a random hostname and can keep track of our data:
14 |
15 | ```console
16 | $ docker run -d --hostname my-rabbit --name some-rabbit %%IMAGE%%:3
17 | ```
18 |
19 | This will start a RabbitMQ container listening on the default port of 5672. If you give that a minute, then do `docker logs some-rabbit`, you'll see in the output a block similar to:
20 |
21 | =INFO REPORT==== 6-Jul-2015::20:47:02 ===
22 | node : rabbit@my-rabbit
23 | home dir : /var/lib/rabbitmq
24 | config file(s) : /etc/rabbitmq/rabbitmq.config
25 | cookie hash : UoNOcDhfxW9uoZ92wh6BjA==
26 | log : tty
27 | sasl log : tty
28 | database dir : /var/lib/rabbitmq/mnesia/rabbit@my-rabbit
29 |
30 | Note the `database dir` there, especially that it has my "Node Name" appended to the end for the file storage. This image makes all of `/var/lib/rabbitmq` a volume by default.
31 |
32 | ### Environment Variables
33 |
34 | For a list of environment variables supported by RabbitMQ itself, see the [Environment Variables section of rabbitmq.com/configure](https://www.rabbitmq.com/configure.html#supported-environment-variables)
35 |
36 | **WARNING:** As of RabbitMQ 3.9, all of the docker-specific variables listed below are deprecated and no longer used. Please use a configuration file instead; visit [rabbitmq.com/configure](https://www.rabbitmq.com/configure.html) to learn more about the configuration file. For a starting point, the 3.8 images will print out the config file it generated from supplied environment variables.
37 |
38 | ```bash
39 | # Unavailable in 3.9 and up
40 | RABBITMQ_DEFAULT_PASS_FILE
41 | RABBITMQ_DEFAULT_USER_FILE
42 | RABBITMQ_MANAGEMENT_SSL_CACERTFILE
43 | RABBITMQ_MANAGEMENT_SSL_CERTFILE
44 | RABBITMQ_MANAGEMENT_SSL_DEPTH
45 | RABBITMQ_MANAGEMENT_SSL_FAIL_IF_NO_PEER_CERT
46 | RABBITMQ_MANAGEMENT_SSL_KEYFILE
47 | RABBITMQ_MANAGEMENT_SSL_VERIFY
48 | RABBITMQ_SSL_CACERTFILE
49 | RABBITMQ_SSL_CERTFILE
50 | RABBITMQ_SSL_DEPTH
51 | RABBITMQ_SSL_FAIL_IF_NO_PEER_CERT
52 | RABBITMQ_SSL_KEYFILE
53 | RABBITMQ_SSL_VERIFY
54 | RABBITMQ_VM_MEMORY_HIGH_WATERMARK
55 | ```
56 |
57 | ### Setting default user and password
58 |
59 | If you wish to change the default username and password of `guest` / `guest`, you can do so with the `RABBITMQ_DEFAULT_USER` and `RABBITMQ_DEFAULT_PASS` environmental variables. These variables were available previously in the docker-specific entrypoint shell script but are now available in RabbitMQ directly.
60 |
61 | ```console
62 | $ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_USER=user -e RABBITMQ_DEFAULT_PASS=password %%IMAGE%%:3-management
63 | ```
64 |
65 | You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser and use `user`/`password` to gain access to the management console
66 |
67 | ### Setting default vhost
68 |
69 | If you wish to change the default vhost, you can do so with the `RABBITMQ_DEFAULT_VHOST` environmental variables:
70 |
71 | ```console
72 | $ docker run -d --hostname my-rabbit --name some-rabbit -e RABBITMQ_DEFAULT_VHOST=my_vhost %%IMAGE%%:3-management
73 | ```
74 |
75 | ### Memory Limits
76 |
77 | RabbitMQ contains functionality which explicitly tracks and manages memory usage, and thus needs to be made aware of cgroup-imposed limits (e.g. [`docker run --memory=..`](https://docs.docker.com/config/containers/resource_constraints/#limit-a-containers-access-to-memory)).
78 |
79 | The upstream configuration setting for this is `vm_memory_high_watermark` in `rabbitmq.conf`, and it is described under ["Memory Alarms"](https://www.rabbitmq.com/memory.html) in the documentation. If you set a relative limit via `vm_memory_high_watermark.relative`, then RabbitMQ will calculate its limits based on the host's total memory and not the limit set by the contianer runtime.
80 |
81 | ### Erlang Cookie
82 |
83 | See the [RabbitMQ "Clustering Guide"](https://www.rabbitmq.com/clustering.html#erlang-cookie) for more information about cookies and why they're necessary. For setting a consistent cookie (especially useful for clustering but also for remote/cross-container administration via `rabbitmqctl`), provide a cookie file (default location of `/var/lib/rabbitmq/.erlang.cookie`).
84 |
85 | For example, you can provide the cookie via a file (such as with [Docker Secrets](https://docs.docker.com/engine/swarm/secrets/)):
86 |
87 | ```console
88 | docker service create ... --secret source=my-erlang-cookie,target=/var/lib/rabbitmq/.erlang.cookie ... %%IMAGE%%
89 | ```
90 |
91 | (Note that it will likely also be necessary to specify `uid=XXX,gid=XXX,mode=0600` in order for Erlang in the container to be able to read the cookie file properly. See [Docker's `--secret` documentation for more details](https://docs.docker.com/reference/cli/docker/service/create/#secret).)
92 |
93 | ### Management Plugin
94 |
95 | There is a second set of tags provided with the [management plugin](https://www.rabbitmq.com/management.html) installed and enabled by default, which is available on the standard management port of 15672, with the default username and password of `guest` / `guest`:
96 |
97 | ```console
98 | $ docker run -d --hostname my-rabbit --name some-rabbit %%IMAGE%%:3-management
99 | ```
100 |
101 | You can access it by visiting `http://container-ip:15672` in a browser or, if you need access outside the host, on port 8080:
102 |
103 | ```console
104 | $ docker run -d --hostname my-rabbit --name some-rabbit -p 8080:15672 %%IMAGE%%:3-management
105 | ```
106 |
107 | You can then go to `http://localhost:8080` or `http://host-ip:8080` in a browser.
108 |
109 | ### Enabling Plugins
110 |
111 | Creating a Dockerfile will have them enabled at runtime. To see the full list of plugins present on the image `rabbitmq-plugins list`
112 |
113 | ```Dockerfile
114 | FROM rabbitmq:3.8-management
115 | RUN rabbitmq-plugins enable --offline rabbitmq_mqtt rabbitmq_federation_management rabbitmq_stomp
116 | ```
117 |
118 | You can also mount a file at `/etc/rabbitmq/enabled_plugins` with contents as an erlang list of atoms ending with a period.
119 |
120 | Example `enabled_plugins`
121 |
122 | ```bash
123 | [rabbitmq_federation_management,rabbitmq_management,rabbitmq_mqtt,rabbitmq_stomp].
124 | ```
125 |
126 | ### Additional Configuration
127 |
128 | If configuration is required, it is recommended to supply an appropriate `/etc/rabbitmq/rabbitmq.conf` file (see [the "Configuration File(s)" section of the RabbitMQ documentation for more details](https://www.rabbitmq.com/configure.html#configuration-files)), for example via bind-mount, [Docker Configs](https://docs.docker.com/engine/swarm/configs/), or a short `Dockerfile` with a `COPY` instruction.
129 |
130 | Alternatively, it is possible to use the `RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS` environment variable, whose syntax is described [in section 7.8 ("Configuring an Application") of the Erlang OTP Design Principles User's Guide](http://erlang.org/doc/design_principles/applications.html#id81887) (the appropriate value for `-ApplName` is `-rabbit`), this method requires a slightly different reproduction of its equivalent entry in `rabbitmq.conf`. For example, configuring [`channel_max`](https://www.rabbitmq.com/configure.html#config-items) would look something like `-e RABBITMQ_SERVER_ADDITIONAL_ERL_ARGS="-rabbit channel_max 4007"`. Where the space between the variable `channel_max` and its value `4007` correctly becomes a comma when translated in the environment.
131 |
132 | ### Health/Liveness/Readiness Checking
133 |
134 | See [the "Official Images" FAQ](https://github.com/docker-library/faq#healthcheck) and [the discussion on docker-library/rabbitmq#174 (especially the large comment by Michael Klishin from RabbitMQ upstream)](https://github.com/docker-library/rabbitmq/pull/174#issuecomment-452002696) for a detailed explanation of why this image does not come with a default `HEALTHCHECK` defined, and for suggestions for implementing your own health/liveness/readiness checks.
135 |
```
--------------------------------------------------------------------------------
/mediawiki/logo.svg:
--------------------------------------------------------------------------------
```
1 | <svg xmlns="http://www.w3.org/2000/svg" width="222" height="222" viewBox="0 0 222 222">
2 | <defs>
3 | <linearGradient id="gradient" gradientUnits="userSpaceOnUse" x1="0" x2="222" y1="222" y2="0">
4 | <stop offset="0%" stop-color="#0a00b2"/>
5 | <stop offset="50%" stop-color="#ff0000"/>
6 | <stop offset="100%" stop-color="#fffc00"/>
7 | </linearGradient>
8 | <style>
9 | .petal {
10 | opacity: 0.65;
11 | }
12 | .petals {
13 | fill: url(#gradient);
14 | }
15 | </style>
16 | </defs>
17 | <g id="petals" class="petals">
18 | <path class="petal" d="M80.283,29.02c-0.648,8.246.645,16.05,5.16,23.1a23.04,23.04,0,0,0,13.04,9.63,5.672,5.672,0,0,0,4.719-1.153c6.093-5.8,9.031-12.89,8-21.625-1.829-15.522-11.06-26.108-22.808-36.2C83.826,11.538,81,19.917,80.283,29.02Z"/>
19 | <path class="petal" d="M63.913,37.254c1.081,8.2,3.967,15.565,9.849,21.519a23.04,23.04,0,0,0,14.757,6.709,5.671,5.671,0,0,0,4.376-2.109c4.754-6.944,6.154-14.486,3.331-22.816C91.21,25.753,79.98,17.318,66.39,9.888,63.743,19.417,62.719,28.2,63.913,37.254Z"/>
20 | <path class="petal" d="M49.611,48.711c2.762,7.8,7.117,14.4,14.108,19a23.04,23.04,0,0,0,15.83,3.494,5.671,5.671,0,0,0,3.841-2.973c3.206-7.78,3.008-15.449-1.485-23.01C73.921,31.786,61.183,25.87,46.345,21.429,45.737,31.3,46.561,40.1,49.611,48.711Z"/>
21 | <path class="petal" d="M38,62.891c4.323,7.052,9.955,12.605,17.75,15.653a23.04,23.04,0,0,0,16.21.126A5.671,5.671,0,0,0,75.1,74.963c1.519-8.277-.27-15.737-6.237-22.2-10.6-11.483-24.293-14.621-39.73-15.881C30.595,46.666,33.232,55.107,38,62.891Z"/>
22 | <path class="petal" d="M29.6,79.174c5.694,6,12.359,10.26,20.617,11.62A23.039,23.039,0,0,0,66.1,87.548a5.671,5.671,0,0,0,2.3-4.278c-0.235-8.412-3.536-15.337-10.716-20.416-12.759-9.028-26.8-9.251-42.164-7.274C18.979,64.844,23.313,72.552,29.6,79.174Z"/>
23 | <path class="petal" d="M24.764,96.849c6.817,4.684,14.222,7.467,22.582,7.08a23.036,23.036,0,0,0,14.86-6.478,5.671,5.671,0,0,0,1.36-4.663C61.588,84.609,56.92,78.522,48.84,75.046,34.483,68.868,20.7,71.57,6.086,76.7,11.4,85.041,17.238,91.679,24.764,96.849Z"/>
24 | <path class="petal" d="M23.709,115.144c7.642,3.164,15.463,4.346,23.561,2.23a23.043,23.043,0,0,0,13.189-9.426,5.671,5.671,0,0,0,.361-4.844c-3.636-7.589-9.468-12.573-18.094-14.293-15.328-3.058-28.248,2.45-41.477,10.5C8.178,106.373,15.273,111.651,23.709,115.144Z"/>
25 | <path class="petal" d="M26.481,133.257c8.133,1.506,16.029,1.037,23.509-2.717a23.041,23.041,0,0,0,10.941-11.962,5.67,5.67,0,0,0-.654-4.813c-5.135-6.667-11.876-10.33-20.67-10.219-15.629.2-27.121,8.27-38.387,18.9C9.465,127.907,17.5,131.6,26.481,133.257Z"/>
26 | <path class="petal" d="M32.958,150.4c8.268-.218,15.894-2.319,22.431-7.546A23.037,23.037,0,0,0,63.6,128.878a5.67,5.67,0,0,0-1.64-4.572c-6.409-5.454-13.764-7.635-22.343-5.7C24.374,122.049,14.811,132.336,6,145.075,15.2,148.7,23.83,150.64,32.958,150.4Z"/>
27 | <path class="petal" d="M42.857,165.82c8.042-1.933,15.065-5.573,20.372-12.045A23.039,23.039,0,0,0,68.358,138.4a5.672,5.672,0,0,0-2.555-4.131c-7.4-4-15.05-4.606-23.039-.928-14.2,6.536-21.413,18.586-27.381,32.878C25.137,167.853,33.979,167.953,42.857,165.82Z"/>
28 | <path class="petal" d="M55.747,178.845c7.465-3.562,13.577-8.583,17.422-16.017a23.039,23.039,0,0,0,1.82-16.108,5.671,5.671,0,0,0-3.358-3.51c-8.073-2.375-15.679-1.376-22.728,3.883-12.529,9.344-17.08,22.631-19.947,37.852C38.836,184.518,47.506,182.778,55.747,178.845Z"/>
29 | <path class="petal" d="M71.062,188.906c6.561-5.036,11.5-11.219,13.712-19.289a23.04,23.04,0,0,0-1.569-16.135,5.67,5.67,0,0,0-4.014-2.735c-8.39-.645-15.623,1.914-21.425,8.523-10.312,11.746-12,25.689-11.641,41.173C55.7,197.971,63.82,194.466,71.062,188.906Z"/>
30 | <path class="petal" d="M88.135,195.562c5.371-6.29,8.912-13.363,9.4-21.718a23.039,23.039,0,0,0-4.889-15.456,5.668,5.668,0,0,0-4.5-1.84c-8.341,1.113-14.883,5.119-19.184,12.791-7.644,13.633-6.4,27.622-2.826,42.693C74.994,207.623,82.207,202.507,88.135,195.562Z"/>
31 | <path class="petal" d="M106.219,198.524c3.945-7.27,5.939-14.924,4.68-23.2a23.038,23.038,0,0,0-8-14.1,5.674,5.674,0,0,0-4.78-.866c-7.927,2.823-13.494,8.1-16.106,16.5-4.643,14.924-.516,28.349,6.112,42.348C95.872,213.053,101.864,206.549,106.219,198.524Z"/>
32 | <path class="petal" d="M124.523,197.661c2.348-7.931,2.706-15.833-.245-23.665a23.042,23.042,0,0,0-10.753-12.131,5.671,5.671,0,0,0-4.855.147c-7.167,4.41-11.514,10.731-12.323,19.489-1.439,15.563,5.389,27.837,14.783,40.152C117.424,214.024,121.932,206.416,124.523,197.661Z"/>
33 | <path class="petal" d="M142.248,193.011c0.648-8.246-.645-16.049-5.16-23.1a23.038,23.038,0,0,0-13.04-9.631,5.67,5.67,0,0,0-4.719,1.154c-6.093,5.8-9.031,12.89-8,21.624,1.829,15.523,11.06,26.108,22.808,36.2C138.706,210.493,141.534,202.114,142.248,193.011Z"/>
34 | <path class="petal" d="M158.619,184.778c-1.081-8.2-3.968-15.565-9.849-21.519a23.043,23.043,0,0,0-14.758-6.709,5.669,5.669,0,0,0-4.375,2.109c-4.754,6.944-6.155,14.486-3.331,22.816,5.015,14.8,16.245,23.238,29.835,30.668C158.789,202.614,159.813,193.83,158.619,184.778Z"/>
35 | <path class="petal" d="M172.92,173.321c-2.762-7.8-7.117-14.4-14.108-19a23.04,23.04,0,0,0-15.83-3.494,5.668,5.668,0,0,0-3.841,2.972c-3.207,7.781-3.008,15.45,1.485,23.01,7.984,13.437,20.723,19.353,35.56,23.8C176.794,190.732,175.97,181.927,172.92,173.321Z"/>
36 | <path class="petal" d="M184.527,159.14c-4.323-7.051-9.956-12.6-17.751-15.652a23.039,23.039,0,0,0-16.21-.127,5.672,5.672,0,0,0-3.139,3.707c-1.519,8.277.27,15.737,6.237,22.2,10.6,11.483,24.293,14.622,39.73,15.881C191.936,175.366,189.3,166.925,184.527,159.14Z"/>
37 | <path class="petal" d="M192.931,142.857c-5.694-6-12.358-10.26-20.616-11.62a23.04,23.04,0,0,0-15.883,3.247,5.669,5.669,0,0,0-2.3,4.278c0.236,8.412,3.536,15.337,10.716,20.416,12.759,9.028,26.8,9.251,42.164,7.274C203.553,157.187,199.218,149.479,192.931,142.857Z"/>
38 | <path class="petal" d="M197.767,125.182c-6.817-4.684-14.222-7.467-22.582-7.08a23.039,23.039,0,0,0-14.86,6.478,5.671,5.671,0,0,0-1.361,4.663c1.979,8.179,6.648,14.267,14.727,17.742,14.357,6.178,28.14,3.477,42.755-1.651C211.135,136.99,205.293,130.352,197.767,125.182Z"/>
39 | <path class="petal" d="M198.822,106.888c-7.642-3.164-15.463-4.347-23.561-2.23a23.031,23.031,0,0,0-13.188,9.426,5.668,5.668,0,0,0-.361,4.844c3.636,7.588,9.468,12.573,18.093,14.292,15.328,3.058,28.248-2.45,41.477-10.5C214.354,115.659,207.259,110.38,198.822,106.888Z"/>
40 | <path class="petal" d="M196.05,88.774c-8.132-1.506-16.028-1.036-23.509,2.717A23.04,23.04,0,0,0,161.6,103.453a5.673,5.673,0,0,0,.654,4.814c5.135,6.666,11.876,10.329,20.67,10.218,15.629-.2,27.121-8.27,38.387-18.9C213.066,94.124,205.029,90.436,196.05,88.774Z"/>
41 | <path class="petal" d="M189.573,71.632c-8.268.218-15.894,2.319-22.43,7.546a23.039,23.039,0,0,0-8.215,13.975,5.673,5.673,0,0,0,1.64,4.572c6.409,5.454,13.764,7.635,22.343,5.7C198.157,99.982,207.72,89.7,216.53,76.956,207.33,73.328,198.7,71.391,189.573,71.632Z"/>
42 | <path class="petal" d="M179.674,56.212c-8.042,1.932-15.065,5.573-20.372,12.045a23.036,23.036,0,0,0-5.129,15.378,5.671,5.671,0,0,0,2.555,4.131c7.4,4,15.05,4.606,23.039.928,14.2-6.536,21.413-18.586,27.381-32.878C197.4,54.178,188.552,54.078,179.674,56.212Z"/>
43 | <path class="petal" d="M166.785,43.186c-7.465,3.562-13.577,8.583-17.423,16.017a23.039,23.039,0,0,0-1.82,16.108,5.672,5.672,0,0,0,3.358,3.51c8.073,2.376,15.679,1.376,22.729-3.883,12.528-9.345,17.08-22.632,19.947-37.853C183.7,37.513,175.025,39.254,166.785,43.186Z"/>
44 | <path class="petal" d="M151.469,33.126c-6.561,5.036-11.5,11.218-13.712,19.289a23.046,23.046,0,0,0,1.569,16.135,5.673,5.673,0,0,0,4.015,2.735c8.39,0.645,15.622-1.913,21.424-8.523,10.312-11.745,12-25.688,11.641-41.173C166.831,24.06,158.712,27.565,151.469,33.126Z"/>
45 | <path class="petal" d="M134.4,26.469c-5.371,6.29-8.912,13.363-9.4,21.718a23.041,23.041,0,0,0,4.889,15.456,5.671,5.671,0,0,0,4.5,1.84c8.341-1.113,14.883-5.12,19.185-12.791,7.644-13.633,6.4-27.622,2.826-42.693C147.537,14.408,140.325,19.524,134.4,26.469Z"/>
46 | <path class="petal" d="M116.312,23.507c-3.945,7.27-5.939,14.924-4.68,23.2a23.035,23.035,0,0,0,8,14.1,5.67,5.67,0,0,0,4.779.866c7.928-2.823,13.494-8.1,16.106-16.5,4.643-14.924.516-28.349-6.112-42.348C126.659,8.978,120.667,15.482,116.312,23.507Z"/>
47 | <path class="petal" d="M98.008,24.37C95.66,32.3,95.3,40.2,98.253,48.035a23.041,23.041,0,0,0,10.753,12.131,5.671,5.671,0,0,0,4.855-.147c7.167-4.41,11.515-10.731,12.323-19.489C127.623,24.967,120.8,12.694,111.4.379,105.108,8.007,100.6,15.615,98.008,24.37Z"/>
48 | </g>
49 | </svg>
50 |
```
--------------------------------------------------------------------------------
/rocket.chat/logo.svg:
--------------------------------------------------------------------------------
```
1 | <svg height="182" viewBox="0 0 1000 182" width="1000" xmlns="http://www.w3.org/2000/svg"><g fill="none" fill-rule="evenodd"><g fill="#6b7d99" fill-rule="nonzero" transform="translate(245.154709 29.581775)"><path d="m62.5717573 58.8485839c0 10.1578288-3.791296 16.8288535-11.0711519 20.01071l10.4656798 39.7212001c.4541041 1.822594-.454104 2.727981-2.1238826 2.727981h-15.7753863c-1.5160454 0-2.2728855-.756459-2.5779867-2.122813l-10.1629438-38.5061381h-10.4656799v38.2059181c0 1.517646-.9082081 2.423033-2.4266186 2.423033h-15.77538636c-1.51604538 0-2.42661865-.910115-2.42661865-2.423033v-116.43561996c0-1.51528236.91057327-2.42539734 2.42661865-2.42539734h38.07142346c14.2569758 0 21.8419329 7.58113963 21.8419329 21.83094zm-26.6951702 1.817866c3.942664 0 6.0665466-2.1228136 6.0665466-6.0634933v-28.5019646c0-3.9406797-2.1238826-6.0611294-6.0665466-6.0611294h-15.0161812v40.6289513z"/><path d="m74.6977552 21.8553647c0-14.24980037 7.582592-21.83094 21.841933-21.83094h16.9886958c14.256976 0 21.841933 7.58113963 21.841933 21.83094v77.6221705c0 14.2474368-7.584957 21.8285758-21.841933 21.8285758h-16.9886958c-14.259341 0-21.841933-7.581139-21.841933-21.8285758zm35.0369678 79.8939123c3.942664 0 6.066546-1.9715221 6.066546-6.0634936v-70.0386669c0-3.9406797-2.123882-6.0634934-6.066546-6.0634934h-8.795902c-3.9426636 0-6.0665462 2.1228137-6.0665462 6.0634934v70.0410309c0 4.0896075 2.1238826 6.0611296 6.0665462 6.0611296z"/><path d="m211.352335 38.2279787c0 1.5176462-.910573 2.4253973-2.424253 2.4253973h-15.167549c-1.669779 0-2.426619-.9077511-2.426619-2.4253973v-12.1269867c0-3.9406797-2.121518-6.0611294-6.064182-6.0611294h-7.887693c-4.094032 0-6.066546 2.1204497-6.066546 6.0611294v69.1356438c0 4.0919715 2.121517 6.0587652 6.066546 6.0587652h7.887693c3.942664 0 6.064182-1.9691576 6.064182-6.0587652v-12.1317146c0-1.5176463.75684-2.4253973 2.426619-2.4253973h15.167549c1.520775 0 2.424253.907751 2.424253 2.4253973v16.3749779c0 14.2474369-7.736325 21.8285759-21.839568 21.8285759h-16.988695c-14.256976 0-21.993301-7.581139-21.993301-21.8285759v-77.6245344c0-14.24980037 7.736325-21.83094 21.993301-21.83094h16.988695c14.105608 0 21.839568 7.58113963 21.839568 21.83094z"/><path d="m275.352628 121.308475c-1.823511 0-2.880723-.756459-3.490925-2.271741l-19.107848-45.0282348-5.614808 10.7653601v33.5016877c0 1.971521-1.059576 3.032928-3.03209 3.032928h-14.562077c-1.972515 0-3.034456-1.061407-3.034456-3.032928v-115.21819366c0-1.96915788 1.061941-3.03292864 3.034456-3.03292864h14.562077c1.970149 0 3.03209 1.06140683 3.03209 3.03292864v46.99739226l23.357979-47.75621541c.759205-1.51528235 1.823511-2.27410549 3.490925-2.27410549h15.924389c2.275251 0 3.185824 1.51764629 2.121518 3.638096l-25.782232 52.9095938 27.449645 61.2495565c1.061941 1.971522.151368 3.486804-2.272885 3.486804z"/><path d="m365.293617 17.6121013c0 1.5152823-.607838 2.5766892-2.426619 2.5766892h-37.920055v30.3198306h28.97042c1.520776 0 2.426619.910115 2.426619 2.5766892v15.0086235c0 1.6689381-.910573 2.5790531-2.426619 2.5790531h-28.97042v30.6224141h37.920055c1.823512 0 2.426619.758823 2.426619 2.425398v15.162279c0 1.515282-.607838 2.420669-2.426619 2.420669h-55.816959c-1.367043 0-2.277616-.910115-2.277616-2.420669v-116.43325596c0-1.51528236.910573-2.42539734 2.277616-2.42539734h55.816959c1.823512 0 2.426619.91011498 2.426619 2.42539734z"/><path d="m435.665557.0244247c1.667414 0 2.426619.91011498 2.426619 2.42539734v15.16227926c0 1.5152823-.759205 2.4253973-2.426619 2.4253973h-17.594167v98.8455794c0 1.666574-.75684 2.420669-2.424254 2.420669h-15.775386c-1.520776 0-2.426619-.754095-2.426619-2.420669v-98.8455794h-17.591803c-1.520775 0-2.426618-.910115-2.426618-2.4253973v-15.16227926c0-1.51528236.910573-2.42539734 2.426618-2.42539734z"/><path d="m436.586195 104.356644c0-1.971522 1.061941-3.030564 3.034456-3.030564h13.802872c1.972514 0 3.032091 1.059042 3.032091 3.030564v13.944853c0 1.973886-1.059577 3.032929-3.032091 3.032929h-13.802872c-1.972515 0-3.034456-1.059043-3.034456-3.032929z"/><path d="m532.422837 38.2279787c0 1.5176462-.912938 2.4253973-2.426618 2.4253973h-15.16755c-1.667413 0-2.424253-.9077511-2.424253-2.4253973v-12.1269867c0-3.9406797-2.121518-6.0611294-6.064182-6.0611294h-7.887693c-4.096397 0-6.066546 2.1204497-6.066546 6.0611294v69.1356438c0 4.0919715 2.121517 6.0587652 6.066546 6.0587652h7.887693c3.942664 0 6.064182-1.9691576 6.064182-6.0587652v-12.1317146c0-1.5176463.75684-2.4253973 2.424253-2.4253973h15.16755c1.520775 0 2.426618.907751 2.426618 2.4253973v16.3749779c0 14.2474369-7.736325 21.8285759-21.841933 21.8285759h-16.988695c-14.256976 0-21.993301-7.581139-21.993301-21.8285759v-77.6245344c0-14.24980037 7.736325-21.83094 21.993301-21.83094h16.988695c14.107973 0 21.841933 7.58113963 21.841933 21.83094z"/><path d="m587.627229 2.44982204c0-1.51528236.908208-2.42539734 2.424253-2.42539734h15.621654c1.821146 0 2.575621.91011498 2.575621 2.42539734v116.43325596c0 1.515282-.75684 2.420669-2.575621 2.420669h-15.621654c-1.520775 0-2.424253-.910115-2.424253-2.420669v-48.2100911h-19.415314v48.2124551c0 1.517646-.910574 2.423033-2.426619 2.423033h-15.619288c-1.823512 0-2.580352-.910115-2.580352-2.423033v-116.43561996c0-1.51528236.75684-2.42539734 2.580352-2.42539734h15.619288c1.520776 0 2.426619.91011498 2.426619 2.42539734v48.21009096h19.415314z"/><path d="m677.416849 121.308475c-1.364677 0-2.121517-.756459-2.426618-2.122813l-4.2454-22.1311602h-27.000272l-4.091667 22.1311602c-.305101 1.366354-1.061941 2.122813-2.426619 2.122813h-16.227125c-1.667413 0-2.426618-.910115-1.97488-2.576689l25.179125-116.58454765c.305102-1.51528235 1.21331-2.12281365 2.577987-2.12281365h21.085093c1.364677 0 2.275251.6075313 2.577987 2.12281365l25.179125 116.58454765c.305101 1.666574-.302737 2.576689-2.121518 2.576689zm-20.174519-94.7536075-9.706475 52.9095938h19.415314z"/><path d="m752.339291.0244247c1.667414 0 2.426619.91011498 2.426619 2.42539734v15.16227926c0 1.5152823-.759205 2.4253973-2.426619 2.4253973h-17.591802v98.8455794c0 1.666574-.759206 2.420669-2.426619 2.420669h-15.775386c-1.516046 0-2.424254-.754095-2.424254-2.420669v-98.8455794h-17.591802c-1.518411 0-2.424254-.910115-2.424254-2.4253973v-15.16227926c0-1.51528236.910573-2.42539734 2.424254-2.42539734z"/></g><path d="m180.330283 70.2108641.003609.0056432c-.000601-.0009405-.001203-.0018809-.001805-.0028213-.000601-.0009406-.001203-.0018813-.001804-.0028219zm-118.376131-62.56650083c6.3387401 3.52053473 12.3304614 7.97478583 17.4474489 12.92560413 8.2483703-1.493946 16.7534113-2.2472853 25.3816541-2.2472853 25.829288 0 50.317728 6.7758093 68.949969 19.0753991 9.648766 6.3726136 17.318087 13.9335933 22.79236 22.4749752 6.096443 9.5175397 9.186759 19.7523434 9.186759 30.7192654 0 10.6719522-3.090316 20.9110002-9.186759 30.4264182-5.474273 8.545626-13.143594 16.104484-22.79236 22.477097-18.632241 12.29959-43.118627 19.071155-68.949969 19.071155-8.6282428 0-17.1312305-.753339-25.3816541-2.245163-5.1190409 4.948696-11.1087088 9.405069-17.4474489 12.925604-33.868215 16.961805-61.954152.398952-61.954152.398952s26.1126525-22.169396 21.8662921-41.603427c-11.6836513-11.974911-18.01417792-26.417804-18.01417792-41.7413615 0-15.0349541 6.33258002-29.4778472 18.01417792-41.4548805 4.2456572-19.4286913-21.85764516-41.59396243-21.86628995-41.60130241.00835221-.00492837 28.09097195-16.5624544 61.95414985.39894968z" fill="#db2323" fill-rule="nonzero"/><path d="m41.6969487 124.026456c-11.6079642-9.147807-18.5755614-20.853906-18.5755614-33.6127751 0-29.2774081 36.6879889-53.0114368 81.9449167-53.0114368 45.256928 0 81.944917 23.7340287 81.944917 53.0114368s-36.687989 53.0114371-81.944917 53.0114371c-11.153988 0-21.7874802-1.441656-31.4795213-4.052646l-7.0858271 6.833734c-3.8501553 3.713177-8.3628437 7.073426-13.0666687 9.72133-6.2348704 3.061887-12.3916858 4.732411-18.4830125 5.242134.3436223-.624722.6600359-1.257578.9997137-1.883283 7.099975-13.078552 9.0152952-24.831862 5.7459606-35.259931z" fill="#fff"/><path d="m65.7703624 103.026182c-6.6534511 0-12.047139-5.4803639-12.047139-12.2407349 0-6.7603709 5.3936879-12.2407344 12.047139-12.2407344 6.6534512 0 12.047139 5.4803635 12.047139 12.2407344 0 6.760371-5.3936878 12.2407349-12.047139 12.2407349zm38.7859106 0c-6.6534508 0-12.0471386-5.4803639-12.0471386-12.2407349 0-6.7603709 5.3936878-12.2407344 12.0471386-12.2407344 6.653452 0 12.047139 5.4803635 12.047139 12.2407344 0 6.760371-5.393687 12.2407349-12.047139 12.2407349zm38.785911 0c-6.653451 0-12.047139-5.4803639-12.047139-12.2407349 0-6.7603709 5.393688-12.2407344 12.047139-12.2407344 6.653452 0 12.047139 5.4803635 12.047139 12.2407344 0 6.760371-5.393687 12.2407349-12.047139 12.2407349z" fill="#db2323" fill-rule="nonzero"/></g></svg>
```
--------------------------------------------------------------------------------
/clickhouse/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # ClickHouse Server Docker Image
2 |
3 | ## What is ClickHouse?
4 |
5 | %%LOGO%%
6 |
7 | ClickHouse is an open-source column-oriented DBMS (columnar database management system) for online analytical processing (OLAP) that allows users to generate analytical reports using SQL queries in real-time.
8 |
9 | ClickHouse works 100-1000x faster than traditional database management systems, and processes hundreds of millions to over a billion rows and tens of gigabytes of data per server per second. With a widespread user base around the globe, the technology has received praise for its reliability, ease of use, and fault tolerance.
10 |
11 | For more information and documentation see https://clickhouse.com/.
12 |
13 | ## Versions
14 |
15 | - The `latest` tag points to the latest release of the latest stable branch.
16 | - Branch tags like `22.2` point to the latest release of the corresponding branch.
17 | - Full version tags like `22.2.3` and `22.2.3.5` point to the corresponding release.
18 |
19 | ### Compatibility
20 |
21 | - The amd64 image requires support for [SSE3 instructions](https://en.wikipedia.org/wiki/SSE3). Virtually all x86 CPUs after 2005 support SSE3.
22 | - The arm64 image requires support for the [ARMv8.2-A architecture](https://en.wikipedia.org/wiki/AArch64#ARMv8.2-A) and additionally the Load-Acquire RCpc register. The register is optional in version ARMv8.2-A and mandatory in [ARMv8.3-A](https://en.wikipedia.org/wiki/AArch64#ARMv8.3-A). Supported in Graviton >=2, Azure and GCP instances. Examples for unsupported devices are Raspberry Pi 4 (ARMv8.0-A) and Jetson AGX Xavier/Orin (ARMv8.2-A).
23 | - Since the Clickhouse 24.11 Ubuntu images started using `ubuntu:22.04` as its base image. It requires docker version >= `20.10.10` containing [patch](https://github.com/moby/moby/commit/977283509f75303bc6612665a04abf76ff1d2468). As a workaround you could use `docker run --security-opt seccomp=unconfined` instead, however that has security implications.
24 |
25 | ## How to use this image
26 |
27 | ### start server instance
28 |
29 | ```bash
30 | docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%%
31 | ```
32 |
33 | By default, ClickHouse will be accessible only via the Docker network. See the **networking** section below.
34 |
35 | By default, starting above server instance will be run as the `default` user without password.
36 |
37 | ### connect to it from a native client
38 |
39 | ```bash
40 | docker run -it --rm --network=container:some-clickhouse-server --entrypoint clickhouse-client %%IMAGE%%
41 | # OR
42 | docker exec -it some-clickhouse-server clickhouse-client
43 | ```
44 |
45 | More information about the [ClickHouse client](https://clickhouse.com/docs/interfaces/cli/).
46 |
47 | ### connect to it using curl
48 |
49 | ```bash
50 | echo "SELECT 'Hello, ClickHouse!'" | docker run -i --rm --network=container:some-clickhouse-server buildpack-deps:curl curl 'http://localhost:8123/?query=' -s --data-binary @-
51 | ```
52 |
53 | More information about the [ClickHouse HTTP Interface](https://clickhouse.com/docs/interfaces/http/).
54 |
55 | ### stopping / removing the container
56 |
57 | ```bash
58 | docker stop some-clickhouse-server
59 | docker rm some-clickhouse-server
60 | ```
61 |
62 | ### networking
63 |
64 | > ⚠️ Note: the predefined user `default` does not have the network access unless the password is set, see "How to create default database and user on starting" and "Managing `default` user" below
65 |
66 | You can expose your ClickHouse running in docker by [mapping a particular port](https://docs.docker.com/config/containers/container-networking/) from inside the container using host ports:
67 |
68 | ```bash
69 | docker run -d -p 18123:8123 -p19000:9000 -e CLICKHOUSE_PASSWORD=changeme --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%%
70 | echo 'SELECT version()' | curl 'http://localhost:18123/?password=changeme' --data-binary @-
71 | ```
72 |
73 | `22.6.3.35`
74 |
75 | Or by allowing the container to use [host ports directly](https://docs.docker.com/network/host/) using `--network=host` (also allows achieving better network performance):
76 |
77 | ```bash
78 | docker run -d --network=host --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%%
79 | echo 'SELECT version()' | curl 'http://localhost:8123/' --data-binary @-
80 | ```
81 |
82 | `22.6.3.35`
83 |
84 | > ⚠️ Note: the user `default` in the example above is available only for the localhost requests
85 |
86 | ### Volumes
87 |
88 | Typically you may want to mount the following folders inside your container to achieve persistency:
89 |
90 | - `/var/lib/clickhouse/` - main folder where ClickHouse stores the data
91 | - `/var/log/clickhouse-server/` - logs
92 |
93 | ```bash
94 | docker run -d \
95 | -v "$PWD/ch_data:/var/lib/clickhouse/" \
96 | -v "$PWD/ch_logs:/var/log/clickhouse-server/" \
97 | --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%%
98 | ```
99 |
100 | You may also want to mount:
101 |
102 | - `/etc/clickhouse-server/config.d/*.xml` - files with server configuration adjustments
103 | - `/etc/clickhouse-server/users.d/*.xml` - files with user settings adjustments
104 | - `/docker-entrypoint-initdb.d/` - folder with database initialization scripts (see below).
105 |
106 | ### Linux capabilities
107 |
108 | ClickHouse has some advanced functionality, which requires enabling several [Linux capabilities](https://man7.org/linux/man-pages/man7/capabilities.7.html).
109 |
110 | They are optional and can be enabled using the following [docker command-line arguments](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities):
111 |
112 | ```bash
113 | docker run -d \
114 | --cap-add=SYS_NICE --cap-add=NET_ADMIN --cap-add=IPC_LOCK \
115 | --name some-clickhouse-server --ulimit nofile=262144:262144 %%IMAGE%%
116 | ```
117 |
118 | Read more in [knowledge base](https://clickhouse.com/docs/knowledgebase/configure_cap_ipc_lock_and_cap_sys_nice_in_docker).
119 |
120 | ## Configuration
121 |
122 | The container exposes port 8123 for the [HTTP interface](https://clickhouse.com/docs/interfaces/http_interface/) and port 9000 for the [native client](https://clickhouse.com/docs/interfaces/tcp/).
123 |
124 | ClickHouse configuration is represented with a file "config.xml" ([documentation](https://clickhouse.com/docs/operations/configuration_files/))
125 |
126 | ### Start server instance with custom configuration
127 |
128 | ```bash
129 | docker run -d --name some-clickhouse-server --ulimit nofile=262144:262144 -v /path/to/your/config.xml:/etc/clickhouse-server/config.xml %%IMAGE%%
130 | ```
131 |
132 | ### Start server as custom user
133 |
134 | ```bash
135 | # $PWD/data/clickhouse should exist and be owned by current user
136 | docker run --rm --user "${UID}:${GID}" --name some-clickhouse-server --ulimit nofile=262144:262144 -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" %%IMAGE%%
137 | ```
138 |
139 | When you use the image with local directories mounted, you probably want to specify the user to maintain the proper file ownership. Use the `--user` argument and mount `/var/lib/clickhouse` and `/var/log/clickhouse-server` inside the container. Otherwise, the image will complain and not start.
140 |
141 | ### Start server from root (useful in case of enabled user namespace)
142 |
143 | ```bash
144 | docker run --rm -e CLICKHOUSE_RUN_AS_ROOT=1 --name clickhouse-server-userns -v "$PWD/logs/clickhouse:/var/log/clickhouse-server" -v "$PWD/data/clickhouse:/var/lib/clickhouse" %%IMAGE%%
145 | ```
146 |
147 | ### How to create default database and user on starting
148 |
149 | Sometimes you may want to create a user (user named `default` is used by default) and database on a container start. You can do it using environment variables `CLICKHOUSE_DB`, `CLICKHOUSE_USER`, `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` and `CLICKHOUSE_PASSWORD`:
150 |
151 | ```bash
152 | docker run --rm -e CLICKHOUSE_DB=my_database -e CLICKHOUSE_USER=username -e CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT=1 -e CLICKHOUSE_PASSWORD=password -p 9000:9000/tcp %%IMAGE%%
153 | ```
154 |
155 | #### Managing `default` user
156 |
157 | The user `default` has disabled network access by default in the case none of `CLICKHOUSE_USER`, `CLICKHOUSE_PASSWORD`, or `CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT` are set.
158 |
159 | There's a way to make `default` user insecurely available by setting environment variable `CLICKHOUSE_SKIP_USER_SETUP` to 1:
160 |
161 | ```bash
162 | docker run --rm -e CLICKHOUSE_SKIP_USER_SETUP=1 -p 9000:9000/tcp %%IMAGE%%
163 | ```
164 |
165 | ## How to extend this image
166 |
167 | To perform additional initialization in an image derived from this one, add one or more `*.sql`, `*.sql.gz`, or `*.sh` scripts under `/docker-entrypoint-initdb.d`. After the entrypoint calls `initdb`, it will run any `*.sql` files, run any executable `*.sh` scripts, and source any non-executable `*.sh` scripts found in that directory to do further initialization before starting the service.
168 | Also, you can provide environment variables `CLICKHOUSE_USER` & `CLICKHOUSE_PASSWORD` that will be used for clickhouse-client during initialization.
169 |
170 | For example, to add an additional user and database, add the following to `/docker-entrypoint-initdb.d/init-db.sh`:
171 |
172 | ```bash
173 | #!/bin/bash
174 | set -e
175 |
176 | clickhouse client -n <<-EOSQL
177 | CREATE DATABASE docker;
178 | CREATE TABLE docker.docker (x Int32) ENGINE = Log;
179 | EOSQL
180 | ```
181 |
```
--------------------------------------------------------------------------------
/redmine/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is Redmine?
2 |
3 | Redmine is a free and open source, web-based project management and issue tracking tool. It allows users to manage multiple projects and associated subprojects. It features per project wikis and forums, time tracking, and flexible role based access control. It includes a calendar and Gantt charts to aid visual representation of projects and their deadlines. Redmine integrates with various version control systems and includes a repository browser and diff viewer.
4 |
5 | > [wikipedia.org/wiki/Redmine](https://en.wikipedia.org/wiki/Redmine)
6 |
7 | %%LOGO%%
8 |
9 | # How to use this image
10 |
11 | ## Run Redmine with SQLite3
12 |
13 | This is the simplest setup; just run redmine.
14 |
15 | ```console
16 | $ docker run -d --name some-redmine %%IMAGE%%
17 | ```
18 |
19 | > not for multi-user production use ([redmine wiki](http://www.redmine.org/projects/redmine/wiki/RedmineInstall#Supported-database-back-ends))
20 |
21 | ## Run Redmine with a Database Container
22 |
23 | Running Redmine with a database server is the recommended way.
24 |
25 | 1. start a database container
26 |
27 | - PostgreSQL
28 |
29 | ```console
30 | $ docker run -d --name some-postgres --network some-network -e POSTGRES_PASSWORD=secret -e POSTGRES_USER=redmine postgres
31 | ```
32 |
33 | - MySQL (replace `-e REDMINE_DB_POSTGRES=some-postgres` with `-e REDMINE_DB_MYSQL=some-mysql` when running Redmine)
34 |
35 | ```console
36 | $ docker run -d --name some-mysql --network some-network -e MYSQL_USER=redmine -e MYSQL_PASSWORD=secret -e MYSQL_DATABASE=redmine -e MYSQL_RANDOM_ROOT_PASSWORD=1 mysql:5.7
37 | ```
38 |
39 | 2. start redmine
40 |
41 | ```console
42 | $ docker run -d --name some-%%REPO%% --network some-network -e REDMINE_DB_POSTGRES=some-postgres -e REDMINE_DB_USERNAME=redmine -e REDMINE_DB_PASSWORD=secret %%IMAGE%%
43 | ```
44 |
45 | ## %%COMPOSE%%
46 |
47 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
48 |
49 | ## Accessing the Application
50 |
51 | Currently, the default user and password from upstream is admin/admin ([logging into the application](https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-10-Logging-into-the-application)).
52 |
53 | ## Where to Store Data
54 |
55 | Important note: There are several ways to store data used by applications that run in Docker containers. We encourage users of the `%%REPO%%` images to familiarize themselves with the options available, including:
56 |
57 | - Let Docker manage the storage of your files [by writing the files to disk on the host system using its own internal volume management](https://docs.docker.com/storage/volumes/). This is the default and is easy and fairly transparent to the user. The downside is that the files may be hard to locate for tools and applications that run directly on the host system, i.e. outside containers.
58 | - Create a data directory on the host system (outside the container) and [mount this to a directory visible from inside the container](https://docs.docker.com/storage/bind-mounts/). This places the database files in a known location on the host system, and makes it easy for tools and applications on the host system to access the files. The downside is that the user needs to make sure that the directory exists, and that e.g. directory permissions and other security mechanisms on the host system are set up correctly.
59 |
60 | The Docker documentation is a good starting point for understanding the different storage options and variations, and there are multiple blogs and forum postings that discuss and give advice in this area. We will simply show the basic procedure here for the latter option above:
61 |
62 | 1. Create a data directory on a suitable volume on your host system, e.g. `/my/own/datadir`.
63 | 2. Start your `%%REPO%%` container like this:
64 |
65 | ```console
66 | $ docker run -d --name some-%%REPO%% -v /my/own/datadir:/usr/src/redmine/files --link some-postgres:postgres %%IMAGE%%
67 | ```
68 |
69 | The `-v /my/own/datadir:/usr/src/redmine/files` part of the command mounts the `/my/own/datadir` directory from the underlying host system as `/usr/src/redmine/files` inside the container, where Redmine will store uploaded files.
70 |
71 | ## Port Mapping
72 |
73 | If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used. Just add `-p 3000:3000` to the `docker run` arguments and then access either `http://localhost:3000` or `http://host-ip:3000` in a browser.
74 |
75 | ## Environment Variables
76 |
77 | When you start the `%%REPO%%` image, you can adjust the configuration of the instance by passing one or more environment variables on the `docker run` command line.
78 |
79 | ### `REDMINE_DB_MYSQL`, `REDMINE_DB_POSTGRES`, or `REDMINE_DB_SQLSERVER`
80 |
81 | These variables allow you to set the hostname or IP address of the MySQL, PostgreSQL, or Microsoft SQL host, respectively. These values are mutually exclusive so it is undefined behavior if any two are set. If no variable is set, the image will fall back to using SQLite.
82 |
83 | ### `REDMINE_DB_PORT`
84 |
85 | This variable allows you to specify a custom database connection port. If unspecified, it will default to the regular connection ports: 3306 for MySQL, 5432 for PostgreSQL, and empty string for SQLite.
86 |
87 | ### `REDMINE_DB_USERNAME`
88 |
89 | This variable sets the user that Redmine and any rake tasks use to connect to the specified database. If unspecified, it will default to `root` for MySQL, `postgres` for PostgreSQL, or `redmine` for SQLite.
90 |
91 | ### `REDMINE_DB_PASSWORD`
92 |
93 | This variable sets the password that the specified user will use in connecting to the database. There is no default value.
94 |
95 | ### `REDMINE_DB_DATABASE`
96 |
97 | This variable sets the database that Redmine will use in the specified database server. If not specified, it will default to `redmine` for MySQL, the value of `REDMINE_DB_USERNAME` for PostgreSQL, or `sqlite/redmine.db` for SQLite.
98 |
99 | ### `REDMINE_DB_ENCODING`
100 |
101 | This variable sets the character encoding to use when connecting to the database server. If unspecified, it will use the default for the `mysql2` library ([`UTF-8`](https://github.com/brianmario/mysql2/tree/18673e8d8663a56213a980212e1092c2220faa92#mysql2---a-modern-simple-and-very-fast-mysql-library-for-ruby---binding-to-libmysql)) for MySQL, `utf8` for PostgreSQL, or `utf8` for SQLite.
102 |
103 | ### `REDMINE_NO_DB_MIGRATE`
104 |
105 | This variable allows you to control if `rake db:migrate` is run on container start. Just set the variable to a non-empty string like `1` or `true` and the migrate script will not automatically run on container start.
106 |
107 | `db:migrate` will also not run if you start your image with something other than the default `CMD`, like `bash`. See the current `docker-entrypoint.sh` in your image for details.
108 |
109 | ### `REDMINE_PLUGINS_MIGRATE`
110 |
111 | This variable allows you to control if `rake redmine:plugins:migrate` is run on container start. Just set the variable to a non-empty string like `1` or `true` and the migrate script will be automatically run on every container start. It will be run after `db:migrate`.
112 |
113 | `redmine:plugins:migrate` will not run if you start your image with something other than the default `CMD`, like `bash`. See the current `docker-entrypoint.sh` in your image for details.
114 |
115 | ### `SECRET_KEY_BASE`
116 |
117 | This is a general Rails environment variable. This variable is useful when using loadbalanced replicas to maintain session connections. It is "used by Rails to encode cookies storing session data thus preventing their tampering. Generating a new secret token invalidates all existing sessions after restart" ([session store](https://www.redmine.org/projects/redmine/wiki/RedmineInstall#Step-5-Session-store-secret-generation)). If you do not set this variable, then the `secret_key_base` value will be generated using `rake generate_secret_token`.
118 |
119 | For backwards compatibility, the deprecated, Docker-specific `REDMINE_SECRET_KEY_BASE` variable will automatically fill the `SECRET_KEY_BASE` environment variable. Users should migrate their deployments to use the `SECRET_KEY_BASE` variable directly.
120 |
121 | ## Running as an arbitrary user
122 |
123 | You can use the [`--user`](https://docs.docker.com/engine/reference/run/#user) flag to `docker run` and give it a `username:group` or `UID:GID`, the user doesn't need to exist in the container.
124 |
125 | ## Docker Secrets
126 |
127 | As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/<secret_name>` files. For example:
128 |
129 | ```console
130 | $ docker run -d --name some-%%REPO%% -e REDMINE_DB_MYSQL_FILE=/run/secrets/mysql-host -e REDMINE_DB_PASSWORD_FILE=/run/secrets/mysql-root %%IMAGE%%:tag
131 | ```
132 |
133 | Currently, this is only supported for `REDMINE_DB_MYSQL`, `REDMINE_DB_POSTGRES`, `REDMINE_DB_PORT`, `REDMINE_DB_USERNAME`, `REDMINE_DB_PASSWORD`, `REDMINE_DB_DATABASE`, `REDMINE_DB_ENCODING`, and `REDMINE_SECRET_KEY_BASE`.
134 |
```
--------------------------------------------------------------------------------
/wordpress/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is WordPress?
2 |
3 | WordPress is a free and open source blogging tool and a content management system (CMS) based on PHP and MySQL, which runs on a web hosting service. Features include a plugin architecture and a template system. WordPress is used by more than 22.0% of the top 10 million websites as of August 2013. WordPress is the most popular blogging system in use on the Web, at more than 60 million websites. The most popular languages used are English, Spanish and Bahasa Indonesia.
4 |
5 | > [wikipedia.org/wiki/WordPress](https://en.wikipedia.org/wiki/WordPress)
6 |
7 | %%LOGO%%
8 |
9 | # How to use this image
10 |
11 | ```console
12 | $ docker run --name some-%%REPO%% --network some-network -d %%IMAGE%%
13 | ```
14 |
15 | The following environment variables are also honored for configuring your WordPress instance (by [a custom `wp-config.php` implementation](https://github.com/docker-library/wordpress/blob/master/wp-config-docker.php)):
16 |
17 | - `-e WORDPRESS_DB_HOST=...`
18 | - `-e WORDPRESS_DB_USER=...`
19 | - `-e WORDPRESS_DB_PASSWORD=...`
20 | - `-e WORDPRESS_DB_NAME=...`
21 | - `-e WORDPRESS_TABLE_PREFIX=...`
22 | - `-e WORDPRESS_AUTH_KEY=...`, `-e WORDPRESS_SECURE_AUTH_KEY=...`, `-e WORDPRESS_LOGGED_IN_KEY=...`, `-e WORDPRESS_NONCE_KEY=...`, `-e WORDPRESS_AUTH_SALT=...`, `-e WORDPRESS_SECURE_AUTH_SALT=...`, `-e WORDPRESS_LOGGED_IN_SALT=...`, `-e WORDPRESS_NONCE_SALT=...` (default to unique random SHA1s, but only if other environment variable configuration is provided)
23 | - `-e WORDPRESS_DEBUG=1` (defaults to disabled, non-empty value will enable `WP_DEBUG` in `wp-config.php`)
24 | - `-e WORDPRESS_CONFIG_EXTRA=...` (defaults to nothing, the value will be evaluated by the `eval()` function in `wp-config.php`. This variable is especially useful for applying extra configuration values this image does not provide by default such as `WP_ALLOW_MULTISITE`; see [docker-library/wordpress#142](https://github.com/docker-library/wordpress/pull/142) for more details)
25 |
26 | The `WORDPRESS_DB_NAME` needs to already exist on the given MySQL server; it will not be created by the `%%REPO%%` container.
27 |
28 | If you'd like to be able to access the instance from the host without the container's IP, standard port mappings can be used:
29 |
30 | ```console
31 | $ docker run --name some-%%REPO%% -p 8080:80 -d %%IMAGE%%
32 | ```
33 |
34 | Then, access it via `http://localhost:8080` or `http://host-ip:8080` in a browser.
35 |
36 | When running WordPress with TLS behind a reverse proxy such as NGINX which is responsible for doing TLS termination, be sure to set `X-Forwarded-Proto` appropriately (see ["Using a Reverse Proxy" in "Administration Over SSL" in upstream's documentation](https://wordpress.org/support/article/administration-over-ssl/#using-a-reverse-proxy)). No additional environment variables or configuration should be necessary (this image automatically adds the noted `HTTP_X_FORWARDED_PROTO` code to `wp-config.php` if *any* of the above-noted environment variables are specified).
37 |
38 | If your database requires SSL, [WordPress ticket #28625](https://core.trac.wordpress.org/ticket/28625) has the relevant details regarding support for that with WordPress upstream. As a workaround, [the "Secure DB Connection" plugin](https://wordpress.org/plugins/secure-db-connection/) can be extracted into the WordPress directory and the appropriate values described in the configuration of that plugin added in `wp-config.php`.
39 |
40 | ## Docker Secrets
41 |
42 | As an alternative to passing sensitive information via environment variables, `_FILE` may be appended to the previously listed environment variables, causing the initialization script to load the values for those variables from files present in the container. In particular, this can be used to load passwords from Docker secrets stored in `/run/secrets/<secret_name>` files. For example:
43 |
44 | ```console
45 | $ docker run --name some-%%REPO%% -e WORDPRESS_DB_PASSWORD_FILE=/run/secrets/mysql-root ... -d %%IMAGE%%:tag
46 | ```
47 |
48 | Currently, this is supported for `WORDPRESS_DB_HOST`, `WORDPRESS_DB_USER`, `WORDPRESS_DB_PASSWORD`, `WORDPRESS_DB_NAME`, `WORDPRESS_AUTH_KEY`, `WORDPRESS_SECURE_AUTH_KEY`, `WORDPRESS_LOGGED_IN_KEY`, `WORDPRESS_NONCE_KEY`, `WORDPRESS_AUTH_SALT`, `WORDPRESS_SECURE_AUTH_SALT`, `WORDPRESS_LOGGED_IN_SALT`, `WORDPRESS_NONCE_SALT`, `WORDPRESS_TABLE_PREFIX`, and `WORDPRESS_DEBUG`.
49 |
50 | ## %%COMPOSE%%
51 |
52 | Run `docker compose up`, wait for it to initialize completely, and visit `http://localhost:8080` or `http://host-ip:8080` (as appropriate).
53 |
54 | ## Adding additional libraries / extensions
55 |
56 | This image does not provide any additional PHP extensions or other libraries, even if they are required by popular plugins (e.g. [it cannot send e-mails](https://github.com/docker-library/wordpress/issues/30)). There are an infinite number of possible plugins, and they potentially require any extension PHP supports. Including every PHP extension that exists would dramatically increase the image size.
57 |
58 | If you need additional PHP extensions, you'll need to create your own image `FROM` this one. The [documentation of the `php` image](https://github.com/docker-library/docs/blob/master/php/README.md#how-to-install-more-php-extensions) explains how to compile additional extensions. Additionally, [an older `Dockerfile` for `%%IMAGE%%`](https://github.com/docker-library/wordpress/blob/618490d4bdff6c5774b84b717979bfe3d6ba8ad1/apache/Dockerfile#L5-L9) has a simplified example of doing this and [a newer version of that same `Dockerfile`](https://github.com/docker-library/wordpress/blob/5bbbfa8909232af10ea3fea8b80302a6041a2d04/latest/php7.4/apache/Dockerfile#L18-L62) has a much more thorough example.
59 |
60 | ## Include pre-installed themes / plugins
61 |
62 | Mount the volume containing your themes or plugins to the proper directory; and then apply them through the "wp-admin" UI. Ensure read/write/execute permissions are in place for the user:
63 |
64 | - Themes go in a subdirectory in `/var/www/html/wp-content/themes/`
65 | - Plugins go in a subdirectory in `/var/www/html/wp-content/plugins/`
66 |
67 | If you wish to provide additional content in an image for deploying in multiple installations, place it in the same directories under `/usr/src/wordpress/` instead (which gets copied to `/var/www/html/` on the container's initial startup).
68 |
69 | ## Static image / updates-via-redeploy
70 |
71 | The default configuration for this image matches the official WordPress defaults in which automatic updates are enabled (so the initial install comes from the image, but after that it becomes self-managing within the `/var/www/html/` data volume).
72 |
73 | If you wish to have a more static deployment (similar to other containerized applications) and deploy new containers to update WordPress + themes/plugins, then you'll want to use something like the following (and run the resulting image read-only):
74 |
75 | ```dockerfile
76 | FROM %%IMAGE%%:apache
77 | WORKDIR /usr/src/wordpress
78 | RUN set -eux; \
79 | find /etc/apache2 -name '*.conf' -type f -exec sed -ri -e "s!/var/www/html!$PWD!g" -e "s!Directory /var/www/!Directory $PWD!g" '{}' +; \
80 | cp -s wp-config-docker.php wp-config.php
81 | COPY custom-theme/ ./wp-content/themes/custom-theme/
82 | COPY custom-plugin/ ./wp-content/plugins/custom-plugin/
83 | ```
84 |
85 | For FPM-based images, remove the `find` instruction and adjust the `SCRIPT_FILENAME` paths in your reverse proxy from `/var/www/html` to `/usr/src/wordpress`.
86 |
87 | Run the result read-only, providing writeable storage for `/tmp`, `/run`, and (optionally) `wp-content/uploads`:
88 |
89 | ```console
90 | $ docker run ... \
91 | --read-only \
92 | --tmpfs /tmp \
93 | --tmpfs /run \
94 | --mount type=...,src=...,dst=/usr/src/wordpress/wp-content/uploads \
95 | ... \
96 | --env WORDPRESS_DB_HOST=... \
97 | --env WORDPRESS_AUTH_KEY=... \
98 | --env ... \
99 | custom-wordpress:tag
100 | ```
101 |
102 | **Note:** be sure to rebuild and redeploy regularly to ensure you get all the latest WordPress security updates.
103 |
104 | ## Running as an arbitrary user
105 |
106 | See [the "Running as an arbitrary user" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#running-as-an-arbitrary-user).
107 |
108 | When running WP-CLI via the `cli` variants of this image, it is important to note that they're based on Alpine, and have a default `USER` of Alpine's `www-data`, whose UID is `82` (compared to the Debian-based WordPress variants whose default effective UID is `33`), so when running `%%IMAGE%%:cli` against an existing Debian-based WordPress install, something like `--user 33:33` is likely going to be necessary (possibly also something like `-e HOME=/tmp` depending on the `wp` command invoked and whether it tries to use `~/.wp-cli`). See [docker-library/wordpress#256](https://github.com/docker-library/wordpress/issues/256) for more discussion around this.
109 |
110 | ## Configuring PHP directives
111 |
112 | See [the "Configuration" section of the `php` image documentation](https://github.com/docker-library/docs/blob/master/php/README.md#configuration).
113 |
114 | For example, to adjust common `php.ini` flags like `upload_max_filesize`, you could create a `custom.ini` with the desired parameters and place it in the `$PHP_INI_DIR/conf.d/` directory:
115 |
116 | ```dockerfile
117 | FROM %%IMAGE%%:tag
118 | COPY custom.ini $PHP_INI_DIR/conf.d/
119 | ```
120 |
```
--------------------------------------------------------------------------------
/gazebo/content.md:
--------------------------------------------------------------------------------
```markdown
1 | # What is [Gazebo](http://www.gazebosim.org/)?
2 |
3 | Robot simulation is an essential tool in every roboticist's toolbox. A well-designed simulator makes it possible to rapidly test algorithms, design robots, and perform regression testing using realistic scenarios. Gazebo offers the ability to accurately and efficiently simulate populations of robots in complex indoor and outdoor environments. At your fingertips is a robust physics engine, high-quality graphics, and convenient programmatic interfaces. Best of all, Gazebo is free with a vibrant community.
4 |
5 | > [wikipedia.org/wiki/Gazebo_simulator](https://en.wikipedia.org/wiki/Gazebo_simulator)
6 |
7 | [%%LOGO%%](http://www.gazebosim.org/)
8 |
9 | # How to use this image
10 |
11 | ## Create a `Dockerfile` in your Gazebo project
12 |
13 | ```dockerfile
14 | FROM %%IMAGE%%:gzserver8
15 | # place here your application's setup specifics
16 | CMD [ "gzserver", "my-gazebo-app-args" ]
17 | ```
18 |
19 | You can then build and run the Docker image:
20 |
21 | ```console
22 | $ docker build -t my-gazebo-app .
23 | $ docker run -it -v="/tmp/.gazebo/:/root/.gazebo/" --name my-running-app my-gazebo-app
24 | ```
25 |
26 | ## Deployment use cases
27 |
28 | This dockerized image of Gazebo is intended to provide a simplified and consistent platform to build and deploy cloud based robotic simulations. Built from the [official Ubuntu image](https://hub.docker.com/_/ubuntu/) and Gazebo's official Debian packages, it includes recent supported releases for quick access and download. This provides roboticists in research and industry with an easy way to develop continuous integration and testing on training for autonomous actions and task planning, control dynamics and regions of stability, kinematic modeling and prototype characterization, localization and mapping algorithms, swarm behavior and networking, as well as general system integration and validation.
29 |
30 | Conducting such complex simulations with high validity remains computationally demanding, and oftentimes outside the capacity of a modest local workstation. With the added complexity of the algorithms being benchmarked, we can soon exceed the capacity of even the most formidable servers. This is why a more distributed approach remains attractive for those who begin to encounter limitations of a centralized computing host. However, the added complication of building and maintaining a distributed testbed over a set of clusters has for a while required more time and effort than many smaller labs and businesses would have deemed appropriate to implement.
31 |
32 | With the advancements and standardization of software containers, roboticists are primed to acquire a host of improved developer tooling for building and shipping software. To help alleviate the growing pains and technical challenges of adopting new practices, we have focused on providing an official resource for using Gazebo with these new technologies.
33 |
34 | ## Deployment suggestions
35 |
36 | The `gzserver` tags are designed to have a small footprint and simple configuration, thus only include required Gazebo dependencies. The standard messaging port `11345` is exposed to allow for client connections and messages API.
37 |
38 | ### Volumes
39 |
40 | Gazebo uses the `~/.gazebo/` directory for storing logs, models and scene info. If you wish to persist these files beyond the lifecycle of the containers which produced them, the `~/.gazebo/` folder can be mounted to an external volume on the host, or a derived image can specify volumes to be managed by the Docker engine. By default, the container runs as the `root` user, so `/root/.gazebo/` would be the full path to these files.
41 |
42 | For example, if one wishes to use their own `.gazebo` folder that already resides in their local home directory, with a username of `ubuntu`, we can simple launch the container with an additional volume argument:
43 |
44 | ```console
45 | $ docker run -v "/home/ubuntu/.gazebo/:/root/.gazebo/" %%IMAGE%%
46 | ```
47 |
48 | One thing to be careful about is that gzserver logs to files named `/root/.gazebo/server-<port>/*.log`, where `<port>` is the port number that server is listening on (11345 by default). If you run and mount multiple containers using the same default port and same host side directory, then they will collide and attempt writing to the same file. If you want to run multiple gzservers on the same docker host, then a bit more clever volume mounting of `~/.gazebo/` subfolders would be required.
49 |
50 | ### Devices
51 |
52 | As of Gazebo version 5.0, physics simulation under a headless instances of gzserver works fine. However some application may require image rendering camera views and ray traces for other sensor modalities. For Gazebo, this requires a running X server for rendering and capturing scenes. In addition, graphical hardware acceleration is also needed for reasonable realtime framerates. To this extent, mounting additional graphic devices into the container and linking to a running X server is required. In the interest of maintaining a general purpose and minimalistic image which is not tightly coupled to host system software and hardware, we do not include tags here with these additional requirements and instructions. You can however use this repo to build and customize your own images to fit your software/hardware configuration. The OSRF's Docker Hub organization profile contains a Gazebo repo at [osrf/gazebo](https://hub.docker.com/u/osrf/gazebo/) which is based on this repo but includes additional tags for these advanced use cases.
53 |
54 | ### Development
55 |
56 | If you not only wish to run Gazebo, but develop for it too, i.e. compile custom plug-ins or build upon messaging interfaces for ROS, this will require the development package included in the `libgazebo` tag. If you simply need to run Gazebo as a headless server, then the `gzserver` tag consist of a smaller image size.
57 |
58 | ## Deployment example
59 |
60 | In this short example, we'll spin up a new container running gazebo server, connect to it using a local gazebo client, then spawn a double inverted pendulum and record the simulation for later playback.
61 |
62 | > First launch a gazebo server with a mounted volume for logging and name the container gazebo:
63 |
64 | ```console
65 | $ docker run -d -v="/tmp/.gazebo/:/root/.gazebo/" --name=gazebo %%IMAGE%%
66 | ```
67 |
68 | > Now open a new bash session in the container using the same entrypoint to configure the environment. Then download the double_pendulum model and load it into the simulation.
69 |
70 | ```console
71 | $ docker exec -it %%IMAGE%% bash
72 | $ apt-get update && apt-get install -y curl
73 | $ curl -o double_pendulum.sdf http://models.gazebosim.org/double_pendulum_with_base/model-1_4.sdf
74 | $ gz model --model-name double_pendulum --spawn-file double_pendulum.sdf
75 | ```
76 |
77 | > To start recording the running simulation, simply use [`gz log`](http://www.gazebosim.org/tutorials?tut=log_filtering&cat=tools_utilities) to do so.
78 |
79 | ```console
80 | $ gz log --record 1
81 | ```
82 |
83 | > After a few seconds, go ahead and stop recording by disabling the same flag.
84 |
85 | ```console
86 | $ gz log --record 0
87 | ```
88 |
89 | > To introspect our logged recording, we can navigate to log directory and use `gz log` to open and examine the motion and joint state of the pendulum. This will allow you to step through the poses of the pendulum links.
90 |
91 | ```console
92 | $ cd ~/.gazebo/log/*/gzserver/
93 | $ gz log --step --hz 10 --filter *.pose/*.pose --file state.log
94 | ```
95 |
96 | > If you have an equivalent release of Gazebo installed locally, you can connect to the gzserver inside the container using gzclient GUI by setting the address of the master URI to the containers public address.
97 |
98 | ```console
99 | $ export GAZEBO_MASTER_IP=$(docker inspect --format '{{ .NetworkSettings.IPAddress }}' gazebo)
100 | $ export GAZEBO_MASTER_URI=$GAZEBO_MASTER_IP:11345
101 | $ gzclient --verbose
102 | ```
103 |
104 | > In the rendered OpenGL view with gzclient you should see the moving double pendulum created prior still oscillating. From here you can control or monitor state of the simulation using the graphical interface, add more pendulums, reset the world, make more logs, etc. To quit the simulation, close the gzclient window and stop the container.
105 |
106 | ```console
107 | $ docker stop gazebo
108 | $ docker rm gazebo
109 | ```
110 |
111 | > Even though our old gazebo container has been removed, we can still see that our record log has been preserved in the host volume directory.
112 |
113 | ```console
114 | $ cd /tmp/.gazebo/log/
115 | $ ls
116 | ```
117 |
118 | > Again, if you have an equivalent release of Gazebo installed on your host system, you can play back the simulation with gazebo by using the recorded log file.
119 |
120 | ```console
121 | $ export GAZEBO_MASTER_IP=127.0.0.1
122 | $ export GAZEBO_MASTER_URI=$GAZEBO_MASTER_IP:11345
123 | $ cd /tmp/.gazebo/log/*/gzserver/
124 | $ gazebo --verbose --play state.log
125 | ```
126 |
127 | # More Resources
128 |
129 | [Gazebosim.org](http://www.gazebosim.org/): Main Gazebo website
130 |
131 | [Answers](http://answers.gazebosim.org/): Find answers and ask questions
132 |
133 | [Wiki](https://bitbucket.org/osrf/gazebo/wiki): General information and tutorials
134 |
135 | [Mailing List](https://groups.google.com/a/osrfoundation.org/d/forum/gazebo): Join for news and announcements
136 |
137 | [Simulation Models](https://bitbucket.org/osrf/gazebo_models/src): Robots, objects, and other simulation models
138 |
139 | [Blog](http://wiki.gazebosim.org/blog.html): Stay up-to-date
140 |
141 | [OSRF](http://www.osrfoundation.org/): Open Source Robotics Foundation
142 |
```