OpenELIS Dockerization - Tech Analysis
This page contains tech notes pertaining to OpenELIS dockerization activity.
draft page created for @Mohankumar Thangavel to update.
List of Action Items
Separate OpenElis Schema and fresh data from dump file Done
Parameterise Hostname in atomfeed.properties file and hibernate.cfg.xml needs analysis
Analyse docker registries to store docker images DONE
Going forward with existing Bahmni Repo on docker hubRegistry for storing build images
Registry for storing release images
Creating a new repository for Docker compose files NOT A PRIORITY
Volume mounting for OpenElis Application Data
Open Questions for Discussion
Are we managing the bahmni docker hub repo ? https://hub.docker.com/u/bahmni CLARIFIED
OpenElis Fresh Database contains some data? Do we need all those ?
As an implementer, will I alter database using SQL statements ?
Tech Debts:
OpenELIS schema is done partially from Liquibase and partially from SQL Script
Currently there are two dockerfiles for OpenElis Db- One for fresh DB and the other for Demo DB.
Demo data for OpenElis application comes from emr-functional-tests repo.
Flow Diagram:
Docker Repository Analysis
| Docker Hub | Github Container Registry (beta) | Amazon ECR |
---|---|---|---|
Public Repos | Unlimited - Free | Unlimited - Free | $0.10 \GB month |
Private Repos | Free -1 $5/month -unlimited | 500 MB is free | $0.10 \GB month |
Auto Clean Up | Need to do manually or by configuring an external cron job | Need to do manually or by configuring an external cron job | Has built in features |
Pull Rate Limits (May not be a considering factor) | 100 pulls in six hours for anonymous users | Not yet released. May have some when public version is announced. | Data charges are levied based on the total data transfer happened. |
Self Hosting Registry Server is also possible. https://docs.docker.com/registry/deploying/
Preferences :
Use Docker Hub for release images:
Standard docker registry used by most projects
Image naming is just simple (Ex: bahmni/openelis:0.93)
Use Github Container Registry for nightly build images:
As we have the plan of moving to Github Actions, this might be helpful in optimising build time.
Community members who want to test out build versions can explicitly pull and use these images in which case the image name must be replaced as ghcr.io/bahmni/openelis:0.93-121
Although docker hub supports any number of tags that can be stored in a repo, keeping it clean may help implementers to easily pickup right images.
The Bahmni documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)