Building and deploying galaxy-kickstart in docker
You need to have docker installed and configured for your user.
The repository comes with various Dockerfiles that can be used to configure a deployment using Docker, or you can start with a pre-built docker image.
Running images from the dockerhub
You can obtain a pre-built docker image from the dockerhub:
docker pull artbio/galaxy-kickstart-base
Start the image and serve it on port 8080 of your local machine in the standard docker way:
CID=`docker run -d -p 8080:80 artbio/galaxy-kickstart-base`
-p 8080:80 will forward requests to nginx inside the container running on port 80.
Runtime changes to pre-built docker images
If you wish to reach the container on a subdirectory, add
-e NGINX_GALAXY_LOCATION="/my-subdirectory" to the docker call
and galaxy will be served at
We recommend changing the default admin user as well, so the command becomes:
CID=`docker run -d -e NGINX_GALAXY_LOCATION="/my-subdirectory" -e GALAXY_CONFIG_ADMIN_USERSfirstname.lastname@example.org -p 8080:80 artbio/galaxy-kickstart-base`
Commit changed containers to new images
As with standard docker containers, you can change, tag and commit running containers when you have configured them to your liking: Commit the changes to my-new-image
docker commit $CID my-new-image
Stop and remove the original container:
docker stop $CID && docker rm $CID
Start the new container:
CID=`docker run -d -e NGINX_GALAXY_LOCATION="/my-subdirectory" -e GALAXY_CONFIG_ADMIN_USERSemail@example.com -p 8080:80 my-new-image`
Persisting to disk
All changes made to the container are by default ephemeral; if you remove the container, the changes are gone.
To persist data (this includes the postgresql database, galaxy's config files and your user data), mount a Volume into
the containers /export folder.
Due to the persistance mechanism (we use bind-mounts inside the container), you need to privilege the container.
Assuming you would like to mount your local
/data folder, run
CID=`docker run -d --privileged -v /data:/export -p 8080:80 my-new-image`
This will run through the persistence tags of the galaxy.yml and export the required files to /export (now on your machine's /data). From the new location the files are being bind-mounted back into their original location.