For "DIY" users free to choose their own infrastructure, ODK Central comes with a nice and easy orchestration (docker-compose) and guidance on deployment and hosting (DigitalOcean).
For the "need it faster" users, GetODK (and others) offer fully hosted ODK Central instances.
Some ODK users however work for organisations which are big enough to have their own infrastructure (e.g. Kubernetes) and policies (e.g. HIPAA - in house only), which means they have to re-implement DevOps all by themselves within their own contraints.
ODK Central now uses no less than 9 Docker images, four of them custom built.
The third user group needs
- high-level guidance (= ODK Central docker-compose in human words) - like Installing ODK central in microsoft azure cloud but updated to latest Enketo / v1.0
- pre-built, up to date, Docker images.
Images can be built locally.
(clone ODK Central) git pull git submodule update -i docker build . -f service.dockerfile -t dbcawa/odk_service:22.214.171.124 docker build . -f nginx.dockerfile -t dbcawa/odk_nginx:126.96.36.199 docker build . -f enketo.dockerfile -t dbcawa/odk_enketo:188.8.131.52 docker build . -f secrets.dockerfile -t dbcawa/odk_secrets:184.108.40.206
These in-official images are hosted at
Disclaimer: These images are not affiliated with or supported by GetODK, use them at your own risk
Suggested better approach
- Let GitHub Actions build Docker images on push, apparently that's a thing now.
- Let GitHub Actions push those Docker images to the GitHub container registry.
- e.g. following https://github.com/marketplace/actions/build-and-push-docker-images.
- Tag images appropriately - "latest" for master, plus tagged releases (e.g. 1.0.1).
This would mean that Docker images are built automatically. The build would be under the control of the GetODK core team. Together with some high-level docs, this could help making ODK Central easier to deploy on non-supported infrastructure.
A distant dream would be a working helm chart for ODK Central, which would simplify ODK Central deployment to:
- Install Rancher (comes with Kubernetes) on any cloud provider
- Launch ODK Central from the Rancher app catalogue
Update: thinking above out loud at https://github.com/dbca-wa/central/blob/master/README_k8s.md