mirror of
https://github.com/matrix-org/dendrite.git
synced 2025-12-18 04:13:10 -06:00
Update Docker stuff
Remove old run scripts Add environment parsing Add Dockerfiles Add docker-compose for easy building Signed-off-by: feffe <feffe@feffe.dev>
This commit is contained in:
parent
3dabf4d4ed
commit
154e99b12a
|
|
@ -24,6 +24,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/common/basecomponent"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -48,13 +50,13 @@ Arguments:
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
syncServerURL = flag.String("sync-api-server-url", "", "The base URL of the listening 'dendrite-sync-api-server' process. E.g. 'http://localhost:4200'")
|
syncServerURL = flag.String("sync-api-server-url", basecomponent.EnvParse("DENDRITE_SYNC_API_SERVER_URL", ""), "The base URL of the listening 'dendrite-sync-api-server' process. E.g. 'http://localhost:4200'")
|
||||||
clientAPIURL = flag.String("client-api-server-url", "", "The base URL of the listening 'dendrite-client-api-server' process. E.g. 'http://localhost:4321'")
|
clientAPIURL = flag.String("client-api-server-url", basecomponent.EnvParse("DENDRITE_CLIENT_API_URL", ""), "The base URL of the listening 'dendrite-client-api-server' process. E.g. 'http://localhost:4321'")
|
||||||
mediaAPIURL = flag.String("media-api-server-url", "", "The base URL of the listening 'dendrite-media-api-server' process. E.g. 'http://localhost:7779'")
|
mediaAPIURL = flag.String("media-api-server-url", basecomponent.EnvParse("DENDRITE_MEDIA_API_URL", ""), "The base URL of the listening 'dendrite-media-api-server' process. E.g. 'http://localhost:7779'")
|
||||||
publicRoomsAPIURL = flag.String("public-rooms-api-server-url", "", "The base URL of the listening 'dendrite-public-rooms-api-server' process. E.g. 'http://localhost:7775'")
|
publicRoomsAPIURL = flag.String("public-rooms-api-server-url", basecomponent.EnvParse("DENDRITE_PUBLIC_ROOMS_API_URL", ""), "The base URL of the listening 'dendrite-public-rooms-api-server' process. E.g. 'http://localhost:7775'")
|
||||||
bindAddress = flag.String("bind-address", ":8008", "The listening port for the proxy.")
|
bindAddress = flag.String("bind-address", basecomponent.EnvParse("DENDRITE_CLIENT_API_PROXY_ADDRESS", ":8008"), "The listening port for the proxy.")
|
||||||
certFile = flag.String("tls-cert", "", "The PEM formatted X509 certificate to use for TLS")
|
certFile = flag.String("tls-cert", basecomponent.EnvParse("DENDRITE_TLS_CERT_FILE", ""), "The PEM formatted X509 certificate to use for TLS")
|
||||||
keyFile = flag.String("tls-key", "", "The PEM private key to use for TLS")
|
keyFile = flag.String("tls-key", basecomponent.EnvParse("DENDRITE_TLS_KEY_FILE", ""), "The PEM private key to use for TLS")
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeProxy(targetURL string) (*httputil.ReverseProxy, error) {
|
func makeProxy(targetURL string) (*httputil.ReverseProxy, error) {
|
||||||
|
|
|
||||||
|
|
@ -22,6 +22,7 @@ import (
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/accounts"
|
||||||
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
"github.com/matrix-org/dendrite/clientapi/auth/storage/devices"
|
||||||
|
"github.com/matrix-org/dendrite/common/basecomponent"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -34,11 +35,11 @@ Arguments:
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
database = flag.String("database", "", "The location of the account database.")
|
database = flag.String("database", basecomponent.EnvParse("DENDRITE_CREATE_ACCOUNT_DATABASE", ""), "The location of the account database.")
|
||||||
username = flag.String("username", "", "The user ID localpart to register e.g 'alice' in '@alice:localhost'.")
|
username = flag.String("username", basecomponent.EnvParse("DENDRITE_CREATE_ACCOUNT_USERNAME", ""), "The user ID localpart to register e.g 'alice' in '@alice:localhost'.")
|
||||||
password = flag.String("password", "", "Optional. The password to register with. If not specified, this account will be password-less.")
|
password = flag.String("password", basecomponent.EnvParse("DENDRITE_CREATE_ACCOUNT_PASSWORD", ""), "Optional. The password to register with. If not specified, this account will be password-less.")
|
||||||
serverNameStr = flag.String("servername", "localhost", "The Matrix server domain which will form the domain part of the user ID.")
|
serverNameStr = flag.String("servername", basecomponent.EnvParse("DENDRITE_CREATE_ACCOUNT_SERVERNAME", "localhost"), "The Matrix server domain which will form the domain part of the user ID.")
|
||||||
accessToken = flag.String("token", "", "Optional. The desired access_token to have. If not specified, a random access_token will be made.")
|
accessToken = flag.String("token", basecomponent.EnvParse("DENDRITE_CREATE_ACCOUNT_ACCESS_TOKEN", ""), "Optional. The desired access_token to have. If not specified, a random access_token will be made.")
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
||||||
|
|
@ -25,6 +25,7 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/common/basecomponent"
|
||||||
"github.com/matrix-org/dendrite/roomserver/api"
|
"github.com/matrix-org/dendrite/roomserver/api"
|
||||||
"github.com/matrix-org/gomatrixserverlib"
|
"github.com/matrix-org/gomatrixserverlib"
|
||||||
"golang.org/x/crypto/ed25519"
|
"golang.org/x/crypto/ed25519"
|
||||||
|
|
@ -40,13 +41,13 @@ Arguments:
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
serverName = flag.String("server-name", "localhost", "The name of the matrix server to generate events for")
|
serverName = flag.String("server-name", basecomponent.EnvParse("DENDRITE_CREATE_ROOM_EVENTS_SERVERNAME", "localhost"), "The name of the matrix server to generate events for")
|
||||||
keyID = flag.String("key-id", "ed25519:auto", "The ID of the key used to sign the events")
|
keyID = flag.String("key-id", basecomponent.EnvParse("DENDRITE_CREATE_ROOM_EVENTS_KEYID", "ed25519:auto"), "The ID of the key used to sign the events")
|
||||||
privateKeyString = flag.String("private-key", defaultKey, "Base64 encoded private key to sign events with")
|
privateKeyString = flag.String("private-key", basecomponent.EnvParse("DENDRITE_CREATE_ROOM_EVENTS_PRIVATE_KEY", defaultKey), "Base64 encoded private key to sign events with")
|
||||||
roomID = flag.String("room-id", "!roomid:$SERVER_NAME", "The room ID to generate events in")
|
roomID = flag.String("room-id", basecomponent.EnvParse("DENDRITE_CREATE_ROOM_EVENTS_ROOMID", "!roomid:$SERVER_NAME"), "The room ID to generate events in")
|
||||||
userID = flag.String("user-id", "@userid:$SERVER_NAME", "The user ID to use as the event sender")
|
userID = flag.String("user-id", basecomponent.EnvParse("DENDRITE_CREATE_ROOM_EVENTS_USERID", "@userid:$SERVER_NAME"), "The user ID to use as the event sender")
|
||||||
messageCount = flag.Int("message-count", 10, "The number of m.room.messsage events to generate")
|
messageCount = flag.Int("message-count", 10, "The number of m.room.messsage events to generate")
|
||||||
format = flag.String("Format", "InputRoomEvent", "The output format to use for the messages: InputRoomEvent or Event")
|
format = flag.String("Format", basecomponent.EnvParse("DENDRITE_CREATE_ROOM_EVENTS_FORMAT", "InputRoomEvent"), "The output format to use for the messages: InputRoomEvent or Event")
|
||||||
)
|
)
|
||||||
|
|
||||||
// By default we use a private key of 0.
|
// By default we use a private key of 0.
|
||||||
|
|
|
||||||
|
|
@ -38,10 +38,10 @@ import (
|
||||||
)
|
)
|
||||||
|
|
||||||
var (
|
var (
|
||||||
httpBindAddr = flag.String("http-bind-address", ":8008", "The HTTP listening port for the server")
|
httpBindAddr = flag.String("http-bind-address", basecomponent.EnvParse("DENDRITE_MONOLITH_HTTP_BIND_ADDRESS", ":8008"), "The HTTP listening port for the server")
|
||||||
httpsBindAddr = flag.String("https-bind-address", ":8448", "The HTTPS listening port for the server")
|
httpsBindAddr = flag.String("https-bind-address", basecomponent.EnvParse("DENDRITE_MONOLITH_HTTPS_BIND_ADDRESS", ":8448"), "The HTTPS listening port for the server")
|
||||||
certFile = flag.String("tls-cert", "", "The PEM formatted X509 certificate to use for TLS")
|
certFile = flag.String("tls-cert", basecomponent.EnvParse("DENDRITE_TLS_CERT_FILE", ""), "The PEM formatted X509 certificate to use for TLS")
|
||||||
keyFile = flag.String("tls-key", "", "The PEM private key to use for TLS")
|
keyFile = flag.String("tls-key", basecomponent.EnvParse("DENDRITE_TLS_KEY_FILE", ""), "The PEM private key to use for TLS")
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,8 @@ import (
|
||||||
"strings"
|
"strings"
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/common/basecomponent"
|
||||||
|
|
||||||
log "github.com/sirupsen/logrus"
|
log "github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -48,11 +50,11 @@ Arguments:
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
federationAPIURL = flag.String("federation-api-url", "", "The base URL of the listening 'dendrite-federation-api-server' process. E.g. 'http://localhost:4200'")
|
federationAPIURL = flag.String("federation-api-url", basecomponent.EnvParse("DENDRITE_FEDERATION_API_URL", ""), "The base URL of the listening 'dendrite-federation-api-server' process. E.g. 'http://localhost:4200'")
|
||||||
mediaAPIURL = flag.String("media-api-server-url", "", "The base URL of the listening 'dendrite-media-api-server' process. E.g. 'http://localhost:7779'")
|
mediaAPIURL = flag.String("media-api-server-url", basecomponent.EnvParse("DENDRITE_MEDIA_API_URL", ""), "The base URL of the listening 'dendrite-media-api-server' process. E.g. 'http://localhost:7779'")
|
||||||
bindAddress = flag.String("bind-address", ":8448", "The listening port for the proxy.")
|
bindAddress = flag.String("bind-address", basecomponent.EnvParse("DENDRITE_FEDERATION_PROXY_ADDRESS", ":8448"), "The listening port for the proxy.")
|
||||||
certFile = flag.String("tls-cert", "server.crt", "The PEM formatted X509 certificate to use for TLS")
|
certFile = flag.String("tls-cert", basecomponent.EnvParse("DENDRITE_TLS_CERT_FILE", "server.crt"), "The PEM formatted X509 certificate to use for TLS")
|
||||||
keyFile = flag.String("tls-key", "server.key", "The PEM private key to use for TLS")
|
keyFile = flag.String("tls-key", basecomponent.EnvParse("DENDRITE_TLS_KEY_FILE", "server.key"), "The PEM private key to use for TLS")
|
||||||
)
|
)
|
||||||
|
|
||||||
func makeProxy(targetURL string) (*httputil.ReverseProxy, error) {
|
func makeProxy(targetURL string) (*httputil.ReverseProxy, error) {
|
||||||
|
|
|
||||||
|
|
@ -20,6 +20,8 @@ import (
|
||||||
"log"
|
"log"
|
||||||
"os"
|
"os"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/common/basecomponent"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/common/test"
|
"github.com/matrix-org/dendrite/common/test"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -32,9 +34,9 @@ Arguments:
|
||||||
`
|
`
|
||||||
|
|
||||||
var (
|
var (
|
||||||
tlsCertFile = flag.String("tls-cert", "", "An X509 certificate file to generate for use for TLS")
|
tlsCertFile = flag.String("tls-cert", basecomponent.EnvParse("DENDRITE_GENKEYS_TLS_CERT_OUT", ""), "An X509 certificate file to generate for use for TLS")
|
||||||
tlsKeyFile = flag.String("tls-key", "", "An RSA private key file to generate for use for TLS")
|
tlsKeyFile = flag.String("tls-key", basecomponent.EnvParse("DENDRITE_GENKEYS_TLS_KEY_OUT", ""), "An RSA private key file to generate for use for TLS")
|
||||||
privateKeyFile = flag.String("private-key", "", "An Ed25519 private key to generate for use for object signing")
|
privateKeyFile = flag.String("private-key", basecomponent.EnvParse("DENDRITE_GENKEYS_PEM_OUT", ""), "An Ed25519 private key to generate for use for object signing")
|
||||||
)
|
)
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|
|
||||||
|
|
@ -21,6 +21,8 @@ import (
|
||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
|
"github.com/matrix-org/dendrite/common/basecomponent"
|
||||||
|
|
||||||
sarama "gopkg.in/Shopify/sarama.v1"
|
sarama "gopkg.in/Shopify/sarama.v1"
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
@ -34,7 +36,7 @@ Arguments:
|
||||||
|
|
||||||
var (
|
var (
|
||||||
brokerList = flag.String("brokers", os.Getenv("KAFKA_PEERS"), "The comma separated list of brokers in the Kafka cluster. You can also set the KAFKA_PEERS environment variable")
|
brokerList = flag.String("brokers", os.Getenv("KAFKA_PEERS"), "The comma separated list of brokers in the Kafka cluster. You can also set the KAFKA_PEERS environment variable")
|
||||||
topic = flag.String("topic", "", "REQUIRED: the topic to produce to")
|
topic = flag.String("topic", basecomponent.EnvParse("DENDRITE_KAFKAPROD_TOPIC", ""), "REQUIRED: the topic to produce to")
|
||||||
partition = flag.Int("partition", 0, "The partition to produce to. All the messages will be written to this partition.")
|
partition = flag.Int("partition", 0, "The partition to produce to. All the messages will be written to this partition.")
|
||||||
)
|
)
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -16,13 +16,14 @@ package basecomponent
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"flag"
|
"flag"
|
||||||
|
"os"
|
||||||
|
|
||||||
"github.com/matrix-org/dendrite/common/config"
|
"github.com/matrix-org/dendrite/common/config"
|
||||||
|
|
||||||
"github.com/sirupsen/logrus"
|
"github.com/sirupsen/logrus"
|
||||||
)
|
)
|
||||||
|
|
||||||
var configPath = flag.String("config", "dendrite.yaml", "The path to the config file. For more information, see the config file in this repository.")
|
var configPath = flag.String("config", EnvParse("DENDRITE_CONFIG_FILE", "dendrite.yaml"), "The path to the config file. For more information, see the config file in this repository.")
|
||||||
|
|
||||||
// ParseFlags parses the commandline flags and uses them to create a config.
|
// ParseFlags parses the commandline flags and uses them to create a config.
|
||||||
// If running as a monolith use `ParseMonolithFlags` instead.
|
// If running as a monolith use `ParseMonolithFlags` instead.
|
||||||
|
|
@ -59,3 +60,12 @@ func ParseMonolithFlags() *config.Dendrite {
|
||||||
|
|
||||||
return cfg
|
return cfg
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// EnvParse returns the value of the environmentvariable if it exists, otherwise `def`.
|
||||||
|
func EnvParse(env string, def string) string {
|
||||||
|
cnf, exists := os.LookupEnv(env)
|
||||||
|
if !exists {
|
||||||
|
cnf = def
|
||||||
|
}
|
||||||
|
return cnf
|
||||||
|
}
|
||||||
|
|
|
||||||
|
|
@ -1,8 +1,4 @@
|
||||||
<<<<<<< HEAD
|
|
||||||
FROM docker.io/golang:1.13.7-alpine3.11
|
FROM docker.io/golang:1.13.7-alpine3.11
|
||||||
=======
|
|
||||||
FROM docker.io/golang:1.13.6-alpine
|
|
||||||
>>>>>>> master
|
|
||||||
|
|
||||||
RUN mkdir /build
|
RUN mkdir /build
|
||||||
|
|
||||||
|
|
|
||||||
120
docker/build.docker-compose.yml
Normal file
120
docker/build.docker-compose.yml
Normal file
|
|
@ -0,0 +1,120 @@
|
||||||
|
###############################
|
||||||
|
# Used for building images
|
||||||
|
|
||||||
|
version: "3.4"
|
||||||
|
services:
|
||||||
|
dendrite-build:
|
||||||
|
image: dendrite-build
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: build
|
||||||
|
dockerfile: ./docker/dockerfiles/build.Dockerfile
|
||||||
|
monolith:
|
||||||
|
image: monolith:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: monolith
|
||||||
|
dockerfile: ./docker/dockerfiles/monolith.Dockerfile
|
||||||
|
|
||||||
|
client-api-proxy:
|
||||||
|
image: client-api-proxy:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: client-api-proxy
|
||||||
|
dockerfile: ./docker/dockerfiles/client-api-proxy.Dockerfile
|
||||||
|
|
||||||
|
client-api:
|
||||||
|
image: client-api:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: client-api
|
||||||
|
dockerfile: ./docker/dockerfiles/client-api.Dockerfile
|
||||||
|
|
||||||
|
media-api:
|
||||||
|
image: media-api:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: media-api
|
||||||
|
dockerfile: ./docker/dockerfiles/media-api.Dockerfile
|
||||||
|
|
||||||
|
public-rooms-api:
|
||||||
|
image: public-rooms-api:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: public-rooms-api
|
||||||
|
dockerfile: ./docker/dockerfiles/public-rooms-api.Dockerfile
|
||||||
|
|
||||||
|
sync-api:
|
||||||
|
image: sync-api:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: sync-api
|
||||||
|
dockerfile: ./docker/dockerfiles/sync-api.Dockerfile
|
||||||
|
|
||||||
|
room-server:
|
||||||
|
image: room-server:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: room-server
|
||||||
|
dockerfile: ./docker/dockerfiles/room-server.Dockerfile
|
||||||
|
|
||||||
|
typing-server:
|
||||||
|
image: typing-server:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: typing-server
|
||||||
|
dockerfile: ./docker/dockerfiles/typing-server.Dockerfile
|
||||||
|
|
||||||
|
federation-api-proxy:
|
||||||
|
image: federation-api-proxy:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: federation-api-proxy
|
||||||
|
dockerfile: ./docker/dockerfiles/federation-api-proxy.Dockerfile
|
||||||
|
|
||||||
|
federation-api:
|
||||||
|
image: federation-api:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: federation-api
|
||||||
|
dockerfile: ./docker/dockerfiles/federation-api.Dockerfile
|
||||||
|
|
||||||
|
federation-sender:
|
||||||
|
image: federation-sender:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: federation-sender
|
||||||
|
dockerfile: ./docker/dockerfiles/federation-sender.Dockerfile
|
||||||
|
|
||||||
|
appservice-server:
|
||||||
|
image: appservice-server:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: appservice-server
|
||||||
|
dockerfile: ./docker/dockerfiles/appservice-server.Dockerfile
|
||||||
|
|
||||||
|
generate-keys-tool:
|
||||||
|
image: generate-keys-tool:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: generate-keys-tool
|
||||||
|
dockerfile: ./docker/dockerfiles/generate-keys-tool.Dockerfile
|
||||||
|
|
||||||
|
create-account-tool:
|
||||||
|
image: create-account-tool:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: create-account-tool
|
||||||
|
dockerfile: ./docker/dockerfiles/create-account-tool.Dockerfile
|
||||||
|
create-room-events-tool:
|
||||||
|
image: create-room-events-tool:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: create-room-events-tool
|
||||||
|
dockerfile: ./docker/dockerfiles/create-room-events-tool.Dockerfile
|
||||||
|
kafka-producer:
|
||||||
|
image: kafka-producer:latest
|
||||||
|
build:
|
||||||
|
context: ..
|
||||||
|
target: kafka-producer
|
||||||
|
dockerfile: ./docker/dockerfiles/kafka-producer.Dockerfile
|
||||||
|
|
@ -1,18 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
./build.sh
|
|
||||||
|
|
||||||
# Generate the keys if they don't already exist.
|
|
||||||
if [ ! -f server.key ] || [ ! -f server.crt ] || [ ! -f matrix_key.pem ]; then
|
|
||||||
echo "Generating keys ..."
|
|
||||||
|
|
||||||
rm -f server.key server.crt matrix_key.pem
|
|
||||||
|
|
||||||
test -f server.key || openssl req -x509 -newkey rsa:4096 \
|
|
||||||
-keyout server.key \
|
|
||||||
-out server.crt \
|
|
||||||
-days 3650 -nodes \
|
|
||||||
-subj /CN=localhost
|
|
||||||
|
|
||||||
test -f matrix_key.pem || /build/bin/generate-keys -private-key matrix_key.pem
|
|
||||||
fi
|
|
||||||
|
|
@ -1,192 +0,0 @@
|
||||||
version: "3.4"
|
|
||||||
services:
|
|
||||||
riot:
|
|
||||||
image: vectorim/riot-web
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
ports:
|
|
||||||
- "8500:80"
|
|
||||||
|
|
||||||
monolith:
|
|
||||||
container_name: dendrite_monolith
|
|
||||||
hostname: monolith
|
|
||||||
entrypoint: ["bash", "./docker/services/monolith.sh", "--config", "/etc/dendrite/dendrite.yaml"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
- ./build/bin:/build/bin
|
|
||||||
- ../cfg:/etc/dendrite
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
ports:
|
|
||||||
- "8008:8008"
|
|
||||||
- "8448:8448"
|
|
||||||
|
|
||||||
client_api_proxy:
|
|
||||||
container_name: dendrite_client_api_proxy
|
|
||||||
hostname: client_api_proxy
|
|
||||||
entrypoint: ["bash", "./docker/services/client-api-proxy.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
- sync_api
|
|
||||||
- client_api
|
|
||||||
- media_api
|
|
||||||
- public_rooms_api
|
|
||||||
ports:
|
|
||||||
- "8008:8008"
|
|
||||||
|
|
||||||
client_api:
|
|
||||||
container_name: dendrite_client_api
|
|
||||||
hostname: client_api
|
|
||||||
entrypoint: ["bash", "./docker/services/client-api.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
- room_server
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
media_api:
|
|
||||||
container_name: dendrite_media_api
|
|
||||||
hostname: media_api
|
|
||||||
entrypoint: ["bash", "./docker/services/media-api.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
public_rooms_api:
|
|
||||||
container_name: dendrite_public_rooms_api
|
|
||||||
hostname: public_rooms_api
|
|
||||||
entrypoint: ["bash", "./docker/services/public-rooms-api.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
sync_api:
|
|
||||||
container_name: dendrite_sync_api
|
|
||||||
hostname: sync_api
|
|
||||||
entrypoint: ["bash", "./docker/services/sync-api.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
room_server:
|
|
||||||
container_name: dendrite_room_server
|
|
||||||
hostname: room_server
|
|
||||||
entrypoint: ["bash", "./docker/services/room-server.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
typing_server:
|
|
||||||
container_name: dendrite_typing_server
|
|
||||||
hostname: typing_server
|
|
||||||
entrypoint: ["bash", "./docker/services/typing-server.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
federation_api_proxy:
|
|
||||||
container_name: dendrite_federation_api_proxy
|
|
||||||
hostname: federation_api_proxy
|
|
||||||
entrypoint: ["bash", "./docker/services/federation-api-proxy.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
- federation_api
|
|
||||||
- federation_sender
|
|
||||||
- media_api
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
ports:
|
|
||||||
- "8448:8448"
|
|
||||||
|
|
||||||
federation_api:
|
|
||||||
container_name: dendrite_federation_api
|
|
||||||
hostname: federation_api
|
|
||||||
entrypoint: ["bash", "./docker/services/federation-api.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
federation_sender:
|
|
||||||
container_name: dendrite_federation_sender
|
|
||||||
hostname: federation_sender
|
|
||||||
entrypoint: ["bash", "./docker/services/federation-sender.sh"]
|
|
||||||
build: ./
|
|
||||||
volumes:
|
|
||||||
- ..:/build
|
|
||||||
depends_on:
|
|
||||||
- postgres
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
postgres:
|
|
||||||
container_name: dendrite_postgres
|
|
||||||
hostname: postgres
|
|
||||||
image: postgres:9.5
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- ./postgres/create_db.sh:/docker-entrypoint-initdb.d/20-create_db.sh
|
|
||||||
environment:
|
|
||||||
POSTGRES_PASSWORD: itsasecret
|
|
||||||
POSTGRES_USER: dendrite
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
zookeeper:
|
|
||||||
container_name: dendrite_zk
|
|
||||||
hostname: zookeeper
|
|
||||||
image: zookeeper
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
kafka:
|
|
||||||
container_name: dendrite_kafka
|
|
||||||
hostname: kafka
|
|
||||||
image: wurstmeister/kafka
|
|
||||||
environment:
|
|
||||||
KAFKA_ADVERTISED_HOST_NAME: "kafka"
|
|
||||||
KAFKA_DELETE_TOPIC_ENABLE: "true"
|
|
||||||
KAFKA_ZOOKEEPER_CONNECT: "zookeeper:2181"
|
|
||||||
depends_on:
|
|
||||||
- zookeeper
|
|
||||||
networks:
|
|
||||||
- internal
|
|
||||||
|
|
||||||
networks:
|
|
||||||
internal:
|
|
||||||
attachable: true
|
|
||||||
11
docker/dockerfiles/appservice-server.Dockerfile
Normal file
11
docker/dockerfiles/appservice-server.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
#######################
|
||||||
|
## Appservice Server ##
|
||||||
|
#######################
|
||||||
|
FROM scratch AS appservice-server
|
||||||
|
EXPOSE 7777
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-appservice-server /bin/appservice-server
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/appservice-server"]
|
||||||
8
docker/dockerfiles/build.Dockerfile
Normal file
8
docker/dockerfiles/build.Dockerfile
Normal file
|
|
@ -0,0 +1,8 @@
|
||||||
|
###########
|
||||||
|
## Build ##
|
||||||
|
###########
|
||||||
|
FROM golang:1.13-alpine AS build
|
||||||
|
RUN apk --update --no-cache add openssl bash git ca-certificates
|
||||||
|
WORKDIR /build
|
||||||
|
COPY . .
|
||||||
|
RUN CGO_ENABLED=0 GOOS=linux GOBIN=$PWD/bin go install -v ./cmd/...
|
||||||
9
docker/dockerfiles/client-api-proxy.Dockerfile
Normal file
9
docker/dockerfiles/client-api-proxy.Dockerfile
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
######################
|
||||||
|
## Client API Proxy ##
|
||||||
|
######################
|
||||||
|
FROM scratch AS client-api-proxy
|
||||||
|
EXPOSE 8008
|
||||||
|
ENV CLIENT_API_SERVER_URL="http://client-api:7771" SYNC_API_SERVER_URL="http://sync-api:7773" MEDIA_API_SERVER_URL="http://media-api:7774" PUBLIC_ROOMS_API_SERVER_URL="http://public-rooms-api:7775"
|
||||||
|
COPY --from=build /build/bin/client-api-proxy /bin/client-api-proxy
|
||||||
|
ENTRYPOINT ["/bin/client-api-proxy", "--bind-address=`:8008`"]
|
||||||
11
docker/dockerfiles/client-api.Dockerfile
Normal file
11
docker/dockerfiles/client-api.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
################
|
||||||
|
## Client API ##
|
||||||
|
################
|
||||||
|
FROM scratch AS client-api
|
||||||
|
EXPOSE 7771
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-client-api-server /bin/client-api
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/client-api"]
|
||||||
7
docker/dockerfiles/create-account-tool.Dockerfile
Normal file
7
docker/dockerfiles/create-account-tool.Dockerfile
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
#########################
|
||||||
|
## Create Account Tool ##
|
||||||
|
#########################
|
||||||
|
FROM scratch AS create-account-tool
|
||||||
|
COPY --from=build /build/bin/create-account /bin/create-account
|
||||||
|
ENTRYPOINT ["/bin/create-account"]
|
||||||
7
docker/dockerfiles/create-room-events-tool.Dockerfile
Normal file
7
docker/dockerfiles/create-room-events-tool.Dockerfile
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
#############################
|
||||||
|
## Create Room Events Tool ##
|
||||||
|
#############################
|
||||||
|
FROM scratch AS create-room-events-tool
|
||||||
|
COPY --from=build /build/bin/create-room-events /bin/create-room-events
|
||||||
|
ENTRYPOINT ["/bin/create-room-events"]
|
||||||
9
docker/dockerfiles/federation-api-proxy.Dockerfile
Normal file
9
docker/dockerfiles/federation-api-proxy.Dockerfile
Normal file
|
|
@ -0,0 +1,9 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
##########################
|
||||||
|
## Federation API Proxy ##
|
||||||
|
##########################
|
||||||
|
FROM scratch AS federation-api-proxy
|
||||||
|
EXPOSE 8008
|
||||||
|
ENV FEDERATION_API_SERVER_URL="http://federation-api:7772" MEDIA_API_SERVER_URL="http://media-api:7774"
|
||||||
|
COPY --from=build /build/bin/federation-api-proxy /bin/federation-api-proxy
|
||||||
|
ENTRYPOINT ["/bin/federation-api-proxy", "--bind-address=`:8008`"]
|
||||||
11
docker/dockerfiles/federation-api.Dockerfile
Normal file
11
docker/dockerfiles/federation-api.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
####################
|
||||||
|
## Federation API ##
|
||||||
|
####################
|
||||||
|
FROM scratch AS federation-api
|
||||||
|
EXPOSE 7772
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-federation-api-server /bin/federation-api
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/federation-api"]
|
||||||
11
docker/dockerfiles/federation-sender.Dockerfile
Normal file
11
docker/dockerfiles/federation-sender.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
#######################
|
||||||
|
## Federation Sender ##
|
||||||
|
#######################
|
||||||
|
FROM scratch AS federation-sender
|
||||||
|
EXPOSE 7776
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-federation-sender-server /bin/federation-sender
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/federation-sender"]
|
||||||
7
docker/dockerfiles/generate-keys-tool.Dockerfile
Normal file
7
docker/dockerfiles/generate-keys-tool.Dockerfile
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
########################
|
||||||
|
## Generate Keys Tool ##
|
||||||
|
########################
|
||||||
|
FROM scratch AS generate-keys-tool
|
||||||
|
COPY --from=build /build/bin/generate-keys /bin/generate-keys
|
||||||
|
ENTRYPOINT ["/bin/generate-keys"]
|
||||||
7
docker/dockerfiles/kafka-producer.Dockerfile
Normal file
7
docker/dockerfiles/kafka-producer.Dockerfile
Normal file
|
|
@ -0,0 +1,7 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
####################
|
||||||
|
## Kafka Producer ##
|
||||||
|
####################
|
||||||
|
FROM scratch AS kafka-producer
|
||||||
|
COPY --from=build /build/bin/kafka-producer /bin/kafka-producer
|
||||||
|
ENTRYPOINT ["/bin/kafka-producer"]
|
||||||
11
docker/dockerfiles/media-api.Dockerfile
Normal file
11
docker/dockerfiles/media-api.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
###############
|
||||||
|
## Media API ##
|
||||||
|
###############
|
||||||
|
FROM scratch AS media-api
|
||||||
|
EXPOSE 7774
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-media-api-server /bin/media-api
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/media-api"]
|
||||||
13
docker/dockerfiles/monolith.Dockerfile
Normal file
13
docker/dockerfiles/monolith.Dockerfile
Normal file
|
|
@ -0,0 +1,13 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
|
||||||
|
##############
|
||||||
|
## Monolith ##
|
||||||
|
##############
|
||||||
|
FROM scratch AS monolith
|
||||||
|
EXPOSE 8008 8448
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml" TLS_CERT_FILE="server.crt" TLS_KEY_FILE="server.key"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ca-certificates.crt
|
||||||
|
COPY --from=build /build/bin/dendrite-monolith-server /bin/monolith
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/monolith"]
|
||||||
11
docker/dockerfiles/public-rooms-api.Dockerfile
Normal file
11
docker/dockerfiles/public-rooms-api.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
######################
|
||||||
|
## Public Rooms API ##
|
||||||
|
######################
|
||||||
|
FROM scratch AS public-rooms-api
|
||||||
|
EXPOSE 7775
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-public-rooms-api-server /bin/public-rooms-api
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/public-rooms-api"]
|
||||||
11
docker/dockerfiles/room-server.Dockerfile
Normal file
11
docker/dockerfiles/room-server.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
#################
|
||||||
|
## Room Server ##
|
||||||
|
#################
|
||||||
|
FROM scratch AS room-server
|
||||||
|
EXPOSE 7770
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-room-server /bin/room-server
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/room-server"]
|
||||||
11
docker/dockerfiles/sync-api.Dockerfile
Normal file
11
docker/dockerfiles/sync-api.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
##############
|
||||||
|
## Sync API ##
|
||||||
|
##############
|
||||||
|
FROM scratch AS sync-api
|
||||||
|
EXPOSE 7773
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-sync-api-server /bin/sync-api
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/sync-api"]
|
||||||
11
docker/dockerfiles/typing-server.Dockerfile
Normal file
11
docker/dockerfiles/typing-server.Dockerfile
Normal file
|
|
@ -0,0 +1,11 @@
|
||||||
|
FROM dendrite-build AS build
|
||||||
|
###################
|
||||||
|
## Typing Server ##
|
||||||
|
###################
|
||||||
|
FROM scratch AS typing-server
|
||||||
|
EXPOSE 7778
|
||||||
|
ENV DENDRITE_CONFIG_FILE="dendrite.yaml"
|
||||||
|
WORKDIR /dendrite
|
||||||
|
COPY --from=build /build/bin/dendrite-typing-server /bin/typing-server
|
||||||
|
COPY --from=build /build/docker/dendrite-docker.yml ./dendrite.yaml
|
||||||
|
ENTRYPOINT ["/bin/typing-server"]
|
||||||
|
|
@ -1,9 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/client-api-proxy --bind-address ":8008" \
|
|
||||||
--client-api-server-url "http://client_api:7771" \
|
|
||||||
--sync-api-server-url "http://sync_api:7773" \
|
|
||||||
--media-api-server-url "http://media_api:7774" \
|
|
||||||
--public-rooms-api-server-url "http://public_rooms_api:7775" \
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-client-api-server --config=dendrite.yaml
|
|
||||||
|
|
@ -1,7 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/federation-api-proxy --bind-address ":8448" \
|
|
||||||
--federation-api-url "http://federation_api_server:7772" \
|
|
||||||
--media-api-server-url "http://media_api:7774" \
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-federation-api-server --config dendrite.yaml
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-federation-sender-server --config dendrite.yaml
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-media-api-server --config dendrite.yaml
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-monolith-server --tls-cert=server.crt --tls-key=server.key $@
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-public-rooms-api-server --config dendrite.yaml
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-room-server --config=dendrite.yaml
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-sync-api-server --config=dendrite.yaml
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
#!/bin/bash
|
|
||||||
|
|
||||||
bash ./docker/build.sh
|
|
||||||
|
|
||||||
./bin/dendrite-typing-server --config=dendrite.yaml
|
|
||||||
Loading…
Reference in a new issue