Docker Compose build configuration for SYRAS - Systematic Review Assistant.
There are currently two configurations:
1) Self Building (dev)
A DIY "self building" composition useful during alpha/beta development which does not need a CI platform nor container repository. It has the Dockerfiles in this standalone repo. This will take some time to build (e.g. 45mins mainly for SciPy etc)
git clone https://github.com/scipilot/sysrev-assist-docker cd sysrev-assist-docker/DIY docker-compose up
2) CI Build (production)
The "proper" CI image-based style, with the Dockerfiles in each component repository, with a CI server building them. In this case the compose may get replaced by another container orchestration, depending on the host.
The CI host is currently Docker Hub, the related image repositories are:
Replace and with the DNS details.
The DNS must be already pointing to the host (for Let's Encrypt to install certificates).
git clone https://github.com/scipilot/sysrev-assist-docker cd sysrev-assist-docker bin/install
To update after a code release and Docker Hub build use standard docker commands to fetch the latest images, then recreate containers and restart any updated services (with a brief outage).
docker-compose pull docker-compose up -d
The web application uses MongoDB which stores its data in a named Docker volume.
The document API uses SciKit Learn corpus files to persist its model, which is similarly stored in a named Docker volume.
Therefore the data is relatively safe, on the Docker host VM (e.g. under /var/lib/docker/volumes).
The Sematex Logsene (plus APM) monitoring solution works well with SysRev, after trying a few competitors. It has a workable basic free plan, and academic discounts which should help to get installs of this project off the ground.
export SPM_TOKEN= your token export LOGSENE_TOKEN= your token sudo docker run -d --name sematext-agent --restart=always -e SPM_TOKEN=$SPM_TOKEN -e LOGSENE_TOKEN=$LOGSENE_TOKEN -v /:/rootfs:ro -v /var/run/docker.sock:/var/run/docker.sock sematext/sematext-agent-docker
I looking into tagging and formatting the application and API logs to be more easily parsed and filtered to separate them from the web and Docker logs.