Docker containers

Qserv is also available as a Docker image (see


Our continuous integration service produces automatically docker containers for each commit pushed to Github. Containers names are displayed on top of travis console.


This procedure was tested with Docker 1.13.

Build Qserv image from a Github branch

Create Qserv latest release image, with 3 names:

  • qserv:latest
  • qserv:dev
  • qserv:YYY_MM
. /path/to/lsst/stack/loadLSST.bash
cd ${SRC_DIR}/qserv/admin/tools/docker -C

Create Qserv cutting-edge dependencies image, named qserv:dev:

# cutting-edge dependencies needs to be tagged eups-dev
# on distribution server.
cd ${SRC_DIR}/qserv/admin/tools/docker -CD

Create Qserv image for a given git tag/branch:

In order to push produced Docker images to Docker Hub, prefix <docker-image-name> with qserv/qserv: in instructions below.

# Code need to be pushed on github
cd ${SRC_DIR}/qserv/admin/tools/docker -R <git-tag/branch> -T <docker-image-name>
# Current Qserv version will have eups tag named qserv-dev

Create Qserv master and worker images from a given Qserv version:

# Code need to be pushed on github
# eups tag named qserv-dev will be used to setup Qserv version
cd ${SRC_DIR}/qserv/admin/tools/docker -i <docker-image-name>

Use cases

Test latest release

Run mono-node integration test against latest Qserv release:

docker run -it --rm \
-h $(hostname)-docker -u qserv \
fjammes/qserv:latest \

Develop and test

Create Qserv image for a developer workstation:

cd ${SRC_DIR}/qserv/admin/tools/docker
# change uid in image so that it match host user id
# in order to mount rw user source code in container

Set uid in qserv:dev w.r.t your host machine user account. This creates a qserv:dev-uid image which can mount host source code in a container with correct permissions. Host might be a development machine or a continuous integration server.


Build, configure and run Qserv from source in qserv:work-uid container using source and run directory located on a development machine.

docker run -it --rm \
-h $(hostname)-docker \
-v /home/qserv/src/qserv:/home/dev/src/qserv \
-v /home/qserv/qserv-run/:/home/dev/qserv-run \
-u dev \
fjammes/qserv:work-uid \
/bin/sh -c "/home/dev/scripts/ && /qserv/scripts/"

Useful commands