2020-06-05 13:00:30 -05:00
# Docker images
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
These are Docker images for Dendrite!
2018-01-02 12:26:37 -06:00
2020-11-16 05:27:59 -06:00
They can be found on Docker Hub:
2021-01-07 07:02:15 -06:00
- [matrixdotorg/dendrite-monolith ](https://hub.docker.com/r/matrixdotorg/dendrite-monolith ) for monolith deployments
- [matrixdotorg/dendrite-polylith ](https://hub.docker.com/r/matrixdotorg/dendrite-polylith ) for polylith deployments
2020-11-16 05:27:59 -06:00
2020-06-05 13:00:30 -05:00
## Dockerfiles
2018-01-02 12:26:37 -06:00
2022-10-04 04:41:06 -05:00
The `Dockerfile` is a multistage file which can build all three Dendrite
images depending on the supplied `--target` . From the root of the Dendrite
repository, run:
```
docker build . --target monolith -t matrixdotorg/dendrite-monolith
docker build . --target polylith -t matrixdotorg/dendrite-monolith
docker build . --target demo-pinecone -t matrixdotorg/dendrite-monolith
```
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
## Compose files
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
There are three sample `docker-compose` files:
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
- `docker-compose.monolith.yml` which runs a monolith Dendrite deployment
- `docker-compose.polylith.yml` which runs a polylith Dendrite deployment
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
## Configuration
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
The `docker-compose` files refer to the `/etc/dendrite` volume as where the
runtime config should come from. The mounted folder must contain:
2018-01-02 12:26:37 -06:00
2022-05-12 06:05:55 -05:00
- `dendrite.yaml` configuration file (based on one of the sample config files)
2020-06-05 13:00:30 -05:00
- `matrix_key.pem` server key, as generated using `cmd/generate-keys`
- `server.crt` certificate file
- `server.key` private key file for the above certificate
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
To generate keys:
2018-01-02 12:26:37 -06:00
```
2021-06-14 08:08:59 -05:00
docker run --rm --entrypoint="" \
-v $(pwd):/mnt \
matrixdotorg/dendrite-monolith:latest \
/usr/bin/generate-keys \
-private-key /mnt/matrix_key.pem \
-tls-cert /mnt/server.crt \
-tls-key /mnt/server.key
2018-01-02 12:26:37 -06:00
```
2021-06-14 08:08:59 -05:00
The key files will now exist in your current working directory, and can be mounted into place.
2020-10-13 03:50:11 -05:00
## Starting Dendrite as a monolith deployment
2018-01-02 12:26:37 -06:00
2022-05-12 06:05:55 -05:00
Create your config based on the [`dendrite-sample.monolith.yaml` ](https://github.com/matrix-org/dendrite/blob/main/dendrite-sample.monolith.yaml ) sample configuration file.
2020-10-13 03:50:11 -05:00
2022-01-05 11:44:49 -06:00
Then start the deployment:
2018-01-02 12:26:37 -06:00
```
2020-06-05 13:00:30 -05:00
docker-compose -f docker-compose.monolith.yml up
2018-01-02 12:26:37 -06:00
```
2020-10-13 03:50:11 -05:00
## Starting Dendrite as a polylith deployment
2022-05-12 06:05:55 -05:00
Create your config based on the [`dendrite-sample.polylith.yaml` ](https://github.com/matrix-org/dendrite/blob/main/dendrite-sample.polylith.yaml ) sample configuration file.
2020-10-13 03:50:11 -05:00
2022-01-05 11:44:49 -06:00
Then start the deployment:
2018-01-02 12:26:37 -06:00
```
2020-06-05 13:00:30 -05:00
docker-compose -f docker-compose.polylith.yml up
2018-01-02 12:26:37 -06:00
```
2020-06-05 13:00:30 -05:00
## Building the images
2018-01-02 12:26:37 -06:00
2021-07-12 04:13:17 -05:00
The `build/docker/images-build.sh` script will build the base image, followed by
2020-06-05 13:00:30 -05:00
all of the component images.
2018-01-02 12:26:37 -06:00
2021-07-12 04:13:17 -05:00
The `build/docker/images-push.sh` script will push them to Docker Hub (subject
2020-06-05 13:00:30 -05:00
to permissions).
2018-01-02 12:26:37 -06:00
2020-06-05 13:00:30 -05:00
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` .