The modelling for this was developed by Neil Davies and ported to an R package here https://github.com/explodecomputer/USSpensions.
This is a shiny wrapper for the functions in that package.
Clone the repository
git clone https://github.com/explodecomputer/USSpensions-shiny.git
Install the dependencies
devtools::install_github("explodecomputer/USSpensions")
install.packages("shiny")
install.packages("shinydashboard")
Then in R when the work directory is path/to/USSpensions-shiny
, run:
library(shiny)
runApp()
There are two parts to updating the website:
If any changes are made to the shiny app then increment the version number by running
./update_version.sh <1/2/3>
The shiny app is deployed as a Docker container on crashdown.epi.bris.ac.uk
. To update either because of changes to the app or the data dictionary, ssh into the server, clone the repository
git clone git@github.com:explodecomputer/USSpensions-shiny.git
Then build and deploy
cd USSpensions-shiny
./release.sh
We need to build a docker image of the site, push it to hub.docker.com and then deploy it to Kubernetes
Build:
docker build . -t explodecomputer/usspensions-shiny:<VERSION>
Push to docker hub. First login with docker hub credentials
docker login
Next push
docker push explodecomputer/usspensions-shiny:<VERSION>
Kubernetes deployment
- Setup
kubectl
on local machine kubectl apply -f uss-pensions-shiny_deployment.yml
kubectl apply -f uss-pensions-shiny_service.yml
- Check with
kubectl describe [deployment/service] uss-pensions-shiny
Updating when image updates:
- List existing pods
kubectl get deployments
- Delete each of them
kubectl delete deployment uss-pensions-shiny-deployment
They should be automatically replaced