dendrite/build/docker
Neil Alexander 92982a402f
Update Docker (#1542)
* Separate Docker images, rather than tags

* Allow specifying tag to build/push/pull

* Include goose in Docker builds
2020-10-20 11:34:22 +01:00
..
config Update Docker samples 2020-10-13 09:50:11 +01:00
postgres Update Docker samples 2020-10-13 09:50:11 +01:00
DendriteJS.Dockerfile Implement ExtraPublicRoomsProvider for p2p demos (#1180) 2020-07-03 12:59:00 +01:00
Dockerfile Nuke old Docker stuff (#1104) 2020-06-05 19:00:30 +01:00
Dockerfile.component Update Docker (#1542) 2020-10-20 11:34:22 +01:00
README.md Update Docker samples 2020-10-13 09:50:11 +01:00
docker-compose.deps.yml Start Kafka connections for each component that needs them (#1527) 2020-10-15 13:27:13 +01:00
docker-compose.monolith.yml Update Docker (#1542) 2020-10-20 11:34:22 +01:00
docker-compose.polylith.yml Update Docker (#1542) 2020-10-20 11:34:22 +01:00
images-build.sh Update Docker (#1542) 2020-10-20 11:34:22 +01:00
images-pull.sh Update Docker (#1542) 2020-10-20 11:34:22 +01:00
images-push.sh Update Docker (#1542) 2020-10-20 11:34:22 +01:00

README.md

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.