dendrite/build/docker/hub
Neil Alexander 7d6461dd3c
Server key component (#1050)
* Server key API (works for monolith but not for polylith yet)

* Re-enable caching on server key API component

* Groundwork for HTTP APIs for server key API

* Hopefully implement HTTP for server key API

* Simplify public key request marshalling from map keys

* Update gomatrixserverlib

* go mod tidy

* Common -> internal

* remove keyring.go

* Update Docker Hub for server key API

* YAML is funny about indentation

* Wire in new server key API into hybrid monolith mode

* Create maps

* Route server key API endpoints on internal API mux

* Fix server key API URLs

* Add fetcher behaviour into server key API implementation

* Return error if we failed to fetch some keys

* Return results anyway

* Move things about a bit

* Remove unused code

* Fix comments, don't use federation sender URL in polylith mode

* Add server_key_api to sample config

* Review comments

* HTTP API to cache keys that have been requested

* Overwrite server_key_api listen in monolith hybrid mode
2020-05-27 10:19:24 +01:00
..
config Server key component (#1050) 2020-05-27 10:19:24 +01:00
docker-compose.deps.yml Fix #897 and shuffle directory around (#1054) 2020-05-21 14:40:13 +01:00
docker-compose.monolith.yml Fix #897 and shuffle directory around (#1054) 2020-05-21 14:40:13 +01:00
docker-compose.polylith.yml Server key component (#1050) 2020-05-27 10:19:24 +01:00
Dockerfile Fix #897 and shuffle directory around (#1054) 2020-05-21 14:40:13 +01:00
Dockerfile.component Fix #897 and shuffle directory around (#1054) 2020-05-21 14:40:13 +01:00
images-build.sh Server key component (#1050) 2020-05-27 10:19:24 +01:00
images-push.sh Fix #897 and shuffle directory around (#1054) 2020-05-21 14:40:13 +01:00
README.md Fix #897 and shuffle directory around (#1054) 2020-05-21 14:40:13 +01:00

Docker Hub images

These are Docker Hub-friendly images for Dendrite.

Dockerfiles

The Dockerfile builds the base image which contains all of the Dendrite components. The Dockerfile.* files take components from the base image and produce smaller component-specific images, which are substantially smaller and do not contain the Go toolchain etc.

Compose files

There are three sample docker-compose files:

  • docker-compose.deps.yml which runs the Postgres and Kafka prerequisites
  • docker-compose.monolith.yml which runs a monolith Dendrite deployment
  • docker-compose.polylith.yml which runs a polylith Dendrite deployment

Configuration

The docker-compose files refer to the /etc/dendrite volume as where the runtime config should come from. The mounted folder must contain:

  • dendrite.yaml configuration file (based on the sample dendrite-config.yaml in the docker/hub/config folder in the Dendrite repository
  • matrix_key.pem server key, as generated using cmd/generate-keys
  • server.crt certificate file
  • server.key private key file for the above certificate

To generate keys:

go run github.com/matrix-org/dendrite/cmd/generate-keys \
  --private-key=matrix_key.pem \
  --tls-cert=server.crt \
  --tls-key=server.key

Starting Dendrite

Once in place, start the dependencies:

docker-compose -f docker-compose.deps.yml up

Wait a few seconds for Kafka and Postgres to finish starting up, and then start a monolith:

docker-compose -f docker-compose.monolith.yml up

... or start the polylith components:

docker-compose -f docker-compose.polylith.yml up

Building the images

The docker/hub/images-build.sh script will build all of the component images.

The docker/hub/images-push.sh script will push them to Docker Hub (subject to permissions).

If you wish to build and push your own images, rename matrixdotorg/dendrite to the name of another Docker Hub repository in images-build.sh and images-push.sh.