Squashed commit of the following:
commit 4a61aa711473deece2adf415cfd65501dbca63b2
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Mon Jan 18 12:19:24 2021 +0000
Set back to matrixdotorg on published releases
commit 6d1ac53f2c0c9b30e1e70c0bb1559e1b8ec874a2
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Mon Jan 18 11:55:28 2021 +0000
Rename
commit 258999f7fb7b655b3a02a06a7ea05e66fb7740fb
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Mon Jan 18 11:52:26 2021 +0000
Refactor multi-stage builds
commit c7ab8e476939899571e7b5668860dec372b9b60f
Author: Neil Alexander <neilalexander@users.noreply.github.com>
Date: Mon Jan 18 11:13:19 2021 +0000
Let's try this again
|
||
|---|---|---|
| .. | ||
| config | ||
| postgres | ||
| DendriteJS.Dockerfile | ||
| docker-compose.deps.yml | ||
| docker-compose.monolith.yml | ||
| docker-compose.polylith.yml | ||
| Dockerfile.monolith | ||
| Dockerfile.polylith | ||
| images-build.sh | ||
| images-pull.sh | ||
| images-push.sh | ||
| README.md | ||
Docker images
These are Docker images for Dendrite!
They can be found on Docker Hub:
- matrixdotorg/dendrite-monolith for monolith deployments
- matrixdotorg/dendrite-polylith for polylith deployments
Dockerfiles
The Dockerfile builds the base image which contains all of the Dendrite
components. The Dockerfile.component file takes the given component, as
specified with --buildarg component= 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.ymlwhich runs the Postgres and Kafka prerequisitesdocker-compose.monolith.ymlwhich runs a monolith Dendrite deploymentdocker-compose.polylith.ymlwhich 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.yamlconfiguration file (based on the sampledendrite-config.yamlin thedocker/configfolder in the Dendrite repositorymatrix_key.pemserver key, as generated usingcmd/generate-keysserver.crtcertificate fileserver.keyprivate 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 as a monolith deployment
Create your config based on the dendrite.yaml configuration file in the docker/config
folder in the Dendrite repository. Additionally,
make the following changes to the configuration:
- Enable Naffka:
use_naffka: true
Once in place, start the PostgreSQL dependency:
docker-compose -f docker-compose.deps.yml up postgres
Wait a few seconds for PostgreSQL to finish starting up, and then start a monolith:
docker-compose -f docker-compose.monolith.yml up
Starting Dendrite as a polylith deployment
Create your config based on the dendrite.yaml configuration file in the docker/config
folder in the Dendrite repository.
Once in place, start all the dependencies:
docker-compose -f docker-compose.deps.yml up
Wait a few seconds for PostgreSQL and Kafka to finish starting up, and then start a polylith:
docker-compose -f docker-compose.polylith.yml up
Building the images
The docker/images-build.sh script will build the base image, followed by
all of the component images.
The docker/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.