dendrite/build/docker
Rhea Danzey aa8d10a62d
Pinecone test image - Explicitly select Alpine golang image (#3426)
I've noticed when trying to build the Dendrite Pinecone test image, the
build fails due to `apk` not being available:

<img width="837" alt="image"
src="https://github.com/user-attachments/assets/8b483010-a037-4499-b925-a806ae8a82cb">

Checking out the [Docker Hub](https://hub.docker.com/_/golang/) repo for
the `golang` image it looks like this can resovle to `1.22-bookworm`, so
this should ensure we get an Alpine-based image for this build.

### Pull Request Checklist

<!-- Please read
https://matrix-org.github.io/dendrite/development/contributing before
submitting your pull request -->

* [x] I have added Go unit tests or [Complement integration
tests](https://github.com/matrix-org/complement) for this PR _or_ I have
justified why this PR doesn't need tests
* [x] Pull request includes a [sign off below using a legally
identifiable
name](https://matrix-org.github.io/dendrite/development/contributing#sign-off)
_or_ I have already signed off privately

Signed-off-by: `Rhea Danzey <rdanzey@element.io>`

Signed-off-by: Rhea Danzey <rdanzey@element.io>
2024-09-18 09:16:33 +02:00
..
DendriteJS.Dockerfile
docker-compose.yml Docs restructure (#2953) 2023-05-30 10:02:53 +02:00
Dockerfile.demo-pinecone Pinecone test image - Explicitly select Alpine golang image (#3426) 2024-09-18 09:16:33 +02:00
Dockerfile.demo-yggdrasil Bump go to 1.21 (#3360) 2024-08-02 08:35:38 +02:00
images-build.sh Remove polylith/API mode (#2967) 2023-02-14 12:47:47 +01:00
images-pull.sh Remove polylith/API mode (#2967) 2023-02-14 12:47:47 +01:00
images-push.sh Remove polylith/API mode (#2967) 2023-02-14 12:47:47 +01:00
README.md Docs restructure (#2953) 2023-05-30 10:02:53 +02:00

Docker images

These are Docker images for Dendrite!

They can be found on Docker Hub:

Dockerfile

The Dockerfile is a multistage file which can build Dendrite. From the root of the Dendrite repository, run:

docker build . -t matrixdotorg/dendrite-monolith

Compose file

There is one sample docker-compose files:

  • docker-compose.yml which runs a Dendrite deployment with Postgres

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 one of the sample config files)
  • 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:

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

The key files will now exist in your current working directory, and can be mounted into place.

Starting Dendrite

Create your config based on the dendrite-sample.yaml sample configuration file.

Then start the deployment:

docker-compose -f docker-compose.yml up

Building the images

The build/docker/images-build.sh script will build the base image, followed by all of the component images.

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