A HTTP server providing an API and a frontend for easy uploading to Genestack
- If any change is applied, version number (
config.py) should be updated.
VERSION = "2.4"
hgi-docker.shcan build dev and production images automatically with rightfrontend/.envfiles.
It creates mercury/genestack-uploader:2.4.dev and mercury/genestack-uploader:2.4.prod with the appropriate configuration in the image.
sudo ./hgi-docker.sh 2.4
Check built imgages
sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
mercury/genestack-uploader 2.4.prod ff7989cfc80c 14 minutes ago 1.3GB
mercury/genestack-uploader 2.4.dev 2cdf3ab5dbe3 14 minutes ago 1.3GB
- push the image to DockerHub
Log in docker with mercury first. (check secrets). Then push.
sudo docker login
sudo docker push mercury/genestack-uploader:2.4.dev
sudo docker push mercury/genestack-uploader:2.4.prod
-
log in dev and production (details on Confluence Swarm Page)
-
Update running image
docker pull mercury/genestack-uploader:2.4.dev
docker service scale mystack_genestack-uploader=1
docker service scale mystack_genestack-uploader=0
docker service update --image=mercury/genestack-uploader:2.4.dev mystack_genestack-uploader
docker service scale mystack_genestack-uploader=1
-
Update
frontend/.envandconfig.pyif needed. (Seedocs/spec/main-spec-updates/1.mdfor discussion about base URL paths.) -
Build the image, i.e.
docker build -t mercury/genestack-uploader:0.1.dev .
The tagging scheme used on this project is mercury/genestack-uploader:X.Y.{prod|dev}, where X.Y is the version number, and the final tag is prod or dev, describing which URL is specified in .env and config.py. (This is also described in more detail in docs/spec/main-spec-updates/1.md.)
If deploying in the HGI environments, the script hgi-docker.sh, passing the argument of the verison number will build the images as we need, for example ./hgi-docker.sh 2.0 will create mercury/genestack-uploader:2.0.dev and mercury/genestack-uploader:2.0.prod with the appropriate configuration in the image.
- Run the image. You must:
- provide the env variable
GSSERVERwith a value of eitherqcordefault - link to config files
/root/.genestack.cfgand/root/.s3cfg - link SSH key files to
/root/.ssh/id_rsa_genestackand/root/.ssh/id_rsa_genestack.pub
- provide the env variable
Optional Environment Variables:
- JOB_EXPIRY_HOURS: defaults to 168 (hours in a week) - this is how long a job should be kept after it has completed for it to be accessed using the /jobs/{uuid} API endpoint
- LOG_LEVEL: one of DEBUG, INFO, WARNING, ERROR, CRITICAL (defaults to INFO) - the minimum level of logs to be reported
The app runs on port 5000 on a Docker network, so that can be used to forward it, such as in a nginx container.
To test, you can also expose port 5000, i.e.
docker run -p 80:5000 -e GSSERVER=default -v /home/ubuntu/genestack-uploader/configs:/root -d --name genestack-uploader mercury/genestack-uploader:0.1.dev
There are two important version numbers to keep track of.
- The version number of the
uploadtogenestackpackage- This is updated in the package's
setup.pyfile, and is given a tag on GitLab - This tag number is then used in this repositories Dockerfile to install the right version
- This is updated in the package's
- The version number of this web app
- This is updated in
config.pyand is also reflected in the Docker image tag
- This is updated in
Ensure that these are kept up to date, as it really helps find bugs when you know which versions of each a particular image is running. The version numbers are displayed at the bottom of the homepage.