docker icon indicating copy to clipboard operation
docker copied to clipboard

Build docker images online and make them available in a container registry

Open tibroc opened this issue 9 months ago • 1 comments

In order to better support BBB docker the docker images should be build upstream within the main repositories and made available in a container registry, instead of building them locally.

This issue should serve as a starting point to document progress.

There has been documented interest in the community for BBB to better support containerized setups. @danimo has given presentations on several community events addressing the topic and others have stated similar opinions in varying forms.

Alternatives

  • Nightly updates of the submodules and rebuild if changes occured.
  • Instead of moving build pipelines into the original repositories, it would be possible to build workflows that trigger re-builds inside this repository.

However, both alternatives seem to be more error prone and less well supported than if the builds are maintained where the code is maintained as well.

Work already done

This repository already contains most of what is necessary to build the images and also has a working example of a docker compose setup. Additionally, https://github.com/danimo/bbb-docker contains initial work to build images using GitHub Actions and the github container registry.

What needs to be done

Implement automatic build pipelines for each component inside their respective main repository:

  • [x] bbb-webrtc-sfu - https://github.com/bigbluebutton/bbb-webrtc-sfu/pull/132
  • [x] bbb-webrtc-recorder - https://github.com/bigbluebutton/bbb-webrtc-recorder/pull/10
  • [x] bbb-webhooks ✅
  • [x] bbb-pads - https://github.com/bigbluebutton/bbb-pads/pull/62
  • [x] bbb-playback (how to pull this one in?) - https://github.com/bigbluebutton/bbb-playback/pull/294
  • [ ] all the rest in the bbb main repo - https://github.com/bigbluebutton/bigbluebutton/pull/22894

Annex: Overview BBB Docker Images

In docker-compose setup

An overview over all the docker images of BBB used in a docker-compose.yml setup as in the bigbluebutton/docker repo.

Component Built in bbb/docker Built Upstream Container Registry Upstream Repo Remarks
html5-client local build https://github.com/bigbluebutton/bigbluebutton
learning dashboard local build https://github.com/bigbluebutton/bigbluebutton
bbb-web local build https://github.com/bigbluebutton/bigbluebutton
freeswitch local build custom build from original source
nginx local build custom build with html5, learning dashboard, playback
etherpad local build from upstream with https://github.com/alangecker/bbb-etherpad-plugin and https://github.com/alangecker/bbb-etherpad-skin
bbb-pads ghcr.io/bigbluebutton/bbb-pads https://github.com/bigbluebutton/bbb-pads
bbb-export-annotations local build https://github.com/bigbluebutton/bigbluebutton
redis docker.io/library/redis standard
bbb-webrtc-sfu ghcr.io/bigbluebutton/bbb-webrtc-sfu https://github.com/bigbluebutton/bbb-webrtc-sfu
fsesl-akka local build https://github.com/bigbluebutton/bigbluebutton
apps-akka local build https://github.com/bigbluebutton/bigbluebutton
graphql-server local build https://github.com/bigbluebutton/bigbluebutton
grapqhl-actions local build https://github.com/bigbluebutton/bigbluebutton
graphql-middleware local build https://github.com/bigbluebutton/bigbluebutton
collabora docker.io/collabora/code standard
periodic (recording cleanup) local build custom script from docs
recordings local build only in bbb/docker
webrtc recorder local build https://github.com/bigbluebutton/bbb-webrtc-recorder
bbb-playback local build https://github.com/bigbluebutton/bbb-playback
bbb-webhooks docker.io/bigbluebutton/bbb-webhooks https://github.com/bigbluebutton/bbb-webhooks
haproxy ghcr.io/tomdess/docker-haproxy-certbot standard
coturn docker.io/coturn/coturn:4.6-alpine standard
greenlight docker.io/bigbluebutton/greenlight:v3.5.0 https://github.com/bigbluebutton/greenlight
postgres docker.io/library/postgres:16-alpine standard
prometheus-exporter docker.io/greenstatic/bigbluebutton-exporter https://github.com/greenstatic/bigbluebutton-exporter

Note: some components have docker files but they seem to be unmaintained.

Images Used in Builds

Some images are used for building or deriving other images.

Image Source Container Registry
bbb-build https://github.com/bigbluebutton/bbb-docker-build-packages docker.io/bigbluebutton/bbb-build
base-java https://github.com/bigbluebutton/docker/mod/base-java local

Overview

graph TD;

    subgraph bbb-net
        bbb-web
        freeswitch
        etherpad
        bbb-pads
        bbb-export-annotations
        redis
        webrtc-sfu
        fsesl-akka
        apps-akka
        bbb-graphql-server
        bbb-graphql-actions
        bbb-graphql-middleware
        collabora
        periodic
        recordings
        webhooks
        postgres
        prometheus-exporter
    end

    subgraph host-network
        nginx
        coturn
        haproxy
        bbb-webrtc-recorder
    end

    redis -->|depends_on| etherpad
    redis -->|depends_on| bbb-pads
    redis -->|depends_on| bbb-export-annotations
    redis -->|depends_on| webrtc-sfu
    redis -->|depends_on| fsesl-akka
    redis -->|depends_on| apps-akka
    redis -->|depends_on| bbb-graphql-actions
    redis -->|depends_on| bbb-graphql-middleware
    redis -->|depends_on| webhooks

    etherpad -->|depends_on| bbb-pads
    etherpad -->|depends_on| bbb-export-annotations

    postgres -->|depends_on| bbb-graphql-server
    postgres -->|depends_on| apps-akka

    bbb-web -->|depends_on| redis
    bbb-web -->|depends_on| etherpad
    bbb-web -->|depends_on| bbb-pads
    bbb-web -->|depends_on| collabora
    bbb-web -->|depends_on| bbb-graphql-server
    bbb-web -->|depends_on| bbb-graphql-middleware

    freeswitch -->|depends_on| webrtc-sfu
    freeswitch -->|depends_on| fsesl-akka

    bbb-graphql-server -->|depends_on| apps-akka
    bbb-graphql-server -->|depends_on| bbb-graphql-actions

    nginx -->|extra_hosts| bbb-web
    nginx -->|extra_hosts| etherpad
    nginx -->|extra_hosts| webrtc-sfu
    nginx -->|extra_hosts| bbb-graphql-server
    nginx -->|extra_hosts| bbb-graphql-middleware

    bbb-webrtc-recorder -->|depends_on| redis

tibroc avatar Mar 27 '25 16:03 tibroc

Looking forward to this.

I hope that such pre-built images would allow packages like https://github.com/bigbluebutton/bigbluebutton-api-php to ship with a docker-compose.yml and a github CI pipeline with a dockerized BBB.

donquixote avatar Apr 03 '25 13:04 donquixote