Build docker images online and make them available in a container registry
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
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.