dendrite/build/docker
Neil Alexander 805a74892e
DNS caching (#1728)
* Allow configuring DNS cache

* Update sample configs

* Fix build errors

* Fix time resolution

* Default 5m

* In seconds

* Use WithDNScache

* Correct field name

* Update go.mod/go.sum to matrix-org/gomatrixserverlib#251
2021-01-22 14:16:59 +00:00
..
config DNS caching (#1728) 2021-01-22 14:16:59 +00:00
postgres Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
DendriteJS.Dockerfile
docker-compose.deps.yml Update docker-compose.deps.yml to use postgres:11 (#1677) 2021-01-04 10:36:36 +00:00
docker-compose.monolith.yml Update Docker sample configs 2020-10-27 13:58:58 +00:00
docker-compose.polylith.yml Multi-personality polylith binary (#1552) 2020-10-20 16:11:24 +01:00
Dockerfile.monolith Update GHA Docker Hub builds 2021-01-18 12:24:23 +00:00
Dockerfile.polylith Update GHA Docker Hub builds 2021-01-18 12:24:23 +00:00
images-build.sh Update GHA Docker Hub builds 2021-01-18 12:24:23 +00: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 Fixed links to Docker Hub (#1686) 2021-01-07 13:02:15 +00:00

Docker images

These are Docker images for Dendrite!

They can be found on Docker Hub:

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.