dendrite/docker
Kegsay b6ea1bc67a
Support sqlite in addition to postgres (#869)
* Move current work into single branch

* Initial massaging of clientapi etc (not working yet)

* Interfaces for accounts/devices databases

* Duplicate postgres package for sqlite3 (no changes made to it yet)

* Some keydb, accountdb, devicedb, common partition fixes, some more syncapi tweaking

* Fix accounts DB, device DB

* Update naffka dependency for SQLite

* Naffka SQLite

* Update naffka to latest master

* SQLite support for federationsender

* Mostly not-bad support for SQLite in syncapi (although there are problems where lots of events get classed incorrectly as backward extremities, probably because of IN/ANY clauses that are badly supported)

* Update Dockerfile -> Go 1.13.7, add build-base (as gcc and friends are needed for SQLite)

* Implement GET endpoints for account_data in clientapi

* Nuke filtering for now...

* Revert "Implement GET endpoints for account_data in clientapi"

This reverts commit 4d80dff4583d278620d9b3ed437e9fcd8d4674ee.

* Implement GET endpoints for account_data in clientapi (#861)

* Implement GET endpoints for account_data in clientapi

* Fix accountDB parameter

* Remove fmt.Println

* Fix insertAccountData SQLite query

* Fix accountDB storage interfaces

* Add empty push rules into account data on account creation (#862)

* Put SaveAccountData into the right function this time

* Not sure if roomserver is better or worse now

* sqlite work

* Allow empty last sent ID for the first event

* sqlite: room creation works

* Support sending messages

* Nuke fmt.println

* Move QueryVariadic etc into common, other device fixes

* Fix some linter issues

* Fix bugs

* Fix some linting errors

* Fix errcheck lint errors

* Make naffka use postgres as fallback, fix couple of compile errors

* What on earth happened to the /rooms/{roomID}/send/{eventType} routing

Co-authored-by: Neil Alexander <neilalexander@users.noreply.github.com>
2020-02-13 17:27:33 +00:00
..
postgres make docker work on current codebase (#584) 2018-11-06 18:14:39 +00:00
services docker: Passthrough parameters to dendrite-monolith-server 2019-12-20 14:46:59 +00:00
build.sh Update Docker files and remove references to gb (#703) 2019-05-22 10:44:25 +01:00
dendrite-docker.yml Add typingserver service to docker-compose (#692) 2019-08-09 11:30:38 +01:00
docker-compose.yml Support sqlite in addition to postgres (#869) 2020-02-13 17:27:33 +00:00
Dockerfile Support sqlite in addition to postgres (#869) 2020-02-13 17:27:33 +00:00
README.md Add typingserver service to docker-compose (#692) 2019-08-09 11:30:38 +01:00

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

Copy the dendrite-docker.yaml file to the root of the project 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 typing_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.

  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