Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
Last revisionBoth sides next revision
doc:docker:add-dataset [2014/10/14 15:46] – [Add MongoDB data] admindoc:docker:add-dataset [2014/11/17 15:35] – [Adding a dataset to data.open-ease.org] admin
Line 18: Line 18:
 ===== Required steps for adding your own data to the system ===== ===== Required steps for adding your own data to the system =====
  
 +The recommended procedure is to first test your data and to develop your queries locally, without using the docker virtualization environment. Once things work there, you can add your information to the right repositories and rebuild the docker containers so that your data is available in the system.
 ==== Develop and test locally (without docker) ==== ==== Develop and test locally (without docker) ====
  
Line 56: Line 57:
 ==== Adding a query library ==== ==== Adding a query library ====
  
-The entries in the query library, that is commonly in the lower left corner of the interface, are generated from a JSON file of the following format. Each entry in the 'query' list corresponds to one row in the generated query library.+The entries in the query library, that is commonly in the lower left corner of the interface, are generated from a JSON file of the following format. Each entry in the 'query' list corresponds to one row in the generated query library. JSON parsers do not like syntax errors, so it is recommended to use a validator such as [[http://jsonlint.com/|JSONLint]] to check the syntax before committing the file.
  
 <code javascript> <code javascript>
Line 73: Line 74:
 </code> </code>
  
-These query library files define the entry point into your dataset, including which files and which KnowRob packages are to be loaded. They should be executable starting with a freshly launched knowrob_roslog_launch launch file. This means that the first entries in this query list usually initialize the system in the way you need it, e.g. load packages, parse OWL files etc. +These query library files define the entry point into your dataset, including which files and which KnowRob packages are to be loaded. They should be executable starting with a freshly launched knowrob_roslog_launch launch file. This means that the first entries in this query list usually initialize the system in the way you need it, e.g. load packages, parse OWL files etc. Currently, these queries libraries are also used to select which experiment is to be loaded: The URL http://data.open-ease.org/exp/your-data will tell the system to load the query library from the file //queries-your-data.json//.
- +
-Currently, these queries libraries are also used to select which experiment is to be loaded: The URL http://data.open-ease.org/exp/your-data will tell the system to load the query library from the file //queries-your-data.json//.+
  
 == Required actions: == == Required actions: ==
-Add your query library to the [[https://github.com/knowrob/docker/tree/master/webapp/static|'static' folder]] in the web-app container in the knowrob/docker repository and rebuild the container knowrob/webrob. +Add your query library to the [[https://github.com/knowrob/docker/tree/master/webapp/static|'static' folder]] in the web-app container in the knowrob/docker repository.
- +
  
  
Line 86: Line 83:
 ==== Rebuilding the containers ==== ==== Rebuilding the containers ====
  
-Depending on which components you have added to your data set, you will need to re-create some of the containers the openEASE system is composed of. To do so, you will need a checkout of the [[https://github.com/knowrob/docker|knowrob/docker]] repository. All paths in this section assume that this repository has been checked out to ~/docker. These commands will retrieve code from the GitHub repositories, i.e. before building the containers, all changes have to be pushed and all pull requests have to be merged into the master branch.+The previous steps have added the different components of your data set (OWL log files, Prolog code, MongoDB dumps) to the right places in the system. To include this information into the docker containers, you will need to re-create some of the containers the openEASE system is composed of. Which containers have to be re-built depends on which components you have added to your data set. 
 + 
 +For re-building them, you will need a checkout of the [[https://github.com/knowrob/docker|knowrob/docker]] repository that contains a set of [[https://docs.docker.com/reference/builder/|Dockerfiles]]. Similar to Makefiles, they describe the steps that need to be performed for creating the respective containers. All paths in this section assume that this repository has been checked out to ~/docker. These commands will retrieve code from the GitHub repositories, i.e. before building the containers, all changes have to be pushed and all pull requests have to be merged into the master branch.
  
 <code bash> <code bash>
Line 97: Line 96:
 # build is finished. Check the build details tab here: # build is finished. Check the build details tab here:
 # https://registry.hub.docker.com/u/knowrob/knowrob_data/ # https://registry.hub.docker.com/u/knowrob/knowrob_data/
-docker pull knowrob/knowrob_data+docker pull knowrob/knowrob_data:latest 
 +docker rm knowrob_data 
 +docker run --name knowrob_data knowrob/knowrob_data:latest true
      
 # if you have added your own query library: # if you have added your own query library:
Line 106: Line 107:
  
 ==== Accessing your new experiment ==== ==== Accessing your new experiment ====
 +After rebuilding the containers, you can start the system locally and see if you can access your data. The //start-webrob// script contains the commands for starting all necessary containers:
  
 +  ~/docker/scripts/start-webrob
  
-http://data.open-ease.org/exp/your-data+You should now be able to login to the system at http://localhost and then open http://localhost/exp/your-data. This page should load the query library you have created, and you should be able to call the queries from there.
  
 +
 +
 +
 + 
 +==== Debugging the containerized setup ====
 +
 +If you have tested your code with a 'normal' KnowRob without docker first, chances are good that things also work in the 'containerized' version. However, there may still be issues, and the following points may help to get started with debugging:
 +
 +  * The terminal in which you executed the 'start-webrob' script will contain output of the 'webrob' container that serves the HTML/JavaScript front-end. Watch out for Python exceptions and HTTP response codes 404 (could not find files) or 500 (internal server error, often an exception in a program generating a web site).
 +  * To inspect the output of the KnowRob container, you can use the [[https://docs.docker.com/reference/commandline/cli/#logs|docker logs]] and [[https://docs.docker.com/reference/commandline/cli/#attach|docker attach]] commands on your user container. This container has the same name as your username, so the command would be //docker logs demo// for user 'demo'.
 +  * If you make changes to the query library and it is not reloaded, this may be related to the browser cache. Try opening that file directly (e.g. http://localhost/static/queries-your-data.json) and press 'reload' in the browser.
 +
 +
 +==== Deploying your code to the server ====
 +
 +When verything works fine on your computer, you are ready to deploy the containers to the server at data.open-ease.org. 
 +
 +Please be careful with updates of the server -- only deploy well-tested code and refrain from deleting other people's containers! Especially when doing one of your first updates, try to do it when more experienced people are still around and sufficiently before any important deadline so that there is still time to fix problems that may occur.
 +
 +The following steps need to be performed after logging into the server:
 +  - Import your data into the MongoDB on the server as described above. You will need to copy your-tf.json to the server and run the mongoimport program from there.
 +  - Rebuild the containers you have changed as you have done it on your local computer (see description above)
 +  - The startup script is running in a [[http://wiki.ubuntuusers.de/screen|screen session]]. You will need to resume that session, stop the currently running script, and start it again.
 +<code bash>
 +# connect to the server
 +ssh data.open-ease.org
 +
 +# resume the screen session
 +screen -r
 +
 +# stop the script with CRTL+C
 +
 +# start the script again
 +./start-webrob
 +
 +# detach the screen session using CTRL+A+D
 +</code>