0
0
Fork 0
mirror of https://github.com/matrix-org/dendrite synced 2024-12-19 00:03:59 +01:00
dendrite/build/docker
Neil Alexander 39c7a8915c
Multi-personality polylith binary (#1552)
* Initial work oon multipersonality binary

* Remove old binaries

* Monolith and polylith binaries

* Better logging

* dendrite-poly-multi

* Fix path

* Copyright notices etc

* Tweaks

* Update Docker, INSTALL.md

* Take first argument if flags package doesn't find any args

* Postgres 9.6 or later, fix some more Docker stuff

* Don't create unnecessary e2ekey DB

* Run go mod tidy
2020-10-20 16:11:24 +01:00
..
config Update Docker samples 2020-10-13 09:50:11 +01:00
postgres Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
DendriteJS.Dockerfile Implement ExtraPublicRoomsProvider for p2p demos (#1180) 2020-07-03 12:59:00 +01:00
docker-compose.deps.yml Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
docker-compose.monolith.yml Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
docker-compose.polylith.yml Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
Dockerfile Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
Dockerfile.monolith Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
Dockerfile.polylith Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
images-build.sh Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
images-pull.sh Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
images-push.sh Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
README.md Update Docker samples 2020-10-13 09:50:11 +01:00

Docker images

These are Docker images for Dendrite!

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.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/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 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.