From 3b47a7a749285e12cf6225662d4235d8210bb9cb Mon Sep 17 00:00:00 2001 From: Adit Sachde <23707194+aditsachde@users.noreply.github.com> Date: Fri, 4 Oct 2019 12:18:58 -0400 Subject: [PATCH] Relocate Dockerfiles --- common/config/config.go | 2 +- docker/microservices/Dockerfile | 14 +++++++++++ .../microservices/client-api-proxy.Dockerfile | 13 ++++++++++ .../dendrite-appservice-server.Dockerfile | 9 +++++++ .../dendrite-client-api-server.Dockerfile | 9 +++++++ .../dendrite-federation-api-server.Dockerfile | 9 +++++++ ...ndrite-federation-sender-server.Dockerfile | 9 +++++++ .../dendrite-media-api-server.Dockerfile | 9 +++++++ ...endrite-public-rooms-api-server.Dockerfile | 9 +++++++ .../dendrite-room-server.Dockerfile | 9 +++++++ .../dendrite-sync-api-server.Dockerfile | 9 +++++++ .../dendrite-typing-server.Dockerfile | 9 +++++++ .../federation-api-proxy.Dockerfile | 13 ++++++++++ docker/microservices/readme.md | 25 +++++++++++++++++++ docker/{ => monolith}/Dockerfile | 0 docker/{ => monolith}/README.md | 0 docker/{ => monolith}/build.sh | 0 docker/{ => monolith}/dendrite-docker.yml | 0 docker/{ => monolith}/docker-compose.yml | 0 docker/{ => monolith}/postgres/create_db.sh | 0 .../services/client-api-proxy.sh | 0 docker/{ => monolith}/services/client-api.sh | 0 .../services/federation-api-proxy.sh | 0 .../{ => monolith}/services/federation-api.sh | 0 .../services/federation-sender.sh | 0 docker/{ => monolith}/services/media-api.sh | 0 docker/{ => monolith}/services/monolith.sh | 0 .../services/public-rooms-api.sh | 0 docker/{ => monolith}/services/room-server.sh | 0 docker/{ => monolith}/services/sync-api.sh | 0 .../{ => monolith}/services/typing-server.sh | 0 31 files changed, 147 insertions(+), 1 deletion(-) create mode 100644 docker/microservices/Dockerfile create mode 100644 docker/microservices/client-api-proxy.Dockerfile create mode 100644 docker/microservices/dendrite-appservice-server.Dockerfile create mode 100644 docker/microservices/dendrite-client-api-server.Dockerfile create mode 100644 docker/microservices/dendrite-federation-api-server.Dockerfile create mode 100644 docker/microservices/dendrite-federation-sender-server.Dockerfile create mode 100644 docker/microservices/dendrite-media-api-server.Dockerfile create mode 100644 docker/microservices/dendrite-public-rooms-api-server.Dockerfile create mode 100644 docker/microservices/dendrite-room-server.Dockerfile create mode 100644 docker/microservices/dendrite-sync-api-server.Dockerfile create mode 100644 docker/microservices/dendrite-typing-server.Dockerfile create mode 100644 docker/microservices/federation-api-proxy.Dockerfile create mode 100644 docker/microservices/readme.md rename docker/{ => monolith}/Dockerfile (100%) rename docker/{ => monolith}/README.md (100%) rename docker/{ => monolith}/build.sh (100%) rename docker/{ => monolith}/dendrite-docker.yml (100%) rename docker/{ => monolith}/docker-compose.yml (100%) rename docker/{ => monolith}/postgres/create_db.sh (100%) rename docker/{ => monolith}/services/client-api-proxy.sh (100%) rename docker/{ => monolith}/services/client-api.sh (100%) rename docker/{ => monolith}/services/federation-api-proxy.sh (100%) rename docker/{ => monolith}/services/federation-api.sh (100%) rename docker/{ => monolith}/services/federation-sender.sh (100%) rename docker/{ => monolith}/services/media-api.sh (100%) rename docker/{ => monolith}/services/monolith.sh (100%) rename docker/{ => monolith}/services/public-rooms-api.sh (100%) rename docker/{ => monolith}/services/room-server.sh (100%) rename docker/{ => monolith}/services/sync-api.sh (100%) rename docker/{ => monolith}/services/typing-server.sh (100%) diff --git a/common/config/config.go b/common/config/config.go index 0332d0358..19fde64a9 100644 --- a/common/config/config.go +++ b/common/config/config.go @@ -1,4 +1,4 @@ -// Copyright 2017 Vector Creations Ltd +fBIN// Copyright 2017 Vector Creations Ltd // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. diff --git a/docker/microservices/Dockerfile b/docker/microservices/Dockerfile new file mode 100644 index 000000000..74bb39a9e --- /dev/null +++ b/docker/microservices/Dockerfile @@ -0,0 +1,14 @@ +FROM golang:1.12.9 + +WORKDIR /app + +# Copy the source from the current directory to the Working Directory inside the container +COPY . . + +# Statically link binaries +ENV CGO_ENABLED=0 +# Download all dependencies. Dependencies will be cached if the go.mod and go.sum files are not changed +RUN go mod download + +# Build the Go app +RUN ./build.sh \ No newline at end of file diff --git a/docker/microservices/client-api-proxy.Dockerfile b/docker/microservices/client-api-proxy.Dockerfile new file mode 100644 index 000000000..8da5f91e6 --- /dev/null +++ b/docker/microservices/client-api-proxy.Dockerfile @@ -0,0 +1,13 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/client-api-proxy / + +# Component specific entrypoint, environment variables, and arguments +CMD /client-api-proxy \ + -bind-address $CLIENT_BIND_ADDRESS \ + -client-api-server-url $CLIENT_API_SERVER_URL \ + -sync-api-server-url $SYNC_API_SERVER_URL \ + -media-api-server-url $MEDIA_API_SERVER_URL \ + -public-rooms-api-server-url $PUBLIC_ROOMS_API_SERVER_URL diff --git a/docker/microservices/dendrite-appservice-server.Dockerfile b/docker/microservices/dendrite-appservice-server.Dockerfile new file mode 100644 index 000000000..9a5a4015c --- /dev/null +++ b/docker/microservices/dendrite-appservice-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-appservice-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-appservice-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-client-api-server.Dockerfile b/docker/microservices/dendrite-client-api-server.Dockerfile new file mode 100644 index 000000000..3f85df345 --- /dev/null +++ b/docker/microservices/dendrite-client-api-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-client-api-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-client-api-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-federation-api-server.Dockerfile b/docker/microservices/dendrite-federation-api-server.Dockerfile new file mode 100644 index 000000000..6b7c04e2c --- /dev/null +++ b/docker/microservices/dendrite-federation-api-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-federation-api-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-federation-api-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-federation-sender-server.Dockerfile b/docker/microservices/dendrite-federation-sender-server.Dockerfile new file mode 100644 index 000000000..4ce015838 --- /dev/null +++ b/docker/microservices/dendrite-federation-sender-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-federation-sender-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-federation-sender-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-media-api-server.Dockerfile b/docker/microservices/dendrite-media-api-server.Dockerfile new file mode 100644 index 000000000..ed189bc3a --- /dev/null +++ b/docker/microservices/dendrite-media-api-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-media-api-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-media-api-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-public-rooms-api-server.Dockerfile b/docker/microservices/dendrite-public-rooms-api-server.Dockerfile new file mode 100644 index 000000000..e90c21701 --- /dev/null +++ b/docker/microservices/dendrite-public-rooms-api-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-public-rooms-api-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-public-rooms-api-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-room-server.Dockerfile b/docker/microservices/dendrite-room-server.Dockerfile new file mode 100644 index 000000000..3b21ee47c --- /dev/null +++ b/docker/microservices/dendrite-room-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-room-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-room-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-sync-api-server.Dockerfile b/docker/microservices/dendrite-sync-api-server.Dockerfile new file mode 100644 index 000000000..7797854bd --- /dev/null +++ b/docker/microservices/dendrite-sync-api-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-sync-api-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-sync-api-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/dendrite-typing-server.Dockerfile b/docker/microservices/dendrite-typing-server.Dockerfile new file mode 100644 index 000000000..9cd0264a3 --- /dev/null +++ b/docker/microservices/dendrite-typing-server.Dockerfile @@ -0,0 +1,9 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/dendrite-typing-server / + +# Component specific entrypoint, environment variables, and arguments +CMD /dendrite-typing-server \ + --config $CONFIG \ No newline at end of file diff --git a/docker/microservices/federation-api-proxy.Dockerfile b/docker/microservices/federation-api-proxy.Dockerfile new file mode 100644 index 000000000..b5b40e012 --- /dev/null +++ b/docker/microservices/federation-api-proxy.Dockerfile @@ -0,0 +1,13 @@ +FROM dendrite:latest as build-env + +# Copy the binary from build container to final container +FROM alpine:3.10 +COPY --from=build-env /app/bin/federation-api-proxy / + +# Component specific entrypoint, environment variables, and arguments +CMD /federation-api-proxy \ + -bind-address $FEDERATION_BIND_ADDRESS \ + -media-api-server-url $MEDIA_API_SERVER_URL \ + -federation-api-url $FEDERATION_API_URL \ + -tls-cert $FEDERATION_TLS_CERT \ + -tls-key $FEDERATION_TLS_KEY \ No newline at end of file diff --git a/docker/microservices/readme.md b/docker/microservices/readme.md new file mode 100644 index 000000000..ae9e408bf --- /dev/null +++ b/docker/microservices/readme.md @@ -0,0 +1,25 @@ +# Docker Images + +## Build + +The main `Dockerfile` builds installs all go modules and builds all the go binaries in `golang:1.12.9`, and should be tagged `dendrite:latest`. This tag is ensures that it cannot be pushed, and a CI/CD server should not have it cached. + +All the other containers are generated from the binaries built in the first container. It copies the binary from `dendrite:latest` to the root of `alpine:3.10`. + +## Usage + +## Environment Variables + +```yaml +# bind-address arg to client-api-proxy +client-bind-address +# bind-address arg to federation-api-proxy +federation-bind-address + +client-api-server-url +sync-api-server-url +media-api-server-url +public-rooms-api-server-url +federation-api-url +config +``` diff --git a/docker/Dockerfile b/docker/monolith/Dockerfile similarity index 100% rename from docker/Dockerfile rename to docker/monolith/Dockerfile diff --git a/docker/README.md b/docker/monolith/README.md similarity index 100% rename from docker/README.md rename to docker/monolith/README.md diff --git a/docker/build.sh b/docker/monolith/build.sh similarity index 100% rename from docker/build.sh rename to docker/monolith/build.sh diff --git a/docker/dendrite-docker.yml b/docker/monolith/dendrite-docker.yml similarity index 100% rename from docker/dendrite-docker.yml rename to docker/monolith/dendrite-docker.yml diff --git a/docker/docker-compose.yml b/docker/monolith/docker-compose.yml similarity index 100% rename from docker/docker-compose.yml rename to docker/monolith/docker-compose.yml diff --git a/docker/postgres/create_db.sh b/docker/monolith/postgres/create_db.sh similarity index 100% rename from docker/postgres/create_db.sh rename to docker/monolith/postgres/create_db.sh diff --git a/docker/services/client-api-proxy.sh b/docker/monolith/services/client-api-proxy.sh similarity index 100% rename from docker/services/client-api-proxy.sh rename to docker/monolith/services/client-api-proxy.sh diff --git a/docker/services/client-api.sh b/docker/monolith/services/client-api.sh similarity index 100% rename from docker/services/client-api.sh rename to docker/monolith/services/client-api.sh diff --git a/docker/services/federation-api-proxy.sh b/docker/monolith/services/federation-api-proxy.sh similarity index 100% rename from docker/services/federation-api-proxy.sh rename to docker/monolith/services/federation-api-proxy.sh diff --git a/docker/services/federation-api.sh b/docker/monolith/services/federation-api.sh similarity index 100% rename from docker/services/federation-api.sh rename to docker/monolith/services/federation-api.sh diff --git a/docker/services/federation-sender.sh b/docker/monolith/services/federation-sender.sh similarity index 100% rename from docker/services/federation-sender.sh rename to docker/monolith/services/federation-sender.sh diff --git a/docker/services/media-api.sh b/docker/monolith/services/media-api.sh similarity index 100% rename from docker/services/media-api.sh rename to docker/monolith/services/media-api.sh diff --git a/docker/services/monolith.sh b/docker/monolith/services/monolith.sh similarity index 100% rename from docker/services/monolith.sh rename to docker/monolith/services/monolith.sh diff --git a/docker/services/public-rooms-api.sh b/docker/monolith/services/public-rooms-api.sh similarity index 100% rename from docker/services/public-rooms-api.sh rename to docker/monolith/services/public-rooms-api.sh diff --git a/docker/services/room-server.sh b/docker/monolith/services/room-server.sh similarity index 100% rename from docker/services/room-server.sh rename to docker/monolith/services/room-server.sh diff --git a/docker/services/sync-api.sh b/docker/monolith/services/sync-api.sh similarity index 100% rename from docker/services/sync-api.sh rename to docker/monolith/services/sync-api.sh diff --git a/docker/services/typing-server.sh b/docker/monolith/services/typing-server.sh similarity index 100% rename from docker/services/typing-server.sh rename to docker/monolith/services/typing-server.sh