Using Docker to Run Apollo

Running the Container

The container is publicly available as gmod/apollo:latest (latest is develop branch, stable is master branch) or gmod/apollo:<branch or tag>.

See or for what is available.

There are a large number of environment variables that can be adjusted to suit your site’s needs. These can be seen in the apollo-config.groovy file.


This procedure starts tomcat in a standard virtualized environment with a PostgreSQL database with Chado.

Install docker for your system if not previously done.

Choose an option:

  • To test a versioned release to test installation, e.g.: docker run -it -p 8888:8080 -v /directory/to/jbrowse/files:/data Other available versions
  • Install a latest release to test installation: docker run -it -p 8888:8080 -v /directory/to/jbrowse/files:/data gmod/apollo:latest
    • To make sure you have the latest pull with docker pull gmod/apollo to fetch newer versions


  • To run in production against persistent JBrowse data and a persistent database you should:
    • Create an empty directory for database data, e.g. postgres-data.
    • Put JBrowse data in a directory, e.g. /jbrowse/root/directory/.
    • docker run -it -v /jbrowse/root/directory/:/data -v /postgres/data/directory:/var/lib/postgresql -p 8888:8080
  • See docker run instructions to run as a daemon (-d) and with a fresh container each time (--rm) depending on your use-case.
  • You can run production using the build created by instead (
    • docker run -it -v /jbrowse/root/directory/:/data -v postgres-data:/var/lib/postgresql -p 8888:8080

You can configure options if need be (though default will work) by setting environmental variables for apollo-config.groovy by passing through via multiple -e parameters :

- `docker run -it -e APOLLO_ADMIN_PASSWORD=superdupersecrect -v /jbrowse/root/directory/:/data -v postgres-data:/var/lib/postgresql  -p 8888:8080`

In all cases, Apollo will be available at http://localhost:8888/ (or 8888 if you don’t configure the port).

Additional options coudl be to set memory (required for running production off a mac) --memory=4g, running a docker daemon d or adding debugging to the server -e "WEBAPOLLO_DEBUG=true". For example (after creating the local apollo_shared_dir):

docker run --memory=4g -d -it -p 8888:8080 -v `pwd`/apollo_shared_dir/:`pwd`/apollo_shared_dir/ -e "WEBAPOLLO_DEBUG=true"  -v /postgres/data/directory:/var/lib/postgresql 

When you use the above mount directory /jbrowse/root/directory and your genome is in /jbrowse/root/directory/myawesomegenome you’ll point to the directory: /data/myawesomegenome.

NOTE: If you don’t use a locally mounted PostgreSQL database (e.g., creating an empty directory and mounting using -v postgres-data:/var/lib/postgresql) or set appropriate environment variables for a remote database ( see variables defined here) your annotations and setup will not be persisted.

Logging In

The default credentials in this image are:

| Credentials | | | — | —————— | | Username | | | Password | password |

Example Workflow

  1. Make the following directories somewhere with write permissions: postgres-data and jbrowse-data.
  2. Copy your jbrowse data into jbrowse-data. We provide working sample data.
  3. Run the docker-command: docker run -it -v /absolute/path/to/jbrowse-data:/data -v /absolute/path/to/postgres-data:/var/lib/postgresql -p 8888:8080
  4. Login to the server at http://localhost:8888/
  5. Add an organism per the instructions under Figure 2. Using yeast as an example, if you copy the data into jbrowse-data/yeast then on the server you’ll add the directory: /data/yeast.


Apollo Run-time OPTIONS

Apollo run-time options are specified in the file.

These are picked up in the apollo-config.groovy file and follows the rules of regular apollo configuration.

Special cases include CHADO. By default it is on, but use WEBAPOLLO_USE_CHADO=false to turn off.