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
andjdbc.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!