Docker Images

Warning: requires a little bit IT skills

What is Docker?

Docker is a tool designed to make it easier to create, deploy, and run applications by using containers. Containers allow a developer to package up an application with all of the parts it needs, such as libraries and other dependencies, and ship it all out as one package. By doing so, thanks to the container, the developer can rest assured that the application will run on any other Linux machine regardless of any customized settings that machine might have that could differ from the machine used for writing and testing the code. For more details, see


Requirements: a recent OS that support Docker (see How to install Docker or Create a VM with Docker-Machine).

Get the docker image

  • Pull the docker image from DockerHub (may take a while depending on your network speed and the traffic)


    $ sudo docker pull nmrprocflow/nmrprocflow

Create minimal configuration file:

  • npflow.conf
# The URL root of the PROXY if applicable

# Duration (in days) of validity of a session 
# before its destruction (counted from the last change)

# Max ZIP size (Mo)

# NB CORES (0 means Auto)

# User connexion management
# 0 : no connexion management
# 1 : connexion management based on the /opt/data/conf/userlist file
#     Its structure is one user per line and each line following the format:
#        login;LastName;FirstName;Country;Institution;Email;Password
#     a minimal set of this 'userlist' file could be: npflow;;;;;;nppass

Create a shell script file (Linux):

MYDIR=`dirname $0` && [ ! `echo "$0" | grep '^\/'` ] && MYDIR=`pwd`/$MYDIR


# nmrspec Container


# If you use a local directory, first you have to create the $DATADIR directory
VOLS="-v $DATADIR:/opt/data"

usage() { echo "usage: sh $0 start|stop|ps|restart|logs|update";  exit 1; }

case "$CMD" in
        # run NMRProcFlow
        sudo docker run -d --env-file $CONF $VOLS -p $PORT:80 --name $CONTAINER $IMAGE

        # show Logs
        sudo docker logs $CONTAINER
        LIST=$(sudo docker ps -a | grep $IMAGE | cut -d' ' -f1)
        sudo  docker stop $LIST
        sudo  docker rm $LIST
        ( sh $0 stop; sh $0 start)
        sudo docker logs $CONTAINER
        sudo docker ps | head -1
        sudo docker ps | grep $IMAGE
        sudo docker pull $IMAGE
   *) usage
      exit 2

Start the application (Linux)

sh ./ start

Then, in your favorite web browser, check on (You have to enable JavaScript functionalities within your web browser):


Stop the application (Linux)

sh ./ stop

Status of the application (Linux)

sh ./ ps

View logs of the application (Linux)

sh ./ logs

NGINX configuration (Linux)

For avanced users: In case you would like to use a proxy server, the better is to install and set NGINX, an HTTP and reverse proxy server.

In the /etc/nginx/conf.d/my-site.conf, you should add three 'location' sections as shown below:

server {
    listen 80 default;
    server_name $host;


    location /nv/ {
        proxy_pass http://localhost:8080/nv/;

    location /npwatch/ {
        proxy_pass http://localhost:8080/npwatch/;

    location /np/ {
        proxy_pass http://localhost:8080/npflow/;
        proxy_redirect http://localhost:8080/npflow/ $scheme://$host/npflow/;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection "upgrade";
        proxy_set_header Host $host;