diff --git a/build/docker/Dockerfile b/build/docker/Dockerfile index d8e07681f..5cab0530f 100644 --- a/build/docker/Dockerfile +++ b/build/docker/Dockerfile @@ -1,4 +1,4 @@ -FROM docker.io/golang:1.13.7-alpine3.11 AS builder +FROM docker.io/golang:1.15-alpine AS builder RUN apk --update --no-cache add bash build-base diff --git a/build/docker/Dockerfile.component b/build/docker/Dockerfile.monolith similarity index 52% rename from build/docker/Dockerfile.component rename to build/docker/Dockerfile.monolith index 1acf510fb..c2b87839f 100644 --- a/build/docker/Dockerfile.component +++ b/build/docker/Dockerfile.monolith @@ -3,12 +3,12 @@ FROM matrixdotorg/dendrite:latest AS base FROM alpine:latest ARG component=monolith -ENV entrypoint=${component} -COPY --from=base /build/bin/${component} /usr/bin +COPY --from=base /build/bin/dendrite-monolith-server /usr/bin COPY --from=base /build/bin/goose /usr/bin +COPY --from=base /build/bin/create-account /usr/bin VOLUME /etc/dendrite WORKDIR /etc/dendrite -ENTRYPOINT /usr/bin/${entrypoint} $@ \ No newline at end of file +ENTRYPOINT /usr/bin/dendrite-monolith-server $@ \ No newline at end of file diff --git a/build/docker/Dockerfile.polylith b/build/docker/Dockerfile.polylith new file mode 100644 index 000000000..d6676e0da --- /dev/null +++ b/build/docker/Dockerfile.polylith @@ -0,0 +1,14 @@ +FROM matrixdotorg/dendrite:latest AS base + +FROM alpine:latest + +ARG component + +COPY --from=base /build/bin/dendrite-polylith-multi /usr/bin +COPY --from=base /build/bin/goose /usr/bin +COPY --from=base /build/bin/create-account /usr/bin + +VOLUME /etc/dendrite +WORKDIR /etc/dendrite + +ENTRYPOINT /usr/bin/dendrite-polylith-multi $@ \ No newline at end of file diff --git a/build/docker/docker-compose.monolith.yml b/build/docker/docker-compose.monolith.yml index 7d63e1c65..8fb798343 100644 --- a/build/docker/docker-compose.monolith.yml +++ b/build/docker/docker-compose.monolith.yml @@ -4,7 +4,6 @@ services: hostname: monolith image: matrixdotorg/dendrite-monolith:latest command: [ - "--config=dendrite.yaml", "--tls-cert=server.crt", "--tls-key=server.key" ] diff --git a/build/docker/docker-compose.polylith.yml b/build/docker/docker-compose.polylith.yml index e8da9c24a..677dbbfe3 100644 --- a/build/docker/docker-compose.polylith.yml +++ b/build/docker/docker-compose.polylith.yml @@ -2,10 +2,8 @@ version: "3.4" services: client_api: hostname: client_api - image: matrixdotorg/dendrite-clientapi:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: clientapi volumes: - ./config:/etc/dendrite - room_server @@ -14,10 +12,8 @@ services: media_api: hostname: media_api - image: matrixdotorg/dendrite-mediaapi:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: mediaapi volumes: - ./config:/etc/dendrite networks: @@ -25,10 +21,8 @@ services: sync_api: hostname: sync_api - image: matrixdotorg/dendrite-syncapi:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: syncapi volumes: - ./config:/etc/dendrite networks: @@ -36,10 +30,8 @@ services: room_server: hostname: room_server - image: matrixdotorg/dendrite-roomserver:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: roomserver volumes: - ./config:/etc/dendrite networks: @@ -47,10 +39,8 @@ services: edu_server: hostname: edu_server - image: matrixdotorg/dendrite-eduserver:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: eduserver volumes: - ./config:/etc/dendrite networks: @@ -58,10 +48,8 @@ services: federation_api: hostname: federation_api - image: matrixdotorg/dendrite-federationapi:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: federationapi volumes: - ./config:/etc/dendrite networks: @@ -69,10 +57,8 @@ services: federation_sender: hostname: federation_sender - image: matrixdotorg/dendrite-federationsender:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: federationsender volumes: - ./config:/etc/dendrite networks: @@ -80,10 +66,8 @@ services: key_server: hostname: key_server - image: matrixdotorg/dendrite-keyserver:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: keyserver volumes: - ./config:/etc/dendrite networks: @@ -91,10 +75,8 @@ services: signing_key_server: hostname: signing_key_server - image: matrixdotorg/dendrite-signingkeyserver:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: signingkeyserver volumes: - ./config:/etc/dendrite networks: @@ -102,10 +84,8 @@ services: user_api: hostname: user_api - image: matrixdotorg/dendrite-userapi:latest - command: [ - "--config=dendrite.yaml" - ] + image: matrixdotorg/dendrite-polylith:latest + command: userapi volumes: - ./config:/etc/dendrite networks: @@ -113,8 +93,9 @@ services: appservice_api: hostname: appservice_api - image: matrixdotorg/dendrite-appservice:latest + image: matrixdotorg/dendrite-polylith:latest command: [ + "appservice", "--config=dendrite.yaml" ] volumes: diff --git a/build/docker/images-build.sh b/build/docker/images-build.sh index daad63be0..f80f6bed2 100755 --- a/build/docker/images-build.sh +++ b/build/docker/images-build.sh @@ -8,16 +8,5 @@ echo "Building tag '${TAG}'" docker build -f build/docker/Dockerfile -t matrixdotorg/dendrite:${TAG} . -docker build -t matrixdotorg/dendrite-monolith:${TAG} --build-arg component=dendrite-monolith-server -f build/docker/Dockerfile.component . - -docker build -t matrixdotorg/dendrite-appservice:${TAG} --build-arg component=dendrite-appservice-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-clientapi:${TAG} --build-arg component=dendrite-client-api-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-eduserver:${TAG} --build-arg component=dendrite-edu-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-federationapi:${TAG} --build-arg component=dendrite-federation-api-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-federationsender:${TAG} --build-arg component=dendrite-federation-sender-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-keyserver:${TAG} --build-arg component=dendrite-key-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-mediaapi:${TAG} --build-arg component=dendrite-media-api-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-roomserver:${TAG} --build-arg component=dendrite-room-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-syncapi:${TAG} --build-arg component=dendrite-sync-api-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-signingkeyserver:${TAG} --build-arg component=dendrite-signing-key-server -f build/docker/Dockerfile.component . -docker build -t matrixdotorg/dendrite-userapi:${TAG} --build-arg component=dendrite-user-api-server -f build/docker/Dockerfile.component . +docker build -t matrixdotorg/dendrite-monolith:${TAG} -f build/docker/Dockerfile.monolith . +docker build -t matrixdotorg/dendrite-polylith:${TAG} -f build/docker/Dockerfile.polylith . \ No newline at end of file diff --git a/build/docker/images-pull.sh b/build/docker/images-pull.sh index e3284a2a6..496e80067 100755 --- a/build/docker/images-pull.sh +++ b/build/docker/images-pull.sh @@ -5,15 +5,4 @@ TAG=${1:-latest} echo "Pulling tag '${TAG}'" docker pull matrixdotorg/dendrite-monolith:${TAG} - -docker pull matrixdotorg/dendrite-appservice:${TAG} -docker pull matrixdotorg/dendrite-clientapi:${TAG} -docker pull matrixdotorg/dendrite-eduserver:${TAG} -docker pull matrixdotorg/dendrite-federationapi:${TAG} -docker pull matrixdotorg/dendrite-federationsender:${TAG} -docker pull matrixdotorg/dendrite-keyserver:${TAG} -docker pull matrixdotorg/dendrite-mediaapi:${TAG} -docker pull matrixdotorg/dendrite-roomserver:${TAG} -docker pull matrixdotorg/dendrite-syncapi:${TAG} -docker pull matrixdotorg/dendrite-signingkeyserver:${TAG} -docker pull matrixdotorg/dendrite-userapi:${TAG} +docker pull matrixdotorg/dendrite-polylith:${TAG} \ No newline at end of file diff --git a/build/docker/images-push.sh b/build/docker/images-push.sh index e4eb773ac..fd9b999ea 100755 --- a/build/docker/images-push.sh +++ b/build/docker/images-push.sh @@ -5,15 +5,4 @@ TAG=${1:-latest} echo "Pushing tag '${TAG}'" docker push matrixdotorg/dendrite-monolith:${TAG} - -docker push matrixdotorg/dendrite-appservice:${TAG} -docker push matrixdotorg/dendrite-clientapi:${TAG} -docker push matrixdotorg/dendrite-eduserver:${TAG} -docker push matrixdotorg/dendrite-federationapi:${TAG} -docker push matrixdotorg/dendrite-federationsender:${TAG} -docker push matrixdotorg/dendrite-keyserver:${TAG} -docker push matrixdotorg/dendrite-mediaapi:${TAG} -docker push matrixdotorg/dendrite-roomserver:${TAG} -docker push matrixdotorg/dendrite-syncapi:${TAG} -docker push matrixdotorg/dendrite-signingkeyserver:${TAG} -docker push matrixdotorg/dendrite-userapi:${TAG} +docker push matrixdotorg/dendrite-polylith:${TAG} \ No newline at end of file diff --git a/docs/INSTALL.md b/docs/INSTALL.md index d246e9221..e25ced1c6 100644 --- a/docs/INSTALL.md +++ b/docs/INSTALL.md @@ -189,7 +189,7 @@ This is what implements CS API endpoints. Clients talk to this via the proxy in order to send messages, create and join rooms, etc. ```bash -./bin/dendrite-client-api-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml clientapi ``` ### Sync server @@ -198,7 +198,7 @@ This is what implements `/sync` requests. Clients talk to this via the proxy in order to receive messages. ```bash -./bin/dendrite-sync-api-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml syncapi ``` ### Media server @@ -207,7 +207,7 @@ This implements `/media` requests. Clients talk to this via the proxy in order to upload and retrieve media. ```bash -./bin/dendrite-media-api-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml mediaapi ``` ### Federation API server @@ -217,7 +217,7 @@ order to send transactions. This is only required if you want to support federation. ```bash -./bin/dendrite-federation-api-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml federationapi ``` ### Internal components @@ -230,7 +230,7 @@ contacted by other components. This includes the following components. This is what implements the room DAG. Clients do not talk to this. ```bash -./bin/dendrite-room-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml roomserver ``` #### Federation sender @@ -239,7 +239,7 @@ This sends events from our users to other servers. This is only required if you want to support federation. ```bash -./bin/dendrite-federation-sender-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml federationsender ``` #### Appservice server @@ -250,7 +250,7 @@ running locally. This is only required if you want to support running application services on your homeserver. ```bash -./bin/dendrite-appservice-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml appservice ``` #### Key server @@ -258,7 +258,7 @@ application services on your homeserver. This manages end-to-end encryption keys for users. ```bash -./bin/dendrite-key-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml keyserver ``` #### Signing key server @@ -266,7 +266,7 @@ This manages end-to-end encryption keys for users. This manages signing keys for servers. ```bash -./bin/dendrite-signing-key-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml signingkeyserver ``` #### EDU server @@ -274,7 +274,7 @@ This manages signing keys for servers. This manages processing EDUs such as typing, send-to-device events and presence. Clients do not talk to ```bash -./bin/dendrite-edu-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml eduserver ``` #### User server @@ -283,6 +283,6 @@ This manages user accounts, device access tokens and user account data, amongst other things. ```bash -./bin/dendrite-user-api-server --config dendrite.yaml +./bin/dendrite-polylith-multi --config=dendrite.yaml userapi ```