A nanobox engine is responsible for 5 things:
- Determining if the app type matches the engine
- Detecting service dependencies like postgres, redis, etc
- Preparing the environment that the application (code) will run within.
- Configuring the application to connect to the detected services.
- Compiling or building the code into a release.
We would greatly appreciate it if you would be willing to answer some or all of the following questions, in as much detail as you need, understanding that there are no wrong answers:
- What is the most accurate way you can think of to detect a Scala app?
- Which java runtimes need to be available to your app?
- Are any other runtimes (nodejs, python, etc) needed?
- Are any utilities, webservers, or other binaries (apache, nginx, etc) needed?
- How do you manage/install dependencies?
- Where are your dependencies stored? (which directories)
- Does your app depend on services like postgres, redis, etc?
- How could we detect that your app depends on them?
- Does your app require any special configuration for these services?
- Does your app require special configuration via config files or environment variables?
- Where and how could we configure your app to connect to the services that were previously detected?
- Does your app need to be compiled?
- Is there a build process required to generate a release?
- Ultimately, what should be copied into the live environment? (all source code, specific directories, etc)
- Is your app strictly a web (http) app, or does it provide a service on tcp/udp as well?
- How do you run your app?