ODK Aggregate design questions for dockerization

Hello.

I'm currently working on dockerizing ODK Aggregate (for our organization's use for now, but I could contribute if the development team is interested). This is my initial implementation: https://gist.github.com/markgarcia/aa2745393d315f22176f69c027c79443

What it basically does is:

  • Using the installer, running it in unattended mode using some predefined options
  • Unzipping the resulting WAR file
  • Unzipping /WEB-INF/lib/ODKAggregate-settings.jar
  • Replacing jdbc.username and jdbc.password lines in jdbc.properties file to point to custom environment variables
  • Rezipping ODKAggregate-settings.jar
  • Copying the now-extracted WAR to Tomcat's webapps directory

So far it has worked nicely, though I have not yet tested the major functionalities yet. My questions are mostly for sanity check and for some design questions for my further development on this. So...

  • I have no prior experience with Spring/Java/Tomcat so I would like to know if Aggregate or Tomcat is doing some magic when it auto-unpacks WAR files. I've done my research and what I can surmise is that it's practically just unzipping it in the webapps directory.
  • Does Aggregate store [persistent] state on the filesystem or is it storing everything in the database?
    • If it does store in the filesystem I would really like to know the directories. It is important so that I can properly mount docker volumes for them.
  • Can I safely assume that Aggregate will behave properly if configuration is changed? Maybe just for some reasonable ones like the database username and password.

I may have some other questions that I'm forgetting so I'll just add them to the thread.

Thank you very much!

A post was merged into an existing topic: ODK aggregate docker image for PostgreSQL