Fork me on GitHub

This is super odd and niche, so I'm throwing this into this channel. Has anyone here had to bundle a whole server platform for use by an end-user on a single machine, using virtualization toolkits like vagrant, docker, etc? I've got a prospect wanting a solution that can be met with a derivative version of one of products which normally runs across multiple servers (needs a posix OS, postgresql, rabbitmq, tomcat, java (the core of the app is Clojure of course) etc. to run). He's non-technical and just wants the application to run as a standalone executable on Windows which he can just boot up and use, without an internet connection. What I'm looking for is a way to just distribute the build script instead of the whole .vmdk or whatnot, and have it startup and build out the application infrastructure in a container, without the user having to know a single thing about virtualization, and without having to install Vagrant or Docker themselves before they can run it.


kevinmershon: have not tried this myself!


Hrm, that's an interesting way to go with it


Thanks, that's good food for thought.


@kevinmershon: I would probably stay away from docker on Windows if the person is non-technical; I've tried to use it for a university project where other people were windows-based and it didn't just work out of box unfortunately.


Yeah, virtualization in general seems to be geared towards more technical users overall. I smell a market niche, haha


Well, maybe my issue was I didn't use a GUI (there certainly must be some Docker GUIs), going command line is like the second nature for me.


Also, docker's docker-compose (nee fig) is pretty cool.


If you could figure out how to set up docker reliably for your end user


You could use docker-compose to set up your application.


There's this - - but doesn't seem to support docker-compose out of the box.


But could be a starting point.


I use docker-compose for managing server-platforms in development. Works fairly well, except for the usual docker problems (data, or code, applications writing to files that aren't in volumes, or can't be shared with volumes, I'm sure there's more)


@kevinmershon: fwiw, I haven't had to deal with issues like that on Windows recently, but past experience is that such constructions are incredibly fragile. The thought that comes to mind is to explore in-proc solutions for the various dependencies- hornetq rather than rabbit, derby or h2 rather than pg- so the whole thing can run in a single JVM


And Capsule is one of a range of nice JVM packaging solutions that can bootstrap jars, control JVM parameters at startup, etc




@jonahbenton I think that might be exactly what I need