Chore: Use Docker compose on CI (#26437)

pull/26466/head
Diego Sampaio 3 years ago committed by GitHub
parent 720566d17d
commit d61b3a4d49
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
  1. 69
      .github/actions/build-docker-image-service/action.yml
  2. 357
      .github/workflows/build_and_test.yml
  3. 15
      apps/meteor/tests/end-to-end/api/01-users.js
  4. 120
      docker-compose-ci.yml

@ -1,69 +0,0 @@
name: 'Build Micro Services Docker image'
description: 'Build Rocket.Chat Micro Services Docker images'
inputs:
docker-tag:
required: true
service:
required: true
username:
required: false
password:
required: false
outputs:
image-name:
value: ${{ steps.build-image.outputs.image-name }}
runs:
using: "composite"
steps:
# - shell: bash
# name: Free disk space
# run: |
# sudo swapoff -a
# sudo rm -f /swapfile
# sudo apt clean
# docker rmi $(docker image ls -aq)
# df -h
- shell: bash
id: build-image
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
IMAGE_TAG="${{ inputs.docker-tag }}"
IMAGE_NAME="ghcr.io/${LOWERCASE_REPOSITORY}/${{ inputs.service }}-service:${IMAGE_TAG}"
echo "Building Docker image for service: ${{ inputs.service }}:${IMAGE_TAG}"
if [[ "${{ inputs.service }}" == "ddp-streamer" ]]; then
DOCKERFILE_PATH="./ee/apps/ddp-streamer/Dockerfile"
else
DOCKERFILE_PATH="./apps/meteor/ee/server/services/Dockerfile"
fi
docker build \
--build-arg SERVICE=${{ inputs.service }} \
-t ${IMAGE_NAME} \
-f ${DOCKERFILE_PATH} \
.
echo "::set-output name=image-name::${IMAGE_NAME}"
- name: Login to GitHub Container Registry
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop'
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ inputs.username }}
password: ${{ inputs.password }}
- name: Publish image
shell: bash
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop'
run: |
echo "Push Docker image: ${{ steps.build-image.outputs.image-name }}"
docker push ${{ steps.build-image.outputs.image-name }}

@ -264,77 +264,87 @@ jobs:
tar xzf Rocket.Chat.tar.gz
rm Rocket.Chat.tar.gz
- name: Build Docker image
id: build-docker-image
if: matrix.mongodb-version != '5.0'
uses: ./.github/actions/build-docker-image
with:
root-dir: /tmp/build
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
release: official
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: Start containers
env:
MONGO_URL: "mongodb://host.docker.internal:27017/rocketchat?replicaSet=rs0&directConnection=true"
MONGO_OPLOG_URL: "mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true"
run: |
export LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
- name: Build Alpine Docker image
id: build-docker-image-alpine
if: matrix.mongodb-version == '5.0'
uses: ./.github/actions/build-docker-image
# test alpine image on mongo 5.0 (no special reason to be mongo 5.0 but we need to test alpine at least once)
if [[ '${{ matrix.mongodb-version }}' = '5.0' ]]; then
export RC_DOCKERFILE="${{ github.workspace }}/apps/meteor/.docker/Dockerfile.alpine"
export RC_DOCKER_TAG="${{ needs.release-versions.outputs.gh-docker-tag }}.alpine"
else
export RC_DOCKERFILE="${{ github.workspace }}/apps/meteor/.docker/Dockerfile"
export RC_DOCKER_TAG="${{ needs.release-versions.outputs.gh-docker-tag }}.official"
fi;
docker compose -f docker-compose-ci.yml up -d --build rocketchat
sleep 10
until echo "$(docker compose -f docker-compose-ci.yml logs rocketchat)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && docker compose -f docker-compose-ci.yml logs rocketchat && exit 1
sleep 10
done
- name: Login to GitHub Container Registry
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop'
uses: docker/login-action@v2
with:
root-dir: /tmp/build
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
release: alpine
registry: ghcr.io
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
# TODO move startup/restart to its own github action
- name: Start up Rocket.Chat
- name: Publish Docker images to GitHub Container Registry
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop'
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
export LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
# test alpine image on mongo 5.0 (no special reason to be mongo 5.0 but we need to test alpine at least once)
if [[ '${{ matrix.mongodb-version }}' = '5.0' ]]; then
IMAGE_TAG="${{ needs.release-versions.outputs.gh-docker-tag }}.alpine"
export RC_DOCKER_TAG="${{ needs.release-versions.outputs.gh-docker-tag }}.alpine"
else
IMAGE_TAG="${{ needs.release-versions.outputs.gh-docker-tag }}.official"
export RC_DOCKER_TAG="${{ needs.release-versions.outputs.gh-docker-tag }}.official"
fi;
IMAGE_NAME="ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${IMAGE_TAG}"
docker compose -f docker-compose-ci.yml push rocketchat
docker run --name rocketchat -d \
--link mongodb \
-p 3000:3000 \
-e TEST_MODE=true \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
${IMAGE_NAME}
if [[ '${{ matrix.mongodb-version }}' = '4.4' ]]; then
IMAGE_NAME_BASE="ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${{ needs.release-versions.outputs.gh-docker-tag }}"
until echo "$(docker logs rocketchat)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
done
echo "Push Docker image: ${IMAGE_NAME_BASE}"
docker tag ${IMAGE_NAME_BASE}.official $IMAGE_NAME_BASE
docker push $IMAGE_NAME_BASE
fi;
- name: E2E Test API
run: |
docker logs rocketchat --tail=50
docker ps
docker compose -f docker-compose-ci.yml logs rocketchat --tail=50
cd ./apps/meteor
for i in $(seq 1 5); do
docker stop rocketchat
npm run testapi && s=0 && break || s=$?
docker compose -f ../../docker-compose-ci.yml logs rocketchat --tail=100
docker compose -f ../../docker-compose-ci.yml stop rocketchat
docker exec mongodb mongo rocketchat --eval 'db.dropDatabase()'
NOW=$(date "+%Y-%m-%dT%H:%M:%SZ")
echo $NOW
docker start rocketchat
docker compose -f ../../docker-compose-ci.yml start rocketchat
until echo "$(docker logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
until echo "$(docker compose -f ../../docker-compose-ci.yml logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
done
npm run testapi && s=0 && break || s=$? && docker logs rocketchat --tail=100;
done;
done;
exit $s
@ -355,16 +365,16 @@ jobs:
- name: E2E Test UI
run: |
docker logs rocketchat --tail=50
docker stop rocketchat
docker ps
docker compose -f docker-compose-ci.yml logs rocketchat --tail=50
docker exec mongodb mongo rocketchat --eval 'db.dropDatabase()'
NOW=$(date "+%Y-%m-%dT%H:%M:%SZ")
echo $NOW
docker start rocketchat
docker compose -f docker-compose-ci.yml restart rocketchat
until echo "$(docker logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
until echo "$(docker compose -f docker-compose-ci.yml logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
@ -396,9 +406,6 @@ jobs:
mongodb-version: ${{ matrix.mongodb-version-ee }}
mongodb-replica-set: rs0
- name: Launch NATS
run: sudo docker run --name nats -d -p 4222:4222 nats:2.4
- uses: actions/checkout@v3
- name: Use Node.js ${{ matrix.node-version }}
@ -431,208 +438,78 @@ jobs:
tar xzf Rocket.Chat.tar.gz
rm Rocket.Chat.tar.gz
- name: Build Docker image
id: build-docker-image
uses: ./.github/actions/build-docker-image
with:
root-dir: /tmp/build
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
release: official
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: 'Build Docker image: account'
uses: ./.github/actions/build-docker-image-service
with:
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
service: account
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: 'Build Docker image: authorization'
uses: ./.github/actions/build-docker-image-service
with:
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
service: authorization
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: 'Build Docker image: ddp-streamer'
uses: ./.github/actions/build-docker-image-service
with:
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
service: ddp-streamer
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: 'Build Docker image: presence'
uses: ./.github/actions/build-docker-image-service
with:
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
service: presence
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: 'Build Docker image: stream-hub'
uses: ./.github/actions/build-docker-image-service
with:
docker-tag: ${{ needs.release-versions.outputs.gh-docker-tag }}
service: stream-hub
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: Launch Traefik
run: |
docker run --name traefik -d \
-p 3000:80 \
-v /var/run/docker.sock:/var/run/docker.sock \
traefik:2.7 \
--providers.docker=true
# TODO move startup/restart to its own github action
- name: Start up Rocket.Chat
- name: Start containers
env:
MONGO_URL: "mongodb://host.docker.internal:27017/rocketchat?replicaSet=rs0&directConnection=true"
RC_DOCKERFILE: "${{ github.workspace }}/apps/meteor/.docker/Dockerfile"
RC_DOCKER_TAG: "${{ needs.release-versions.outputs.gh-docker-tag }}.official"
DOCKER_TAG: ${{ needs.release-versions.outputs.gh-docker-tag }}
TRANSPORTER: nats://nats:4222
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
export LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
docker run --name rocketchat -d \
--link mongodb \
--link nats \
-e TEST_MODE=true \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
-e TRANSPORTER=nats://nats:4222 \
-e MOLECULER_LOG_LEVEL=info \
-e ENTERPRISE_LICENSE="${{ secrets.ENTERPRISE_LICENSE }}" \
-e SKIP_PROCESS_EVENT_REGISTRATION=true \
--label 'traefik.http.routers.rocketchat.rule=PathPrefix(`/`)' \
ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${{ needs.release-versions.outputs.gh-docker-tag }}.official
# spin up all micro services
docker run --name ddp-streamer -d \
--link mongodb \
--link nats \
-e PORT=4000 \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
-e TRANSPORTER=nats://nats:4222 \
-e MOLECULER_LOG_LEVEL=info \
--label 'traefik.http.services.ddp-streamer.loadbalancer.server.port=4000' \
--label 'traefik.http.routers.ddp-streamer.rule=PathPrefix(`/websocket`) || PathPrefix(`/sockjs`)' \
ghcr.io/${LOWERCASE_REPOSITORY}/ddp-streamer-service:${{ needs.release-versions.outputs.gh-docker-tag }}
- name: 'Start service: stream-hub'
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
docker compose -f docker-compose-ci.yml up -d --build
docker run --name stream-hub -d \
--link mongodb \
--link nats \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
-e TRANSPORTER=nats://nats:4222 \
-e MOLECULER_LOG_LEVEL=info \
ghcr.io/${LOWERCASE_REPOSITORY}/stream-hub-service:${{ needs.release-versions.outputs.gh-docker-tag }}
until echo "$(docker logs stream-hub)" | grep -q "NetworkBroker started successfully"; do
echo "Waiting 'stream-hub' to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
done
sleep 10
- name: 'Start service: account'
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
docker run --name account -d \
--link mongodb \
--link nats \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
-e TRANSPORTER=nats://nats:4222 \
-e MOLECULER_LOG_LEVEL=info \
ghcr.io/${LOWERCASE_REPOSITORY}/account-service:${{ needs.release-versions.outputs.gh-docker-tag }}
until echo "$(docker logs account)" | grep -q "NetworkBroker started successfully"; do
echo "Waiting 'account' to start up"
((c++)) && ((c==10)) && exit 1
until echo "$(docker compose -f docker-compose-ci.yml logs ddp-streamer-service)" | grep -q "NetworkBroker started successfully"; do
echo "Waiting 'ddp-streamer' to start up"
((c++)) && ((c==10)) && docker compose -f docker-compose-ci.yml logs ddp-streamer-service && exit 1
sleep 10
done
- name: 'Start service: authorization'
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
docker run --name authorization -d \
--link mongodb \
--link nats \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
-e TRANSPORTER=nats://nats:4222 \
-e MOLECULER_LOG_LEVEL=info \
ghcr.io/${LOWERCASE_REPOSITORY}/authorization-service:${{ needs.release-versions.outputs.gh-docker-tag }}
until echo "$(docker logs authorization)" | grep -q "NetworkBroker started successfully"; do
echo "Waiting 'authorization' to start up"
((c++)) && ((c==10)) && exit 1
until echo "$(docker compose -f docker-compose-ci.yml logs rocketchat)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && docker compose -f docker-compose-ci.yml logs rocketchat && exit 1
sleep 10
done
- name: 'Start service: presence'
- name: Login to GitHub Container Registry
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop'
uses: docker/login-action@v2
with:
registry: ghcr.io
username: ${{ secrets.CR_USER }}
password: ${{ secrets.CR_PAT }}
- name: Publish Docker images to GitHub Container Registry
if: github.event.pull_request.head.repo.full_name == github.repository || github.event_name == 'release' || github.ref == 'refs/heads/develop'
env:
DOCKER_TAG: ${{ needs.release-versions.outputs.gh-docker-tag }}
run: |
LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
export LOWERCASE_REPOSITORY=$(echo "${{ github.repository_owner }}" | tr "[:upper:]" "[:lower:]")
docker run --name presence -d \
--link mongodb \
--link nats \
-e "MONGO_URL=mongodb://mongodb:27017/rocketchat?replicaSet=rs0&directConnection=true" \
-e "MONGO_OPLOG_URL=mongodb://mongodb:27017/local?replicaSet=rs0&directConnection=true" \
-e TRANSPORTER=nats://nats:4222 \
-e MOLECULER_LOG_LEVEL=info \
ghcr.io/${LOWERCASE_REPOSITORY}/presence-service:${{ needs.release-versions.outputs.gh-docker-tag }}
until echo "$(docker logs presence)" | grep -q "NetworkBroker started successfully"; do
echo "Waiting 'presence' to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
done
docker compose -f docker-compose-ci.yml push \
authorization-service \
account-service \
ddp-streamer-service \
presence-service \
stream-hub-service
- name: E2E Test API
run: |
docker ps
docker compose -f docker-compose-ci.yml logs --tail=50
cd ./apps/meteor
for i in $(seq 1 5); do
docker stop rocketchat
docker stop stream-hub
docker stop account
docker stop authorization
docker stop ddp-streamer
docker stop presence
npm run testapi && s=0 && break || s=$?;
docker compose -f ../../docker-compose-ci.yml logs --tail=100
docker compose -f ../../docker-compose-ci.yml stop
docker exec mongodb mongo rocketchat --eval 'db.dropDatabase()'
NOW=$(date "+%Y-%m-%dT%H:%M:%SZ")
echo $NOW
docker start rocketchat
docker start stream-hub
docker start account
docker start authorization
docker start ddp-streamer
docker start presence
docker compose -f ../../docker-compose-ci.yml start
until echo "$(docker logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
until echo "$(docker compose -f ../../docker-compose-ci.yml logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
done
docker logs rocketchat --tail=50
docker logs stream-hub --tail=50
docker logs account --tail=50
docker logs authorization --tail=50
docker logs ddp-streamer --tail=50
docker logs presence --tail=50
npm run testapi && s=0 && break || s=$? && docker logs rocketchat --tail=100 && docker logs authorization --tail=50;
done;
done;
exit $s
@ -652,39 +529,21 @@ jobs:
- name: E2E Test UI
run: |
docker logs rocketchat --tail=50
docker stop rocketchat
docker stop stream-hub
docker stop account
docker stop authorization
docker stop ddp-streamer
docker stop presence
docker ps
docker compose -f docker-compose-ci.yml logs rocketchat --tail=50
docker exec mongodb mongo rocketchat --eval 'db.dropDatabase()'
NOW=$(date "+%Y-%m-%dT%H:%M:%SZ")
echo $NOW
docker start rocketchat
docker start stream-hub
docker start account
docker start authorization
docker start ddp-streamer
docker start presence
docker compose -f docker-compose-ci.yml restart
until echo "$(docker logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
until echo "$(docker compose -f docker-compose-ci.yml logs rocketchat --since $NOW)" | grep -q "SERVER RUNNING"; do
echo "Waiting Rocket.Chat to start up"
((c++)) && ((c==10)) && exit 1
sleep 10
done
docker logs rocketchat --tail=50
docker logs stream-hub --tail=50
docker logs account --tail=50
docker logs authorization --tail=50
docker logs ddp-streamer --tail=50
docker logs presence --tail=50
cd ./apps/meteor
E2E_COVERAGE=true IS_EE=true yarn test:e2e

@ -2055,22 +2055,9 @@ describe('[Users]', function () {
});
describe('[/users.delete]', () => {
const updatePermission = (permission, roles) =>
new Promise((resolve) => {
request
.post(api('permissions.update'))
.set(credentials)
.send({ permissions: [{ _id: permission, roles }] })
.expect('Content-Type', 'application/json')
.expect(200)
.expect((res) => {
expect(res.body).to.have.property('success', true);
})
.end(resolve);
});
const testUsername = `testuserdelete${+new Date()}`;
let targetUser;
beforeEach((done) => {
const testUsername = `testuserdelete${+new Date()}`;
request
.post(api('users.register'))
.set(credentials)

@ -0,0 +1,120 @@
version: '3.8'
services:
rocketchat:
build:
dockerfile: ${RC_DOCKERFILE}
context: /tmp/build
image: ghcr.io/${LOWERCASE_REPOSITORY}/rocket.chat:${RC_DOCKER_TAG}
environment:
- TEST_MODE=true
- "MONGO_URL=${MONGO_URL}"
- "MONGO_OPLOG_URL=${MONGO_OPLOG_URL}"
- "TRANSPORTER=${TRANSPORTER}"
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- traefik
labels:
traefik.enable: true
traefik.http.services.rocketchat.loadbalancer.server.port: 3000
traefik.http.routers.rocketchat.service: rocketchat
traefik.http.routers.rocketchat.rule: PathPrefix(`/`)
authorization-service:
build:
dockerfile: apps/meteor/ee/server/services/Dockerfile
args:
SERVICE: authorization
image: ghcr.io/${LOWERCASE_REPOSITORY}/authorization-service:${DOCKER_TAG}
environment:
- "MONGO_URL=${MONGO_URL}"
- TRANSPORTER=nats://nats:4222
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- nats
account-service:
build:
dockerfile: apps/meteor/ee/server/services/Dockerfile
args:
SERVICE: account
image: ghcr.io/${LOWERCASE_REPOSITORY}/account-service:${DOCKER_TAG}
environment:
- MONGO_URL=${MONGO_URL}
- TRANSPORTER=nats://nats:4222
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- nats
presence-service:
build:
dockerfile: apps/meteor/ee/server/services/Dockerfile
args:
SERVICE: presence
image: ghcr.io/${LOWERCASE_REPOSITORY}/presence-service:${DOCKER_TAG}
environment:
- MONGO_URL=${MONGO_URL}
- TRANSPORTER=nats://nats:4222
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- nats
ddp-streamer-service:
build:
dockerfile: ee/apps/ddp-streamer/Dockerfile
args:
SERVICE: ddp-streamer
image: ghcr.io/${LOWERCASE_REPOSITORY}/ddp-streamer-service:${DOCKER_TAG}
environment:
- MONGO_URL=${MONGO_URL}
- TRANSPORTER=nats://nats:4222
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- nats
- traefik
labels:
traefik.enable: true
traefik.http.services.ddp-streamer-service.loadbalancer.server.port: 3000
traefik.http.routers.ddp-streamer-service.service: ddp-streamer-service
traefik.http.routers.ddp-streamer-service.rule: PathPrefix(`/websocket`) || PathPrefix(`/sockjs`)
stream-hub-service:
build:
dockerfile: apps/meteor/ee/server/services/Dockerfile
args:
SERVICE: stream-hub
image: ghcr.io/${LOWERCASE_REPOSITORY}/stream-hub-service:${DOCKER_TAG}
environment:
- MONGO_URL=${MONGO_URL}
- TRANSPORTER=nats://nats:4222
- MOLECULER_LOG_LEVEL=info
extra_hosts:
- "host.docker.internal:host-gateway"
depends_on:
- nats
nats:
image: nats:2.6-alpine
extra_hosts:
- "host.docker.internal:host-gateway"
ports:
- "4222:4222"
traefik:
image: traefik:v2.8
command:
- --providers.docker=true
ports:
- 3000:80
volumes:
- /var/run/docker.sock:/var/run/docker.sock
Loading…
Cancel
Save