Update Docker (#1542)

* Separate Docker images, rather than tags

* Allow specifying tag to build/push/pull

* Include goose in Docker builds
This commit is contained in:
Neil Alexander 2020-10-20 11:34:22 +01:00 committed by GitHub
parent a71360d099
commit 92982a402f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
6 changed files with 62 additions and 94 deletions

View file

@ -6,6 +6,7 @@ ARG component=monolith
ENV entrypoint=${component} ENV entrypoint=${component}
COPY --from=base /build/bin/${component} /usr/bin COPY --from=base /build/bin/${component} /usr/bin
COPY --from=base /build/bin/goose /usr/bin
VOLUME /etc/dendrite VOLUME /etc/dendrite
WORKDIR /etc/dendrite WORKDIR /etc/dendrite

View file

@ -2,7 +2,7 @@ version: "3.4"
services: services:
monolith: monolith:
hostname: monolith hostname: monolith
image: matrixdotorg/dendrite:monolith image: matrixdotorg/dendrite-monolith:latest
command: [ command: [
"--config=dendrite.yaml", "--config=dendrite.yaml",
"--tls-cert=server.crt", "--tls-cert=server.crt",

View file

@ -1,28 +1,8 @@
version: "3.4" version: "3.4"
services: services:
client_api_proxy:
hostname: client_api_proxy
image: matrixdotorg/dendrite:clientproxy
command: [
"--bind-address=:8008",
"--client-api-server-url=http://client_api:8071",
"--sync-api-server-url=http://sync_api:8073",
"--media-api-server-url=http://media_api:8074"
]
volumes:
- ./config:/etc/dendrite
networks:
- internal
depends_on:
- sync_api
- client_api
- media_api
ports:
- "8008:8008"
client_api: client_api:
hostname: client_api hostname: client_api
image: matrixdotorg/dendrite:clientapi image: matrixdotorg/dendrite-clientapi:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -34,7 +14,7 @@ services:
media_api: media_api:
hostname: media_api hostname: media_api
image: matrixdotorg/dendrite:mediaapi image: matrixdotorg/dendrite-mediaapi:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -45,7 +25,7 @@ services:
sync_api: sync_api:
hostname: sync_api hostname: sync_api
image: matrixdotorg/dendrite:syncapi image: matrixdotorg/dendrite-syncapi:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -56,7 +36,7 @@ services:
room_server: room_server:
hostname: room_server hostname: room_server
image: matrixdotorg/dendrite:roomserver image: matrixdotorg/dendrite-roomserver:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -67,7 +47,7 @@ services:
edu_server: edu_server:
hostname: edu_server hostname: edu_server
image: matrixdotorg/dendrite:eduserver image: matrixdotorg/dendrite-eduserver:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -76,28 +56,9 @@ services:
networks: networks:
- internal - internal
federation_api_proxy:
hostname: federation_api_proxy
image: matrixdotorg/dendrite:federationproxy
command: [
"--bind-address=:8448",
"--federation-api-url=http://federation_api:8072",
"--media-api-server-url=http://media_api:8074"
]
volumes:
- ./config:/etc/dendrite
depends_on:
- federation_api
- federation_sender
- media_api
networks:
- internal
ports:
- "8448:8448"
federation_api: federation_api:
hostname: federation_api hostname: federation_api
image: matrixdotorg/dendrite:federationapi image: matrixdotorg/dendrite-federationapi:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -108,7 +69,7 @@ services:
federation_sender: federation_sender:
hostname: federation_sender hostname: federation_sender
image: matrixdotorg/dendrite:federationsender image: matrixdotorg/dendrite-federationsender:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -119,7 +80,7 @@ services:
key_server: key_server:
hostname: key_server hostname: key_server
image: matrixdotorg/dendrite:keyserver image: matrixdotorg/dendrite-keyserver:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -130,7 +91,7 @@ services:
signing_key_server: signing_key_server:
hostname: signing_key_server hostname: signing_key_server
image: matrixdotorg/dendrite:signingkeyserver image: matrixdotorg/dendrite-signingkeyserver:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -141,7 +102,7 @@ services:
user_api: user_api:
hostname: user_api hostname: user_api
image: matrixdotorg/dendrite:userapi image: matrixdotorg/dendrite-userapi:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]
@ -152,7 +113,7 @@ services:
appservice_api: appservice_api:
hostname: appservice_api hostname: appservice_api
image: matrixdotorg/dendrite:appservice image: matrixdotorg/dendrite-appservice:latest
command: [ command: [
"--config=dendrite.yaml" "--config=dendrite.yaml"
] ]

View file

@ -2,20 +2,22 @@
cd $(git rev-parse --show-toplevel) cd $(git rev-parse --show-toplevel)
docker build -f build/docker/Dockerfile -t matrixdotorg/dendrite:latest . TAG=${1:-latest}
docker build -t matrixdotorg/dendrite:monolith --build-arg component=dendrite-monolith-server -f build/docker/Dockerfile.component . echo "Building tag '${TAG}'"
docker build -t matrixdotorg/dendrite:appservice --build-arg component=dendrite-appservice-server -f build/docker/Dockerfile.component . docker build -f build/docker/Dockerfile -t matrixdotorg/dendrite:${TAG} .
docker build -t matrixdotorg/dendrite:clientapi --build-arg component=dendrite-client-api-server -f build/docker/Dockerfile.component .
docker build -t matrixdotorg/dendrite:clientproxy --build-arg component=client-api-proxy -f build/docker/Dockerfile.component . docker build -t matrixdotorg/dendrite-monolith:${TAG} --build-arg component=dendrite-monolith-server -f build/docker/Dockerfile.component .
docker build -t matrixdotorg/dendrite:eduserver --build-arg component=dendrite-edu-server -f build/docker/Dockerfile.component .
docker build -t matrixdotorg/dendrite:federationapi --build-arg component=dendrite-federation-api-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:federationsender --build-arg component=dendrite-federation-sender-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:federationproxy --build-arg component=federation-api-proxy -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:keyserver --build-arg component=dendrite-key-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:mediaapi --build-arg component=dendrite-media-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:roomserver --build-arg component=dendrite-room-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:syncapi --build-arg component=dendrite-sync-api-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:signingkeyserver --build-arg component=dendrite-signing-key-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:userapi --build-arg component=dendrite-user-api-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 .

View file

@ -1,17 +1,19 @@
#!/bin/bash #!/bin/bash
docker pull matrixdotorg/dendrite:monolith TAG=${1:-latest}
docker pull matrixdotorg/dendrite:appservice echo "Pulling tag '${TAG}'"
docker pull matrixdotorg/dendrite:clientapi
docker pull matrixdotorg/dendrite:clientproxy docker pull matrixdotorg/dendrite-monolith:${TAG}
docker pull matrixdotorg/dendrite:eduserver
docker pull matrixdotorg/dendrite:federationapi docker pull matrixdotorg/dendrite-appservice:${TAG}
docker pull matrixdotorg/dendrite:federationsender docker pull matrixdotorg/dendrite-clientapi:${TAG}
docker pull matrixdotorg/dendrite:federationproxy docker pull matrixdotorg/dendrite-eduserver:${TAG}
docker pull matrixdotorg/dendrite:keyserver docker pull matrixdotorg/dendrite-federationapi:${TAG}
docker pull matrixdotorg/dendrite:mediaapi docker pull matrixdotorg/dendrite-federationsender:${TAG}
docker pull matrixdotorg/dendrite:roomserver docker pull matrixdotorg/dendrite-keyserver:${TAG}
docker pull matrixdotorg/dendrite:syncapi docker pull matrixdotorg/dendrite-mediaapi:${TAG}
docker pull matrixdotorg/dendrite:signingkeyserver docker pull matrixdotorg/dendrite-roomserver:${TAG}
docker pull matrixdotorg/dendrite:userapi docker pull matrixdotorg/dendrite-syncapi:${TAG}
docker pull matrixdotorg/dendrite-signingkeyserver:${TAG}
docker pull matrixdotorg/dendrite-userapi:${TAG}

View file

@ -1,17 +1,19 @@
#!/bin/bash #!/bin/bash
docker push matrixdotorg/dendrite:monolith TAG=${1:-latest}
docker push matrixdotorg/dendrite:appservice echo "Pushing tag '${TAG}'"
docker push matrixdotorg/dendrite:clientapi
docker push matrixdotorg/dendrite:clientproxy docker push matrixdotorg/dendrite-monolith:${TAG}
docker push matrixdotorg/dendrite:eduserver
docker push matrixdotorg/dendrite:federationapi docker push matrixdotorg/dendrite-appservice:${TAG}
docker push matrixdotorg/dendrite:federationsender docker push matrixdotorg/dendrite-clientapi:${TAG}
docker push matrixdotorg/dendrite:federationproxy docker push matrixdotorg/dendrite-eduserver:${TAG}
docker push matrixdotorg/dendrite:keyserver docker push matrixdotorg/dendrite-federationapi:${TAG}
docker push matrixdotorg/dendrite:mediaapi docker push matrixdotorg/dendrite-federationsender:${TAG}
docker push matrixdotorg/dendrite:roomserver docker push matrixdotorg/dendrite-keyserver:${TAG}
docker push matrixdotorg/dendrite:syncapi docker push matrixdotorg/dendrite-mediaapi:${TAG}
docker push matrixdotorg/dendrite:signingkeyserver docker push matrixdotorg/dendrite-roomserver:${TAG}
docker push matrixdotorg/dendrite:userapi docker push matrixdotorg/dendrite-syncapi:${TAG}
docker push matrixdotorg/dendrite-signingkeyserver:${TAG}
docker push matrixdotorg/dendrite-userapi:${TAG}