aboutsummaryrefslogtreecommitdiff
path: root/build/docker/README.md
diff options
context:
space:
mode:
Diffstat (limited to 'build/docker/README.md')
-rw-r--r--build/docker/README.md100
1 files changed, 100 insertions, 0 deletions
diff --git a/build/docker/README.md b/build/docker/README.md
new file mode 100644
index 00000000..83d0b6a8
--- /dev/null
+++ b/build/docker/README.md
@@ -0,0 +1,100 @@
+Development with Docker
+---
+
+With `docker` and `docker-compose` you can easily spin up a development environment
+and start working on dendrite.
+
+### Requirements
+
+- docker
+- docker-compose (version 3+)
+
+### Configuration
+
+Create a directory named `cfg` in the root of the project. Copy the
+`dendrite-docker.yaml` file into that directory and rename it to `dendrite.yaml`.
+It already contains the defaults used in `docker-compose` for networking so you will
+only have to change things like the `server_name` or to toggle `naffka`.
+
+You can run the following `docker-compose` commands either from the top directory
+specifying the `docker-compose` file
+```
+docker-compose -f docker/docker-compose.yml <cmd>
+```
+or from within the `docker` directory
+
+```
+docker-compose <cmd>
+```
+
+### Starting a monolith server
+
+For the monolith server you would need a postgres instance
+
+```
+docker-compose up postgres
+```
+
+and the dendrite component from `bin/dendrite-monolith-server`
+
+```
+docker-compose up monolith
+```
+
+The monolith will be listening on `http://localhost:8008`.
+
+You would also have to make the following adjustments to `dendrite.yaml`.
+ - Set `use_naffka: true`
+ - Uncomment the `database/naffka` postgres url.
+
+### Starting a multiprocess server
+
+The multiprocess server requires kafka, zookeeper and postgres
+
+```
+docker-compose up kafka zookeeper postgres
+```
+
+and the following dendrite components
+
+```
+docker-compose up client_api media_api sync_api room_server public_rooms_api edu_server
+docker-compose up client_api_proxy
+```
+
+The `client-api-proxy` will be listening on `http://localhost:8008`.
+
+You would also have to make the following adjustments to `dendrite.yaml`.
+ - Set `use_naffka: false`
+ - Comment out the `database/naffka` postgres url.
+
+### Starting federation
+
+```
+docker-compose up federation_api federation_sender
+docker-compose up federation_api_proxy
+```
+
+You can point other Matrix servers to `http://localhost:8448`.
+
+### Creating a new component
+
+You can create a new dendrite component by adding an entry to the `docker-compose.yml`
+file and creating a startup script for the component in `docker/services`.
+For more information refer to the official docker-compose [documentation](https://docs.docker.com/compose/).
+
+```yaml
+ new_component:
+ container_name: dendrite_room_server
+ hostname: new_component
+ # Start up script.
+ entrypoint: ["bash", "./docker/services/new-component.sh"]
+ # Use the common Dockerfile for all the dendrite components.
+ build: ./
+ volumes:
+ - ..:/build
+ depends_on:
+ - another_component
+ networks:
+ - internal
+```